pymsgcheck/pymsgcheck.py

36 lines
937 B
Python

from os.path import split
import dns.resolver
import ipaddress
def parse_spf_parts(part):
if part.startswith('ip4:'):
return [part[4:]]
elif part.startswith('ip6:'):
return [part[4:]]
elif part.startswith('include'):
return get_spf_record(part[8:])
elif part.startswith('a'):
addresses = []
for address in dns.resolver.resolve_name(part[2:]).addresses():
addresses.append(address)
return addresses
else:
return []
def get_spf_record(domain_name):
spf_record = ''
servers = []
txt_records = dns.resolver.resolve(domain_name, 'TXT')
for record in txt_records:
if record.to_text().find('v=spf1') > 0:
spf_record = record.to_text()
parts = spf_record.split()
for part in parts:
servers += (parse_spf_parts(part))
return servers
spf_servers = get_spf_record('trivago.com')
print(spf_servers)