Vai al contenuto principale

MTA-STS: la guida completa per proteggere il trasporto delle tue email

Di CaptainDNS
Pubblicato il 6 febbraio 2026

MTA-STS: proteggere il trasporto email con la crittografia TLS obbligatoria
TL;DR
  • MTA-STS (RFC 8461) forza la crittografia TLS sulle email in entrata e previene gli attacchi di tipo downgrade e man-in-the-middle su SMTP
  • Due componenti da implementare: un record DNS TXT _mta-sts e un file di policy ospitato in HTTPS su mta-sts.captaindns.com/.well-known/mta-sts.txt
  • Tre modalità disponibili: none (disattivato), testing (monitoraggio tramite TLS-RPT) ed enforce (rifiuto se la crittografia TLS fallisce)
  • Inizia sempre con la modalità testing e configura TLS-RPT per ricevere i report di errore prima di passare a enforce

Le tue email transitano ogni giorno tra server SMTP. Ma sai se questi scambi sono realmente crittografati? Di default, SMTP utilizza STARTTLS in modo opportunistico: se il server remoto non supporta la crittografia, il messaggio parte in chiaro. Un attaccante posizionato sulla rete può forzare questo comportamento e intercettare le tue comunicazioni.

MTA-STS (Mail Transfer Agent Strict Transport Security) risolve questo problema. Definito nella RFC 8461, questo standard consente a un dominio di dichiarare pubblicamente che richiede la crittografia TLS per ricevere email. I server mittenti che rispettano MTA-STS rifiuteranno di inviare un messaggio se la connessione TLS fallisce.

Questa guida ti spiega come funziona MTA-STS, quali sono i suoi componenti, come implementarlo passo dopo passo e perché è diventato un complemento indispensabile a DMARC, SPF e DKIM nello stack di sicurezza email.

Cos'è MTA-STS? (RFC 8461)

MTA-STS, Mail Transfer Agent Strict Transport Security, è un meccanismo che consente al proprietario di un dominio di pubblicare una policy di sicurezza del trasporto per i propri server di ricezione email (MX). Questa policy indica ai server mittenti che devono:

  1. Negoziare una connessione TLS valida prima di inviare un'email
  2. Verificare il certificato del server destinatario (hostname, catena di fiducia, scadenza)
  3. Rifiutare l'invio se la crittografia TLS fallisce (in modalità enforce)

Perché STARTTLS non basta?

STARTTLS è il meccanismo standard per crittografare le connessioni SMTP. Ma soffre di due falle fondamentali:

  • Attacco downgrade: un attaccante può rimuovere il comando STARTTLS dalla risposta del server, forzando l'invio in chiaro. Il server mittente non sa che la crittografia era disponibile.
  • Nessuna validazione del certificato: anche se STARTTLS viene negoziato, SMTP non verifica l'identità del server destinatario di default. Un server falso con un certificato auto-firmato può intercettare i messaggi.

MTA-STS corregge entrambi i problemi: la policy, recuperata via HTTPS (canale separato e autenticato), impone la crittografia TLS e la validazione del certificato.

Schema del funzionamento di MTA-STS: il server mittente verifica la policy prima di inviare

I due componenti di MTA-STS

MTA-STS si basa su due elementi che funzionano insieme.

Il record DNS TXT _mta-sts

Un record TXT pubblicato nella tua zona DNS su _mta-sts.captaindns.com:

_mta-sts.captaindns.com. 300 IN TXT "v=STSv1; id=20260205120000"
TagObbligatorioDescrizione
vVersione del protocollo, sempre STSv1
idIdentificativo unico della policy, da modificare a ogni aggiornamento

Il campo id serve come segnale di aggiornamento. Quando un server mittente rileva un cambiamento dell'id, riscarica la policy. Utilizza un timestamp (es.: 20260205120000) o un numero incrementale.

Il file di policy mta-sts.txt

Un file di testo ospitato all'URL esatto https://mta-sts.captaindns.com/.well-known/mta-sts.txt:

version: STSv1
mode: testing
mx: mail.captaindns.com
mx: backup.captaindns.com
max_age: 604800
DirettivaObbligatorioDescrizione
versionSempre STSv1
modenone, testing o enforce
mxPattern MX autorizzati (uno per riga, wildcards ammessi come *.captaindns.com)
max_ageDurata della cache in secondi (max 31 557 600 = 1 anno)

Hosting HTTPS obbligatorio

Il file di policy deve essere servito tramite HTTPS con un certificato TLS valido sul sottodominio mta-sts. È un elemento fondamentale della sicurezza di MTA-STS: a differenza del DNS (che può essere falsificato senza DNSSEC), HTTPS garantisce l'autenticità della policy tramite la validazione del certificato.

Le 3 modalità MTA-STS: testing, enforce, none

Modalità testing: monitorare senza bloccare

mode: testing

In modalità testing, i server mittenti tentano di negoziare TLS e segnalano gli errori tramite TLS-RPT (RFC 8460), ma consegnano comunque il messaggio se la crittografia fallisce. È la modalità di avvio consigliata.

Modalità enforce: crittografia o rifiuto

mode: enforce

In modalità enforce, i server mittenti rifiutano di consegnare il messaggio se la connessione TLS fallisce o se il certificato non è valido. È la modalità target per una protezione completa.

Modalità none: disattivazione

mode: none

La modalità none indica che MTA-STS è disattivato. Utilizzala per disattivare correttamente una policy esistente (i server mittenti che hanno una policy in cache devono attendere la scadenza del max_age).

Quale valore max_age scegliere?

Fase di deploymentmax_age consigliatoDurata
Inizio (testing)86 4001 giorno
Stabilizzazione604 8007 giorni
Produzione (enforce)2 592 000 a 31 557 60030 giorni a 1 anno

Un max_age breve in fase di test consente di correggere rapidamente gli errori. Una volta in enforce, un max_age lungo riduce la frequenza di riscaricamento e rafforza la protezione contro gli attacchi DNS temporanei.

Implementare MTA-STS passo dopo passo

Passo 1: Verificare i tuoi MX e certificati TLS

Prima di implementare MTA-STS, assicurati che tutti i tuoi server MX dispongano di un certificato TLS valido (TLS 1.2 minimo) con un hostname corrispondente. Un certificato scaduto o mal configurato causerà rifiuti in modalità enforce.

Passo 2: Creare il file di policy

Crea il file mta-sts.txt con i tuoi server MX. Puoi utilizzare il generatore MTA-STS CaptainDNS per crearlo automaticamente:

version: STSv1
mode: testing
mx: mail.captaindns.com
mx: backup.captaindns.com
max_age: 86400

Passo 3: Ospitare la policy all'URL .well-known

Pubblica il file all'URL esatto:

https://mta-sts.captaindns.com/.well-known/mta-sts.txt

Il sottodominio mta-sts deve risolvere verso un server web HTTPS con un certificato valido. Opzioni di hosting comuni:

  • Cloudflare Pages / Cloudflare Workers: gratuito, HTTPS automatico
  • GitHub Pages: gratuito, certificato Let's Encrypt
  • Azure Static Web Apps: integrazione Microsoft 365
  • Server web esistente: Apache, Nginx con Let's Encrypt

Il Content-Type della risposta deve essere text/plain.

Passo 4: Pubblicare il record DNS TXT

Aggiungi nella tua zona DNS:

_mta-sts.captaindns.com. 300 IN TXT "v=STSv1; id=20260205120000"

Passo 5: Validare la tua configurazione

Utilizza il verificatore MTA-STS CaptainDNS per controllare che tutto sia in ordine: record DNS, file di policy, certificato TLS, corrispondenza MX.

Checklist di deployment MTA-STS in 5 passi

MTA-STS vs DANE vs STARTTLS

Tre meccanismi coesistono per proteggere il trasporto SMTP. Ecco le loro differenze:

CriterioSolo STARTTLSMTA-STSDANE
ProtezioneCrittografia opportunisticaCrittografia obbligatoriaCrittografia obbligatoria
Validazione del certificatoNoSì (tramite HTTPS/CA)Sì (tramite DNSSEC/TLSA)
Resiste agli attacchi downgradeNo
PrerequisitiNessunoHTTPS sul sottodominio mta-stsDNSSEC sulla zona DNS
Complessità di deploymentBassaMediaElevata
AdozioneUniversaleIn crescita (Google, Microsoft)Limitata (prerequisito DNSSEC)
RFCRFC 3207RFC 8461RFC 7671

In pratica: MTA-STS è la scelta pragmatica. DANE offre una sicurezza teoricamente superiore (nessuna dipendenza dalle CA) ma richiede DNSSEC, ancora poco diffuso. I due approcci sono complementari e possono coesistere.

TLS-RPT: monitorare il tuo deployment MTA-STS

TLS-RPT (SMTP TLS Reporting, RFC 8460) è il compagno indispensabile di MTA-STS. Consente di ricevere report JSON quotidiani che descrivono i successi e gli errori di negoziazione TLS verso il tuo dominio.

Per attivare TLS-RPT, pubblica un record DNS:

_smtp._tls.captaindns.com. 300 IN TXT "v=TLSRPTv1; rua=mailto:tls-reports@captaindns.com"

Questi report sono essenziali in modalità testing: ti permettono di identificare i problemi (certificati scaduti, MX non coperti, server incompatibili con TLS 1.2) prima di passare in modalità enforce.

Piano d'azione consigliato

  1. Verifica i tuoi certificati TLS: tutti i tuoi server MX devono avere un certificato valido con TLS 1.2+
  2. Implementa in modalità testing: crea la policy e il record DNS con mode: testing e max_age: 86400
  3. Attiva TLS-RPT: pubblica il record _smtp._tls per ricevere i report di errore
  4. Monitora per 2-4 settimane: analizza i report TLS-RPT e correggi i problemi identificati
  5. Passa in modalità enforce: una volta che i report sono puliti, cambia mode: enforce e aumenta il max_age

Verifica subito la tua configurazione MTA-STS: Utilizza il nostro verificatore MTA-STS per analizzare il tuo dominio in pochi secondi.


FAQ

Cos'è MTA-STS e perché ne ho bisogno?

MTA-STS (Mail Transfer Agent Strict Transport Security) è uno standard internet (RFC 8461) che consente a un dominio di dichiarare che richiede la crittografia TLS per ricevere email. Senza MTA-STS, le connessioni SMTP utilizzano STARTTLS in modo opportunistico, rendendole vulnerabili agli attacchi downgrade e man-in-the-middle. MTA-STS garantisce che le tue email in entrata siano sempre crittografate in transito.

MTA-STS è obbligatorio per la sicurezza email?

MTA-STS non è ancora obbligatorio dal punto di vista normativo, ma è fortemente consigliato. Google e Microsoft lo hanno attivato sui propri domini e verificano la presenza di MTA-STS sui domini che contattano. Per le organizzazioni soggette a requisiti di conformità (GDPR, PCI-DSS), MTA-STS rafforza la postura di sicurezza del trasporto email.

Qual è la differenza tra le modalità testing ed enforce?

In modalità testing, i server mittenti tentano la connessione TLS e segnalano gli errori tramite TLS-RPT, ma consegnano comunque il messaggio. In modalità enforce, i server rifiutano di consegnare il messaggio se il TLS fallisce. Inizia sempre con testing per identificare i problemi prima di passare a enforce.

Come si confronta MTA-STS con DANE?

MTA-STS utilizza HTTPS e le autorità di certificazione (CA) per autenticare la policy, mentre DANE utilizza DNSSEC e i record TLSA. DANE offre una sicurezza superiore (nessuna dipendenza dalle CA) ma richiede DNSSEC, ancora poco diffuso. MTA-STS è più semplice da implementare e più ampiamente adottato. I due meccanismi sono complementari.

È necessario configurare anche TLS-RPT con MTA-STS?

Sì, fortemente consigliato. TLS-RPT (RFC 8460) ti invia report quotidiani sui successi e gli errori di negoziazione TLS verso il tuo dominio. Senza TLS-RPT, non hai alcuna visibilità sui problemi del tuo deployment MTA-STS. Pubblica un record _smtp._tls con un indirizzo di ricezione.

Come configurare MTA-STS per Microsoft 365?

Per Microsoft 365, utilizza il pattern MX *.mail.protection.outlook.com nella tua policy MTA-STS. Ospita il file di policy su Azure Static Web Apps, Cloudflare Pages o qualsiasi server HTTPS. Microsoft supporta MTA-STS in invio (verifica la policy dei tuoi destinatari) e in ricezione (puoi pubblicare una policy per il tuo dominio M365).

Come configurare MTA-STS per Google Workspace?

Per Google Workspace, includi i seguenti pattern MX nella tua policy: aspmx.l.google.com, *.google.com e *.googlemail.com. Google verifica attivamente le policy MTA-STS dei domini che contatta e pubblica report TLS-RPT. Ospita il file di policy su un server HTTPS con un certificato valido per il sottodominio mta-sts.

Cosa succede se il file di policy non è accessibile?

Se il file mta-sts.txt non è accessibile (errore HTTP, timeout, certificato non valido), il server mittente non può applicare la policy. In assenza di una policy in cache, torna al comportamento STARTTLS opportunistico standard. Se una policy è in cache (non scaduta secondo il max_age), continua ad applicarsi. Per questo motivo un max_age sufficientemente lungo protegge contro le interruzioni temporanee.

Glossario

  • MTA-STS: Mail Transfer Agent Strict Transport Security. Standard RFC 8461 che impone la crittografia TLS per la ricezione delle email.
  • STARTTLS: Estensione SMTP che consente di passare da una connessione in chiaro a una connessione crittografata TLS. Opportunistica di default.
  • TLS-RPT: SMTP TLS Reporting (RFC 8460). Meccanismo di report sui successi e gli errori di negoziazione TLS.
  • DANE: DNS-based Authentication of Named Entities (RFC 7671). Utilizza DNSSEC e i record TLSA per validare i certificati TLS.
  • Attacco downgrade: Tecnica in cui un attaccante forza una connessione a utilizzare un protocollo meno sicuro (es.: rimuovere STARTTLS per forzare l'invio in chiaro).
  • max_age: Direttiva della policy MTA-STS che indica la durata del caching in secondi.

Guide MTA-STS correlate

  • Configurare MTA-STS per Microsoft 365 e Google Workspace (in arrivo)
  • MTA-STS non funziona? Guida completa alla risoluzione dei problemi (in arrivo)

Fonti

Articoli simili