forms: use dnspython to check mx entry in EmailWidget (#59264)

This commit is contained in:
Paul Marillonnet 2021-12-08 17:52:25 +01:00
parent a9f601400c
commit f3e79b259a
1 changed files with 11 additions and 11 deletions

View File

@ -39,9 +39,9 @@ except ImportError:
import bleach
try:
import DNS
import dns
except (ImportError, OSError):
DNS = None
dns = None
try:
import magic
@ -965,17 +965,17 @@ class EmailWidget(StringWidget):
return
if domain == 'localhost':
return
if DNS is not None:
DNS.ParseResolvConf()
if dns is not None:
try:
if not DNS.mxlookup(force_str(domain), timeout=7):
self.error = _('invalid address domain')
except DNS.DNSError:
dns.resolver.query(force_str(domain), 'MX')
except dns.resolver.NXDOMAIN:
self.error = _('invalid address domain')
except UnicodeDecodeError:
# internal DNS mxlookup bug, probably because the
# zone was somehow invalid, don't blame user for that.
pass
except dns.resolver.NoAnswer:
self.error = _('dns answer does not contain the response')
except dns.resolver.NoNameservers:
self.error = _('all name servers failed to answer the query')
except dns.exception.DNSException:
self.error = _('an error occurred while query MX entry for domain %s') % domain
class OptGroup: