Compare commits

...

2 Commits

Author SHA1 Message Date
Corbin Bartsch
fd68be8991 cleanup 2026-04-18 09:03:48 -04:00
5b079317f8 Add DKIM selectors for common PSA software 2024-11-04 13:28:19 -05:00
2 changed files with 20 additions and 4 deletions

View File

@ -5,7 +5,7 @@ A Python script to resolve email-related DNS records for a domain.
Example: Example:
``` ```
$ python email_dns.py cbarts.net $ python email_dns.py contoso.com
{ {
"cbarts.net": { "cbarts.net": {
"mx": [ "mx": [

View File

@ -22,6 +22,15 @@ dkim_selectors = { # <selector>._domainkey.<domain>
'protonmail': [ 'protonmail': [
'protonmail', 'protonmail1', 'protonmail2' 'protonmail', 'protonmail1', 'protonmail2'
], ],
'autotask': [
'autotask'
],
'connectwise psa': [
's318306'
],
'zendesk': [
'zendesk1', 'zendesk2'
],
'sendgrid': [ 'sendgrid': [
'sg', 's1', 'sg2', 's2', 's3' 'sg', 's1', 'sg2', 's2', 's3'
], ],
@ -36,8 +45,13 @@ dkim_selectors = { # <selector>._domainkey.<domain>
'mandrill': [ 'mandrill': [
'mandrill' 'mandrill'
], ],
# Mailgun (Very generic, thank you, Mailgun)
'mailgun': [ 'mailgun': [
'pic', 'smtp', # Mailgun (Very generic, thank you, Mailgun) 'pic', 'smtp',
],
# Bloomerang (using SendGrid backend)
'bloomerang': [
'blm', 'blm2',
], ],
'bullhorn': [ 'bullhorn': [
'bh' 'bh'
@ -59,7 +73,7 @@ def process_args(args: list) -> list:
return domains return domains
def safe_resolve(name: str, type: str) -> resolver.Answer: def safe_resolve(name: str, type: str) -> resolver.Answer | None:
try: try:
answer = resolver.resolve(name, type) answer = resolver.resolve(name, type)
return answer return answer
@ -70,7 +84,9 @@ def safe_resolve(name: str, type: str) -> resolver.Answer:
return None return None
class Domain: class Domain:
# def __init__(self, name: str, mx: str = [], spf: str = None, dkim: list = [], dmarc: str = None) -> None: # def __init__(self, name: str, mx: str = [], spf: str = None, dkim: list = [], dmarc: str = None) -> None:
def __init__(self, name: str) -> None: def __init__(self, name: str) -> None:
self.name = name self.name = name
self.mx = [] self.mx = []
@ -95,7 +111,7 @@ class Domain:
for a in answer: for a in answer:
if str(a).lower().find('v=spf1') != -1: if str(a).lower().find('v=spf1') != -1:
self.spf = str(a).replace('"', '') self.spf = str(a).replace('"', '')
# TODO: Recurse through includes # TODO: Recurse through includes?
# matches = re.search(r'(?:include:)(.*)(?=\s)', str(a).lower()) # matches = re.search(r'(?:include:)(.*)(?=\s)', str(a).lower())
# domains = set() # domains = set()
# if matches: # if matches: