MTA-STS: forzare TLS su SMTP

Introduzione

MTA-STS (Mail Transfer Agent Strict Transport Security) è uno standard che permette di forzare connessioni TLS cifrate tra mail server SMTP, prevenendo downgrade attack. In questa guida vediamo come configurarlo.

Il problema che risolve

SMTP utilizza tipicamente STARTTLS per cifrare connessioni, ma è opportunistico: se l'handshake fallisce o un'attaccante manipola la negoziazione (downgrade attack), il server cade in chiaro. MTA-STS forza il mail server mittente a usare TLS o rifiutare la consegna.

Componenti necessari

  1. Record DNS TXT sul sottodominio _mta-sts.
  2. Policy HTTPS servita da mta-sts.dominio.it.
  3. Mail server con TLS valido e certificato fidato.

Record DNS

_mta-sts.esempio.it. IN TXT "v=STSv1; id=20250105T120000;"

Il campo id è arbitrario ma deve cambiare ogni volta che modifichi la policy.

Policy HTTPS

Crea un file su https://mta-sts.esempio.it/.well-known/mta-sts.txt:

version: STSv1
mode: enforce
mx: mail.esempio.it
mx: backup.esempio.it
max_age: 604800

Modalità (mode)

  • none: disabilita MTA-STS.
  • testing: i server mittenti rispettano la policy ma inviano email anche in caso di fallimento (con report).
  • enforce: i server mittenti rifiutano la consegna se TLS fallisce.

Esempio step-by-step

1. Configura DNS

_mta-sts.esempio.it. IN TXT "v=STSv1; id=20250105T120000;"
mta-sts.esempio.it. IN A 1.2.3.4

2. Configura web server

Su Nginx:

server {
    listen 443 ssl;
    server_name mta-sts.esempio.it;
    ssl_certificate /etc/letsencrypt/live/mta-sts.esempio.it/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mta-sts.esempio.it/privkey.pem;
    location /.well-known/mta-sts.txt {
        root /var/www/mta-sts;
        default_type text/plain;
    }
}

3. Crea il file policy

version: STSv1
mode: testing
mx: mail.esempio.it
max_age: 86400

4. Inizia in testing

Lascia in testing per qualche settimana, monitora i report (vedi TLS-RPT), poi passa a enforce.

max_age

Tempo di cache della policy in secondi. Valori raccomandati:

  • Testing: 86400 (24 h).
  • Enforce stabile: 604800 (7 gg) o più.

Server che supportano MTA-STS

  • Gmail / Google Workspace.
  • Microsoft 365.
  • Yahoo.
  • Comcast.
  • Apple iCloud.

Best practice

  • Inizia sempre in mode: testing.
  • Verifica i certificati TLS su tutti gli MX.
  • Abilita anche TLS-RPT per ricevere report.
  • Includi tutti i wildcard di MX nel campo mx:.
  • Aggiorna id a ogni modifica della policy.

Errori comuni

  • Certificato TLS scaduto o self-signed sull'MX.
  • Mismatch tra nome MX e CN certificato.
  • File policy non raggiungibile (404).
  • HTTPS senza certificato fidato su mta-sts..

Verifica

Strumenti utili:

Hai bisogno di aiuto?

Se vuoi gestione DNS affidata a G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?