Minulé dva díly (první díl, druhý díl) se věnovaly převážně teorii, nicméně je vhodné si je projít před tímto článkem.
Nastavení DNS
Předpokladem pro funkci poštovního serveru je správně nastavené a fungující DNS. U příslušných domén, kterým chcete dělat pošťáka, byste měli mít nastaveny MX záznamy (pokud je nastaveny nemáte, využijí poštovní servery pro doručování pošty A záznam pro danou doménu).
Pomocí MX záznamu můžete specifikovat nejenom jeden nebo více poštovních serverů pro danou doménu, ale také jejich priority (nižší číslo značí vyšší prioritu). Tímto způsobem si můžete vytvářet záložní poštovní servery pro případ, že vám ten hlavní přestane na nějakou dobu fungovat.
Kromě MX záznamu bývá vhodné definovat reverzní záznam pro IP adresu poštovního serveru tak, aby odpovídal jeho plně kvalifikovanému doménovému jménu serveru. Bez toho se vystavujete možnosti, že vaši poštu budou některé servery penalizovat (a možná klasifikovat jako spam) nebo odmítat.
Existují různá dodatečná rozšíření (zpravidla využívající DNS), která pomáhají garantovat původ pošty a omezit šíření spamu. Mezi ty patří zejména SPF, popřípadě DKIM. Jejich implementace není nutná, ale přinejmenším SPF bych implementovat doporučil. Nevyžaduje to žádné úpravy konfigurace, pouze nastavení DNS záznamu.
SPF
SPF je zkratka pro Sender Policy Framework. Představuje mechanismus, jímž můžete definovat servery, které mají oprávnění odesílat poštu z vaší domény. Díky tomu mohou ostatní poštovní servery automaticky odmítat poštu, která jako odesílatele (buď v MAIL FROM:
v rámci SMTP komunikace, nebo v poli From:
v hlavičce e-mailu) specifikuje uživatele z vaší domény, ale posílá ji neautorizovaný server (nejspíše spammer).
Nasazením SPF si také můžete pomoci u antispamu některých poštovních serverů, které mohou vašemu mailu přidat nějaké bodíky k dobru. SPF nastavení se umisťuje do TXT záznamu pro danou doménu.
Informace o SPF můžete nalézt na webu openspf.org nebo na Wikipedii. Nejprostší nastavení může vypadat takto:
v=spf1 a mx -all
Záznam je uvozen specifikací verze SPF, tedy v=spf1
, následuje specifikace všech počítačů, které jsou nebo nejsou oprávněny odesílat poštu pro danou doménu. Zde je specifikován počítač odpovídající A záznamu domény (identifikátor a
) a všechny počítače specifikované v MX záznamech pro danou doménu (identifikátor mx
). Ostatní počítače (all
) jsou považovány za neautorizované a jejich pošta by se měla odmítat.
U každého prvku můžete znaménkem určit, jak je či není oprávněn odesílat poštu (nespecifikujete-li žádné znaménko, předpokládá se, že daný prvek je povolen):
+
odesílání pošty je povoleno, zprávy z těchto počítačů by měly být přijaty-
odesílání pošty je zakázáno, zprávy z těchto počítačů by měly být odmítnuty~
odesílání pošty je polozakázáno (softfail) – taková pošta by měla projít, ale současně by měla být adekvátně označena?
neutrální, pro daný prvek není definována žádná politika
Syntax SPF je velmi dobře popsána na openspf.org.
Instalace Postfixu
Jako téměř vždy, stačí nainstalovat jediný balíček, shodný s názvem nástroje, který chcete nainstalovat. V Debianu byste Postfix nainstalovali takto:
aptitude install postfix
Používáte-li standardní, čistou instalaci Debianu, nejspíše budete mírně překvapeni tím, že instalace Postfixu vyžaduje odstranění některých balíčků, konkrétně pak Eximu. Exim je v Debianu výchozím poštovním serverem a nemůže fungovat vedle Postfixu, je tedy třeba jej odstranit.
Během instalace budete dotázáni na variantu nastavení poštovního serveru. V úvahu přichází následující:
Internetový počítač – poštovní server je připojen k internetu, přijímá a odesílá poštu sám
Internet se smarthostem – poštovní server je připojen k internetu, poštu přijímá přes SMTP, odesílá ji však přes jiný počítač (např. centrální mailserver ve firmě, mailserver vašeho ISP apod.)
Satelitní systém – poštovní server běží pouze na localhostu (není tedy možné na něj doručovat poštu zvenčí) a veškerou poštu odesílá přes jiný počítač
Pouze tento počítač – pouze lokální doručování, server není připojen k internetu
Budete také dotázáni na plně kvalifikované doménové jméno vašeho poštovního serveru (FQDN) a některé další otázky v závislosti na tom, které nastavení jste si zvolili. Tyto parametry jsou probrány níže.
Tato nastavení máte kdykoli možnost změnit buď ruční úpravou konfiguračních souborů, nebo opětovným spuštěním konfigurátoru (debconf), což můžete provést příkazem:
dpkg-reconfigure postfix
Základní nastavení Postfixu
Konfigurace Postfixu je uložena v /etc/postfix
, přičemž hlavní konfigurační soubor je /etc/postfix/main.cf
. V dalších dílech vás provedu pokročilejší konfigurací, během které se patrně dostaneme i k řadě jiných souborů, ale pro základní nastavení vám stačí výše uvedený hlavní konfigurační soubor.
Základní nastavení Postfixu může vypadat nějak takto:
myhostname = mail.example.net mydomain = example.net myorigin = /etc/mailname mydestination = example.net, example.org, localhost.localdomain, localhost relay_domains = $mydestination relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 inet_interfaces = all inet_protocols = all
Jednotlivé volby by bylo dobré osvětlit jednu po druhé:
myhostname = mail.example.net
Toto by mělo být plně kvalifikované doménové jméno (FQDN) vašeho poštovního serveru, tedy v příkladě výše mail.example.net
.
mydomain = example.net
Proměnná mydomain
by měla obsahovat doménovou část vašeho myhostname
. V případě mail.example.net
to bude example.net
.
myorigin = /etc/mailname
Doménové jméno, které bude použito pro poštu, která je odesílána lokálně. Pokud tedy jako uživatel přihlášený na server třeba přes SSH odešlete e-mail z příkazové řádky, např. takto:
echo 'Ahoj, světe.' | mail -s 'Pozdrav' prijemce@mail.example.eu
bude se v takovém případě jako odesílatel brát uzivatel@myorigin
, kde myorigin
je hodnota dané proměnné, tj. v příkladu výše to bude hodnota obsažená v souboru /etc/mailname
.
mydestination = example.net, example.org, localhost.localdomain, localhost
mydestination
obsahuje seznam domén, pro které bude Postfix poštu přijímat a doručovat do poštovních schránek. Pro tyto domény bude poštovní server cílovým bodem. Všimněte si, že v tomto případě je specifikováno více domén, konkrétně dvě (example.net
a example.org
).
relay_domains = $mydestination
Tato proměnná určuje, pro které domény se bude pošta přeposílat, resp. předávat (relay). Můžete ji ponechat prázdnou, nebo sem dosadit hodnotu proměnné $mydestination
, což lze provést způsobem naznačeným výše. Toto je poměrně zajímavá vlastnost nastavení Postfixu – jako součást hodnoty nějaké proměnné můžete použít hodnotu jiné proměnné.
Je klíčové, aby váš poštovní server nefungoval jako „open relay“, tedy server, který ochotně převezme a doručuje jakoukoliv poštu, která k němu přijde a není v mydestination
. Takový server se velmi rychle ocitne v blacklistech. Na webu je dostupná množina nástrojů, které vám umožní svůj server otestovat, a já vám důrazně doporučuji některý z těchto nástrojů použít (hledejte „open relay test“), protože pokud to neuděláte vy, spammeři to určitě zkusí.
relayhost =
Tato proměnná umožňuje specifikovat cizí poštovní server, kterému bude váš server předávat veškerou poštu, která nebude doručována lokálně. Pošta směřující „ven“ tedy nebude při použití tohoto parametru doručována přímo vaším poštovním serverem, ale odeslána na počítač specifikovaný jako parametr této proměnné.
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
Počítače specifikované v mynetworks
smějí přes váš server odesílat poštu. Je velmi vhodné zde specifikovat pouze místní rozsahy nebo opravdu důvěryhodné sítě.
inet_interfaces = all
Tato proměnná určuje, na kterých rozhraních (resp. IP adresách a rozsazích) bude Postfix naslouchat. Pokud zde specifikujete 127.0.0.1
, váš poštovní server bude k dispozici pouze lokálně a nebude naslouchat na síti. To se hodí, pokud daný počítač neslouží pro příjem pošty. Hodnota all
zajistí, že Postfix bude naslouchat na všech dostupných IP adresách.
inet_protocols = all
Zde můžete specifikovat, jaké verze IP protokolu bude Postfix používat. V úvahu přichází ipv4
, ipv6
nebo all
. Jsou-li použity oba protokoly, mějte na paměti, že IPv6 v tomto případě dostává přednost, tj. pokud bude moci Postfix doručit poštu na IPv4 i IPv6 adresu, zkusí nejprve IPv6 adresu.
Tolik k základnímu nastavení. Po změně nastavení je vhodné server restartovat:
/etc/init.d/postfix restart
Funkčnost serveru můžete otestovat pomocí znalostí z minulých dílů:
telnet server.example.org 25
Připomínám, že byste měli určitě otestovat, zda váš server není open relay (viz výše).
Postfix je velmi komplexní nástroj a má široké možnosti nastavení. V odkazech pod článkem naleznete jak odkazy na dokumentaci Postfixu, tak odkazy na wiki různých distribucí, ve kterých existují záznamy o Postfixu.
Tím bych tento díl ukončil. Příště vás provedu podrobnějším nastavením Postfixu.