Upload
ponzio-alfieri
View
231
Download
5
Embed Size (px)
Citation preview
1
F. Castiglione
Servizi Internet di base
Email (smtp, pop, imap, webmail)
Filippo Castiglione, IAC – CNR, Roma
2
F. Castiglione
Argomenti
1
2
3
SMTP: descrizione, RFC di rif erimento
MI ME: descrizione, RFC di rif erimento
POP: descrizione, RFC di rif erimento, versioni sicure
I MAP: descrizione, RFC di rif erimento, versioni sicure
Delivery Service Notifi cation (DSN): descrizione, RFC di rif erimento
Message Disposition Notifi cation (MDN): descrizione, RFC di rif erimento
4
5
6
7
8
I l fi le sendmail.cf
I l fi le sendmail.cw
I l fi le relay-domains
I l fi le aliases
9
10
Origine ed evoluzione del servizio
Architettura
Tecnolgie
Sendmail
Webmail
Bibliografi a-Sitografi a
Glossario termini
Piattaforme HW/ SW
I nstallazione
Le versioni: diff erenze e similitudine
I fi le necessari
3
F. Castiglione
Origine ed evoluzione del servizio
Cos'è la posta elettronica?
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.
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).
4
F. Castiglione
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).
5
F. Castiglione
Un esempio di messeggio RFC 822
From: [email protected]: [email protected]: [email protected]: RFC 822 exampleDate: 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.
Message Header
Message Body
6
F. Castiglione
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.
7
F. Castiglione
Vantaggi e limiti della posta elettronica
Svantaggi
• Nome del file allegato: deve essere un nome breve e non composto da simboli “strani” (es: asterischi, virgole, punti e virgola, etc....)
• Virus
• Nessuna certezza sull’identità del mittente
• Nessuno standard per la “ricevuta di ritorno”
8
F. Castiglione
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.
9
F. Castiglione
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
10
F. Castiglione
Architettura
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)
MUAMail
ClientMTAMail server
11
F. Castiglione
Architettura
MUA = Mail User Agent (Mail Client)MTA = Mail Transport Agent (Mail Server)MDA = Mail Delivery Agent
LAN LA
N
InternetInternet
MUAPC Mittente
MUAPC Destinatario
Sending MTA
SMTP server
MDA writes on the user mailbox
User’s mailbox
SMTP server
Receiving MTA
12
F. Castiglione
I passi concettuali
1. MUA = Mail client e` un programma che gira sulla macchina del Sender, e.g. Microsoft Outlook o Netscape Messenger.
2. L’utente fornisce i valori dei campi To: e Subject: ed il corpo del messaggio.
3. 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.
4. Il MUA usa un protocollo chiamato SMTP per spedire il messaggio RFC 822 all’MTA.
13
F. Castiglione
I passi concettuali (cont.)
5. 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:.
6. 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.
7. Alcuni server MTA intermediari posso essere coinvolti.
8. 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).
Nota. MRA non usano il protocollo SMTP per recuperate i messaggi da un MTA, ma utilizza il protocollo POP o il piu` recente IMAP.
14
F. Castiglione
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)
15
F. Castiglione
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).
16
F. Castiglione
(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
17
F. Castiglione
(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.
18
F. Castiglione
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.
19
F. Castiglione
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>
20
F. Castiglione
Codici di risposta del server SMTP (RFC 821)
I codici di risposta consistono di 3 cifre:
Esempi:
220 = Service Ready221 = Service closing354 = Start message input, end with CRLF.CRLF421 = Service not available501 = Syntax error in command arguments500 = Command unrecognized (syntax error)503 = Bad sequence of commands550 = Command failed because the mailbox is unavailable (e.g.
mailbox not found)
21
F. Castiglione
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.
1. Il server ha accettato il comando ma richiede un messaggio di conferma.
2. Il server ha eseguito il comando con successo.
3. Il server has capito la richiesta, ma necessita di ulteriore input.
4. Il server ha incontrato un errore temporaneo. Se il comando e` ripetuto senza cambiamenti potrebbe essere eseguito!
5. Il server ha incontrato un fatal error e non puo` essere portato a compimento.
22
F. Castiglione
Codici di risposta del server SMTP (RFC 821)
La seconda cifra specifica ancora meglio.
0. Errore di sintassi1. Richiesta di informazioni (e.g. HELP) 2. Stato della connessione3. non-used 4. non-used 5. Stato del mail server
La terza cifra indica ancora meglio lo stato della connessione.
23
F. Castiglione
Error code SMTP/ESMTP error message description211 System status, or system help reply
214 Help message (Information on how to use the receiver or the meaning of a particular non-standard command; this reply is useful only to the human user)
220 Service ready
221 Service closing transmission channel
250 Requested mail action okay, completed
251 User not local; will forward to
354 Start mail input; end with .
421 Service not available, closing transmission channel (This may be a reply to any command if the service knows it must shut down)
450 Requested mail action not taken: mailbox unavailable (E.g., mailbox busy)
451 Requested action aborted: local error in processing
452 Requested action not taken: insufficient system storage
500 Syntax error, command unrecognized (This may include errors such as command line too long)
501 Syntax error in parameters or arguments
502 Command not implemented
503 Bad sequence of commands
504 Command parameter not implemented
550 Requested action not taken: mailbox unavailable (E.g., mailbox not found, no access)
551 User not local; please try
552 Requested mail action aborted: exceeded storage allocation
553 Requested action not taken: mailbox name not allowed (E.g., mailbox syntax incorrect)
554 Transaction failed
24
F. Castiglione
Esempio: una sessione SMTP
wastl@starlight: % telnet warnix 25Trying 212.18.16.42...Connected to warnix.istac.de.220 mail.istac.de ESMTP PostfixHELO wastl.net250 mail.istac.deMAIL FROM: <[email protected]>250 OkRCPT TO: <[email protected]>250 OkDATA354 End data with <CR><LF>.<CR><LF>Subject: Test MailX-My-Header: my headerTest 1234.250 Ok: queued as 0EB104422QUIT221 2.0.0 mail.istac.de closing connectionConnection closed by foreign host.
25
F. Castiglione
Architettura
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)..
MRAMail server
MTA
User’s mailbox
POP/IMAP
26
F. Castiglione
POP/IMAP
• Il POP, o Post Office Protocol
• L’IMAP, o Internet Message Access Protocol
27
F. Castiglione
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.
28
F. Castiglione
POP3
Una sessione POP3 consistse di tre passaggi:
1. authorization, 2. transaction, 3. 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.
29
F. Castiglione
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 filippoServer: +OK Client: PASS miapasswdServer: +OK filippo's maildrop has 3 messages (640 octets) ...
Terminata la fase di autenticazione, il processo passa alla fase di transazione.
30
F. Castiglione
The POP3 Transaction Stage
La fase di transazione può consistere di una combinazione di comandi mandati dal client MUA.
I comandi sono
STATLISTTOP NOOPRETRDELERSET
31
F. Castiglione
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
32
F. Castiglione
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
33
F. Castiglione
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
34
F. Castiglione
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
35
F. Castiglione
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
36
F. Castiglione
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
37
F. Castiglione
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)
The POP3 Transaction Stage
38
F. Castiglione
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
Update
39
F. Castiglione
Example: Pop3 session
wastl@starlight: % telnet warnix 110Trying 212.18.16.42...Connected to warnix.istac.de.+OK warnix Cyrus POP3 v1.6.22 server readyUSER filippo+OK Name is a valid mailboxPASS mypasswd+OK Maildrop locked and readySTAT+OK 2 1505LIST+OK scan listing follows1 10932 412.RETR 2+OK Message followsReturn-Path: <[email protected]>… … … …
40
F. Castiglione
Example: Pop3 session (cont.)
+OK Message followsReturn-Path: <[email protected]>Received: from wastl.net (wastl.istac.de [212.18.16.58])by mail.istac.de (Postfix) with SMTP id 0EB104422for <[email protected]>; Tue, 12 Sep 2000 13:19:34 +0200 (CEST)Subject: Test MailX-My-Header: my_headerMessage-Id: <[email protected]>Date: Tue, 12 Sep 2000 13:19:34 +0200 (CEST)From: [email protected] 1234.DELE 2+OK message deletedQUIT+OK
41
F. Castiglione
IMAP
L’ IMAP, o Internet Message Access Protocol, puo` essere considerato l’estensione del protocollo POP.
Esso prevede
(a) gestione del mailbox (create, delete, rename, manipulate remote mailboxes)
(b) gestione remota dei messaggi (delete, move, setting flags, read, store, . . . )
(c) sincronizzazione del mailbox
(d) ricerca di messaggi
42
F. Castiglione
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 in IMAP4rev1 sono accedibili tramite numeri.
43
F. Castiglione
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.
44
F. Castiglione
Example: IMAP session
wastl@starlight: % telnet warnix.istac.de 143Trying 212.18.16.42...Connected to warnix.istac.de.* OK warnix Cyrus IMAP4 v1.6.22 server readya01 CAPABILITY* CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS X-NON-HIERARCHICAL-a01 OK Completeda02 LOGIN schaffer Secreta02 OK User logged ina03 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
45
F. Castiglione
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: [email protected])a04 OK Completeda05 logout* BYE LOGOUT receiveda05 OK Completedwastl@starlight: %
46
F. Castiglione
Example 2: IMAP session
wastl@starlight: % telnet warnix.istac.de 143* OK warnix Cyrus IMAP4 v1.6.22 server readya01 LOGIN schaffer Secreta01 OK User logged ina02 CREATE INBOX.myfoldera02 OK Completeda03 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] Completeda04 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] Completeda05 COPY 2 INBOX.myfoldera05 OK [COPYUID 968845850 7 1] Completed
47
F. Castiglione
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] Completeda07 LOGOUT* BYE LOGOUT receiveda07 OK Completedwastl@starlight: %
48
F. Castiglione
Example 3: IMAP session
wastl@starlight: % telnet warnix.istac.de 143Trying 212.18.16.42...Connected to warnix.istac.de.* OK warnix Cyrus IMAP4 v1.6.22 server readya01 LOGIN schaffer Secreta01 OK User logged ina02 CREATE user.testusr2a02 OK Completeda03 SETQUOTA user.testusr2 (STORAGE 500)a03 OK Completeda04 GETQUOTA user.testusr2* QUOTA user.testusr2 (STORAGE 0 500)a04 OK Completeda05 LOGOUT* BYE LOGOUT receiveda05 OK Completedwastl@starlight: %
49
F. Castiglione
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.
50
F. Castiglione
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
51
F. Castiglione
7 principali content-types
15 sub-types
Esempi:
• text - plain or enriched• multipart• message, image, video, audio• application - postscript, x-zip- compressed, …
MIME Content-Type
52
F. Castiglione
• Multipart content-type ha 4 sub-types.
• Il piu` importante e` il Multipart/mixed, che indica che il body contiene “multiple parts”.
• Ogni parte puo` essere un MIME message a sua volta – quindi si puo` annidare un messaggio MIME ad ogni livello.
• Le varie parti sono separate da un certo delimitatore ( boundary string) definito nel campo Content-Type.
MIME Content-Type (cont.)
53
F. Castiglione
MIME: Content-Type (cont.)
54
F. Castiglione
Content-Transfer-Encoding
• RFC 822 e-mails possono contenere solo caratteri ASCII.
• I messaggi MIME possono trasportare dati arbitrari
• Il campo Content-Transfer-Encoding indica come sono codificati i dati da raw ad ASCII.
• base64 e` una codifica comune:– 24 data bits (3 bytes) at a time encoded to 4 ASCII
characters.
55
F. Castiglione
• ASCII 7 bit (linea <= 1000 char)• ASCII 8 bit (viola il protocollo)• File binari: codifica base64 (protezione ASCII)
24 bit (3x8)
6 bit 6 bit 6 bit 6 bit
Un carattere ASCII legale AB…, ab…, 012…, + -(ritorni e a capo ignorati)
• Codifica stampabile (quoted printable encoding): ASCII a 7 bit, caratteri > 127 come:
=due cifre esadecimali (=af =2e)
MIME: Encoding
56
F. Castiglione
MIME: separatore
57
F. Castiglione
Esempio: MIME Message
From: [email protected]: [email protected]: That paperDate: Wed, 13 Nov 2002 19:55:47 -0000MIME-Version: 1.0Content-Type: multipart/mixed; boundary="---next part"------next partContent-Type: text/plain; charset="iso-8859-1"Content-Transfer-Encoding: 7bit
John, questo e’ l’articolo di cui ti parlavo. Carlo------next partContent-Type: application/x-zip-compressed; name=“paper.zip"Content-Transfer-Encoding: base64Content-Disposition: attachment; filename= "paper.zip"
rfvbnj756tbGHUSISyuhssia9982372SHHS3717277vsgGJ77JS77HFyt6GS8------next part--
58
F. Castiglione
Delivery Service Notification (DSN)
Delivery Status Notification (DSN)
Ricevuta inviata al mittente quando viene scritto il messaggio nel mail system del destinatario
NON e’ disabilitabile E’ un formato STANDARD predefinito Non tutti gli MUA ne permettono la richiesta Non tutti gli MTA, GW, LS la supportano
59
F. Castiglione
Message Disposition Notification (MDN)
Message Delivery Notification (MDN)
Ricevuta al mittente che viene inviata su azione del “lettore” sul messaggio dentro il mail system
E’ disabilitabile E’ in formato STANDARD predefinito Non tutti gli MUA ne permettono la richiesta Non tutti gli MUA (e simili) e MTA la supportano
60
F. Castiglione
Webmail
• E’ un software che consente la consultazione delle email tramite interfaccia web.
• E’ installato in un web server ed interagisce con i mail server POP, SMTP).
• Visualizza i risultati in puro codice HTML attraverso il web server.
• POP no IMAP• 10 MByte di spazio disco• Simile ad un mail reader (Outlook, Eudora) ma su
web
61
F. Castiglione
Perche` usare webmail?
• Interfaccia comune– Training non necessario
• Machine independent – Basta avere un browser di qualsiasi tipo
(Netscape, MS-IExplorer, Mozilla …) ed un account
• Mobilita` e facilita` d’uso– Ci si puo` connettere da qualsiasi postazione
internet– Non necessita nessun setup
62
F. Castiglione
Come funziona Webmail
Webmail server POP
server(mailbox)
SMTPserver
Spedizione email
Lettura email
63
F. Castiglione
Sendmail
Servizi Internet di base
64
F. Castiglione
Introduzione a sendmail
• Creato da Eric Allman (Berkeley)• MUA (Mail User Agent) e MTA (Mail Transport
Agent)
I MUAs sono programmi che permetteno di creare e inviare posta elettronica. Gli Agenti di Transporto (MTA), sono incaricati di recapitare la posta a destinazione.
• Sendmail e`, di fatto, l’agente di transporto di posta su Internet. Anche se principalmente usato come MTA, sendmail puo` essere usato come MUA (nonostante non abbia alcuna interfaccia utente).
65
F. Castiglione
Funzioni del sendmail
• Raccogliere le emails provenienti da un MUA, o da un MTA (per esempio, un’altro sendmail).
• Instradare il messaggi al corretto MTA di destinazione usando le informazioni del DNS di competenza.
• Determinare una strategia de distribuzione della posta, basandosi sulle informazioni sul destinatario contenuta nello header:
– Se il destinatario e` locale, sendmail spedisce la mail al programma locale di distribuzione della posta.
– Se il destinatario non e` locale, sendmail utilizza il DNS per determinare l’host a cui inviare il messaggio. Per trasferire il messaggio, sendmail inizia una sessione SMTP con l’MTA del detto host.
66
F. Castiglione
Funzioni del sendmail (cont.)
– Se non e` possibile inviare il messaggio a destinazione, sendmail salva il messaggio in una coda e ritenta di inviare solo dopo un certo prefissato lasso di tempo. Se il messaggio non puo` essere inviato entro un certo lasso di tempo massimo, il messaggio viene restituito al mittente con un messaggio di errore. Sendmail garantisce che ogni messaggio arrivi correttamente a destinazione oppure, in caso di errore, ne garantisce la notifica (nessun messaggio viene perso).
• Cambiare il formato del messaggio prima di passarlo alla macchina seguente. A seconda del tipo di connessione con una specifica macchina, o a seconda dell’ MTA al quale va diretta la email, e` necessario cambiare il formato dell’indirizzo di destinazione e/o alcuni campi header. (Per motivi di compatibilita`.)
67
F. Castiglione
Funzioni del sendmail (cont.)
• Un’altra funzione importante e` quella di permettere l’uso di “alias”, usato (tra le altre cose) per gestire mailing-lists.
• Infine, permette l’esecuzione come MUA. Sebbene non possegga nessuna interfaccia utente, sendmail permette l’invio di messaggi mediante linea di comando.
Queste (ed altre) caratteristiche del sendmail devono essere configurate e di conseguenza variano da sistema e sistema. La loro definizione e` contenuta nel file di configurazione (sendmail.cf).
68
F. Castiglione
sendmail come MUA
• Come MUA, il sendmail legge per default lo standard input fino a raggiungere il carattere end-of-file (EOF) o una linea che contiene solo un punto (“.”). In quel momento spedisce una copia di quel messaggio ad ognuno dei destinatari (specificato sulla riga comando). In seguito, inoltra il messaggio consultando il DNS (se necessario).
• Sendmail determina come instradare un messaggio anche in base alle informazioni contenute nel file di configurazione.
69
F. Castiglione
sendmail come MUA: Esempi
1. /usr/lib/sendmail [email protected]
hi, how are you doing there?
...
2. cat testo.txt | /usr/lib/sendmail [email protected]
3. /usr/lib/sendmail –t [email protected]
From: [email protected]
Date: ...
70
F. Castiglione
sendmail come MTA
• Sendmail viene maggiormente usato come demone per spedire e ricevere posta SMTP (solo da superuser).
• sendmail gira come processo residente in ascolto sulla porta TCP 25. • Quando riceve una richiesta di connessione sendmail crea un
processo figlio che gestisce il messaggio, mentre il processo padre continua ad ascoltare la porta 25.
• Per usare sendmail come demone, (normalmente si fa partire da uno script di inizializzazione del sistema), si lancia con i seguenti parametri (esempio) :
sendmail –bd –q12m
• In questo modo, sendmail viene eseguito in modalita` background. L’opzione –q12m indica che la “coda” dei messaggi viene aggiornata ogni 12 minuti.
71
F. Castiglione
La cola de correo
• Quando un messaggi non puo` raggiungere la sua destinazione a causa di una connessione mancante (normalmente perche` la macchina di destinazione e` spenta oppure sovraccarica), il messaggio viene immagazzinato in una coda locale, e l’invio viene rimandato.
• La coda locale si trova in /var/spool/mqueue. In questo direttorio vengono creati i files temporanei per ogni email in coda. Il formato dei nomi e`:– df.... (Data, message body) – qf.... (Queue control file) – tf.... (Temporary qf rewrite image) – xf.... (opening-closing Transcript file)
72
F. Castiglione
Gli aliases
• Sendmail permette l’uso di aliases (pseudonimi):
– Uso di nomi alternativi (nicknames) per uso individuale.– Inviare il messaggi ad un’altra destinazione, anche se
l’indirizzo destinatario e` locale.– Creare mailing-lists.
73
F. Castiglione
Le liste di distribuzione (mailing-lists)
• Una funzione del sendmail tramite l’uso di aliases:owner-<lista>: <nome>
dove <lista> e` il nome della lista di distribuzione (mailing-list). La persona specificata in <nome> e` la persona responsabile della lista (utile per avere un riferimento in caso di errori).
Esempio:amici: fabrizio, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], colleghi: filippo
74
F. Castiglione
Il file .forward
• A livello di utente, sendmail permette di specificare un altro indirizzo a cui indirizzare i messaggi in arrivo $HOME/.forward.
75
F. Castiglione
Il file di configurazione sendmail.cf
Il file di configurazione sendmail.cf e` letto ogni volta che sendmail viene inizializzato.
Contiene informazioni necessarie per l’esecuzione di sendmail.
• riporta la locazione di file e direttori importanti• dei permessi per quei files• specifica regole• determina il comportamento di sendmail
76
F. Castiglione
Il file di configurazione sendmail.cf (cont.)
Sendmail.cf e` complesso!Es:
R$+%$=WCO @ % !C[[C{Accept}OK RELAYC{tls}VERIFY ENCRDZ8.11.6O Timeout.connect=1mO SendMimeErrors=TrueR$* <@ $+ > $* $: < $2 > $1 < @ $2 > $3R< $+ . > $* $: < $1 > $2R< $+ > $* $: < $(mailertable $1 $) > $2 R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 R< $+ > $* $: $>Mailertable <$1> $2
Fortunatamente (dalla versione 8) il file sendmail.cf si costruisce in maniera (quasi) automatica.
77
F. Castiglione
m4 Configuration Files
• m4 e` un macro preprocessor che produce un file di configurazione per sendmail (sendmail.cf) da un file con estensione “.mc”
• Le macro usate nel file .mc sono:
– define definisce una macro– undefine elimina una precedente definizione di macro– include include un file– dnl elimina I caratteri fino alla fine della linea– divert reindirizza file di output
78
F. Castiglione
Types of Configuration
• OSTYPE() definisce il SO– Linux, Sgi, Solaris– Specifica i direttori per sendmail incluso il direttorio delle
code e la directory di spool– Sceglie il tipo di SO (e.g. linux)
• VERSIONID() specifica l’id del sendmail
79
F. Castiglione
More Configuration
• DOMAIN() permette di includere files di dominio che riportano informazioni specifiche del sito locale– Use generic for small sites– Large sites spam, databases, tables
• MAILER() delivery agent specifications.– Types:
• Local, smtp, fax, usenet, procmail, …
– Used• local and smtp
• MAILER(`local’) MAILER(`smtp’)
– Computer science dept:• Procmail, local, and smtp
80
F. Castiglione
Even more Configuration
• FEATURE()– Opzioni che cambiano il normale comportamente di sendmail– use_cw_file – necessary, names of all local hosts for which this
host accepts• “whatever.com”, “mail.whatever.com”
– redirect – allows forwarding– access_db – necessary, consists of ips, or domains
• Specify rejects, OK, discard or relay for machines to use smtp on that server.• Must use makemap hash /etc/mail/access < /etc/mail/access
– nocanonify• Avoid dns lookups locally. • Used for client transport agents
– nullclient • FEATURE(`nullclient’,`mail.whatever.com’)• All mail is delivered to the mailserver
81
F. Castiglione
No not more….. configuration
• MASQUERADE_AS()– allow multiple machines hide behind one single identity
• MASQUERADE_AS(`cs.umbc.edu’)• MASQUERADE_AS(`whatever.com’)
• MAIL_HUB– Automatically done– Incoming mail smtp:mail.whatever.com
• SMART_HOST– Automatic with masquerade– Outgoing mail smtp:mail.whatever.com
82
F. Castiglione
Configurazione: esempio
• Server configuration– OSTYPE(`linux’)– DOMAIN(`generic’)– FEATURE(`use_cw_file’)– FEATURE(`access_db’)– MASQUERADE_AS(`whatever.com’)– MAILER(`local’)– MAILER(`smtp’)
• Client configuration– OSTYPE(`linux’)– FEATURE(`nocanonify’)– FEATURE(`nullclient’, `mail.whatever.com’)
83
F. Castiglione
/etc/aliases
• Necessario per il funzionamento di sendmail• System-wide config file mantenuto dall’ amministratore di
sistema– E.g. Computer Science Dept. usa email lists, e aliases per il
personale docente
• Deve sempre contenere postmaster
• Puo` contentere inclusioni di altri files per lists o altre interfacce a majordomo (CS) o listproc come (OIT)– Majordomo = FREE– Listproc = expensive– Configurazione per sendmail deve abilitare /bin/sh per majordomo o
listproc
84
F. Castiglione
Running Sendmail
• Dovrebbe sempre essere lanciato dagli RC scripts (in fase di boot del sistema)
• Linux ha un rc file gia` configurare se sendmail e` installato
• kill –TERM pid per terminare sendmail• /usr/sbin/sendmail k-bd –q1h & per rilanciarlo• mv mqueue if queue is clogged, located in
/var/spool/mqueue
85
F. Castiglione
Various Types of Clients with Different Operating Systems
• Per ogni OS e per ogni versione, compila un nuovo sendmail
• Assicurati che tutti i clients usino la stessa versione di sendmail altrimenti sendmail non interagira` bene con il client
• Crea un nuovo sendmail.cf file per ogni tipo di OS supportato. Usa m4 interpreter– Solaris– Linux– Irix
86
F. Castiglione
Fai un backup della configurazione corrente cp /etc/sendmail.cf /etc/sendmail.cf.backup
Usa il metodo piu` semplice (m4) Modifica /etc/mail/sendmail.mc
vi /etc/mail/sendmail.mc m4 /etc/mail/sendmail.mc > /etc/sendmail.cf.new
Prova il nuovo configuration file /usr/lib/sendmail –bt –c /etc/sendmail.cf.new Prova gli indirizzi di email
Installa la nuova configurazione cp /etc/sendmail.cf.new /etc/sendmail.cf
Fai ripartire il sendmail come demone service sendmail restart
Ancora sulla configurazione di sendmail
87
F. Castiglione
Fine
FINE
88
F. Castiglione
Glossario dei termini
89
F. Castiglione
Bibliografia-Sitografia