有没有一种可行的(非理论的)方法来证明电子邮件地址是否属于真实的电子邮件帐户


Is there an implementable (non-theoretical) way to prove if email address belong to real email account?

有没有办法证明某个电子邮件地址是"真实的",因此属于真正存在的电子邮件帐户?我通过电子邮件获得了大量注册,这些注册根据电子邮件模式定义是有效的,但实际上并不存在。发送到假邮件地址要花很多钱,因为我们(和其他人)每封邮件都要付费(每年向假邮件账户发送100000封邮件可能会花费你四位数的数字,只是为了显示一个数字)我想查一下确切的时间。我们不在乎电子邮件地址是否在1分钟后脱机

一个理想的解决方案是bash-one-liner(可以用所有主要语言调用)。

到目前为止我做了什么:

  1. 检查这个类似的3yo线程,这对于现实世界的情况来说是错误的。我想在发送邮件的那一刻检查是否存在电子邮件地址(以防止成本)
  2. 检查主机名是否可Ping
  3. 检查电子邮件地址是否可以ping,如这里所示。我试图在bash脚本中重建它,但失败了(获取地址很难!)

我真正想要的:

一个可靠的检查邮件帐户是否存在,可由PHP或Java中的普通编码器实现。bash-one-liner或php/java库正是这样做的。免费的或商业的。

我会提供赏金

它被称为"双重选择加入"。

  1. 用户在您的注册表中输入他们的电子邮件地址
  2. 用户点击一个框,上面写着"是的,请给我发电子邮件"
  3. 您向该用户发送了一封电子邮件,内容如下:"嗨,这是为了确认您的帐户。请单击此链接。"
  4. 一旦点击链接,你就会得到尽可能多的确认,你就不太可能成为垃圾邮件发送者,也不太可能被误认为是垃圾邮件发送者

其他不浪费付费电子邮件的魔法是:

  • "使用一个知道500级SMTP错误意味着什么的邮件程序"[也就是说,而不是mail()],并将此人从您的列表中删除
  • "反弹处理"并从您的列表中删除该人
  • "一个有效的取消订阅过程",它可以工作,还可以从您的列表中删除此人。我有没有提到应该工作

如果你[或任何读到这篇文章的人]没有自愿收集你的电子邮件列表,而用户至少有选择了,那么我们的电子邮件管理员称之为"撒尿绳子"的一种高级技术是,你从高处挂一段绳子,从下面看它有多高。

电子邮件管理员可以选择让所有人都尝试发送"OK",即使您要发送的地址不存在。我这样做的部分原因是为了让垃圾邮件发送者更难"了解"我域中的地址。

更好的做法是要求通过网络表格向captcha(某种)注册,然后发送验证电子邮件,而不是通过电子邮件接受大规模注册。(如果你还没有这么做的话)。

如果你有足够的历史记录,你可能想在发送之前创建一个已知错误电子邮件地址的黑名单以供参考。您的注册者中有多少是mailadmin@yourdomain.comroot@google.com

就我的业务而言,我们在本地托管一台SMTP服务器,以避免合法电子邮件活动中失败交付的相关成本。否则我就会烧钱,往海里铲沙子。

SMTP协议不是用来检查邮箱可用性的。

发送电子邮件时,通常会采取以下步骤:

检查邮件域的MX记录

发送到somebody@example.com的邮件将检查example.com是否有MX记录。如果有,将联系优先级最高的人接受邮件。如果没有响应,将联系任何优先级较低的现有MX。

如果没有MX记录,将搜索example.com的"a"记录,并连接该IP以接受邮件。

连接到MX或A记录中提到的服务器

已联系接收邮件的服务器。如果它存在,邮件可能会被送达。SMTP协议要求发送邮件服务器发送接收邮件地址、发送邮件地址,然后发送邮件本身。

接收邮件的服务器尝试将邮件传递到用户邮箱

这可能会因为几个原因而失败。重要的信息是,这一步骤可能发生在发送邮件服务器得到收到邮件的肯定回复后,并且连接终止。因此,发送邮件的服务器可能不会得到传递失败的线索。

在这种情况下,接收邮件的服务器将发送一条反弹消息。但是这个反弹邮件被发送到指定接收错误的邮件地址。这可能是原始邮件地址,但也可能是不同的地址。此外,负责接收反弹的邮件服务器不能是发送原始邮件的服务器。

在这一点上,应该很清楚,电子邮件实际上是一种异步信息交换介质,几乎没有任何内置的可靠性。

一些技术使其可行,但希望略有改进:通常发送反弹消息不是最好的主意。配置良好的邮件服务器会拒绝接收有任何问题的邮箱的邮件,比如它们不存在或已满。

另一方面,新的邮件大黑洞是垃圾邮件过滤器。通常这些都是由用户配置的,邮件服务器会很高兴地接收到现有邮箱的任何邮件,但随后垃圾邮件会被自动删除或移动到垃圾邮件文件夹中并被忽略。

此外,还有一种类似灰名单的技术,它可以回答任何发送具有临时故障状态的邮件的尝试。正常的邮件服务器稍后会尝试,最终灰名单计时器结束(在某些设置中可能超过一个小时),并进行真正的投递尝试,最终会被拒绝或接受。与此同时,邮件服务器希望它包含垃圾邮件过滤器,以检测新一波的垃圾邮件,而灰名单只会争取一些时间。众所周知的邮件服务器的任何定期投递尝试都会立即成功,因为成功的非垃圾邮件投递会被列入白名单。

在描述了真实邮件的工作原理之后,我想你可以看到,真的没有办法"简单地"检测邮件地址是否真的存在。你唯一能做的就是尝试检测邮箱是否存在,如果你确实被告知邮箱不存在,因为目标邮件服务器拒绝传递,你可以假设你可能不应该再尝试将邮件传递到该目标。

任何其他结果都不会告诉你任何事情。您还将注意到,检测邮件地址是否存在需要发送一个第二十二条规则的邮件。

您确实应该实现适当的反弹管理和传递失败检测,以删除明显的失败邮件地址。其他任何东西都无法检测到。