我被要求在 Web 应用程序上实施一些电子邮件地址验证 - 我敢肯定我们都去过那里一千次......但是,这次我被要求在域上进行 MX 查找以查看是否它接受电子邮件。
有谁知道这样做有什么潜在的问题?mx 查找是否是确定域是否接受电子邮件的可靠方法?是否存在有效电子邮件地址可能无法通过 MX 查找检查的极端情况?
谢谢你的建议!
我被要求在 Web 应用程序上实施一些电子邮件地址验证 - 我敢肯定我们都去过那里一千次......但是,这次我被要求在域上进行 MX 查找以查看是否它接受电子邮件。
有谁知道这样做有什么潜在的问题?mx 查找是否是确定域是否接受电子邮件的可靠方法?是否存在有效电子邮件地址可能无法通过 MX 查找检查的极端情况?
谢谢你的建议!
是否存在有效电子邮件地址可能无法通过 MX 查找检查的极端情况?
是的,在没有 MX 记录的情况下,MTA 转而使用 A 记录。因此,仅允许 MX 记录会使在现实世界中工作的一类邮件服务器失败。
允许任何带有 MX或A 记录的名称至少可以检测到导致 NXDOMAIN 的明显错误输入。然而,它仍然会允许错误输入最终出现在寮屋站点。由 A 记录解析的地址的进一步步骤可能是检查端口 25 在该地址上接受连接的位置。
您只能检查是否有为域注册的邮件服务器。
如果服务器也接受邮件并且地址是有效的(不是在语法上,而是在某种意义上它存在一个收件箱等等......)你只会在发送例如注册电子邮件时发现
有关如何在 PHP 中执行此操作的示例
function mailserver_exists($email) {
list($user,$domain) = split('@',$email);
//included check for 'A' after [comment from bobince][1]
return checkdnsrr($domain,'MX') || checkdnsrr($domain,'A');
}
if(domain_exists('joe@foreigndomain.xx')) {...} else {...}
是的,你也可以使用'TinyTim@192.184.165.13'
。checkdnsrr(host, type)
状态的 PHP 文档
host 可以是点分四进制表示法的 IP 地址或主机名