Как я могу заставить checkdnsrr использовать Spamhaus.организация вместо MX?


Мне дали этот код для тестирования и проверки правильности входящих адресов электронной почты. Я знаю, что это работает, но опять же со всеми подарками на Рождество ценник был удален.

В моем случае инструкции были удалены. Я принимаю то, что я вижу в этом сценарии, что "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!
} 
Author: Tim, 2012-02-09

1 answers

Из http://php.net/manual/en/function.checkdnsrr.php единственными поддерживаемыми методами для checkdnsr являются A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT или ЛЮБЫЕ ДРУГИЕ. вы не можете добавить пользовательский URL-адрес.

Попробуйте:

$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";
}
 5
Author: Garry Welding, 2012-02-08 20:52:02