如何在大规模处理SMTP电子邮件验证时避免IP被封锁或SMTP请求被拒绝?

4
我希望这个问题不完全离题。我一直在思考SMTP电子邮件验证的问题。有很多服务(如Kickbox.io,Email-Validator.net等)似乎可以处理SMTP验证,而不会出现IP被阻止或SMTP请求被拒绝的情况。据我所知,仍然没有比使用SMTP“VRFY”命令更好的方法来确认收件人的存在,以及中止连接一旦目标SMTP服务器确认了已请求的用户在给定邮件服务器上的存在后。我一直在玩一些声称可以做到这一点的PHP脚本,但是我一直被一些邮件服务器拒绝,特别是hotmail(以及所有其他Microsoft邮件服务)似乎非常迅速地拒绝“垃圾邮件”SMTP请求。现在,我的问题是:像我上面提到的服务是如何通过他们所谓的“SMTP握手”每天处理数千个电子邮件地址并进行验证,并且不会遇到类似我描述的问题呢?感谢您的阅读。

我不会这样做...首先,正如你所注意到的那样,它可能被视为垃圾邮件或钓鱼用户数据。其次,在你检查和实际尝试发送之间,没有保证电子邮件地址仍然有效。 - Robert
你找到这个问题的答案了吗? - offline15
只是为了防止其他人遇到同样的问题(问题已经很老了),这里有一个答案:许多SMTP服务器会阻止这些类型的命令的原因是因为这正是垃圾邮件发送者所做的事情,他们喜欢拥有有效的电子邮件地址并想要查询SMTP服务器以获取有效的地址。 SMTP服务器不喜欢这样做,因此它们中的大多数都会阻止这些内容。 - Saskia
3个回答

1
如bwest所说,RCPT TO是您想要使用的内容,而尽管VRFY执行相同的检查,但通常不受支持。
在业务端,这个过程通常被称为“ping”测试,除非您将其用于其他滥用目的,否则它并不被认为是滥用。 MX管理员可以选择禁用它,在野外约有1/2到2/3的管理员选择这样做。理想情况下,该过程应该是:
  • 确认邮件服务器对你的RCPT TO给出真实的回复,而不是接受所有的请求,通过测试一个已知的虚假用户(gibberishasdfasdf@example.com)。不要为每个电子邮件重复此测试,否则可能会因为太多虚假收件人而被拒绝。
  • 如果这个虚假用户被接受了,那就放弃吧。这个邮件服务器不会回答你的问题。
  • 如果虚假用户被拒绝了,那就在你想验证的电子邮件上重复你的RCPT TO测试。如果它被接受了,那么很可能是好的。如果像虚假电子邮件一样被拒绝了,那么很可能是真正的坏的。有些服务器对他们的“好”的响应可能有点模糊,但最重要的是你想看到与你的虚假用户得到的响应不同的响应。

每个服务器的配置都不同,所以你不应该对状态码的含义做出过多的假设,但你应该遵循最佳实践:

  • 在具有有效反向DNS/PTR和MX记录的IP地址上执行此测试(这将至少使您的成功率翻倍)
  • 明智地限制您的尝试次数。以RCPT TO被接受结束的尝试不会像重复拒绝那样扰乱邮件服务器,因为重复拒绝是收集电子邮件而不是验证健康列表的好迹象。对于坏用户的重复测试将从邮件服务器中获得各种错误,例如灰名单、节流、太多坏请求等等,否则这些邮件服务器本来会很乐意回答您的问题。

1
许多你提到的公司会在RCPT TO命令中发送电子邮件进行验证。如果地址无效,大多数域将以错误方式响应此命令。实际上不需要发送任何电子邮件。像Kickbox这样的付费电子邮件验证服务通常会结合一个备受尊重的电子邮件发送网络和一些智能缓存来实现其结果。

0
像Email-Validator.net这样的公司首先分析电子邮件地址,以查看它是否在语法上有效,是否合法且有用(例如,可能不是postmaster),域名是否有效(具有有效的DNS记录),地址是否来自一次性电子邮件服务以及其他检查方法,以确定是否可以立即将其取消资格。
之后,他们尝试向该地址发送电子邮件,并从服务器检查SMTP响应代码。我认为这就是您提到的“SMTP握手”的意思。
VRFY不再是非常有用的验证方法,因为大多数服务器不想向垃圾邮件发送者公开其有效地址列表。大多数服务器不实现对其的支持,或者使用251或252响应VRFY命令,表示查询是合法的,但他们不会给出有信息的答案。

他们还可以利用他们对电子邮件服务提供商(例如Gmail)的经验来评估SMTP响应的含义。例如,有些服务将所有收件人地址都接受为有效地址,因此它们不会暴露哪些地址是有效的,哪些地址是无效的。如果没有或很少的收件人地址是有效的,服务器可能会稍后断开连接,甚至接受电子邮件但不进行投递。一些服务提供商使用灰名单,这可能导致有效地址最初被拒绝。验证服务可能会从响应、发布的政策或他们自己的测试中了解到服务提供商的行为。

像kickbox.io这样的公司也有可能与Microsoft Hotmail等服务提供商协商合同,以便他们的查询得到尊重,并且他们可以验证电子邮件地址。允许合法发件人清理邮件列表可能符合服务提供商的利益,因为它减少了对他们服务器的流量。然而,必须有一些信任,即他们不会向试图收集其目录的垃圾邮件发送者提供验证服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接