Php 是否应使用DNS/MX记录进行电子邮件验证?

Php 是否应使用DNS/MX记录进行电子邮件验证?,php,email,forms,validation,Php,Email,Forms,Validation,我注意到,大多数用于电子邮件验证的脚本不使用DNS信息来确保给定域实际存在 不使用DNS检查的原因是什么 它是否真的减少了虚假电子邮件的数量,或者使表单更易使用 示例代码段: $host = explode('@', $email); if(checkdnsrr($host[1].'.', 'MX') ) return true; if(checkdnsrr($host[1].'.', 'A') ) return true; if(checkdnsrr($host[1].'.', 'CNAME'

我注意到,大多数用于电子邮件验证的脚本不使用DNS信息来确保给定域实际存在

不使用DNS检查的原因是什么

它是否真的减少了虚假电子邮件的数量,或者使表单更易使用

示例代码段:

$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;

这样做可能会很慢。如果您在表单中进行DNS验证,最好在提交表单之前以某种方式使用AJAX开始验证


除此之外,您的检查将失败的地址与文字IP地址,但就个人而言,我不想接受这些在我的web表单无论如何。我不在乎它们是否符合RFC822;)

这使得对邮件服务器的DOS攻击非常容易实施。

大多数网站,尤其是那些保留登录信息的网站,在注册后都会发送确认电子邮件。这不仅确认电子邮件地址有效,还确认电子邮件地址属于提交者。进行DNS查找是多余的,除非您想向用户举报他们拼错了电子邮件地址


如果我想输入一个假电子邮件地址,aaa@aaa.com(AAA汽车俱乐部)和somebody@example.com(来自RFC 2606)都将通过。我认为DNS查找不会像你想象的那样捕捉到那么多假地址。

+1。电子邮件规范很复杂。验证电子邮件地址的最佳方法是向其发送电子邮件。这一点很好。如果某个垃圾邮件发送者继续提交表单,我的服务器将有太多的事情要处理。缓存结果可能会在某种程度上缓解这种压力。如果他们是垃圾邮件发送者,他们将不会使用同一域名两次。@SpencerRuport你是说DNS服务器吗?对DNS服务器进行MX查询,对吗?那么针对DNS服务器的DOS呢?我相信我六年前想说的是,如果你将邮件服务器设置为向DNS服务器发送MX查询,它会占用更多的资源,这会使邮件服务器更容易过载。然而,我一直没有跟上这种东西,所以我不知道这是否仍然是这样的情况。