From 80b367ab07d1eb8185579d1e6ec40b7d4b210d0d Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Tue, 6 May 2014 10:02:29 -0400 Subject: [PATCH] test_mail: gracefully handled when the server has no reverse DNS available --- tests/test_mail.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/tests/test_mail.py b/tests/test_mail.py index 68b7e44..de1cf71 100755 --- a/tests/test_mail.py +++ b/tests/test_mail.py @@ -38,13 +38,18 @@ server.starttls() # Verify that the EHLO name matches the server's reverse DNS. ipaddr = socket.gethostbyname(host) # IPv4 only! reverse_ip = dns.reversename.from_address(ipaddr) # e.g. "1.0.0.127.in-addr.arpa." -reverse_dns = dns.resolver.query(reverse_ip, 'PTR')[0].target.to_text(omit_final_dot=True) # => hostname -server.ehlo_or_helo_if_needed() # must send EHLO before getting the server's EHLO name -helo_name = server.ehlo_resp.decode("utf8").split("\n")[0] # first line is the EHLO name -if helo_name != reverse_dns: - print("The server's EHLO name does not match its reverse hostname. Check DNS settings.") - sys.exit(1) -print("SMTP EHLO name (%s) is OK." % helo_name) +try: + reverse_dns = dns.resolver.query(reverse_ip, 'PTR')[0].target.to_text(omit_final_dot=True) # => hostname +except dns.resolver.NXDOMAIN: + print("Reverse DNS lookup failed for %s. SMTP EHLO name check skipped." % ipaddr) + reverse_dns = None +if reverse_dns is not None: + server.ehlo_or_helo_if_needed() # must send EHLO before getting the server's EHLO name + helo_name = server.ehlo_resp.decode("utf8").split("\n")[0] # first line is the EHLO name + if helo_name != reverse_dns: + print("The server's EHLO name does not match its reverse hostname. Check DNS settings.") + sys.exit(1) + print("SMTP EHLO name (%s) is OK." % helo_name) # Login and send a test email. server.login(emailaddress, pw)