Doručování elektronické pošty je jednou ze základních služeb počítačových sítí. Její provoz zajišťuje několik aplikací, přičemž každá je specifikována na jiný úkon. Princip elektronické pošty je založen na architektuře klient-server. V roli serveru zde vystupují přenosové složky (Mail Transfer Agent - MTA), které se starají o průchod zprávy počítačovou sítí na místo určení. Samotným obsahem se nezabývají (až na vyjímky, jakou je například konverze znakových sad). Klient (též User Agent - UA) je pak aplikační program, který vytváří uživatelské rozhraní k službám přenosové složky. Umožňuje přijímat poštu, vytvářet a odesílat nové zprávy a obvykle poskytuje i další funkce, jako elektronický podpis apod.
V literautuře se můžeme navíc setkat s programy typu Mail Submission Program - MSP (nachází se mezi UA a MTA, má na starosti kontrolu dat před odesláním) a s Mail Delivery Agent - MDA (třídí a filtruje došlou poštu, můžeme si jej představit někde na úrovni mailboxu).
SMTP je soubor pravidel, kterými se řídí proces odesílání a přenosu elektronické pošty mezi poštovními servery. Vznikl z anglického výrazu pro jednoduchý protokol pro odesílání pošty (Simple Mail Transfer Protocol). Obvykle bývá na well-known portu 25 (nezabezpečený). Jeho definici je věnováno RFC 821, přičemž poslední specifikaci nalezneme v RFC 2821. Dnes se ale většinou používá protokol v rozšířené verzi podle RFC 1425 resp. RFC 1869.
S: 220 bubo.vslib.cz 5.67a8/IDA-1.5 Sendmail is ready at Mon, 28 Feb 1994 14:34:59 +0100 C: HELO ns.felk.cvut.cz S: 250 Hello ns.felk.cvut.cz, pleased to meet you C: MAIL From:<csTeX-Mgr@cs.felk.cvut.cz> S: 250 <csTeX-Mgr@cs.felk.cvut.cz>... Sender ok C: RCPT To:<MILAN.KERSLAGER@VSLIB.CZ> S: 250 <MILAN.KERSLAGER@VSLIB.CZ>... Recipient ok C: RCPT To:<VIT.ROCEK@VSLIB.CZ> S: 250 <VIT.ROCEK@VSLIB.CZ>... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Received: from mvax.felk.cvut.cz by ns.felk.cvut.cz (5.65c8/FELK-area.4.2) C: id AA00728; Mon, 28 Feb 1994 14:31:46 +0100 C: Message-Id: <199402281331.AA00728@ns.felk.cvut.cz> C: X-Listname: Czech and Slovak TeX-related mailing list <csTeX@cs.felk.cvut.cz> C: Warnings-To: <> C: Errors-To: csTeX-Mgr@cs.felk.cvut.cz C: Sender: csTeX-Mgr@cs.felk.cvut.cz C: Received: by cs.felk.cvut.cz (MX V3.3 VAX) with SITE; Mon, 28 Feb 1994 14:21:52 C: MET-2DST C: Date: Mon, 28 Feb 94 14:21:23 MET C: From: HORAKK%CSEARN.BITNET@earn.cvut.cz C: Reply-To: csTeX@cs.felk.cvut.cz C: Subject: Re: inspic lde 3/92 C: To: csTeX@cs.felk.cvut.cz C: C: Mohu Vam zminene makro poslat mailem. C: C: Karel Horak C: . S: 250 Ok C: QUIT S: 221 bubo.vslib.cz closing connection
Pro úplnost ještě uvedu další příkazy, které SMTP definuje:
VRFY
- ověření adresyEXPN
- rozvinutí aliasů adresyNOOP
- prázdný příkazRSET
- zrušení zasílání dopisu (místo RCPT To:
nebo DATA
)HELP
- vypíše seznam příkazůZpráva, která má být doručena elektronickou poštou, musí mít jasně definovanou formu. To usnadňuje její přenos sítí a umožňuje manipulaci se zprávou na různých počítačových a softwarových platformách. Soubor pravidel, kterými se tvorba zpráv řídí je sepsána v RFC 822 resp. v RFC 2822.
Znaky, ze kterých je zpráva složena, mohou nabývat pouze hodnoty US-ASCII, tedy 1 až 127. Použití znakových sad s větším rozsahem je definováno standardem MIME, viz dále. Řádky zprávy jsou od sebe oddělovány dvojicí znaků CR/LF. Zpráva jako celek je rozdělena do dvou částí. První je tzv. hlavička, tvořená položkami hlavičky. Zde jsou uloženy informace o zprávě jako takové. Následuje tělo zpravy (body), které ovšem není povinné. Hlavička je od těla oddělena prázdným řádkem (před CR/LF se nenachází žádný znak).
Každá položka hlavičky je tvořena jménem, dvojtečkou, mezerou a hodnotou. Víceřádková položka začína každý svůj nový řádek buď mezerou nebo tabulátorem.
Zpráva elektronické pošty musí nutně obsahovat alespoň jednoho odesilatele (From:) a datum a čas předání zprávy přenosové složce(orig-date:). Měla by obsahovat adresáta (To:), je-li jich více, pak jednotlivé adresy oddělujeme čárkou. Stejně tak lze uvést adresáta kopie dopisu, který buď bude v dopise uveden (Cc:), nebo nikoliv (Bcc:). Součástí Internetové etiky je vyplnit předmět dopisu (Subj:). Na poštovním klientovi je, aby doplnil datum a čas odeslání (Date:) a identifikační řetězec (Message-Id:). Peřenosové složky pak do zprávy zapíší údaje, kudy zpráva prošla (Received:) atp.
Z hlavičky může příjemce vyčíst, kdy a kým byla zpráva odeslána, co je obsahem zprávy a kudy zpráva putovala sítí.
Přenosové složky se však při přeposílání zprávy neřídí informacemi z hlavičky. Každá zpráva je pro přenos vybavena tzv. obálkou (vytváří ji poštovní klient). Obálka obsahuje adresu odesílatele a alespoň jednu adresu příjemce. Informace v obálce se však nemusejí shodovat s informacemi v hlavičce zprávy!.
Existuje několik důvodů, proč jsou směrodatné informace pro doručení pošty uloženy v obálce a nikoliv ve zprávě samotné.
Doručení pošty skrz internet se děje na základě MX záznamů v DNS. Pro jendo jméno může existovat více MX záznamů s různou hodnotou preference a host (viz příklad 2). Pro přeposlání pošty bude vybrán záznam s nejnižší hodnotou preference. Nebude-li dostupný, použije se záznam s nejnižší vyšší prioritou. Tím je zajištěno doručení pošty i při výpadku uzlu.
Pokud pro určitou směrovou část adresy neexistuje MX záznam, přenosová složka se pokusí poštu doručit na počítač, jehož jméno se shoduje se směrovou částí adresy (pokud takovy počítač existuje). Přesto je dobrý důvod MX zaznamy v konfiguraci uvádět. Většina DNS serverů spolu s odpovědí posílá i IP adresy počítačů, na něž MX záznamy ukazují. Stačí tedy jeden dotaz.
; Zone vslib.cz @ IN SOA bubo.vslib.cz. satrapa.bubo.vslib.cz. ( 96060400 ;serial 7200 ;refresh 720 ;retry 3600000 ;expire 400000 ;minimum ) IN NS bubo.vslib.cz. IN NS ns.cesnet.cz. ; ; name ttl IN MX preference host ; IN MX 0 bubo.vslib.cz. IN MX 50 adis.cesnet.cz. IN MX 100 vscht.vscht.cz. IN MX 150 mcsun.eu.net. IN MX 200 relay1.uu.net. IN MX 250 relay2.uu.net. ;hosts in vslib.cz. bubo IN A 147.230.16.1 IN MX 0 bubo.vslib.cz. IN MX 50 aci.cvut.cz. IN MX 100 vscht.vscht.cz. IN MX 150 mcsun.eu.net. IN MX 200 relay1.uu.net. IN MX 250 relay2.uu.net. ftp IN CNAME bubo.vslib.cz. gopher IN CNAME bubo.vslib.cz. netfind IN CNAME bubo.vslib.cz. parker IN CNAME bubo.vslib.cz. loghost IN CNAME bubo.vslib.cz. mailhost IN CNAME bubo.vslib.cz.
Kromě MX záznamů (a samozřejmě A záznamů sloužících pro získání IP adresy) se při dopravě elektronické pošty uplatňují CNAME záznamy. Pokud se v libovolné adrese vyskytne přezdívka (např. gopher.vslib.cz), bude nahrazena kanonickým jménem (bubo.vslib.cz). Poštu zaslanou na ...@gopher.vslib.cz bude počítač bubo.vslib.cz automaticky považovat za lokální.
Rozšíření MIME (Multipurpose Internet Mail Extension) jsou věnována RFC2045 až RFC2049. Zavedeni MIME se snaží řešit omezení původního standardu podle RFC822. MIME je standardem, který doplňuje RFC822 a zajišťuje zpětnou kompatibilitu. Je navrženo tak, aby mohly být posílany stávajícím poštovním systémem zprávy obsahující diakritiku, obrázky, zvuk atd.
MIME se tedy zabýva problémy:
Message-ID: <335A2639.C79@pvt.cz> Date: Sun, 20 Apr 1997 16:20:41 +0200 From: Libor Dostalek <dostalek@pvt.cz> X-Mailer: Mozilla 3.01Gold (WinNT; I) MIME-Version: 1.0 To: dostalek@pvt.net Subject: (no subject) Content-Type: audio/wav Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="ding.wav" UklGRkYtAABXQVZFZm10IBAAAAABAAEAIlYAACJWAAABAAgAZGF0YSItAACAgICAgICAgICA gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
Filtrování doručené pošty jako obrana proti spamu existuje na třech úrovních:
SMTP server Postfix představuje náhradu za sendmail. Narozdíl od sendmailu není jeho konfigurace příliš komplexní. Během procesu instalace jsou kladeny dotazy na umístění souborů. Po skončení je vytvořena skupina postdrop a uživatel a skupina postfix. V souboru /etc/postfix/aliases je nutné uprvit aliasy uživatelů. Až tak učiníme, vygenerujeme příkazem $ postalias /etc/postfix/aliases hash databázi. Rovněž je nutné upravit konfigurační soubor /etc/postfix/main.cf.