Compare commits
2 Commits
58212611ba
...
fd68be8991
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd68be8991 | ||
| 5b079317f8 |
@ -5,7 +5,7 @@ A Python script to resolve email-related DNS records for a domain.
|
||||
Example:
|
||||
|
||||
```
|
||||
$ python email_dns.py cbarts.net
|
||||
$ python email_dns.py contoso.com
|
||||
{
|
||||
"cbarts.net": {
|
||||
"mx": [
|
||||
|
||||
22
email_dns.py
22
email_dns.py
@ -22,6 +22,15 @@ dkim_selectors = { # <selector>._domainkey.<domain>
|
||||
'protonmail': [
|
||||
'protonmail', 'protonmail1', 'protonmail2'
|
||||
],
|
||||
'autotask': [
|
||||
'autotask'
|
||||
],
|
||||
'connectwise psa': [
|
||||
's318306'
|
||||
],
|
||||
'zendesk': [
|
||||
'zendesk1', 'zendesk2'
|
||||
],
|
||||
'sendgrid': [
|
||||
'sg', 's1', 'sg2', 's2', 's3'
|
||||
],
|
||||
@ -36,8 +45,13 @@ dkim_selectors = { # <selector>._domainkey.<domain>
|
||||
'mandrill': [
|
||||
'mandrill'
|
||||
],
|
||||
# Mailgun (Very generic, thank you, Mailgun)
|
||||
'mailgun': [
|
||||
'pic', 'smtp', # Mailgun (Very generic, thank you, Mailgun)
|
||||
'pic', 'smtp',
|
||||
],
|
||||
# Bloomerang (using SendGrid backend)
|
||||
'bloomerang': [
|
||||
'blm', 'blm2',
|
||||
],
|
||||
'bullhorn': [
|
||||
'bh'
|
||||
@ -59,7 +73,7 @@ def process_args(args: list) -> list:
|
||||
|
||||
return domains
|
||||
|
||||
def safe_resolve(name: str, type: str) -> resolver.Answer:
|
||||
def safe_resolve(name: str, type: str) -> resolver.Answer | None:
|
||||
try:
|
||||
answer = resolver.resolve(name, type)
|
||||
return answer
|
||||
@ -70,7 +84,9 @@ def safe_resolve(name: str, type: str) -> resolver.Answer:
|
||||
return None
|
||||
|
||||
class Domain:
|
||||
|
||||
# def __init__(self, name: str, mx: str = [], spf: str = None, dkim: list = [], dmarc: str = None) -> None:
|
||||
|
||||
def __init__(self, name: str) -> None:
|
||||
self.name = name
|
||||
self.mx = []
|
||||
@ -95,7 +111,7 @@ class Domain:
|
||||
for a in answer:
|
||||
if str(a).lower().find('v=spf1') != -1:
|
||||
self.spf = str(a).replace('"', '')
|
||||
# TODO: Recurse through includes
|
||||
# TODO: Recurse through includes?
|
||||
# matches = re.search(r'(?:include:)(.*)(?=\s)', str(a).lower())
|
||||
# domains = set()
|
||||
# if matches:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user