I protocolli di messaggeria (SMTP, POP3, IMAP4)

La posta elettronica è considerata come il servizio più usato su internet. Un account di posta 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.ccm.net SMTP Ready
C: EHLO terminale1.ccm.net
S: 250 smtp.ccm.net
C: MAIL FROM:<webmaster@cmm.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.ccm.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.

È inoltre possibile inviare una mail grazie ad un semplice telnet sulla porta 25 del server SMTP:

telnet smtp.ccm.net 25

(il server indicato qui sopra è volontariamente inesistente, potete provare sostituendo CCM.net con il dominio del vostro provider internet).

Ecco un riassunto dei principali comandi SMTP:

Comando Esempio Descrizione
HELO (ormai EHLO) EHLO 193.56.47.125 Identificazione attraverso l'indirizzo IP o il nome del dominio del computer mittente
MAIL FROM: MAIL FROM: mitente@domaine.com Identificazione dell'indirizzo del mittente
RCPT TO: RCPT TO: destinatario@domaine.com Identificazione dell'indirizzo del destinatario
DATA DATA messaggio Corpo della mail
QUIT QUIT Uscita del server SMTP
HELP HELP Lista 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 POP3 (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). È utile per le persone che, non essendo connesse in permanenza ad internet, lo utilizzano 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
Comando Descrizione
HELLO Identificazione attraverso l'indirizzo IP del computer mittente
FOLDER Nome della casella da consultare
READ Numero del messaggio da leggere
RETRIEVE Numero del messaggio da recuperare
SAVE Numero del messaggio da salvare
DELETE Numero del messaggio da cancellare
QUIT Uscita del server POP2

Ecco un riassunto dei comandi POP3:

Comandi POP3
Comando Descrizione
USER identificativo Questo 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 password Il comando PASS permette di indicare al password dell'utente il cui nome è specificato ad un comando User precedente.
STAT Informazione sui messaggi contenuti sul server.
RETR Numero del messaggio da recuperare.
DELE Numero del messaggio da cancellare.
LIST [msg] Numero del messaggio da visualizzare.
NOOP Permette 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).
QUIT Il 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.

Così 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.ccm.net 110

. Il server indicato qui sopra è volontariamente inesistente, potete provare sostituendo ccm.net con il dominio del vostro provider internet:

S: +OK mail.ccm.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: RFC 821.

Foto: © Titov Nikolai - Shutterstock.com

I nostri contenuti sono creati in collaborazione con esperti di high-tech, sotto la direzione di Jean-François Pillou, fondatore di CCM.net. CCM è un sito di high-tech leader a livello internazionale ed è disponibile in 11 lingue.
Il documento intitolato « I protocolli di messaggeria (SMTP, POP3, IMAP4) » dal sito CCM (it.ccm.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.
Unisciti ALLA COMMUNITY