Nastavení DNS, SPF a Postfix

Správa linuxového serveru: Nastavení DNS, SPF a Postfix

Po převážně teoretických dílech následuje díl, ve kterém se dozvíte, jak nainstalovat poštovní server Postfix a provést jeho základní nastavení. Článek také osvětlí nastavení DNS pro poštovní server a SPF, tedy Sender Policy Framework.

Minulé dva díly (první díldruhý 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):

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í:

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í ipv4ipv6 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.