uCheckeruChecker
10 мин чтения

Null MX: как защитить домен, который не принимает почту

У большинства компаний есть домены, которые не используются для электронной почты. Лендинги, редиректы, технические поддомены, припаркованные домены. По умолчанию любой из них может стать точкой входа для спама и спуфинга. Одна DNS-запись закрывает эту дыру раз и навсегда.


Проблема: домен без почты - не значит домен без угроз

Допустим, у вас есть домен promo.example.com, на котором висит рекламный лендинг. Почту он не принимает и не отправляет. Кажется, что беспокоиться не о чем.

Но SMTP-протокол так не думает. Если у домена нет MX-записи, отправляющий сервер по RFC 5321 пробует fallback: ищет A-запись или AAAA-запись домена и пытается доставить почту напрямую на этот IP. У лендинга почти всегда есть A-запись - иначе сайт не работал бы. Это означает, что кто угодно может попробовать отправить письмо на адрес anything@promo.example.com.

На практике это создаёт две проблемы. Первая - бэкскаттер. Спамеры подставляют адреса на вашем домене в поле «From». Когда принимающий сервер отвергает письмо, он генерирует bounce-уведомление и шлёт его вам. Вы получаете тысячи писем о недоставке сообщений, которые никогда не отправляли.

Вторая проблема - репутационный ущерб. Если злоумышленник рассылает фишинг от имени вашего домена, а вы не настроили ни SPF, ни DMARC (потому что «зачем, мы же не шлём почту»), у получателей нет способа отличить поддельное письмо от настоящего.

Что такое Null MX

RFC 7505, опубликованный в 2015 году, вводит механизм Null MX - способ явно сообщить всем почтовым серверам в интернете: «Этот домен не принимает электронную почту. Не пытайтесь доставлять. Не тратьте ресурсы.»

Запись выглядит так:

example.com.    IN    MX    0    .

Приоритет 0, hostname - точка. Точка в DNS означает корень зоны, по сути - «ничто». Это единственная MX-запись для домена: никаких дополнительных MX рядом с ней быть не должно.

Когда отправляющий сервер получает такой ответ, он обязан прекратить попытки доставки. Никакого fallback на A-запись, никаких повторных попыток. Адрес отклоняется немедленно. Для SMTP-клиента это эквивалент ответа 556 - «домен не принимает почту».

Как работает Null MX на уровне протокола

Без Null MX процесс доставки на домен без почтового сервера выглядит так:

  1. Отправитель запрашивает MX-записи для example.com
  2. DNS возвращает пустой ответ (NODATA) или NXDOMAIN
  3. По RFC 5321 отправитель ищет A/AAAA-запись домена
  4. Находит IP (например, 93.184.216.34 - веб-сервер)
  5. Пытается установить SMTP-соединение на порт 25
  6. Соединение отклоняется или уходит в таймаут
  7. Письмо помещается в очередь на повторную отправку
  8. Повторные попытки продолжаются 1-5 дней

Восемь шагов. Дни ожидания. Нагрузка на обе стороны. С Null MX процесс сокращается до двух шагов:

  1. Отправитель запрашивает MX-записи для example.com
  2. DNS возвращает MX 0 . - отправитель немедленно генерирует bounce

Один DNS-запрос, мгновенный отказ. Никаких повторных попыток, никаких зависших соединений, никакой нагрузки на ваш веб-сервер.

Как настроить Null MX

Настройка занимает пять минут. Вам нужен доступ к DNS-панели домена - Cloudflare, Route 53, любой регистратор.

Шаг 1. Добавьте Null MX запись

Создайте MX-запись для домена с приоритетом 0 и значением . (точка). Удалите все остальные MX-записи, если они есть.

; Null MX - домен не принимает почту
example.com.    IN    MX    0    .

В Cloudflare это поле «Name» = ваш домен, «Priority» = 0, «Mail server» = точка. Некоторые панели не позволяют ввести точку напрямую. В этом случае используйте BIND-синтаксис через API или обратитесь в поддержку.

Шаг 2. Добавьте SPF-запись, запрещающую отправку

Null MX говорит «не принимаем». SPF с -all говорит «не отправляем». Вместе они перекрывают оба направления.

example.com.    IN    TXT    "v=spf1 -all"

Эта запись предельно короткая: никаких include, никаких разрешённых IP. Только жёсткий отказ для всех.

Шаг 3. Добавьте DMARC с политикой reject

Для домена без почты нет причин начинать с p=none. Вы точно знаете, что никто не должен слать письма от этого домена. Сразу p=reject.

_dmarc.example.com.    IN    TXT    "v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com"

Адрес в rua укажите на вашем основном домене, который почту принимает. Отчёты покажут, пытается ли кто-то использовать этот домен для отправки.

Итоговый набор записей

Три записи - полная защита домена без почты:

; 1. Не принимаем почту
example.com.        IN    MX     0    .

; 2. Не отправляем почту
example.com.        IN    TXT    "v=spf1 -all"

; 3. Отклоняем всё, что притворяется нами
_dmarc.example.com. IN    TXT    "v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com"

Как проверить, что Null MX работает

После добавления записей подождите, пока TTL старых записей истечёт (обычно от 5 минут до нескольких часов). Потом проверьте.

dig

$ dig MX example.com +short
0 .

Ответ 0 . - Null MX настроен корректно. Если в ответе есть другие MX-записи рядом с Null MX, конфигурация невалидна. Null MX должен быть единственной записью.

Полный вывод dig

$ dig MX example.com

;; QUESTION SECTION:
;example.com.                IN      MX

;; ANSWER SECTION:
example.com.         3600    IN      MX      0 .

;; Query time: 24 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

Обратите внимание на TTL (3600 секунд = 1 час). Для Null MX имеет смысл ставить высокий TTL - запись не будет меняться, а длинный TTL уменьшает количество DNS-запросов.

Проверка SPF

$ dig TXT example.com +short
"v=spf1 -all"

Проверка DMARC

$ dig TXT _dmarc.example.com +short
"v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com"

Все три запроса возвращают ожидаемые значения - домен защищён.

Какие домены нуждаются в Null MX

Любой домен или поддомен, на котором нет и не будет почтовых ящиков. Конкретнее:

  • Припаркованные домены. Вы купили домен про запас или для защиты бренда. Сайта нет, почты нет. Без Null MX спамеры могут использовать его в поле From.
  • Поддомены для сервисов. cdn.example.com, static.example.com, api.example.com. Технические поддомены, которые обслуживают трафик, но не почту.
  • Лендинги и промо-домены. Домен для рекламной кампании, который живёт месяц. Почту через него никто не отправляет.
  • Домены с редиректом. Старый домен компании, который перенаправляет на новый. Почта давно переехала, но DNS-записи остались.
  • Домены-тайпосквоты. Вы зарегистрировали распространённые опечатки вашего основного домена. Ни на одном из них почты быть не должно.

Null MX и валидация email-адресов

Для сервисов проверки email Null MX - однозначный сигнал. Если домен возвращает MX 0 ., любой адрес на этом домене невалиден. Не «рискованный», не «требует дополнительной проверки» - невалиден. Никакого fallback, никаких попыток SMTP handshake.

Это выгодно отличает Null MX от отсутствия MX-записи. Когда MX-записей нет вообще, валидатор должен проверять A-запись, пытаться подключиться, ждать таймаут. С Null MX проверка занимает миллисекунды: один DNS-запрос, моментальный отказ.

Если вы собираете email-адреса через форму регистрации и кто-то вводит адрес на домене с Null MX, валидатор отклонит его на самом раннем этапе. Это экономит ресурсы и защищает вашу базу от мусора.

Null MX vs. отсутствие MX-записей

Это принципиально разные ситуации, хотя на первый взгляд результат одинаковый - «почта не доставляется».

Нет MX-записей (NODATA). Отправитель обязан использовать fallback по RFC 5321: искать A/AAAA-запись, пытаться подключиться на порт 25. Процесс медленный, ресурсоёмкий и непредсказуемый. Некоторые серверы будут повторять попытки днями.

Null MX (MX 0 .). Явный отказ. Fallback запрещён. Отправитель должен немедленно прекратить попытки и сгенерировать bounce. Это чистый, однозначный сигнал.

# Домен без MX - fallback на A-запись
$ dig MX no-mail-configured.com +short
(пустой ответ)

$ dig A no-mail-configured.com +short
93.184.216.34
# Отправитель попробует порт 25 на этом IP

# Домен с Null MX - моментальный отказ
$ dig MX null-mx-configured.com +short
0 .
# Отправитель немедленно генерирует bounce

Аналогия: отсутствие MX - закрытая дверь без таблички. Посетители стучат, ждут, уходят, приходят снова. Null MX - табличка «Мы здесь не живём», которую видно с улицы.

Совместимость и поддержка

RFC 7505 опубликован больше десяти лет назад. Все современные почтовые серверы его поддерживают: Postfix, Exim, Microsoft Exchange, Gmail, Yahoo Mail, Mail.ru, Яндекс Почта. Если отправляющий сервер встречает Null MX, он корректно обрабатывает отказ.

Единственный нюанс - совсем старое программное обеспечение. Серверы, написанные до 2015 года и не обновлявшиеся с тех пор, могут не распознать Null MX и перейти к fallback на A-запись. Но таких серверов в 2026 году осталось крайне мало, и для них у вас есть SPF -all и DMARC p=reject как дополнительные уровни защиты.

Частые ошибки при настройке

  • Null MX + другие MX-записи. RFC 7505 требует, чтобы Null MX был единственной MX-записью. Если рядом стоит MX 10 mail.example.com, конфигурация невалидна и поведение непредсказуемо.
  • Приоритет не равен нулю. Запись MX 10 . - не Null MX. По RFC приоритет должен быть строго 0. Некоторые серверы обработают и ненулевой приоритет, но полагаться на это нельзя.
  • Забыли про SPF и DMARC. Null MX закрывает входящую почту. Но исходящую (поддельную) он не блокирует. Без SPF и DMARC домен остаётся уязвимым к спуфингу.
  • Поставили Null MX на домен с активной почтой. Очевидно, но встречается. Перед добавлением Null MX убедитесь, что на домене нет ни одного почтового ящика. Проверьте через dig MX текущее состояние.
  • DNS-панель не принимает точку. Некоторые регистраторы с упрощённым интерфейсом не позволяют ввести . в поле MX. Решение - использовать API (Cloudflare API, Route 53 API) или перейти на DNS-провайдера с полной поддержкой RFC.

Проверка Null MX в bash-скрипте

Если у вас десятки доменов, проверять каждый вручную непрактично. Простой скрипт для массовой проверки:

#!/bin/bash
# check-null-mx.sh — проверка Null MX для списка доменов

DOMAINS="promo.example.com cdn.example.com old.example.com"

for domain in $DOMAINS; do
  mx=$(dig MX "$domain" +short 2>/dev/null)

  if [ -z "$mx" ]; then
    echo "[$domain] ВНИМАНИЕ: нет MX-записей (fallback на A)"
  elif echo "$mx" | grep -q "^0 \.$"; then
    echo "[$domain] OK: Null MX настроен"
  else
    echo "[$domain] ВНИМАНИЕ: есть MX-записи — $mx"
  fi
done
$ bash check-null-mx.sh
[promo.example.com] OK: Null MX настроен
[cdn.example.com] ВНИМАНИЕ: нет MX-записей (fallback на A)
[old.example.com] ВНИМАНИЕ: есть MX-записи — 10 mail.old.example.com.

Два домена из трёх требуют внимания: на одном нет MX-записей (действует fallback), на другом стоят рабочие MX, хотя почта не используется.

Полная защита домена без почты: чеклист

Null MX - часть комплекса мер. Вот полный набор DNS-записей для домена, который не должен ни принимать, ни отправлять электронную почту:

  • MX: 0 . - не принимаем входящую почту
  • SPF: v=spf1 -all - никому не разрешено отправлять от нашего имени
  • DMARC: v=DMARC1; p=reject - отклонять все неаутентифицированные письма
  • DKIM: не публикуйте DKIM-ключи. Отсутствие ключа = невозможность подписать письмо = fail при проверке
  • MTA-STS: не требуется. MTA-STS настраивается для доменов, которые принимают почту и хотят гарантировать TLS

Пример: настройка через Cloudflare API

Если графический интерфейс вашего DNS-провайдера не поддерживает ввод точки в поле MX, используйте API. Пример для Cloudflare:

curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records" \
  -H "Authorization: Bearer {api_token}" \
  -H "Content-Type: application/json" \
  --data '{
    "type": "MX",
    "name": "example.com",
    "content": ".",
    "priority": 0,
    "ttl": 86400
  }'

TTL 86400 (сутки) - разумное значение для записи, которая не меняется. Уменьшает количество DNS-запросов от почтовых серверов, которые проверяют ваш домен.

Итого

Null MX - простой и эффективный инструмент. Одна DNS-запись превращает домен из потенциальной цели для спуфинга в закрытую дверь с табличкой. Настройка занимает минуты. Поддерживается всеми современными почтовыми серверами. В сочетании с SPF -all и DMARC p=reject обеспечивает полную защиту домена, который не участвует в электронной переписке.

Если у вашей компании есть неиспользуемые домены или технические поддомены без почты - проверьте их прямо сейчас. Одна команда dig MX yourdomain.com +short покажет текущее состояние. Если ответ пустой - домен уязвим. Пять минут на настройку Null MX, SPF и DMARC закрывают эту уязвимость навсегда.

Проверьте свои домены

Null MX защищает домены, которые не принимают почту. А что насчёт доменов, которые принимают? Если в вашей email-базе есть адреса на доменах с Null MX, каждая отправка на них - зря потраченный ресурс и удар по bounce rate.

Загрузите список в uChecker - сервис проверяет MX-записи, обнаруживает Null MX, выполняет SMTP-валидацию и AI-скоринг. За минуты вы увидите, какие адреса доставляемы, а какие нужно удалить.

null MXRFC 7505домен без почтызащита доменаMX запись