tecnico · risposta con fonti
STARTTLS: comunicazione SMTP sicura con TLS opportunistico
STARTTLS è un'estensione del servizio SMTP che consente di trasformare una connessione non sicura in una sicura tramite TLS. Permette a client e server di negoziare un canale sicuro su un'unica porta, garantendo che il contenuto delle email e le credenziali di autenticazione siano cifrati durante il transito.
Funzionamento
Il processo inizia con un normale handshake SMTP in chiaro. Il server annuncia la funzionalità STARTTLS nella risposta a EHLO. Il client invia quindi il comando STARTTLS. Se il server accetta, entrambe le parti eseguono un handshake TLS per stabilire la cifratura. Una volta attivo il livello sicuro, la sessione prosegue con i normali comandi SMTP, ma tutti i dati successivi sono cifrati.
Perché conta per chi invia
STARTTLS previene le intercettazioni e gli attacchi man-in-the-middle cifrando il percorso di comunicazione tra i server di posta. Senza STARTTLS, il traffico SMTP viaggia in chiaro ed espone il corpo dei messaggi e le credenziali di accesso a chiunque monitori il percorso di rete. La maggior parte dei server riceventi moderni privilegia o richiede connessioni cifrate per accettare la posta.
Aspetti operativi
Un rischio critico è l'attacco di downgrade, in cui un malintenzionato rimuove il comando STARTTLS dalla risposta del server, costringendo il client a inviare la posta in chiaro. Per prevenirlo, gli amministratori possono implementare MTA-STS o configurare il TLS obbligatorio. Gli strumenti gratuiti di SendHQ (https://sendhq.cc/tools) ti aiutano a verificare la configurazione generale del dominio per migliorare la consegna.
Errori di implementazione comuni
Un errore frequente è confondere STARTTLS con il TLS implicito. STARTTLS parte su una porta in chiaro (come la 587) e poi passa alla cifratura, mentre il TLS implicito (porta 465) richiede un handshake sicuro prima dell'invio di qualsiasi comando SMTP. Configurare male la porta o non fornire un certificato SSL valido causa errori di connessione o il ripiego su una trasmissione non sicura.
Esempio concreto
Un client si connette alla porta 587 e invia EHLO. Il server risponde con 250-STARTTLS. Il client invia STARTTLS. Il server risponde 220 Ready to start TLS. Client e server negoziano le chiavi e cifrano la sessione. Il client invia poi AUTH LOGIN per fornire le credenziali in modo sicuro, senza esporle sulla rete.
Le domande dei team
STARTTLS è la stessa cosa di SSL/TLS?
STARTTLS è un comando che avvia una sessione TLS su una connessione in chiaro già esistente, mentre SSL/TLS indica i protocolli di cifratura sottostanti.
Cosa succede se STARTTLS fallisce?
Per impostazione predefinita, la maggior parte dei server usa il TLS opportunistico: se l'handshake fallisce, ripiega sulla trasmissione in chiaro, a meno che non sia configurato esplicitamente il TLS obbligatorio.
Quale porta si usa di solito per STARTTLS?
La porta 587 è la porta di submission standard per STARTTLS, anche se STARTTLS è molto usato anche sulla porta 25 per il relay da server a server.