Vai al contenuto

La crittografia della posta inviata a te può essere disattivata di nascosto

Avviso Intero dominio Recapito delle email

Istruzioni generali. Apri questo articolo dal tuo report PageCheck per vederlo compilato con i server di posta del tuo dominio e i passaggi esatti del tuo provider DNS.

Che cos’è

La posta tra server di solito è cifrata, ma solo se entrambe le parti si accordano lungo il percorso, e un aggressore in mezzo può togliere questa offerta: la posta viene allora consegnata in chiaro e nessuno se ne accorge. MTA-STS è una piccola policy pubblica che dice ai server mittenti che i tuoi server di posta supportano sempre la cifratura, quindi non devono consegnare senza.

Cosa non va

example.com non ha una policy MTA-STS, quindi la cifratura delle e-mail inviate al dominio può essere disattivata di nascosto. La sua policy DMARC blocca già le e-mail falsificate a suo nome; questo è il passo successivo.

Come correggere

Inizia in modalità testing: i server mittenti si limitano a segnalare i problemi e consegnano comunque ogni messaggio, quindi non può andare storto nulla mentre verifichi la configurazione.

1. Scrivi il file di policy. Salvalo come file di testo semplice chiamato mta-sts.txt. Deve elencare ogni server di posta (MX) del dominio:

mta-sts.txt

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

2. Pubblicalo a un indirizzo tutto suo. Il file deve aprirsi a https://mta-sts.example.com/.well-known/mta-sts.txt via HTTPS, con un certificato valido e senza alcun reindirizzamento: un reindirizzamento a www o al sito principale lo fa ignorare ai mittenti.

Se il tuo DNS è su Cloudflare, il posto più semplice è un Cloudflare Worker (gratuito): Workers & Pages → Create → Create Worker, chiamalo mta-sts, sostituisci il suo codice con quello qui sotto e fai Deploy. Poi nelle Settings del Worker → Domains & Routes → Add → Custom domain: mta-sts.example.com. Cloudflare crea il record DNS e il certificato.

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

Sul tuo hosting: aggiungi il sottodominio mta-sts.example.com con un certificato SSL, crea al suo interno una cartella chiamata .well-known e caricaci mta-sts.txt.

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

3. Annuncia la policy nel DNS.

  • Apri i record DNS del tuo dominio dove è gestito il suo DNS: di solito il registrar del dominio, l’hosting o Cloudflare.
  • Aggiungi un record TXT con nome _mta-sts e valore v=STSv1; id=1, poi salva.

4. Chiedi i report. I server mittenti invieranno ogni giorno via e-mail un report di ogni consegna cifrata non riuscita. Crea prima la casella tls-reports@example.com (o usa un altro indirizzo che leggi).

  • Apri i record DNS del tuo dominio dove è gestito il suo DNS: di solito il registrar del dominio, l’hosting o Cloudflare.
  • Aggiungi un record TXT con nome _smtp._tls e valore v=TLSRPTv1; rua=mailto:tls-reports@example.com, poi salva.

5. Verifica. Apri https://mta-sts.example.com/.well-known/mta-sts.txt: dovrebbe mostrare il file come testo semplice. Poi esegui di nuovo questo controllo: legge il file e confronta le sue righe mx con i tuoi server di posta.

6. Circa due settimane dopo: applicala. Quando i report non mostrano consegne non riuscite, passa il file alla modalità enforce con un max_age di una settimana:

mta-sts.txt

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

Poi cambia il record TXT _mta-sts in v=STSv1; id=2, così i mittenti scaricano il nuovo file. Ogni modifica successiva al file richiede un nuovo id e, quando cambiano i tuoi server di posta, aggiorna prima le righe 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

Controlla il tuo sito per sapere se ha questo problema. Controlla un sito