如何让checkdnsrr使用Spamhaus.org而不是MX?

时间:2012-02-08 20:35:57

标签: php spam verification

我已经获得此代码用于测试,并验证进入的电子邮件地址是否有效。我知道这是有效的,但在圣诞节期间所有的礼物再次取消了价格标签。

在我的情况下,说明已被删除。我正在接受我在这个脚本中看到的“MX”告诉脚本使用MX验证数据库...我只是替换或添加它旁边的“spamhaus.org”以使其工作?还是不止于此?

我不是在Windows机器上作为我的服务器所以我不需要担心checkdnsrr无法正常工作。

此外,这个脚本有更好的版本吗?我很好奇,因为毫无疑问,这部分PHP编码对我来说是新的。

提前致谢。

// take a given email address and split it into the username and domain.
list($userName, $mailDomain) = split("@", $email);
if (checkdnsrr($mailDomain, "MX")) {
  // this is a valid email domain!
}
else {
  // this email domain doesn't exist! bad dog! no biscuit!
} 

1 个答案:

答案 0 :(得分:5)

http://php.net/manual/en/function.checkdnsrr.php开始,checkdnsr唯一支持的方法是A,MX,NS,SOA,PTR,CNAME,AAAA,A6,SRV,NAPTR,TXT或ANY。您无法添加自定义网址。

尝试:

$host = '64.53.200.156';

$rbl  = 'sbl-xbl.spamhaus.org';
// valid query format is: 156.200.53.64.sbl-xbl.spamhaus.org
$rev = array_reverse(explode('.', $host));

$lookup = implode('.', $rev) . '.' . $rbl;

if ($lookup != gethostbyname($lookup)) {
    echo "ip: $host is listed in $rbl\n";
} else {
    echo "ip: $host NOT listed in $rbl\n";
}