Vyšlo v týdeníku Computerworld č. 9/94 v roce 1994
Vytištěno z adresy: http://www.earchiv.cz/a94/a409c110.php3

Elektronická pošta II.

V minulém dílu jsme se začali zabývat problematikou elektronické pošty z uživatelského pohledu. Naznačili jsme si, jaký je vztah mezi uživateli a poštovními schránkami, a co vlastně specifikují adresy, používané v rámci elektronické pošty. Dnes si již řekneme něco o tom, jak bývá elektronická pošta implementována.

Obrázek 81.1.
Obr. 81.1.: Komponenty systémů elektronické pošty (v terminologii standardu X.400)
Pro správné pochopení podstaty a možností elektronické pošty je velmi podstatné uvědomit si následující skutečnost: elektronická pošta není téměř nikdy zajišťována jedním jediným programem - prakticky vždy jde o spolupráci více programů (aplikací, procesů, úloh), které jsou různým způsobem specializovány: některé z nich se starají pouze o vlastní přenos zpráv (a před uživatelem zůstávají obvykle skryty), zatímco jiné zase vědomě "nastavují svou tvář" koncovému uživateli, umožňují mu číst došlé zprávy, vytvářet či editovat nové zprávy apod., ale když mají nějakou zprávu skutečně odeslat, pouze ji předají tomu programu, který má jejich přenos na starosti.

Právě naznačenou dělbu práce ilustruje obrázek 81.1.: celý komplex programů, které ve své vzájemné součinnosti zajišťují uživatelům služby elektronické pošty, se obecně označuje jako Electronic Mail System, někdy též: Message Handling System (MHS). Jeho komponenty se dělí do dvou hlavních skupin: na tzv. uživatelské složky (User Agent, UA), a přenosové složky (Message Transfer Agent, MTA).

Přenosové složky a systémy přenosu zpráv

Přenosové složky (Message Transfer Agents) jsou těmy, které mají na starosti vlastní přenos zpráv. Jejich obsahu si nevšímají (kromě případů, kdy zajišťují jejich automatickou konverzi z jednoho znakového kódu do druhého) - zajímá je především adresa příjemce, podle které zprávu doručují. Přenosové složky, které jsou provozovány na jednotlivých uzlových počítačích, přitom musí vzájemně spolupracovat (předávat si zprávy mezi sebou). To ovšem znamená, že musí "hovořit stejnou řečí" - tedy používat stejné protokoly pro přenos zpráv, stejné konvence pro adresování atd.

Vzájemně spolupracující přenosové složky, provozované na jednotlivých uzlových počítačích, vytváří dohromady systém přenosu zpráv (též: Message Transfer System (MTS)). V rámci něj se používají jednotné konvence a protokoly, specifické pro konkrétní "poštovní systém" - své vlastní konvence a protokoly přenosu zpráv mají například různé komerční "pošty" typu cc:Mail či Mail602, i systémy na bázi standardu X.400 či SMTP (o kterých si budeme povídat podrobněji).

Znamená to ale, že mezi dvěma odlišnými poštovními systémy nelze přenášet žádné zprávy? Naštěstí nikoli - není totiž žádným principiálním problémem vytvořit poštovní bránu (e-mail gateway), která bude zajišťovat potřebný přechod.

Uživatelské složky

Existence přenosových složek i celých systémů přenosu zpráv je před běžným uživatelem obvykle skryta. To, s čím uživatel komunikuje, je uživatelská složka (UA, User Agent). Teprve ta vytváří potřebné uživatelské rozhraní, prostřednictvím kterého uživatel může využívat služby elektronické pošty - číst došlé zprávy, rušit je či archivovat, vytvářet a editovat nové zprávy atd. K tomu například musí každá uživatelská složka obsahovat mj. i vhodný editor.

Program, realizující uživatelskou složku, je aplikačním programem, který si uživatel vyvolává až na základě potřeby, a může být provozován i na takovém počítači, který není trvale v provozu (zatímco přenosové složky jsou obvykle provozovány trvale, a vyžadují tudíž počítač, fungující v nepřetržitém režimu). Právě z tohoto důvodu jsou poštovní schránky (mailbox-y) jednotlivých uživatelů většinou realizovány v rámci přenosových složek. Zprávy, které dojdou na adresu určitého uživatele (přesněji: na adresu určité poštovní schránky, viz minule), tak mohou být ukládány do příslušné schránky kdykoli. Uživatel se k nim ale dostane až poté, co si spustí program, realizující uživatelskou složku, a jeho prostřednictvím si zprávy přečte.

Poštovní klient a server

Vztah mezi uživatelskou a přenosovou složkou je do značné míry vztahem typu klient-server: při odesílání zprávy se uživatelská složka postará (v interakci s uživatelem) o její sestavení, ale pak ji předá k odeslání přenosové složce (tj. vyžádá si od ní službu, spočívající v přenosu zprávy). Naopak v okamžiku, kdy se uživatel rozhodne podívat na došlou poštu, obrátí se uživatelská složka na přenosovou se žádostí o poskytnutí obsahu příslušné poštovní schránky.

Z tohoto důvodu je uživatelská složka systému elektronické pošty často označována také jako poštovní klient (mail client), a přenosová složka (resp. počítač, na kterém, je provozována) jako poštovní server (mail server). Terminologie, kterou jsme až dosud používali, je charakteristická spíše pro systémy elektronické pošty na bázi standardu X.400 (zatímco v prostředí TCP/IP sítí se hovoří spíše o poštovních serverech a klientech).

Obrázek 81.2.
Obr. 81.2.: Představa uživatelské složky (klienta), provozované na počítači v roli poštovního serveru
Konkrétní způsob komunikace mezi přenosovou a uživatelskou složkou je samozřejmě pevně dán koncepcí celého systému elektronické pošty (MHS). To ovšem zdaleka neznamená, že by tím byla jednoznačně determinována i "vnější tvář" uživatelské složky (poštovního klienta). Tyto složky mohou být implementovány v mnoha různých podobách - od strohých řádkově orientovaných utilit až po uživatelsky přítulné programy v "okenním" provedení, s nejrůznějšími vymoženostmi. V prostředí počítačů PC tedy může být příslušný klient například programem pro prostředí MS DOSu, aplikací pro MS Windows apod. Každý uživatel si může vybrat, který klient mu bude nejlépe vyhovovat - podmínkou je jenom to, aby se takovýto klient dokázal správně "domluvit" s příslušným poštovním serverem.

Postavení poštovního klienta

Velmi zajímavá je i otázka možného postavení uživatelské složky (poštovního klienta), zvláště pak v prostředí lokálních sítí. Předpokládejme, v souladu s obrázkem 81.2., že přenosová složka je implementována na počítači, který vystupuje v roli poštovního serveru, a obsahuje poštovní schránky jednotlivých uživatelů. Uživatelská složka (poštovní klient) může být programem, který běží právě na tomto počítači - uživatelé, kteří chtějí zpracovávat svou poštu jeho prostřednictvím, pak musí pracovat přímo na tomto počítači (z jeho místních terminálů, případně z jiných počítačů prostřednictvím vzdáleného přihlašování).

Obrázek 81.3.
Obr. 81.3.: Představa uživatelské složky (klienta), provozované na pracovní stanici lokální sítě
Další možností je to, aby poštovní klient byl provozován na jiném počítači, než který vystupuje v roli poštovního serveru. Takovýto program si uživatel může spustit na své pracovní stanici (viz obr. 81.3.), a ponechat na něm, aby si vše potřebné "vykorespondoval" po síti se serverem sám.

Toto druhé řešení má četné výhody: například tu, že uživatel nemusí opouštět své pracoviště, a osobně se obtěžovat až k poštovnímu serveru (nebo využít možnosti vzdáleného přihlašování). Výraznou výhodou bývá i větší komfort, který takovéto řešení může nabídnout: klientské programy, provozované na pracovních stanicích (například v prostředí MS Windows), obvykle nabízí svému uživateli mnohem větší pohodlí a mnohem větší repertoár doplňkových funkcí, než analogické programy, provozované na poštovním serveru (který může být například Unixovským počítačem).

Vzdálený klient

Obrázek 81.4.
Obr. 81.4.: Představa vzdáleného poštovního klienta
Poštovní klient, určený k provozování na pracovní stanici v síti, obvykle počítá s tím, že svůj server může kontaktovat kdykoli (a s dostatečnou rychlostí). Jednotlivé zprávy, došlé příslušnému uživateli, proto ponechává v jeho poštovní schránce (tedy na serveru), a odsud si je individuálně "stahuje" až v okamžiku, kdy si to uživatel explicitně vyžádá (např. když si chce přečíst určitou konkrétní zprávu). Pokud je potřebuje někam dočasně uložit (například jako již přečtené, ale dosud nesmazané zprávy), ukládá si je opět na server. To má jednu obrovskou výhodu - fungování klientského programu pak není závislé na tom, na které pracovní stanici je provozován. Uživatel tak může se svou poštou plnohodnotně pracovat z kteréhokoli počítače v dané lokální síti.

Alternativním řešením je to, aby si klient v určitý okamžik "stáhl" celý obsah uživatelovy poštovní schránky, a pak se na něj již nemusel obracet s jednotlivými žádostmi o čtení konkrétních zpráv. Současně s tím by si takovýto program také ponechával "u sebe" (tj. na svém lokálním disku) i veškerou rozpracovanou poštu. Tím se sice ztratí možnost plnohodnotné práce z kterékoli stanice v dané síti, ale na druhé je zase minimalizován přenos dat mezi klientem a serverem - díky jednorázovému a dávkovému charakteru komunikace je pak možné vystačit i s mnohem pomalejšími přenosovými cestami. Natolik pomalejšími, že je možné uvažovat i o provozování poštovního klienta na vzdálených počítačích: takovýto klient se může na svůj poštovní server jednorázově připojit například prostřednictvím komutovaného okruhu veřejné telefonní sítě, "stáhnout si" veškerou došlou poštu, poté se odpojit (zavěsit telefon), a poštu zpracovat již jako samostatně běžící aplikace (tj. v nespřaženém, neboli of-line režimu).

Takovýmto způsobem si uživatel může například ze svého domácího počítače zavolat pro došlou poštu, všechnu si ji přenést k sobě, poté zavěsit, a poštu pak zpracovávat v klidu a pohodlí svého domova (a hlavně bez dlouhého blokování telefonní linky a tomu úměrných poplatků). Když se rozhodne nějakou poštu odeslat, může si ji nejprve připravit do větší dávky, a tu pak analogickým způsobem jednorázově přenést na server k odeslání. V principu je samozřejmě možné i takové řešení, při kterém si uživatel odnese od serveru celou dávku došlé pošty na disketě, doma ji zpracuje, vytvoří novou dávku pošty, určené k odeslání, a tu pak opět po disketě přenese k serveru.