tecnico · risposta con fonti
Autenticazione SMTP: cos'è e come implementarla
L'autenticazione SMTP è un meccanismo di sicurezza che richiede a un client di posta o a un'applicazione di dimostrare la propria identità a un server SMTP prima di poter inviare posta. Evita gli open relay garantendo che solo gli utenti autorizzati possano instradare messaggi attraverso il server, di solito con nome utente e password tramite l'estensione AUTH.
Come funziona
Il processo inizia quando il client si connette al server e invia il comando EHLO. Il server risponde con l'elenco delle estensioni supportate, tra cui AUTH. Il client sceglie quindi un meccanismo di autenticazione, come PLAIN o LOGIN, e trasmette le credenziali. Se il server convalida le credenziali sul proprio database utenti, concede al client il permesso di inviare i comandi MAIL FROM e RCPT TO.
Perché conta per chi invia
Senza autenticazione, un server funziona come open relay e consente a chiunque di inviare posta. Questo porta rapidamente all'inserimento dell'IP in blacklist, perché gli spammer sfruttano la porta aperta. Implementare l'autenticazione SMTP garantisce che solo le applicazioni legittime possano inviare posta: è un requisito fondamentale per mantenere pulita la reputazione del mittente ed evitare che i messaggi vengano rifiutati dai server di posta riceventi.
Note operative ed errori
Un errore comune è inviare le credenziali su connessioni non cifrate. Per evitare il furto delle credenziali, abbina sempre l'autenticazione a STARTTLS o al TLS implicito. Un altro problema frequente è usare metodi di autenticazione obsoleti, non supportati dai provider moderni. Puoi usare gli strumenti gratuiti di SendHQ (https://sendhq.cc/tools) per verificare le configurazioni DNS e di autenticazione.
Esempio concreto di implementazione
In una tipica implementazione Python con smtplib, lo sviluppatore si connette alla porta 587, chiama starttls() per proteggere la connessione e poi invoca login(user, password). Questa sequenza garantisce che l'identità venga verificata su un canale cifrato prima che il server accetti il messaggio per la consegna alla destinazione finale.
Metodi di autenticazione
I metodi più comuni sono PLAIN, che invia la password in un formato quasi in chiaro (Base64), e LOGIN, un metodo legacy usato dai client più vecchi. I sistemi moderni preferiscono spesso OAuth2 per l'autenticazione SMTP, che consente alle applicazioni di usare token al posto di password statiche, riducendo il rischio di esporre le credenziali nei file di configurazione.
Le domande dei team
L'autenticazione SMTP è la stessa cosa di SPF o DKIM?
No. L'autenticazione SMTP verifica il client presso il server durante l'invio. SPF e DKIM verificano il mittente presso il server ricevente dopo che la posta è stata inviata.
Quale porta si usa di solito per l'SMTP autenticato?
La porta 587 è lo standard per la submission della posta con autenticazione e STARTTLS, mentre la porta 465 si usa per il TLS implicito.
Cosa succede se l'autenticazione SMTP fallisce?
Il server restituisce il codice di errore 535 Authentication Failed e rifiuta il messaggio, impedendo che venga messo in coda o consegnato.