Mail Transfer Agents

Martin Berger, xberger@fi.muni.cz


Obsah


Úvod

MTA je program pro příjem, směrování a odesílání zpráv.

Směrování

Zprávu většinou napíšeme pomocí MUA (Mail User Agent). Ten vytvoří obálku a zprávu předá MTA, který ji odešle do sítě. Každý MTA se cestou k adresátovi řídí adresou v obálce a zprávu směruje podle MX záznamů v DNS databázi. První pokus o doručení zprávy provádí MTA většinou ihned po přijetí zprávy od MUA, pokud se to nezdaří po vyčerpání všech možností, uloží zprávu do fronty, kde čeká na další pokus po určité době - většinou 15-60 minutách, podle nastavení se po určité době případně generuje upozornění, že zpráva nebyla doručena. Jestliže zpráva nebyla doručena po dlouhou dobu vygeneruje MTA bounce message, tu zašle odesílateli a vyřadí zprávu z fronty. Jestliže je zpráva úspěšně odeslána, zajistí MTA adresáta uložení zprávy do příslušného mailboxu.


MTAs

Sendmail

Pružný a mocný nástroj s bohatými možnostmi konfigurace. Ta je uložena v souboru sendmail.cf, který se většinou needituje přímo. Ke konfiguraci sendmailu se používá sada maker, která se pomocí m4 expandují do výsledného konfiguračního souboru. Vzhledem k tomu, že sendmail je monolitický setuid root program existuje nebezpečí zneužití chyby v něm.

Qmail

Autorem tohoto moderního a rychlého SMTP serveru je Dan Bernstein. Díky svému návrhu je Qmail ve srovnání se sendmailem rychlejší a především bezpečnější, což také bylo hlavním důvodem jeho vzniku. Na rozdíl od sendmailu nebyla v Qmailu nalezena žádná bezpečnostní chyba. Qmail tvoří sada jednotlivých programů, z nichž každý provádí jen svou přesně specifikovanou činnost. Qmail na rozdíl od většiny ostatních MTA ukládá každou zprávu do jiného souboru. Výhodou Qmailu je jednodušší konfigurace, než u sendmailu.

Postfix

Freewarový projekt, který má snahu nahradit Sendmail. Výkonově je až třikrát rychlejší, než jiní MTA, je kompatibilní s konfiguračními soubory Sendmailu a podobně jako Qmail je složen z více jednotlivých programů, z nichž žádný není setuid. Používá chrootované prostředí.


Exim

Idea byla převzata z Smailu 3. Je napsán v ANSI C. Na počítači běží buď jako démon nebo se spouští z inetd.

Doručování zpráv

Po přijetí zprávy Exim zapíše dva soubory do svého spoolovacího adresáře. Jeden obsahuje tělo zprávy, druhý informace z obálky, což jsou adresy odesílatele a adresátů, dále hlavičky a stav zprávy, tedy seznam adresátů, kteří už zprávu dostali. Veškeré přepisování adres nastavené v konfiguraci se provádí při přijetí zprávy. Jestliže se generují nové adresy třeba aliasingem, jsou tyto nové adresy přepsány v momentě, kdy jsou vygenerovány. Každé zprávě se přiřazuje identifikační šestnáctiznakové message id. To se skládá ze tří částí vzájemně oddělených pomlčkami. Prvních šest znaků udává čas přijetí zprávy (v sekundách), dalších šest znaků je id procesu, který zprávu přijal, a poslední dva znaky slouží k zajištění jednoznačnosti. Jména souborů ve spoolovacím adresáři tvoří identifikace a přípona -H, jde-li o soubor s hlavičkami, případně -D u datového souboru. Není-li definováno jinak, nachází se soubory v adresáři input v hlavním spoolovacím adresáři Eximu. Dokud zpráva není doručena všem adresátům, na chybovou adresu, nebo dokud není smazána, ať už odesílatelem zprávy nebo administrátorem, zůstává ve spoolovacím adresáři. Jakmile je zpráva doručena, zapíše se informace o doručení do logovacího souboru. V případě, že zprávu nelze doručit adresátům ani vrátit odesílateli, označí se jako frozen a už se nezkouší znovu doručovat. Označit zprávu jako frozen je také v kompetenci administrátora. Ten tyto zprávy může rozmrazit, jakmile se odstraní problém, který zmrazení způsobil. Další možností je nastavit volbu auto_thaw, pak se Exim automaticky po čase pokusí zprávu znovu doručit.

Instalace a konfigurace v systému Debian Linux

Instalaci provedeme například přikazem apt-get install exim. Vzhledem k tomu, že Exim nepoužívá debconf, spouští se po instalaci vlastní konfigurační nástroj - eximconfig. Po výběru jedné z pěti předdefinovaných konfigurací a odpovědích na několik otázek je Exim zkonfigurován. V případě potřeby lze upravit konfigurační soubor /etc/exim.conf ručně. Implicitní způsob spouštění v Debianu je z inetd. Exim může běžet i jako démon, stačí zakomentovat řádek začínající smtp v /etc/inetd.conf a spustit démona /etc/init.d/exim start.