SMTP验证

时间:2015-10-29 23:37:15

标签: smtp email-validation

我希望这个问题不是完全偏离主题的。

我一直想知道SMTP电子邮件验证。有许多服务(例如Kickbox.io,Email-Validator.net等)似乎处理SMTP验证而没有阻止其IP或拒绝SMTP请求。

据我所知,除了使用SMTP“VRFY”命令之外,还没有其他方法,并且一旦目标SMTP服务器确认给定邮件服务器上存在所请求的用户,就中止连接。我一直在玩一些声称这样做的PHP脚本,但我一直被一些邮件服务器拒绝,特别是hotmail(以及所有其他Microsoft邮件服务)似乎很快拒绝“垃圾邮件”SMTP要求。

现在,我的问题是:如上所述的服务如何有可能每天处理数千个电子邮件地址并通过他们称之为“SMTP握手”的方式验证它们,并且看不到像我描述了吗?

感谢阅读。

3 个答案:

答案 0 :(得分:0)

像Email-Validator.net这样的公司首先分析电子邮件地址,看它是否在语法上有效,是否合法且有用(例如可能不是postmaster)域是否有效(具有有效的DNS记录),是否地址来自一次性电子邮件服务,以及其他检查是否可以立即取消资格的方法。

之后,他们会尝试向该地址发送电子邮件,并检查服务器的SMTP响应代码。我认为这就是你所说的" SMTP握手"你提到过。

VRFY不再是一种非常有用的验证方法,因为大多数服务器都不想将其有效地址列表公开给垃圾邮件发送者。大多数服务器都没有实现对它的支持,或者他们用251或252响应VRFY命令,表明查询是合法的,但他们不会给出提供信息的答案。

他们还可以利用他们与相关电子邮件服务提供商(例如Gmail)的经验来评估SMTP响应的含义。例如,某些服务接受所有收件人地址,就好像它们是有效的一样,因此它们不会公开哪些收件​​人地址有效以及哪些收件人地址无效。如果没有或只有少数收件人有效,服务器可能稍后放弃连接甚至接受电子邮件但不提供。某些服务提供商使用灰名单,这可能导致最初拒绝有效地址。验证服务可以从响应,发布的策略或他们自己的测试中了解服务提供商的行为。

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

答案 1 :(得分:0)

您提及的许多公司都会发送电子邮件作为RCPT TO命令的一部分进行验证。如果地址无效,大多数域将响应此命令并显示错误。不需要实际发送电子邮件。像Kickbox这样的付费电子邮件验证服务通常会将一个备受推崇的电子邮件发送网络与可以与许多服务器握手并通过一些智能缓存相结合,以实现其结果。

答案 2 :(得分:0)

正如bwest所说,RCPT TO是您要使用的,VRFY通常不受支持,即使它执行相同的检查。

在业务端,此过程通常称为“ ping”测试,除非您将其用于其他目的,否则它不会真正被认为是滥用。 MX管理员可以选择禁用它,这大约是他们的1/2到2/3在野外。理想情况下,该过程应该进行:

  • 通过对已知的虚假用户(gibberishasdfasdf@example.com)进行测试,确认邮件服务器对您的RCPT TO给出了真实的答复,而不是全部接受。不要对您发送的每封电子邮件都重复此测试,否则您可能会因为太多错误的收件人而被拒绝。
  • 如果该虚拟用户被接受,请放弃。该邮件服务器不会回答您的问题。
  • 如果虚拟用户被拒绝,请在您要验证的电子邮件上重复进行RCPT TO测试。如果被接受,那可能很好。如果它被拒绝(如虚拟电子邮件),则很可能确实很糟糕。某些服务器的“良好”响应可能有些含糊,但最重要的是,您希望看到的响应与虚拟用户得到的响应不同。

每个服务器的配置都将有所不同,因此您不应对状态码的含义进行过多的假设,而应遵循以下最佳做法:

  • 从具有有效反向DNS / PTR和MX条目的IP进行此测试(这至少会使您的成功翻番)
  • 明智地限制您的尝试。以RCPT TO结尾的尝试不会像重复拒绝那样使邮件服务器感到沮丧,因为重复拒绝是有人收获电子邮件并且没有验证健康列表的好兆头。重复测试不良用户将使您从邮件服务器收到有关灰名单,限制,过多不良请求等的各种错误,否则这些错误将很乐意回答您的问题。