Przejdź do treści

Szyfrowanie poczty wysyłanej do Ciebie można po cichu wyłączyć

Ostrzeżenie Cała domena Dostarczanie e-maili

Ogólne instrukcje. Otwórz ten artykuł z raportu PageCheck, aby zobaczyć go wypełnionego serwerami pocztowymi Twojej domeny i dokładnymi krokami dla Twojego dostawcy DNS.

Co to jest

Poczta między serwerami jest zwykle szyfrowana, ale tylko wtedy, gdy obie strony uzgodnią to po drodze, a atakujący pośrodku może tę propozycję usunąć: poczta zostaje wtedy dostarczona bez szyfrowania i nikt tego nie zauważa. MTA-STS to krótka publiczna polityka, która mówi serwerom wysyłającym, że Twoje serwery pocztowe zawsze obsługują szyfrowanie, więc nie wolno im dostarczać bez niego.

Co jest nie tak

example.com nie ma polityki MTA-STS, więc szyfrowanie wysyłanej do niej poczty można po cichu wyłączyć. Jej polityka DMARC już zatrzymuje pocztę podszywającą się pod nią; to następny krok.

Jak naprawić

Zacznij w trybie testing: serwery wysyłające tylko zgłaszają problemy i nadal dostarczają każdą wiadomość, więc nic nie może pójść źle, gdy sprawdzasz konfigurację.

1. Napisz plik polityki. Zapisz to jako zwykły plik tekstowy o nazwie mta-sts.txt. Musi wymieniać każdy serwer pocztowy (MX) domeny:

mta-sts.txt

version: STSv1
mode: testing
mx: mail.example.com
max_age: 86400

2. Opublikuj go pod własnym adresem. Plik musi otwierać się pod adresem https://mta-sts.example.com/.well-known/mta-sts.txt przez HTTPS, z ważnym certyfikatem i bez żadnego przekierowania – przekierowanie na www lub na główną stronę sprawia, że nadawcy go ignorują.

Jeśli Twój DNS jest w Cloudflare, najprostszym miejscem jest Cloudflare Worker (bezpłatny): Workers & Pages → Create → Create Worker, nazwij go mta-sts, zastąp jego kod kodem poniżej i kliknij Deploy. Następnie w Settings Workera → Domains & Routes → Add → Custom domain: mta-sts.example.com. Cloudflare tworzy dla niego rekord DNS i certyfikat.

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' } });
  },
};

Na Twoim hostingu: dodaj subdomenę mta-sts.example.com z certyfikatem SSL, utwórz w niej folder o nazwie .well-known i wgraj tam mta-sts.txt.

  • Plesk: Websites & Domains → Add Subdomain, potem SSL/TLS Certificates → Let's Encrypt, potem File Manager.
  • cPanel: Domains → Create A New Domain, potem SSL/TLS Status → Run AutoSSL, potem File Manager.

3. Ogłoś politykę w DNS.

  • Otwórz rekordy DNS swojej domeny tam, gdzie zarządzany jest jej DNS: zwykle u rejestratora domeny, w firmie hostingowej lub w Cloudflare.
  • Dodaj rekord TXT o nazwie _mta-sts i wartości v=STSv1; id=1, a potem zapisz.

4. Poproś o raporty. Serwery wysyłające będą wtedy codziennie przysyłać e-mailem raport o każdym nieudanym szyfrowanym doręczeniu. Najpierw utwórz skrzynkę tls-reports@example.com (lub użyj innego adresu, który czytasz).

  • Otwórz rekordy DNS swojej domeny tam, gdzie zarządzany jest jej DNS: zwykle u rejestratora domeny, w firmie hostingowej lub w Cloudflare.
  • Dodaj rekord TXT o nazwie _smtp._tls i wartości v=TLSRPTv1; rua=mailto:tls-reports@example.com, a potem zapisz.

5. Sprawdź. Otwórz https://mta-sts.example.com/.well-known/mta-sts.txt: powinien pokazać plik jako zwykły tekst. Potem uruchom ten test ponownie: czyta plik i porównuje jego wiersze mx z Twoimi serwerami pocztowymi.

6. Około dwa tygodnie później: wymuś ją. Gdy raporty nie pokazują nieudanych doręczeń, przestaw plik na tryb enforce z max_age wynoszącym tydzień:

mta-sts.txt

version: STSv1
mode: enforce
mx: mail.example.com
max_age: 604800

Potem zmień rekord TXT _mta-sts na v=STSv1; id=2, aby nadawcy pobrali nowy plik. Każda późniejsza zmiana pliku wymaga nowego id, a gdy zmienią się Twoje serwery pocztowe, najpierw zaktualizuj wiersze 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

Sprawdź swoją stronę, aby zobaczyć, czy ma ten problem. Sprawdź stronę