Caratteristiche e Differenza tra protocollo SMTP, POP3 e IMAP

Caratteristiche e Differenza tra protocollo SMTP, POP3 e IMAP

In informatica, la posta elettronica per la spedizione dei messaggi si affida al protocollo SMTP. Anche l’agente dell’utente lato mittente, il quale non può comunicare direttamente con il MTA del destinatario, utilizza SMTP per trasferire i suoi messaggi al suo MTA. L’agente dell’utente lato destinatario invece non si può affidare a SMTP per recuperare i messaggi di posta, in quanto si tratta di un protocollo di push (letteralmente: spingi).
Per l’accesso e per la ricezione della posta sono stati quindi introdotti due protocolli di tipo pull (letteralmente: estrai): POP e IMAP. Per la posta elettronica basata sul web si adotta il più famoso protocollo HTTP.

Caratteristiche e Differenza tra protocollo SMTP, POP3 e IMAP

Il protocollo SMTP

L’SMTP rappresenta il cuore ed è il protocollo principale dello strato di applicazione della posta elettronica. E’ definito dalla RFC (Request for Comments) 821 che è stata poi sostituita dalla RFC 2821 datata agosto 1982.
Nonostante la sua vasta diffusione, purtroppo la tecnologia su cui si basa SMTP risulta a volte essere datata anche perchè definita nel lontano 1982. Supporta, infatti, solo il formato ASCII a sette bit per il corpo e le intestazioni dei messaggi. Questo poteva non essere un problema negli anni ’80 ma adesso con il progresso raggiunto nella capacità e velocità di trasmissione e la possibilità di inviare messaggi multimediali con file audio, video o immagini questa restrizione diventa un limite. Per poter spedire un messaggio quindi è richiesto che i dati binari multimediali vengano tradotti in formato ASCII per poi essere decodificati in binario sul lato destinatario.

Il compito principale di SMTP riguarda il trasferimento delle e-mail tra i server di posta. Per fare questo si appoggia al servizio trasferimento affidabile dei dati del protocollo di trasporto TCP. Essendo un protocollo che sfrutta l’architettura client-server i server di posta vengono classificati di volta in volta come client SMTP, se inviano messaggi di posta agli altri server, o come server SMTP se li ricevono.

SMTP utilizza quindi il servizio affidabile TCP sulla porta 25 e solitamente effettua una trasmissione diretta fra server di posta mittente e destinatario non appoggiandosi a nessun server di posta intermedio.
La spedizione consiste in tre fasi:

  1. handshaking (stretta di mano): apertura della connessione TCP, fase di presentazione necessaria per sincronizzare i server e prepararsi per il trasferimento del messaggio. In questa fase il client presenta l’indirizzo e-mail del mittente e del destinatario.
  2. trasferimento del messaggio suddiviso a sua volta in:
    1. inizio invio
    2. elenco dei destinatari
    3. invio del messaggio
  3. chiusura: chiusura della connessione TCP. Trattandosi di una connessione persistente la chiusura della connessione avviene solo quando non ci sono più messaggi da spedire. Per ogni messaggio vengono ripetute le fasi di handshacking e trasferimento.

Il protocollo POP

Il protocollo POP (Post Office Protocol, protocollo dell’ufficio postale) rappresenta il protocollo di accesso alla posta più diffuso. Ciò è dovuto alla sua estrema semplicità che però allo stesso tempo ne limita le funzionalità. E’ definito dalla RFC 1939 e la versione a cui è giunto è la 3 e quindi verrà più facilmente trovato come POP3 (Post Office Protocol – versione 3). Per eseguire il processo di scaricamento delle mail viene instaurata una connessione TCP sulla porta 110. Come per SMTP una sessione POP consiste in uno scambio di comandi e informazioni tra il client (MUA del mittente) e il server (MTA del mittente). La sessione passa attraverso tre fasi:

  1. Autorizzazione: dopo l’avvenuta connessione TCP il server presenta il suo messaggio di saluto e richiede al client il nome dell’utente e la password per autorizzare l’utente a scaricare la posta;
  2. Transazione: durante questa fase vengono scaricati i messaggi e l’utente può inviare comandi per gestire i messaggi di posta. Più in dettaglio si possono contrassegnare messaggi per l’eliminazione, rimuovere il contrassegno, ottenere informazioni sulle statistiche della posta, creare cartelle dove spostare i messaggi e fare la ricerca di messaggi;
  3. Aggiornamento: dopo aver inviato il comando quit per concludere la sessione, si passa a questa fase di aggiornamento; vengono eseguiti i comandi di cancellazione precedentemente memorizzati e successivamente la connessione TCP termina.
    Durante le varie fasi il server mantiene le informazioni di stato come i messaggi contrassegnati per l’eliminazione, mentre durante le sessioni POP3 non le conserva e questo rende estremamente semplice l’implementazione di un server POP3.

E’ possibile che su un server POP3 sia impostato un tempo di inattività, trascorso il quale si viene automaticamente disconnessi senza passare nella fase di aggiornamento. Questo significa che la connessione TCP è terminata e gli eventuali comandi di cancellazione impartiti al server non saranno presi in considerazione.

Ci sono due alternative che si prospettano dopo che i messaggi sono stati prelevati:

  1. dopo la copia i messaggi vengono rimossi dal server (download and delete, scarica e cancella);
  2. dopo la copia i messaggi restano sul server (download and keep, scarica e conserva).

Una problematica da non sottovalutare riguarda il fatto che usando questa tecnica se l’utente usa macchine diverse per scaricare la posta, i messaggi verranno sparpagliati su di esse mentre nella usando la tecnica download and keep i messaggi rimangono sul server e quindi l’utente può leggere i messaggi su macchine diverse senza che questi vengono cancellati dopo ogni accesso.

Il protocollo IMAP

Il protocollo IMAP (Internet Mail Access Protocol, protocollo di accesso alla posta Internet) è un protocollo di accesso alla posta che permette di compiere le elaborazioni direttamente sul server remoto centralizzato. In questo modo si può avere a disposizione tutti i messaggi indipendentemente dalla macchina con la quale ci si connette. Al contrario POP3 scarica i messaggi in locale e non permette di creare cartelle remote e anche per questo motivo è stato introdotto il protocollo IMAP come sostituzione del POP3. Presenta infatti una maggiore flessibilità ed un sistema di gestione più esteso e complesso.

E’ definito dalla RFC 2060 e la versione a cui è giunto è la 4 e quindi verrà più facilmente trovato come IMAP4 (Internet Mail Access Protocol – versione 4). E’ più complesso di POP3 ma nello stesso tempo ha più funzionalità. Il server IMAP all’arrivo di ogni messaggio lo associa alla cartella INBOX del destinatario, che poi lo gestirà secondo le sue esigenze. Come POP3 anche IMAP permette agli utenti di creare cartelle e spostare i messaggi ma offre l’ulteriore funzionalità di crearle sul server remoto e quindi anche la ricerca viene effettuata su server remoto. A differenza di POP3, IMAP mantiene le informazioni tra uno sessione e l’altra. Altra caratteristica da non sottovalutare è la possibilità di scaricare solo alcune componenti del messaggio; questo si rivela molto utile soprattutto quando la connessione è a bassa larghezza di banda.

Riassumendo le funzionalità offerte da IMAP sono:

  1. Accesso e gestione dei messaggi di posta direttamente sul server;
  2. Possibilità di creare, cancellare e rinominare mailbox;
  3. Supporto della modalità di lavoro offline per i client e successiva sincronizzazione quando possibile;
  4. Ricerca e selezione dei messaggi in base ad attributi quali testo o contenuto MIME.

Una sessione IMAP consiste in una serie di comandi inviati dal client al server, il quale resta in ascolto sulla porta TCP 143, e terminati da CRLF (Invio). Ogni comando ha un identificatore, cioè un prefisso alfanumerico (Es. A0001) chiamato tag che lo precede, il cui compito è quello di far corrispondere le risposte del server alle rispettive domande del client.

Una sessione IMAP consiste quindi nelle seguenti fasi:

  1. Instaurazione della connessione TCP da parte del client con il server IMAP (in ascolto sulla porta 143);
  2. Risposta del server con il messaggio di benvenuto;
  3. Autenticazione;
  4. Gestione dei messaggi di posta da parte dell’utente attraverso il client;
  5. Fine della connessione al seguito della richiesta da parte client o per scadenza del tempo di timeout;
Precedente Come è strutturato e funziona il ciclo di vita di una Servlet Successivo Caratteristiche e Differenza tra protocollo HTTP e SMTP

Lascia un commento