Меню

SLIDER.WEB studio

СоцСсылки

БЛОГ


SEVA - проверка email

Проверка адреса e-mail на существование - довольно полезная штука. Особенно полезно, если встает задача рассылок/подписок/регистраций и тому подобных активностей. Существует множество платных и не очень сервисов по проверке. Но иногда хочется чего-то простого, на коленке по быстрому и желательно бесплатно. Собственно такое средство я и запилил.

Решение представляет собой скрипт/приложение на PHP, которое можно запустить как в консоли, так и как API-сервис с JSON интерфейсом.

Алгоритм прост до безобразия:

  1. Скармливаем интересующий нас адрес электропочты сервису
  2. Вычленяем домен и проверяем, есть ли у домена IP.
  3. Проверяем, есть ли MX его обслуживающие.
  4. Если ни IP ни MX не находим - считаем, что это фэйк.
  5. Если MX есть - смотрим глубже и подключаемся к MX по протоколу SMTP на 25 порт.
  6. Представляемся и общаемся по протоколу до момента RCPT TO: куда и подставляем интересующий нас адрес электронной почты.
  7. Читаем код ответа - если в ответ получаем код 250 - значит сервер знает данный адрес и можем считать адрес валидным. Во всех остальных случаях - считаем что это фэйк.

Однако у такого метода есть ограничения: Если поста расположена на таких крупных ресурсах как gmil, mail.ru, yandex, Рамблер и т.п., если заказана услуга вроде "Почта для домена", то очень часто их сервера отвечают кодом 250 на любые адреса в этом домене. Это связано с тем, что перед реальными почтовыми серверами стоят проксирующие балансировщики, которые принимаю подключения и потом в асинхронном режиме транслируют запросы к SMTP-серверам. Естественно балансировщик изначально не знает, есть ли такой почтовый ящик в виртуальном домене, и по этому отвечает кодом 250. Если же таким образом проверять почтовые адреса @yandex.ru, @gmail.com и так далее, то ответ приходит адекватный и если ящик не существует - то вы получите ответ с другим кодом.


Есть Демо.

Проект залит в Git-репозитарий.

Есть прямая ссылка на ZIP-архив с проектом.

Posted in #япочинил, Полезности on авг 06, 2019.