COME FUNZIONA IL PROTOCOLLO SMTP

Simple Mail Transfer Protocol (SMTP) è il protocollo utilizzato per trasmettere messaggi di posta elettronica tra due host.

SMTP utilizza il protocollo di trasporto TCP ed in particolare un SMTP server rimane costantemente in ascolto sulla porta 25. Il server SMTP si occupa poi di trasferire i messaggi nelle caselle di posta (mailbox) dei destinatari, oppure qualora non fosse il diretto responsabile di queste, inoltrarli (operazione di relay) al server che provvederà a farlo. La sintassi dei comandi è case-insensitive, ed è composta da istruzioni seguite da uno o più parametri terminate da un CRLF (Invio).

Il protocollo è descritto nella RFC 821, ma lavora in stretta collaborazione con altri standard come la RFC 822 che descrive la sintassi degli headers della mail, la RFC 1049 che definisce le strutture dati per interpretare correttamente il contenuto delle mail e la RFC 974 che si occupa del routing delle mail tramite DNS.

Lo standard definito dalla RFC 821, aveva diversi limiti riguardanti per esempio le dimensioni dei messaggi oppure la trasmissione di mail non in inglese o diverse dal semplice plain text. Per ovviare a questa restrizione è stato necessario estendere il protocollo tramite la RFC 1425 riguardante le SMTP Service Extensions.

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 (M) ed un server destinatario (D) attraverso una connessione di rete.

Normalmente l'invio del messaggio avviene in due passi (linee nere nella figura):

  1. Il programma di posta elettronica usato dall'utente invia il messaggio al proprio server usando il protocollo SMTP.
  2. Il server trasferisce il messaggio al server del destinatario utilizzando lo stesso protocollo.

È 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).

Analogie con la posta ordinaria
È importante sottolineare alcuni aspetti:

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

Posta ordinaria Posta 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 quelli 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.

Due esempi di email contraffatte
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: presindent@whitehouse.gov
    To: berlusconi@gov.it
    Cc: lfini@arcetri.astro.it
    .....
    .....
   

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 vputin il seguente messaggio, contenente un virus in attachment:

    From: berlusconi@gov.it
    To: vputin@kremlino.it
    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è berlusconi@gov.it) che ha inviato un messaggio con virus. L'utente che corrisponde all'indirizzo berlusconi@gov.it 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.