sendmail
, ale skládá se z více
souborů a adresářů. Takovým klíčem k sendmailu je konfigurační soubor /etc/sendmail.cf
,
který obsahuje cesty k ostaním souborům, různé volby a sady pravidel (gramatiku) pro
přepisování adres. Fronta zpráv /var/spool/mqueue
zadržuje zprávy než budou
doručeny. Soubor /etc/aliases
obsahuje lokální aliasy, po jejichž změně je
potřeba spustit sooubor newaliases
. Aliasing je také přístupný pro uživatele
pomocí souboru .forward
v jejich domovských adresářích. K lokálnímu doručování
lze potom použít například program /bin/mail/procmail
./etc/sendmail.cf
(menší hrůza).
Tento soubor otvírá a parsuje sendmail při každém svém spuštění (při každé práci s poštou).
Proto je napsán tak, aby byl dobře čitelný pro program sendmail. Bohužel už není tak dobře
čitelný pro nás.sendmail.cf
, tvoří řádky začínající písmeny:V - definice verze konfiguračního souboruMotto: Člověk není opravdovým správcem systému, dokud nezkusil ručně editovat
O - definice konfigurační volby
D - definice makra
C - definice třídy makra
F - definice třídy makra z externího souboru
R - definice přepisovacích pravidel
S - definice startovacích pravidel
H - definice hlaviček
M - definice maileru
P - definice doručovací priority
T - deklarace duvěryhodných (trusted) uživatelů
K - deklarace klíčů databáze
sendmail.cf
. Člověk je blázen, pokud to zkusil víc než jednou. :)
sendmail.cf
je použití sady maker M4. Pro toto nastavení je potřeba nainstalovat alík pro konfiguraci
sendmailu v aktuální verzi (např. sendmail-8.9.3-20.i386.rpm
). jeho soubory
budou umístěny do adresáře /usr/lib/sendmail.cf
.*.mc
s makry, která reprezentují explicitní nastavení. Pro ostatní volby konfiguračního souboru
sendmail.cf
bude použito implicitní natavení sendmailu.README
v adresáři
/usr/lib/sendmail.cf
. Zde najdete jednoduše a srozumitelně, krok za krokem vyloženy
instrukce pro jejich použití.sendmail.mc
:
Samotné vygenerování souboruinclude(`/usr/lib/sendmail-cf/m4/cf.m4') define(`confDEF_USER_ID',``8:12'') OSTYPE(`linux') undefine(`UUCP_RELAY') undefine(`BITNET_RELAY') define(`confAUTO_REBUILD') define(`confTO_CONNECT', `1m') define(`confTRY_NULL_MX_LIST',true) define(`confDONT_PROBE_INTERFACES',true) define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail') FEATURE(`smrsh',`/usr/sbin/smrsh') FEATURE(`mailertable',`hash -o /etc/mail/mailertable') FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable') FEATURE(redirect) FEATURE(always_add_domain) FEATURE(use_cw_file) FEATURE(local_procmail) MAILER(procmail) MAILER(smtp) FEATURE(`access_db') FEATURE(`blacklist_recipients')
sendmail.cf
spustíme takto:
m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf
MX záznam s nejnižší prioritou pro server však musí ukazovat na stroj, který má poštu pro server přijímat a domény, pro které počítač přijímá poštu, je potřeba vyjmenovat v souboru# Pro odcházející poštu:
server
MASQUERADE_AS()dnl
FEATURE(masquerade_envelope)dnl
# Pro přicházející poštu
FEATURE(always_add_domain)
FEATURE(use_cw_file)
/etc/sendmail.cw
.
/usr/bin/procmail
je takzvaní MDA - Mail Delivery Agents nebo též. lokální
mailer. Jeho úkolem je doručování poštovních zpráv do přihrádky adresáta. V praxi to vypadá tak,
že email obdrží MTA (Mail Transfer Agent - například sendmail) a ten se podle několika údajů
(nastavení DNS, konfigurace SMTP a domény adresáta) rozhoduje, zda jde o email k lokálnímu
doručení či k předání dál. Pakliže jde o email pro lokální doručení, přichází ke slovu MDA.
Ten může být v podstatě velice primitivní a pouze umístit email do předem určeného mailboxu
podle adresáta a nebo naopak může být mocným nástrojem pro filtrování příchozích zpráv. A právě
do této druhé skupiny patří procmail.procmailrc
:
:0 * ^Subject: send file [0-9a-z] * !^X-Loop: yourname@your.main.mail.address * !^Subject:.*Re: * !^FROM_DAEMON * !^Subject: send file .*[/.]\. { MAILDIR=$HOME/fileserver # chdir to the fileserver directory :0 fhw # reverse mailheader and extract name * ^Subject: send file \/[^ ]* | formail -rA "X-Loop: yourname@your.main.mail.address" FILE="$MATCH" # the requested filename :0 ah | cat - ./$FILE 2>&1 | $SENDMAIL -oi -t }
/etc/mail/deny.db
, která obsahuje
celé e-mailové adresy i jejich části, které v případě nalezení v obálce v adrese odesílatele
způsobí odmítnutí dopisu (k tomu v sendmailu slouží sada pravidel chech_relay
).
Dále obsahuje IP adresy sítí se kretými nebude počítač navazovat SMTP spojení (sada pravidel
check_mail
). Tato databáze je vyrobena ze souboru /etc/mail/deny
.
/etc/mail/*_allow
.
Jejich obsah se nemění často, proto jsou to jen textové soubory nikoli databáze, jako
tomu bylo u /etc/mail/deny.db
. Tyto soubory totiž vychází z konfigurace
uzlů, pro které se zajišťuje přijímání a odesílání pošty./etc/mail/ip_allow
resp. /etc/mail/name_allow
tvoří IP adresy strojů a sítí resp. doménová jména strojů a domén, které mohou posílat
poštu po SMTP přes váš počítač. Pokud by se o to pokusil počítač, ktery není uveden ani
v jednom z těchto souborů, byl by odmítnut, jako nepovolený relaying.check_rcpt
,
kter8 kontroluje, jestli pošta přicházející z externích strujů není určena externím adresátům.
Petr Hekerle | xhekerle@fi.muni.cz |