la psota elettronica - polito.itlioy/01nbe/email.pdfarchitettura internet mail rfc-5598...
TRANSCRIPT
La posta elettronicanell'architettura TCP/IP
Antonio Lioy< [email protected] >
Politecnico di TorinoDip. Automatica e Informatica
Applicazioni di rete indirizzi logici (applicativi) per identificare gli utenti del servizio applicativo
protocollo applicativo (sopra TCP/UDP e IP) L7, ossia tra i due end-point applicativi
formato dati dati significativi per l'applicazione
per ciascun punto occorre definire: lessico = i caratteri ammissibili sintassi = composizione di richieste e risposte semantica (parziale) = significato
© A.Lioy (Politecnico di Torino, 2013-2020) 2
Indirizzi reali e virtuali l’indirizzo RFC-822 è:
casella-postale @ dominio-postale
la casella postale può essere: un nome di utente (es. login) un identificativo virtuale (es. "casella funzionale")
il dominio postale può essere: un nome (FQDN) o indirizzo del server di posta un dominio di posta virtuale
© A.Lioy (Politecnico di Torino, 2013-2020) 3
Indirizzi RFC-822 tre possibilità: indirizzo commento < indirizzo > indirizzo ( commento )
esempio: [email protected] Antonio Lioy <[email protected]> [email protected] (Antonio Lioy)
occhio alle fregature! "Prof. Antonio Lioy <[email protected]>
© A.Lioy (Politecnico di Torino, 2013-2020) 4
Dai domini postali agli host il dominio postale è un concetto logico ma per trasmettere la
posta con SMTP occorre identificare un host fisico con un indirizzo IP preciso
il dominio è virtuale ed ha quindi un mail exchanger? nslookup -q=MX dominio-postale posta inviata ad uno degli MX host (contattati in ordine di
preferenza) se non esiste un MX, il dominio coincide forse con un host? nslookup -q=A dominio-postale posta inviata all’host
se non esiste né MX né A allora è impossibile consegnare la posta al destinatario (dominio di posta errato)
© A.Lioy (Politecnico di Torino, 2013-2020) 5
Dai domini postali agli host: esempio
© A.Lioy (Politecnico di Torino, 2013-2020) 6
nslookup –q=MX polito.it.Server: 192.168.1.1Address: 192.168.1.1#53Non-authoritative answer:polito.it mail exchanger = 10 mx.polito.it.
nslookup –q=A polito.it.Server: 192.168.1.1Address: 192.168.1.1#53Non-authoritative answer:*** Can't find polito.it: No answer
nslookup –q=MX cisco.com.Server: 192.168.1.1Address: 192.168.1.1#53Non-authoritative answer:cisco.com mail exchanger = 30 aer-mx-01.cisco.com.cisco.com mail exchanger = 20 rcdn-mx-01.cisco.com.cisco.com mail exchanger = 10 alln-mx-01.cisco.com.
nslookup –q=A cisco.comServer: 192.168.1.1Address: 192.168.1.1#53Non-authoritative answer:Name: cisco.comAddress: 72.163.4.185
Dai domini postali agli host: esempio
© A.Lioy (Politecnico di Torino, 2013-2020) 7
MHS (Message Handling System)
MUA (Message User Agent) MSA (Message Submission Agent) MTA (Message Transfer Agent) MS (Message Store)
MS MS
MSAMTA
MSAMTA
MTA chain
MUAMUA
© A.Lioy (Politecnico di Torino, 2013-2020) 8
Architettura Internet mail RFC-5598 "Internet Mail Architecture" in alcuni casi, oltre a MUA, MSA, MTA e MS, si distinguono
altri server lato ricevente: MDA (Mail Delivery Agent) l'ultimo MTA della catena che ha l'incarico di consegnare la
posta al MS MRA (Mail Retrieval Agent) elemento incaricato di prelevare la posta dal MS e metterla
in un deposito locale accessibile al MUA in pratica un MUA senza interfaccia utente, da usarsi con
un MUA incapace di prelevare la posta dal MS
© A.Lioy (Politecnico di Torino, 2013-2020) 9
E-mail in client-server
MUA(es. Thunderbird,Outlook Express)
Mailserver( MSA )
Post Office( MS )
SMTP
POP, IMAP
MTA ...SMTP
... MTA SMTP
© A.Lioy (Politecnico di Torino, 2013-2020) 10
Webmail
web server
virtualMUA
Mailserver( MSA )
Post Office( MS )
SMTP
POP / IMAP
MTA ...SMTP
... MTA SMTP
HTTPengine
web browser
HTTPHTML
© A.Lioy (Politecnico di Torino, 2013-2020) 11
Protocolli e porte SMTP (Simple Mail Transfer Protocol) 25/tcp (MTA) 587/tcp (MSA)
POP (Post Office Protocol) 110/tcp
IMAP (Internet Message Access Protocol) 143/tcp
sono protocolli di basso livello (si occupano solo di trasportare i messaggi, non entrano in merito al loro contenuto)
© A.Lioy (Politecnico di Torino, 2013-2020) 12
Formati dei messaggi “RFC-822” formato di un messaggio (header + body) body di puro testo contenuti non testuali (es. immagini) devono essere
trasformati in testo (es. uuencode, binhex) MIME estensione multimediale di RFC-822 body può includere anche dati non di testo trasformati automaticamente in testo da MIME
alcuni campi aggiuntivi nell’header
© A.Lioy (Politecnico di Torino, 2013-2020) 13
Messaggi "RFC-822" RFC-5322 (ex RFC-822) solo caratteri US-ASCII a 7 bit righe terminate da <CR> <LF> messaggi composti da header + body header parole chiave a inizio riga righe di continuazione iniziano con uno spazio
body separato dall’header da una riga vuota contiene il messaggio
© A.Lioy (Politecnico di Torino, 2013-2020) 14
Header RFC-822 From: mittente (logico)
Sender: mittente (operativo) Organization: organizzazione del mittente To: destinatario Subject: argomento Date: data e ora di spedizione Received: passaggi intermedi Message-Id: ID di spedizione CC: in copia a
Bcc: in copia (nascosta) a Return-Receipt-To: ricevuta di ritorno a
© A.Lioy (Politecnico di Torino, 2013-2020) 15
Ricevuta di ritorno RFC-822 collegata all’header Return-Receipt-To: non standard e deprecata ma usata da molti MUA risposta dipende da MS e/o MUA del destinatario: può non offrirla può offrirla alla ricezione o alla lettura
lo standard preferisce: RCPT TO con DSN (Delivery Status Notification, che però
copre solo la consegna ma non la lettura) l'header MDN (Message Disposition Notification, che però può
essere ignorato dal MUA)
© A.Lioy (Politecnico di Torino, 2013-2020) 16
Perché si attraversano tanti MTA? minimo due MTA concettualmente MSA e MS sono diversi dagli MTA un MTA in uscita dalla rete del mittente (con tanti MSA alle
spalle per distribuire il carico in ingresso) un MTA in ingresso nella rete del destinatario (con tanti MS
per distribuire il carico di memorizzazione e lettura dei messaggi).
in passato molti altri MTA intermedi rete non tutta TCP/IP e/o posta non RFC-822 MTA = gateway (traduzione protocollo di rete e/o formato di
posta) guardare i "Received:" per vedere gli MTA attuali: "from" e "by" indicano MTA mittente e ricevente di un passo
© A.Lioy (Politecnico di Torino, 2013-2020) 22
Received:from [130.192.180.16] (HELO antispam.polito.it)by polito.it (CommuniGate Pro SMTP 6.2.5) for [email protected];Fri, 14 Dec 2018 18:11:50 +0100
Received:from mail-it1-f177.google.com [209.85.166.177]by antispam.polito.it for <[email protected]>;Fri, 14 Dec 2018 18:11:48 +0100
Received:by mail-it1-f177.google.com for <[email protected]>;Fri, 14 Dec 2018 09:11:48 -0800 (PST)
Received:from 131-193-184-17.east.wireless.uic.edu. [131.193.184.17]by smtp.gmail.com;Fri, 14 Dec 2018 09:11:37 -0800 (PST)
Esempio: lettura header Received
© A.Lioy (Politecnico di Torino, 2013-2020) 23
Contenuti binari in RFC-822 devono essere codificati come testo tramite appositi
programmi: uuencode / uudecode in Unix binhex in MacOS
esempio: uuencode photo.gif photo.gif |
mail –s "my pic" ucl!ucb!john problema poi affrontato e risolto in modo più automatico,
completo e strutturato dal formato MIME
© A.Lioy (Politecnico di Torino, 2013-2020) 24
Il protocollo SMTP specifica base in RFC-5321 (ex RFC-821) protocollo ASCII a 7 bit il MSB del byte può essere forzato a zero o usato per la parità
(semplice controllo di errore) alfabeto US-ASCII comandi case-insensitive righe terminate da <CR><LF>
© A.Lioy (Politecnico di Torino, 2013-2020) 27
Comandi base SMTP HELO hostname
identifica l’host mittente MAIL FROM: return-path
identifica il mittente RCPT TO: forward-path
identifica il destinatario DATA
tutte le righe successive contengono un messaggio RFC-822 sino alla riga (esclusa) che contiene “.<CR><LF>”
QUITtermine della trasmissione SMTP
© A.Lioy (Politecnico di Torino, 2013-2020) 28
Codici di stato SMTP ogni risposta inizia con un codice di stato numerico a tre
cifre XYZ la prima cifra (X) fornisce il major status dell’azione
richiesta: X=1 : positive preliminary X=2 : positive completion X=3 : positive intermediate X=4 : transient negative completion X=5 : permanent negative completion
© A.Lioy (Politecnico di Torino, 2013-2020) 31
Codici di stato SMTP la seconda cifra (Y) indica la tipologia Y=0 : syntax Y=1 : information Y=2 : connections Y=5 : mail system
la terza cifra (Z) fornisce un modo per distinguere codici di risposta appartenenti alla stessa classe
risposta su più righe se lo stato è XYZ– (l’ultima riga ha solo XYZ)
© A.Lioy (Politecnico di Torino, 2013-2020) 32
Limiti quantitativi di SMTP e RFC-822 mailbox ≤ 64 caratteri domain ≤ 64 caratteri reverse / forward-path ≤ 256 caratteri comando / risposta ≤ 512 caratteri linea di testo ≤ 1000 caratteri (MUST) linea di testo ≤ 80 caratteri (SHOULD)
molti MTA forzano un CRLF dopo 78 caratteri numero di destinatari ≤ 100
© A.Lioy (Politecnico di Torino, 2013-2020) 33
Un esempio SMTP / RFC-822telnet duke.colorado.edu 25
Trying .....Connected to duke.colorado.eduEscape character is ‘^]’220 duke.colorado.edu ...
HELO leonardo.polito.it250 Hello leonardo.polito.it ... Nice to meet you!
MAIL FROM: [email protected] cat ... Sender ok
RCPT TO: [email protected] franz ... Recipient ok
DATA354 Enter mail, end with “.” on a line by itself
© A.Lioy (Politecnico di Torino, 2013-2020) 34
From: [email protected] (Antonio Lioy)To: [email protected]: vacanzeCiao Francesco,ti rinnovo l’invito a venirmi a trovare nelle tueprossime vacanze in Italia. Fammi sapere quandoarrivi.Antonio.
250 OkQUIT
221 duke.colorado.edu closing connectionconnection closed by foreign host
© A.Lioy (Politecnico di Torino, 2013-2020) 35
ESMTP Extended SMTP, definito in RFC-1869 e quindi incorporato
(con SMTP) in RFC-5321 non cambia il protocollo base ed il canale i client ESMTP devono presentarsi con:
EHLO hostname se il server ricevente parla ESMTP, deve dichiarare le
estensioni che supporta, una per riga, nella sua risposta all’EHLO
© A.Lioy (Politecnico di Torino, 2013-2020) 36
Estensioni ESMTP standard 8BITMIME (RFC-1652) nel corpo del comando DATA può ricevere dati
codificati su 8 bit rischioso! gli MTA intermedi potrebbero non supportare
questa opzione SIZE dimensione
MAIL FROM: address SIZE=dimensione (RFC-1870) dichiara la massima dimensione accettabile dal
server o la dimensione del messaggio da inviare PIPELINING (RFC-1854) invio di più comandi senza attendere risposta per
ognuno di essi (eccezione: quelli che fanno cambiare stato)
© A.Lioy (Politecnico di Torino, 2013-2020) 38
Estensione DSN(Delivery Status Notification)
estende il comando RCPT con: NOTIFY=notify-list
valori possibili: NEVER, SUCCESS, FAILURE, DELAY ORCPT=original-recipient
specifica il destinatario originale estende il comando MAIL con: RET=returned-message
valori possibili: FULL, HDRS ENVID=sender-id
identificativo creato dal mittente
© A.Lioy (Politecnico di Torino, 2013-2020) 39
Esempi ESMTP positivi mailer ESMTP senza estensioni:
mailer ESMTP con estensioni:
220 mail.polito.it - SMTP service readyEHLO mailer.x.com
250 Hello mailer.x.com - nice to meet you!
220 mail.polito.it - SMTP service readyEHLO mailer.x.com
250-Hello mailer.x.com - nice to meet you!250-SIZE 26214400250 8BITMIME
© A.Lioy (Politecnico di Torino, 2013-2020) 40
220 mail.polito.it - SMTP service readyEHLO mailer.x.com
500 Command not recognized: EHLO
Esempio ESMTP negativo il mailer non conosce il protocollo ESMTP:
© A.Lioy (Politecnico di Torino, 2013-2020) 41
SMTP-Auth estensione di ESMTP definita in RFC-4954 comando AUTH + opzioni di MAIL FROM per autenticare un client … … prima di accettarne i messaggi!!! utile contro lo spamming: dopo il comando EHLO il server invia i meccanismi di
autenticazione supportati il client ne sceglie uno viene eseguito il protocollo di autenticazione se l'autenticazione ha successo, il server accetta i comandi
SMTP del client se l’autenticazione fallisce, il canale viene immediatamente
chiuso© A.Lioy (Politecnico di Torino, 2013-2020) 42
Esempio AUTH negativo il mailer non conosce (o non accetta) la modalità di
autenticazione proposta dal client:
220 example.polito.it - SMTP service readyEHLO mailer.x.com
250-example.polito.it250 AUTH LOGIN CRAM-MD5 DIGEST-MD5
AUTH PLAIN504 Unrecognized authentication type
© A.Lioy (Politecnico di Torino, 2013-2020) 43
AUTH: metodo LOGIN
220 example.polito.it - SMTP service readyEHLO mailer.x.com
250-example.polito.it250 AUTH LOGIN CRAM-MD5 DIGEST-MD5
AUTH LOGIN334 VXNlcm5hbWU6
bGlveQ==334 UGFzc3dvcmQ6
YW50b25pbw==235 authenticated
Username:lioy
antonioPassword:
© A.Lioy (Politecnico di Torino, 2013-2020) 44
AUTH: metodo PLAIN sintassi (RFC-2595):
AUTH PLAIN id_pwdBASE64 id_pwd è definito come:
[ authorize_id ] \0 authentication_id \0 pwd
220 example.polito.it - SMTP service readyEHLO mailer.x.com
250-example.polito.it250 AUTH LOGIN PLAIN
AUTH PLAIN bGlveQBsaW95AGFudG9uaW8= 235 authenticated lioy \0 lioy \0 antonio
© A.Lioy (Politecnico di Torino, 2013-2020) 45
POP (Post-Office Protocol) una volta era diffuso anche POP-2 (109/tcp) oggi è usato
solo POP-3 (RFC-1725, 110/tcp) realizza il collegamento tra MUA e MS, quindi serve solo a
leggere la posta dall’ufficio postale talvolta usato (impropriamente) in assenza di SMTP-auth per
autenticare l’utente prima di spedire posta (es. Pegasus Mail)
© A.Lioy (Politecnico di Torino, 2013-2020) 46
POP-3: formati protocollo ASCII (ma è 8-bit clean) comandi case-insensitive righe terminate da <CR><LF> codici di errore del server
+OK -ERR risposte multi-linea terminate da una riga contenente solo:
. <CR> <LF> separatore: un solo carattere di spazio
© A.Lioy (Politecnico di Torino, 2013-2020) 47
POP-3: comandi obbligatori QUIT STAT
+OK nmsg totalmsgsize LIST [ msgid ]
msgid msgsize RETR msgid DELE msgid NOOP RSET
© A.Lioy (Politecnico di Torino, 2013-2020) 48
POP-3: comandi opzionali USER mailbox
PASS password APOP mailbox digest AUTH mechanism
(KERBEROS_V4, GSSAPI, SKEY) TOP msgid nline UIDL [ msgid ]
msgid umsgidfornisce stringhe di identificazione univoche per tutte le sessioni
© A.Lioy (Politecnico di Torino, 2013-2020) 49
Un esempio POP-3telnet pop.polito.it 110
+OK POP3 server ready <[email protected]>USER lioy
+OK password required for lioyPASS antonio
+OK lioy mailbox locked and readySTAT
+OK 2 320LIST
+OK 2 messages (320 octets)1 1202 200
© A.Lioy (Politecnico di Torino, 2013-2020) 50
Un esempio POP-3RETR 1
+OK 120 octets( messaggio n. 1 ).
DELE 1+OK message 1 deleted
RETR 2+OK 200 octets( messaggio n.2 ).
QUIT+OK POP3 server signing off
© A.Lioy (Politecnico di Torino, 2013-2020) 51
IMAP Internet Message Access Protocol varie versioni, la più recente e diffusa è IMAP4 porta 143/tcp vantaggi rispetto a POP: possibile modo connesso (canale sempre aperto) accesso simultaneo da più client fetch parziale (es. solo header) ed accesso a singole parti
MIME stato dei messaggi (es. letto, cancellato, inoltrato) uso di cartelle (folder) per organizzare i messaggi ricerche lato server (meno carico su rete e client)
© A.Lioy (Politecnico di Torino, 2013-2020) 52