Instalace QMAIL
Správná konfigurace emailového serveru patří co do obtížnosti mezi ty složitější úkoly, se kterými se musí správce unixového serveru vypořádat. Proto jsem pokládal za užitečné napsat seriál, který by nenáročnou formou popisoval stavbu kompletního emailového řešení pro malou až střední firmu a jehož první část vám ROOT.CZ dnes přináší.
Protože více čí méně podařených návodů na toto téma najdeme na Internetu desítky, rozhodl jsem se ten svůj ozvláštnit tím, že nebudu popisovat notoricky známá řešení, ale vyberu si tu méně častou, o to však zajímavější a dle mého názoru i v mnoha ohledech lepší variantu.
Ukážeme si, jak poskládat kompletní podnikové řešení elektronické pošty postavené na vysoce spolehlivých open-source programech, které zahrnuje MTA, podporuje více virtuálních domén, POP3 a IMAP server apod. To vše doplníme Webmailovým programem, který zprostředkuje přístup ke správě uživatelských kont i k poště samotné skrze uživatelsky přívětivé WWW rozhraní. Zmíníme se také o problematice bezpečnosti, ukážeme si, jak co nejlépe ochránit náš mailserver před spammery (SMTPauth, SMTP after POP), jak zabezpečit přenos zpráv přemostěním přes protokoly SSL/TSL, a zbyde-li čas, zmíníme se také o možnostech antivirové kontroly průchozích mailů.
Když jsem před lety začínal s Linuxem na serveru a potřeboval jsem rozchodit svůj první MTA server, nezbylo mi než použít Sendmail coby historický standard. Každý, kdo se s ním kdy setkal, mi potvrdí, že se jedná o velmi mocný, avšak co do konfigurovatelnosti dosti těžkopádný program. Jeho nastavování se blíží více programování než správě moderního programu. V minulosti měl také četné problémy s bezpečností a z té doby také pochází ustálené spojení "být děravý jako Sendmail". I dnes, kdy nám autoři distribucí servírují přednastavené balíčky a existují četné konfigurační nástroje, existuje podle mého názoru stále ještě výhodnější řešení. Ano, mluvím o qmailu.
qmail
Původ qmailu sahá do roku 1996. Jeho autorem je Daniel Bernstein (DJB), profesor na Chicagské univerzitě, jenž je počítačové veřejnosti znám také svým vyhraným soudním sporem s americkou vládou ohledně možnosti zveřejnění kryptografických algoritmů. DJB je nepochybně výtečný programátor, ovšem jeho svérázný styl, který prostupuje všemi jeho programy, bývá příčinou četných vzrušených debat na usenetu. DJB zastává názor, že každý program má mít jen co možná nejužší množinu potřebných funkcí, která je nezbytbě nutná k jeho funkčnosti. DJB jen zřídka přidává do svých programů nové (nadbytečné) funkce, i když by to často bylo zapotřebí. Aktuální verzí qmailu již několik let(!) zůstává 1.03, přičemž existují desítky uživatelských patchů a rozšíření, na které jsou uživatelé odkázáni, když od MTA očekávají trochu víc, než co mu dal do vínku DJB. Pouze vyšší moc by DJB přinutila uvolnit novou verzi. Navzdory této politice, nebo snad díky ní, však asi nenajdete bezpečnější, spolehlivější ani rychlejší MTA než qmail.
DJB si totiž jednoho dne řekl, že nemá cenu plýtvat energií na zalepování bezpečnostních děr Sendmailu, a napsal qmail, který je postaven na úplně jiné koncepci. Celý program je tvořen řadou modulů tvořících řetězec, kterým prostupuje každá zpráva. Jednotlivé moduly jsou navrženy tak, aby byly pokud možno jednoúčelové a mohly běžet s minimálními nutnými uživatelskými právy. qmail tedy není jedním programem, třeba /usr/bin/qmail, ale stavebnicí mnoha dílů, které si přes dobře stanovené rozhraní předávají zprávu a dohromady tvoří funkční MTA. Díky této vlastnosti se qmail stal jedním z nejbezpečnějších MTA programů vůbec.
Domovskou stránku qmailu udržuje autor tady, ovšem zájemcům o qmail jistě lépe poslouží ta neoficiální na www.qmail.org. Na těchto stránkách najdete také obrovské množství nejrůznějších patchů a rozšiřujících programů, stejně jako velké množství dokumentace a odkazů na další zdroje. Pokud se během používání qmailu setkáte s problémy, jistě vás neodmítnou ani v české diskusní konferenci sendmail@linux.cz
Základní verzi qmailu je historickým zvykem instalovat výhradně ze zdrojových souborů. Na tomto místě je dobré podotknout, že jak je u programů od DJB běžným standardem, téměř neexistují binární balíčky a qmail ani není součástí žádné významné distribuce. Je šířen se svou vlastní licencí (není tedy GPL), která dovoluje neomezené použití, ovšem autor si vyhrazuje kontrolu nad šířením modifikovaných verzí a binárních souborů.
Program tedy nainstalujeme kompilací ze zdrojových kódů, které najdete tady. Kompilace by měla probíhat na stejném počítači, na kterém pak bude program běžet, protože už při ní dochází k nastavování některých funkcí.
Před tím, než se pustíte do instalace qmailu, je dobré odinstalovat Sendmail, případně jiný MTA, protože koexistence více MTA na jednom počítači může být problematická. Odstranit můžeme také další programy, např. imap-2000, které nejsou s qmailem kompatibilní. Na distribucích Red Hat nebo podobných bude stačit něco takového (parametr --nodeps bude nutný, pokud používáte balíčky, např. mutt nebo fetchmail, které ke své funkci potřebují MTA a které by se bránily porušování závislostí):
# /etc/rc.d/init.d/sendmail stop
# rpm -e sendmail --nodeps
# rpm -e imap-2000c
Ještě před tím, než spustíte samotný překlad, je nutné vytvořit pro qmail vhodné zázemí. Nebyl by to DJBware, kdyby se qmail instaloval běžným způsobem do /usr/bin. qmail odjakživa náleží do /var/qmail, kde ho také hledají všechny spolupracující programy. Také je třeba vytvořit UID konta, protože jak už bylo uvedeno výše, qmail používá pro své komponenty jemnější rozlišení práv:
# mkdir /var/qmail
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias alias
# useradd -g nofiles -d /var/qmail qmaild
# useradd -g nofiles -d /var/qmail qmaill
# useradd -g nofiles -d /var/qmail qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail qmailq
# useradd -g qmail -d /var/qmail qmailr
# useradd -g qmail -d /var/qmail qmails
Pak už můžeme program zkompilovat a nainstalovat pomocí:
# make setup check
Nyní máme program zkompilován (problémy v tomhle stádiu jsou díky odladěnosti qmailu velice vzácné) a můžeme tedy přistoupit k jeho konfiguraci. Nejprve řekneme qmailu, jaké je jméno našeho počítače. Dodejme, že qmail úplně ignoruje soubor /etc/hosts nebo jiná tradiční linuxová nastavení, a všechna kanonická jména, se kterými se při své práci setká, resolvuje výhradně skrze DNS. Proto je kritickou podmínkou mít při porovozování qmailu v pořádku DNS. Také kvůli této vlastnosti je qmail vhodný jen pro počítače, které jsou k síti připojeny trvale (ačkoliv existuje i rozšíření pro dial-up). Konfigurace DNS není nápní tohoto článku.
# ./config-fast mojejmenopocitace.mojedomena.tld
Tímto příkazem jsme vytvořili sérii konfiguračních souborů v adresáři /var/qmail/control, které řídí jednotlivé funkce qmailu. Například v souboru me se nachází jméno počítače, na kterém qmail běží. V souboru rcpthosts je seznam domén, pro které qmail přijme poštu (na rozdíl od jiných MTA nedoručuje qmail implicitně poštu pro cizí domény, není tedy tzv. open-relay). Podobný význam má soubor "/var/qmail/control/locals", ve kterém je seznam domén považovaných za lokální. Chceme-li tedy pro začátek qmail zkonfigurovat na přijímání pošty pro doménu mojedomena.cz, musíme tuto doménu zapsat do souborů rcpthosts i locals:
# echo "mojedomena.cz" >> /var/qmail/controls/locals
# echo "mojedomena.cz" >> /var/qmail/controls/rcpthosts
Protože qmail (z bezpečnostních důvodů) nedoručuje poštu do speciálních systémových účtů, je nutné vytvořit aliasy, kterými případné zprávy, chybová hlášení apod. přesměrujeme regulernímu uživateli:
# cd ~alias;
# echo "&pepa@mojedomena.cz" > .qmail-postmaster
# cp .qmail-postmaster .qmail-root
# cp .qmail-postmaster .qmail-mailer-daemon
# chmod 644 ~alias/.qmail*
Adresář ~alias (resp. /var/qmail/alias) obsahuje aliasy (náhrady) za uživatelské účty. Pokud například přijde mail na adresu postmaster@mojedomena.cz, qmail zkontroluje, zda existuje soubor .qmail-postmaster, aby zjistil, že má mail přeposlat (&) na adresu pepa@mojedomena.cz. Soubory .qmail* jsou alternativou sendmailovských souborů .forward a můžeme s nimi vůbec provádět různé kousky. Každý uživatel může mít jeden takový soubor ve svém adresáři přizpůsobit si jej podle svého uvážení. Například někdo může chtít, aby mu při doručení mailu přišlo upozornění v podobě SMS na mobilní telefon. Udělá to tak, že si do souboru .qmail ve svém adresáři napíše třeba:
&00420602xxxxxx@sms.eurotel.cz
Dalším krokem je rozhodnutí, do jakého formátu mailboxu bude qmail zprávy doručovat. Preferovaným formátem je Maildir (jehož autorem není nikdo jiný než DJB), který oproti tradičnímu formátu mbox přináší mnohé výhody. Díky tomu, že Maildir není tvořen jen jedním souborem, k němu může současně přistupovat několik klientských programů, aniž by hrozila nekonzistence dat. Také je potencionálně spolehlivější a bezpečnější než klasický unixový způsob doručování souborů do mailboxů ve /var/spool/mail. Pokud nemáte nějaké zvláštní důvody, proč tak neučinit (nekompatibilní klientský software, velké množství existujícíh mailboxů, ...), použijte jej i vy. Maildir je nutné vytvořit pomocí příkazu maildirmake. Tuto činnost můžete samozřejmě jakkoliv zautomatizovat pro všechny své účty,
# su pepa
$ /var/qmail/bin/maildirmake ~/Maildir
Protože Sendmail je standardním programem, jehož přítomnost v systému předpokládá řada unixových aplikací, obsahuje qmail speciální program /var/qmail/bin/sendmail, který přebere od aplikací zprávu ve formátu určeném pro Sendmail a přesměruje ji do subsystému qmailu. Tento program (tzv. wrapper) se instaluje následovně:
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
Vlastní qmail se spouští pomocí příkazu /var/qmail/bin/qmail-start, který je nutné spustit někde v systémovém startovacím skriptu s následující syntaxí:
/var/qmail/bin/qmail-start ./Maildir/ /var/qmail/bin/splogger qmail &
Uvedené volání znamená, že program je zkonfigurován pro doručování pošty do adresářů Maildir v domovských adresářích uživatelů a výstupy má posílat do dystémového logu pomocí programu splogger. Existuje mnoho způsobů, jak spouštět qmail-start, například můžeme chtít doručovat poštu pomocí MDA programu procmail, apod. Zájemcům doporučuji studium ukázkových skriptů v adresáři /var/qmail/boot/. Pokud máte raději volání démonů ve stylu SystemV, jak je obvyklé u distribuce Red Hat a dalších, můžete namísto volání ze systémového skriptu použít tento konfigurační skript, který zkopírujete do /etc/rc.d/init.d a nainstalujete pomocí: (uživatelé jiných distribucí si určitě poradí sami ;)
# chmod a+x /etc/rc.d/init.d/qmail
# chkconfig --add qmail
# chkconfig --level 35 qmail on
# service qmail start
Kromě vlastního procesu qmail, který se zabývá zpracováváním fronty zpráv a doručováním do mailboxů uživatelů, je nutné nainstalovat také qmail-smtpd, což je síťový modul qmailu, zajišťující vlastní služby SMTP. Narozdíl od qmail-start se qmail-smtpd nespouští přímo, ale prostřednictvím speciálního programu - superserveru. Takových programů existuje v Linuxu celá řada, za všechny jmenujme třeba inetd (xinetd), který naleznete téměř v každé distribuci, a také tcpserver (další DJBware). Ten je pochopitelně doporučován autorem qmailu a zdá se, že nikoliv bezdůvodně, neboť je i rychlejší a pro spolupráci s qmailem lépe odladěn, proto jej i my použijeme v našem příkladě.
tcpserver je součástí komplexnějšího balíku ucspi-tcp. Naleznete jej tady. Kompilace a instalace balíku je jednoduchá:
# gunzip ucspi-tcp-0.88.tar
# tar -xf ucspi-tcp-0.88.tar
# cd ucspi-tcp-0.88
# make setup check
Program tcpserver má několik parametrů, jejichž přesný význam je uveden v jeho manuálové stránce. Nejjednodušší konfigurace tcpserveru nutná pro zavedení qmail-smtpd může vypadat třeba nějak takto: (Jistě si najdete svůj způsob, jak tento zápis "propašovat" do svých startovacích skriptů.)
# tcpserver -v -u QMDUID -g QMDGID 0 smtp /var/qmail/bin/qmail-smtpd &
Kde za QMDUID a QMDGID dosadíme UID, resp. GID uživatele qmaild, které zjistíme ze souboru /etc/passwd, resp. /etc/groups. Znak "&" na konci příkazu znamená, že program je pouštěn interaktivně - z příkazové řádky nebo ze startovacího skriptu - a způsobí, že daný příkaz bude spuštěn na pozadí.
Nyní jsme se dostali do stádia, kdy máme zkonfigurovaný funkční mailserver, který doručuje poštu všem našim uživatelům. Tím jsme tematicky vyčerpali první část seriálu. Příště si náš mailserver vylepšíme o funkce pop3/imap a seznámíme se s programem pro správu virtuálních uživatelských kont a domén vpopmail.
V minulém díle jsme provedli základní instalaci a konfiguraci programu qmail. Dnes si ukážeme, jak nad qmailem efektivně provozovat větší počet uživatelů sdružených do více virtuálních domén, aniž bychom pro ně museli explicitně zakládat unixové uživatelské účty. Řekneme si také, jak se vypořádat s problematikou SMTP relayingu.
Ještě před tím si ovšem ukážeme, jak zkonfigurovat POP3, abychom uživatelům umožnili stahovat si poštu z našeho serveru. Použijeme k tomu program qmail-pop3d, který je součástí qmailu. V principu však můžete použít i jiný kompatibilní POP3 nebo IMAP server.
Program qmail-pop3d se používá podobně jako qmail-smtpd, tedy spouští se přes tcpserver. Nejjednodušší volání může vydat nějak takto:
# tcpserver 0 110 /var/qmail/qmail-popup jmenonasehoserveru.cz \
/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1
Program checkpassword slouží k ověřování uživatelských hesel. Na stránkách www.qmail.org naleznete několik různých implementací checkpassword, které se liší podle způsobu, jakým ověřují uživatelská hesla. Vedle jednoduchých řešení navázaných na systémovou databázi hesel najdeme skripty pro autentizaci proti SQL serveru, LDAP, SMB, atd. Základní program /bin/checkpassword pro qmail-pop3d najdete tady.
vpopmail
Provozovat poštovní server s virtuálními uživatelskými účty má oproti klasickému řešení, kdy každý uživatel má svůj vlastní unixový (shell) účet s přiděleným UID, své výhody. Hlavní motivací je větší bezpečnost. Ve většině případů není nutné, ba ani žádoucí, aby se nám uživatelé mohli přímo přihlašovat na server přes telnet, ssh, ftp nebo jiné služby vázané na systémové účty. Potenciální útočník nezíská odposlechnutím POP3 hesla nic víc než jen přístup k uživatelově poště.
Zřejmě nejdokonalejší podporu virtuálních účtů, pokud náš výběr zúžíme na řešení pro qmail, nabízí program vpopmail. vpopmail je GPL software vyvíjený firmou Inter7. Jeho domovskou stránku stránku najdete tady.
vpopmail se, narozdíl od qmailu, instaluje klasickou kombinací příkazů "./configure ; make ; make_install". Příkaz ./configure může mít řadu parametrů, kterými ovlivníme fungování programu. Většina správců pravděpodobně bude chtít aktivovat funkci "--enable-roaming-users=y" pro povolení relayingu uživatelům s dynamickou IP adresou (více později). Význam dalších parametrů najdete v dokumentaci, případně v samotném skriptu configure. Ještě před kompilací je nutné vytvořit systémový účet používaný programem:
# groupadd -g 89 vchkpw
# useradd -g vchkpw -u 89 -d /var/spool/vpopmail vpopmail
Pracovní adresář vpopmailu je /var/spool/vpopmail, to je tedy místo, kam bude doručována veškerá uživatelská pošta a kde budou vytvářeny uživatelské účty. Ujistěte se tedy, že máte na svazku /var dostatečnou rezervu volného prostoru.
Nyní, když máme vpopmail nainstalován, můžeme přikročit k vytváření vlastních uživatelských účtů a virtuálních domén. Slouží k tomu programy v adresáři vpopmail/bin, jejichž použití je velice snadné. Doména se zakládá pomocí příkazu vadddomain. Parametrem je jméno virtuální domény a případně heslo uživatele postmaster, který je základním uživatelem každé virtuální domény a jsou mu doručována chybová hlášení související s provozem pošty. Prostřednictvím www rozhraní, kterému se budeme podrobně věnovat v příštím dílu, může postmaster spravovat uživatelské poštovní schránky v dané virtuální doméně.
Nyní jsme však stále ještě na příkazové řdáce, kde se poštovní účty vytváří příkazem vadduser jmenouctu@domena.cz. V systému vpopmail je, podobně jako u emailové adresy, zvyklostí oddělovat jméno účtu od domény, do které schránka patří, zavináčem (můžete ale použít i znak "%"). Když se tedy uživatel přihlašuje ke své schránce, musí své uživatelské jméno uvést včetně domény, tedy např. "pepa@mojedomena.cz". V době kompilace programu můžete pomocí parametru "--enable-default-domain=mojedomena.cz" stanovit, že některá z virtuálních domén bude implicitní, tj. uživatel pepa@mojedomena.cz se bude moci přihlašovat také jen jako "pepa".
Jednotlivé schránky a celé domény je možné smazat příkazem vdeluser, resp. vdeldomain. Uživatelské heslo se mění programem vpasswd.
Pokud budeme pro správu účtů používat pouze uvedené programy, nemusíme se v souvislosti s mailboxy zabývat ničím dalším (vpopmail za nás sám vytváří a maže uživatelské maildiry, sám zajistí modifikaci souborů v /var/qmail/control apod.).
Teď musíme upravit volání pop3 serveru tak, aby se místo programu /bin/checkpassword používal vpopmail, resp. modul vchkpw, který je základním autentizačním programem ve vpopmailu:
# tcpserver -H -R 0 110 /var/qmail/bin/qmail-popup jmenopocitace.cz \
/var/spool/vpopmail/bin/vchkpw /var/qmail-pop3d Maildir &
Jako nevýhodu vpopmailu je ovšem nutné uvést určitá omezení při výběru POP3, IMAP a dalších programů, neboť náš výběr bude omezen jen na řešení s ním spolupracující. Kromě toho uživatelé nebudou moci přistupovat ke své poště jinak než pomocí protokolů POP3 nebo IMAP, případně podporovaného webmailu.
Jak na relaying
Relaying znamená zástupné doručování zpráv, kdy SMTP server převezme od klienta mail adresovaný jinému SMTP serveru a provede doručení místo něj.
Jak již víme z minulé části článku, je qmail implicitně nakonfigurován tak, že přijímá poštu pouze pro své vlastní uživatele, resp. pro domény uvedené v konfiguračním souboru control/rcpthosts. Tím se snaží předcházet tomu, aby neautorizovaný spamer nemohl zneužít náš server k rozesílání nevyžádané pošty. Spameři si často vyhledávají SMTP servery bez tohoto omezení (open relays), aby mohli využívat cizí přenosovou kapacitu a nebo aby se mohli krýt autoritou cizí IP adresy. Proto je u qmailu toto chování žádoucí, ač nám na první pohled může připadat jako omezující. Pokud se však rozhodenete zkonfigurovat svůj mail server jako open-relay, vystavujete se riziku, že se časem ocitnete na černé listině spammerských serverů, od kterých některé servery nepřijímají vůbec žádnou poštu.
Zmíněné omezení zpočívá v tom, že když budete chtít umožnit relaying vašim autorizovaným uživatelům, musíte jejich IP adresy předat programu qmail-smtpd. Toho docílíte přidáním parametru "-x" do volání tcpserveru, které pak může vypadat nějak takto:
# tcpserver -x ~vpopmail/etc/tcp.smtp.cdb -v -u QMDPID -g QMDGID 0 smtp \
var/qmail/bin/qmail-smtpd &
Soubor tcp.smtp.cdb je databázová struktura ve formátu cdb, kterou vytvoříme pomocí příkazu tcprules (součást balíku ucspi-tcp). Pokud chceme kupříkladu povolit relaying pro celou lokální síť 192.168.0.0/16, vytvoříme nejprve textový soubor tcp.smtp, a z něj pak nezbytnou cdb databázi tímto způsobem:
# echo '127.:allow,RELAYCLIENT=""' > ~vpopmail/etc/tcp.smtp
# echo '192.168.:allow,RELAYCLIENT=""' >> ~vpopmail/etc/tcp.smtp
# tcprules ~vpopmail/etc/tcp.smptp.cdb ~vpopmail/etc/smtp.tmp \
< ~vpopmail/etc.smtp
Tak tedy docílíme toho, že ze zmíněných adres bude qmail přijímat poštu bez ohledu na obsah souboru control/rcpthosts. Co si ale počnout v případě, kdy naši klienti nemají statickou (pevně stanovenou) IP adresu, například proto, že se připojují přes modem? Řešení je prosté. Pokud používáme vpopmail zkompilovaný s direktivou "--enable-roaming-users=y", bude vpopmail automaticky zaznamenávat do cdb databáze každou IP adresu, ze které se nějaký uživatel úspěšně přihlásil k POP3. Pokud si tedy náš uživatel stáhne z pop3 serveru poštu, bude z jeho IP adresy na předem stanovenou dobu povolen relaying. Tato oblíbená a účinná technika bývá také nazývána SMTP after POP.
Aby se nám IP adresy v databázi nehromadily, zajistíme jejich pravidelné odtraňování. K tomu slouží program ~vpopmail/bin/clearopensmtp, který je vhodné přidat do cronu, aby se spouštěl například každou hodinu.
Pokud nepoužíváte vpopmail, a přesto chcete používat SMTP after POP, musíte použít některý z alternativních programů checkpassword, který se chová podobně, tzn. modifikuje tcp.smtp databázi při každém ověření uživatelova POP3 hesla. Několik takových programů najdete na www.qmail.org
Úplně jiným řešením relayingu může být SMTP-AUTH, což je rozšíření SMTP protokolu o autentizační část. Zjednodušeně řečeno klient se před odeslánáním zpráv přihlásí jménem a heslem a teprve potom může začít předávat zprávy. Tento způsob však vyžaduje kromě podporovaného emailového programu také záplatování serveru, protože jej qmail standardně nepodporuje. Odkazy na příslušné patche hledejte rovněž na stránkách www.qmail.org
To je pro dnešek vše. Příště si mimo jiné k našemu mailserveru přidáme www rozhraní pro správu uživatelských kont a ukážeme si také, jak zprovoznit IMAP server.
Po delší době, která byla zapříčiněna mou vpravdě extremní zaneprázdněností, pokračuje seriál o stavbě mailového serveru. Dnes si zprovozníme qmailadmin, webové rozhraní pro správu uživatelských kont a IMAP server.
Nejprve ovšem musím dát do pořádku několik restů, protože do předchozích dílů článku se mi vloudilo pár chybek.
Předně je třeba doplnit, že ve skriptu, ve kterém spouštíte qmail, by měla být nastavena proměnná PATH, aby obsahovala cestu k programovým souborům qmailu. Tedy např:
PATH="/var/qmail/bin:$PATH"; export PATH
Nějakým nedopatřením také není možné stáhnout ukázkový skript v prvním díle článku. Tento soubor tedy najdete také tady
Dále je chyba v cestě k programu qmail-pop3d ve volání článku:
/var/qmail-pop3d ... místo správného /var/qmail/bin/qmail-pop3d...
A teď se již pojďme věnovat slíbeným novinkám.
Ovládání kombinace qmail-vpopmail přes příkazovou řádku je sice jednoduché, ale v praxi často potřebujeme některým uživatelům, ale i správcům, poskytnout přístup přes pro ledaskoho pohodlnější grafické uživatelské rozhraní. Uživatelé si také mohou měnit heslo, přesměrovávat své maily a správci jednotlivých virtuálních domén mohou vytvářet nové uživatele v rámci své domény, aniž by k tomu potřebovali shell konto na našem serveru.
Proto je vhodné na server nainstalovat program qmailadmin. Stejně jako vpopmail, i on je vyvíjen firmou Inter7. Nijak tedy nepřekvapí, že je pro spolupráci s vpopmailem dokonale odladěn.
Funkční demo programu qmailadmin si můžete vyzkoušet tady (účet: postmaster, doména: test.com, heslo: test).
qmailadmin je tvořen cgi program a podpůrnou grafikou. Instalace je klasicky jednoduchá ( configure ; make ; make install ). K jeho provozu je dobré mít nainstalovány ještě programy autoresponder a ezmlm, které qmailadmin používá pro některé své funkce. Odkazy na zmíněné programy naleznete na stránkách qmailadminu. Pokud vám qmailadmin nebude ověřovat hesla, přesvědčte se, že je binární soubor qmailadmin.cgi vlastněn uživatelem vpopmail.vchkpw a že má nastavené bity SUID.
Courier-IMAP
Protokol IMAP se v praxi používá méně často než POP3. Má ovšem několik fajn vlastností, které stojí za to, abychom ho nainstalovali i na náš mailserver. Použijeme k tomu balík Courier IMAP firmy Double Precision, který přísně vzato není jen pouhým IMAP serverem, ale dokáže fungovat také jako POP3 server a kromě toho zajišťuje SSL zabezpečení jak pro IMAP (imaps), tak i pro pop3 (pop3s).
Skvělou vlastností Courier IMAPu je modularita, neboť obsahuje několik autentizačních modulů, pomocí kterých může ověřovat uživatelská hesla na různých místech a různými způsoby. Vedle modulu pro systémovou databázi /etc/passwd v něm najdeme ještě rozšíření pro MySQL, LDAP, PostgreSQL, PAM a samozřejmě vpopmail.
Instalace je jednoduchá. Program stáhneme například odsud a nakonfigurujeme jej pomocí standardního skriptu configure. Důležitý konfigurační parametr může být "--enable-unicode", který přikompiluje podporu rozšířených znakových sad. Kromě toho je dobré vědět, že konfiguraci i kompilaci (ale nikoliv již instalaci) je nutné provádět jako běžný uživatel (tedy nikoliv pod rootem). Nezapomeňte se také přesvědčit, že uživatel, pod kterým kompilujete, má práva na čtení souborů z adresáře /var/spool/vpopmail/lib. Nyní již tedy můžeme program zkompilovat (make) a naistalovat (umask 022 ; make install-strip ; make install_configure).
Program se implicitně instaluje do /usr/lib/courier-imap, konfigurační soubory jsou umístěny v podadresáři etc. Konfigurační soubor IMAP serveru se jmenuje překvapivě imapd. Je hojně okomentován, takže se zde nebudu podrobněji rozepisovat o jeho paramatrech. Defaultní konfigurace je vcelku bez úprav použitelná, všiměte si jen, zda v seznamu autentizačních modulů nechybí "AUTHVCHKPW" (autentizační modul pro vpopmail).
Vlastní server spustíme tak, že do startovacích skriptů přidáme příkaz
/usr/lib/courier-imap/libexec/imapd.rc start
Pokud vás trápí, že při čtení vaší pošty přes Internet, ať už skrze protokol POP-3, nebo IMAP, putují vaše přihlašovací informace, stejně jako všechny přenášené zpávy, po síti nešifrovaně, bude vás asi zajímat možnost zabezpečení pošty pomocí SSL (Secure Socket Layer).
Spuštění IMAP over SSL je velmi podobné spouštění "obyčejného" IMAPu - konfigurační soubor se ovšem jmenuje imapd-ssl. K provozu SSL služeb potřebujete digitální certifikát. Certifikát je v podstatě veřejný klíč, tak jak jej známe s asymetrické kryptografie, který je doplněn digitálním podpisem certifikační autority, jež tak zaručuje jeho autenticitu. V praxi je ale mnohem častější případ, kdy si svůj klíč generujeme i podepisujeme sami. Nevýhodou takového řešení je ovšem skutečnost, že někteří SSL klienti, zejména na klikacích platformách, vás budou při každém použití takového certifikátu informovat hláškou, že daný certifikát nebyl vystaven žádnou jemu známou certifikační autoritou.
SSL certifikát se vytváří pomocí programů z balíku openssl (neplést s OpenSSH), který by měl být přítomen ve většině moderních distribucí. Pokud jej nemáte, můžete si ho stáhnout odsud. Courier IMAP obsahuje skripty, které vám generování certifikátu maximálně usnadní. Potřebujete jen poeditovat soubor /usr/lib/courier-imap/etc a opravit pooložky v sekci [ req_dn ] tak, aby odpovídaly vašim potřebám (stát, město, jméno a adresa počítače atd.). Většina správců pravděpodobně bude také chtít upravit dobu platnosti certifikátu (standardně 30 dní), pročež je třeba změnit proměnnou default_crl_days v souboru /usr/share/ssl/openssl.cnf. Poté spustíme zmíněný skript /usr/lib/courier-imap/sbin/mkimapdcert a certifikát je hotov.
Teď už musíme jenom spustit startovací skript, který na portu 993 spustí imaps server:
/usr/lib/courier-imap/libexec/imapd-ssl.rc start
Kromě toho umí Courier-IMAP i protokoly pop3 a pop3-ssl, jejichž konfigurace je natolik podobná popisovaným řešením, že její další vysvětlování bych považoval za zpochybňování inteligence čtenáře tohoto článku.
Proto se tedy pro dnešek loučím a těším se na setkání u dalšího dílu, kde bych se chtěl vrátit k fungování qmailu a jeho rozšíření o některé užitečné patche.
« Zpět na seznam