checkdnsrr不适用于.edu电子邮件地址?

时间:2011-10-17 16:48:54

标签: php email validation

以下是我在将他(或她)添加到我们的系统时用于验证用户电子邮件地址的功能:

private function validate_email($email){
    list($userName, $mailDomain) = split("@", $email); 
    if (!checkdnsrr($mailDomain, "MX")) { //.edu does not work?
        return false;
    } 
    return true;
}

出于某种原因,当我输入我知道有效的.edu地址时,此功能始终似乎返回false。

如何修复该功能,以便它为所有电子邮件类型验证并返回true

3 个答案:

答案 0 :(得分:1)

实际上,MX记录不是强制接收电子邮件的。如果没有MX记录,符合标准的MTA将回退到A记录(如果有)。一些教育机构可能依赖这种行为;它当然不被认为是最佳实践,它会导致一些邮件传递问题,但它 至少通常会起作用。

答案 1 :(得分:0)

如果主机名没有MX记录,但确实有A(或AAAA)记录,那么符合要求的邮件传输代理将尝试直接传递到A记录(RFC 5321 section 5)中给出的地址:

  

“如果返回一个空的MX列表,      地址被视为与隐式MX相关联      RR,优先级为0,指向该主机。“

因此,缺少MX记录并不一定表示无法将邮件传递给该主机。


附录:正如Pekka在评论中所说的那样,判断电子邮件地址是否有效的唯一可靠方法是向其发送邮件并查看是否已发送邮件。如果你担心候选人试图通过声称他们没有收到消息而作弊,你可以这样做:

  1. 询问候选人的电子邮件地址并向其发送确认消息。在邮件中包含确认链接(和/或候选人可以在表单中输入的确认码)。
  2. 一旦候选人通过点击链接确认他们已收到该消息,请向他们发送实际测试。

答案 2 :(得分:-2)

也许您的edu提供商不会让任何人看到他们的DNS记录。