техническое · ответ с источниками
Как проверить, что почтовый домен действителен
Чтобы проверить, действителен ли почтовый домен, выполните DNS-запрос записей почтового обменника (MX) и убедитесь, что домен настроен на приём почты. Домен считается пригодным для почты, если у него есть хотя бы одна активная MX-запись, указывающая на почтовый сервер. Если MX-записей нет, домен не может принимать почту, если только не используется резервный вариант с A-записью, хотя в современных конфигурациях это встречается редко.
Проверка синтаксиса
Первый шаг — убедиться, что домен соответствует стандарту RFC 5322. Доменная часть email-адреса должна содержать домен верхнего уровня и соответствовать определённым правилам для символов. Прежде чем выполнять сетевой запрос, проверьте с помощью регулярных выражений, что в ней нет недопустимых символов и нескольких точек подряд. Так вы избежите лишних DNS-запросов для заведомо некорректных строк.
Поиск MX-записи
Выполните DNS-запрос MX-записи домена. MX-запись указывает почтовый сервер, который принимает письма от имени домена. Если DNS-запрос возвращает одну или несколько действительных MX-записей, домен технически способен принимать почту. Для ручной проверки подойдут dig или nslookup, а для массовых проверок библиотеки языков программирования предоставляют асинхронные методы.
Резервный вариант с A-записью
Согласно стандартам SMTP, если MX-записи нет, сервер отправки может попытаться доставить почту на IP-адрес, указанный в A-записи домена. Хотя это устаревшее поведение, проверка A-записи даёт дополнительный уровень валидации. Однако отсутствие и MX-, и A-записей однозначно означает, что домен непригоден для доставки почты.
Инструменты проверки
Разработчикам, которые внедряют такую проверку в больших масштабах, эффективнее использовать специализированный сервис валидации, чем управлять DNS-запросами вручную. SendHQ предлагает бесплатные инструменты на https://sendhq.cc/tools для проверки настроек домена. Эти инструменты автоматизируют поиск записей и выявляют типичные ошибки конфигурации, которые могут приводить к сбоям доставки.
Обработка ошибок DNS
Различайте ответ NXDOMAIN и тайм-аут. Ответ NXDOMAIN прямо указывает, что домен не существует. Тайм-аут или SERVFAIL может означать временную проблему с DNS или строгий файрвол. Для неоднозначных ошибок реализуйте логику повторных попыток с экспоненциальной задержкой, чтобы не помечать действительные домены как недействительные во время кратковременных сбоев сети.
Что спрашивают команды
Гарантирует ли действительная MX-запись, что email-адрес существует?
Нет, MX-запись лишь подтверждает, что домен может принимать почту. Она не проверяет, существует ли на этом сервере конкретный почтовый ящик или пользователь.
Может ли домен быть действительным без MX-записи?
Да, если у домена есть A-запись, некоторые SMTP-серверы попытаются доставить почту на этот IP-адрес, хотя для современной почты это нестандартная практика.
Чем проверка домена отличается от проверки email-адреса?
Проверка домена выясняет, настроен ли домен для почты, а проверка email-адреса — синтаксис конкретного адреса и состояние его домена.
Первоисточники
- RFC 5321: простой протокол передачи почты (SMTP) — RFC Editor
- RFC 5322: формат интернет-сообщений — RFC Editor
- Документация Cloudflare по DNS — Cloudflare