【问题标题】:MX Record lookup and checkMX 记录查找和检查
【发布时间】:2011-05-19 05:18:58
【问题描述】:

我需要创建一个工具来检查域的实时 mx 记录是否符合预期(我们遇到了一些员工摆弄它们并导致所有传入邮件重定向到无效的问题)

现在我不会撒谎了,我根本不是一个称职的程序员!我大约有 40 页“深入 Python”,可以阅读和理解最基本的代码。但我愿意学习,而不仅仅是得到答案。

那么有人能建议我应该使用哪种语言吗?

我正在考虑使用 python 并从使用 0s.system() 开始做一个 (dig +nocmd domain.com mx +noall +answer) 来提取记录,然后我得到了一点对如何将其与现有记录集进行比较感到困惑。

对不起,如果这一切听起来像废话!

谢谢 克里斯

【问题讨论】:

    标签: python mx-record


    【解决方案1】:

    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.
    

    【讨论】:

    • 您应该提到,为此需要dnspython 模块。
    • 对于 python 3 使用 dnspython3
    • @TusharSadhwani 的评论现在已经过时了 - 根据 PyPI 上的 dnspython3 页面:"dnspython3 已被常规 dnspython 工具包取代,该工具包现在支持 Python 2 和 Python 3 。”
    • 我不得不使用query 而不是resolve: for x in dns.resolver.query(domain, 'MX'): ...
    【解决方案2】:

    上述解决方案是正确的。我想添加和更新一些东西。

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

    【讨论】:

      【解决方案3】:

      看看dnspython,这个模块应该可以很好地为您进行查找,而无需求助于系统调用。

      【讨论】:

      • 我没试过。 “2.4 或更高版本”通常并不意味着它听起来像,但我认为这是可能的。
      • 现在,它与python3兼容,从pip它是dnspython3
      猜你喜欢
      • 2011-05-16
      • 1970-01-01
      • 2017-01-26
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2018-04-26
      相关资源
      最近更新 更多