diff --git a/.gitignore b/.gitignore index ab3e8ce..5566902 100644 --- a/.gitignore +++ b/.gitignore @@ -162,3 +162,4 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +/.idea/ diff --git a/.idea/pymsgcheck.iml b/.idea/pymsgcheck.iml new file mode 100644 index 0000000..a30c39e --- /dev/null +++ b/.idea/pymsgcheck.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/pymsgcheck.py b/pymsgcheck.py new file mode 100644 index 0000000..bfc6ced --- /dev/null +++ b/pymsgcheck.py @@ -0,0 +1,36 @@ +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)