Sendmail - základní konfigurace

Jak nakonfigurovat ty nejzákladnější věci. Mělo by být dostačující pro základní použití.

5.7.2011 14:00 | Radim Kolář | přečteno 12866×

Sendmail - základní konfigurace

Kdo jsem

Nejduležitějším nastavením sendmailu je nastavení jmén hostů pro které budeme lokálně doručovat poštu. Počáteční nastavení se standardně děje automaticky. Sendmail si při startu zjistí adresy všech síťových interfaces serveru a vyhledá k nim příslušející doménová jména. Ty pak považuje za jména pro které má lokálně zpracovávat poštu. V běžných konfiguracích, pokud nehostujeme na serveru více domén, je toto chování dostačující.

Problémy začnou nastávat pokud nemáme k adresám našich interfaces reverzní záznamy a nebo pokud tyto záznamy neukazují zpět na naše hostname, ale na generické reverzní záznamy providera. V tomto případě musíme nakonfigurovat jméno domény pro kterou budeme přijímat poštu ručně - bude přidána k autodetekovaným jménům. Autodetekovaná jména co pak přebývají v seznamu navíc nevadí, naopak jsou žádoucí aby nedocházelo při posílání pošty v lokální síti k nepředvídatelnům problémům pokud nějaký program špatně zdetekuje primární hostname poštovního serveru.

Jediným důvodem proč autokonfiguraci hostname vypnout je chybné nebo žádné nastavení autoritativních DNS serverů pro reverzní záznamy našich intefaces. Často tomu tak je v případě že se jedná o sendmail v lokální síti ve které vůbec není nakonfigurované DNS a vše se NATuje bránou do internetu. Pokud v takovém případě necháme automatickou detekci hostnames zapnutou tak sendmail pracovat sice bude ale bude při většině akcí čekat několik minut na timeouty DNS serverů, když se bude pokoušet zjišťovat jaké je jeho doménové jméno. Tomuto nežádoucímu chování lze předejít vypnutím autodetekce, když do zdrojového souboru konfigurace s koncovkou .mc přidáme:

define(`confDONT_PROBE_INTERFACES',`True')

Seznam hostnames se ukládá do souboru /etc/mail/local-host-names v dřívějších (8.9 a starších) verzích sendmailu to byl sendmail.cw, který se jmenoval podle makra Cw do kterého jsou v .cf souboru tato jména ukládána. Jméno tohoto souboru je pochopitelně konfigurovatelné. Přepínač -o před jménem souboru v následujích příkladech označuje že je tento soubor volitelný - pokud neexistuje tak sendmail neskončí s chybou.

define(`confCW_FILE', `-o /etc/mail/local-host-names')

Pokud kupříkladu hostujeme hodně virtuálních domén tak si tento soubor generujeme scriptem podle záznamů v databázi. Formát souboru je jednoduchý - každé doménové jméno je na samostatné řádce.

Pokud máme jmen málo tak je můžeme vložit do konfigurace přímo. V praxi se to sice používá vyjímečně, ale pokud chceme minimalizovat počet souborů v kterých je uložena konfigurace sendmailu, tak použití následující direktivy není špatný nápad. Jména se oddělují mezerou a makro LOCAL_DOMAIN můžete opakovat v konfiguraci vícekrát.

LOCAL_DOMAIN(`name1 name2´)

Pro koho pracuji

Druhým nejdůležitejším nastavením sendmailu je nastavení domén pro které budeme přeposílat poštu k dalšímu zpracování jejich primárním mail serverem. Říká se tomu konfigurace relay.

V dřívejších dobách byly mailservery od výrobců standardně nastavené tak aby dovolovali přeposílání pošty komukoliv a kamkoliv. Vzhledem k nekvalitě linek před 20ti lety to mělo své opodstatnění - když se nebylo možné spojit s cílovým serverem, tak se pošta přeposlala na server o kterém jsme věděli že je někde poblíž - třeba ve stejné budově. Bohužel s komercionalizací internetu a prudkému nárůstu uživatelů se objevilo značné množství spammerů, kteří tuto dobře myšlenou funkcionalitu zneužívali a tak dneska již žádný mailserver není od výrobce nakonfigurován jako open relay. Svůj mail server si můžete jednoduše online otestovat zda nedovoluje přeposílání pošty kamkoliv.

Seznam domén pro které přeposíláme poštu se ukládá do souboru /etc/mail/relay-domains. Jméno tohoto souboru je pochopitelně konfigurovatelné:

RELAY_DOMAIN_FILE(`-o /etc/mail/relay-domains´)

Ve starších verzích sendmailu se jméno tohoto souboru definovalo přes

define(confCR_FILE, `path´)

Podobně jako v předchozím případě je možné, ačkoliv ne příliš časté, vložit jména domén přímo do .mc souboru. Slouží k tomu makro

RELAY_DOMAIN(`our.internal.domain our.company.domain´)

Základní konfigurace relay

Základní konfigurace relay si rozdělíme podle typu serveru. Pokud server používáte jak pro příjem tak pro odesílání tak použijte obě dvě nastavení.

Server je určen pro příjem pošty

Pokud se jedná o primární mailserver - server na kterém jsou uloženy schránky uživatelů tak žádná konfigurace relay není nutná. Výchozí nastavení - vše zakázáno - nám zcela vyhovuje.

Pokud se jedná o sekundární (záložní) mailserver tak musíme jméno domény pro kterou má být záložním serverem a přeposílat poštu přidat do souboru relay-domains. Do local-host-names musíme přidat jeho doménové jméno které je použito pro sekundární mail server v MX záznamu jinak to bude sendmail považovat za smyčku v doručování pošty.

Server určen pro odesílání pošty

Sendmail je standardně nastaven tak, že pokud se uživatel autentifikuje přes SMTP tak může server použít jako relay. Toto je nejčastější nastavení poštovního serveru pro uživatele bez pevné IP adresy. Autentifikaci uživatelů v sendmailu budeme probírat později, ve standardním nastavení není aktivována pokud to neudělá přímo vaše distribuce. Pokud chceme náš sendmail použít k odesílání pošty z naší lokální sítě nebo z jakékoliv jiné sítě s pevně přidělenými IP adresami tak nastavíme z jakých IP adres je povolen relay.

Dělá se to v souboru /etc/mail/access tento soubor je použit pro kontrolu přístupu pokud je povolen pomocí

FEATURE(`access_db', `hash -o -T /etc/mail/access')

což je default. Ještě jsem se nesetkal s instalací sendmailu kde by bylo použití tohoto souboru zakázáno. Do něj uvedete IP adresy z kterých chcete relay povolit a dáte jim příznak RELAY. Příklad pro povoleni sítě 192.168.0.0/16

192.168   RELAY

velmi často je potřeba explicitně povolit relay ještě z localhost. V hranatých závorkách označujeme konkrétní IP adresu, nikoliv síť. Ačkoliv zrovna v případu localhost je to jedno. Tam by postačilo uvést na levou stranu jen 127. Pokud používáme IPv6 tak je musíme uvést do souboru access zapisovat s IPv6: prefixem.

[127.0.0.1]                     RELAY

Po tomto díle seriálu by jste měli být schopni nastavit sendmail tak aby doručoval a umožňoval odesílání pošty. SMTP autentifikaci budeme probírat později.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=1823