900 likes | 1.12k Views
Filippo Castiglione, IAC – CNR, Roma. Servizi Internet di base. Email (smtp, pop, imap, webmail). Argomenti. Origine ed evoluzione del servizio. Cos'è la posta elettronica ?.
E N D
Filippo Castiglione, IAC – CNR, Roma Servizi Internet di base Email (smtp, pop, imap, webmail)
Origine ed evoluzione del servizio Cos'è la posta elettronica? Il servizio di posta elettronica permette, ad un utente connesso alla rete Internet, di inviare e ricevere messaggi in formato elettronico,scambiando così informazioni con altri utenti possessori di caselle di posta elettronica (e-mail). Il formato di questi messaggi è generalmente in formato testo, ma le nuove tecnologie permettono di allegare a questi messaggi files di qualsiasi tipo di formato.
RFC 822 • Un messaggio e-mail e` composto da piu` stringhe di caratteri US-ASCII (codice di 7-bit, con l’ultimo uguale a 0) in un formato specificato dalla RFC 822 (1982). • Due parti sono separate da una linea vuota: • Lo header: sender, recipient, date, subject, delivery path,… • Il body: contenente il messaggio. • L’uso di caratteri ASCII causa problemi per i messaggi non-ASCII, e.g. attachments (vedi MIME).
From: Mario.Rossi@abc.it To: Carla.Bianchi@xyz.it Cc: Franco.Verdi@hotmail.com Subject: RFC 822 example Date: Fri, 15 Jul 2002 13:58:49 This is just a test message to illustrate RFC 822. It’s not very long and it’s not very exciting. But you get the point. Un esempio di messeggio RFC 822 Message Header Message Body
Vantaggi e limiti della posta elettronica • Vantaggi • Non esistono problemi di fuso orario tra mittente e destinatario • Si è certi di non disturbare e di raggiungere il mittente, cose non garantite con una telefonata • Si possono inviare non solo testi, ma anche file, come “allegati”. In pratica, il destinatario può ricevere un messaggio da leggere e anche file grafici, musicali e di qualunque altro tipo, assieme ad esso. • I messaggi inviati possono contenere dati riutilizzabili.
Vantaggi e limiti della posta elettronica Svantaggi • Nome del file allegato: deve essere un nome breve e noncomposto da simboli “strani” (es: asterischi, virgole, punti evirgola, etc....) • Virus • Nessuna certezza sull’identità del mittente • Nessuno standard per la “ricevuta di ritorno”
Origine ed evoluzione del servizio • Il primo standard internazionale ad essere proposto per definire la posta elettronica e` stato il protocollo ISO X.400. • Troppo complesso.
Origine ed evoluzione del servizio • All’inizio degli anni 90, e` divenuto evidente che lo standard SMTP/MIME (che e` molto piu` semplice e non aderisce allo standard X.400) avrebbe battuto lo standard X.400 diventando, de facto, il protocollo di default per la posta elettronica su Internet. • SMTP • MIME
Architettura MUA MTA Mail Client Mail server • Gli elementi piu` importanti del sistema di posta elettronica sono: • Mail User Agent (MUA) ovvero il Mail Client • Mail Transfer Agent (MTA) ovvero il Mail Server • Mail Delivery Agent (MDA)
MUA = Mail User Agent (Mail Client) MTA = Mail Transport Agent (Mail Server) MDA = Mail Delivery Agent Architettura Sending MTA Receiving MTA SMTP server SMTP server MUA PC Mittente MUA PC Destinatario MDA writes on the user mailbox LAN LAN Internet User’s mailbox
MUA = Mail client e` un programma che gira sulla macchina del Sender, e.g. Microsoft Outlook o Netscape Messenger. L’utente fornisce i valori dei campi To: e Subject: ed il corpo del messaggio. Il MUA lo traduce in un messaggio compatibile con la RFC 822 e si connette tramite una LAN al (o a uno dei) MTA = Mail server. Il MUA usa un protocollo chiamato SMTP per spedire il messaggio RFC 822 all’MTA. I passi concettuali
Il Sending MTA usa il DNS (Domain Name Service) per trovare l’indirizzo IP del Receiving MTA (che potrebbe essere locale o no) in base al campo To:. Il sending MTA apre una connessione con il Receiving MTA e usa il protocollo SMTP per trasferire il messaggio RFC 822, spesso passando per la rete pubblica Internet. Alcuni server MTA intermediari posso essere coinvolti. Receiving MTA puo` spedire il messaggio al MUA ricevente oppure puo` memorizzarlo per il successivo recupero tramite la LAN del MUA ricevente (che usera` un MRA). I passi concettuali (cont.) Nota. MRA non usano il protocollo SMTP per recuperate i messaggi da un MTA, ma utilizza il protocollo POP o il piu` recente IMAP.
Simple Mail Transfer Protocol (SMTP) L’SMTP, o Simple Mail Transfer Protocol, e` usato per scambiare messaggi di posta elettronica tra i mailservers (e per spedire mail da un client di posta). Puo` essere usato per spedire posta, non per ricerverla (protocollo push). Si basa sul protocollo TCP/IP e quindi fornisce un servizio affidabile di consegna. SMTP e` specificato nella RFC 821 (RFC 1870 e RFC 1869).
Simple Mail Transfer Protocol (SMTP) • SMTP usa il protocollo TCP sulla porta 25 per la connessione • Il traffico SMTP avviene su LAN e su Internet ed e` fondamentalmente non-protetto. • Utenti maliziosi possono parlare SMTP direttamente su una connessione telnet con un MTA, fornendo un valore fittizio del valore del campo From:. • Quindi forgiare emails e` piuttosto facile (spam emails).
(SMTP) Headers • I campi header (“headers”) consitono di una coppia nome-valore delimitata da due punti “:” • Gli headers contengono le informazioni su come inoltrare il messaggio
(SMTP) Headers • La RFC 822 contiene le regole che specificano la sintassi degli headers (maiuscole/minuscole, lunghezza, uso di caratteri speciali, interruzione di linea, etc.). • L’RFC 822 non specifica l’ordine con cui i vari headers appaiono. L’unica richiesta e` che l’Header appaia prima del message body e separato da questo mediante una riga vuota.
Comandi SMTP di base HELLO (HELO) E` usato per identificare l’SMTP-sender all’SMTP-receiver. L’argomento contiene il nome dell’host che genera il messaggio. MAIL (MAIL) E` usato per specificare l’indirizzo di posta elettronica del mittente del messaggio. RECIPIENT (RCPT) E` usato per specificare l’indirizzo di posta elettronica del destinatario. DATA (DATA) Specifica l’inizio dell’inserimento del messaggio stesso. Il messaggio puo` essere composto solo da caratteri ASCII a 7 bit. RESET (RSET) Resetta lo stato interno del server. QUIT (QUIT) Termina una sessione.
Sintassi dei comandi SMTP (tutti) The following are the SMTP commands: HELO <SP> <domain> <CRLF> MAIL <SP> FROM:<reverse-path> <CRLF> RCPT <SP> TO:<forward-path> <CRLF> DATA <CRLF> RSET <CRLF> SEND <SP> FROM:<reverse-path> <CRLF> SOML <SP> FROM:<reverse-path> <CRLF> SAML <SP> FROM:<reverse-path> <CRLF> VRFY <SP> <string> <CRLF> EXPN <SP> <string> <CRLF> HELP [<SP> <string>] <CRLF> NOOP <CRLF> QUIT <CRLF> TURN <CRLF>
Codici di risposta del server SMTP (RFC 821) I codici di risposta consistono di 3 cifre: Esempi: 220 = Service Ready 221 = Service closing 354 = Start message input, end with CRLF.CRLF 421 = Service not available 501 = Syntax error in command arguments 500 = Command unrecognized (syntax error) 503 = Bad sequence of commands 550 = Command failed because the mailbox is unavailable (e.g. mailbox not found)
Codici di risposta del server SMTP (RFC 821) • La prima cifra specifica se il server ha accettato il comando e se puo` completare la richiesta. • Il server ha accettato il comando ma richiede un messaggio di conferma. • Il server ha eseguito il comando con successo. • Il server has capito la richiesta, ma necessita di ulteriore input. • Il server ha incontrato un errore temporaneo. Se il comando e` ripetuto senza cambiamenti potrebbe essere eseguito! • Il server ha incontrato un fatal error e non puo` essere portato a compimento.
Codici di risposta del server SMTP (RFC 821) La seconda cifra specifica ancora meglio. 0. Errore di sintassi 1. Richiesta di informazioni (e.g. HELP) 2. Stato della connessione 3. non-used 4. non-used 5. Stato del mail server La terza cifra indica ancora meglio lo stato della connessione.
Esempio: una sessione SMTP wastl@starlight: % telnet warnix 25 Trying 212.18.16.42... Connected to warnix.istac.de. 220 mail.istac.de ESMTP Postfix HELO wastl.net 250 mail.istac.de MAIL FROM: <wastl@wastl.net> 250 Ok RCPT TO: <schaffer@istac.de> 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> Subject: Test Mail X-My-Header: my header Test 1234 . 250 Ok: queued as 0EB104422 QUIT 221 2.0.0 mail.istac.de closing connection Connection closed by foreign host.
Architettura MTA Mail server • Gli elementi piu` importanti del sistema di posta elettronica sono: • Mail User Agent (MUA) ovvero il Mail Client • Mail Transfer Agent (MTA) ovvero il Mail Server • Mail Delivery Agent (MDA) • Mail Retrieval Agent (MRA) Quando il ricevente usa un mail server che non si trova sulla sua macchina locale, il mailbox deve essere letto a distanza. Questo e` fatto dall’ MRA (termine non standard ma utile).. POP/IMAP User’s mailbox MRA
POP/IMAP • Il POP, o Post Office Protocol • L’IMAP, o Internet Message Access Protocol
POP3 • Il POP3, o Post Office Protocol v3, e` usato per accedere alla posta elettronica da un server di posta e per immagazzinarla localmente. • E` usata su macchine per le quali sarebbe poco pratico avere il protocollo SMTP completo e una connessione ad internet permanente. • Queste macchine sono tipicamente dei client-PC con connessioni via modem al server di posta elettronica. • POP3 usa il protocollo TCP sulla porta 110 per la connessione • POP3 is specified in RFC 1225.
POP3 • Una sessione POP3 consistse di tre passaggi: • authorization, • transaction, • update. • Una sessione e` una conversazione strutturata tra il server POP3 ed il client message user agent (MUA, o programma di posta elettronica). • Ad ogni passo, il MUA spedisce dei comandi POP3 al server, e questo risponde con dei reply code (+OK oppure –ERR). • I reply codes “possono” essere seguiti da una stringa esplicativa e/o altre informazioni.
Authorization L’autorizzazione consiste di due comandi: USER e PASS. Dopo che il client MUA stabilisce una connessione TCP sulla well-known POP3 port 110, trasmette il comando USER con la user name come parametro. Se il server restituisce il codice +OK, il client trasmette il comando PASS con la password come parametro. Esempio: Client: USER filippo Server: +OK Client: PASS miapasswd Server: +OK filippo's maildrop has 3 messages (640 octets) ... Terminata la fase di autenticazione, il processo passa alla fase di transazione.
The POP3 Transaction Stage • La fase di transazione può consistere di una combinazione di comandi mandati dal client MUA. • I comandi sono • STAT • LIST • TOP • NOOP • RETR • DELE • RSET
The POP3 Transaction Stage Il comando STAT è usato per scaricare il numero di messaggi ed il numero totale di bytes dei messaggi. Esempio: Client: STAT Server: +OK 3 640
The POP3 Transaction Stage Il comando LIST può essere usato con o senza parametri. Senza parametri, LIST restituisce l’identificatore e la dimensione di ogni messaggio nel mailbox. Example: Client: LIST Server: +OK 3 messages (640 octets) Server: 1 220 Server: 2 200 Server: 3 220 Server: . ...
The POP3 Transaction Stage Con un argomento, LIST restituisce le informazioni sul messaggio specificato. Example: Client: LIST 2 Server: +OK 2 200 Client: LIST 4 Server: -ERR no such message, only 3 messages in maildrop
The POP3 Transaction Stage Il comando TOP lista gli headers e le prime dieci righe del messaggio. Example: Client: TOP 2 Server: +OK Server: <Gli headers, una riga bianca, e le prime 10 righe del message body>
The POP3 Transaction Stage Per verificare se il server è connesso e riceve le richieste inviate, usare il comando NOOP. Questo comando non fa nulla ma restituisce un valore positivo dal server, verificando, quindi, lo stato di connessione del server. Example: Client: NOOP Server: +OK
The POP3 Transaction Stage Il comando RETR scarica il messagio specificato che viene quindi gestito internamente dal MUA. Example: Client: RETR 1 Server: +OK 220 octets Server: <The server transmits the message to the MUA> Server: .
The POP3 Transaction Stage Il comando DELE marca un messaggio per la cancellazione, e RSET riporta tutti i messaggi nello stato di non cancellato. Notare che la vera e propria eliminazione del messaggio non avviene prima della ultima fase di update (aggiornamento). Fino a quel momento I messagi possono essere marcati e riportati allo stato di non marcati. Example: Client: DELE 1 Server: +OK message 1 deleted Client: RSET Server: +OK maildrop has 3 messages (640 octets)
Update La fase di aggiornamento (update) avviene nel momento in cui il client spedisce il comando QUIT e termina la connessione. Ogni messaggio marcato per la cancellazione sarà eliminato come parte della fase di aggiornamento. Example: Client: QUIT Server: +OK starfleet POP3 server signing off
Example: Pop3 session wastl@starlight: % telnet warnix 110 Trying 212.18.16.42... Connected to warnix.istac.de. +OK warnix Cyrus POP3 v1.6.22 server ready USER filippo +OK Name is a valid mailbox PASS mypasswd +OK Maildrop locked and ready STAT +OK 2 1505 LIST +OK scan listing follows 1 1093 2 412 . RETR 2 +OK Message follows Return-Path: <wastl@wastl.net> …………
Example: Pop3 session (cont.) +OK Message follows Return-Path: <wastl@wastl.net> Received: from wastl.net (wastl.istac.de [212.18.16.58]) by mail.istac.de (Postfix) with SMTP id 0EB104422 for <filippo@istac.de>; Tue, 12 Sep 2000 13:19:34 +0200 (CEST) Subject: Test Mail X-My-Header: my_header Message-Id: <20000912111934.0EB104422@mail.istac.de> Date: Tue, 12 Sep 2000 13:19:34 +0200 (CEST) From: wastl@wastl.net Test 1234 . DELE 2 +OK message deleted QUIT +OK
IMAP • L’ IMAP, o Internet Message Access Protocol, puo` essere considerato l’estensione del protocollo POP. • Esso prevede • gestione del mailbox (create, delete, rename, manipulate remotemailboxes) • gestione remota dei messaggi (delete, move, setting flags, read,store, . . . ) • sincronizzazione del mailbox • ricerca di messaggi
IMAP (cont.) • L’ Internet Message Access Protocol, Version 4 rev1 (IMAP4rev1) permette ad un client di accedere e manipolare i messaggi su un server remoto. • RFC 2060 • IMAP usa il protocollo TCP sulla porta 143 per la connessione • IMAP4rev1 permette la manipolazione di folders remoti,chiamati ”mailboxes”, in modo equivalente alla gestione di mailboxes locali. • IMAP4rev1 include operazioni per creare, cancellare e rinominare mailboxes; controllare l’arrivo di messaggi; cancellare permanentemente messaggi; modificare flags; ricercare e selezionare gli attributi dei messaggi, selezionare e scaricare testo e/o porzioni di testo. • Messaggi inIMAP4rev1 sono accedibili tramite numeri.
Stati della sessione IMAP • IMAP e` un protocollo piu` complesso del POP3 e quindi possiede molti piu` comandi. I comandi IMAP possono essere eseguiti a seconda dello “stato” in cui si trova il protocollo. • Nonauthenticated state: In non-authenticated state, the client MUST supply authentication credentials before most commands will be permitted. This state is entered when a connection starts unless the connection has been pre- authenticated. • Authenticated state: In authenticated state, the client is authenticated and MUST select a mailbox to access before commands that affect messages will be permitted. This state is entered when a pre-authenticated connection starts, when acceptable authentication credentials have been provided, or after an error in selecting a mailbox. • Selected state: In selected state, a mailbox has been selected to access. This state is entered when a mailbox has been successfully selected. • Logout state: In logout state, the connection is being terminated, and the server will close the connection. This state can be entered as a result of a client request or by unilateral server decision.
Example: IMAP session wastl@starlight: % telnet warnix.istac.de 143 Trying 212.18.16.42... Connected to warnix.istac.de. * OK warnix Cyrus IMAP4 v1.6.22 server ready a01 CAPABILITY * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS X-NON-HIERARCHICAL-a01 OK Completed a02 LOGIN schaffer Secret a02 OK User logged in a03 SELECT INBOX * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] * 2 EXISTS * 1 RECENT * OK [UNSEEN 2] * OK [UIDVALIDITY 956751214] * OK [UIDNEXT 8] a03 OK [READ-WRITE] Completed
Example: IMAP session (cont.) a04 FETCH 2 (FLAGS BODY[HEADER.FIELDS (DATE FROM)]) * 2 FETCH (FLAGS (\Recent \Seen) BODY[HEADER.FIELDS (DATE FROM)] {71} Date: Wed, 13 Sep 2000 13:27:14 +0200 (CEST) From: wastl@wastl.net ) a04 OK Completed a05 logout * BYE LOGOUT received a05 OK Completed wastl@starlight: %
Example 2: IMAP session wastl@starlight: % telnet warnix.istac.de 143 * OK warnix Cyrus IMAP4 v1.6.22 server ready a01 LOGIN schaffer Secret a01 OK User logged in a02 CREATE INBOX.myfolder a02 OK Completed a03 SELECT INBOX.myfolder * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] * 0 EXISTS * 0 RECENT * OK [UIDVALIDITY 968845850] * OK [UIDNEXT 1] a03 OK [READ-WRITE] Completed a04 SELECT INBOX * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] * 2 EXISTS * 0 RECENT * OK [UIDVALIDITY 956751214] * OK [UIDNEXT 8] a04 OK [READ-WRITE] Completed a05 COPY 2 INBOX.myfolder a05 OK [COPYUID 968845850 7 1] Completed
Example: IMAP session (cont.) a06 SELECT INBOX.myfolder * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] * 1 EXISTS * 1 RECENT * OK [UIDVALIDITY 968845850] * OK [UIDNEXT 2] a06 OK [READ-WRITE] Completed a07 LOGOUT * BYE LOGOUT received a07 OK Completed wastl@starlight: %
Example 3: IMAP session wastl@starlight: % telnet warnix.istac.de 143 Trying 212.18.16.42... Connected to warnix.istac.de. * OK warnix Cyrus IMAP4 v1.6.22 server ready a01 LOGIN schaffer Secret a01 OK User logged in a02 CREATE user.testusr2 a02 OK Completed a03 SETQUOTA user.testusr2 (STORAGE 500) a03 OK Completed a04 GETQUOTA user.testusr2 * QUOTA user.testusr2 (STORAGE 0 500) a04 OK Completed a05 LOGOUT * BYE LOGOUT received a05 OK Completed wastl@starlight: %
MIME MIME = Multipurpose Internet Mail Extensions • Estende le caratteristiche della RFC 822 per permettere alle e-mail di trasportare contenuti non-testuali, caratteri non-ASCII, messaggi lunghi. • Usa campi header in piu` rispetto a quelli specificati nella RFC 822. • Supporta una varieta` di tipi di contenuto ma, per ragioni di compatibilita` l’intero messaggi e` comunque codificato in ASCII per compatibilita`. • Specificata nelle RFCs 2045-2049.
MIME specifica 5 nuovi campi header: MIME-Version (deve essere 1.0) Content-Type Content-Transfer-Encoding Content-ID - optional Content-Description - optional MIME headers