Aliasy
Aliasy představují metodu, jak více e-mailových adres směrovat do jediné schránky. Aliasy jsou definované v souboru /etc/aliases
, kde jsou již připraveny výchozí aliasy (kupříkladu, dle RFC by každý SMTP server měl přijímat poštu směrovanou na postmaster@domenatld
a jeden z aliasů přeposílá tuto poštu rootovi). Syntax tohoto konfiguračního souboru je velmi jednoduchá:
alias: schranka
Tento záznam doručí poštu směřující na alias@domenatld
do schránky uživatele schranka
. Specifikovat můžete ale i více příjemců, takže pokud třeba server spravuje více správců, můžete poštu pro roota posílat každému z nich:
root: michal@exampleorg, pepa@exampleorg, radek@exampleorg
Jste-li zvyklí po úpravě konfiguračního souboru restartovat server a očekávat, že se změna projeví, v tomto případě vás zaskočí mírně neintuitivní chování Postfixu. Pokud totiž provedete úpravu /etc/aliases
a pouze restartujete poštovní server, změny se neprojeví. Postfix totiž nepracuje přímo s konfiguračním souborem /etc/aliases
, ale s databázovým souborem (/etc/aliases.db
), který se z tohoto souboru generuje. A to nikoliv automaticky, ale pouze na pokyn správce, příkazem:
newaliases
Teprve poté sdělte Postfixu, že si má znovu načíst konfiguraci:
service postfix reload
Zde je třeba dodat, že řada seznamů hodnot či pravidel se v Postfixu vytváří a spravuje tímto způsobem, tj. ze souboru si musíte nechat vygenerovat příslušný binární databázový soubor, a to příkazem postmap
. Příkaz newaliases
slouží pouze pro opětovné vygenerování databáze aliasů, kdežto postmap
vám umožňuje vygenerovat databázi z libovolného (vhodně formátovaného) souboru:
postmap /etc/aliases
Nástroj newaliases
de facto provede výše zmíněný příkaz.
Záložní poštovní server
Záložní poštovní server se hodí v situaci, kdy váš hlavní poštovní server vypadne. Přirozeně, rozumně nastavené poštovní servery by neměly doručování na váš poštovní server rovnou vzdát, měly by si poštu pro váš server uložit a zkoušet ji doručit, dokud neuplyne timeout (výchozí timeout v Postfixu je 5 dní).
Záložní servery se specifikují pomocí MX záznamů DNS. Každý poštovní server má přiřazenou prioritu, která je daná kladným přirozeným číslem, kde vyšší číslo značí nižší prioritu.
Tvorba záložního serveru může být velmi jednoduchá, ale skýtá jedno velké ale. Samotnou funkčnost záložního serveru lze zrealizovat přidáním domén, pro které chcete dělat záložní server, do proměnné relay_domains
v /etc/postfix/main.cf
:
relay_domains = example.com, example.org
Přirozeně, tyto domény nesmí být specifikovány v mydestination
nebo jinde, kde se nastavuje nějaký typ místního doručování.
A nyní ono veliké ale. Za předpokladu, že je hodnota proměnné relay_recipient_maps
prázdná, Postfix bude normálně přijímat veškerou poštu, která bude určena pro výše nastavené domény. Včetně pošty pro uživatele, kteří na hlavním poštovním serveru neexistují. Kdyby se totéž odehrálo na hlavním serveru, ten by prostě ohlásil, že daný uživatel neexistuje a odmítl poštu převzít. Záložní server v této konfiguraci však poštu přijme, a až bude hlavní server opět k dispozici, vygenerují se oznámení o nedoručení, která se rozešlou všem chudákům, které spammeři vyplnili do pole From
.
Co s tím dělat? Kromě možnosti, že záložní poštovní server vůbec nebudete používat, zbývá volba relay_recipient_maps
(v souboru /etc/postfix/main.cf
), která vám umožňuje specifikovat platné uživatele domén, pro které váš server slouží jako záložní:
relay_recipient_maps = hash:/etc/postfix/relay_recipients
Následně vytvořte soubor /etc/postfix/relay_recipients
a naplňte ho platnými adresami:
uzivatel1@examplecom x uzivatel1@exampleorg x uzivatel2@examplecom x uzivatel2@exampleorg x
Pokud takový seznam nechcete nebo nemůžete vytvořit a výše popsaný problém vám nevadí, ponechte relay_recipient_maps
prázdné, což zapříčiní, že Postfix bude přijímat všechnu poštu. Je-li tato volba neprázdná, bude Postfix odmítat všechno kromě položek v daném seznamu.
Unixové a virtuální poštovní účty
Standardní nastavení Postfixu, které jsem vám ukázal v jednom z minulých dílů, doručuje poštu všem lokálním unixovým účtům. Máte-li tedy uživatele michal
a poštovní server na doméně example.com
, bude se pošta směřující na michal@examplecom
doručovat do poštovní schránky uživatele michal
. Obsluhuje-li server více domén, bude pošta ze všech domén směřovat na jediný unixový účet (tzn. pošta směřující na michal@examplecz
, michal@exampleorg
a michal@examplecom
bude doručena do schránky uživatele michal
).
U jedné domény nebo u osobního serveru je tato situace většinou tolerovatelná. Potřebujete-li však doručit poštu směřující na info@examplecom
a info@exampleorg
do dvou různých schránek, musí přijít na řadu jiné řešení. Možnosti jsou zde v podstatě dvě:
- virtuální aliasy (směrovat specifické e-mailové adresy na různé unixové účty)
- vytvořit pro uživatele pošty virtuální účty, nesvázané s unixovými
Druhá z variant se často realizuje ve spolupráci s nějakou databází (MySQL, PostgreSQL), kde se uchovávají informace o účtech, zatímco pošta se směruje buď do souborů, nebo také do databáze. Jedná se o komplexní řešení, které bude probráno v jednom z následujících dílů.
První varianta je oproti druhé velmi jednoduchá. Přidejte do /etc/postfix/main.cf
následující řádky:
virtual_alias_domains = example.org example.com virtual_alias_maps = hash:/etc/postfix/virtual
Do proměnné virtual_alias_domains
vložte seznam domén, pro které chcete tvořit virtuální aliasy, oddělovačem je zde mezera. Pozor! V žádném případě nesmíte stejnou doménu uvést v virtual_alias_domains
a v mydestination
! Doména může být vždy jen v jedné z těchto proměnných.
Proměnná virtual_alias_maps
obsahuje odkaz na soubor /etc/postfix/virtual
, který nyní musíte vytvořit, a to s obsahem podobným tomuto:
info@exampleorg michal info@examplecom radek postmaster@examplecom root postmaster@exampleorg root @example.com domenovykos
Zde je asi na první pohled vidět, co je jak nastaveno. Maily směřující na info@exampleorg
budou doručeny uživateli michal
, zatímco maily směřující na info@examplecom
budou doručeny uživateli radek
. Je zde definován alias pro postmastera, který v případě obou domén doručí poštu rootovi. Příklad obsahuje i doménový koš, tedy zachytávání pošty pro všechny neexistující uživatele, a to v tomto případě do schránky uživatele domenovykos
.
Nyní je třeba vygenerovat databázový soubor z /etc/postfix/virtual
, což můžete provést nástrojem postmap
:
postmap /etc/postfix/virtual
Následně nechte Postfix znovu načíst konfiguraci:
service postfix reload
Doporučuji poté toto nastavení otestovat zasláním testovacích e-mailů. To, jak byla pošta doručována a kam, si můžete ověřit z logů – v Debianu je to /var/log/mail.log
.