Compare commits

..

2 commits

3 changed files with 47 additions and 0 deletions

1
.gitignore vendored
View file

@ -162,3 +162,4 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
/.idea/

10
.idea/pymsgcheck.iml generated Normal file
View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.12 (pymsgcheck)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

36
pymsgcheck.py Normal file
View file

@ -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)