Проверка MX и STARTTLS
Письмо на ваш домен идёт через интернет между двумя серверами, и шифрование на этом участке по замыслу необязательно. Эта проверка стучится на каждый ваш входящий сервер и сообщает, что будет предложено отправителю.
Как письмо находит ваш сервер
Когда кто-то пишет на anna@example.com, его почтовый сервер ищет MX-записи example.com. Каждая запись называет сервер и даёт ему число. Сначала пробуется самое маленькое число, остальные запасные. Затем отправляющий сервер открывает соединение на порт 25, и две машины общаются по SMTP, протоколу 1982 года, который передаёт всё обычным читаемым текстом.
Шифрование появилось позже, как переход на защищённый режим внутри того же разговора. Принимающий сервер называет STARTTLS среди своих возможностей, отправитель отвечает тем же словом, и дальше сеанс защищён TLS, той же технологией, на которой работает HTTPS. Если этого слова нет в списке, письмо идёт открытым текстом.
Что проверка делает на порту 25
Для пяти MX-серверов максимум, в порядке приоритета, она находит первый IPv4-адрес и разыгрывает начало доставки:
S: 220 mx1.example.com ESMTP C: EHLO <our server> S: 250-mx1.example.com S: 250-SIZE 52428800 S: 250 STARTTLS C: STARTTLS S: 220 Ready to start TLS (TLS handshake, certificate read) C: QUIT
На этом она и останавливается. Она никогда не передаёт ни отправителя, ни получателя, ни письма. Из рукопожатия она записывает версию TLS, шифр, издателя сертификата и срок его действия, называет ли сертификат MX-хост и ведёт ли его цепочка к доверенному центру сертификации.
После этого она ищет две DNS-записи и один файл: TXT-запись в _mta-sts, политику по адресу https://mta-sts.example.com/.well-known/mta-sts.txt и TXT-запись в _smtp._tls.
Как читать четыре плитки
- Серверы
- Сколько MX-хостов ответили приветствием на соединение. Один молчащий резервный сервер получает предупреждение. Если не отвечает ни один, отправители ставят вашу почту в очередь и через несколько дней возвращают её.
- Шифрование
- «Частично» значит, что хотя бы один доступный сервер не завершил STARTTLS. Это единственная находка здесь, которая делает весь результат красным, хотя почта продолжает приходить.
- Сертификаты
- «Проверить» означает истёкший сертификат, самоподписанный или выданный на другое имя. TLS 1.0 и 1.1 отдельно отмечаются как устаревшие.
- MTA-STS
- Показывает режим из файла политики:
enforce,testingилиnone. Плитка краснеет, если DNS-запись есть, а файл не загружается, в нём нет строки mode или в нём пропущен один из ваших MX-хостов.
Домен без MX или с записью «null MX» 0 . отмечается как не принимающий почту. Для домена, который только обслуживает сайт, это правильная настройка.
Почему почта приходит даже с плохим сертификатом и как это меняет MTA-STS
Обычный STARTTLS оппортунистический. Большинство отправителей шифруют, когда могут, и не проверяют сертификат. Поэтому тот, кто контролирует сетевой путь, может удалить строку STARTTLS из ответа и читать всё. MTA-STS закрывает эту дыру. Вы публикуете по HTTPS список своих MX-хостов и правило, что они обязаны предъявлять действительный сертификат. Gmail и Outlook.com применяют его, когда отправляют вам письма.
Файл политики занимает четыре строки:
version: STSv1 mode: testing mx: mx1.example.com max_age: 604800
Отдавайте его с поддомена mta-sts с действительным HTTPS-сертификатом, затем добавьте две TXT-записи:
_mta-sts.example.com. TXT "v=STSv1; id=20260115" _smtp._tls.example.com. TXT "v=TLSRPTv1; rua=mailto:tls-reports@example.com"
Оставайтесь в testing, пока ежедневные отчёты TLS-RPT не начнут приходить без сбоев, затем переключитесь на enforce и смените значение id, чтобы отправители перечитали политику. На почте у провайдера, например Google Workspace или Microsoft 365, сертификаты MX это забота провайдера. Опубликовать вам нужно только политику.
Проверка работает с одного сервера, по IPv4, к первому адресу каждого MX. Она не проверяет DANE (записи TLSA), доставку по IPv6, спам-фильтрацию и существование конкретного ящика. Почтовый сервер, который ограничивает незнакомых отправителей, может нас отвергнуть и при этом принимать настоящих.
Частые вопросы
Чем STARTTLS отличается от SSL/TLS на порту 465?
Порт 25 между серверами всегда начинается без шифрования и переходит на него командой STARTTLS. Порт 465 зашифрован с первого байта. Почтовые программы используют его, чтобы передать письма своему провайдеру, а между провайдерами он не используется никогда. Порт 587 тоже для почтовых программ и использует STARTTLS.
Шифруется ли почта при передаче по умолчанию?
Обычно да, но ничто этого не гарантирует. Крупные провайдеры сообщают, что намного больше 90% их почты между серверами идёт через TLS. Каждый переход решает сам за себя, и без MTA-STS или DANE отправитель переходит на открытый текст, если шифрование не предложено.
Нужен ли почтовому серверу сертификат от публичного центра сертификации?
Почта приходит и с самоподписанным сертификатом, потому что большинство отправителей его не проверяют. Доверенный сертификат с именем MX-хоста понадобится, как только вы опубликуете MTA-STS в режиме enforce. С Let’s Encrypt это ничего не стоит.
Сколько MX-записей должно быть у домена?
Одной достаточно, если она указывает на провайдера, у которого за этим именем работает несколько машин. Если вы держите свой сервер, две и больше дают запасной путь. Резервный MX со слабой спам-фильтрацией это известный чёрный ход, поэтому держите все MX на одном уровне защиты.
Почему проверка пишет, что сервер недоступен, хотя почта приходит?
Сервер может медленно отвечать (мы прекращаем попытку соединения через 8 секунд), ограничивать незнакомые хосты или иметь только IPv6-адрес. Проверьте имя MX поиском DNS-записей и попробуйте снова через несколько минут.