Python:验证域名的MX记录是否具有活动收件箱。检查mx记录,验证电子邮件

时间:2017-11-13 10:30:00

标签: python email networking dns mx-record

我需要验证是否存在与域名的DNS区域/记录中找到的MX记录相关的收件箱。在我检索所有具有dns.resolver.query(domain, 'MX')的MX之后,我根据优先级进行排序,然后使用以下函数循环并逐个测试它们以查看它们是否处于活动状态。在我获得所有MX之后,我将它们逐个传递给check_mailbox()mx_record是MX值exmp的变量。 mx.something.com。 mail变量,第二个参数,是我正在测试的实际电子邮件。

我目前的职能:

def check_mailbox(mx_record, mail):
    code = ""

    try:
        server = smtplib.SMTP(timeout=300)
        server.set_debuglevel(0)  # 1 for all data show
        server.connect(mx_record['mx'])  # Starting the communication 
        server.helo(server.local_hostname)
        server.mail("from@address.sample")
        code, message = server.rcpt(str(mail))  # Test the mailbox
        server.quit()
    except Exception as e:
        print(str(e))
        code = "error"
    finally:
        if code == 250 or code == 251:
            return {'code': code, 'message': message}
        else:
            return False

在我说的当前功能中,我单独测试所有MX。当然,取决于网络,它可能会有一些延迟。

  • 我需要知道有没有更快的方法来执行此检查?
  • 我可以使用另一种(完全其他的)方式执行此验证吗?
  • 如果我在每次检查后都不执行server.quit()会不会更好 但打开它,保持打开状态并在完成所有检查后将其关闭?

提前谢谢。

您需要的任何其他信息只要问我。在我进入这个阶段之前,我有一个逻辑跟进,像这样: run() - >检查(电子邮件) - > validator() - > checkEmailStructure() - > checkDomainAlive() - > checkHasMXs() - >循环到奥德 - >使用check_mailbox()

循环

这样我确定结构是否坏,结束验证。如果,域是死胡同验证。并且只有结构正常,域OK然后有MX然后循环检查。同样在最后一个循环中,如果其中一个MX返回250或251,我停止测试,因为至少有一个工作!我按优先顺序排序。

欢迎任何建议!

0 个答案:

没有答案