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:

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ří: 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

  1. RAYMOND, Eric, S.: Umění programování v Unixu
  2. SMTP - EN wikipedia
  3. NEMETH, Evi, SNYDER, Garth, HEIN, Trent, R.: Linux - Kompletní příručka administrátora (2. vydání)
  4. Antispam techniques - EN wikipedia
  5. RFC 821 - SMTP
  6. RFC 2822 - Internet Message Format
  7. RFC 2045 - MIME
  8. Sendmail konfigurace - podrobně
  9. Sendmail konfigurace - jednoduché HOWTO
  10. Referát Pavla Hančara z podzimu 2010