COME FUNZIONA L'EMAIL


di Sergio Salvitti - www.salvitti.it


Indice

INTRODUZIONE

Nella storia moderna, tre... forse quattro volte,  e' stata introdotta una nuova tecnologia che ha trasformato radicalmente il nostro modo di comunicare.

Prima fra tutte l'invenzione del telegrafo di Samuel B. Morse.


Fig.1 - Morse e la sua invenzione - il telegrafoo


Dopo l'invio del primo messaggio il 24 maggio 1844 Morse, si rese conto di aver segnato una tappa fondamentale della storia delle telecomunicazioni.

Non possiamo certo dimenticare l'invenzione del telefono (Meucci o Bell?).



 

Fig.2 - Meucci e la prima versione del telefono<


Da italiano non posso che riconoscere la paternita' del telefono al nostro simpatico e sfortunato compaesano.

Non posso credere che un uomo spenda gran parte della propria esistenza a lottare per il riconoscimento di un'invenzione che non sia effettivamente appartenuta a se' stesso.

E che dire dell'invenzione della radio di Guglielmo Marconi che ottenne perfino il premio Nobel nel 1909.



Fig.3 - Gugliemo Marconi e un moderno cellulare<



 

Non dimentichiamo che il nostro amato cellulare e' la combinazione di queste ultime due invenzioni...

Ma l'invenzione piu' semplice e piu' straordinaria per il popolo d'Internet e' sicuramente l'Email.

Quante volte in ferie abbiamo avuto un senso di nostalgia nonostante lo splendido paesaggio e la divertente vacanza che stavamo trascorrendo.

Inizialmente credavamo che tale sentimento fosse dovuto ad una crisi d'astinenza per Internet.

Appena entrati nell' internet-point locale e collegati alla Rete, qual'e' stata la prima operazione che abbiamo eseguito istintivamente?

Ma certo... la lettura della mailbox!

Cosa c'e' di tanto straodinario nella posta elettronica?

Ogni giorno, i cittadini d'Internet si scambiano miliardi di Email.

Ovviamente e' questo il motivo per cui, in breve tempo, l'email e' diventato un mezzo di comunicazione molto popolare.

>>> Torna all'Indice


UN MESSAGGIO EMAIL

Il primo messaggio Email e' stato inviato nel 1971 da un ingegnere di nome Ray Tomlinson.

Prima di cio' era possibile soltanto inviare messaggi a utenti collegati alla stessa macchina.

La novita' di Tomlinson e' stata quella di poter inviare messaggi ad altre macchine collegati ad Internet usando il simbolo @ per designare il computer ricevente.

Ma cosa' c'e' dietro alla posta elettronica?

Un messaggio email non e' altro che un semplice blocco di caratteri ASCII da inserire in un recipiente (la busta appunto) e scrivere:

All'inizio venivano inviati soltanto dei messaggi di testo abbastanza corti, ma attualmente, con la possibilita' di includere anche gli allegati (attachments), le Email hanno raggiunto dimensioni ragguardevoli.

In ogni caso i messaggi sono sempre costituiti da testo puro (vedi in seguito il paragrafo dedicato agli allegati).

>>> Torna all'Indice


CLIENT PER EMAIL

Avrete gia' ricevuto in passato parecchi messaggi di posta elettronica.

Per leggerli usate un qualche programma di client per email.

Molte persone usano programmi appositi come Microsoft Outlook, Outlook Express, Eudora o Pegasus.

Altri utenti che si sottoscrivono ad alcuni servizi email gratuiti come Hotmail, Yahoo o Tiscali usano un client email che appare in una pagina Web  (servizio webmail).

A prescindere da quale client email stiate usando, in generale esso assolve ai seguenti compiti:

Programmi di posta elettronica piu' complessi hanno una miriade di gadgets, ma le funzioni base sono quelle appena elencate.

>>> Torna all'Indice


UN SEMPLICE SERVER PER EMAIL

Mostriamo adesso con un semplice esempio di come potrebbe funzionare un sistema di posta elettronica.

Dato per scontato che abbiate gia' installato sul vostro PC un programma per la gestione della posta elettronica, siete pronti per inviare o ricevere dei messaggi Email.

Dal lato di chi fornisce il servizio di posta elettronica esiste un programma specifico che gestisce le richieste dei vari client.

Questo programma e' chiamato "mail server".

Come ben sapete, sul computer del provider girano delle applicazioni sempre attive, chiamate server o demoni che rimangono in ascolto su porte specifiche in attesa che qualcuno chieda di essere servito.

Il server di posta elettronica  piu' semplice possibile dovrebbe funzionare in questa maniera:

Ammettiamo che: Ammettiamo che la mia ragazza voglia mandarmi un messaggio del tipo:

Titolo: Appuntamento
Ciao Sergio,
perche' non ci vediamo a pranzo lunedi'?
Laura".

Ella dovrebbe scrivere il testo con il suo client di posta elettronica e indicare di spedire l'email a: sergio@pippo.it.

Appena premuto il pulsante d'invio, il suo programma cercera' di connettersi al server di posta elettronica pippo.it e gli passera':

Il server scrivera' qualcosa del tipo:

From: laura@pippo.it
To: sergio@pippo.it
Subject: Appuntamento
Ciao Sergio,
perche' non ci vediamo a pranzo lunedi'?
Laura

In realta' ci sono molte altre informazioni che il server potrebbe memorizzare nel file, come la data e l'orario ; ad ogni modo potrete notare che il tutto e' un processo estremamente semplice da realizzare.

Nel momento in cui altre persone inviano delle email a sergio@pippo.it, il server le aggiungera' alla fine del file di testo sergio.txt secondo l'ordine d'arrivo.

In genere leggiamo la nostra casella di posta elettronica una volta ogni tanto.

Nel frattempo si saranno accumulati nella mailbox un certo numero di nuovi messaggi.

Quando voglio leggere il contenuto della mia mailbox, il mio programma di posta elettronica locale si connettera' al server ed effettuera' le seguenti operazioni:

Dovete ammettere che questo esempio e' veramente semplice.

La cosa sorprendente e' che il sistema reale di posta elettronica che usate quotidianamente non e' poi tanto piu' complesso di quello che ho appena descritto.

>>> Torna all'Indice


IL SISTEMA EMAIL REALE

Il sistema reale di posta elettronica e' basato su due server che possono risiedere sulla stessa macchina o su macchine separate.

Uno dei due e' chiamato SMTP Server, dove STMP sta per: Simple Mail Tranfer Protocol.

Esso gestisce le email da spedire.

L'altro e' chiamato POP3 Server, dove POP sta per: Post Office Protocol.

Il server POP3 gestisce le email in ricezione.

Un tipico sistema di posta elettronica assomiglia a quello mostrato in figura:




Il server SMTP rimane in ascolto sulla porta 25, mentre il server POP3 rimane in ascolto sulla porta 110.

>>> Torna all'Indice


IL SERVER SMTP

Ogni volta che spedite una email, il vostro email client interagira' con il server SMTP per inoltrare la spedizione del messaggio.

Il server SMTP del vostro provider potrebbe conversare con altri SMTP server per inoltrare il vostro messaggio nella rete fino al server di destinazione.




Il mio id e' brain e dispongo di un account sul server howstuffworks.com.

Ammettiamo che io voglia inviare una mail a jsmith@mindspring.come che stia usando un client per email tipo Outlook Espress gia' configurato.

Appena trascritto il mio messaggio e premuto il pulsante di Invio questo e' quello che accade:

Come potete notare la parte piu' complessa dell'operazione e' proprio decidere l'instradamento corretto del messaggio.

Se, per qualche motivo, uno dei server SMTP che si trova nella catena prevista dalle tabelle di routing per raggiungere mindspring.com non riesce a connettersi con la controparte, il messaggio viene momentaneamente depositato in una coda.

In genere il server SMTP usa un programma chiamato sendmail  per inoltrare il messaggio e tale coda viene denominata sendmail queue.

Sendmail a tempo riprova a inviare di nuovo il messaggio, per esempio ogni 15 minuti.

Dopo un tempo limite, in genere 4 ore, invia indietro una email per notificare l'esistenza di un problema nella trasmissione del messaggio.

Dopo qualche giorno, in funzione della configurazione impostata, sendmail elimina il messaggio dalla coda e notifica il fallimento della consegna della email.

La conversazione che un email client ha con il server SMTP e' incredibilmente semplice e leggibile ad occhio nudo senza problemi.

Questo potrebbe creare problemi di violazione della privacy.

Il protocollo di comunicazione per inviare una email e' specificato in un documento pubblico RFC e una conversazione tipica assomiglia a qualcosa come:


helo test
250 mx1.mindspring.com Hello abc.sample.com
[220.57.69.37], pleased to meet you
mail from: test@sample.com
250 2.1.0 test@sample.com... Sender ok
rcpt to: jsmith@mindspring.com
250 2.1.5 jsmith... Recipient ok
data
354 Enter mail, end with "." on a line by itself
from: test@sample.com
to:jsmith@mindspring.com
subject: testing
John, I am testing...
.
250 2.0.0 e1NMajH24604 Message accepted
for delivery
quit
221 2.0.0 mx1.mindspring.com closing connection
Connection closed by foreign host.

Il testo scritto in rosso e' relativo a quello che viene richiesto dal client mentre il testo in verde e' cio' che il server risponde.

Il client email si presenta (helo) e fornisce l'indirizzo del mittente (mail from:) e del destinatario(rcpt to:).

Richiede di poter scaricare il contenuto del messaggio (data) chiudendo il messaggio con una linea vuota seguita da una linea con un punto.

Alla fine chiude la sessione(quit).

Tutte questo dialogo puo' essere prodotto manualmente con un telnet all'indirizzo IP del server sulla porta 25.

E' questo il sistema usato dagli hackers per generare email fasulle.

Come avete notato il server SMTP interpreta dei semplici comandi di testo.

I comandi piu' comuni sono:

>>> Torna all'Indice
IL SERVER POP3

Nella piu' semplice implementazione di POP3, il server gestisce una collezione di file di testo, uno per ogni account di posta elettronica.

Quando arriva un nuovo messaggio il server POP3 lo appende alla fine del file di testo relativo all'utente destinario.

Per  controllare la mailbox, il client si connette al server POP3 usando l'indirizzo IP dell macchina ove risiede il server ed effettua una richiesta tramite la porta 110.

Il server POP3 richiede il nome dell'account e la password per poter effettuare il login nel sistema.

Una volta che il client ha terminato con successo la procedura di login, il server POP3 apre il file relativo all'account richiesto e permette al client di visionarne il contenuto.

Come il server SMTP, POP3 riconosce un ristretto numero di comandi di testo.

Di seguito viene riportata una lista di quelli piu' comuni:

Il client si connette al server POP3 e invia una serie di comandi per copiare i messaggi in locale.

Generalmente, dopo aver copiato i messaggi dal server, chiede a POP3 che vengano eliminati a meno che preventivamente non abbiate configurato il client per non procedere alla cancellazione automatica.

Avrete notato che il server POP3 fornisce semplicemente un'interfaccia tra il client e il file di testo che contiene la posta.

Da non dimenticare che POP3 si occupa anche di autenticare il client che accede al servizio mediante il meccanismo della password.

Comunque, ancora una volta potete notare che il server POP3 e' molto semplice da realizzare.

Potreste sostituirvi al client di posta elettronica e, tramite un telnet alla porta 110, digitare a mano i comandi verso il server avendo cura di rispettare il protocollo POP3.

>>>Torna all'Indice


GLI ALLEGATI

Il vostro email client vi permette di aggiungere degli allegati nel vostro messaggio e vi permette anche di salvare il contenuto dell'allegato di una email ricevuta.

Gli allegati possono essere costituiti da file di qualsiasi genere.

Generalmente l'allegato e' costituito da un file non testuale (in caso contrario uno potrebbe inserirlo all'interno del normale contenuto dell'email).

I messaggi email per quanto previsto dal protocollo devono necessariamente essere costituiti da testo puro e cio' costituisce un problema.

Nel passato, per risolvere il problema, veniva usato un programma chiamato uuencode.

Il programma uuenconde presume che il file d'input sia di tipo binario.

Estrae dal file binario 3 byte per volta e li converte in 4 caratteri ASCII.

L'algoritmo usato e' quello di:

Il metodo e' molto semplice e allo stesso tempo abbastanza efficiente.

Quello che il programma uuencode produce e' una versione codificata del file binario di partenza che contiene soltanto caratteri di testo e che risulta un terzo piu' grande di quello originario.

Nel passato l'operazione di codifica con uuencode doveva essere fatta manualmente e il risultato veniva incollato alla fine del messaggio.

Di seguito viene riportato un tipico esempio di file codificato con uuencode:


begin 644 reports
M9W)E<" B<&P_(B O=F%R+VQO9R]H='1P9"]W96(V-C1F-
BYA8V-E<W,N;&]GM('P@8W5T("UF(#(@+60@(C\B('P@8W5T
("UF(#$@+60@(B8B(#X@<V5A<F-HM+61A=&$M)#$*?B]C;
W5N="UP86=E<R!\('-O<G0@/B!S=&%T<RTD,0IC<
" @M?B]W96)S:71E+V-G:2UB:6XO<W5G9V5S="UD871A+V1A=
&$@<W5G9V5S="TDM,0IC<"!^+W=E8G-I=&4O8V=I+6)I;B
]W:&5R92UD871A+V1A=&$@=VAE<F4MM)#$*8W @?B]W96)S:7
1E+V-G:2UB:6XO96UA:6QE<BUD871A+V1A=&$@96UAL:6PM)#
$*?B]G971L;V<@/B!L;V=S+20Q"GXO=&]T86P@/B!T;W1A;"T
D,0IA

End

Il ricevente doveva ritagliare la parte della email codificata e salvarla in un file a parte.

Usare questo nuovo file come input del programma uudecode che riconverte il file testo nel file binario di origine.

La parola "reports" che si trova alla fine della prima riga dell'esempio, informa uudecode su quale fosse il nome del file binario di partenza.

I moderni programmi di gestione della posta elettronica fanno esattamente le stesse operazioni appena descritte soltanto che codificano e decoficano il file o i files in allegato in maniera automatica, cosi' che tutta l'operazione sia perfettamente trasparente per l'utente.

Se date uno sguardo ad un file grezzo di una email che contenga un allegato, potrete verificare che esso e' rappresentato nel formato codificato simile a quello appena mostrato.

>>>Torna all'Indice


CONCLUSIONI

 

Nonostante il  tremendo impatto che l'introduzione dell'Email ha avuto sulle abitudini della nostra societa' cambiandone radicalmente il modo di comunicare, essa rappresenta oggi una delle invezioni piu' semplici che la mente umana potesse concepire!

Ci sono delle parti del sistema di posta elettronica che sono complesse (vedi per esempio le regole d'instradamento di sendmail), ma il protocollo di base e' incredibilmente semplice.

La prossima volta che spedirete una mail saprete esattamente cosa accadra' al vostro messaggio per raggiungere la sua destinazione finale.

>>>Torna all'Indice



Sergio Salvitti - www.salvitti.it