我需要验证是否存在与域名的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。当然,取决于网络,它可能会有一些延迟。
提前谢谢。
您需要的任何其他信息只要问我。在我进入这个阶段之前,我有一个逻辑跟进,像这样: run() - >检查(电子邮件) - > validator() - > checkEmailStructure() - > checkDomainAlive() - > checkHasMXs() - >循环到奥德 - >使用check_mailbox()
循环这样我确定结构是否坏,结束验证。如果,域是死胡同验证。并且只有结构正常,域OK然后有MX然后循环检查。同样在最后一个循环中,如果其中一个MX返回250或251,我停止测试,因为至少有一个工作!我按优先顺序排序。
欢迎任何建议!