la psota elettronica - polito.itlioy/01nbe/email.pdfarchitettura internet mail rfc-5598...

Post on 18-Nov-2020

8 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

La posta elettronicanell'architettura TCP/IP

Antonio Lioy< lioy@polito.it >

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: lioy@polito.it Antonio Lioy <lioy@polito.it> lioy@polito.it (Antonio Lioy)

occhio alle fregature! "Prof. Antonio Lioy <lioy@polito.it>

" <cattivik@malvagi.it>

© 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 antonio.lioy@polito.it;Fri, 14 Dec 2018 18:11:50 +0100

Received:from mail-it1-f177.google.com [209.85.166.177]by antispam.polito.it for <lioy@polito.it>;Fri, 14 Dec 2018 18:11:48 +0100

Received:by mail-it1-f177.google.com for <lioy@polito.it>;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: cat@polito.it250 cat ... Sender ok

RCPT TO: franz@duke.colorado.edu250 franz ... Recipient ok

DATA354 Enter mail, end with “.” on a line by itself

© A.Lioy (Politecnico di Torino, 2013-2020) 34

From: cat@athena.polito.it (Antonio Lioy)To: franz@duke.colorado.eduSubject: 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 <7831.84549@pop.polito.it>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

top related