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) 2-1 Posta elettronica coda messaggi in uscita mailbox utente user agent Tre componenti principali: user agent mail server mail server simple mail transfer protocol: SMTP User Agent SMTP “Lettore di posta” (mail reader) mail Composizione e lettura dei server messaggi di posta Es., Eudora, Outlook, elm, Netscape Messenger user I messaggi in ingresso/uscita agent memorizzati sul server SMTP SMTP user agent mail server user agent user agent user agent 2-2 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 SMTP SMTP mail server user agent SMTP user agent mail server user agent user agent user agent 2-3 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 2-4 Esempio di invio mail 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 1) Alice usa il suo user agent per comporre un messaggio per [email protected] 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.) 1 user agent 2 mail server 3 mail server 4 5 6 user agent 2-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: <[email protected]> S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]> S: 250 [email protected] ... 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 2-6 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 2-7 SMTP: conclusioni 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 2-8 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. header linea vuota body To: From: Subject: differenti dai comandi SMTP body il “messaggio”, solo caratteri ASCII-7 bit 2-9 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 Versione MIME Metodo di codifica dati Dichiarazione tipo, sottotipo e parametri dei dati multimediali dati codificati From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data 2-10 Tipi MIME Content-Type: type/subtype; parameters Text es. sottotipi: plain, html Video es. sottotipi: mpeg, quicktime Image es. sottotipi: jpeg, gif Application dati che devono essere Audio es. sottotipi: basic (8-bit mu-law encoded), 32kadpcm (codifica a 32 kbps) processati da un’applicazione prima di diventare “visibili” es. sottotipi: msword, octet-stream Nota: Processo registrazione MIME presso IANA per sviluppo coordinato 2-11 Multipart Type E-mail contenente From: [email protected] più oggetti To: [email protected] 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. --StartOfNextPart Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data --StartOfNextPart Do you want the recipe? Boundary character: delimitano gli oggetti ContentTransferEncoding e Content-Type per ogni oggetto 2-12 Il messaggio ricevuto Received: from crepes.fr by hamburger.edu; 6 Oct 2003 From: [email protected] To: [email protected] 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 2-13 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 2-14 Protocolli di accesso alla posta user agent SMTP mail server mittente SMTP access protocol user agent 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. 2-15 Protocollo POP3 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 S: C: S: C: S: +OK POP3 server ready user bob +OK pass hungry +OK user successfully logged C: S: S: S: C: S: S: C: C: S: S: C: C: S: list 1 498 2 912 . retr 1 <message 1 contents> . dele 1 retr 2 <message 2 contents> . dele 2 quit +OK POP3 server signing off 3) Aggiornamento on 2-16 Protocollo POP3 Scarica ed elimina (download and delete) 1. 2. 3. 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) 1. 2. 3. 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 2-17 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 2-18