Проверка MTA-STS

Найдите TXT-запись _mta-sts, получите файл политики по HTTPS и сравните его шаблоны mx с MX-хостами, которые домен публикует на самом деле.

Что такое MTA-STS и что проверяет этот инструмент

SMTP между почтовыми серверами шифруется «по возможности»: если принимающий сервер не предлагает STARTTLS или кто-то на пути вырезает это предложение, письмо уходит открытым текстом. MTA-STS (RFC 8461) позволяет домену сообщить отправляющим серверам: «мои MX-хосты поддерживают TLS с действительным сертификатом; если получить такое соединение не удаётся, не доставляйте». Механизм состоит из двух частей: TXT-записи по имени _mta-sts.<domain>, которая объявляет политику и идентификатор её версии, и самой политики — небольшого текстового файла по адресу https://mta-sts.<domain>/.well-known/mta-sts.txt.

OrbitProbe читает TXT-запись, запрашивает файл политики так, как это обязан делать отправляющий сервер (HTTPS, сертификат проверяется, редиректы не выполняются), разбирает version, mode, mx и max_age, а затем получает MX-записи домена и смотрит, соответствует ли каждый MX-хост одному из шаблонов mx в политике.

Как читать результат

mode: enforce означает, что отправители с поддержкой MTA-STS отказываются доставлять почту на MX-хост, который не прошёл проверку TLS или не указан в политике. mode: testing всё равно доставляет письмо и только сообщает о сбое, это правильный первый шаг. mode: none отзывает политику. max_age — это срок в секундах, на который отправитель может кэшировать политику; когда политика устоялась, обычно указывают неделю или больше, а максимум равен 31557600 (около одного года).

Самая частая реальная ошибка — политика, которая больше не соответствует MX-записям: почту перенесли к новому провайдеру, MX-записи изменили, а в файле политики по-прежнему перечислены старые хосты. В режиме enforce это блокирует доставку от каждого отправителя, который соблюдает MTA-STS. Поэтому инструмент называет каждый MX-хост, не покрытый ни одним шаблоном.

Значение id в TXT-записи — всего лишь метка версии. Отправители заново запрашивают файл политики, когда id меняется, поэтому меняйте его при каждой правке файла.

Чего эта проверка показать не может

Она не подключается к вашим MX-хостам, поэтому не проверяет, действительно ли они предлагают STARTTLS с подходящим сертификатом. Она не знает, какие отправители поддерживают MTA-STS. А запрос, который не удался, показывается как «не удалось проверить», а не как «MTA-STS нет»: тайм-аут не доказывает отсутствия. Используйте MTA-STS вместе с TLS-RPT, чтобы отправители сообщали вам о сбоях до перехода на enforce.

Как пользоваться этим инструментом

  1. Введите домен. Введите или вставьте доменное имя, например example.com. Подойдёт и полный URL: схема, путь и начальное www будут отброшены.
  2. Запустите проверку. Инструмент читает TXT-запись по имени _mta-sts.<domain>, получает файл политики с mta-sts.<domain> по HTTPS и запрашивает MX-записи.
  3. Сравните политику и MX-хосты. Проверьте mode и max_age и убедитесь, что каждый MX-хост подпадает под один из шаблонов mx в политике.

То же самое в командной строке

Та же проверка из терминала. В командах используется example.com: замените его своим именем.

  • TXT-записьdig _mta-sts.example.com TXT +short
  • Файл политикиcurl -s https://mta-sts.example.com/.well-known/mta-sts.txt
  • MX-хосты для сравненияdig example.com MX +short
  • Windowsnslookup -type=TXT _mta-sts.example.com

Частые вопросы

Как проверить, есть ли у домена MTA-STS?

Введите домен выше. Инструмент находит TXT-запись по имени _mta-sts.<domain>, запрашивает https://mta-sts.<domain>/.well-known/mta-sts.txt и показывает и то и другое вместе со всеми найденными проблемами.

Как выглядит TXT-запись MTA-STS?

v=STSv1; id=20260101T000000. Тег v должен стоять первым, а id — это до 32 букв и цифр. Меняйте id каждый раз, когда меняете файл политики.

Что выбрать: testing или enforce?

Начните с testing вместе с записью TLS-RPT, несколько недель читайте отчёты и переходите на enforce, когда в них не останется сбоев для ваших легитимных MX-хостов.

Почему инструмент сообщает, что MX-хост не покрыт?

Имя хоста из вашей MX-записи не соответствует ни одной строке mx в политике. Шаблон с подстановкой, например *.example.com, соответствует ровно одной метке, поэтому он покрывает mx1.example.com, но не a.b.example.com и не сам example.com.

Нужен ли для файла политики особый веб-сервер?

Нужен HTTPS на хосте mta-sts.<domain> с сертификатом, действительным для этого имени, ответ 200 без редиректов и тип содержимого text/plain. С этим справится любой статический хостинг.