Php и dns проверка почтового адреса


Проверка почтового адреса

Эта функция принимает в качестве аргумента имя хоста hostname в данном домене и заполняет массив mxhost списком почтовых ретрансляторов этого домена. Если указан третий необязательный аргумент weight , то функция заполняет его значениями предпочтения, которые возвращает ей почтовый ретранслятор

Обычно когда требуется послать сообщения по адресу username@someserver.com,
необходимо сначала узнать хост почтового ретранслятора для домена someserver.com, а затем получить его ip-адрес. После этого можно соединяться с хостом для доставки почты. В домене может быть несколько почтовых ретрансляторов с разными значениями предпочтения, поэтому, получив список ретрансляторов, имеет смысл устанавливать соединение с тем из них, который имеет максимальное значение предпочтения.

В следующем листинге показан пример кода, с помощью которого можно получить список почтовых ретрансляторов:

Получение списка почтовых ретрансляторов

Проверка существования адреса электронной почты

Заметим сразу, что речь идет не о проверке адресов с помощью регулярного выражения, а о проверке существования хоста почтового ретранслятора для некоторого домена.
Т.е. приведенный выше код можно практически не перерабатывая приспособить для проверки существования e-mail адреса:

PHP и DNS. Проверка почтового адреса

string getmxrr(string hostname, array mxhost, [, array weight])

Эта функция принимает в качестве аргумента имя хоста
hostname
в данном домене и заполняет массив
mxhost
списком почтовых ретрансляторов этого домена. Если указан третий необязательный аргумент weight ,
то функция заполняет его значениями предпочтения, которые возвращает ей почтовый ретранслятор

Обычно когда требуется послать сообщения по адресу username@someserver.com,
необходимо сначала узнать хост почтового ретранслятора для домена someserver.com, а затем получить его ip-адрес.
После этого можно соединяться с хостом для доставки почты.
В домене может быть несколько почтовых ретрансляторов с разными значениями предпочтения, поэтому,
получив список ретрансляторов, имеет смысл устанавливать соединение с тем из них, который имеет максимальное значение предпочтения.

В следующем листинге показан пример кода, с помощью которого можно получить список почтовых ретрансляторов:

Получение списка почтовых ретрансляторов

Проверка существования адреса электронной почты

Заметим сразу, что речь идет не о проверке адресов с помощью регулярного выражения,
а о проверке существования хоста почтового ретранслятора для некоторого домена.
Т.е. приведенный выше код можно практически не перерабатывая приспособить для проверки существования e-mail адреса:

$email_arr = explode ( @ , $email );
$host = $email_arr [ 1 ];

if (! getmxrr ( $host , $mxhostsarr ))
<
echo На адрес $email отправка почты невозможна ;
exit;
>

getmxrr ( $host , $mxhostsarr , $weight );
echo На $email письма могут отправляться через следующие хосты:
;
for ( $i = 0 ; $i count ( $mxhostsarr ); $i ++)
<
echo ( $mxhostsarr[$i] = $weight[$i]
);
>

dns_get_record

dns_get_record — Получение ресурсных записей DNS хоста

Описание

Производит выборку DNS-записей, соответствующих свойствам хоста hostname .

Список параметров

Параметр hostname должен быть корректным DNS-именем таким как «www.example.com«. Обратное разрешение имен хостов может быть произведено с использованием нотации in-addr.arpa, однако, для этой цели лучше воспользоваться функцией gethostbyaddr() .

В соответствии со стандартами DNS, адреса электронной почты задаются в формате user.host (например, hostmaster.example.com в отличие от hostmaster@example.com), поэтому будьте внимательны и дополнительно проверьте это значение, прежде чем использовать его в таких функциях, как mail() .

По умолчанию dns_get_record() будет искать все возможные записи, соответствующие заданному имени хоста hostname . Чтобы сузить круг поиска, можно задать необязательный параметр type . Этот параметр может принимать следующие значения: DNS_A , DNS_CNAME , DNS_HINFO , DNS_CAA , DNS_MX , DNS_NS , DNS_PTR , DNS_SOA , DNS_TXT , DNS_AAAA , DNS_SRV , DNS_NAPTR , DNS_A6 , DNS_ALL или DNS_ANY .

Из-за неоднозначного поведения libresolv на разных платформах, DNS_ANY может вернуть не все записи, более медленный DNS_ALL вернет все записи надежнее.

Передается по ссылке и, если передан, будет заполняться ресурсными записями для удостоверяющих серверов имен (Authoritative Name Servers).


Передается по ссылке и, если передан, будет заполняться дополнительными записями (Additional Records).

type будет интерпретирован, как необработанный идентификатор типа DNS (нельзя использовать константы DNS_*). Возвращаемое значение будет содержать ключ data, который необходимо проанализировать вручную.

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Онлайн инструменты для проверки почтового сервера

Онлайн инструменты для проверки почтового сервера

  • Автор: Уваров А.С.
  • 03.10.2013

Проверка правильности настройки почтового сервера — задача непростая, особенно в части его взаимодействия с внешним миром. Если вы не являетесь специалистом в области почтовых серверов, то скорее всего у вас возникнут затруднения. Но не стоит впадать в уныние, сегодня мы расскажем об онлайн-сервисах которые сделают большую часть работы за вас. Вам останется только изучить рекомендации и исправить ошибки.

Илон Маск рекомендует:  Что такое код iconv_get_encoding

Также данные сервисы будут полезны в том случае, если что-то работает не так: почта не доходит к некоторым адресатам, принимается, но не отправляется и т.д. и т.п. Но даже если все работает как надо не поленитесь выполнить диагностику, так как некоторые проблемы проще и дешевле устранить заранее, не дожидаясь пока они себя проявят. Например, если из-за ошибки в настройке вы получили открытый релей, то лучше исправить ее сразу, пока ваш сервер не попал во всевозможные спам-листы.

MX Toolbox

Одним из лучших сервисов по диагностике почты является MX Toolbox. Достаточно ввести имя вашего домена, все остальные проверки сервис выполнит самостоятельно. Первым делом будут определены MX-записи:

После чего можно будет выполнить поиск проблем:

В результате вы получите общий список ошибок и предупреждений, более подробно с результатами проверки можно ознакомиться выбрав соответствующий раздел. Так например настройка DNS не содержит ошибок, а настройка почтового сервера лишь два предупреждения:

В общем информации, предоставляемой сервисом, вполне достаточно, чтобы проверить все основные настройки и устранить все грубые ошибки, а также найти возможные проблемы с производительностью.

Для этих целей полезно воспользоваться еще одним инструментом — анализатором заголовков (Email Header Analyzer), скопировав заголовок письма вы сможете оценить задержки на всех этапах его прохождения от отправителя к получателю.

В нашем случае видно как веб-интерфейс Zimbra отдал почту непосредственно серверу (1), который передал ее на localhost для антивирусной и антиспам проверки (2), пройдя проверку письмо вернулось обратно серверу, задержавшись на 1 секунду (3) и было отдано серверу-получателю. Возникновение значительных задержек на одном из этапов — повод обратить внимание на работу этого компонента.

На этом возможности данного сервиса не заканчиваются, вам доступно большое количество инструментов, которые могут пригодиться не только для диагностики почты.

Microsoft Remote Connectivity Analyzer

Второй используемый нами инструмент — Microsoft Remote Connectivity Analyzer, несмотря на то, что в первую очередь предназначен для диагностики продуктов Microsoft, может оказаться полезен и для проверки любых других почтовых серверов.

Нас должен заинтересовать раздел Тесты для электронной почты в Интернете, который не только выполнит проверку настроек, но и попробует отправить тестовое письмо, сопроводив этот процесс подробным отчетом:

В нашем случае для домена указаны две MX-записи, одна из которых полностью рабочая, а вторая не прошла проверку.


Проверка исходящего потока почты позволит обнаружить возможные проблемы проведя эмуляцию реальной отправки с вашего сервера:

Мы настоятельно рекомендуем использовать этот инструмент при возникновении проблем с входящим / исходящим потоком почты, так как он позволяет быстро и наглядно выявить проблему. Также сервис позволяет выполнить аналогичные проверки для почтовых клиентов, подключающихся по протоколу POP3 или IMAP.

Анализатор заголовков на наш взгляд более удобен, чем у предыдущего сервиса, так как содержит большее количество технической информации.

В частности определяются и указываются имена участвующих в обработке почты служб, что позволяет гораздо быстрее определить узел вносящий наибольшие задержки. Действительно, MX Toolboox просто уведомил нас, что вторым шагом отдал почту на localhost и, только зная архитектуру Zimbra, мы можем сказать кому именно была отдана почта. Сервис от Microsoft гораздо подробнее, он сообщает что почта отдана сервису amavisd-new на порт 10026, это может сэкономить немало времени, особенно если почта проходит обработку на нескольких узлах.

В заключение хочется сказать, что несмотря на то, что оба описанных нами сервиса дают весьма подробную информацию об ошибках и методах их устранения, администратор должен иметь базовые познания в области архитектуры почтовых серверов и работы электронной почты как в общем, так и в частном, применительно к используемому им почтовому ПО. Потому как ни один сервис не способен заменить человека, особенно в таком вопросе как диагностика и устранение неисправностей.

Проверка почтового адреса в PHP

Функция getmxrr

string getmxrr(string hostname, array mxhost, [, array weight])

Эта функция принимает в качестве аргумента имя хоста hostname в данном домене и заполняет массив mxhost списком почтовых ретрансляторов этого домена. Если указан третий необязательный аргумент weight , то функция заполняет его значениями предпочтения, которые возвращает ей почтовый ретранслятор

Функция getmxrr является достаточно полезной. Дело в том, что когда требуется послать сообщения по адресу Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript , необходимо сначала узнать хост почтового ретранслятора для домена someserver.com, а затем получить его IP-адрес. После этого можно соединяться с хостом для доставки почты. В домене может быть несколько почтовых ретрансляторов с разными значениями предпочтения, поэтому, получив список ретрансляторов, имеет смысл устанавливать соединение с тем из них, который имеет максимальное значение предпочтения.

В следующем листинге показан пример кода, с помощью которого можно получить список почтовых ретрансляторов:

Получение списка почтовых ретрансляторов

= «server.com» ;
getmxrr ( $domain , $maillist , $priority );
echo( «Список почтовых ретрансляторов хоста $domain:
» );
for( $i = 0 ; $i count ( $maillist ); ++ $i )
<
echo( «$maillist[$i] = $priority[$i]
» );
>
?>

Илон Маск рекомендует:  Где купить контент, покупка контента от А до Я

Проверка существования адреса электронной почты

Заметим сразу, что речь идет не о проверке адресов с помощью регулярного выражения, а о проверке существования хоста почтового ретранслятора для некоторого домена. Т.е. приведенный выше код можно практически не перерабатывая приспособить для проверки существования e-mail адреса:

= explode ( «@» , $email );
$host = $email_arr [ 1 ];

if (! getmxrr ( $host , $mxhostsarr ))
<
echo «На адрес $email отправка почты невозможна» ;
exit;
>

getmxrr ( $host , $mxhostsarr , $weight );
echo «На $email письма могут отправляться через следующие хосты:
» ;
for ( $i = 0 ; $i count ( $mxhostsarr ); $i ++)
<
echo ( «$mxhostsarr[$i] = $weight[$i]
» );
>

?>

Понятие же «физического вакуума» в релятивистской квантовой теории поля подразумевает, что во-первых, он не имеет физической природы, в нем лишь виртуальные частицы у которых нет физической системы отсчета, это «фантомы», во-вторых, «физический вакуум» — это наинизшее состояние поля, «нуль-точка», что противоречит реальным фактам, так как, на самом деле, вся энергия материи содержится в эфире и нет иной энергии и иного носителя полей и вещества кроме самого эфира.

В отличие от лукавого понятия «физический вакуум», как бы совместимого с релятивизмом, понятие «эфир» подразумевает наличие базового уровня всей физической материи, имеющего как собственную систему отсчета (обнаруживаемую экспериментально, например, через фоновое космичекое излучение, — тепловое излучение самого эфира), так и являющимся носителем 100% энергии вселенной, а не «нуль-точкой» или «остаточными», «нулевыми колебаниями пространства». Подробнее читайте в FAQ по эфирной физике.

Проверка почтовой электронной почты с использованием проверки DNS в переполнении стека

Я теперь больше с отправкой массовых писем с использованием SMTP. Перед отправкой почты мне нужно проверить, что эти почтовые идентификаторы действительны. У меня есть код, чтобы проверить это & Я добавил это ниже. Это из Github. Мне просто нужно подтвердить с вами все, что с помощью этой проверки DNS-портов, это делает наш сервер в таких проблемах, как черный список и т. Д., При проверке большого количества писем, которые не являются действительными?

Если у вас есть идея, чтобы помочь мне, пожалуйста, напишите & Помогите.
Заранее спасибо.

Решение

Поиск DNS не приведет к черным спискам. Однако это будет очень чувствительно к качеству вашего сервиса DNS — я недавно начал использовать net_dns2 вместо getmxrr (), поскольку последний не различает тайм-ауты, NXDOMAIN и другие ошибки (к сожалению, DNS-серверы здесь настраиваются нашими «экспертами»).

(также может быть полезно знать, что я использую функции curl_multi _ * () для одновременного поиска — обработка большого списка может занять долго время — описано Вот ).

Проверка MX может привести к тому, что вы попадете в черный список — и это в основном пустая трата времени в качестве меры доставки (и поскольку используемый вами скрипт явно разрешает IP-адрес для каждого MX, что несколько дорого с точки зрения производительности). Кроме того, это приведет к ложным отрицаниям, если основной MX недоступен (SMTP спроектирован как асинхронный).

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

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


checkdnsrr — Проверяет записи DNS, соответствующие переданному имени узла интернета или IP-адресу

(PHP 4, PHP 5, PHP 7)

checkdnsrr — Проверяет записи DNS, соответствующие переданному имени узла интернета или IP-адресу

Описание

Ищет записи DNS типа type , соответствующие host .

Список параметров

Параметр host может быть IP-адресом в виде четырех десятичных чисел, разделенных точками, или именем узла.

Параметр type может быть одним из: A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT or ANY.

Возвращаемые значения

Возвращает TRUE , если были найдены записи; возвращает FALSE , если записей не было найдено или произошла ошибка.

Список изменений

Версия Описание
5.3.0 Функция стала доступна на платформе Windows.
5.2.4 Добавлено значение TXT параметра type .

Примечания

Для совместимости с более ранними версиями PHP под Windows, где не было реализации этой функции, используйте класс » PEAR » Net_DNS.

Смотрите также

  • dns_get_record() — Получение DNS свойств и характеристик хоста
  • getmxrr() — Получает запись MX, соответствующую переданному доменному имени узла
  • gethostbyaddr() — Получает доменное имя узла, соответствующее переданному IP-адресу
  • gethostbyname() — Получает адрес IPv4, соответствующий переданному имени узла интернета
  • gethostbynamel() — Возвращает список адресов IPv4, соответствующих переданному доменному имени узла
  • страница руководства named(8)

Php и dns проверка почтового адреса

Профиль
Группа: Участник
Сообщений: 1520
Регистрация: 3.2.2006
Где: Украина, Запорожь е

Репутация: 1
Всего: 109

Код
string getmxrr(string hostname, array mxhost, [, array weight])

Эта функция принимает в качестве аргумента имя хоста hostname

в данном домене и заполняет массив mxhost

списком почтовых ретрансляторов этого домена. Если указан третий необязательный аргумент weight , то функция заполняет его значениями предпочтения, которые возвращает ей почтовый ретранслятор

Обычно когда требуется послать сообщения по адресу username@someserver.com, необходимо сначала узнать хост почтового ретранслятора для домена someserver.com, а затем получить его ip-адрес.

После этого можно соединяться с хостом для доставки почты.

В домене может быть несколько почтовых ретрансляторов с разными значениями предпочтения, поэтому, получив список ретрансляторов, имеет смысл устанавливать соединение с тем из них, который имеет максимальное значение предпочтения.


В следующем листинге показан пример кода, с помощью которого можно получить список почтовых ретрансляторов:

Получение списка почтовых ретрансляторов

Проверка существования адреса электронной почты

Заметим сразу, что речь идет не о проверке адресов с помощью регулярного выражения, а о проверке существования хоста почтового ретранслятора для некоторого домена.

Т.е. приведенный выше код можно практически не перерабатывая приспособить для проверки существования e-mail адреса:

А вот так выглядит функция проверки правильности E-Mail’а. Помните, эта функция проверят только существование почтового сервера и синтаксическую правильность адреса. Для полной проверки существования адреса необходимо отправить на него письмо со случайным кодом и попросить получателя письма ввести этот код а форме, на вашем сайте.

function CheckEmail($Email)
<
if (!eregi(«^[\._a-zA-Z0-9-]+@[\.a-zA-Z0-9-]+\.[a-z]<2,6>$», $Email)) return 1;
list($Username, $Domain) = split(«@»,$Email);
if (@getmxrr($Domain, $MXHost)) return 0;
else
<
$f=@fsockopen($Domain, 25, $errno, $errstr, 30);
if($f)
<
fclose($f);
return 0;
>
else return 1;
>
>

Функция возвращает 1, если адрес указан неверно и 0, если все порядке.

Проверьте, существует ли электронная почта php

У меня есть вопрос, у меня есть php-скрипт, чтобы проверить, существует ли адрес электронной почты.

Но, похоже, что yahoo, hotmail, aol и другие провайдеры принимают любые электронные письма и не отклоняют недействительные электронные письма.

Только Gmail и многие домены, такие как stackoverflow.com, отклоняют электронные письма no vaild.

Проверьте мой сценарий и дайте мне знать, могу ли я сделать некоторые, чтобы проверить yahoo и других.

Если вам необходимо убедиться, что существует адрес электронной почты, отправьте ему E-Mail. Он должен содержать ссылку со случайным идентификатором. Только когда эта ссылка нажата и содержит правильный случайный идентификатор, активируется учетная запись пользователя (или публикуется реклама, или отправляется заказ, или что бы вы ни делали).

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

Нет надежного способа проверки достоверности адреса электронной почты на 100%. Есть несколько вещей, которые вы можете сделать, по крайней мере, для отсечения явно недействительных адресов.

Проблемы, возникающие с адресами электронной почты, на самом деле очень похожи на проблемы с уличной почтой. Все три пункта ниже также могут использоваться для отправки писем улитки (просто измените запись DNS с физическим адресом).

1. Убедитесь, что адрес отформатирован правильно.

Очень сложно проверить формат адресов электронной почты, но PHP имеет фильтр проверки, который пытается это сделать. Фильтр не обрабатывает « комментарии и складывающиеся пробелы », но я сомневаюсь, что кто-нибудь заметит.

2. Убедитесь, что DNS-запись существует для имени домена

Если существует DNS (система имен доменов), то, по крайней мере, кто-то ее настроил. Это не означает, что на адресе есть почтовый сервер, но если адрес существует, то это более вероятно.

3. Отправьте письмо с подтверждением на адрес

Это самый эффективный способ увидеть, находится ли кто-то на другом конце адреса электронной почты. Если электронное письмо с подтверждением не отредактировано упорядоченным образом – например, 3 часа, то, вероятно, есть некоторые проблемы с адресом.

Вы можете проверить «используемые или настоящие» электронные письма с данными Telnet и MX, более подробно здесь , поскольку для PHP существует большой вызов библиотеки php-smtp-email-validation , упрощающий процесс.

Вы создаете логическую функцию с файлом example1.php и вызываете ее, когда будете проверять текст электронной почты. Для Gmail, Hotmail, Outlook, Live и MSM у меня есть какие-то проблемы, но с Yahoo и Terra библиотека не может правильно проверять электронную почту

Проблема в том, что gmail использует порт 25 для своих исходящих сообщений smtp, другие провайдеры используют разные порты для своего соединения. Ваш ответ выглядит нормально для gmail.com .

Когда вы подключаетесь к gmail smtp, он дает вам response 250 2.1.5 OK j5si2542844pbs.271 — gsmtp

Но когда вы подключаетесь к любому другому smtp, который не использует порт 25, он дает null ответ.

Проверка DNS-записей домена — утилита dig

Телефон в Москве

Бесплатный звонок по России

Выделите и нажмите Ctrl+Enter

  • Принимаем к оплате
  • Все способы оплаты

Все права на материалы, находящиеся на сайте, охраняются в соответствии с законодательством РФ. При любом использовании
материалов сайта письменное согласие обязательно. Торговые марки, логотипы и марки услуг, размещенные на данном сайте,
являются собственностью ООО «Регистратор доменных имен РЕГ.РУ» или третьих лиц.

Илон Маск рекомендует:  Direct draw термины и концепции пример реализации
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL