diff --git a/CHANGELOG.md b/CHANGELOG.md index e709597b..f720848a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## untagged +- Handle Port-25 connect errors more gracefully (common with VPNs) + ([#552](https://github.com/chatmail/relay/pull/552)) + - Avoid "acmetool not found" during initial run ([#550](https://github.com/chatmail/relay/pull/550)) diff --git a/cmdeploy/src/cmdeploy/tests/online/test_0_login.py b/cmdeploy/src/cmdeploy/tests/online/test_0_login.py index 5f4f9778..69f79f7d 100644 --- a/cmdeploy/src/cmdeploy/tests/online/test_0_login.py +++ b/cmdeploy/src/cmdeploy/tests/online/test_0_login.py @@ -90,8 +90,13 @@ def login_smtp_imap(smtp, imap): def test_no_vrfy(chatmail_config): + domain = chatmail_config.mail_domain sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((chatmail_config.mail_domain, 25)) + sock.settimeout(10) + try: + sock.connect((domain, 25)) + except socket.timeout: + pytest.skip(f"port 25 not reachable for {domain}") banner = sock.recv(1024) print(banner) sock.send(b"VRFY wrongaddress@%s\r\n" % (chatmail_config.mail_domain.encode(),)) diff --git a/cmdeploy/src/cmdeploy/tests/online/test_1_basic.py b/cmdeploy/src/cmdeploy/tests/online/test_1_basic.py index 980d7069..fe449e0f 100644 --- a/cmdeploy/src/cmdeploy/tests/online/test_1_basic.py +++ b/cmdeploy/src/cmdeploy/tests/online/test_1_basic.py @@ -118,7 +118,12 @@ def test_authenticated_from(cmsetup, maildata): def test_reject_missing_dkim(cmsetup, maildata, from_addr): recipient = cmsetup.gen_users(1)[0] msg = maildata("encrypted.eml", from_addr=from_addr, to_addr=recipient.addr).as_string() - with smtplib.SMTP(cmsetup.maildomain, 25) as s: + try: + conn = smtplib.SMTP(cmsetup.maildomain, 25, timeout=10) + except TimeoutError: + pytest.skip(f"port 25 not reachable for {cmsetup.maildomain}") + + with conn as s: with pytest.raises(smtplib.SMTPDataError, match="No valid DKIM signature"): s.sendmail(from_addr=from_addr, to_addrs=recipient.addr, msg=msg)