1011010110
01100 01100
0101101011
Reti di Calcolatori
IL LIVELLO APPLICAZIONI:E-mail
1011010110
01100 01100
0101101011
La posta elettronica
Funzionamento del sistema di E-mailIl formato dei messaggiIl protocollo SMTPI protocolli POP, IMAP
1011010110
01100 01100
0101101011
La Posta Elettronica o E-mail
Questa applicazione permette di scambiare dati tra due o più utenti identificati univocamente sulla rete.
Gli standard RFC 821 e RFC 822 proposti da ARPANET sono stati accettati a scapito di altre proposte come X.400 proposto dal CCITT.
Due sottosistemi: user agent: agenti utenti che permettono di comporre, inviare e
ricevere messaggi di posta. Transfer agent: agenti di trasferimento che si occupano di far
arrivare i messaggi dal mittente al destinatario, tramite il protocollo SMTP
Il sistema di posta supporta cinque funzioni di base: composizione trasferimento notifica visualizzazione memorizzazione
1011010110
01100 01100
0101101011
La Posta Elettronica
Agenti utente Programmi per leggere, comporre e gestire la posta e le
mailboxes (es. Eudora, Netscape Messenger, Outlook, Pine, Mailtool)
Possono utilizzare protocolli per la gestione di mailbox remote (POP3, IMAP).
Agenti di trasferimento Gestiscono il trasferimento dei messaggi dalla sorgente alla
destinazione e la ricezione dei messaggi sui server di posta. Sono programmi di sistema eseguiti in background che
usano il protocollo SMTP per trasferire i messaggi sulla rete (es. sendmail, postfix).
1011010110
01100 01100
0101101011
Trasferimento di E-mail
Nodo Client
mittente agenteutente
coda dellaposta da spedire
agente ditrasferimento
destinatario agenteutente
mailboxesdegli utenti
agente ditrasferimento
Nodo Server
connessione TCPsulla porta 25
SMTP
1011010110
01100 01100
0101101011
Indirizzi di Posta Elettronica
Hanno il formato
utente@dominio
Gli indirizzi sono risolti dal DNS che individua il server a cui inviare il messaggio (eventualmente usa una richiesta MX)
Il server di posta riceve i messaggi e li accoda nella mailbox dell’utente.
La mailbox è un file di testo in una directory specifica nel server (es. in Unix può essere /spool/mail/utente )
L’utente può accedere alla posta localmente leggendo il file mailbox. Lo user agent per la lettura della posta provvede a individuare i singoli messaggi nella mailbox.
1011010110
01100 01100
0101101011
Formato dei Messaggi
(a) Posta normale (b) Posta elettronica
1011010110
01100 01100
0101101011
Campi Intestazione
To:Indirizzo DNS del destinatario (o destinatari).
Cc:Copia in carta carbone (indirizzi “per conoscenza”)
Bcc:Copia in carta carbone con indirizzi invisibili ai riceventi.
From:indirizzo di chi ha scritto il messaggio (necessario).
Sender:indirizzo di chi ha inviato il messaggio (opzionale).
1011010110
01100 01100
0101101011
Campi Intestazione (cont.)
Received:Indica l’agente che ha ricevuto il messaggio insieme ad un timestamp. Viene inserito da ogni agente durante il trasferimento. Si può cosi ricostruire il percorso della email.
Date:Data e ora in cui il messaggio è stato inviato
Reply-to:Indirizzo al quale inviare le risposte (reply) se diverso da From.
Message-Id:Numero unico che individua il messaggio
Subject:Oggetto del messaggio
1011010110
01100 01100
0101101011
Un Esempio di Intestazione
Return-Path: <[email protected]>Received: from esacom57-int.estec.esa.int (esacom57-ext.estec.esa.int [131.176.107.4])
by dns.icar.cnr.it (8.12.3/8.12.3/Debian -4) with ESMTP id h99CMFFQ013000
for <[email protected]>; Thu, 9 Oct 2003 14:22:15 +0200Received: from esacom52.estec.esa.int (esacom52.estec.esa.int [131.176.7.7])
by esacom57-int.estec.esa.int (8.12.9/8.12.9/ESA-External-v3.2) with ESMTP id h99CSGxL004751 for <[email protected]>; Thu, 9 Oct 2003 14:28:16 +0200 (MET DST)Subject: helloTo: [email protected]: [email protected]: Lotus Notes Release 5.0.10 March 22, 2002From: [email protected]: Thu, 9 Oct 2003 15:28:12 +0200Content-Length: 710Subject: <oggetto messaggio><testo messaggio…>
1011010110
01100 01100
0101101011
Codifica dei Messaggi
La posta è inviata come testo ASCII.
Non è possibile trasmettere caratteri non ASCII con messaggi di e-mail senza una opportuna codifica.
La soluzione è stata quella di usare il formato MIME per permettere alle e-mail di codificare e trasmettere caratteri non ASCII.
MIME definisce una struttura del corpo del messaggio e definisce come codificare i messaggi non ASCII.
1011010110
01100 01100
0101101011
MIME
Multipurpose Internet Mail Extensions (RFC 1521) Aggiunge dei campi di intestazione per definire la struttura del corpo
del messaggio I campi sono gestiti dallo user agent
Mime-Version: versione MIME Content-Type: tipo del messaggio Content-Transfer-Encoding: tipo di codifica Content-ID: identificatore unico del
messaggio Content-Description: descrizione del contenuto
1011010110
01100 01100
0101101011
MIME: tipo del messaggio
1011010110
01100 01100
0101101011
MIME: tipo di codifica
I tipi di codifica possibili sono: Caratteri a 7 o 8 bit
Usato per testo ASCII, con righe fino a 1000 caratteri. Base 64 encoding
Gruppi di 24 bit sono codificati in unità di 6 bit.Le 64 combinazioni possibili sono codificate tramite caratteri ASCII: 26 caratteri maiuscoli, 26 minuscoli, le dieci cifre, ‘+’ e ‘/’.Tale codifica è utilizzata per file binari (es. allegato word).
Quoted-printable encodingViene usata la codifica ASCII a 7 bit per i primi 127 caratteri.I caratteri con codifica superiore a 127 sono rappresentati con un ‘=‘ seguito da due cifre esadecimali che corrispondono al valore del carattere.Codifica usata per testo con caratteri di controllo (es. HTML, RTF).
1011010110
01100 01100
0101101011
Esempio di Intestazione MIME (1/2)
Return-Path: <[email protected]>Received: …From: [email protected]
To: "Gianluigi Folino" <[email protected]>, "Carlo Mastroianni" <[email protected]>, …Cc: <[email protected]>, "'Preside'" <[email protected]>Date: Wed, 15 Oct 2003 04:19:36 +0200Message-ID: <000201c392c2$cb70e4b0$c501a8c0@vajo>MIME-Version: 1.0Content-Type: multipart/mixed;
boundary="----=_NextPart_000_0003_01C392D3.8EFB3B50"X-Mailer: Microsoft Outlook, Build 10.0.3416Content-Length: 117200This is a multi-part message in MIME format.------=_NextPart_000_0003_01C392D3.8EFB3B50
1011010110
01100 01100
0101101011
Esempio di Intestazione MIME (2/2)
Content-Type: text/plain;charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printableCarissimi=20invio in allegato la convocazione del Consiglio dei Corsi di Laurea e di…Domenico Sacc=E0------=_NextPart_000_0003_01C392D3.8EFB3B50Content-Type: application/pdf;
name="Convocazione votazioni IngInfo 22-10-03.pdf"Content-Transfer-Encoding: base64Content-Disposition: attachment;
filename="Convocazione votazioni IngInfo 22-10-03.pdf"Pj4gDXN0cmVhbQ0K8n5iU/Nue8RAmL2RonDU7cO7MurDg/wefzWtmC8/rUVdA9mx/wYqLg7CDMIR…------=_NextPart_000_0003_01C392D3.8EFB3B50--
1011010110
01100 01100
0101101011
I comandi SMTP sono inviati in ASCII utilizzando una connessione TCP sulla porta 25 della macchina destinataria (provare con un programma java o con il comando “telnet host 25”)
Sequenza di comandi del client:
Il Protocollo SMTP
HELO <host>“Saluta” il server.
MAIL FROM: <indirizzo>Indica il mittente del messaggio.
RCPT TO: <indirizzo>Indica il destinatario.
DATAInvia i campi dell’intestazione (es. Subject), ed il corpo del messaggio terminato da un punto (.) messo da solo su una linea.
QUITChiude la connessione
“busta”
1011010110
01100 01100
0101101011
Esempio di “conversazione” SMTP
Server: 220 dns.icar.cnr.it … logging access from: minos.cs.icar.cnr.it [150.145.63.34]
Client: HELO dns.icar.cnr.it
Server: 250 dns.icar.cnr.it Hello minos.cs.icar.cnr.it [150.145.63.34], pleased to meet you
Client: MAIL FROM: <[email protected]>
Server: 250 2.1.0 <[email protected]>... Sender ok
Client: RCPT TO: <[email protected]>
Server: 250 2.1.5 <[email protected]>... Recipient ok
Client: DATA
Server: 354 Enter mail, end with "." on a line by itself
Client: Subject: prova
testo prova
.
Server: 250 2.0.0 hA5BpSJ9031480 Message accepted for delivery
Client: QUIT
Server: 221 2.0.0 dns.icar.cnr.it closing connection
Connection closed by foreign host.
1011010110
01100 01100
0101101011
Gateway di Posta Elettronica
Quando le macchine che si scambiano messaggi di posta elettronica non supportano connessioni TCP occorre far uso di un gateway al livello delle applicazioni.
1011010110
01100 01100
0101101011
Gestione delle mailing list
Una mailing list è una lista di indirizzi cui è assegnato un indirizzo e-mail.
Un mail exploder (o forwarder) è un programma che verifica in un archivio se un indirizzo è in realtà una lista, e manda una copia del messaggio a tutti gli appartenenti alla lista.
Spesso questi programmi sono eseguiti su appositi host, detti e-mail gateway.
1011010110
01100 01100
0101101011
Caselle Postali Remote
La casella di posta è in genere posta su server potenti ed operanti 24h su 24.
L’utente accede alla propria casella di posta remota tramite appositi protocolli:
Post Office Protocol (POP3)
protocollo semplice per recuperare i messaggi e memorizzarli sulla macchina dell’utente.
Interactive Mail Access Protocol (IMAP)più complesso per permettere di leggere i messaggi conservandoli sul server di posta. Utilizzato di solito con interfaccia Web.
Distributed Mail System Protocol (DMSP)permette di gestire la posta su più server ed in maniera asincrona.
1011010110
01100 01100
0101101011
Accesso remoto alle caselle postali
Sul mail server operano solitamente due programmi server:
o il server SMTP per ricevere ed inviare i messaggio il server POP e/o IMAP per consentire l’accesso remoto alle caselle postali.
1011010110
01100 01100
0101101011
POP e IMAP