IL PROTOCOLLO SMTP
Se l’e-mail è la posta elettronica, l’SMTP è il postino. Senza il protocollo di rete standard del moderno Internet non sarebbe stato possibile inviare documenti di candidatura, video, mp3 etc. Questo perché quando si invia un’e-mail, essa non va direttamente al destinatario, ma passa invece attraverso un complesso processo di comunicazione con numerose istanze prima di arrivare a destinazione. l server SMTP è un server di posta che invia le e-mail da un mittente a uno o più destinatari in Internet e le inoltra in rete secondo le regole del protocollo di rete SMTP. Una funzione importante del server SMTP è quella di evitare lo spam attraverso meccanismi di autenticazione grazie ai quali è possibile inviare e-mail solo agli utenti autorizzati. A questo scopo la maggior parte dei moderni server di posta elettronica supporta l’estensione del protocollo ESMTP con autenticazione SMTP. Come i cosiddetti Relay, i server SMTP rappresentano il collegamento essenziale per la trasmissione e-mail, in cui sono coinvolti diversi server: il server di posta in uscita del mittente, uno o più server di inoltro esterni e il server di posta in entrata del destinatario.
SERVER DI POSTA IN USCITA DEL MITTENTE
Dopo che il mittente ha inviato la sua e-mail, l’applicazione web mail del suo provider o del suo programma di posta (il client SMTP, chiamato anche “Mail User Agent” o abbreviato in MUA) la converte in un header e un body e li carica entrambi sul server di posta in uscita, quindi un server SMTP. Questo server dispone di un cosiddetto “Mail Transfer Agent” (MTA), la base software per l’invio e la ricezione di e-mail. L’MTA controlla le dimensioni della posta e lo spam per poi salvare. Per alleggerire il carico sull’MTA occasionalmente viene preinstallato un “Mail Submission Agent” (MSA), che verifica preliminarmente la validità della posta. L’MTA cerca quindi nel “Domain Name System” (DNS) l’indirizzo IP del server di posta del destinatario.
SERVER DI INOLTRO ESTERNI
Se il dominio del destinatario è collegato allo stesso server di posta del mittente, l’e-mail viene consegnata direttamente. In caso contrario, l’MTA la suddivide in piccoli pacchetti di dati, che vengono inoltrati al server SMTP di destinazione attraverso il percorso più breve e che presenta allo stesso tempo meno traffico. I pacchetti a volte passano attraverso diversi MTA su server SMTP esterni (chiamati in gergo tecnico “Relay”), che garantiscono un inoltro continuo.
SERVER DI POSTA IN ARRIVO DEL DESTINATARIO
All’arrivo al server SMTP di destinazione, i pacchetti di dati vengono riassemblati per formare un’e-mail completa. L’MSA e/o l’MTA controlla ancora una volta la presenza di spam e poi trasferisce l’e-mail all’archivio messaggi del server di posta in arrivo. Da lì, il cosiddetto “Mail Delivery Agent” (MDA) trasmette il messaggio alla casella di posta elettronica del destinatario. Poi altri protocolli di rete IMAP o POP3 scaricano la posta elettronica nel client SMTP del destinatario. Tecnicamente sarebbe anche possibile inviare e-mail direttamente dal client SMTP del mittente al client del destinatario. Tuttavia, l’utilizzo di un server SMTP offre un chiaro vantaggio: se il server di posta in entrata del destinatario è occupato o temporaneamente fuori servizio e l’e-mail non può essere recapitata, il server SMTP responsabile tenta automaticamente di recapitare l’e-mail a intervalli regolari. Ciò avviene fino a quando la consegna non va a buon fine o la posta viene restituita al mittente come non recapitabile.
COME FUNZIONA LA PROCEDURA SMTP?
Comprendere la procedura SMTP significa comprendere l’e-mail. In pratica funziona così:
- Il client SMTP, ovvero il mittente, carica l’e-mail sul server SMTP, ovvero il server di posta in uscita del corrispettivo provider e-mail. Ciò avviene tramite un’applicazione web sul browser oppure tramite un programma di posta elettronica (tecnicamente chiamato “Mail User Agent”, abbreviato MUA) come Windows Live Mail o Mozilla Thunderbird.
- Successivamente il server SMTP contatta il server DNS, il quale ricerca l’indirizzo IP del server SMTP di destinazione (anche noto come “Mail Delivery Agent”, abbreviato in MDA) memorizzato con l’indirizzo e-mail del destinatario.
- Il server SMTP invia l’e-mail tramite uno o più “Mail Transfer Agents” (MTA) al server SMTP di destinazione. Ciascuno di questi processi di inoltro avviene secondo il protocollo SMTP.
- Il server di destinazione SMTP salva l’e-mail temporaneamente nell’archivio messaggi.
- Il destinatario MUA scarica l’e-mail tramite IMAP o POP3.
APPROFONDIMENTO
Una mail è inviata da un client di posta (mail user agent, MUA) ad un server mail (mail submisson agent, MSA), usando SMTP attraverso TCP sulla porta 587. La maggior parte dei provider di posta tuttavia permettono ancora l’invio sulla tradizionale porta 25. L’MSA consegna la mail al mail transfer agent (MTA). Spesso MSA e MTA sono istanze dello stesso software, avviato con opzioni diverse sulla stessa macchina. Oltre che con un classico client, un account di posta in uscita con protocollo SMTP può essere configurato in qualsiasi applicazione software che possa inviare posta elettronica. Il MTA utilizza il DNS per trovare il record MX di uno specifico dominio (la parte dell’indirizzo dopo il carattere @). Il record MX contiene il nome dell’host target. Basandosi sul nome dell’host e su altre informazioni, il MTA sceglie un server e si connette come SMTP client. Il trasferimento di messaggi può avvenire in una singola connessione tra due MTA o attraverso una serie di salti attraverso diversi sistemi intermediari. Un server SMTP può essere destinatario del messaggio o intermediario (compiendo operazioni di store and forward) o gateway (può trasmettere il messaggio utilizzando anche altri protocolli, oltre a SMTP). Ogni salto è un trasferimento formale di responsabilità sul messaggio, per cui ciascun server che riceve il messaggio deve consegnarlo o segnalare un errore. Una volta che il server destinatario accetta il messaggio in arrivo, lo consegna ad un mail delivery agent (MDA), che lo salva in una mailbox per la consegna locale. Una volta consegnato al mail server, il messaggio è memorizzato per poter esser recuperato da un determinato mail client autenticato (MUA). La mail è recuperata attraverso applicazioni sul dispositivo dell’utente, chiamate mail client, usando il protocollo Internet Message Access Protocol (IMAP), che facilita sia l’accesso alle mail sia gestisce le mail immagazzinate, o Post Office Protocol (POP) che tipicamente usa il tradizionale formato mbox per le mail, o un sistema proprietario come per esempio Microsoft Exchange/Outlook o Lotus Notes/Domino. I client Webmail possono utilizzare entrambi i modi ma il protocollo per il recupero solitamente non è un protocollo standard. POP3 e IMAP sono protocolli simili ma con alcune differenze sostanziali: POP3: il client mail si collega al server, scarica la posta in locale, cancella i messaggi scaricati dal server e si disconnette (è possibile comunque impostare alcuni parametri per evitare la cancellazione della mail dal server). Caratteristiche di questo protocollo: possibilità di avere i messaggi sempre salvati in locale quindi non è necessaria una connessione internet (ovviamente necessaria per invio e scaricamento dei nuovi messaggi) e risparmio di spazio sul server. IMAP: il client mail si collega al server, richiede i nuovi messaggi e li presenta all’utente salvandoli sotto forma di file temporanei (analogamente a POP3, è possibile salvare le mail in locale in maniera permanente). Qualsiasi modifica apportata ai messaggi viene riprodotta anche sul server e su qualsiasi altro dispositivo col quale si è effettuato l’accesso. Caratteristiche: posta salvata sul server quindi sempre reperibile da qualsiasi dispositivo tramite autenticazione, possibilità di recuperare la mail anche se un determinato dispositivo sul quale si consultano le mail smette di funzionare, risparmio spazio sul client. SMTP definisce come viene trasmesso il messaggio, non il suo contenuto. Definisce la struttura e i suoi parametri, come l’envelope sender, ma non l’header (ad eccezione delle informazioni di tracciamento) o il corpo del messaggio stesso. STD 10 e RFC 5321 definiscono la struttura di SMTP mentre STD 11 e RFC 5322 definiscono il messaggio (header e body) attraverso un Internet Message Format.
STRUTTURA DEL PROTOCOLLO
SMTP è un protocollo connection oriented, text based, nel quale un mail sender comunica con un mail receiver inviando stringhe di comandi e fornendo le informazioni necessarie attraverso un canale di comunicazione affidabile, tipicamente basato su TCP. Una sessione SMTP consiste nello scambio di comandi generati da un client SMTP e le corrispettive risposte del server SMTP. Una sessione può includere zero o più transazioni SMTP. Una transazione SMTP consiste in tre sequenze di comandi e risposte:
MAIL FROM: comando per definire l’indirizzo di ritorno, chiamato anche return-path, reverse-path, bounce address, mfrom o envelope sender.
RCPT TO: comando per definire il destinatario del messaggio. Questo comando può essere inviato più volte, una per ogni destinatario (gli indirizzi fanno parte della struttura (envelope)).
DATA: comando inviato per segnalare l’inizio del messaggio di testo, il contenuto del messaggio, come definito nell’envelope. Consiste di un header ed un body, separati da una linea vuota. DATA tuttavia è un insieme di comandi ai quali il server risponde due volte: la prima volta come conferma di ricezione del testo (acknowledge), la seconda dopo la sequenza di end-of-data per accettare o rifiutare l’intero messaggio. Oltre alle risposte intermedie al comando DATA, ogni risposta del server può essere positiva (caratterizzata dal codice 2xx) o negativa. Le riposte negative possono essere permanenti (5xx) o temporanee (4xx). Un rifiuto (reject) rappresenta un fallimento permanente e il client dovrebbe inviare un bounce message al server dal quale ha ricevuto il messaggio. Un drop è una risposta positiva, seguita dal messaggio di rifiuto, invece che dal messaggio di avvenuta consegna. L’host iniziale, il client SMTP, può essere sia un client mail dell’utente, indicato con mail user agent (MUA) o fare affidamento su un mail transfer agent (MTA), che di fatto è un server SMTP che si comporta come un client SMTP per la sessione corrente. I server SMTP più avanzati mantengono una coda di messaggi per inviare nuovamente i messaggi che hanno riportato un esito negativo (temporaneo) di consegna. Un server di trasmissione tipicamente determina quale è il server a cui si deve connettere attraverso il record MX (Mail eXchange) del DNS di ciascun dominio. Se non esiste nessun record MX, alcuni server controllano il record A. La differenza principale tra MTA e MSA consiste nel fatto che la connessione ad un MSA richiede un’autenticazione SMTP. La suddivisione tra MTA e MSA comporta diversi benefici: Il MSA, poiché interagisce direttamente con l’utente (attraverso il MUA), può correggere piccoli errori nel formato del messaggio (per esempio, data mancante, destinatario mancante, nome di dominio inesistente etc.). Un MTA che accetta un messaggio non può effettuare in maniera affidabile e sicura queste modifiche a qualsiasi modifica fatta dal MTA raggiunge il mittente del messaggio, dopo che il messaggio è già stato inviato. MSA e MTA possono avere diverse soluzioni per il blocco dello spam. La maggior parte dei MSA richiedono un’autenticazione tramite mail e password e quindi il mittente del messaggio può essere rintracciato. Questo permette al MSA di avere una politica meno stringente sullo spam.
RECUPERO MESSAGGI
SMTP è solamente un protocollo di consegna. Nell’utilizzo più comune, il messaggio è inviato al server mail di destinazione, o al server che si trova al passo successivo. Il messaggio è instradato sulla base del server di destinazione, non sulla base dell’utente al quale deve essere inviato. Altri protocolli come Post Office Protocol (POP) e Internet Message Access Protocol (IMAP) sono specificamente sviluppati per essere utilizzati dall’utente, recuperando i messaggi e gestendo la casella di posta. Per permettere ad un server mail connesso ad intermittenza di recuperare i messaggi da un server remoto, SMTP ha una funzione per inizializzare una coda di processamento messaggi su un server remoto. L’Inizializzazione di una coda di messaggi remota è una caratteristica di SMTP che permette ad un host remoto di iniziare il processamento della coda delle mail su un server, il quale può ricevere messaggi destinati ad esso inviando in comando TURN. Questa caratteristica tuttavia è stata giudicata insicura e fu sostituita (RFC 1985) dal comando ETRN che opera in maniera più sicura utilizzando un metodo di autenticazione basato su Domain Name System Information.
SMTP SERVER
Un client di posta elettronica necessita di conoscere l’indirizzo IP del server SMTP di partenza, che deve essere fornito come parte della sua configurazione (solitamente come nome DNS, campo MX). Al di sotto di questi sistemi, un ISP non permette accesso al server SMTP da parte di utenti al di fuori della rete gestita dall’ISP stesso. Più precisamente, il server potrebbe consentire solamente l’accesso di utenti con un indirizzo IP fornito dall’ISP, che è equivalente a richiedere che entrambi, mittente e destinatario, siano connessi ad internet usando lo stesso ISP. Un utente mobile, tuttavia, potrebbe spesso trovarsi su una rete che non è quella del suo normale ISP e quindi potrebbe non riuscire ad inviare mail perché la configurazione del server SMTP scelto non è più accessibile. Un server SMTP di una organizzazione potrebbe quindi fornire solamente servizi ad utenti sulla stessa rete, bloccando l’accesso alla rete esterna. Alternativamente il server potrebbe effettuare un range check sull’indirizzo IP del client. Questi metodi vennero tipicamente utilizzati da enti e istituzioni come università che forniscono un server SMTP solamente per un uso interno all’organizzazione. Tuttavia molte di queste organizzazioni ora utilizzano un metodo di autenticazione. Quando un utente è mobile, e potrebbe connettersi ad internet attraverso diversi ISP, questo tipo di restrizione di utilizzo è onerosa e la modifica dell’indirizzo del server di uscita è impraticabile. È desiderabile aver la possibilità di utilizzare configurazioni mail client che non hanno bisogno di essere cambiate.
CLIENT AUTENTICATION
I moderni server SMTP solitamente richiedono l’autenticazione dei client attraverso credenziali, prima di permetterne l’accesso, invece di bloccare direttamente l’accesso in base alla posizione, come descritto prima. Questo sistema più flessibile permette agli utenti mobili di avere un server SMTP di outboud fisso. L’autenticazione SMTP, spesso abbreviata con SMTP AUTH, è un’estensione di SMTP per permettere l’accesso attraverso meccanismi di autenticazione. La comunicazione tra mail server solitamente avviene attraverso TCP sulla porta 25, anche se i client di posta elettronica solitamente utilizzano un’altra porta. I servizi mail accettano di solito l’invio delle mail sulle porte: 587 (consegna), come standardizzato nella RFC 6409(precedentemente RFC 2476). 465. Questa porta è stata deprecata dalla RFC 2487, dopo essere stata assegnata al servizio secure SMTP nel 1990. Ciononostante è comunemente usata dai provider mail. La porta 2525 e altre possono essere utilizzate da alcuni provider ma non sono ufficialmente supportate. Molti Internet Service Provider ora bloccano tutte le mail inviate dalla porta 25, come misura anti spam e consentono l’invio solamente dal server mail designato. Il provider così può controllare il traffico in uscita.
COMANDI SMTP
HELO: Inviato da un client per l’autoidentificazione, solitamente con un nome di dominio.
EHLO: Consente al server di identificare il supporto per i comandi ESMTP (Extended Simple Mail Transfer Protocol).
MAIL FROM: Identifica il mittente del messaggio. Utilizzato nella forma MAIL FROM:.
RCPT TO: Identifica i destinatari del messaggio. Utilizzato nella forma RCPT TO:.
TURN: Consente al client e al server di invertire i ruoli e inviare la posta nella direzione opposta senza dovere stabilire una nuova connessione.
ATRN: Il comando ATRN (Authenticated TURN) utilizza, a propria discrezione, uno o più domini come parametro. Il comando ATRN deve essere rifiutato se la sessione non è stata autenticata.
SIZE: Fornisce un meccanismo per mezzo del quale il server SMTP può indicare la dimensione massima supportata per i messaggi. I server compatibili devono fornire delle estensioni della dimensione per indicare la massima dimensione consentita per i messaggi. I client non devono inviare messaggi di dimensione superiore a quella indicata dal server.
ETRN: Un’estensione di SMTP. ETRN viene inviato da un server SMTP per richiedere che un altro server invii gli eventuali messaggi di posta elettronica di cui dispone.
PIPELINING: Consente di inviare un flusso di comandi senza aspettare una risposta dopo ogni comando.
CHUNKING: È un comando ESMTP che sostituisce il comando DATA. Questo comando invia un comando BDAT con un argomento contenente il numero di byte totale del messaggio in modo che l’host SMTP non debba continuamente eseguire la scansione per determinare la fine dei dati. Il server destinatario conta i byte nel messaggio e, quando la dimensione del messaggio corrisponde al valore inviato dal comando BDAT, il server presuppone di avere ricevuto tutti i dati del messaggio.
DATA: Inviato da un client per avviare il trasferimento del contenuto di un messaggio.
DSN: È un comando ESMTP che attiva le notifiche dello stato del recapito.
RSET: Annulla l’intera transazione del messaggio e ripristina il buffer.
VRFY: Verifica che una cassetta postale sia disponibile per il recapito di messaggi. Ad esempio, VRFY ted verifica che sul server locale risieda la cassetta postale di Ted.
HELP: Restituisce l’elenco dei comandi supportati dal servizio SMTP.
QUIT: Termina la sessione.
ESEMPIO DI COMUNICAZIONE SMTP
Di seguito viene riportata una transazione SMTP tra due caselle di posta (Alice e Bob) che si trovano sullo stesso dominio (example.com). Le righe inviate dal client sono precedute da “C:”, mentre quelle inviate dal server da “S:” (queste lettere tuttavia non fanno parte dello scambio di messaggi ma servono solamente da esempio).
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.com
S: 250 smtp.example.com
C: MAIL FROM: <bob@example.com>
S: 250 OK
C: RCPT TO: <alice@example.com>
S: 250 OK
C: DATA
S: 354 End data with .
C: From: “Bob” <bob@example.com>
C: To: “Alice” <alice@example.com>
C: Date: Tue, 15 January 2008 16:02:43 -0500
C: Subject: Messaggio di prova
C:
C: Ciao, questo è un messaggio di prova
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
l client notifica il destinatario della mail attraverso il comando RCPT TO. Nel caso in cui il messaggio non possa essere consegnato, viene restituito un bounce address. In questo caso il messaggio viene inviato ad una casella di posta sullo stesso server (nel caso in cui fosse stato presente anche un Cc, il messaggio sarebbe stato inviato anche alla sua casella). Il comando SMTP corrispondente è RCPT TO. Ogni comando eseguito con successo porta alla generazione di un acknowledge da parte del server con codice 250. L’inizio della trasmissione del testo della mail è identificata dal comando DATA, dopo il quale il testo è trasmesso linea per linea e termina con la sequenza .detta sequenza di end-of-data. Poiché una linea può contenere solamente un punto (.) come parte del testo, il client manda due punti consecutivi ogni volta che una linea inizia con un punto. Analogamente il server sostituisce ogni sequenza di due punti consecutivi con uno solo (questa tecnica è chiamata dot-stuffing). La risposta positiva del server all’end-of-data significa che il server si è preso in carico la consegna del messaggio. Un messaggio può essere duplicato se, in questa fase, avviene un problema di comunicazione, causato per esempio da un calo di corrente. Finché il mittente non riceve il messaggio con codice 250, si suppone che il messaggio non sia stato consegnato. Analogamente dopo che il destinatario ha deciso di accettare il messaggio, il mittente assume che il messaggio sia stato consegnato. Tuttavia, durante questo arco di tempo (tempo che intercorre tra quando il messaggio è stato inviato a quando il client riceve la risposta caratterizzata dal codice 250), entrambi gli agent hanno copie attive di messaggi che tentano di consegnare e questo può causare problemi di messaggi duplicati. Per limitare questo fenomeno solitamente si specifica un tempo di timeout compreso tra 5 e10 minuti. Il comando QUIT termina la sessione. Se la mail ha altri destinatari, il client si connetterà ad un opportuno server SMTP per i successivi destinatari. Le informazioni che il client invia coi comandi HELO e MAIL FROM, sono inserite (non mostrate nel codice di esempio) nella mail come campi header aggiuntivi, dal server destinatario, aggiungendo rispettivamente i campi Received e Return-Path. Alcuni client sono implementati in modo da chiudere la connessione dopo che il messaggio è stato accettato (nell’esempio 250 OK: queued as 12345), quindi le ultime due linee possono essere omesse. Questa soluzione tuttavia può causare un errore nel server durante l’invio della risposta 221.
LA SICUREZZA DEL PROTOCOLLO SMTP
Una delle limitazioni del protocollo SMTP originario è che non gestisce l’autenticazione dei mittenti. Oltre al rischio di spam, esiste la possibilità di inviare e-mail facendo apparire come mittente l’indirizzo corrispondente ad un altro account. Senza accedere all’account di terzi, è possibile stabilire una connessione al mail-server e scrivere un messaggio in codice SMTP contenente i comandi relativi a mittente e destinatario, dare i relativi parametri e il corpo della e-mail. Per ovviare a questi problemi è stata sviluppata un’estensione chiamata SMTP-AUTH. Nonostante questo, lo spam rimane ancor oggi un grave problema della posta elettronica. Tuttavia, non si ritiene praticabile una revisione radicale del protocollo SMTP, per via del gran numero di implementazioni del protocollo attuale (ad esempio, è stato proposto Internet Mail 2000 come protocollo alternativo). Per questo motivo sono stati proposti diversi protocolli ausiliari per assistere le transazioni SMTP. L’Anti-Spam Research Group dell’IETF sta lavorando su varie proposte di autenticazione e-mail centrate sulla flessibilità, leggerezza e scalabilità.
MIME
MIME (Multipurpose Internet Mail Extension) permette di comporre email contenenti caratteri speciali e allegati in formato binario (foto, video, etc). Vengono aggiunti alcuni campi all’header del messaggio per segnalare la presenza di contenuti MIME per non “mandare in crisi” i programmi di posta:
- MIME-version: per la conformità alle specifiche.
- Content-Type: descrive i dati nel corpo del messaggio per essere interpretati dal MUA del destinatario.
- Content-Transfer-Encoding: Tipo di codifica utilizzato.
- Content-ID: per identificare ogni MIME univocamente.
- Content-Description: descrizione testuale dell’oggetto (facoltativo) Viene definita una boundary string: sequenza di caratteri che delimita inizio e fine di una regione.
POST OFFICE PROTOCOL
Il Post Office Protocol (detto anche POP) è un protocollo di livello applicativo di tipo Client-Server che ha il compito di permettere, mediante autenticazione, l’accesso da parte del client ad un account di posta elettronica presente su un host server e scaricare le e-mail dell’account stesso. Il protocollo per inviare posta è invece il protocollo SMTP.
DESCRIZIONE
Il Post Office Protocol (POP3) permette il recupero di e-mail con l’aiuto di un client. A tal fine il client stabilisce una connessione con il server di posta in arrivo, sul quale va installato il software del server POP3 necessario. Le e-mail che si trovano su questo server vengono scaricate e memorizzate sul client del computer. Allo stesso tempo i messaggi elettronici vengono cancellati dal mail server e la connessione interrotta. Potete aprire e modificare il contenuto delle e-mail solo in locale, senza che il client e il server siano collegati. La durata del processo di recupero varia in base alle dimensioni della e-mail e agli allegati. È possibile scaricare i messaggi soltanto da un client POP3. Nel processo di connessione al mail server attraverso protocollo TCP/IP i client POP3 sfruttano la porta 110. Se la connessione è crittografata, si utilizza la porta 995. Se server e client sono connessi, comunicano tramite comandi. I comandi POP3 consistono di tre o quattro caratteri e uno o più parametri. Il server risponde a ogni comando con un segnale di stato positivo (+OK) o negativo (-ERR) e informazioni opzionali. Ogni sessione POP3 è suddivisa in 3 fasi: il primo passo è l’accesso utente, nel quale il client si identifica al mail server con nome utente e password. Segue poi il processo vero e proprio di recupero dei messaggi. Se tutte le e-mail sono state scaricate e il client disconnesso, queste vengono cancellate dal server in un secondo momento. Se durante la fase di recupero si verifica un’interruzione della connessione, tutti i messaggi di posta elettronica rimangono sul server, in modo tale che il client POP3 li possa scaricare nuovamente con la prossima connessione.
INTERNET MESSAGE ACCESS PROTOCOL
L’IMAP (abbreviazione di Internet Message Access Protocol) è un protocollo di rete basato su testo che rende possibile l’accesso a e-mail che si trovano su un mail server. Se configurate il vostro account tramite IMAP, il vostro client instaura una connessione con il server a ogni login, che rimane attiva per tutta la sessione: durante questo periodo avete accesso a singole cartelle ed e-mail, i cui contenuti vengono visualizzati su richiesta. Tutti i messaggi e le cartelle create rimangono memorizzate sul server fin quando non vengono eliminate. Tuttavia potete avere accesso alla vostra posta da qualsiasi luogo. La connessione tra server e client IMAP si instaura attraverso il protocollo TCP/IP sulla porta 143 (con la porta per connessione sicura 993). Il client comunica poi con il server di posta tramite messaggi di testo, ma non ha bisogno di alcuna risposta ai comandi emessi. Affinché possa successivamente registrare la risposta del server, il client include ai suoi comandi un identificatore, che aggiunge le risposte al mail server. Se il loro contenuto è dotato di informazioni, le risposte cominciano con un asterisco. Se prima della risposta c’è il simbolo più, il server aspetta altre informazioni oltre al comando già ricevuto. Inoltre, la risposta informa sul buon esito (OK) o fallimento (NO) nonché errori di sintassi (BAD) dei rispettivi comandi emessi dal client IMAP.
DIFFERENZE TRA IMAP E POP
Un confronto tra i due protocolli mostra come ci siano alcune differenze tra IMAP e POP3: mentre i client che utilizzano l’IMAP stabiliscono una connessione permanente con il mail server, la connessione del client e del server POP3 si instaura solo durante la fase di recupero dei messaggi. Ciò è strettamente collegato con il diverso trattamento nel recupero dei messaggi di posta elettronica. Utilizzando il protocollo POP3 le e-mail scaricate vengono cancellate dal server, al contrario, se usate i servizi del protocollo di rete IMAP, tutti i messaggi rimangono sul server fin quando non vengono cancellati manualmente. Questo è anche il motivo per cui con l’utilizzo del protocollo IMAP più client possono avere accesso alla stessa raccolta dati nello stesso momento. Con il POP3 l’accesso è limitato ad un solo client, in quanto tutte le e-mail vengono sempre scaricate sul computer locale.
IMAP PER PIU’ CLIENT, POP3 PER UNO
Alle differenze evidenziate tra IMAP e POP3 corrispondono anche diverse possibilità di utilizzo: poiché POP3 è limitato solo a un client e tutte le e-mail vengono sempre recuperate completamente, l’utilizzo di questo protocollo di trasmissione conviene, se volete richiamare il vostro account e-mail da un computer locale. Se i messaggi di posta elettronica vengono scaricati una volta, non avete bisogno di altri collegamenti al mail server e potete pertanto leggere e modificare le vostre e-mail anche senza connessione internet. Se al contrario volete accedere con smartphone, tablet o più client alla stessa e-mail, l’IMAP è la soluzione migliore. In particolare, se mentre siete in giro potete sfruttare solo la connessione dati dei dispositivi mobili, è un vantaggio che l’IMAP richiami solo le e-mail desiderate. In questo modo potete aprire i messaggi con contenuti di grandi dimensioni dal PC di casa. Poiché non viene scaricata alcuna versione locale delle e-mail, occorre però in ogni caso una connessione internet esistente. Tramite la funzione per richiamare le e-mail con il protocollo di rete IMAP è anche possibile creare e gestire cartelle, contrassegnare lo stato di elaborazione delle e-mail e archiviare i messaggi inviati. Grazie a queste funzioni aggiuntive e al fatto che le e-mail vengono memorizzate sul server fino alla loro cancellazione, l’IMAP utilizza maggiormente il mail server rispetto al POP3. La scelta tra l’IMAP o il POP3 dovrebbe dipendere sia dall’uso che si intende farne sia dalle risorse a disposizione.
APPROFONDIMENTO AI
Il Simple Mail Transfer Protocol (SMTP) è il protocollo standard per l’invio di email su Internet. Definito per la prima volta nel 1982 con la pubblicazione della RFC 821 (poi aggiornato dalla RFC 5321), è uno dei protocolli fondamentali che supporta l’infrastruttura di comunicazione elettronica.
1. Funzione e Ruolo di SMTP
SMTP è utilizzato principalmente per trasferire messaggi email da un mittente a un server di posta elettronica (Mail Transfer Agent, MTA) e tra i server di posta elettronica stessi. Il suo obiettivo primario è di garantire la corretta trasmissione del messaggio e delle informazioni del destinatario al server di posta del destinatario.
2. Architettura di SMTP
L’architettura di SMTP è basata su una comunicazione client-server. Ecco un approfondimento delle componenti principali:
•Client SMTP: È il sistema che inizia la trasmissione del messaggio email. Questo potrebbe essere un MUA (Mail User Agent), ovvero un client di posta come Outlook o Thunderbird, o un MTA che trasferisce email da un server a un altro.
•Server SMTP: È l’entità che riceve il messaggio dal client. Può agire come destinatario finale o inoltrare il messaggio ad altri server per raggiungere la destinazione corretta.
In un ciclo tipico di invio, il mittente invia l’email al proprio server SMTP, che lo trasmette al server SMTP del destinatario, utilizzando una serie di passaggi chiamati store-and-forward (memorizza e inoltra).
3. Meccanismo di Funzionamento
Il funzionamento di SMTP può essere descritto attraverso una sequenza di comandi e risposte tra il client SMTP e il server SMTP. Di seguito viene illustrato un processo semplificato di invio di un’email:
1. Connessione: Il client SMTP stabilisce una connessione TCP con il server SMTP, di solito sulla porta 25 (anche se oggi sono comuni anche le porte 587 o 465, per connessioni sicure).
2. Handshake iniziale: Una volta stabilita la connessione, il server invia un messaggio di benvenuto. Il client risponde inviando il comando HELO o EHLO per iniziare la conversazione. L’uso di EHLO indica che il client SMTP supporta le estensioni SMTP, come la trasmissione sicura (STARTTLS).
3. Invio del mittente e destinatario: Il client invia il comando MAIL FROM per specificare l’indirizzo del mittente e RCPT TO per specificare il destinatario dell’email. Il server risponde a ciascuno di questi comandi con un messaggio di conferma, che indica se il destinatario è accettato o se ci sono problemi.
4. Invio del messaggio: Una volta che il server ha accettato il destinatario, il client invia il comando DATA seguito dal contenuto del messaggio (incluso il corpo del messaggio e gli header). L’invio termina con un punto (.) su una nuova linea. Il server SMTP risponde con un codice di stato che indica se l’invio del messaggio è stato accettato.
5. Chiusura della connessione: Dopo aver inviato il messaggio, il client SMTP invia il comando QUIT per chiudere la connessione.
4. Codici di Stato SMTP
SMTP utilizza una serie di codici di risposta a 3 cifre che indicano lo stato di ciascuna operazione. Alcuni dei codici più comuni includono:
•2xx: Successo. Ad esempio, 250 indica che l’azione richiesta è stata completata con successo.
•4xx: Errore temporaneo. Ad esempio, 421 significa che il servizio non è disponibile.
•5xx: Errore permanente. Ad esempio, 550 indica che l’indirizzo email del destinatario non è disponibile o non esiste.
5. Sicurezza in SMTP
SMTP, nella sua forma originaria, non prevede crittografia o autenticazione, il che lo rende vulnerabile ad attacchi come il “Man-in-the-Middle” o l’intercettazione del contenuto del messaggio. Tuttavia, col tempo sono stati introdotti vari meccanismi per migliorare la sicurezza del protocollo:
•STARTTLS: Un’estensione che permette di aggiornare una connessione SMTP non sicura a una connessione cifrata utilizzando TLS (Transport Layer Security).
•SMTP-AUTH: Fornisce un meccanismo per autenticare il mittente durante la trasmissione del messaggio, prevenendo l’invio di email da mittenti non autorizzati.
•DKIM, SPF e DMARC: Questi meccanismi aiutano a prevenire la falsificazione degli indirizzi email, migliorando la verifica dell’integrità dei messaggi e riducendo lo spam.
6. Estensioni del Protocollo
Il protocollo SMTP è stato esteso nel tempo con numerose caratteristiche aggiuntive. Alcune delle più comuni includono:
•ESMTP (Extended SMTP): Introdotto con la RFC 1869, ESMTP aggiunge estensioni a SMTP, come l’autenticazione, la gestione delle capacità dei server e il supporto per la trasmissione sicura.
•8BITMIME: Permette di trasferire email con contenuto a 8 bit, invece di limitarsi ai tradizionali 7 bit di ASCII, migliorando il supporto per caratteri non latini.
• SMTPUTF8: Estensione che permette l’utilizzo di caratteri Unicode negli indirizzi email e nei contenuti dei messaggi.
7. Limiti e Problemi di SMTP
Nonostante la sua robustezza, SMTP presenta alcuni limiti:
•Mancanza di crittografia nativa: Il protocollo originario non include protezioni crittografiche. Sebbene STARTTLS sia una soluzione comune, non tutti i server lo supportano.
•Dipendenza dalla configurazione corretta: Il malfunzionamento o la cattiva configurazione di un server SMTP può portare a email perse, respinte o mal gestite.
•Spam: SMTP, senza adeguate misure di sicurezza come l’autenticazione e l’utilizzo di DMARC, SPF e DKIM, è vulnerabile all’abuso da parte di spammer.
8. Utilizzo in Ambienti Moderni
SMTP è ancora oggi il protocollo dominante per la trasmissione delle email, sebbene in combinazione con altri protocolli come IMAP (Internet Message Access Protocol) o POP3 (Post Office Protocol) per la ricezione delle email. Mentre SMTP è utilizzato per trasferire le email da server a server, IMAP e POP3 sono utilizzati per recuperare le email dal server di posta del destinatario al client.
In sintesi, SMTP è un protocollo essenziale che ha resistito alla prova del tempo, garantendo la trasmissione di email su Internet per decenni. Grazie a continui miglioramenti e estensioni, rimane al centro della comunicazione elettronica, anche in un’epoca di crescente attenzione alla sicurezza e alla privacy.
Lascia un commento