Шифрование входящей почты можно незаметно отключить
Общие инструкции. Откройте эту статью из отчёта PageCheck, чтобы увидеть её с почтовыми серверами вашего домена и точными шагами для вашего DNS-провайдера.
Что это такое
Почта между серверами обычно шифруется, но только если обе стороны договорятся об этом по пути, а злоумышленник посередине может убрать это предложение: тогда письмо доставляется без шифрования, и никто этого не замечает. MTA-STS — это небольшая публичная политика, которая сообщает отправляющим серверам, что ваши почтовые серверы всегда поддерживают шифрование, поэтому без него доставлять нельзя.
Что не так
У example.com нет политики MTA-STS, поэтому шифрование отправляемой на него почты можно незаметно отключить. Его политика DMARC уже останавливает письма, подделанные от его имени; это следующий шаг.
Как исправить
Начните с режима testing: отправляющие серверы тогда только сообщают о проблемах и по-прежнему доставляют каждое письмо, так что ничего не сломается, пока вы проверяете настройку.
1. Напишите файл политики.
Сохраните это как обычный текстовый файл с именем mta-sts.txt. В нём должен быть указан каждый почтовый сервер (MX) домена:
mta-sts.txt
version: STSv1 mode: testing mx: mail.example.com max_age: 86400
2. Опубликуйте его по собственному адресу.
Файл должен открываться по адресу https://mta-sts.example.com/.well-known/mta-sts.txt через HTTPS, с действительным сертификатом и без какого-либо перенаправления — перенаправление на www или на основной сайт заставляет отправителей игнорировать его.
Если ваш DNS находится в Cloudflare, проще всего — Cloudflare Worker (бесплатно): Workers & Pages → Create → Create Worker, назовите его mta-sts, замените его код кодом ниже и нажмите Deploy. Затем в Settings воркера → Domains & Routes → Add → Custom domain: mta-sts.example.com. Cloudflare создаст для него запись DNS и сертификат.
Cloudflare Worker
export default {
async fetch() {
const policy = [
'version: STSv1',
'mode: testing',
'mx: mail.example.com',
'max_age: 86400',
].join('\r\n') + '\r\n';
return new Response(policy, { headers: { 'content-type': 'text/plain; charset=utf-8' } });
},
};
У вашего хостинга: добавьте поддомен mta-sts.example.com с SSL-сертификатом, создайте в нём папку .well-known и загрузите туда mta-sts.txt.
- Plesk: Websites & Domains → Add Subdomain, затем SSL/TLS Certificates → Let's Encrypt, затем File Manager.
- cPanel: Domains → Create A New Domain, затем SSL/TLS Status → Run AutoSSL, затем File Manager.
3. Объявите политику в DNS.
- Откройте DNS-записи вашего домена там, где управляется его DNS: обычно это регистратор домена, хостинг или Cloudflare.
- Добавьте запись
TXTс именем_mta-stsи значениемv=STSv1; id=1и сохраните.
4. Запросите отчёты.
Отправляющие серверы будут ежедневно присылать по почте отчёт о каждой неудачной зашифрованной доставке. Сначала создайте ящик tls-reports@example.com (или используйте другой адрес, который вы читаете).
- Откройте DNS-записи вашего домена там, где управляется его DNS: обычно это регистратор домена, хостинг или Cloudflare.
- Добавьте запись
TXTс именем_smtp._tlsи значениемv=TLSRPTv1; rua=mailto:tls-reports@example.comи сохраните.
5. Проверьте.
Откройте https://mta-sts.example.com/.well-known/mta-sts.txt: файл должен отображаться как обычный текст. Затем запустите эту проверку снова: она читает файл и сравнивает его строки mx с вашими почтовыми серверами.
6. Примерно через две недели: включите принудительный режим. Когда в отчётах нет неудачных доставок, переключите файл в режим enforce с max_age в одну неделю:
mta-sts.txt
version: STSv1 mode: enforce mx: mail.example.com max_age: 604800
Затем измените TXT-запись _mta-sts на v=STSv1; id=2, чтобы отправители загрузили новый файл. Каждое последующее изменение файла требует нового id, а когда меняются ваши почтовые серверы, сначала обновите строки mx.
Set up MTA-STS (RFC 8461) for the mail domain example.com, starting in testing mode, and TLS-RPT (RFC 8460) reporting. Its MX hosts (look them up first; this is a placeholder): mail.example.com. Steps: 1. Serve this policy at https://mta-sts.example.com/.well-known/mta-sts.txt over HTTPS with a valid certificate for mta-sts.example.com, status 200, Content-Type text/plain, no redirect: version: STSv1 mode: testing mx: mail.example.com max_age: 86400 Use the web host (a subdomain with its own certificate) or a static host. 2. Add the TXT record _mta-sts.example.com = "v=STSv1; id=1". 3. Add the TXT record _smtp._tls.example.com = "v=TLSRPTv1; rua=mailto:tls-reports@example.com" (make sure that mailbox exists). 4. Verify: curl -sv https://mta-sts.example.com/.well-known/mta-sts.txt (200, no redirect, the policy text) and dig TXT _mta-sts.example.com +short. 5. Tell me to come back in two weeks: if the TLS reports show no failures, switch to mode: enforce with max_age: 604800 and change the TXT record to "v=STSv1; id=2". Every mx line must match an MX host exactly or by a one-label wildcard (*.example.com); a missing one makes enforcing senders refuse mail. Resources: - MTA-STS, RFC 8461 (IETF): https://datatracker.ietf.org/doc/html/rfc8461 - TLS-RPT, RFC 8460 (IETF): https://datatracker.ietf.org/doc/html/rfc8460
Тема: example.com – прошу настроить MTA-STS для нашей почты Здравствуйте! Проверка сайта (PageCheck) обнаружила, что у example.com нет политики MTA-STS, поэтому шифрование отправляемой нам почты можно незаметно отключить по пути. Пожалуйста, в таком порядке: 1. Опубликовать политику MTA-STS в режиме testing по адресу https://mta-sts.example.com/.well-known/mta-sts.txt (HTTPS, без перенаправления), указав наши почтовые серверы: mail.example.com. 2. Добавить TXT-запись _mta-sts.example.com со значением «v=STSv1; id=1». 3. Добавить TXT-запись _smtp._tls.example.com со значением «v=TLSRPTv1; rua=mailto:tls-reports@example.com» для отчётов о неудачных доставках. Примерно через две недели без ошибок в отчётах перевести политику в режим enforce. Источники: - MTA-STS, RFC 8461 (IETF): https://datatracker.ietf.org/doc/html/rfc8461 - TLS-RPT, RFC 8460 (IETF): https://datatracker.ietf.org/doc/html/rfc8460 Спасибо!
Проверьте свой сайт, чтобы узнать, есть ли у него эта проблема. Проверить сайт