MX记录查询和检查
我需要创建一个工具,用来检查一个域名的实时MX记录,看看这些记录是否符合预期(因为我们有员工曾经随便改动过这些记录,导致所有的来信都被转到无底洞里去了)。
说实话,我的编程水平一点也不高!我才刚看了《Dive Into Python》的40页,能读懂一些最基本的代码。但我愿意学习,而不是只想要一个现成的答案。
所以,有人能建议我应该用什么编程语言吗?
我在考虑用Python,打算先用类似0s.system()的方式来执行一个命令(dig +nocmd domain.com mx +noall +answer),这样可以拉取到记录。然后我有点困惑,不知道怎么把这些记录和现有的记录进行比较。
抱歉如果这些听起来有点乱!
谢谢,Chris
3 个回答
1
上面的解决方案是正确的。我想补充和更新一些内容。
dnspython
已经更新,可以在python3中使用,并且它取代了dnspython3
这个库,所以建议使用dnspython
。- 域名只会严格接受域名本身,而不会接受其他内容。
举个例子:dnspython.org是有效的域名,而www.dnspython.org则不是。
如果你想获取某个域名的邮件服务器,这里有一个函数。
def get_mx_server(domain: str = "dnspython.org") -> str:
mail_servers = resolver.resolve(domain, 'MX')
mail_servers = list(set([data.exchange.to_text()
for data in mail_servers]))
return ",".join(mail_servers)
18
可以看看 dnspython 这个模块,它可以帮你完成查找工作,不需要你去调用系统命令。
52
使用 dnspython 模块(这个模块不是自带的,你需要用 pip install
来安装它):
>>> import dns.resolver
>>> domain = 'hotmail.com'
>>> for x in dns.resolver.resolve(domain, 'MX'):
... print(x.to_text())
...
5 mx3.hotmail.com.
5 mx4.hotmail.com.
5 mx1.hotmail.com.
5 mx2.hotmail.com.