test_mail: gracefully handled when the server has no reverse DNS available
This commit is contained in:
parent
63ef8f7b04
commit
80b367ab07
1 changed files with 12 additions and 7 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue