Проверка существоавния E-mail адреса

  • Автор темы Автор темы Murphy
  • Дата начала Дата начала

Murphy

Новичок
Проверка существоавния E-mail адреса

Уважаемые программисты, есть ли опыт такой проверки? Поделитесь.
С помощью функции getmxrr можно проверить только существование почтового домена, на котором создан e-mail. А вот как выполнить полную проверку?
 
Если идет речь только о проверке валидности конкретного email адреса, есть вариант соединения с SMTP сервером пользователя (часть email после собаки) из скрипта и передачи ему команд:
<...>
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
<...>

Если почтовый сервер на RCPT TO ответит 250 Ok, значит, имеется высокая вероятность, что такой адрес действительно существует, но необязательно принадлежит именно тому пользователю, который его указывал :)

Правда, такое решение вряд ли оправдано из-за низкой скорости работы и отсутствия гарантий (сервер может оказаться временно недоступен)
 
Автор оригинала: FractalizeR
Если идет речь только о проверке валидности конкретного email адреса, есть вариант соединения с SMTP сервером пользователя (часть email после собаки) из скрипта и передачи ему команд:
<...>
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
<...>

Если почтовый сервер на RCPT TO ответит 250 Ok, значит, имеется высокая вероятность, что такой адрес действительно существует, но необязательно принадлежит именно тому пользователю, который его указывал :)

Правда, такое решение вряд ли оправдано из-за низкой скорости работы и отсутствия гарантий (сервер может оказаться временно недоступен)
Тем не менее решение интересное, а с сервером чем соединиться?
 
>есть вариант соединения с SMTP сервером пользователя (часть email после собаки)

это неверная информация

-~{}~ 27.12.07 10:09:

>с сервером чем соединиться

руками
 
во первых, smtp сервер надо брать из mx записи

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

вывод - достаточно проверить, что mx запись есть и smtp-сервер отвечает, этим ты отсеешь "левые" домены. все остальное проверяется только подтверждением.
 
если бы такой способ был, спамеры бы прошибли потолки головами от счастья
 
Автор оригинала: fixxxer
>есть вариант соединения с SMTP сервером пользователя (часть email после собаки)

это неверная информация
Почему? Под *nix можно вызвать getmxrr() от той части email и получить адрес SMTP сервера пользователя.

Автор оригинала: fixxxer
если бы такой способ был, спамеры бы прошибли потолки головами от счастья

Это верно :)
 
FractalizeR
Хм, я тебя полностью поддерживаю.

Соглашусь, можно проверить наличие почтового ящика используя соединение с SMTP, и посылкой комманд, до DATA, четко по спецификации rfc2821.
Тоесть в порядке
EHLO
MAIL FROM
RCPT TO
RSET
QUIT

Анализировать отклики, и тем самым проверить почтовый ящик на существование.

Из спецификации (раздел 4.3.2)
RCPT
Удачные: 250, 251
Неудачные: 550, 551, 552, 553, 450, 451, 452, 503, 550

Если используется модификация SMTP частично не по спецификации, то можно анализировать коды откликов (разел 4.2.1, rfc2821):

1yz – позитивный предварительный отклик
2yz – позитивный окончательный отклик
3yz – позитивный промежуточный отклик
4yz – негативный отклик о временных проблемах
5yz - негативный отклик о постоянных проблемах

Тоесть при получении 4yx, 5yx - говорить юзеру о неверном e-mail.

Если например, mx существует, но сервер SMTP не доступен (возвращает коды ошибок или нет соединения), сообщать об этом пользователю, с просьбой зарегистрироваться когда будет работать почтовый сервер.

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

На практике достаточно просто послать письмо с ссылкой активации, хотя сейчас появились сервисы, которые заворачивают всю почту приходящую на домен, далее она анализируется роботами которые ходят по ссылкам :)

Как вариант, в письме писать "Пожалуйста перейдите по ссылке", на самой ссылке разместить капчу с кнопкой OK или простой пример "Сколько 5 плюс 5 деленное на 2"
 
Активист
хотя сейчас появились сервисы, которые заворачивают всю почту приходящую на домен, далее она анализируется роботами которые ходят по ссылкам

Это ж противозаконно.
 
Сверху