Poštovní server a více domén

Správa linuxového serveru: Poštovní server a více domén

Ve chvíli, kdy máte k dispozici více domén, vám už patrně ta nejjednodušší konfigurace poštovního serveru vázaná na unixové účty nebude stačit a začnete se poohlížet po možnostech tvorby virtuálních účtů pro jednotlivé domény. V tomto díle představíme jedno z takových řešení, postavené na webové aplikaci Postfixadmin.

Dosavadní konfigurace poštovního serveru představená v tomto seriálu počítala výhradně s vazbou poštovní schránky na unixové účty. Toto řešení je sice velmi jednoduché na implementaci, ale má několik nevýhod. V první řadě je to nutnost vytvořit unixový účet všem majitelům poštovních schránek. Pokud byste takovému uživateli nechtěli poskytnout přístup k shellu nebo jiným službám vázaným na unixové účty (což je z bezpečnostních důvodů více než rozumné), museli byste to nějakým způsobem ošetřit všude tam, kde se unixové účty používají.

Obsluhuje-li váš server více domén, mohli jste narazit na problém se stejnými jmény na různých doménách. Představte si, že máte unixového uživatele michal a domény example.com a example.net, přičemž poštovní schránky michal@example.com a michal@example.net mají mít jiné vlastníky. Ve výchozí konfiguraci Postfixu by pošta z obou adres směřovala do schránky uživatele michal. Jedno z řešení tohoto problému, spočívající ve vytvoření virtuálních aliasů, které ukazují na různé unixové účty (tedy např. michal@example.com by ukazoval na michal1 a michal@example.net by ukazoval na účet michal2), bylo představeno v tomto dílu. Takové řešení lze použít, dokud nemáte větší množství uživatelů nebo domén.

Jinou možností řešení tohoto problému jsou plně virtuální účty, tzn. zcela izolované účty pro poštu, s vlastním heslem (nezávislým na unixovém) pro každou schránku. Existuje mnoho způsobů, jak takové řešení implementovat. Často se jako úložiště nepoužívají textové soubory, nýbrž databáze (což bude i případ tohoto návodu). Postavíte-li si vlastní řešení, budete si muset ošetřit zakládání, rušení a nastavování účtů. V tomto díle bude uvedeno připravené řešení s využitím Postfixadminu, který správu účtů a domén usnadňuje.

Postfixadmin

Postfixadmin je webová aplikace napsaná v PHP, určená pro správu virtuálních poštovních účtů. Má bohaté možnosti konfigurace a poměrně jednoduché rozhraní. Postfixadmin není zázračný nástroj, který vám zpřístupní úplně všechny možnosti nastavení Postfixu v tomto ohledu, ale umožní vám celkem snadnou správu virtuálních účtů.

Virtuální účty, Postfix a Postfixadmin

Možnosti Postfixu a jeho nastavení jsou nepřeberné, což by mělo jít částečně poznat i na tomto seriálu, jelikož poštovnímu serveru se věnovalo předchozích deset dílů, což je mnohem více, než bylo věnováno jakémukoliv jinému tématu, a to byly probírány stále spíše jen základy. Řešení popsané v tomto dílu lze také považovat za základní řešení, od kterého se můžete odrazit, přičemž pokročilejší funkce typu kvót či automatické odpovědi v případě nepřítomnosti jsou ponechány na vašem dalším zkoumání Postfixadminu a Postfixu.

Zatímco nastavit Postfixadmin je relativně jednoduché, ke zprovoznění celého řešení bude třeba upravit konfiguraci Postfixu a IMAP/POP3 démona, které nejsou úplně triviální a není těžké v nich udělat chybu. Proto tentokrát více než kdy jindy důrazně nedoporučuji provádět podobné úpravy na produkčních serverech. Doporučuji si toto řešení vyzkoušet někde nanečisto před nasazením.

Instalace

Předpokladem pro instalaci Postfixadminu jsou následující komponenty:

Nemáte-li výše uvedené komponenty nainstalované, učiňte tak před instalací Postfixadminu.

Podstatnou informací je, že Postfixadmin není součástí repozitářů Debianu Squeeze. K dispozici je až pro Debian 7.0 s označením Wheezy. Používáte-li Debian Squeeze, stáhněte si deb balíček ze stránek projektu a nainstalujte jej pomocí nástroje dpkg:

dpkg -i balicek.deb

Používáte-li Debian Wheezy, mělo by stačit použít Aptitude:

aptitude install postfixadmin

Pozor – budete-li využívat Postfixadmin na Debianu Squeeze, budete muset řešit aktualizace Postfixadminu ručně. Naopak, používáte-li Debian Wheezy, berte na vědomí, že návod je otestován pouze v Debianu Squeeze. Zní to komplikovaně, ale není :)

Během instalace vás Debconf vyzve, abyste vybrali webový server pro automatickou konfiguraci a abyste vybrali databázový server. Následující text bude předpokládat MySQL jako databázový server. Chcete-li používat PostgreSQL, nahlédněte do dokumentace (některé databázové dotazy se budou lišit, nestačí tedy jen přepsat mysql za pgsql). Návod pro PostgreSQL naleznete i v odkazech pod článkem.

Integrace s webovým serverem

Po instalaci by měl být váš webový server pro Postfixadmin nastavený, tedy za předpokladu, že jste použili některý z výše uvedených (Apache nebo Lighttpd). Používáte-li Apache, naleznete jeho konfigurační soubor v /etc/postfixadmin/apache.conf (v případě Lighttpd je to /etc/postfixadmin/lighttpd.conf). Vzhledem k povaze aplikace lze důrazně doporučit omezení přístupu k ní jednak na nějaký SSL virtuální web, aby hesla neputovala k serveru nešifrovaná, a jednak libovolným dalším způsobem dle vlastního uvážení (omezení na IP adresy, HTTP autentifikace atd.).

Úprava je jednoduchá – nejprve odstraňte symbolický odkaz /etc/apache2/conf.d/postfixadmin, který vkládá daný alias do všech vašich virtuálních webů (virtual host). Následně si vyberte některý z vašich existujících virtuálních webů (ideálně takový, který je chráněn SSL), popřípadě si vytvořte nový a doplňte do něj vyznačenou řádku:

<VirtualHost 1.2.3.4:443>

        ServerName www.example.cz
        ServerAlias example.cz

Alias /postfixadmin /usr/share/postfixadmin

DocumentRoot /var/www/example.cz/www
        <Directory "/var/www/example.cz/www">
                Order allow,deny
                Allow from all
        </Directory>

        SSLEngine On
        SSLCertificateFile /etc/apache2/example-cz-certifikat.pem
        SSLCACertificateFile /etc/apache2/ssl-ca.pem

</VirtualHost>
Volitelně pak doplňte omezení k přístupu na daný web. Alias si samozřejmě můžete upravit a místo /postfixadmin zvolit něco jiného, kratšího.

Dodám, že nastavení Apache, tvorbě virtuálních webů, práci s aliasy, SSL a omezení přístupu k webům na základě IP adres se věnoval Úvod do konfigurace Apache (1. díl a 2. díl). Budete-li pracovat se SSL, hodí se vám ještě díl o SNI.

Nastavení Postfixadminu

Webový server byste v tuto chvíli měli mít nastavený a k Postfixadminu byste měli být schopni se dostat prostřednictvím aliasu /postfixadmin. Jako první byste měli spustit setup.php:

https://server.example.org/postfixadmin/setup.php

Nejprve budete požádáni o správcovské heslo. Jakmile jej zadáte, vygeneruje se vám řádka, kterou vložíte do /etc/postfixadmin/config.inc.php, resp. kde nahradíte existující proměnnou $CONF['setup_password']. Následně si vytvořte administrátorský účet (podmínkou je platný e-mail a správcovské heslo, které jste si nastavili dříve).

Nyní byste měli ještě jednou upravit /etc/postfixadmin/config.inc.php, projít si jej a přizpůsobit si jeho obsah. Přinejmenším si upravte následující proměnné:

Dokumentace k Postfixadminu je po instalaci k dispozici v /usr/share/doc/postfixadmin.

Logika ovládání Postfixadminu

Hlavním uživatelem je správce, kterého jste si vytvořili výše. Správce může definovat další správce, kteří pak budou mít na starost nějaké domény (které, to můžete specifikovat). Zatímco hlavní správce může pořizovat zálohu databáze (karta Backup), tvořit domény a další správce, správci konkrétních domén tato privilegia nemají, jsou omezeni na konkrétní domény. V podobném duchu jsou omezené aliasy – alias vytvořený hlavním správcem nelze upravovat nebo mazat s právy správce domény. U poštovních schránek to však neplatí. Pro jednotlivé domény je možné specifikovat omezení v počtu schránek a aliasů, které jsou pak pro správce domén závazné.

Jednotlivé účty jsou samozřejmě vázány ke konkrétním doménám. Autentifikační údaje tedy tvoří login, což je celý e-mail včetně doménové části, a heslo, které je definováno v příslušné databázové tabulce spravované Postfixadminem.

Operace realizované v prostředí Postfixadminu se logují a jak hlavní správce, tak správci domén mají přehled, které operace byly kdy provedeny.

Postfixadmin umožňuje také nadefinovat automatické stahování pošty z cizích POP3/IMAP serverů do konkrétních poštovních schránek. Tato funkčnost je však vázána na příslušná nastavení, která v tomto seriálu probrána nebudou. V odkazech pod článkem však naleznete návod, jak tuto funkčnost zprovoznit.