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

Murphy

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

Уважаемые программисты, есть ли опыт такой проверки? Поделитесь.
С помощью функции getmxrr можно проверить только существование почтового домена, на котором создан e-mail. А вот как выполнить полную проверку?
 

FractalizeR

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

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

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

Murphy

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

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

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

fixxxer

К.О.
Партнер клуба
>есть вариант соединения с SMTP сервером пользователя (часть email после собаки)

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

-~{}~ 27.12.07 10:09:

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

руками
 

fixxxer

К.О.
Партнер клуба
во первых, smtp сервер надо брать из mx записи

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

вывод - достаточно проверить, что mx запись есть и smtp-сервер отвечает, этим ты отсеешь "левые" домены. все остальное проверяется только подтверждением.
 

Murphy

Новичок
Ну это равносильно тому, что полностью проверить нельзя.
 

fixxxer

К.О.
Партнер клуба
если бы такой способ был, спамеры бы прошибли потолки головами от счастья
 

FractalizeR

Новичок
Автор оригинала: 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"
 

ustas

Элекомист №1
Активист
хотя сейчас появились сервисы, которые заворачивают всю почту приходящую на домен, далее она анализируется роботами которые ходят по ссылкам

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