Ruby on rails 电子邮件验证与DNS&;来自Heroku Rails应用程序的SMTP检查

Ruby on rails 电子邮件验证与DNS&;来自Heroku Rails应用程序的SMTP检查,ruby-on-rails,ruby,email,heroku,dns,Ruby On Rails,Ruby,Email,Heroku,Dns,我正在考虑使用这个gem来验证电子邮件地址 基本上,这个gem将检查DNS中的MX记录,并连接smtp以检查电子邮件地址是否确实存在。有没有人有这方面的经验?请告诉我我的担忧 从我的应用程序多次查询dns和smtp是否会损害我的域声誉 我知道heroku switch ip addreses每天都适用于所有dynos,我的ssl应用程序也是这样吗?是的,我(几年前)有经验在很大程度上做到这一点。我们正在扫描整个.SE域(“我们”在本例中是.SE注册表),并尝试验证SOA记录中的地址 我强烈建议你

我正在考虑使用这个gem来验证电子邮件地址

基本上,这个gem将检查DNS中的MX记录,并连接smtp以检查电子邮件地址是否确实存在。有没有人有这方面的经验?请告诉我我的担忧

从我的应用程序多次查询dns和smtp是否会损害我的域声誉

我知道heroku switch ip addreses每天都适用于所有dynos,我的ssl应用程序也是这样吗?

是的,我(几年前)有经验在很大程度上做到这一点。我们正在扫描整个.SE域(“我们”在本例中是.SE注册表),并尝试验证SOA记录中的地址

我强烈建议你不要为SMTP部分操心。假阳性率和假阴性率将非常高,足以使您的结果变得毫无意义,并且您的服务器将很快被所有主要邮件服务提供商列入黑名单

检查DNS部分是有意义的,并且工作良好。使用声誉良好的库来检查电子邮件地址的语法(不要尝试自己编写,它比你想象的要复杂得多),如果它通过了,请检查该域是否可以交付。“外观可交付”是指其具有可解析为IP地址的MX记录,或者如果没有任何MX记录,则具有和/或AAAA记录

不要试图联系你找到的IP地址。这需要很多时间(相对而言),但它什么也不告诉你。如果你可以连接,启动一个SMTP事务,另一端说“当然,我可以传递”,你仍然不知道你正在测试的地址是否正确,因为现在大多数邮件服务器都会说他们接受所有内容,然后默默地将无效邮件扔到地板上。他们这样做正是为了防止垃圾邮件发送者完全按照您的意图进行(验证地址),所以在垃圾邮件发送者离开之前,不要期望这种行为会改变。如果服务器说“不,现在无法交付,请稍后再试”,则可能是在使用greylisting。所以你可能会得到一个好答案——如果你在五到十分钟内再试一次。您可能不希望Ruby方法调用花费十分钟的时间。最后,如果服务器说“不,永远不能交付”,您仍然无法知道这是否意味着该地址无效,或者服务器是否度过了糟糕的一天,并且该地址可能在将来某个时候开始工作


总之,如果你尝试使用SMTP连接来验证邮件地址,你将花费大量时间(无论是在编写代码还是在运行代码时),你会激怒很多人,被列入许多黑名单(其中一些人非常非常渴望添加内容,而不是再次删除)在这一切结束时,你仍然不会知道比你开始之前知道的更多。这真的不值得。

我想这取决于你的需要。如果你只需要知道一封电子邮件是否存在,这个gem可能会工作(我从未使用过它)。如果你需要知道用户是否真的有权访问该电子邮件地址,那么你应该给他们发送一封带有链接和/或访问令牌的电子邮件,这些链接和/或令牌可以进入你的网站。谢谢你,我现在可以看到这个gem对我非常有效,我只是担心如果有服务器将我的ip/域报告为垃圾邮件会怎么样。我不会这样做。MX记录不必存在。邮件服务器不必告诉你一个地址是否合法,除非你真的发送了一封电子邮件(有时甚至不发送),是的,一些服务器会开始跟踪你的连接尝试并阻止你。这样想一想,如果上述方法能够可靠地工作,那么世界上的每个垃圾邮件发送者都会使用它来查找每个人的电子邮件地址吗?非常感谢您如此详尽的回答,我决定跳过这个验证。