Проверка записи MX с помощью getmxrr() или dns_get_record() возвращает неверную информацию
В настоящее время я пытаюсь проверить действительность адреса электронной почты, сначала проверив, существует ли запись MX, используя getmxrr()
или же dns_get_record()
с PHP 7 на капле DigitalOcean.
В моем примере (который возвращает неправильный ответ) я пытаюсь проверить адрес электронной почты в домене "nuwatches.com". С помощью dns_get_record(”nuwatches.com”, DNS_ALL)
Мне возвращается массив, который содержит запись MX, хотя я знаю, что в действительности этого не существует:
[5] => Array (
[host] => nuwatches.com.com
[class] => IN
[ttl] => 27
[type] => MX
[pri] => 1
[target] => mail.user-mail.net
)
Однако, если я использую nslookup
прямо из консоли на дроплете DigitalOcean мне правильно сказали, что записи MX не существует.
Кроме того, если я запускаю dns_get_record()
функция на другой дроплет, или используя бегун PHP-кода онлайн, мне также дают правильный ответ (то есть, что записи MX не существует).
Я поговорил со службой поддержки DigitalOcean, и они предполагают, что с PHP происходит что-то странное с этой конкретной капелькой, возможно, с проблемами кэширования, но я никак не могу понять, что может быть причиной несоответствия, тем более что я ничего не кэширую себя.
В настоящее время мой единственный вариант, чтобы получить правильный ответ на эту капельку, это запустить nslookup
а потом разбирать результат, но я бы хотел использовать dns_get_record()
если возможно.
Буду признателен за любые предложения. Спасибо!
2 ответа
у меня похожие проблемы сdns_get_record()
при вызове его со значением по умолчанию для типа записиDNS_ANY
или при вызове с помощьюDNS_ALL
.
Решение, которое сработало для меня, заключалось в использовании:
dns_get_record( ”nuwatches.com”, DNS_MX )
Я все еще исследую причину такого поведения.
Для этого вы можете попробовать использовать стороннюю PHP-библиотеку. Я только что проверил это, и это сработало для меня.
образец
use BlueLibraries\Dns\Facade\DNS;
use BlueLibraries\Dns\Records\RecordTypes;
$records = DNS::getRecords('nuwatches.com', RecordTypes::MX);
print_r($records);
результат
Array
(
[0] => BlueLibraries\Dns\Records\Types\MX Object
(
[data:protected] => Array
(
[host] => nuwatches.com
[ttl] => 3600
[class] => IN
[type] => MX
[pri] => 1
[target] => localhost
)
)
)