在Linux上验证电子邮件地址

7
我正在使用类似于sendmail -bv example@othesite.com的命令来验证某些电子邮件地址,以确认该地址在向人们发送实际电子邮件之前是否有效。我测试过大多数网站都可以使用这种方法。但是有时,对于一些网站,无论我在同一个网站上输入什么地址名称,它都会给我返回所有的通过验证。sendmail -bv yyyyyy@othersite.com就是一个例子,其中的yyyyyy可以是任何东西,该命令总是报告"yyyyyy@othersite.com已验证"。这似乎是正确的,但我认为背后应该有什么问题。为什么会这样?另外,在Linux上检查邮件地址的其它命令是可靠和可用的,那么如何使用什么命令呢?

1
嗨,您可以使用nslookup -type = mx gmail.com来验证标识邮件ID的域。您可以使用telnet检查此链接http://www.labnol.org/software/verify-email-address/。 - linux_fanatic
3个回答

16
简短回答: 除了实际发送一封电子邮件并要求收件人在消息正文中点击链接外,没有100%可靠的方法来验证收件人电子邮件地址的存在。 解释: 大多数这类地址验证工具所做的是联系收件人服务器,开始SMTP会话并使用SMTP“RCPT TO”(有时为“VRFY”)命令检查服务器是否响应 200 OK 或 550 User Unknown 。如果服务器执行收件人验证,则此方法有效,但许多服务器首先接受所有内容,然后在稍后的时间反弹消息,而如果收件人不存在则无法得到任何反馈。即使启用了收件人过滤,某些系统(例如Exchange 2013)仅在SMTP DATA阶段之后才会响应“用户未知”,这意味着您必须发送完整消息才能获得结果。
更高级的验证系统还检查反弹,但即使这也不可靠。未收到任何反弹可能意味着收件人地址存在,但也可能意味着地址探测被隔离或您没有等待足够长的时间以获取反弹结果。

1
到目前为止,我看过的关于主机响应不一致行为的最简短解释。做得好。 - Tyler Hoppe

3
简翻中:

简而言之: 没有命令可以做到这一点。

增强存在的信心: 尽管没有一种完全准确的方法可以在没有最终用户从电子邮件中单击已签名链接的情况下验证电子邮件地址的存在,但有长而详细的指南可以指导人们如何接近获取某种地址存在的“信心水平”。这些级别的大致分类如下:

  1. 主机存在并具有邮件交换(使用nslookup或等效方式进行DNS查找)。
  2. MX接受一个包含该地址的信封,但是是转发服务器(可能是误报)。
  3. MX接受一个包含该地址的信封,并且是一个“核心”服务器(通常无法从外部访问)。
  4. 经过足够长的时间发送了一条真实的消息,且未返回(假设服务器没有保持缄默)。
  5. 发送了一条真实的消息,收件人表示可以收到。

并将这些级别映射到它们的意义:

  • (0)肯定不存在。
  • (1,2)不确定。
  • (>=3)存在。
你可以找出哪些MX记录接受寄往明显不存在的地址的信封,从而能够区分置信度2和3。

0

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