Výměna elektronických zpráv mezi uživateli ukládání do schránek (mailboxes) Princip store and forward, využití MX záznamů v DNS Zpráva v původní verzi pouze text, v rozšířené verzi (specifikace MIME Multipurpose Internet Mail Extensions) může mít zpráva libovolný obsah Formát elektronické adresy: user@mail_server.doména user musí mít v mail_serveru zřízen mailbox user může mít na mail_serveru alias mail_server musí být dostupný na well-known portu pro poštovní službu nebo musí mít platný MX záznam v DNS 1
Protokoly e-mail systému: Počítačové sítě SMTP (Simple Mail Transfer Protocol) RFC2821 - základní protokol pro výměnu poštovních zpráv MIME RFC 2045-2049 - protokol pro strukturování těla zprávy POP3 (Post Office Protocol) RFC1725 přístup do mailboxu ze vzdáleného klienta IMAP (Internet Message Access Protocol) RFC3501-3503 - přístup do mailboxu ze vzdáleného klienta 2
Logické moduly e-mail systému: (Mail Tranfer Agent) zajistí přenos zprávy podporuje protokol SMTP komunikace mezi na principu klient - server ( lokální, relay MDA (Mail Delivery Agent) zajistí uložení zprávy do mailboxu uživatele MRA (Mail Retrieval Agent) zajistí klientovi přístup do uživatelova mailboxu podporuje protokoly POP3 nebo IMAP (nebo oba) MUA (Mail User Agent) vytváří rozhraní pro přístup uživatele k poštovním službám, komunikuje s a MRA podporuje SMTP, POP3, IMAP 3
MUA B SMTP MUA A POP/IMAP MRA MDA mailboxes 4
Uživatel Systém SMTP relay MUA Počítač odesílatele Lokální Lokální Lokální Organizace A Relay SMTP přes Internet Počítač příjemce MUA Lokální Relay Lokální Lokální Organizace B Uživatel mailboxes 5
Protokol SMTP využívá transportní službu TCP, well-known port 25, komunikace klient server Protokol SMTP je implementován v logických modulech Klient 20200 alokovaný SMTP 25 well-known Server Příklady : sendmail, qmail, postfix.. 6
Průběh relace podle protokolu SMTP: Klient iniciuje navázání TCP spojení na port 25 Probíhá obousměrný dialog (příkazové sekvence specifikované v protokolu SMTP), při kterém klient předá (i opakovaně) serveru data (e-mail zprávu/zprávy) Dialog je ukončen uzavíracím příkazem, TCP spojení se uzavře IP datagram se zprávou protokolu SMTP IP header Protocol=06 TCP header Port=25 PDU SMTP (request / reply) 7
SMTP zprávy: klient server request (příkaz) odpověď (reply) Příkazy SMTP - 4 znakový alfabetický řetězec (se sémantikou) + parametry HELO<SP><doménové_jméno><CRLF> - identifikace klienta MAIL <SP>FROM<zpáteční_adresa><CRLF> - identifikace odesílatele RCPT <SP>TO<adresa_příjemce><CRLF> - identifikace příjemce DATA<CRLF> - žádost o příjem dat (poštovní zásilky odesílatele) 8
Příkazy SMTP (2) Počítačové sítě RSET<CRLF> - ukončení transakce VRFY<SP><adresa_příjemce><CRLF> - ověření platnosti adresy bez odeslání dat QUIT<CRFL> - uzavřeni SMTP dialogu uzavření TCP spojení Příkazová sekvence pro předání dat: 1. HELO navázání spojení, představení odesílatele 2. MAIL - představení odesílatele a příjemce 3. RCPT obálka 4. DATA požadavek na přijetí zásilky 5. (QUIT) v případě, že není k předání další zásilka 9
Princip komunikace příkaz odpověď - hand shake Odpovědi SMTP: kód odpovědi XYZ (3cifry)<SP>text např. 500 Command unrecognized X specifikuje typ odpovědi 1.. Pozitivní předběžná odpověď 2.. Pozitivní konečná odpověď 3.. Pozitivní průběžná odpověď 4.. Přechodná negativní odpověď 5.. Trvalá negativní odpověď 10
Y specifikuje obsah odpovědi. 0. Chybná syntaxe příkazu. 1. Odpověď informativního charakteru. 2. Odpověď nesoucí informaci o stavu spojení. 3. Zatím nespecifikováno. 4. Zatím nespecifikováno. 5. Odpověď indikující stav mail systém na příjemcově straně Z kontextové rozlišení odpovědi (.. X ) 11
500 Chyba syntaxe, příkaz nepoznán 501 Syntaktická chyba v parametrech příkazu 502 Příkaz není implementován 211 Status systému 220 <domain> Service připraven 221 <domain> Service uzavřel přenosový kanál 421 <domain> Service není k disposici 250 Požadovaná služba vyplněna 450 Požadovaná služba nevyplněna, není k disposici mailbox (mailbox busy) 550 Požadovaná služba nevyplněna, není k disposici mailbox (mailbox nenalezen) 451 Požadovaná služba násilně přerušena, chyba ve zpracování 452 Požadovaná služba nevyplněna, nedostatečná kapacita paměti systému 354 Začátek přenosu dat, ukončeno znakem. 554 Transakce selhala 12
Formát zpráv elektronické pošty RFC 822 (pro protokoly SMTP, POP3, IMAP) obálka záhlaví tělo zprávy generuje : adresa odesílatele (MAIL FROM) adresa příjemce (RCPT TO) generuje MUA, aktualizuje obsah zprávy 13
Záhlaví zprávy klíčové slovo + text (specifikováno v RFC 2822 ) příklady klíčových slov: Received: (seznam ) Message-ID: (identifikátor zprávy) CC: (příjemce kopie zprávy) From: (odesílatel) Date: (datum a čas odeslání) Reply-to: (zpáteční adresa) To: (adresát) Subject: (předmět zprávy) 14
Protokol MIME specifikace libovolného těla zprávy obálka záhlaví tělo zprávy záhlaví MIME Záhlaví MIME zahrnuje hlavičky : MIME-Version specifikuje, že zpráva obsahuje hlavičku dle RFC2045 RFC2049 Content-Type (1) - jednoduchý typ/podtyp dat v těle zprávy skládá se z jednéčásti (text, video, audio, binární program..). Příklady: Image/gif Video/mpeg Application/PostScript 15
Typy Content-Type (2) kompozitní typ/podtyp - skládá se z více částí Podtypy multipart zpráva obsahuje více dílčích zpráv oddělovač je parametr boundary Mixed zpráva s přílohami Parallel všechny části zprávy se interpretují současně (obraz + zvuk) Alternative stejný obsah v alternativním formátu Signed s připojeným elektronickým podpisem Encrypted šifra zprávy message dlouhá zpráva rozdělena na více segmentů rfc822 vnořené zprávy s vlastním záhlavím Partial zpráva je dělena na segmenty 16
Záhlaví MIME: Content-Transfer-Endoding specifikace použitého kódování pro přenos (značnáčást přenosových zařízení dokáže zpracovat pouze data ve formátu ASCI. Příklady: quoted-printable, base64, 7bit, 8bit, binary. Content-ID identifikačníčíslo zprávy (volitelná hlavička) Content-Description textový popis obsahu zprávy Content- Disposition specifikuje, zda jsou data určena k automatickému zobrazení nebo k uložení na lokální disk 17
Vzdálený mail servis Internet Zprávy -------- -------- -------- PC SMTP POP3 MRA SMTP MDA mailserver 18
POP3 Post Office Protocol - POP3 podporuje Autorizovaný přístup do mailboxu na vzdáleném mailserveru Výpis informace o stavu mailboxu Přenos kopie obsahu zprávy uložené v mailboxu Označit zprávu pro výmaz (zrušit označení) POP3 je stavový automat přechod do jednotlivých stavů probíhá v příkazových sekvencích. Stavy: Autorizace Transakce Aktualizace 19
POP3 používá TCP transport, well-known port 110, komunikace klient server (příkaz odpověď) Implementace POP3 Server - na straně mail serveru programem typu daemon ( naslouchá na portu 110) Klient v uživatelském poštovním aplikačním programu (pine, OutlookExpress,.) Příkaz - alfabetický řetězec (se sémantikou) <SP>data Odpověď Pozitivní +OK <SP>data Negativní -ERR <SP>data 20
Průběh relace Příkaz Význam (žádost) USER name PASS string STAT LIST [msg#] RETR msg# DELE msg# NOOP RSET QUIT Identifikace uživatele Autentizace uživatele Zaslání souhrnných údajů o stavu mailboxu Zaslání údajů o zprávách Zaslání obsahu zprávy Označení zprávy k výmazu Žádná operace Vynulování nastavených označení Provedení změn a ukončení relace Odpověď +OK text / -ERR text +OK text / -ERR text +OK údaje -ERR text +OK údaje -ERR text +OK obsah/-err text +OK text / -ERR text +OK text +OK text +OK text Stav Autorizace Autorizace Transakce Transakce Transakce Transakce Transakce Transakce Aktualizace 21
IMAP4 Internet Message Access Protocol IMAP4 RFC 3501 podporuje: Autorizovaný přístup do vzdáleného maiboxu a do dalších poštovních schránek uživatele Selektivní načtení obsahu zpráv uložených v mailboxu a dalších poštovních schránkách uživatele Modifikace obsahu zpráv uložených v mailboxu a dalších poštovních schránkách uživatele Sdílení poštovní schránky více uživateli. IMAP4 stavový automat přechod mezi stavy v návaznosti na příkazových sekvencích 22
IMAP4 IMAP4 používá transport TCP, well-known port 143, komunikace klient server (příkaz odpověď) příkaz: značka (tag) příkaz parametry (text) tag je identifikátor příkazu v rámci relace, to umožňuje, že klient nemusíčekat před vysláním dalšího příkazu na odpověď na příkaz předešlý (a001, a002, a003 ). Odpovědi serveru mají předřazeny tagy příslušných příkazů (server může generovat zprávy, které nejsou odpovědi na příkazy, pak jsou to odpovědi neoznačené místo tagu mají předřazen znak *) příkaz alfabetický řetězec se sémantikou 23
IMAP4 Příkazy IMAP4 (1) tag NOOP Prázdná operace klientovi vrací odpověď OK tag CHECK Kontrola mailboxu na nově došlé zprávy tag LOGIN user passwd tag EXPUNGE Výmaz všech zpráv označených příznaky \DELETED (příznaky: \recent \seen \answered \flagged \deleted \draft ) tag LOGOUT tag COPY sequence mailbox zpráv tag SELECT mailbox Kopírování specifikovaných Výběr určitého mailboxu 24
IMAP4 Příkazy IMAP4 (2) tag FETCH sequence data Přesun specifikovaných zpráv z vybraného mailboxu tag CREATE name Vytvoří mailbox daného jména tag STORE sequence data value Změna dat ve zprávě v mailboxu tag DELETE name Zruší mailbox daného jména tag SEARCH search_program Vyhledání mailboxu podle určitého typu zpráv tag SUBSCRIBE/UNSUBSCRIBE mailbox Aktivace /deaktivace přihlášení do sdíleného mailboxu 25
IMAP4 Odpovědi - označené (s tagem) i neoznačené (bez tagu): tag OK text nebo * OK text tag NO text nebo * NO text příkazu tag BAD text nebo * BAD text kladná odpověď neúplné provedení záporná odpověď Odpovědi neoznačené (určité odpovědi na určité příkazy) * # text * FLAGS seznam * SEARCH sekvence * MAILBOX string MAILBOXES * BYE text odpověď na SELECT odpověď na SEARCH odpověď na FIND server uzavírá spojení 26
Ukázka relace POP3 Ukázka relace IMAP 27