Posta Elettronica

Posta Elettronica

Il servizio di posta elettronica, assieme al WWW, è sicuramente une dei più utilizzati e tra quelli che hanno più di tutti rivoluzionato il modo di comunicare attraverso Internet. Il servizio di posta elettronica prevede lo scambio di messaggi tra utenti attraverso un sistema di comunicazione che coinvolge i client, che utilizzano appositi software di gestione della posta elettronica, e dei server, solitamente attivi presso fornitori del servizio di posta, sui quali sono presenti dei software per la gestione, la raccolta e lo smistamento della posta. Come ben sappiamo, ogni utente può possedere numerosi indirizzi di posta elettronica, sui quali e dai quali riceve e invia messaggi. È importante notare che l’invio e la relativa consegna al destinatario del messaggio di posta non è garantita.

Ad ogni casella di posta elettronica possono essere associati più indirizzi di posta elettronica, nella ben nota forma nomecasella@nomedominio.estensione, dove di solito nomecasella viene scelto dall’utente (in base alla disponibilità) e nomedominio.estensione è un nome DNS. Il nome della casella di posta, analogamente ai nomi a dominio, può contenere solo lettere, numeri e qualche simbolo.

Architettura del sistema di posta [architettura posta]

Un sistema di posta elettronica è formato da diversi componenti:

  • I client che si scambiano i messaggi, ovvero i MUA (Mail User Agent);
  • I server di posta che gestiscono le seguenti funzioni:
    • immagazzinano i messaggi relativi alle caselle dei loro utenti memorizzandoli nella rispettiva mailbox, o Message Store (MS);
    • ricevono i messaggi in arrivo e spediscono i messaggi in partenza, svolgendo quindi la funzione di MTA: Mail Transfer Agent;
    • I protocolli più utilizzati per l’invio, la ricezione e l’inoltro dei messaggi sono SMTP, POP e IMAP.

Composizione di un messaggio di posta

Un messaggio di posta elettronica è composto dai seguenti elementi:

  • Busta;
  • Intestazione;
  • Corpo del messaggio e allegati;

Busta

Con busta si indicano le informazioni accessorie del messaggio che vengono scambiate tra i server attraverso il protocollo SMTP (quello che sovrintende l’invio dei messaggi), e quindi le principali informazioni sono l’indirizzo del mittente e quello del destinatario

Intestazione

L’intestazione, o header, è costituita da una serie di informazioni di servizio che servono a controllare diversi aspetti relativi all’invio del messaggio di posta. Molte intestazioni vengono definite e/o modificate dall’utente. Le principali sono:

  • Oggetto: una stringa di testa che contiene di solito un sunto circa l’argomento del messaggio;
  • Da: campo di testo che contiene l’indirizzo del mittente;
  • A: campo di testo che contiene l’indirizzo del destinatario. In fase di invio è possibile inviare il messaggio anche a più destinatari contemporaneamente. Esiste ovviamente un limite al numero di destinatari ai quali è possibile inviare un messaggio (così come esiste un limite al numero di messaggio giornalieri) e tale limite è definito a livello di server di posta;
  • CC: in italiano tradotto come “Copia Conoscenza”, è un altro campo di testo dove si inseriscono gli indirizzi di eventuali altri destinatari. La sua funzione quindi è praticamente identica a quella del campo “A”;
  • CCn: in italiano tradotto come “Copia Conoscenza Nascosta”. Il messaggio che viene inviato ai destinatari specificati nei campi “A” e “CC” verrà inviato anche ai destinatari specificati nel campo “CCN”. Tuttavia, i destinatari dei campi “A” e “CC” potranno reciprocamente vedere che sono stati destinatari del messaggio in oggetto, mentre non vedranno a quali altri indirizzi (specificati nel campo “CCN”) è stato inviato il messaggio. Viceversa, i destinatari inseriti in CCN potranno vedere tutti gli indirizzi contenuti in questo campo e anche quelli contenuti nei campi A e CC.
  • Data: questo campo, non modificabile dall’utente, indica la data e l’ora alla quale il messaggio è stato inviato.

Oltre a quelle viste sopra, di solito i client di posta (e i server di ricezione/inoltro) provvedono ad inserire nel messaggio di posta diversi altri campi intestazioni, come ad esempio l’indirizzo IP del mittente, utili ai fini di tenere traccia del traffico di posta o in funzione di sicurezza, per implementare filtri antivirus o antispam. Altro campo “nascosto” solitamente presente nell’intestazione è il Message-ID, che viene applicato dal client usato per comporre ed inviare il messaggio, e in linea teorica permette di identificare univocamente un messaggio.

Corpo del messaggio e allegati

Il corpo del messaggio è composto dai contenuti testuali e visivi che il mittente vuole comunicare al destinatario. Inizialmente (come tutto il Web) i messaggi di posta potevano essere composti solamente da testo non formattato, ma nel corso degli anni sia i client che i server si sono evoluti notevolmente, e oggi è possibile inviare e ricevere messaggi di testo in formato HTML e con numerosi stili e formattazioni del testo, oltre alla possibilità di corredare e arricchire il messaggio di immagini, video e altri elementi multimediali. Oltre ad arricchire il corpo del messaggio con immagini e testo formattato, è possibile inviare altri file sotto forma di allegati, utilizzando la codifica MIME (Multipurpose Internet Mail Extensions) che permette quindi l’utilizzo di caratteri diversi da quelli ASCII e l’aggregazione (come allegati) di diversi messaggi e file tra loro.

I messaggi HTML ai quali siamo abituati, sono fondamentalmente dei messaggi con un file HTML allegato e visualizzato come lo farebbe un browser (o un editor di testi), permettendo quindi di realizzare messaggi esteticamente più gradevoli. Anche per gli allegati è definito, a livello di server, un limite circa la dimensione massima in Megabyte dei file che è possibile allegare. Alcuni clienti di posta, e anche alcune server, impongono delle limitazioni anche ai tipi di file che è possibile scambiare come allegati, per motivi di sicurezza. I file .exe (eseguibili di Windows) infatti di solito sono proibiti dalla quasi totalità dei clienti di posta, in quanto spesso possono nascondere virus o altri programmi malevoli.

MIME – Multipurpose Internet Mail Extensions

Il MIME è uno standard che permette di estendere le funzionalità inerenti il formato di cui sono composti i messaggi di posta, aggiungendo il supporto per l’utilizzo di caratteri diversi da quelli ASCII (che sono gli unici supportato dal protocollo SMTP), come ad esempio la possibilità di utilizzare i caratteri non latini delle lingue orientali, e la possibilità di aggregare diversi messaggi e codificarli in più parti, funzione che ha consentito di utilizzare il concetto di file allegato.

Il MIME ha quindi introdotto importanti funzionalità che hanno reso la Mail uno strumento decisamente migliore e più potente di quanto era stato originariamente progettato, introducendo la possibilità anche di utilizzare delle firme digitali, di utilizzare algoritmi di cifratura e di realizzare messaggi praticamente di qualsiasi lunghezza.

Allo scopo di garantire un’adeguata retrocompatibilità con le definizioni iniziali, date dal protocollo SMTP, i messaggi e-mail in formato MIME all’occorrenza vengono “spezzettati” ed inviati come singoli messaggi STMP standard, in maniera del tutto trasparente per l’utente.

Oltre alla posta elettronica, il formato MIME è oggi impiegati in molteplici protocolli, ai quali offre le stesse estensioni e funzionalità che ha dato alla posta. Ad esempio, i Browser, che utilizzano il protocollo HTTP/HTTPS nelle comunicazioni con il server, si scambiano col server messaggi in formato MIME.

La traduzione del messaggi o del flusso dati in formato MIME avviene in maniera del tutto automatica ad opera dei client e dei server.

Il MIME agisce ovviamente anche a livello di intestazione, inserendo nell’header della mail degli attributi aggiuntivi relativi appunto al tipo di contenuto e alla codifica utilizzata, in modo da permettere l’utilizzo di set di caratteri non ASCII e di lingue non occidentali.

MIME è progettato inoltre per essere uno standard estensibile: le sue definizioni includono metodi atti a definire nuove tipologie di contenuto, in ottica di una possibile espansione futura. Il protocollo è nato con l’obiettivo anche di evitare la necessità di modifiche ai protocolli lato-server esistenti, mantenendo una perfetta retrocompatibilità. Questo obiettivo è stato raggiunto impostando gli attributi MIME come opzionali: è quindi possibile utilizzare il protocollo SMTP per scambiarsi messaggi “classici”, ma all’occorrenza è possibile utilizzare le intestazioni MIME in modo che cliente e server capiscano come effettuare la codifica del messaggio.

I tipi di contenuti attualmente definiti dal MIME sono 7. Cinque sono i tipi elementari, ovvero:

  • Testo;
  • Audio;
  • Immagine;
  • Video;
  • Applicazione;

Ognuno di essi ha a sua volta dei sottotipi, ad esempio le immagini possono essere di tipo image/gif, image/jpg, image/png, etc. il tipo applicazione può essere application/zip o application/exe, etc.

Altri due tipi sono quelli cosiddetti composti, che sono messaggio e multipart, e anche loro hanno dei sottotipi, ad esempio message/rfc822 è usato per rinviare messaggi come allegati, mentre multipart/alternative si utilizza per inviare un testo sia in versione normale che in HTML.

Principali protocolli per la gestione della posta

L’utilizzo del servizio di Posta Elettronica prevede varie fasi (invio, ricezione) e si appoggia su diversi protocolli.

SMTP – Simple Mail Transfer Protocol

SMTP è un protocollo standard per l’invio di e-mail, rilasciato nel 1981 e modificato nel 2008 con l’introduzione del protocollo Extended SMTP, utilizzato attualmente. SMTP, nonostante esistano protocolli proprietari abbastanza diffusi come Microsoft Exchange, è diventato un vero e proprio standard per l’invio dei messaggi di posta, mentre per la ricezione i più usato sono POP e IMAP.

Per impostazione predefinita i client di posta inoltrano i messaggi sulla porta 25 TCP, o più di rado sulla porta 587. Il protocollo SMTP ha una versione sicura, che utilizza la cifratura SSL/TLS o STARTTLS, e che opera sulla porta 465, infatti ormai l’uso delle porte 25 e 587 è deprecata proprio per motivi di sicurezza.

SMTP è un protocollo per la trasmissione dati in formato testuale. Per l’invio del messaggio vengono specificati uno o più destinatari, e dopo aver verificato la loro esistenza, si provvede a trasferire il messaggio. SMTP utilizza il protocollo TCP come protocollo di livello Transport, quindi di tipo connection oriented. Per inviare il messaggio quindi il Client di posta apre una sessione TCP sulla porta 25 (o 465) verso il server di posta. Per associare il server SMTP ad un dominio (DNS) si deve specificare per il dominio il relativo Record MX (ovvero Mail Exchange).

Il protocollo SMTP permette l’invio di testo esclusivamente codificato in ASCII, quindi per superare questa limitazione è stato introdotto lo standard MIME, che permette di estendere il formato dei messaggi inviati mantenendo la retrocompatibilità con il protocollo SMTP originariamente definito. MIME, come abbiamo già visto, supera anche un altro limite di SMTP che è quello relativo alla lunghezza/dimensione massima del messaggio da trasmettere, provvedendo a trasmettere i messaggi “suddivisi” in più parti. SMTP, ricordiamo, permette l’invio dei messaggi presso il server, ma non permette di richiederli: per questo i client di posta utilizzano i protocolli IMAP e POP.

Gestione delle e-mail

Lo scambio di messaggi con il protocollo SMTP funziona come segue:

  • Una mail è inviata dal client di posta (MUA – Mail User Agent) ad un server di posta (MSA – Mail Submission Agent) attraverso la porta 25 (o 465) su protocollo TCP.
  • L’MSA consegna la mail ad un Mail Transfer Agent (MTA). Spesso MSA e MTA sono istanze dello stesso software, ma non sempre.

Il MTA utilizza il protocollo DNS per trovare il record MX dello specifico dominio al quale appartiene la casella di posta (il dominio è quello che si trova dopo il simbolo “@”). Il record MX contiene il nome dell’Host target che gestisce la posta: basandosi sul nome host e su altre info, il MTA sceglie un server e si connette a tale server come client STMP.

Il trasferimento del messaggi può avvenire tramite una singola connessione tra le due MTA o attraverso una serie di connessioni attraverso MTA e server intermedi. Un server SMTP può quindi essere destinatario oppure solo intermediario del messaggio, compiendo azioni di store and forward, oppure può fungere da gateway, quindi trasmettere il messaggio utilizzando anche altri protocolli, oltre a SMTP). Ad ogni passaggio attraverso un MTA intermedio si ha un “passaggio di responsabilità”, quindi un MTA che riceve un messaggio dovrà consegnarlo oppure restituire un messaggio d’errore.

Una volta giunto a destinazione sul server destinatario il messaggio, accettato dal server, viene consegnato ad un MDA (Mail Delivery Agent) che lo salverà nella casella di posta corrispondente (ovvero destinataria) per il successivo recupero e consegna da parte del client del destinatario. Una volta correttamente consegnato al mail server, il messaggio viene quindi memorizzato per poter essere recuperato successivamente tramite un MUA debitamente autenticato. Il messaggio viene recuperato tramite un apposito software, presente sul dispositivo dell’utente, che può essere un cliente Web (tipo Gmail o Hotmail) oppure desktop (tipo Outlook o Thunderbird). Il client di posta del destinatario, per recuperare il messaggio dal server, utilizza un altro protocollo diverso da SMTP, che ricordiamo si usa per l’invio, e che può essere il protocollo POP oppure quello IMAP. Vediamo brevemente le loro caratteristiche:

POP3 (Post Office Protocol 3): il cliente del destinatario si collega al server, la scarica la posta sul dispositivo locale e si disconnette. Solitamente la posta viene contestualmente cancellata dal server, ma esistono alcuni client che permettono di mantenerla (in tutto o in parte) scaricandone una copia. La principale caratteristica di questo protocollo è proprio questa: consente di avere sempre i propri messaggi sul dispositivo locale (risparmiando quindi spazio sul server) e di potervi accedere all’occorrenza anche in assenza di connessione ad Internet. Questo tuttavia è anche un suo limite: se volessimo utilizzare la casella di posta su differenti dispositivi (ad esempio sul PC di casa e su quello dell’ufficio, oltre che sul nostro cellulare) diventa molto difficile sincronizzare la posta, in quanto potrebbe capitare che una mail letta dal PC di casa venga scaricata e cancellata dal server e quindi non sarà visibile nel client degli altri due dispositivi.

IMAP (Internet Message Access Protocol): questo protocollo gestisce in maniera più efficiente sia l’accesso alla casella di posta desiderata che la memorizzazione e sincronizzazione dei messaggi scambiati. La principale differenza con il protocollo POP è proprio questa: un client IMAP si connette al server, LASCIA il messaggio sul server, e ne scarica una copia sul dispositivo locale. Qualsiasi eventuale modifica apportata al messaggio sul dispositivo locale o sul server, si propaga automaticamente (se cancello una mail dal client essa verrà cancellata automaticamente anche dal server, e viceversa). È quindi possibile avere sempre una copia in locale dei propri messaggi ma tenere contestualmente tale copia perfettamente sincronizzata con quella del server. Il principale vantaggio consiste quindi nella possibilità di utilizzare la casella su più dispositivi contemporaneamente e di tenere tutti i messaggi sincronizzati.

Struttura del protocollo SMTP

SMTP è un protocollo connection oriented e text based basato sul protocollo TCP, nel quale un Mail Sender Agent (MSA) invia un messaggio composto da stringhe di testo ad un Mail Submission Agent (MSA), al quale invia una serie di dati (il corpo del messaggio) ed informazioni accessorie (header). Una sessione SMTP consiste quindi nello scambio di comandi generati da un Client SMTP e dalla relative risposte generate dal Server SMTP. Le sequenze di comandi e risposte di una sessione SMTP sono le seguenti:

  • MAIL FROM: definisce il mittente del messaggio che coincide quindi con l’indirizzo di ritorno, detto anche return path, reverse path, bounce address o envelope.
  • RCPT TO: definisce il destinatario del messaggio. Questo comando può essere inviato più volte: una per ogni destinatario del messaggio.
  • DATA: questo comando indica l’inizio della trasmissione del messaggio di testo vero e proprio, così come definito nell’envelope. Consiste quindi nell’header, con le informazioni accessorie, e nel body, che contiene il messaggio vero e proprio da trasmettere. Al comando DATA il server risponde due volte: la prima volta con un ACK che indica la corretta ricezione del messaggio, e la seconda volta per accettare o rifiutare l’intero messaggio.

Oltre alle risposte intermedie al comando DATA, ogni risposta del server può essere positiva o negativa, e si caratterizza per il suo codice. Le risposte negative hanno codici del tipo 5xx (risposta negativa permanente) o 4xx (risposta negativa temporanea). Una risposta negativa a seguito di un rifiuto (ovvero REJETC) rappresenta una risposta negativa permanente, e quindi il client deve inviare un bounce message al server dal quale ha ricevuto il messaggio.

Il Client SMTP iniziale, quello che invia il messaggio, può essere sia un client mail dell’utente, indicato in questo caso come MUA (Mail User Agent), sia un altro server SMTP che quindi in questo caso sarà un server intermediario, identificato come MTA (Mail Transfer Agent). I server SMTP più avanzati mantengono una coda di messaggi in modo da poterli inviare nuovamente all’occorrenza, ad esempio nel caso di un invio con esito negativo di tipo temporaneo.

Il Server SMTP che si occupa della trasmissione, ovvero il MTA, determina qual è il server a cui deve connettersi leggendo il Record MX del DNS del dominio al quale appartiene al casella di posta. Se non esiste nessun record MX, alcuni server controllano il record A. La differenza principale tra MTA e MSA consiste proprio nel fatto che la connessione ad un MSA richiede un’autenticazione SMTP. La suddivisione tra MTA ed MSA comporta diversi benefici:

  • Il MSA, dal momento che interagisce direttamente con l’utente attraverso il MUA, può provvedere a correggere eventuali piccoli errori nel formato del messaggio in modo da consentirne l’invio, come ad esempio data e ora, destinatario mancante, nome di dominio inesistente. Infatti, un MTA che accetta un messaggio non ha modo di effettuare in maniera affidabile e sicura questo genere di verifiche, né le relative modifiche necessarie a garantire la  corretta recapitabilità del messaggio
  • MSA e MTA possono adottare diverse soluzioni contro i messaggi di spam. La maggior parte dei MSA richiedono un’autenticazione tramite e-mail e password, ed in questo modo è possibile rintracciare il mittente del messaggio di spam, permettendo al MSA di avere una sua politica diversa da MTA circa la gestione dello spam.

Il recupero e la consegna al client dei messaggi inviati, come abbiamo già accennato, è compito di altri protocolli.

Figura 41: il protocollo SMTP
Figura 41: il protocollo SMTP

Accesso al server SMTP

Come già detto, un client di posta elettronica che deve inviare un messaggio tramite un server SMTP ha la necessità di conoscere l’indirizzo IP del server SMTP di partenza: tale indirizzo viene reperito dai record MX del DNS del dominio della casella. Un server SMTP può essere utilizzato da molteplici client e quindi è necessario prevedere delle politiche di accesso implementando un controllo per evitare possibili usi illeciti del servizio, come ad esempio l’invio di messaggi di spam. La soluzione principale è l’autenticazione tramite username (che spesso coincide con l’indirizzo e-mail completo) e password.

Sicurezza nel protocollo SMTP

Una delle principali limitazioni del protocollo SMTP è che non gestisce l’autenticazione del mittente: questa circostanza, oltre al rischio di alimentare lo spam, crea la possibilità di falsificare l’indirizzo del mittente, facendo quindi figurare come mittente un account diverso da quello effettivamente utilizzato, con conseguenti notevoli problemi. Per ovviare a questo problema è stato sviluppata un’estensione del protocollo chiamata SMTP-AUTH che, come visto prima, prevede un’autenticazione al server tramite username e password prima di consentirne l’utilizzo per l’invio di messaggi. Nonostante le misure di sicurezza come l’autenticazione, e l’adozione di sistemi di cifratura di tipo SSL/TLS, lo spam rimane uno dei principali problemi che affliggono il protocollo SMTP e in generale le comunicazioni via posta elettronica.

Tuttavia, al momento, considerando l’enorme diffusione di questo protocollo, la sua revisione radicale o addirittura la sua sostituzione sono ritenute impraticabili.

SMTPS

Come accennato, SMTPS è la versione “sicura” del classico protocollo SMTP. Con SMTPS la trasmissione dei messaggi avviene utilizzando il protocollo di sicurezza SSL/TLS che fornisce un sistema di cifratura in grado di garantire una maggiore sicurezza, considerando che invece con SMTP ordinario i messaggi viaggiano sulla rete completamente in chiaro. Il protocollo SMTPS prevede quindi che a livello Application, sia il client che il server SMTP, comunichino usando il normale protocollo SMTP ma con una connessione cifrata tramite i protocolli crittografici SSL/TLS. Solitamente i messaggi scambiati in SMTPS transitano attraverso la porta 465.

POP3 – Post Office Protocol 3

Il protocollo POP3 è un protocollo di livello Application che permette, previa autenticazione, l’accesso da parte di un client ad un account di posta elettronica presso un server di posta elettronica per scaricare i messaggi e-mail. Il protocollo POP3 di soluti comunica sulla porta 110 TCP. Una volta effettuata l’autenticazione, e ottenuto l’accesso ai messaggi della relativa casella presenti sul server, il protocollo POP3 prevede di scaricare i messaggi sul server, cancellandoli da quest’ultimo, e memorizzandoli sul client che ne ha fatto richiesta. Esistono dei client e dei server che prevedono la possibilità di lasciare una parte o tutti i messaggi anche sul server, ma questa funzionalità è poco usata con POP3, dato che essa è nativamente implementata dal protocollo IMAP. Anche con POP3 è possibile utilizzare gli algoritmi di cifratura SSL/TLS per aumentare la sicurezza ed evitare che i messaggi scaricati, comprese le credenziali d’accesso, viaggino in chiaro su Internet.

Comunicazione POP3

Una comunicazione POP3 avviene tramite protocollo TCP sulla porta 110, quindi è una comunicazione di tipo connection oriented. Dopo aver stabilito la connessione, previa autenticazione, tra il mittente (il client) e il destinatario (il server dove sono memorizzati i messaggi di posta) si apre la sessione POP3.

Aperta la connessione tutti i messaggi inviati dal client sono preceduti da “C:”, mentre tutti i messaggi inviati dal server sono preceduti da “S:”.

IMAP – Internet Message Access Protocol

IMAP è un protocollo di livello Application del tutto simile al POP3: previa autenticazione permette l’accesso da parte di un client ad una casella di posta elettronica gestita da un server per scaricare i messaggi in arrivo.

IMAP è un protocollo connection oriented che lavora sulla porta 143 TCP, oppure sulla porta 993 nel caso di comunicazione cifrata tramite SSL.

La principale differenza è che il protocollo IMAP, a differenza del POP, lascia i messaggi letti sul server e ne crea una copia locale. Questa caratteristica permette di sincronizzare i messaggi tra client e server e di utilizzare la casella di posta su più dispositivi senza correre il rischio di avere dati inconsistenti tra un dispositivo e l’altro.

Principali differenze tra POP3 e IMAP

Persistenza della connessione client-server: POP3 per scaricare i messaggi apre la connessione, scarica i messaggi dal server al cliente, e quindi chiude la connessione. IMAP invece mantiene client e server sempre connessi, ovvero si dice che IMAP “resta in ascolto” sulla porta 143 (o 993) e risponde costantemente alle richieste che arrivano dall’utente.

Memorizzazione dei messaggi: IMAP lascia i messaggi sul server e ne crea una copia in locale sul client del dispositivo. POP3 invece scarica i messaggi in locali cancellandoli dal server (anche se esistono dei client e delle implementazioni che permettono di modificare questo comportamento).

Utilizzo multiutente: con IMAP, grazie alle sue capacità di sincronizzazione avanzate tra client e server, più utenti possono utilizzare la stessa casella di posta, ovvero una casella può essere letta su diversi dispositivi, e tutti messaggi scambiati resteranno perfettamente sincronizzati tra il server e i dispositivi dei vari client che hanno l’accesso alla casella.

Supporto MIME avanzato: ormai la maggior parte dei messaggi viene scambiato nel formato MIME, che permette di estendere notevolmente le funzionalità del protocollo SMTP. Il protocollo IMAP gestisce meglio e con maggiore efficienza di POP3 i messaggi in formato MIME, permettendo di scaricare una singola parte del messaggio o anche una sua sezione, in modo da offrire all’applicazione che ne fa richiesta (e quindi all’utente) un’anteprima.

Sottoscrizione delle cartelle: IMAP permette di creare e gestire delle cartelle e sottocartelle e di sincronizzarle tra client e server. Questo permette un utilizzo più efficiente della casella di posta, utilizzando un sistema di memorizzazione di tipo gerarchico, del tutto analogo a quello del comune filesystem (ad esempio “Esplora Risorse” di Windows). Il protocollo IMAP permette inoltre ai client che lo utilizzano di “sottoscrivere” determinate cartelle tra quelle presenti sul server, in modo da consentire all’utente di visualizzare solo quelle selezionate tra quelle presenti nella gerarchia di cartelle create e presenti sul server. Questo sistema permette una gestione granulare ed efficiente dell’intero spazio di archiviazione della posta, sia online (sul server) che offline.

Ricerche sul server: il protocollo IMAP permette al client di inviare delle query per effettuare delle ricerche tra i messaggi direttamente sul server, senza la necessità per il client di doverli scaricare tutti in locale. POP3 al contrario non offre questa funzionalità, che viene invece totalmente delegata al client.

A fronte di questi vantaggi ormai il protocollo IMAP è molto più utilizzato di quello POP3.