Elektronická pošta
Vratislav Podzimek, v.podzimek(at)mail.muni.cz
Obsah
Analogie s klasickou poštou
Chceme-li v "papírovém světě" poslat dopis, obvykle jej vložíme do obálky, kterou nadepíšeme
údaji o odesílateli a doručiteli. Stejně je tomu i ve světě elektronické pošty. S jednou výjimkou,
zde totiž každá zpráva musí tyto údaje obsahovat. Pokud jste si však právě představily údaje,
které vám zobrazuje váš oblíbený emailový klient, dopustili jste se pravděpodobně nevědomky chyby.
Informace o odesílateli, příjemci(ích) zprávy nebo kopie apod. nejsou údaji z obálky zprávy. Ta
je definována příkazy SMTP protokolu a určuje "směrování" zprávy a případného oznámení o chybě
pomocí dvou údajů (envelope) Sender a Recepient a za pomocí DNS MX záznamů. Samotná zpráva pak
obsahuje hlavičky s údaji běžně zobrazovanými v emailových klientech a tělo zprávy obsahujicí
text (příp. jiná data).
Podobně jako se na doručení klasického dopisu podílí více subjektů, i funkcionalitu elektronické pošty
obstarává několik odlišitelných funkčních jednotek:
- MTA - Mail Transfer Agent; přenos a směrování zprávy
- MDA - Mail Delivery Agent; doručení zprávy (na cílovém stroji)
- MSA - Mail Submission Agent; volitelná jednotka odlehčující práci MTA kontrolou a opravou zpráv
před odesláním
- MUA - Mail User Agent; aplikace umožňující tvorbu a zobrazování el. zpráv
- MRA - Mail Retrieval Agent; aplikace vytvářející spojení se vzdálenou schránkou (přes POP či IMAP)
Formát zprávy
Jak již bylo uvedeno výše, samotná zpráva se skládá ze dvou částí - hlaviček a textu (dat).
Hlaviček je velké množství, ale mezi základní patří:
- From:
- To:
- Cc:
- Bcc:
- Subject:
- Recieved: (většinou doplněna každým MTA, který zprávu zpracovával)
Samotný text zprávy (nebo data, ale původně zprávy mohly obsahovat opravdu pouze text) je pak uveden v další
části a může mít různou podobu v závislosti na použitém přenosovém kódování. To je specifikováno v hlavičkách
MIME (Multipurpose Internet Mail Extensions). Minimálně v povinných: Mime-Version, Content-Type a
Content-Transfer-Encoding. Určitě znáte řetězce jako "text/plain", "image/jpeg", "application/pdf" apod. Méně známé
jsou pak možnosti kódování (nenechte se zmýlit, nejedná se o uvedení znakové sady). Může být použito 7bit, base64,
quoted-printable, nebo 8bit (pouze s ESMTP). Tímto způsobem je dosaženo možnosti zasílání v podstatě libovolných
dat el. poštou.
SMTP protokol
"Protokol SMTP je jedním ze dvou nebo ze tří nejstarších aplikačních protokolů, jež se v Internetu stále
používají. Je jednoduchý, efektivní a úspěšně odolává zubu času. Zmiňovanou charakteristiku lze označit
jako stopu, kterou často najdete rovněž v jiných internetových protokolech. Existuje-li nějaký pravzor
toho, jak by měl vypadat dobře navržený internetový aplikační protokol, pak je to rozhodně protokol SMTP".
[1, str. 143]
Ukázka relace (téměř nevyžadující další komentář :) ):
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<bob@example.org>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR<LF>.<CR><LF>
C: From: "Bob Example" <bob@example.org>
C: To: "Alice Example" <alice@example.com>
C: Cc: theboss@example.com
C: Date: Tue, 15 Jan 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
Převzato z [2]
SPAM
Spam, neboli nevyžádaná pošta je poměrně velkým problémem moderního Internetu. I když se mnoho organizací
i jednotlivců snaží s tímto zneužíváním internetových služeb zabránit, zdá se, že "zlá strana" je vždy
o krok na před a to i díky tomu, že se někdy boj proti spamu zkrátka nevyplatí. Základní kroky však
nejsou příliš složité a dokáží zabránit mnoha problémům. Roboti, kteří rozesílají spam, získávají data
z webu nebo slovníkovými dotazy na SMTP servery. Prvnímu způsobu můžeme zabránit tak, že svoji emailovou
adresu budeme na webu uvádět v upraveném formátu, aby byla stále lehce čitelnou pro člověka, ale mnohem
složitěji pro program - např. "xpodzim(at)fi(dot)muni(dot)cz". O další boj se pak může postarat náš
program obsluhující SMTP komunikaci.
Open relay
Přeposílání pošty (relaying) je velkým problémem v boji proti spamu. Nastavení mnoha poštovních serverů,
umožňující přeposílání zpráv od kohokoliv (Open relay) usnadňovali práci spammerům, kteří se mohly za tyto
servery úspěšně "schovávat". Proto se dnes doporučuje relaying poměrně striktně omezit na výjimečné případy.
Blacklisting
Lze specifikovat označení zprávy jako spam na základě adresy odesílatele, případně IP adresy serveru,
ze kterého zpráva přišla.
Graylisting
Správa je označena jako spam poté, co ji MTA nejdříve odmítne, když spoléhá na skutečnost, že roboti
rozesílající spam neučiní další pokus o doručení, ale přejdou na dalšího příjemce.
Greeting delay
SMTP server při navazování spojení počká nějakou dobu, než pošle klientovi "uvítací zprávu". Mnoho
spam robotů se chová tak, že začnou okamžitě SMTP server zasypávat požadavky, aniž by počkali na přijetí
této zprávy.
Antispamové filtry
Spam můžeme odlišovat od "žádané pošty" i pomocí nejrůznějších filtrů fungujících na základě předem vytvořených
statických pravidel nebo principech strojového učení. Díky API miltering (knihovna libmilter) mohou zkušenější
uživatelé psát poměrně jednoduše své vlastní filtrovací programy.
Vzdálený přístup
Nechceme-li ukládat poštu přímo na počítači, na kterém pracuje uživatel uvedený jako příjemce zprávy, nebo
pokud nám to softwarové a technické možnosti neumožňují, můžeme na serveru zprovoznit přístup přes protokoly
POP či IMAP. První z nich umožňuje pouze výlučný přístup k el. poště daného uživatele a práci s celou schránkou
najednou (zprávy stahuje do lokálního stroje a může nebo nemusí mazat ze serveru). Naproti tomu IMAP je sice
složitější protokol, ale nabízí mnohem více možností. Uživatel si může stáhnout např. pouze hlavičky zpráv a až
v případě potřeby stáhnout další části, lze obsluhovat více schránek (složek) a z hlediska uživatele se manipuluje
přímo se zprávami na serveru.
Sendmail
Nejuniverzálnějším a nejčastěji používaným MTA je program sendmail. Jako obvykle jsou pro zprovoznění nutné dvě
fáze - instalace a konfigurace. Zatímco instalace se většinou obejde bez větších potíží, se správnou konfigurací
si člověk může užít tu pravou "zábavu". Jen jako ilustrace:
"Jazyk konfiguračního souboru programu sendmail je "kompletní z Turingova hlediska", což znamená, že se dá použít
k napsání libovolného počítačového programu." [3, str. 578]
Naštěstí v novějších verzích programu sendmail nemusí správci pracovat přímo s tímto souborem (sendmail.cf),
ale edituje se soubor sendmail.mc, využívající makroprocesor m4, který je následně pomocí skriptu Build přeložen
do snadněji parsovatelné, ale hůře čitelné, podoby .cf souboru.
V boji proti spamu lze využít několik možností: kontrolu relayingu pomocí přístupové databáze, případně souboru
/etc/mail/relay-domains; blacklisty (v přístupové databázi), filtrovací pravidla v konfiguračních souborech;
milterring; různá nastavení v souboru /etc/mail/access a další.
Literatura
- RAYMOND, Eric, S.: Umění programování v Unixu
- SMTP - EN wikipedia
- NEMETH, Evi, SNYDER, Garth, HEIN, Trent, R.: Linux - Kompletní příručka administrátora (2. vydání)
- Antispam techniques - EN wikipedia
- RFC 821 - SMTP
- RFC 2822 - Internet Message Format
- RFC 2045 - MIME
- Sendmail konfigurace - podrobně
- Sendmail konfigurace - jednoduché HOWTO
- Referát Pavla Hančara z podzimu 2010