Jedná se o textový soubor, složený z jednotlivých příkazů, z nichž každý je na samostatné
řádce. Prázdné řádky a řádky začínající # se ignorují. Většina akcí je definována
prostřednictvím jedno- až dvoupísmenných zkratek.
Příkaz je definován prvním písmenem na řádku. Největší část souboru tvoří přepisovací pravidla,
která zahajuje písmeno R. Tyto příkazy umožňují upravovat adresy a rozhodovat, co
se má s dopisem stát. Mají formu:
Pravidlo se použije, jen když adresa vyhovuje <Levé straně>, pak
<Pravá strana> určuje co se má s dopisem udělat. Může např. pouze změnit
adresu,ale může také ukončit zpracování dopisu a předat ho nějakému Maileru k
odeslání. Mailery se definují příkazy M.
Klíčovou roli v konfiguraci hraje, kdy dojde k použití jednotlivých pravidel - k určení
slouží rozdělení do sad. Každá sada je identifikována číslem a začíná příkazem
Sčíslo. Končí buď začátkem další sady nebo koncem souboru.
Sada je jakýmsi podprogramem, je-li použita na zpracovávanou adresu, začnou se aplikovat
její jednotlivé příkazy (přepisovací pravidla). Každý se používá tak dlouho, dokud
zpracovávaná adresa vyhovuje levé straně. Realizace pravé strany může způsobit
vyvolání další sady pravidel, když obsahuje konstrukci $>číslo.
Celé zpracování dopisu začíná několika standardními sadami. Sendmail nejprve zpracovává
cílovou adresu. Na ní se použije sada č. 3, která převede adresu do kanonického tvaru.
Poté se uplatní sada 0, která má určit doručovatele dopisu (tato sada bývá měněna
nejčastěji, protože stanoví kudy a kam dopis odejde).
Standardní sady pravidel pro sendmail:
Výchozí podoba konfiguračních souborů je textová, ta je kompilována do
binární. Základem je soubor zpracovaný procesorem m4. Bývá
pojmenován [počítač].m4. Obsahuje definice hodnt jednotlivých
parametrů (proměnných), ovlivňujících činnost programu. Tento soubor se mění
jen zřídka. Většina změn se týká dílčích souborů (tabulek).
Žádné úpravy se neprovádí v souboru sendmail.cf.
První skupina proměnných slouží k identifikaci zdejšího počítače:
Další typ proměnných stanoví, kde budou uloženy jednotlivé konfigurační tabulky:
Můžeme také využít možnosti obstarávat poštu pro doménu na jednom počítači (mail relay)
pak se nám hodí tyto proměnné:
Další proměnné:
Posledním příkazem souboru by vždy mělo být:
Po zpracování konfiguračního souboru programem m4, dostaneme na std výstup
sendmail.cf.
Jména souborů jsou definována v hlavním konfiguračním souboru. Uvádějí
se bez přípony např. /etc/mail/mailertable. Ve skutečnosti však
v daném adresáři existují dva soubory s příponami .dir a .pag.
Vytvoříme je pomocí příkazu:
MAILERTABLE řídí zpracování pošty, určuje, kterým Mailerem a kam se předávají
určité dopisy. Při implicitním chování IDA sendmailu, je-li pošta určena na tento počítač,
předá se Maileru local. Pro ostatní adresy se použije Mailer TCP (dotaz na
MX záznam a odeslání protokolem SMTP). Pomocí MAILERTABLE lze do tohoto mechanizmu
přidávat rozšíření a vyjímky. Klíčem je v tomto souboru doménové jméno, hodnota je tvořena
trojicí:
<oddělovač> Význam
; - adresa beze změny
! - z adresy se odřízne doména (pro UUCP a local)
: - z adresy se odřízne doména, jen pokud ve zbylé části zůstane nějaka doména
<počítač> specifikuje na který stroj má Mailer odeslat dopis.
DOMAINTABLE převádí případné zkratky a přezdívky na doménová jména. Jestliže IDA
sendmail dostane ke zpracování doménové jméno, podívá se nejprve do DOMAINTABLE a poté do
DNS, zda se nejedná o přezdívku. Pokud ano, řídí se dál jen kanonickým jménem.
UUCPXTABLESlouží k převodu doménových jmen počítačů na jména protokolu UUCP.
GENERICFROM obsahuje pravidla pro přepisování adres odesilatelů v dopisech. Umožňuje
zaměnění domény a jména uživatele za jména symbolická (např pnovak@anxur.fi.muni.cz za
Pavel.Novak@muni.cz). Přezdívky (aliasy) fungují obousměrně, o převod na konkrétní adresu
se stará soubor ALIASES. Údržba dvou soborů je práce navíc a tak IDA sendmail obsahuje i
program xalparse, který umožňuje z jednoho datového souboru automaticky vyrobit
oba zmiňované.
Soubor xaliases má tvar řádku:Sada Určení
0 určení doručovatele
1 zpracování adresy odesilatele
2 zpracování adresy příjemce
3 kanonizace adresy
4 závěrečná úprava adresy
5 zpracování odesilatele v hlavičkách dopisu (jen IDA)
6 zpracování adresáta v hlavičkách dopisu (jen IDA)
Příklad přepisovacího pravidla sendmailu:
R$+@$D $#ether$@netware.fi.muni.cz$:$1@netware.$D
IDA sendmail
IDA je rozšíření programu sendmail, usnadňující konfiguraci. Základním přínosem
je zde rozložení informací do několika souborů s jednoduchou strukturou.
Za tento "komfort" zaplatíme omezením možností, ale většinou případů vyřešíme
bezproblémově.
Základní konfigurační soubor
Ačkoliv máme velký sortiment proměnných, které ovlivňují chování IDA sendmailu,
hlavní konfigurační soubor bývá jednoduchý. Standardně se počítá s podporou
lokální pošty a protokolů SMTP a UUCP (popř. DECNET)
DEFAULT_HOST a DEFAULT_DOMAIN - uvádějí jméno a doménu počítače. V normálních
případech se nedefinují program je schopen si příslušné informace najít sám.
PSEUDONYMS - uvádí další jména tohoto počítače např.:
define(PSEUDONYMS,posta.fi.muni.cz mail.fi.muni.cz localhost)
ALTERNATENAMES - podobný proměnné PSEUDONYMS, ale jména zde uvedená nejsou
jmény tohoto počítače, ale počítačů pro které se pošta ukládá na náš počítač
UUCPNAME - jméno zdejšího počítače pro UUCP poštu (když nepoužíváme, nemusíme definovat)
MAILERTABLE - Mailery pro jednotlivé adresy
PATHTABLE - Neobvyklé cesty
GENERICFROM - přepisování adres odesilatelů
HIDDENDOMAIN - jméno domény pro kterou ve které chceme maskovat počítače
HIDDENDOMAINHOST - udává jakým jménem má být nahrazen libovolný počítač domény,
není-li definováno, pak se použije přímo hodnota HIDDENDOMAIN
HIDDENNET, HIDDENNETHOST - stejné jen ne pro celou doménu, ale pouze pro
skupinu počítačů (uvedenou v HIDDENNET)
Ukrývané jméno by mělo být registrováno v DNS (minimálně by měl existovat
MX záznam?
RELAY_HOST, RELAY_MAILER - adresa a příslušný Mailer, kam se posílá pošta se kterou
si sendmail neporadí
ALIASES - jméno souboru, obsahující definici aliasů
POSTMASTERBOUNCE - adresa, na kterou se doručí kopie každého dopisu, jehož doručování
skončilo chybou
LOADQUEUE - udává zatížení systému, při kterém sendmail přestává doručovat dopisy a
místo toho je jen řadí do fronty (implicitně 11)
LOADAVEREJ - zatížení při kterém sendmail odmítá vnější pokusy o navázání spojení
(implicitně 7)
FORCE_NAME - definuje se při používání DNS (normální stav), na hodnotě nezáleží.
include(Sendmail.mc)
což zajistí vytvoření souboru sendmail.cf
Konfigurační tabulky
Tyto tabulky (zvané DBM databáze) jsou základním kamenem IDA sendmailu.
Jejich cílem je převod klíče na hodnotu. Mají jednotný tvar:
<hodnota> <klíč> [<klíč> ...]
Z textové podoby do binární jsou převáděny programem dbm.
dbm -d mailertable make mailertable.conf
Předpokládáme, že zdrojový text je v souboru mailertable.conf. Volba -d říká,
která databáze se má vytvořit.
<Mailer><oddělovač><počítač>
<Mailer> Funkce
local -uloží do schránky lokálního uživatele
prog -spustí program a dopis mu pošle na vstup
TCP -doručí protokolem SMTP
UUCP -doručí klasickým UUCP
UUCP-A -doručí protokolem UUCP, ale používá RFC822 adresy
error -ohlásí odesilateli dopisu chybu
PATHTABLE slouží pro ruční směrování pošty. Definuje cesty, kterými mají být dále
dopravovány dopisy. Zpravidla se používá jen ve spojení s UUCP.
Aliasy
Standardní sendmail používá pro definici přezdívek soubor aliases (většinou v /etc),
IDA zavádí rozšiřující soubor (zpravidla xaliases). Ten je předložen programu xalparse,
který z něho vytvoří jednak klasický aliases, jednak tabulku GENERICFROM.
<přezdívka>: <oddělovač><adresa>
Na obou stranách mohou stát seznamy, oddělené čárkami
<oddělovač> Význam
> - dopis směrovaný na <přezdívku> poslat na <adresu>;
(vytvoří položku v aliases)
< - adresu v hlavičce From nahradit <přezdívkou>;
(vytvoří položku v GENERICFROM)
<> - oboje
chybí - jako >
Na vytvořený soubor xaliases je třeba použít program xalparse:
xalparse xaliases aliases genericfrom
Aby se sendmail začal řídit novým /etc/aliases je potřeba spustit newaliases.