fix dns regex: underscores are allowed in domain names even though they are not allowed in hostnames

This commit is contained in:
Joshua Tauberer 2017-09-22 12:31:49 -04:00
parent d0423afd18
commit 35b8a149d8

View file

@ -13,9 +13,10 @@ from mailconfig import get_mail_domains
from utils import shell, load_env_vars_from_file, safe_domain_name, sort_domains
# From https://stackoverflow.com/questions/3026957/how-to-validate-a-domain-name-using-regex-php/16491074#16491074
# Thanks to Onur Yıldırım
# This regular expression matches domain names according to RFCs, it also accepts fqdn with an leading dot
DOMAIN_RE = "^(?!\-)(?:[a-zA-Z\d\-]{0,62}[a-zA-Z\d]\.){1,126}(?!\d+)[a-zA-Z\d]{1,63}(\.?)$"
# This regular expression matches domain names according to RFCs, it also accepts fqdn with an leading dot,
# as well as underscores which are allowed in domain names but not hostnames (i.e. allowed in
# DNS but not in URLs), which are common in certain record types like for DKIM.
DOMAIN_RE = "^(?!\-)(?:[a-zA-Z\d\-_]{0,62}[a-zA-Z\d_]\.){1,126}(?!\d+)[a-zA-Z\d_]{1,63}(\.?)$"
def get_dns_domains(env):
# Add all domain names in use by email users and mail aliases and ensure