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.