техническое · ответ с источниками
Как проверить email-адрес без отправки письма
Проверить email-адрес без отправки письма можно, последовательно выполнив валидацию синтаксиса, DNS-запросы записей и SMTP-рукопожатие. Так проверяется, корректен ли формат адреса и настроен ли принимающий сервер на приём почты для этого домена, — без фактической доставки сообщения.
Проверка синтаксиса
Первый шаг — проверить строку адреса на соответствие стандартам RFC 5322. Адрес должен содержать локальную часть, символ @ и корректную доменную часть. Обычно для этого используют регулярные выражения, которые отлавливают распространённые опечатки, недопустимые символы и неверное форматирование ещё до сетевых запросов.
Проверка DNS-записей
После проверки синтаксиса нужно убедиться, что у домена есть действующие записи Mail Exchanger (MX). DNS-запрос для домена должен вернуть хотя бы одну MX-запись. Если MX-записей нет, домен не может получать почту. Проверить настройки DNS и убедиться, что домен активен, можно с помощью бесплатных инструментов SendHQ.
SMTP-рукопожатие
Технический способ проверки — установить SMTP-соединение с MX-сервером. Клиент отправляет команду HELO, затем MAIL FROM и RCPT TO. Если на команду RCPT TO сервер отвечает 250 OK, он считает адрес действительным. Затем соединение завершается командой QUIT до отправки команды DATA.
Ограничения на стороне серверов
Многие современные почтовые серверы используют конфигурацию catch-all или грейлистинг, чтобы помешать проверке. Сервер catch-all принимает всю почту для домена независимо от локальной части. Грейлистинг временно отклоняет первую попытку и требует от отправителя повторить её позже, что усложняет скрипты проверки в реальном времени.
Что учесть при реализации
Реализуя такие проверки, убедитесь, что у вашего IP-адреса отправки чистая репутация и корректная обратная DNS-запись. Частые SMTP-рукопожатия без отправки почты принимающие серверы могут счесть подозрительным поведением, и тогда фильтры безопасности могут заблокировать ваш IP-адрес или ограничить скорость.
Что спрашивают команды
Гарантирует ли SMTP-проверка доставку?
Нет, она лишь подтверждает, что сервер принял команду RCPT TO. Это не гарантирует, что сообщение обойдёт спам-фильтры или попадёт во «Входящие».
Что такое адрес catch-all?
Catch-all — конфигурация сервера, при которой принимается любое письмо на домен, даже если конкретной локальной части не существует.
Можно ли использовать для этого обычный API?
Да, многие сервисы валидации email автоматизируют проверку синтаксиса, DNS и SMTP-рукопожатие через REST API.
Почему некоторые серверы отклоняют SMTP-проверки?
Серверы могут отклонять такие проверки, чтобы защититься от атак по сбору адресов (directory harvest), когда боты подбирают адреса, пытаясь найти действующих пользователей.