Site icon Mailtrap

Cos’è l’autenticazione SMTP e perché non puoi ignorarla

Come ti sentiresti se chiunque potesse inviare email dal tuo server di posta? Via libera agli spammer – no grazie! Ecco perché Google e altri fornitori di servizi email proteggono i loro server dall’uso non autorizzato. I mittenti devono autenticarsi e dimostrare di avere un account valido. Se non lo fanno, il server respingerà la loro richiesta. Tutto questo è possibile grazie all’autenticazione SMTP, nota anche come SMTP AUTH.

Perché non dovresti usare server SMTP senza autenticazione

Supponiamo che la tua azienda fornisca un indirizzo email ai tuoi dipendenti. Tuttavia, non è necessaria l’autenticazione per connettersi al server di posta. Quindi, non devono inserire un nome utente e una password per inviare un’email. Quali pericoli potrebbe comportare questo?

L’anonimato è la prima cosa da considerare. Chiunque utilizzi il server di posta rimane anonimo poiché non deve effettuare il login con credenziali. Questo non è un grosso problema. Ma hai davvero bisogno di questo tipo di anonimato?

Il problema principale è lo spoofing dell’email. Senza autenticazione SMTP, è possibile falsificare il mittente. Nel migliore dei casi, qualcuno utilizzerà il tuo server di posta per inviare email promozionali non autorizzate. Nel peggiore dei casi, il falsificatore può richiedere informazioni personali al destinatario e usarle per scopi di furto di identità (phishing).

Quindi, come proteggere il server dallo spoofing? In precedenza, abbiamo parlato dell’autenticazione delle email tramite record SPF, DKIM, e DMARC. Oggi, parliamo dei meccanismi di autenticazione per il server.

Cos’è SMTP AUTH e come funziona?

L’autenticazione SMTP, o semplicemente SMTP AUTH, è l’estensione del servizio ESMTP. Richiede che un mittente di email (client) abbia il permesso di utilizzare il server di posta. Quindi, solo gli utenti autorizzati possono inviare messaggi in uscita.

L’autenticazione viene effettuata secondo il meccanismo SASL. Di norma, i server utilizzano i tre meccanismi più comuni: PLAIN, LOGIN e CRAM-MD5. Ci sono anche altre opzioni di cui parleremo più avanti. Ora, diamo un’occhiata all’autenticazione dal punto di vista pratico.

Dopo l’handshake SMTP, il client invia il comando EHLO al server. La risposta è il codice 250. Di solito, è accompagnata da informazioni aggiuntive, inclusi i meccanismi SASL supportati. Ecco come appare la sessione SMTP:

S: 220 smtp.mailtrap.io SMTP ready
C: EHLO client.railsware.com
S: 250-smtp.mailtrap.io Hello client.railsware.com
S: 250 AUTH LOGIN PLAIN CRAM-MD5

Come esempio, useremo Email Sandbox di Mailtrap poiché risponde positivamente alla maggior parte dei comandi dei client e non dovremo preoccuparci di problemi di configurazione. Inoltre, il nostro Email Sandbox impedisce che le email di prova raggiungano i destinatari e li spammino.

Proviamo ad autenticarci tramite il meccanismo SASL LOGIN. Per questo, il client invia il comando AUTH LOGIN. Il server risponde con un codice 334 e richiede un nome utente. Una volta che il client lo fornisce, il server segue con la richiesta della password. Alla fine, il server risponde con 235 - Authentication successful.

S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH LOGIN
S: 334 DYT3jf4sdDR5
C: TXktVXNlcm5hbWU=
S: 334 LIRdf2pekwW3
C: TXktUGFzc3dvcmQ=
S: 235 Authentication successful

DYT3jf4sdDR5 e LIRdf2pekwW3 del server sono i testi codificati in BASE64 per “Username” e “Password”, rispettivamente. TXktVXNlcm5hbWU= e TXktUGFzc3dvcmQ= sono le risposte del client che sono anch’esse codificate in BASE64.

ESMTP ha sostituito POP-before-SMTP

Oggi, tutti i server di posta utilizzano l’autenticazione ESMTP tramite i meccanismi SASL. Questo tipo di SMTP AUTH ha sostituito la ormai superata autenticazione POP-before-SMTP. Quest’ultima, tuttavia, può ancora essere trovata su alcuni vecchi server. L’idea è di autenticare l’utente al servizio POP3 dello stesso server e poi ricollegarlo all’SMTP. Se hai bisogno di sapere come POP3 si differenzia da SMTP, consulta il nostro post dedicato IMAP vs. POP3 vs. SMTP.

Questo metodo di autenticazione non è molto sicuro. Client diversi possono condividere lo stesso indirizzo IP e autenticarsi come un solo utente. Inoltre, il server esegue sia i servizi POP3 che SMTP sullo stesso sistema. L’autenticazione ESMTP ha un vantaggio poiché implementa i meccanismi SASL.

Meccanismi di autenticazione SASL

I meccanismi di autenticazione SMTP consentono al server di verificare se il client SMTP è autorizzato. Differiscono nel livello di sicurezza. Di norma, il server elenca i meccanismi SASL supportati come risposta al comando EHLO. La maggior parte dei server supporta le seguenti opzioni:

S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH PLAIN
S: 334
C: vHRjyADROPsdSDIROu=
S: 235 Authentication successful

In alternativa, il client può inviare le credenziali insieme al comando AUTH PLAIN in una singola riga:

S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH PLAIN vHRjyADROPsdSDIROu=
S: 235 Authentication successful
S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH LOGIN
S: 334 DYT3jf4sdDR5
C: TXktVXNlcm5hbWU=
S: 334 LIRdf2pekwW3
C: TXktUGFzc3dvcmQ=
S: 235 Authentication successful
S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH CRAM-MD5
S: 334 HSU43fnkj47dskmlSH6dsnjn8ndskjnkjnScdDES=
C: adIBUhb7nsddnKsddsfUN8HkjJNJNsdfJIb4LJNKJ=
S: 235 Authentication successful

CRAM-MD5 fornisce un livello di sicurezza superiore rispetto ai meccanismi di autenticazione in testo semplice, PLAIN e LOGIN. Il protocollo utilizza un principio di sfida-risposta. Il server invia una stringa di sfida. Il client decodifica la sfida del server e risponde con un calcolo HMAC (Hash-based Message Authentication Code) utilizzando la password come chiave segreta. Dopodiché, la sfida hashata viene convertita in una stringa di cifre esadecimali minuscole. Inoltre, il client antepone il nome utente e un carattere spazio alla stringa. Il server riceve questa concatenazione codificata in BASE64.

Gli hacker non possono:

Ora, scopriamo altri meccanismi SASL che possono essere utilizzati sui server SMTP:

S: 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
C: AUTH XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlY
XJlciB5YTI5LnZGOWRmdDRxbVNSbGNrQJoZG1semRHRXVZMjl0Q2cBAQ==
S: 235 Accepted
S: 250-AUTH GSSAPI NTLM
C: AUTH NTLM
S: 334 ntlm supported
C: TlRMTVNTUAABAAAAt4II4gAAAAAAAAAAAAAAAAAAAAAFAs4OAAAADw==
S:334 lRMTVNTUAACAAAAFgAWADgAAAA1goriZt7rI6Uq/ccAAAAAAAAAAGwAbABOAAAABQLODgAAAA9FAFgAQwBIAC0AQwBMAEkALQA2ADYAAgAWAEUAWABDAEgALQBDAEwASQAtADYANgABABYARQBYAEMASAAtAEMATABJAC0ANgA2AAQAFgBlAHgAYwBoAC0AYwBsAGkALQA2ADYAAwAWAGUAeABjAGgALQBjAGwAaQAtADYANgAAAAAA
C:TlRMTVNTUAADAAAAGAAYAHwAAAAYABgAlAAAABYAFgBIAAAACAAIAF4AAAAWABYAZgAAABAAEACsAAAANYKI4gUCzg4AAAAPZQB4AGMAaAAtAGMAbABpAC0ANgA2AHQAZQBzAHQARQBYAEMASAAtAEMATABJAC0ANgA2AAZKkK42dvN2AAAAAAAAAAAAAAAAAAAAABvqCZdJZ0NxuuMaNT5PPn5aZ6imuk9cPZkPUjEYNIRezkCGmTwS5G0=
S: 235 Authentication successful

Ecco un esempio:

S: 250-AUTH GSSAPI PLAIN
C: AUTH GSSAPI
S: 334
C: YIICEQYJKoZIhvcSAQICAQBuggIAMIIB/KADAgEFoQMCAQ6iBwMFACAAAACjggETYYIBDzCCAQugAwIBBaENGwtOQURBLktUSC5TRaIjMCGgAwIBAaEaMBgbBHNtdHAbEHNtdHAubmFkYS5rdGguc2Wjgc8wgcygAwIBEKEDAgEJooG/BIG8msq2xygko4Lv0Agu5pW6SEundUbFK5swuopukvx9kTidWULb/Ab490wQbtnKx3lmM3BFvNFvuUyD3zvh9PHggwz7T7eZYSCDaovIL/QZ0ismF3lZejZBSwBhgLDADQuk4nZHbbeoU9Lk+1jzsMJguNh6Ot3G6o8WLqFZoe8pi3NuxzSdjutjg3O9s/fasuSB9T85bq6oIMWGr5HHRNBNUF4x11tK3ytpsVoMNpKng3d4bY8tLgnxxLCmREakgc8wgcygAwIBEKEDAgEBooG/BIG8SPCDQwKGzJfZGg+MgqQquBiGBXA2uy/08gPE19vuTBP7XyL2H4EaVqtl71MeVxExbat/CNAK
3dMXkNqR6VHxZqb+ky8MYMDo452Z1sN6BfIsKcsy2BcYTwFJMtgdn21vTWVHtMPH3wtXPuPFGn3jigjsXiAyytXi1Y4p4Tni+ox5ndlZuqBJGeThVxyZIpCEI+5rWflxDIYVa/8CAcRUPQqoDpQIs5zkwfoPQtTdfRLdph5VxQ79N9PnvnQ=
S: 334 YGwGCSqGSIb3EgECAgIAb10wW6ADAgEFoQMCAQ+iTzBNoAMCARCiRgRE2FBXYUbT0MVIicgLYE/FKy6CcrvfQxZaoxyt05qqxJBL13kqneza/TKe5i0mjsN0Nc90KW/l4rL0eQ76vWMenaE1Lw8=
S: 334
YD8GCSqGSIb3EgECAgIBBAD/////IGqNk7Rz3+kPdzT9oYPRWnQi/ESL0p3EeQ2yNLWArrmdOzxpBwAgAAQEBAQ=
C: Using system username `jas' as authentication identity.
YD8GCSqGSIb3EgECAgIBBAD/////JhNtx+GhzYe54NY92BltbUHD6i02upmatfXUnIGrBR5vT5yuAQAgAGphcwE=
235 OK Authenticated

La connessione SSL è necessaria per i meccanismi di testo non cifrato. Le credenziali non cifrate possono essere inviate senza problemi. Tutti i meccanismi SASL non di testo non richiedono la crittografia SSL/TLS.

Porte di ascolto SMTP AUTH

Codice 535 – Autenticazione fallita e altri errori SMTP AUTH

Il server SMTP può rispondere sia positivamente che negativamente al comando AUTH. I codici di risposta positivi sono:

La risposta negativa più frequente è 535 - Authentication failed. È probabile che tu possa risolvere questo errore se conosci la causa.

Oltre a 535, potresti incorrere in altri errori con il comando AUTH:

Il codice 550 indica che il tuo server di posta richiede l’autenticazione SMTP. È principalmente una risposta al tentativo di inviare un messaggio. Per ulteriori informazioni sui comandi e risposte SMTP, leggi il nostro post dedicato.

Come testare l’autenticazione SMTP

Qualche tempo fa abbiamo scritto un blog sul testing del server SMTP con una sessione Telnet manuale. Ora, utilizziamo il client Telnet per testare l’autenticazione SMTP sul tuo server di posta.

L’autenticazione SMTP è ciò che puoi utilizzare per proteggere il tuo server di posta dallo spoofing e dal phishing. Allo stesso tempo, ci sono molte altre minacce come malware, attacchi DoS e così via. Leggi il nostro post per scoprire come rendere sicuro l’SMTP e proteggerti da tutte le possibili vulnerabilità.

Exit mobile version