SMTP relay: a che serve e come funziona?

Tanti utenti utilizzano oggi servizi Web per la gestione della posta elettronica, quelli che un tempo si chiamavano webmail.
Se si utilizza un client email come Outlook, Thunderbird e così via, per ciascun account di posta che si configura va impostato l’indirizzo del server SMTP e altre opzioni che ne definiscono il comportamento e la sicurezza. Il protocollo SMTP (Simple Mail Transfer Protocol) è uno standard che risale ai primi anni ’80 ed è utilizzato per disporre l’invio dei messaggi di posta elettronica. È infatti utilizzato per impostare il server di posta in uscita ed è uno dei parametri che vanno verificati per primi quando le email non partono.

Come per la maggior parte dei processi complessi, è probabilmente più semplice se esaminiamo passo dopo passo l’intero sistema per mostrare come un messaggio di posta elettronica viene inviato, trasportato e ricevuto. 

  1. Il mittente utilizza un computer per accedere al proprio account di posta elettronica e scrivere un messaggio. Oltre al messaggio, devono includere l’indirizzo e-mail del destinatario prima di premere Invia. 
  2. L’e-mail viene prima inviata a SMTP o ai server di posta in uscita. Qui, il server esegue un controllo dei record DNS per tradurre i nomi di dominio negli indirizzi e-mail in indirizzi IP che i server possono utilizzare per instradare l’e-mail. 
  3. Se l’e-mail arriva a un dominio all’interno della stessa rete, il primo server può semplicemente instradare l’e-mail al server IMAP corretto. 
  4. Tuttavia, se la posta è indirizzata a un dominio su un server IMAP in una rete diversa, il server SMTP iniziale si baserà su server SMTP non correlati per instradare la posta. 
  5. Infine, il server della posta in arrivo utilizza un protocollo come IMAP o POP per inviare tutti i messaggi al computer del destinatario. Il destinatario può quindi trovare il messaggio nella posta in arrivo del proprio account. 

Con il comando nslookup -q=mx google.com impartito al prompt dei comandi di Windows o ad un prompt bash di Linux si può leggere l’indirizzo del server di posta ad esempio di Google.

user@hostname:~$ nslookup -q=mx google.com
Server: 127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:
smtp.google.com internet address = 142.250.145.27
smtp.google.com internet address = 142.250.153.27
smtp.google.com internet address = 142.251.31.26
smtp.google.com internet address = 142.251.31.27
smtp.google.com internet address = 173.194.69.26

user@hostname:~$

Protocollo di trasferimento della posta semplice (SMTP)

Il Simple Mail Transfer Protocol è il protocollo di trasferimento di posta elettronica più diffuso. Questo perché è il protocollo standard per qualsiasi server di posta in uscita. 

Quando gli utenti effettuano richieste di posta in uscita, ad esempio premendo invio su un’e-mail, SMTP è il protocollo che per primo gestisce la richiesta. All’invio di un’e-mail, il client di posta apre una connessione con il relativo server SMTP. 

Il server richiede quindi i dati dal client. Tali dati includono:

  • Nome del server SMPT del provider di servizi Internet
  • Indirizzo e-mail del destinatario
  • Indirizzo email del mittente
  • Il contenuto dell’e-mail

Se gli indirizzi e-mail provengono dallo stesso dominio, lo stesso server SMTP può indirizzare la posta direttamente sulla stessa rete al dominio del destinatario. In caso contrario, il server SMTP utilizza il DNS per identificare l’indirizzo IP corretto per il dominio di posta elettronica del destinatario. 

Protocollo di accesso ai messaggi Internet (IMAP)

In breve, IMAP ( Internet Message Access Protocol ) è il protocollo utilizzato dai server di posta in entrata. È un protocollo che gestisce e recupera i messaggi di posta elettronica. Pertanto, può solo ricevere messaggi ma non inviare e-mail. 

Ripensa alla descrizione di SMTP. Questo protocollo consegna le e-mail in uscita tramite i server di posta in uscita. Consegna ai server di posta in arrivo in base al dominio dell’indirizzo e-mail del destinatario. 

Una volta che l’e-mail è arrivata al server del destinatario, spetta a IMAP recuperare le e-mail e consegnarle dai server IMAP alle caselle di posta dei destinatari. 

In effetti, quando accedi per leggere le tue e-mail, IMAP recupera la tua posta dal tuo server di posta e la invia al tuo client. 

Protocollo postale (POP)

Un altro tipo di protocollo del server di posta che si occupa dell’arrivo della posta è il POP, il protocollo dell’ufficio postale . Preleva la posta dai server di posta e la porta ai client. La versione più comune utilizzata è POP3 o Post Office Protocol versione 3.

Potrebbe sembrare che POP sposti la posta elettronica sui server di posta in modo simile a IMAP, ma c’è una grande differenza. POP garantisce che l’e-mail venga eliminata dai server di posta in uscita una volta che è stata consegnata. 

In effetti, POP ti consente di scaricare e-mail dal tuo server di posta su un singolo computer. Quindi elimina l’e-mail sul server. Questo è diverso da come funziona IMAP. Consente al server di posta di sincronizzarsi con un numero di diversi dispositivi informatici e archivia le tue e-mail sui server IMAP. 

PoP vs IMAP

Cos’è un SMTP relay

Con il termine SMTP relay si fa riferimento alla procedura che permette di trasferire un’email dal mittente al destinatario sulla rete Internet.

Quando si invia un’email il server SMTP del provider cui ci si appoggia o quello della propria azienda si collega con il server indicato nel record MX (Mail eXchanger) del dominio del destinatario. A livello di record DNS di ciascun dominio sono indicate le istruzioni per tutti coloro che desiderano inviare email usando il protocollo SMTP.

Si può anche premere Windows+R quindi digitare cmd /c nslookup -q=mx google.com & pause per ottenere lo stesso risultato.

Dietro le quinte c’è qualche passaggio in più ma quanto descritto dà un’idea generale su come funziona un SMTP relay.

Ovviamente se si inviasse un’email a un indirizzo di posta appartenente allo stesso dominio non vi sarebbe alcun relay perché il server SMTP non deve smistare il messaggio di posta inviandolo a un diverso server SMTP.

I server SMTP correttamente configurati sono di tipo smarthost: prendono in carico soltanto le email provenienti da utenti autorizzati all’invio che sono inoltre autenticati.

Viceversa i cosiddetti Open Mail Relay non eseguono l’autenticazione degli utenti che chiedono di inviare email attraverso il server SMTP. Sono quindi spesso utilizzati, una volta individuati dagli spammer, per inviare email indesiderate.

I sistemi configurati come Open Mail Relay vengono rapidamente posti in blacklist e classificati quale fonte di spam: anche le email legittime non verranno quindi più recapitate nelle caselle di posta dei destinatari.

La reputazione di un server di posta può essere verificata con strumenti come MX Toolbox e Sender Score.

Ormai tutti dovrebbero essere consapevoli che il mittente di un’email può essere facilmente falsificabile: tutti i clienti di posta e lo stesso comando telnet da riga di comando permettono di dialogare con un server SMTP specificando un indirizzo email a proprio piacimento come mittente (email spoofing).

Ovviamente se un’email è stata spedita da un server o un indirizzo IP che non hanno nulla a che vedere con il mittente indicato nell’email è immediato concludere che si tratta di un attacco o di un tentativo di phishing. (Da Wikipedia: Il phishing è un tipo di truffa effettuata su Internet attraverso la quale un malintenzionato cerca di ingannare la vittima convincendola a fornire informazioni personali, dati finanziari o codici di accesso, fingendosi un ente affidabile in una comunicazione digitale.)

Di solito i sistemi antispam si accorgono della “trappola”, si rifiutano di consegnare l’email oppure la salvano temporaneamente nella casella della posta indesiderata.

A dimostrazione di quanto sia delicato gestire SMTP relay, ad aprile 2022 Avanan ha scoperto che i server di Google sono utilizzati dagli spammer per rendere più credibili le loro email.

All’interno di Gmail qualsiasi utente del servizio di posta Google può usarlo per presentarsi a terzi come un altro utente Gmail: non solo privati, quindi, dotati di account gratuiti @gmail.com ma anche professionisti e aziende che si servono di Google Workspace e di domini personalizzati.

L’aggressione funziona se il dominio che l’attaccante imposta come mittente nel campo “Da:” ha il sistema di validazione dei messaggi di posta elettronica DMARC (Domain-based Message Authentication, Reporting & Conformance) impostato su none. Questa impostazione è molto comune anche tra le aziende di più grandi dimensioni.

Attenzione, quindi, perché se gli aggressori hanno ormai gioco non facile nell’utilizzo di Open Mail Relay, ci possono essere situazioni come quella descritta dai tecnici di Avanan che agli occhi del destinatario possono contribuire a legittimare il contenuto di un’email che in realtà è assolutamente malevola.

Record SPF, DKIM e DMARC impostati a livello di DNS aiutano molto nella lotta contro le email di spam veicolate attraverso server SMTP.

Come testare un Server SMTP con Telnet

Programmi di posta elettronica utilizzano il simple mail transfer protocol (SMTP) per inviare i messaggi al server di posta elettronica. Perché questo protocollo è basato su testo, è semplice testare un server SMTP utilizzando un programma telnet. Durante l’invio del messaggio, il client e il server “chat” avanti e indietro, con il client di invio dei dati del messaggio e il server risponde come si accetta ogni sezione. Per testare un server SMTP, è necessario utilizzare un client telnet per svolgere il ruolo del programma di posta elettronica.

Istruzioni

  1. Scaricare il programma gratuito software PuTTY, preferibilmente su desktop del tuo computer, utilizzando il link nella sezione risorse. Mastice non ha un processo di installazione tradizionale. Invece, si scarica l’applicazione reale direttamente sul tuo computer. Prendere nota di dove si Scarica il file putty.exe.
  2. Avviare PuTTY sul tuo computer facendo doppio clic il file di putty.exe. Immettere il nome di dominio o l’indirizzo Internet protocol (IP) del server SMTP nel “nome Host (o indirizzo IP)” e quindi immettere “25” nel campo “Porta”. Fare clic su “Raw” sotto “tipo di connessione:,” e fare clic sul pulsante “Apri”.
  3. Guarda per una finestra nera con una risposta dal server SMTP. Si dovrebbe visualizzare il testo come “un ESMTP. da 220 posta.esempio.com” Questo significa che collegato correttamente al server SMTP e ha risposto con un messaggio di saluto. Se la finestra appare solo brevemente, quindi ricontrolla i dettagli del server SMTP e la connessione a Internet. Se la tua connessione a Internet funziona e i dettagli sono corretti, il server SMTP non è in esecuzione.
  4. Invia un messaggio di prova al server digitando i comandi che seguono questo paragrafo. Utilizzare lettere maiuscole come illustrato nei comandi, ma la maggior parte dei server SMTP accettano solo lettere minuscole. Premere il tasto “Invio” alla fine di ogni istruzione. Attendere una risposta dal server prima di procedere alla riga successiva. Sostituire “youremailaddres@example.com” con il tuo indirizzo email. Questi sono i comandi:
Comandi verso server SMTP via telnet
HELO example.com
MAIL FROM: < youremailaddres@example.com >
RCPT TO: < youremailaddres@example.com >
DATI Da: youremailaddres@example.com
A: youremailaddres@example.com
Oggetto: Test Questo è un test.
.
QUIT

Il server SMTP risponderà ad ogni comando si con una riga che inizia con “250”, fatta eccezione per il comando di dati, che sarà illecito un “354” risposta. Una volta che si immette il comando “QUIT”, il server si disconnette. Se si digita, utilizzare il tasto “Backspace” del computer per cancellare l’errore e digitare nuovamente il comando.

Controlla la tua e-mail per il messaggio di prova. Potrebbe essere necessario controllare nella cartella spam della tua email, perché il messaggio non includerà alcuni elementi. Deve contenere elementi sufficienti, tuttavia, per essere consegnati.

Consigli & Avvertenze

  • PuTTY è un programma di Microsoft Windows. Se si utilizza Linux o Apple Mac OS X, aprire una finestra di terminale e digitare “telnet” seguita dal nome di dominio o indirizzo IP del server SMTP e il numero della porta 25. Un esempio è: telnet mail.example.com 25
  • Più comuni server SMTP richiedono l’autenticazione per inviare messaggi a indirizzi diversi da quelli gestiti direttamente da loro. Per garantire una prova riuscita, connettersi al server di posta elettronica del tuo indirizzo email. Se si utilizza un server di posta elettronica di prova su rete locale (LAN), questo non dovrebbe essere un problema.
Banner per il consenso ai cookie di Real Cookie Banner