UNIX -- poštovní subsystém -- Qmail

Michal Chocholáč, xchochol@fi.muni.cz


Obsah


Normy

Základní normou, která definuje princip elektronické pošty, je RFC 821 z roku 1982 a RFC 822 z téhož roku. RFC 821 definuje přenosový protokol SMTP (Simple Mail Transfer Protocol neboli jednoduchý protokol pro přenos pošty). V RFC 822 je zakotveno formátování textu, který je elektronickou poštou následně přenášen. Standard byl následně v roce 1992 rozšířen vydáním RFC 1341 a RFC 1342, které zavedly normu zvanou MIME a umožňují tak zasílání binárních dat a textových zpráv obsahujících znaky národních abeced.


Typy poštovních programů

MUA (Mail User Agents) - uživatelské poštovní programy

MTA (Message Transfer Agents) - programy pro dopravu pošty


Směrování

Autor obvykle napíše zprávu pomocí svého oblíbeného MUA. Ten potom vytvoří transportní obálku a zprávu předá MTA, který zajistí její odeslání po síti. Jednotliví MTA na cestě od autora k adresátovi se řídí adresami uvedenými v obálce a poštu po síti směrují podle příslušných MX záznamů v DNS databázi (viz. referát o DNS). Obvykle MTA provádí první pokus o doručení okamžitě po přijetí zprávy od klienta ke zpracování. Pokud selže vyčerpáním všech možností (uvedených v DNS), je zpráva uložena do fronty a čeká na další pokus. Jak často je fronta zpracovávána, záleží na konfiguraci stroje. Obvykle to bývá 15-60 minut, ne více než 4 hodiny. Některé servery generují po nastavených dobách, které zpráva ve frontě stráví, upozornění, že ještě nebyla doručena. Takové upozornění ale není povinné. V případě dlouhodobé nedoručitelnosti MTA vygeneruje tzv. bounce message, kterou zašle autorovi a zprávu z fronty vyřadí. V případě úspěšného odeslání MTA adresáta zajistí uložení zprávy do příslušného mailboxu, z něhož si ji lze vyzvednout buď přímo nebo vzdáleně pomocí POP3/IMAP.


Výběr MTA

Sendmail

Klasický představitel MTA v Unixových systémech. Je to velice pružný a mocný nástroj poskytující bohaté možnosti konfigurace. Používá jeden rozsáhlý konfigurační soubor sendmail.cf o nemž lidová moudrost praví: "Člověk, který nikdy neupravoval sendmail.cf, není skutečným správcem Unixu. Člověk, který to dělal více než jednou, je blázen". Proto se ke konfiguraci sendmailu používá sada maker, která se potom pomocí makroprocesoru m4 expandují do požadovaného konfiguračního souboru. Sendmail je monolitický setuid root program, což s sebou nese nebezpečí potenciálního (a také často využívaného) zneužití chyby v něm.

http://www.sendmail.org

Qmail

Qmail je moderní a rychlý SMTP server, jehož původním autorem je Dan Bernstein. Díky výbornému návrhu je rychlejší než sendmail, ale hlavním důvodem jeho vzniku byly nechvalně známé bezpečnostní díry v klasickém sendmailu. Proto byl při jeho vývoji hlavní (a dost přísný) důraz kladen na bezpečnost. To vedlo k vytvoření velmi kvalitního produktu. Dodnes se nikomu nepodařilo nalézt v qmailu žádnou bezpečnostní chybu, přesto že po jeho uvedení byla vypsána odměna ve výši 1.000 USD pro kohokoliv, kdo jako první nějakou najde.

Qmail tvoří několik malých programů, z nichž každý dělá pouze jednu věc a dokáže spolupracovat s ostatními. Žádný z těchto programů neběží pod superuživatelským uid/gid. Jednotlivé komponenty nedůvěřují žádným informacím získaným z okolí (ani sobě navzájem), navíc qmail nedůvěřuje příliš ani standardní knihovně a její funkce buďto zcela nahrazuje nebo se alespoň nesnaží spoléhat na jejich správnou funkčnost.

Spolehlivost qmailu je zajištěna použitím jiného formátu pro ukládání zpráv nazvaného maildir. Ten se od klasického formátu mbox liší zejména tím, že každá zpráva je ukládána do jiného souboru, což odstraňuje potíže se zamykáním v případě standardního mailboxu a možnost jeho poškození v případě výpadku systému. Zprávy jsou potvrzovány až po kompletním zápisu na disk.

Konfigurace qmailu je mnohem jednodušší, ale také dost odlišná od sendmailu, protože celé vnitřní uspořádání qmailu je odlišné. Qmail implicitně nepodporuje .forward soubory ani /etc/aliases. Nicméně flexibilita qmailu umožňuje rozšiřovat svoji funkčnost pomocí dalších balíků, takže je možné přidat mimo jiné i podporu pro tyto funkce typické pro sendmail.

http://www.qmail.org

Další

Postfix -- http://www.postfix.org
Exim -- http://www.exim.org
Vmailer -- http://www.vmailer.org
Zmailer -- http://www.zmailer.org


Qmail

Předpoklady

Instalace

Konfigurace doručování příchozí pošty

Další možnosti

Zdroje