Jak a proč si postavit záložní mailserver
22.7.2011 21:00 | Radim Kolář | přečteno 10800×
SMTP podobně jako DNS dovoluje použití více serverů pro obsluhu jedné domény aby v případě nedostupnosti jednoho byl použit další uvedený. Záznamy o existenci záložních serverů jsou uloženy v DNS. V případě DNS se jedná o záznam typu NS v případě SMTP se jedná o záznam typu MX.
U protokolu DNS jsou převážně z historických důvodů stále ještě vyžadovány 2 servery pro doménu. U SMTP není vyžadován naopak ani jeden. V případě neexistence MX záznamu o serveru který má přijímat poštu se doručuje přímo na internetovou adresu adresáta.
Před mnoha lety kdy vznikal sendmail se záložní mail servery používaly velmi často. Linky byly totiž dost přetížené, většinou pospojované modemy co rádi vypadávaly a spolehlivost hardware byla také menší. Vzhledem k tomu, že se kvalita internetových linek a hardware za posledních 20 let výrazně zlepšila, tak záložní mailservery nejsou příliš časté. Podobné je to i u DNS serverů - stále více domén provozoje primární i sekundární DNS server na stejném stroji s využitím techniky zvané IP aliasing (přiřazení více síťových adres k jednomu interface) protože k jeho rozdělení na dva rozdílné počítače, v ideálním případě i do dvou sítí nevidí dostatečný důvod, který by vynahradil práci vynaloženou za tímto účelem.
Záložní mailserver se hodí v případech kdy očekáváme problémy s konektivitou hlavního mailserveru. Kupříkladu když máme hlavní mailserver na wifi nebo ADSL lince. Záložní mailserver si zřídíme na lince s dobrou konektivitou, která bude pracovat i když bude mít náš hlavní server výpadek. Dobré úmístění pro sekundárni mailserver je multi homing ISP (má přes BGP nastaven více než jeden uplink).
Také je vhodné zřízení záložního mailserveru pokud chceme zvýšit spolehlivost doručení mailů a dočasně nedoručitelné maily směrem k nám skladovat delší dobu než je standardní a navíc nám neznámé nastavení serveru odesílatele. Většina mail serverů je od výrobce nakonfigurována tak, že se snaží o doručení mailu 3 dny než je vrácen nazpět odesilateli. ISP nastavují své odchozí mailservery obvykle na 2 dny aby snížili jejich zátěž. U sendmailu je tato doba standardně nastavena na 5 dnů, protože se zohleďňuje možnost výpadků přes svátky nebo víkend. Doba 5ti dnů je pro běžné použití dostatečná, ale můžeme si jí pochopitelně změnit:
define(`confTO_QUEUERETURN´, `7d´)
Pokud tedy nejsme spokojení s faktem že příchozí maily se mohou odesílatelům vracet náhodně po 2 až 5ti dnech, zřídíme si záložní mailserver, kde budeme míti doručovací řetězec zcela pod kontrolou.
Záložní mailserver musíme uvést do DNS MX záznamů. MX záznamy se skládají z priority a jména serveru. SMTP klient se snaží doručit mail na server s nejnižší prioritou. Pokud to selže, tak zkusí server se stejnou nebo vyšší prioritou. Pokud všechny servery selžou tak počká určitý čas (obvykle 30 minut) a zkusí všechny servery znovu.
Současné záznamy k doméně si prohlédneme pomocí host -t mx
slush:(admin)/etc/mail>host -t mx linuxsoft.cz linuxsoft.cz mail is handled by 10 mail.linuxsoft.cz. slush:(admin)~>host -t mx ovh.net ovh.net mail is handled by 1 1.kmx.ovh.net. ovh.net mail is handled by 5 2.kmx.ovh.net. slush:(admin)~>
Server linuxsoft.cz sekundární mail server nemá, zatímco ovh.net ano. 1.kmx.ovh.net je primární mail server, 2.kmx.ovh.net je sekundární.
DNS záznamy pro doménu ovh.net v syntaxi kterou používá program bind budou vypadat takto:
@ IN MX 1 1.kmx IN MX 5 2.kmx
k záznamům můžeme přidat ještě dobu expirace. U MX záznamů se používá 1 den. Ony se zas tak často nemění a krátká doba expirace stejně nepřinese žádoucí efekt rychlé propagace změny protože některé SMTP servery nesprávně cachují tuto informaci i po dobu celé životnosti zprávy ve frontě. To znamená, že pokud měníme SMTP servery tak musíme ten starý nechat i po jeho odstranění z DNS v provozu ještě několik dnů. S dobou expirace pak vypadají takto:
fbsd8:cassandra/bin> dig -t mx ovh.net ;; ANSWER SECTION: ovh.net. 86400 IN MX 5 2.kmx.ovh.net. ovh.net. 86400 IN MX 1 1.kmx.ovh.net.
Program dig je narozdíl od programu host podrobnější a vypisuje detailnější informace jako například expiraci. 86400 sekund je 1 den.
Konfigurace sendmailu pro provoz dvou mail serverů je triviální a probírali jsme ji minule. Na primárním serveru není potřeba konfigurovat nic speciálního. Na sekundárním serveru je do /etc/mail/local-host-names potřeba přidat 2.kmx.ovh.net a do /etc/mail/relay-domains přidat ovh.net
Další zajímavou věc, kterou můžeme udělat je skrytý primární server. Používá se to v případě když nechceme aby lidi z internetu přímo komunikovali se serverem na kterém máme uloženy schránky uživatelů. Dělá se to buď z důvodů špatné nebo občasné konektivity - většina spojení by stejně neprošla a tak je hloupost nechat odesílatele to zkoušet. Druhým důvodem pro skrývání mail serveru je bezpečnost a třetím důvodem je že je nemožnost přímého spojení do internetu z důvodu síťové architektury.
Sendmail na všech serverech které máme v uvedené ve veřejných MX záznamech nejprve nakonfigurujeme jako sendmail na záložním serveru. Pak server nebo servery kterým dovolíme spojení s naším skrytým serverem překonfigurujeme níže uvedeným způsobem. U serveru/serverech s nejnižší uvedenou prioritou v MX záznamech je toto nastavení poviné, u ostatních volitelné.
Zapneme podporu mailtertable:
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
do souboru /etc/mail/mailertable přidáme záznam pro směrování pošty na náš skrytý server. Máme ho uvedený IP adresou, ale hostname lze použít také. Důležité je ho uzavřít do hranatých závorek, aby se při jeho vyhledávání již nekonzultovaly MX záznamy v DNS.
ovh.net esmtp:[10.0.0.12]
Při konfigurování záložních serverů nesmíme zapomenout na stejná antispam opatření která používáme na hlavním serveru. Dříve toto nebylo běžné a proto většina spamů chodila na záložní mail servery. Dnes už tento trend ustal. Jelikož se nyní administrátoři naučili chránit i záložní servery tak je většina spamů posílána na primární mail server. Záložních mail serverů se proto není třeba obávat jako magnetu na spamy.