Konfigurujeme záložní poštovní server

15. 1. 2009
Doba čtení: 3 minuty

Sdílet

Poštovní server je důležitou součástí každé firmy a jeho výpadek váš může stát hodně nervů a peněz. Ukážeme si, jak nastavit záložní poštovní server pomocí pošťáka Sendmail, rozebereme si pár často používaných maker a na závěr si přidáme několik programů, kterými můžeme sledovat jeho činnost.

Stále budu vycházet z příkladu popisovaného v minulých dílech – máme nainstalované FreeBSD se sendmailem, který řeší poštu pro doménu firma.cz. Poštovní server se jmenuje mail.firma.cz. Budeme řešit záložní poštovní server pro doménu  jinafirma.cz.

Nejdříve je třeba nastavit DNS. Potřebujeme správný MX záznam pro doménu jinafirma.cz, ukazující na náš server mail.firma.cz. Výsledek bude vypadat asi nějak takhle:

jinafirma.cz   10   mail.jinafirma.cz
jinafirma.cz   20   mail.firma.cz

Dále musíme provést směrování pošty v mailertable na stroji mail.firma.cz:

jinafirma.cz        smtp:mail.jinafirma.cz

Vytvoříme si mailertable databázi, buď pomocí make v /etc/mail/  nebo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable. Pozor, pokud používáte jiný typ databází než hash, o tom jsme mluvili v minulém dílu.

Nakonec musíme v přístupové databázi access povolit poštu pro tuto doménu, přidáme:

jinafirma.cz        RELAY
To:jinafirma.cz     RELAY

Můžeme si vybrat z výše uvedených zápisů. Druhý zápis jsme rozebírali v minulém dílu. Tím máme jistotu, že řešíme poštu, která je směrována pro tuto doménu a ne z ní, to nemusí být vždy žádoucí. Opět vytvoříme databázi, zase pomocí make nebo makemap. A tím je hotovo.

Často používaná makra

Předpřipravený mc soubor nemůže obsahovat vše a nemusí vyhovovat každému. Existuje spousta dalších maker. O sendmailu vyšla spousta knih, a na Sendmail.org je vše potřebné. Zde je vysvětleno několik často používaných maker.

Nastavení logování. Výchozí hodnota je 9. Co která znamená, se dozvíte třeba v Sendmail cookbook.
define(`confLOG_LE­VEL', `9')

Nastavení logování milterů. Miltery ve výchozím stavu logují stejně jako samotný sendmail, ale můžeme jim nastavit i jiný log level.
define(`confMIL­TER_LOG_LEVEL', 14)

Maximální velikost zprávy v bajtech
define( confMAX_MESSAGE_SIZE', 2000000')

Maximální počet příjemců jedné zprávy. Počítají se dle obálky.
define( confMAX_RCPTS_PER_MESSAGE', 10')

Double bounce. Pokud dojde k chybě při posílání e-mailu, bude na to upozorněn e-mailem postmaster. Postmaster je pomocí /etc/mail/aliases směrován do schránky root. Při větším množství nedoručených e-mailů se schránka rychle plní. Pokud nastavíme toto makro prázdné, postmaster nic dostávat nebude.
define(`confDO­UBLE_BOUNCE_AD­DRESS', `')

Chybové hlášení access denied. Můžeme si nastavit hlášku access denied, výchozí je 550 Access denied
define( confREJECT_MSG', 550 Text')

Chybové hlášení Relaying denied.Stejným způsobem jako Access denied
define( confRELAY_MSG', 550 Text')

Timeouty, je jich hodně, namátkou třeba confTO_HELO, confTO_CONNECT, confTO_DATAINIT

Nástroje pro sendmail

V systému máme několik dalších nástrojů, které nám umožní monitorovat sendmail. Sám sendmail s vhodným parametrem také něco poví:

pm@mail ~ $ sendmail -d0 -bt < /dev/null
Version 8.14.2
 Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
                NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SASLv2
                SCANF STARTTLS TCPWRAPPERS USERDB XDEBUG

============ SYSTEM IDENTITY (after readcf) ============
      (short domain name) $w = mail
  (canonical domain name) $j = mail.firma.cz
         (subdomain name) $m = firma.cz
              (node name) $k = mail.firma.cz
========================================================

Můžeme se zeptat na stav front. Privilegovaná fronta pomocí mailq (nebo sendmail -bp), neprivilegovaná pomocí mailq -Ac. U obou je možné použít parametr -v pro více informací. Ve výpisu vidíte i to, kde jsou data jednotlivých front.

root@mail ~ # mailq
/var/spool/mqueue is empty
                Total requests: 0
root@mail ~ # mailq -Ac
                /var/spool/clientmqueue (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
n04D50ab046515*   35477 Sun Jan  4 14:05 cacti
                                         cacti
                Total requests: 1

Program mailstats zobrazí počty zpracovaných zpráv, bajty, …:

root@mail ~ # mailstats
Statistics from Mon Dec 29 01:00:04 2008
 M   msgsfr  bytes_from   msgsto    bytes_to  msgsrej msgsdis msgsqur  Mailer
 3     1042     379861K     1049      28408K        0       0       0  local
 5      516     236720K      704     572524K       17       0       0  esmtp
=====================================================================
 T     1558     616581K     1753     600932K       17       0       0
 C     2361                  733                   17

Dalším programem je hoststat (nebo sendmail -bh). Zobrazí nám statistiku pro jednotlivé mailové servery. Vidíme jméno hosta, dobu poslední komunikace a výsledek. Pomocí purgestat (nebo sendmail -bH) můžeme statistiky smazat.

ict ve školství 24

root@mail ~ # hoststat
 -------------- Hostname ---------- How long ago ---------Results---------
 mail.telstra.com.au                    04:05:41 250 Message accepted for
 scooter.eye-net.com.au              81+08:32:42 250 OK id=0zTGai-0008S9-0
 yarrina.connect.com.a               53+10:46:03 250 LAA09163 Message acce
 happy.optus.com.au                  55+03:34:40 250 Mail accepted
 mail.zip.com.au                        04:05:33 250 RAA23904 Message acce
 kwanon.research.canon.com.au        44+04:39:10 250 ok 911542267 qp 21186

Pro zobrazení aliasů je možné použít praliases.

A samozřejmě nesmíme zapomenout na /var/log/maillog, do kterého sendmail skvěle loguje. Málokterý poštovní server má tak přehledný a čitelný log.

Autor článku

Petr Macek studoval aplikovanou informatiku na Jihočeské univerzitě, pracuje jako síťový specialista ve firmě Kostax, s. r. o. Baví ho především FreeBSD, sítě a monitoring Cacti.