Как я могу заставить checkdnsrr использовать Spamhaus.org вместо MX? - PullRequest
3 голосов
/ 09 февраля 2012

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

В моем случае инструкции были удалены. В этом сценарии я понимаю, что «MX» указывает сценарию использовать базу данных MX Verify ... просто заменить или добавить рядом с ней «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 Ответ

5 голосов
/ 09 февраля 2012

С http://php.net/manual/en/function.checkdnsrr.php единственными поддерживаемыми методами для checkdnsr являются A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT или ANY.Вы не можете добавить пользовательский 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";
}
...