Posta Elettronica in Internet Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© 1996-2004 All Rights Reserved)
Posta elettronica Tre componenti principali: SMTP SMTP SMTP user agent mailbox utente coda messaggi in uscita user agent Tre componenti principali: user agent mail server simple mail transfer protocol: SMTP User Agent “Lettore di posta” (mail reader) Composizione e lettura dei messaggi di posta Es., Eudora, Outlook, elm, Netscape Messenger I messaggi in ingresso/uscita memorizzati sul server mail server user agent SMTP mail server user agent SMTP mail server SMTP user agent user agent user agent
Posta elettronica: mail server user agent Mail Server mailbox contiene le mail in arrivo per l’utente Coda di messaggi (message queue) delle mail in uscita (non ancora inviate) SMTP protocol tra i mail server per distribuire le mail SMTP client: mail server invia le mail SMTP server: mail server riceve le mail mail server user agent SMTP mail server user agent SMTP mail server SMTP user agent user agent user agent
Posta elettronica: SMTP [RFC 821] Usa tcp per il trasferimento affidabile dei messagi da client a server sulla porta 25 Trasferimento diretto: da server a server, non si usano server intermedi di posta Tre fasi Handshaking (saluto) Trasferimento di uno o più messaggi (connessione permanente) Chiusura Interazione mediante comandi/risposte Comando: testo ASCII Risposta: codice di stato e frase Attenzione: I messaggi devono essere comunque riportati in formato ASCII a 7 bit, anche i dati multimediali
Esempio di invio mail 1) Alice usa il suo user agent per comporre un messaggio per bob@someschool.edu 2) L’user agent manda il messaggio al mail server di Alice; il messaggio è inserito nella coda dei messaggi 3) Il client SMTP apre una connessione TCP con il mail server di Bob (se fallisce riprova dopo 30 min.) 4) Il client SMTP manda il messaggio di Alice sulla connessione TCP 5) Il mail server di Bob inserisce il messaggio nella mailbox di Bob 6) Bob utilizza il suo user agent per leggere il messaggio mail server mail server 1 user agent user agent 2 3 6 4 5
Esempio di interazione SMTP S-C:Connessione TCP tra client e server S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <alice@crepes.fr> S: 250 alice@crepes.fr... Sender ok C: RCPT TO: <bob@hamburger.edu> S: 250 bob@hamburger.edu ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection
Prova telnet servername 25 Osserva 220 reply dal server Digita i comandi: HELO MAIL FROM RCPT TO DATA QUIT Questi comandi permettono di inviare email senza usare uno user agent
SMTP: conclusioni Confronto con http: RFC (821) del 1982 SMTP usa connessioni TCP persistenti Richiede che il messaggio (header & body) sia in formato ASCII 7-bit Il server SMTP usa CRLF.CRLF per determinare la fine del messaggio Confronto con http: http: protocollo pull smtp: protocollo push http: header in ASCII 7-bit, nessuna limitazione per il body smtp: header & body in ASCII 7-bit http: ogni oggetto incapsulato in un messaggio di risposta separato smtp: un messaggio con più oggetti è inviato come unico messaggio in più parti
Formato dei messaggi di email SMTP (RFC 821): protocollo per lo scambio dei messaggi email RFC 822: standard per il formato dei messaggi di testo: header, es. To: From: Subject: differenti dai comandi SMTP body il “messaggio”, solo caratteri ASCII-7 bit header linea vuota body
Formato Messaggi: Estensioni multimediali MIME: Multipurpose Internet Mail Extensions, RFC 2045, 2056 per dati multimediali e di specifiche applicazioni Righe addizionali nell’header dichiarano il tipo di contenuto MIME From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data Versione MIME Metodo di codifica dati Dichiarazione tipo, sottotipo e parametri dei dati multimediali dati codificati
Tipi MIME Content-Type: type/subtype; parameters Text es. sottotipi: plain, html Image es. sottotipi: jpeg, gif Audio es. sottotipi: basic (8-bit mu-law encoded), 32kadpcm (codifica a 32 kbps) Video es. sottotipi: mpeg, quicktime Application dati che devono essere processati da un’applicazione prima di diventare “visibili” es. sottotipi: msword, octet-stream Nota: Processo registrazione MIME presso IANA per sviluppo coordinato
Multipart Type E-mail contenente più oggetti From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=StartOfNextPart --StartOfNextPart Dear Bob, Please find a picture of a crepe. Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data Do you want the recipe? Boundary character: delimitano gli oggetti Content-Transfer-Encoding e Content-Type per ogni oggetto
Il messaggio ricevuto Received: from crepes.fr by hamburger.edu; 6 Oct 2003 From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg Riga di header aggiunta dal server ricevente Received indica il mail server inviante, by indica il mail server ricevente Più linee “Received” se il messaggio è stato inoltrato da più server SMTP lungo il percorso da mittente a destinatario
Protocolli di accesso alla posta Soluzione tradizionale: utente legge direttamente la posta sul mail server Attraverso l’user agent è possibile visualizzare file multimediali e di specifiche applicazioni Mail server ricevente deve essere sempre attivo => non può stare sull’host dell’utente Agenti di posta accedono alle mailbox che risiedono su un mail server condiviso (da più utenti) In ricezione occorre un protocollo di “pull” per accedere alla mailbox collocata sul mail server
Protocolli di accesso alla posta SMTP SMTP access protocol user agent user agent mail server mittente mail server ricevente SMTP: consegna/memorizzazione nel server di posta del mittente Protocollo di accesso alla mail: recupero della posta dal server POP: Post Office Protocol [RFC 1939] Autenticazione (agent <-->server) e scaricamento IMAP: Internet Mail Access Protocol [RFC 2060] Più possibilità (più complesso) Manipolazione dei messaggi memorizzati sul server HTTP: Hotmail , Yahoo! Mail, ecc.
Protocollo POP3 1) Autorizzazione C: list 2) Transazione, client: S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged on 1) Autorizzazione comandi cliente: user: username pass: password risposte server: +OK -ERR 2) Transazione, client: list: elenca messaggi per numero e dimensione retr: scarica messaggio per numero dele: cancella quit C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> C: dele 1 C: retr 2 S: <message 2 contents> C: dele 2 C: quit S: +OK POP3 server signing off 3) Aggiornamento
Protocollo POP3 Scarica ed elimina (download and delete) User agent elimina la posta dalla mailbox dopo averla scaricata User agent permette di creare cartelle, spostare messaggi, effettuare ricerche nei messaggi Un utente distribuisce la posta sui diversi host da cui accede alla mailbox Scarica e conserva (download and keep) User agent conserva la posta sulla mailbox Utente può leggere i messaggi da macchine diverse POP3 stateless tra sessioni diverse, non permette di strutturare i messaggi in directory Prova telnet POP3server 110
Protocolli IMAP e HTTP IMAP Mantiene tutti i messaggi in un posto: il server Permette all’utente di organizzare i messaggi in cartelle Mantiene lo stato dell’utente tra una sesione e l’altra: nomi della cartelle e associazione tra messaggi e cartelle Più complesso del POP HTTP Web mail (Hotmail) Usato per spedire e ricevere mail attraverso i mail server SMTP utilizzato tra mail server Accessibilità globale Organizzazione di messaggi in cartelle server IMAP utilizzato di solito