Mailserver - Webmail

Mailserver sám o sobě funguje, z mailového klienta si poštu již klidně můžeme číst a posílat, ale ke zdokonalení si zprovozníme ještě jednu věc - webmail.

Na internetu je spousta webových e-mailových klientů. Já jsem zvolil balík horde. Horde je velice rozsáhlá sada aplikací, kromě e-mailového klienta má kalendář, todo list, poznámky atd... Jeho instalace není tedy uplně nejjednodušší, ale na druhou stranu má zase možnost definovat filtry, které se dokáží bavit přes managesieve s naším dovecotem.

Instalace horde

Stáhneme tedy horde balík (na webu je možnost groupware edition, kde jsou zahrnuty základní programy anebo možnost stahovat aplikace jednotlivě; je jedno, kterou variantu zvolíte, pokud se rozhodnete pro jednotlivé aplikace, budeme potřebovat IMP a Ingo). Horde obsahuje konfigurační skript, takže celá konfigurace je poměrně jednoduchá. Stačí nám pouze php se všemi potřebnými moduly. Ve zkratce tedy rozbalíme někam do www rootu balík s horde a spustíme skript ./scripts/setup.php. Skript by se měl na vše potřebné zeptat a nastavit, včetně vytvoření patřičné databáze pro horde a jiné. Co se týče přihlašování, budeme nutit horde, aby kontroloval uživatelské jméno a heslo proti našemu IMAP serveru (nemá cenu pro Horde duplikovat další loginy).

Konfigurace IMP a Ingo

Pokud jsme horde nainstalovali na stejný stroj, na jakém nám běží mailserver, nemusíme k IMP ani nic více konfigurovat - IMP ve výchozím nastavení se snaží připojovat k IMAP serveru běžícímu na localhostu. V opačném případě zeditujeme konfigurační soubor v horde/imp/config/servers.php a nastavíme potřebné parametry.

O něco více pozornosti musíme věnovat programu Ingo. To totiž musíme donutit bavit se s naším managesieve serverem. Pozornost tedy zaměříme na soubor horde/ingo/config/backends.php. Soubor vyčistíme a ponecháme v něm takovéto řádky:

<?php
$backends['sieve'] = array(
'driver' => 'timsieved',
'preferred' => 'localhost',
'hordeauth' => full,
'params' => array(
'hostspec' => 'localhost',
'logintype' => 'PLAIN',
'usetls' => true,
'port' => 2000,
'scriptname' => 'ingo',
),
'script' => 'sieve',
'scriptparams' => array(),
'shares' => false
);
?>

Ingu tedy řekneme, že budeme používat driver timsieved (předávání sieve skriptů po síti) a že náš server běží na localhostu a portu 2000. Dále nesmíme opomenout hordeauth nastavit na full; jinak se budeme k managesieve přihlašovat jménem bez části @doména, což samozřejmě managesieve nepovolí. Tímto by měla být konfigurace funkční a mělo by jít definovat vlastní filtry.

Test funkčnosti

Pro otestování funkčnosti našeho webmailu zkusíme 3 věci. Zaprvé, pokud už v našem mailboxu máme nějakou zprávu, tak po přihlášení zkontrolujeme, že vidíme složky našeho mailserveru a v něm i zprávy. Následně zkusíme z horde nějakou zprávu i odeslat, což by také snad neměl být problém. Poslední věcí zbývá vyzkoušení filtru. Zkuste si tedy v ingu vytvořit libovolný filtr a následně na serveru se podívejte do složky daného uživatele a složky sieve, zda se zde vytvořil patřičný skript a zda v ~/.dovecot.sieve je symlink na tento sieve skript vytvořený ingem. Pokud ano, filtrování zpráv by mělo bez problémů fungovat.

Poznámky

Ingo má jednu takovou menší slabinu. Jak si jistě mnozí všimli, ingo se snaží být všestrané, takže kromě sieve skriptů generuje i konfiguráky pro maildrop a tak podobně. Zároveň si pravidla udržuje ve vlastní databázi a do sieve je pouze exportuje. To přináší takové menší obtíže - sieve skripty umožňují mnohem větší možnosti, než lze v ingu vytvořit. Ta ještě horší část na tom je ta, že pokud se rozhodnete sieve skript upravit ručně, tak ingo díky své vnitřní paměti na pravidla je po příštím updatu od sebe stejně smaže. Proto pokud se rozhodnete používat pokročilejší filtrovací skripty, není úplně nejvhodnější používat dále ingo. Jinak pro tvorbu a managování sieve skriptů existuje i řada dalších nástrojů; spoustu z nich naleznete přímo na webu sieve.