IL LIVELLO APPLICAZIONI: Reti di Calcolatori IL LIVELLO APPLICAZIONI: E-mail
La posta elettronica Funzionamento del sistema di E-mail Il formato dei messaggi Il protocollo SMTP I protocolli POP, IMAP
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
La Posta Elettronica Agenti utente Agenti di trasferimento 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).
Trasferimento di E-mail Nodo Client mittente agente utente coda della posta da spedire agente di trasferimento connessione TCP sulla porta 25 SMTP destinatario agente utente mailboxes degli utenti agente di trasferimento Nodo Server
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.
Formato dei Messaggi (a) Posta normale (b) Posta elettronica
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).
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
Un Esempio di Intestazione Return-Path: <Francesco.Mignolo@esa.int> 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 <mastroianni@icar.cnr.it>; Thu, 9 Oct 2003 14:22:15 +0200 Received: 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 <mastroianni@icar.cnr.it>; Thu, 9 Oct 2003 14:28:16 +0200 (MET DST) Subject: hello To: mastroianni@icar.cnr.it Message-ID: OF21664C1B.BEC82A0C-ON41256DBA@estec.esa.int X-Mailer: Lotus Notes Release 5.0.10 March 22, 2002 From: Domenico.Mignolo@esa.int Date: Thu, 9 Oct 2003 15:28:12 +0200 Content-Length: 710 Subject: <oggetto messaggio> <testo messaggio…>
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.
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
MIME: tipo del messaggio
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 encoding Viene 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).
Esempio di Intestazione MIME (1/2) Return-Path: <sacca@unical.it> Received: … From: sacca@unical.it To: "Gianluigi Folino" <folino@icar.cnr.it>, "Carlo Mastroianni" <mastroianni@icar.cnr.it>, … Cc: <l.corsonello@unical.it>, "'Preside'" <luchi@unical.it> Date: Wed, 15 Oct 2003 04:19:36 +0200 Message-ID: <000201c392c2$cb70e4b0$c501a8c0@vajo> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0003_01C392D3.8EFB3B50" X-Mailer: Microsoft Outlook, Build 10.0.3416 Content-Length: 117200 This is a multi-part message in MIME format. ------=_NextPart_000_0003_01C392D3.8EFB3B50
Esempio di Intestazione MIME (2/2) Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Carissimi=20 invio in allegato la convocazione del Consiglio dei Corsi di Laurea e di … Domenico Sacc=E0 ------=_NextPart_000_0003_01C392D3.8EFB3B50 Content-Type: application/pdf; name="Convocazione votazioni IngInfo 22-10-03.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Convocazione votazioni IngInfo 22-10-03.pdf" Pj4gDXN0cmVhbQ0K8n5iU/Nue8RAmL2RonDU7cO7MurDg/wefz WtmC8/rUVdA9mx/wYqLg7CDMIR ------=_NextPart_000_0003_01C392D3.8EFB3B50--
Il Protocollo SMTP 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: HELO <host> “Saluta” il server. MAIL FROM: <indirizzo> Indica il mittente del messaggio. RCPT TO: <indirizzo> Indica il destinatario. DATA Invia i campi dell’intestazione (es. Subject), ed il corpo del messaggio terminato da un punto (.) messo da solo su una linea. QUIT Chiude la connessione “busta”
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: <carlo@minos.cs.icar.cnr.it> Server: 250 2.1.0 <carlo@minos.cs.icar.cnr.it>... Sender ok Client: RCPT TO: <mastroianni@icar.cnr.it> Server: 250 2.1.5 <mastroianni@icar.cnr.it>... 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.
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.
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.
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.
Accesso remoto alle caselle postali Sul mail server operano solitamente due programmi server: il server SMTP per ricevere ed inviare i messaggi il server POP e/o IMAP per consentire l’accesso remoto alle caselle postali.
POP e IMAP