本地计算机上某些域的 SMTP 电子邮件验证失败

本地计算机上某些域的 SMTP 电子邮件验证失败

我想验证使用 SMTP 的电子邮件的邮箱是否存在。我可以做以下事情:

  1. 从域获取 MX 记录
  2. 通过 SMTP 连接到主机

然后我执行以下命令:

  HELO somedomain.com
  MAIL FROM:<[email protected]>
  RCPT TO:<[email protected]>

上述命令让我250在本地机器上对无效电子邮件做出响应。但当我在某些在线服务上验证电子邮件时,我得到了554响应(这是正确的)。这种奇怪的行为(本地机器上的无效结果)背后的原因是什么?

答案1

从技术上讲,如果邮箱不存在,您RCPT TO:应该得到一个550非 a 。如果命令失败(例如命令语法无效),则使用 A。但是,就像 Gryphius 所说的那样,如果使用的语法有效,许多邮件服务器将响应 250。它尚未检查实际邮箱是否存在,或者它只是不想告诉您地址是否存在。554554

从技术上讲,该VRFY命令是 SMTP 协议“应该”用来验证电子邮件地址是否存在的命令。但相当多的知名邮件服务实际上并不允许这样做VRFY,或者只是说“不确定,但我会尝试发送”。

许多 SMTP“服务器”响应 250 OK 的原因是,它们通常只是其他邮件服务器的前端网关或序列中的“跳跃”。因此,它们会让链下的另一台服务器处理该地址是否有效。其他时候,邮件服务器不希望有人遍历各种电子邮件地址,希望得到无效与有效的列表。

答案2

您不能依赖 SMTP 进行收件人验证。许多邮件服务器仅检查收件人地址邮件已被接受进入本地队列。如果收件人帐户不存在,他们会发回退回邮件。(“接受并退回”行为)。

相关内容