I protocolli di messaggeria (SMTP, POP3, IMAP4)

Aprile 2015

Introduzione alla messaggeria elettronica

La posta elettronica è considerata come il servizio più usato su internet. Un account di psota elettronica è costituito da una serie di protocolli TCP/IP che offrono una panoplia di protocolli che permette di gestire facilmente il routing della posta sulla rete.

Il protocollo SMTP

Il protocollo SMTP (Simple Mail Transfer Protocol, tradotto dall'inglese Protocollo Semplice di Trasferimento della Posta) è il protocollo standard che permette di trasferire la posta da un server ad un altro con una connessione point to point. Questo è un protocollo funzionante in modalità connessa, incapsulato in un frame TCP/IP. La posta è consegnata direttamente al server di posta del destinatario. Il protocollo SMTP funziona grazie a dei comandi testuali inviati al server SMTP (per default sulla porta 25). Ognuno dei comandi inviati dal client (validato dalla stringa di caratteri ASCII CR/LF, equivalente ad un pressione del tasto invio) è seguito da una risposta del server SMTP composta da un numero e da un messaggio descrittivo.

Ecco uno scenario di richiesta di invio di mail ad un server SMTP
  • All'apertura della sessione SMTP, il primo comando da inviare è HELO seguito da uno spazio (sigla <SP>) e dal nome del dominio del vostro terminale (come dire "buongiorno sono il tal terminale"), poi validare con invio (sigla <CRLF>). Dall'aprile del 2001, le specifiche del protocollo SMTP definite nella RFC 2821, impongono che il comando HELO sia sostituito dal comando EHLO.
  • Il secondo comando è "MAIL FROM:" seguito dall'indirizzo email del mittente. Se il comando è accettato il server rinvia il messaggio "250 OK"
  • Il comando seguente è"RCPT TO:" seguito dall'indirizzo email del destinatario. Se il comando è accettato il server rinvia il messaggio "250 OK"
  • Il comando DATA è la terza tappa dell'invio. Esso annuncia l'inizio del corpo del messaggio. Se il comando è accettato il server rinvia un messaggio intermedio numerato 354 che indica che l'invio del corpo della mail può cominciare e considera l'insieme delle linee seguenti fino alla fine del messaggio individuata da una linea contenente unicamente un punto. Il corpo della mail contiene eventualmente alcune delle seguenti intestazioni :
    • Date
    • Subject
    • Cc
    • Bcc
    • From


Se il comando è accettato il server rinvia il messaggio" 250 OK"
Ecco un esempio di transazione tra un client (C) e un server SMTP (S)
S: 220 smtp.kioskea.net SMTP Ready  
C: EHLO terminale1.kioskea.net
S: 250 smtp.kioskea.net
C: MAIL FROM:<webmaster@kioskea.net>

S: 250 OK
C: RCPT TO:<meandus@meandus.net>

S: 250 OK
C: RCPT TO:<tittom@tittom.it>

S: 550 No such user here
C: DATA
S: 354 Start mail input; end with <CRLF>.<CRLF>

C: Subject: Ciao
C: Ciao Meandus,
C: come va?
C :
C: A presto!
C: <CRLF>.<CRLF>

S: 250 OK
C: QUIT
R: 221 smtp.kioskea.net closing transmission


Le specifiche di base del protocollo SMTP vogliono che tutti i caratteri trasmessi siano codificati in codice ASCII a 7 bit e che l'ottavo bit sia esplicitamente messo a zero. Quindi per inviare dei caratteri accentuati bisogna ricorrere a degli algoritmi integranti le specifiche MIME :
  • base64 per i file in allegato
  • quoted-printable (abbreviazione QP) per i caratteri speciali contenuti nel corpo del messaggio


E' inoltre possibile inviare una mail grazie ad un semplice telnet sulla porta 25 del server SMTP :
telnet smtp.kioskea.net 25
(il server indicato qui sopra è volontariamente inesistente, potete provare sostituendo kioskea.net con il dominio del vostro provider internet)

Ecco un riassunto dei principali comandi SMTP

ComandoEsempioDescrizione
HELO (ormai EHLO)EHLO 193.56.47.125Identificazione attraverso l'indirizzo IP o il nome del dominio del computer mittente
MAIL FROM:MAIL FROM: mitente@domaine.comIdentificazione dell'indirizzo del mittente
RCPT TO:RCPT TO: destinatario@domaine.comIdentificazione dell'indirizzo del destinatario
DATADATA messaggioCorpo della mail
QUITQUITUscita del server SMTP
HELPHELPLista di comandi SMTP supportata dal server


L'insieme delle specifiche del protocollo SMTP sono definite nel RFC 821 (da aprile 2001, le specifiche del protocollo SMTP sono definite nel RFC 2821).

Il protocollo POP3

Il protocollo POP (Post Office Protocol tradotto con "protocollo dell'ufficio postale") permette come indicato dal suo nome di andare a recuperare la propria posta su un server remoto (server POP). E' utile per le persone che, non essendo connesse in permanenza ad internet, per consultare le proprie mail off-line.

Esistono due versioni principali di questo protocollo, POP2 e POP3, alle quali sono attribuite rispettivamente le porte 109 e 110 e che funzionano attraverso dei comandi radicalmente diversi.

Esattamente come nel caso del protocollo SMTP, il protocollo POP (POP2 e POP3) funziona grazie a dei comandi inviati al server POP. Ciascuno dei comandi inviati dal client (validato dalla sequenza CR/LF) è composto da una parola-chiave, eventualmente accompagnata da uno o più argomenti ed è seguito da una risposta del server POP composta da un numero e da un messaggio descrittivo.

Ecco una tabella riassuntiva dei principali comandi POP2 :

Comandi POP2
ComandoDescrizione
HELLOIdentificazione attraverso l'indirizzo IP del computer mittente
FOLDERNome della casella da consultare
READNumero del messaggio da leggere
RETRIEVENumero del messaggio da recuperare
SAVENumero del messaggio da salvare
DELETENumero del messaggio da cancellare
QUITUscita del server POP2



Ecco un riassunto dei comandi POP3 :

Comandi POP3
ComandoDescrizione
USER identificativoQuesto comando permette di autentificarsi. Esso deve essere seguito dal nome dell'utente. cioè da una stringa di caratteri che identificano l'utente sul server. Il comando USER deve precedere il comando PASS.
PASS passwordIl comando PASS permette di indicare al password dell'utente il cui nome è specificato ad un comando User precedente.
STATInformazione sui messaggi contenuti sul server
RETRNumero del messaggio da recuperare
DELENumero del messaggio da cancellare
LIST [msg]Numero del messaggio da visualizzare
NOOPPermette di mantenere le connessioni aperte in caso di inattività
TOP <messageID> <n> Comando che visualizza n linee di messaggio, il cui numero è dato in argomento. In caso di risposta positiva da parte del server, questo rinvia le intestazioni del messaggio, poi una linea vuota e infine le n prime linee del messaggio.
UIDL [msg]Richiesta al server di rinviare una linea contenente delle informazioni sul messaggio eventualmente dato in argomento. Questa linea contiene una stringa di caratteri, detta listing d'identificatore unico, che permette di identificare in modo univoco il messaggio sul server, indipendentemente dalla sessione. L'argomento opzionale è un numero corrispondente ad un messaggio esistente sul server POP, cioè un messaggio non cancellato).
QUITIl comando QUIT chiede l'uscita del server POP3. Esso implica la cancellazione di tutti i messaggi segnati come eliminati e rinvia lo stato di questa azione.


Il protocollo POP3 gestisce così l'autenticazione attraverso il nome utente e password, ma non è invece sicuro dato che le password, come le mail, circolano in chiaro (in modo non criptato), sulla rete. In realtà, secondo la RFC1939, è possibile codificare la password utilizzando l'algoritmo MD5 e quindi beneficiare di un'autenticazione sicura. Tuttavia, essendo questo un comando opzionale, solo pochi server lo implementano. D'altra parte il protocollo POP3 blocca la casella postale durante la consultazione, il che significa che è impossibile avere una consultazione simultanea della stessa casella da due utenti.

Come è possibile inviare una mail grazie a telnet, si può anche accedere alla propria posta grazie ad un semplice telnet sulla porta del server POP (110 per default) :
telnet mail.kioskea.net 110
(il server indicato qui sopra è volontariamente inesistente, potete provare sostituendo kioskea.net con il dominio del vostro provider internet)
S: +OK mail.kioskea.net POP3 service  
S: (Netscape Messaging Server 4.15 Patch 6 (built Mar 31 2001))
C: USER jeff
S: +OK Name is a valid mailbox
C: PASS mia_pass
S: +OK Maildrop ready
C: STAT
S: +OK 2 0
C: TOP 1 5
S: Subject: Ciao
S: Ciao Meandus,
S: come va?
S :
S: A presto!
C: QUIT
S: +OK


La visualizzazione dei dati che digitate dipende dal client Telnet usato. Secondo il client Telnet, bisognerà attivare l'opzione echo locale.

Il protocollo IMAP

Il protocollo IMAP (Internet Message Access Protocol) è un protocollo alternativo al protocollo POP3 ma che offre molte più possibilità :
  • IMAP permette di gestire più accessi simultanei
  • IMAP permette di gestire più caselle postali
  • IMAP permette di smistare la posta secondo più criteri

Ulteriori informazioni

Per ulteriori informazioni sul protocollo SMTP, la cosa migliore è fare riferimento alla RFC 821 che spiega in dettaglio il protocollo :
Per poter consultare questo documento offline, ne potete scaricare gratuitamente una versione in formato PDF:
I-protocolli-di-messaggeria-smtp-pop3-imap4.pdf

Vedi anche


Messaging protocols (SMTP,POP3 and IMAP4)
Messaging protocols (SMTP,POP3 and IMAP4)
Protocolos de mensajería (SMTP, POP3 e IMAP4)
Protocolos de mensajería (SMTP, POP3 e IMAP4)
Die Mail Protokolle (SMTP, POP3, IMAP4)
Die Mail Protokolle (SMTP, POP3, IMAP4)
POP3, SMTP, IMAP - Protocoles de messagerie
POP3, SMTP, IMAP - Protocoles de messagerie
Os protocolos de serviço de mensagens (SMTP, POP3 e IMAP4)
Os protocolos de serviço de mensagens (SMTP, POP3 e IMAP4)
Il documento intitolato « I protocolli di messaggeria (SMTP, POP3, IMAP4) » da Kioskea (it.kioskea.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.