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_LEVEL', `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(`confMILTER_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(`confDOUBLE_BOUNCE_ADDRESS', `')
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.
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.