Menu

Osservatorio Astrofisico di Arcetri

Il protocollo SMTP

Luca Fini
Settembre 2005

Per valutare il significato dei vari messaggi più o meno contraffatti che si possono ricevere per posta elettronica, occorre comprenderne il meccanismo di trasmissione. La trasmissione dei messaggi e-mail avviene usando un semplice protocollo (SMTP) che funziona come segue:

Lo scambio avviene fra un mittente ed un destinatario utilizzando uno o più server intermedi attraverso una connessione di rete.

smtp

 

Normalmente l'invio del messaggio avviene in tre passi:

  1. Il programma di posta elettronica usato dall'utente invia il messaggio al proprio server1 (M) usando il protocollo SMTP.

  2. Il server trasferisce il messaggio al server del destinatario (D) utilizzando lo stesso protocollo.

  3. Il destinatario preleva il messaggio dal proprio server.

È possibile però che il programma di posta elettronica usato dall'utente effettui direttamente il collegamento con il server del destinatario senza utilizzare il proprio server (linea rossa nella figura).

In entrambi i casi la procedura per il trasferimento del messaggio, considerata dal punto di vista del server destinatario D, è la seguente:

  1. M, sulla base dell'indirizzo e-mail del destinatario, identifica il server D ed apre una connessione. 

  2. D identifica il nodo di rete da cui proviene la connessione (cioè il suo indirizzo IP) ed accetta la connessione. Inoltre memorizza tale identificazione come parte iniziale del messaggio da ricevere. 

  3. M comunica lo username del destinatario. 

  4. D verifica la validità dell'indirizzo ed autorizza la trasmissione del messaggio. 

  5. M invia il messaggio e chiude la trasmissione. 

  6. D memorizza il messaggio in attesa che il reale destinatario si colleghi e ritiri il messaggio utilizzando un apposito protocollo (solitamente POP3 o IMAP).

È importante sottolineare alcuni aspetti:

  • Tutto il contenuto del messaggio memorizzato, esclusa la prima parte generata da D (punto 2), è una semplice copia di quanto inviato da M. Questo include, ad esempio, tutti i campi in testa al messaggio (From:, To:, Date:, Subject:, ecc.)2,3 

  • Gli unici elementi che non possono essere arbitrari (e quindi contraffatti) sono: l'indirizzo IP4 di M e lo username del destinatario usato al punto 3 sopra. Quest'ultimo però è quello dell'utente che effettivamente riceve il messaggio mentre l'indicazione To: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. contenuta nel testo è quella trasmessa da M e quindi può essere totalmente arbitraria. 

  • Il server destinatario non ha modo di sapere se il messaggio proviene da un server ben configurato e correttamente gestito, oppure da un generico PC magari controllato da un programma installato da un virus5.

Per comprendere meglio il significato dei vari elementi è utile usare un'analogia con la posta ordinaria:

 

Posta ordinariaPosta elettronica
Timbro dell'Ufficio Postale Dati di identificazione di M (indirizzo IP)
Indirizzo del destinatario sulla busta Lo username comunicato da M a D come parte del protocollo di comunicazione (punto 3).
Indirizzo del mittente sulla busta Campo From:
Intestazione della lettera Campo To:
Data Campo Date:

 

È evidente che sia per la posta ordinaria che per quella elettronica gli unici dati affidabili sono quelle delle due prime righe della tabella, tutti gli altri possono essere del tutto arbitrari. Niente vieta, ad esempio, che il reale mittente scriva sulla busta un mittente fittizio, oppure che il destinatario citato nell'intestazione della lettera contenuta in una busta sia diverso da quello dell'indirizzo sulla busta stessa.

Qualche esempio

Esempio 1

Supponiamo che il programma M giri sul nodo 212.123.84.82, corrispondente ad una connessione telefonica ad un provider di Taiwan. Questo, seguendo la procedura prevista dal protocollo SMTP, può collegarsi ad hercules.arcetri.astro.it, chiedere di inviare un messaggio all'utente lfini ed inviare il seguente messaggio: 

From: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
To: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
Cc: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
.....
.....


L'utente lfini che riceve il messaggio può avere l'impressione, del tutto falsa, di partecipare ad una comunicazione fra capi di stato.

Esempio 2

Il programma M dal nodo 212.123.84.82 (sempre da Taiwan) si collega a kremlino.ru e richiede di inviare all'utente tovarish il seguente messaggio, contenente un virus in attachment: 

From: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
To: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
Parts/Attachments:
   1 Shown 6 lines Text
   2 OK 8 KB Application
----------------------------------------
   .....
   .....


Il mail server a kremlino.ru è dotato dei ritrovati più moderni, incluso un segnalatore di virus, quindi neutralizza il virus contenuto nell'attachment ed avverte il presunto mittente (cioè Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.) che ha inviato un messaggio con virus. L'utente che corrisponde all'indirizzo Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. riceve quindi una segnalazione di virus pur essendo (in questo particolare caso) totalmente ignaro e non responsabile.

Gran parte dei server SMTP esistenti per segnalare errori (o virus) inviano messaggi all'indirizzo estratto dal campo From: del messaggio errato. Con l'aumentare delle contraffazioni si dovrà probabilmente rinunciare a segnalare errori in questo modo.


Nota 1: Questo corrisponde, nella configurazione dei programmi di posta elettronica, al "server SMTP".

Nota 2: Tutta la parte iniziale del messaggio (detta header) è costituita da informazioni "di servizio" che solitamente vengono inserite automaticamente dal browser o dai server SMTP che gestiscono la trasmissione del messaggio. Maggiori dettagli possono essere trovati in uno specifico documento.

Nota 3: Naturalmente quando i messaggi vengono inviati da programmi di posta elettronica, queste informazioni sono utili e possono essere usate, ad esempio, per ordinare i messaggi ricevuti, suddividerli per mittente, ecc. Ma non fanno parte del protocollo e non sono in alcun modo necessarie per la corretta trasmissione del messaggio.

Nota 4: Dato che i due programmi devono comunicare fra loro, l'indirizzo IP del mittente non può essere falsificato, altrimenti M non potrebbe ricevere le risposte di D. Questo dato però non consente di risalire facilmente ad un responsabile umano in quanto l'indirizzo IP identifica il nodo di rete dal quale proviene la richiesta di collegamento, ma non l'utente che invia il messaggio e non c'è nessun modo automatico che consenta di derivare un indirizzo e-mail efficace dal solo indirizzo IP. Fra l'altro in molti casi i numeri IP vengono assegnati dinamicamente dai provider per la sola durata di un collegamento. In definitiva un'identificazione personale è in linea teorica possibile, ma richiede l'incrocio di dati fra vari tipi di registrazioni che i provider sono tenuti a conservare, ma che sono protette per motivi di privacy.

Nota 5: Una delle proposte che sono state fatte e che saranno probabilmente adottate fra breve consiste nell'attivare meccanismi di autenticazione dei server autorizzati ad inviare messaggi di posta elettronica. I programmi che ricevono la posta potrebbero in tal modo respingere messaggi provenienti da nodi non autorizzati.