Linux documentation Project (CS) / Příručka správce sítě
Previous Content Next Up

 

15. Program sendmail+IDA

15.1 Úvod do programu sendmail+IDA

    Říká se, že skutečným správcem Unixu se stanete až v okamžiku, když se vám povede upravit soubor sendmail.cf. Ale také se říká, že musíte být blázen, když to chcete zkoušet podruhé.:-)

    Program sendmail je neuvěřitelně výkonný nástroj. Většina lidí ho chápe jen velmi obtížně a ještě hůře se ho učí. Jakýkoliv program, jehož kompletní manuál (manuál k programu sendmail vydalo nakladatelství O‚Reilly and Associates) má 792 stran, zcela pochopitelně vyděsí většinu lidí.

    Program sendmail+IDA je odlišný. Odstraňuje nutnost úprav záhadného souboru sendmail.cf a správcům umožňuje definovat směrování a konfiguraci adres, které jsou specifické pro daný systém pomocí poměrně jednoduše srozumitelných podpůrných souborů tzv. tabulek. Zvolíte-li program sendmail+IDA, může vám to ušetřit spoustu hodin práce a stresu.

    V porovnání s ostatními hlavními poštovními transportními agenty neexistuje asi nic, co by se nedalo pomocí programu sendmail+IDA udělat rychleji a jednodušeji. S jeho pomocí provedete poměrně jednoduše věci, které je potřeba vykonat před spuštěním normálního internetového systému nebo normálního systému na bázi protokolu UUCP. Konfigurace, jež jsou za normálních okolností velice obtížné, se v něm dají jednoduše vytvořit a spravovat.

    V době sestavování této publikace je prostřednictvím anonymní služby FTP na adrese vixen.cso.uiuc.edu dostupná verze sendmail5.67b+IDA1.5. Je sestavena tak, aby na platformě operačního systému Linux nevyžadovala žádnou aktualizaci.

    Všechny konfigurační soubory potřebné pro kompilaci zdrojového kódu programu sendmail+IDA, instalaci a spuštění pod operačním systémem Linux jsou obsaženy v balíku newspak-2.2.tar.gz. Ten je dostupný prostřednictvím anonymní služby FTP na adrese sunsite.unc.edu v adresáři /pub/Linux/system/Mail.

15.2 Konfigurační soubory - přehled

    Tradiční program sendmail se nastavuje pomocí systémového konfiguračního souboru (obvykle je to soubor /etc/sendmail.cf nebo /usr/lib/sendmail.cf), který se nepodobá žádnému z jazyků, s nimiž jste se mohli až doposud setkat. Editace souboru sendmail.cf tak, aby se program sendmail choval požadovaným způsobem, může být hořkou zkušeností.

    S programem sendmail+IDA je toto nelidské úsilí již věcí minulosti, protože všechny konfigurační volby jsou ovládány prostřednictvím tabulek, jež mají poměrně snadno pochopitelnou syntaxi. Tyto volby se konfigurují prostřednictvím programu m4 (procesor maker) nebo programu dbm (databázový procesor), jenž se spustí na spoustě datových souborů prostřednictvím souboru Makefile, který je dodán společně se zdrojovými kódy.

    V souboru sendmail.cf definujete pouze implicitní chování systému. Ve skutečnosti se všechny speciální úpravy uskutečňují prostřednictvím spousty doplňkových tabulek. Je to lepší, než přímo editovat soubor sendmail.cf. Seznam všech tabulek programu sendmail je uveden na obrázku 15.1.

15.3 Soubor sendmail.cf

    U programu sendmail+IDA se soubor sendmail.cf neupravuje přímo, ale generuje se z konfiguračního souboru programu m4, který poskytuje správce místního systému. V následujícím výkladu ho budeme označovat jako soubor sendmail.m4.

Tento soubor obsahuje jen několik definic, ale převážně odkazy na tabulky, kde se provádí skutečná konfigurační práce. Obvykle je nutné zadat pouze:

    Existuje velké množství parametrů, které lze definovat za účelem dosažení požadovaného chování místního systému nebo k potlačení předkompilovaných konfiguračních voleb. Tyto konfigurační volby jsou uloženy v souboru ida/cf/OPTIONS, který se nachází v adresáři zdrojových programů.

    Soubor sendmail.m4 může být při minimální konfiguraci (pro protokol UUCP nebo protokol SMTP platí, že veškerá nemístní pošta je přenášena na přímo připojeného chytřejšího hostitele) dlouhý jen 10 až 15 řádků, nepočítáme-li komentáře.

15.3.1 Příklad souboru sendmail.m4

    Dále je uveden soubor sendmail.m4 pro hostitele vstout ve společnosti Virtual Brewery. Hostitel vstout používá protokol SMTP ke komunikaci se všemi hostiteli sítě LAN pivovaru a veškerou poštu určenou pro ostatní místa posílá pomocí protokolu UUCP na hostitele moria, což je brána k síti Internet.

15.3.2 Obvykle používané parametry v souboru esndmail.m4

    V souboru sendmail.m4 se vždy vyžaduje pouze několik parametrů; \pokud vám vyhovují implicitní volby, můžete ostatní položky vynechat. Následující stati popisují podrobněji každou položku, která je uvedena v ukázkovém souboru sendmail.m4.

Položky definující cesty dnl #define(LIBDIR,/usr/local/lib/mail)dnl # Kde jsou ostatní soubory?

    Parametr LIBDIR definuje adresář, kde program sendmail+IDA očekává konfigurační soubory, různé tabulky dbm a speciální místní definice. V typické binární distribuci je tento parametr vestavěn do binárního souboru programu sendmail a tudíž nemusí být v souboru sendmail.m4 explicitně určen.

Výše uvedený příklad obsahuje řádky uvozené řetězcem dnl. Tyto řádky jsou vlastně považovány za komentáře a jsou zde uvedeny pouze z informativních důvodů.

Chcete-li změnit umístění podpůrných souborů, odstraňte z Výše uvedeného řádku uvozující řetězec dnl, nastavte cestu do požadovaného adresáře a znovu vytvořte a nainstalujte soubor sendmail.cf.

dnl #------------------SAMPLE SENDMAIL.M4 FILE------------------

dnl # (the string ‚dnl(tm) is the m4 equivalent of commenting out a line)

dnl # you generally don(tm)t want to override LIBDIR from the compiled in

paths

dnl #define(LIBDIR,/usr/local/lib/mail)dnl # where all support files go

define(LOCAL_MAILER_DEF, mailers.linux)dnl # mailer for local delivery

define(POSTMASTERBOUNCE)dnl # postmaster gets bounces

define(PSEUDODOMAINS, BITNET UUCP)dnl # don(tm)t try DNS on these

dnl #-------------------------------------------------------------

dnl #

define(PSEUDONYMS, vstout.vbrew.com vstout.UUCP vbrew.com)

dnl # names we(tm)re known by

define(DEFAULT_HOST, vstout.vbrew.com)dnl # our primary ‚name(tm) for mail

define(UUCPNAME,vstout)dnl # our uucp name

dnl #

dnl #-------------------------------------------------------------

dnl #

define(UUCPNODES, |uuname|sort|uniq)dnl # our uucp neighbors

define(BANGIMPLIESUUCP)dnl # make certain that uucp

define(BANGONLYUUCP)dnl # mail is trated correctly

define(RELAY_HOST, moria)dnl # our smart relay host

define(RELAY_MAILER, UUCP-A)dnl # we reach moria via uucp

dnl #

dnl #-------------------------------------------------------------

dnl #

dnl # the various dbm lookup tables

dnl #

define(ALIASES, LIBDIR/aliases)dnl # system aliases

define(DOMAINTABLE, LIBDIR/domaintable)dnl # domainize hosts

define(PATHTABLE, LIBDIR/pathtable)dnl # paths database

define(GENERICFROM, LIBDIR/generics)dnl # generic from addresses

define(MAILERTABLE, LIBDIR/mailertable)dnl # mailers per host or domain

define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # paths to hosts we feed

define(UUCPRELAYS, LIBDIR/uucpreslays)dnl # short-circuit paths

dnl #

dnl #-------------------------------------------------------------

dnl #

dnl # include the ‚real(tm) code that makes it all work

dnl # (provided with the source code)

dnl #

include(Sendmail.mc)dnl # REQUIRED ENTRY !!!

dnl #

dnl #------------------ END OF SAMPLE SENDMAIL.M4 FILE------------------

Obrázek 15.2 Vzorový soubor sendmail.m4 pro hostitele vstout

    Definice místního maileru # mailer pro místní doručování define(LOCAL_MAILER_DEF, mailers.linux)dnl Většina operačních systémů disponuje speciálním programem, který se stará o místní doručování pošty. V binárním kódu programu sendmail je již vestavěno několik typických programů pro většinu hlavních variant operačního systému Unix.

    V Linuxu se musí explicitně definovat patřičný místní mailer, protože místní doručovací program nemusí bezpodmínečně být součástí distribuce, kterou jste nainstalovali. To lze provést přidáním parametru LOCAL_MAILER_DEF v souboru sendmail .m4.

Například u běžně používaného programu deliver, který poskytuje tuto službu, byste měli parametru LOCAL_MAILER_DEF přiřadit hodnotu mailers.linux.

    Dále by měl být do adresáře, na který ukazuje parametr LIBDIR, nainstalován soubor s názvem mailers.linux. Tento soubor explicitně definuje program deliver ve vnitřním maileru Mlocal s patřičnými parametry, které zajistí, že program sendmail bude korektně doručovat poštu adresovanou do místního systému. Nejste-li expertem v problematice programu sendmail, nebudete zřejmě chtít následující příklad nijak upravovat.

# -- /usr/local/lib/mail/mailers.linux -

# místní mailery pro Linux

Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u

Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u

    V souboru Sendmail.mc existuje také vestavěná implicitní volba pro program deliver, kterou lze začlenit do konfiguračního souboru sendmail.cf. Chcete-li ji uvést, nesmíte použít soubor mailers.linux, ale místo něho musíte v souboru sendmail.m4 definovat následující záznam:

dnl --- (soubor sendmail.m4) --define(LOCAL_MAILER_DEF, DELIVER)dnl # mailer pro místní doručování

    Naštěstí makro Sendmail.mc předpokládá, že je doručovací program nainstalován v adresáři /bin, což ale neplatí pro balík Slackware 1.1.1 (který ho nainstaluje do adresáře /usr/bin). V takovémto případě se budete muset s tímto problémem vypořádat buď tak, že vytvoříte symbolický odkaz, nebo tak, že znovu sestavíte ze zdrojového kódu doručovací program, který bude moci být uložen v adresáři /bin.

Vypořádání se s odmítnutou poštou

# odmítnutá pošta se pošle postmasterovi

define(POSTMASTERBOUNCE)dnl

    Většina systémů zjistila, že je důležité, aby byla pošta poslána a doručena s téměř 100% úspěšností. I když prověřování log-souborů démona syslogd(8) je užitečné, potřebují obvykle správci místní pošty vidět hlavičky odmítnuté pošty, aby mohli zjistit, zda byla pošta nedoručitelná z důvodu chyby na straně uživatele, nebo z důvodu konfigurační chyby na jednom ze zúčastněných systémů.

Pokud definujete parametr POSTMASTERBOUNCE, bude kopie každé odmítnuté zprávy poslána osobě, která má v daném systému na starosti účet Postmaster.

    Bohužel nastavení tohoto parametru bude mít vliv i na text zprávy, protože i ten je poslán na účet Postmaster. Tento text může obsahovat osobní věci týkající se lidí, kteří používají poštu ve vašem systému.

    Poštmistři by proto neměli číst poštu (přesněji by měli používat skripty příkazového interpretu, které z odmítnutých příchozích zpráv vymažou text), která jim není určena.

Položky vztahující se k systému DNS

# pro tyto domény nepoužívej DNS

define(PSEUDODOMAINS, BITNET UUCP)dnl

    Existuje několik známých sítí, na které jsou v poštovních adresách často odkazy, ale které nejsou korektní z hlediska systému DNS. Pokud definujete parametr PSEUDODOMAINS, zabráníte tak zbytečným pokusům při vyhledávání pomocí systému DNS, jež by stejně nikdy neuspěly.

Definice názvů, pod nimiž je místní systém známý define(PSEUDONYMS, vstout.vbrew.com vstout.UUCP vbrew.com

dnl # naše jména

# naše primární poštovní jméno

define(DEFAULT_HOST, vstout.vbrew.com)dnl

Systémy chtějí často skrýt svoji pravou totožnost, chtějí sloužit jako poštovní brány nebo dostávat a zpracovávat poštu adresovanou na ‚staré‚ názvy, pod nimiž byly dříve známé.

Parametr PSEUDONYMS uvádí seznam všech názvů hostitelů, pro něž bude místní systém přijímat poštu.

Parametr DEFAULT_HOST uvádí název hostitele, který se zobrazí ve zprávě, jež byla vytvořena na místním hostiteli. Je důležité, aby byl tento parametr nastaven na korektní hodnotu, protože jinak by veškerá zpáteční pošta byla nedoručitelná.

Položky vztahující se k protokolu UUCP

define(UUCPNAME, vstout)dnl # naše UUCP-jméno

define(UUCPNODES, |uuname|sort|uniq)dnl # naši UUCP-sousedé

define(BANGIMPLIESUUCP)dnl # je nutné pro korektní

define(BANGONLYUUCP)dnl # zpracování UUCP-pošty

    Systém DNS často zná určité místo jiným názvem, než pod jakým ho zná Síť na bázi protokolu UUCP. Parametr UUCPNAME vám dovoluje definovat odlišný název hostitele, který se objeví v hlavičkách odcházející pošty určené pro protokol UUCP.

Parametr UUCPNODES definuje příkazy, které vrátí seznam názvů hostitelů v systémech, se kterými jste přímo spojeni prostřednictvím spojení na bázi protokolu UUCP.

    Parametry BANGIMPLIESUUCP a BANGONLYUUCP zajiššují, že pošta adresovaná pomocí syntaxe s vykřičníkovou notací, která je charakteristická pro protokol UUCP, bude zpracována po způsobu protokolu UUCP, a nikoliv podle běžnějšího chování systému DNS, který se nyní používá v Internetu.

Přenosové systémy a mailery define(RELAY_HOST, moria)dnl # náš chytřejší hostitel define(RELAY_MAILER, UUCP-A)dnl # cesta k hostiteli moria přes UUCP

    Mnoho správců systému se nechce obtěžovat s takovou konfigurací, která by umožnila spojení se všemi sítěmi (a tedy i se všemi systémy) ve všech sítích po celém světě. Místo toho budou raději posílat veškerou výstupní poštu na další systém, o kterém ví, že je věru "chytřejšíim.

Parametr RELAY_HOST definuje název hostitele tohoto chytřejšího sousedního systému. Název je definován pro protokol UUCP.

Parametr RELAY_MAILER definuje mailer, který se použije pro přenos zpráv na chytřejšího hostitele.

    Je třeba poznamenat, že nastavení těchto parametrů způsobí, že vaše odcházející pošta bude směrována na tento vzdálený systém, což samozřejmě bude mít vliv na zatížení tohoto vzdáleného systému. Dříve, než nakonfigurujete váš systém tak, aby využíval vzdálený systém jako všeobecně použitelnou bránu, musíte získat od poštmistra tohoto systému explicitní souhlas.

Různé konfigurační tabulky

define(ALIASES, LIBDIR/aliases)dnl # systémové přezdívky

define(DOMAINTABLE, LIBDIR/domaintable)dnl # tabulka domaintable

define(PATHTABLE, LIBDIR/pathtable)dnl # databáze cest

define(GENERICFROM, LIBDIR/generics)dnl

define(MAILERTABLE, LIBDIR/mailertable)dnl # mailery pro hostitele a domény

define(UUCPXTABLE, LIBDIR/uucpxtable)dnl

define(UUCPRELAYS, LIBDIR/uucprelays)dnl

    Pomocí těchto maker můžete změnit adresáře, ve kterých program sendmail+IDA hledá různé tabulky dbm, jež definují "skutečnéiD chování systému. Obvykle je moudré nechat tyto tabulky v adresáři LIBDIR.

Hlavní soubor Sendmail.mc

include(Sendmail.mc)dnl # NUTNÝ ZÁZNAM!!!

Autoři programu sendmail+IDA dodávají soubor Sendmail.mc, který obsahuje pravou "podstatuic toho, co se později stane se souborem sendmail.cf. Pravidelně jsou uvolňovány nové verze, které obsahují opravené chyby a přidávají další funkce, aniž by vyžadovaly plnou verzi a překompilování programu sendmail ze zdrojových kódů.

Je velice důležité, abyste tento soubor neupravovali. Jaké položky jsou tedy vyžadovány?

    Pokud nepoužíváte žádnou z doplňkových tabulek dbm, doručí program sendmail+IDA poštu v souladu s nastavenou volbou DEFAULT_MAILER (eventuálně v souladu s nastavenými volbami RELAY_HOST a RELAY_MAILER), která je definována v souboru sendmail.m4.

    Tento soubor se používá ke generování souboru sendmail.cf. Toto chování lze jednoduše potlačit pomocí záznamů uvedených v tabulce domaintable nebo uucpxtable.

    Všeobecný systém umístěný v Internetu a využívající služeb systému DNS nebo systém založený pouze na protokolu UUCP, jenž směruje veškerou poštu pomocí protokolu UUCP na chytřejšího hostitele, který je definován prostřednictvím volby RELAY_HOST, nebude pravděpodobně vyžadovat žádné specifické záznamy v tabulkách.

    Všechny systémy by měly mít ve skutečnosti nastaveny makra DEFAULT_HOST a PSEUDONYMS, která definují kanonický název daného systému a jeho přezdívky, a dále by měly mít nastaveno makro DEFAULT_MAILER. Máte-li nastaveny volby RELAY_HOST a RELAY_MAILER, nebudete muset tyto implicitní volby nastavovat, protože budou fungovat automaticky.

    U hostitelů na bázi protokolu UUCP bude pravděpodobně potřeba nastavit parametr UUCPNAME na jejich oficiální název pro protokol UUCP. Dále pravděpodobně nastaví parametry RELAY_HOST a RELAY_MAILER, které povolují směrování přes chytřejšího hostitele prostřednictvím poštovní brány. Používaný poštovní transport je definován pomocí volby RELAY_MAILER a obvykle by měl být pro sítě na bázi protokolu UUCP nastaven na hodnotu UUCP-A.

    Pokud váš systém pracuje pouze na bázi protokolu SMTP a komunikuje prostřednictvím systému DNS, měli byste změnit parametr DEFAULT_MAILER na hodnotu TCP-A a dále smazat řádky s parametry RELAY_MAILER a RELAY_HOST.

15.4 Přehled tabulek programu sendmail+IDA

    Program sendmail+IDA podporuje množství tabulek, které vám umožňují potlačit implicitní chování programu sendmail (definované v souboru sendmail.m4) a dále vám umožňují definovat speciální chování pro zvláštní situace, vzdálené systémy a sítě. Tyto tabulky jsou později zpracovány pomocí programu dbm s využitím souboru Makefile, který je součástí distribuce.

    Většina systémů bude potřebovat pouze několik těchto tabulek. Možná, že nebudete potřebovat vůbec žádné tabulky. Pokud váš systém tyto tabulky nevyžaduje, bude asi nejjednodušší, když je vytvoříte jako soubory s nulovou velikostí (pomocí příkazu touch) a použijete implicitní soubor Makefile, který najdete v adresáři LIBDIR. Bude to lepší, než kdybyste museli editovat vlastní soubor Makefile.

15.4.1 Tabulka mailertable

    Tabulka mailertable definuje speciální zacházení s konkrétními hostiteli nebo doménami, které vychází z názvu vzdáleného hostitele nebo z názvu sítě. U systémů v síti Internet se často používá k výběru pomocného hostitele nebo k přenosu pošty nebo brány, jejichž prostřednictvím se můžete spojit se vzdálenými sítěmi. Dále se používá k definici konkrétního protokolu (UUCP nebo SMTP), který se bude používat. Systémy na bázi protokolu UUCP obvykle nebudou muset tento soubor používat.

    Pořadí položek v souboru je důležité. Program sendmail čte tento soubor směrem shora dolů a zpracovává zprávu podle prvního odpovídajícího pravidla, které najde. Takže je dobré umístit nejjednoznačnější pravidla na začátek souboru a obecnější pravidla na konec souboru.

    Předpokládejme, že chcete směrovat veškerou poštu určenou pro oddělení počítačových věd na Groucho Marx University pomocí protokolu UUCP na bránu ada. Aby to bylo možné, musíte mít v tabulce mailertable položku, která vypadá asi následovně:

# (soubor mailertable)

#

# poštu pro doménu.cs.groucho.edu posílej přes UUCP-hostitele ada

UUCP-A,ada .cs.groucho.edu

Dále předpokládejme, že chcete z důvodu rozlišení adres a z důvodu doručování veškerou poštu určenou pro rozsáhlejší doménu groucho.edu směrovat na zvláštní bránu bighub. Doplněné záznamy by mohly v tabulce mailertable vypadat asi takto:

# (soubor mailertable)

#

# poštu pro doménu cs.groucho.edu posílej přes UUCP-hostitele ada

UUCP-A,ada.cs.groucho.edu

#

# poštu pro doménu cs.groucho.edu posílej přes UUCP-hostitele bighub

UUCP-A,bighub.cs.groucho.edu

    Jak jsme se již zmínili, je pořadí velmi důležité. Kdybychom zaměnili pořadí těchto dvou pravidel, pak by se veškerá pošta určená pro doménu .cs.groucho.edu směrovala na obecnější bránu bighub místo toho, aby putovala na jednoznačně určenou bránu ada, což bylo naším záměrem.

# (soubor mailertable)

#

# poštu pro doménu.groucho.edu posílej přes UUCP-hostitele bighub

UUCP-A,bighub .groucho.edu

#

# (další řádek je zbytečný,

# protože je použito předchozí pravidlo)

UUCP-A,ada .cs.groucho.edu

    Ve výše uvedených příkladech je definován mailer UUCP-A, který sděluje programu sendmail, aby používal k doručování pošty protokol UUCP s hlavičkami respektujícími doménový systém.

Čárka mezi mailerem a vzdáleným systémem sděluje maileru, že má zprávy směrovat na bránu ada, která se postará o rozlišení adres a doručení zpráv.

Záznamy v tabulce mailertable mají následující syntaxi:

mailer delimiter relayhost host_or_domain

    Existuje několik druhů mailerů. Rozdíl mezi nimi obvykle spočívá v tom, jakým způsobem zacházejí s adresami. Běžné mailery jsou TCP-A (pro protokol TCP/IP s adresami typickými pro Síť Internet), TCP-U (pro protokol TCP/IP s adresami typickými pro sítě na bázi protokolu UUCP) a UUCP-A (pro sítě na bázi protokolu UUCP, ale s adresami typickými pro Síť Internet).

    Znak nacházející se na levé straně řádky tabulky mailertable, který odděluje mailer od části s názvem hostitele, definuje způsob, jakým bude tabulka mailertable upravovat příslušnou adresu. Jedinou věcí, kterou je zde třeba upravit, je přepsat adresu na obálce (aby se pošta mohla dostat do vzdáleného systému). Přepisování čehokoliv jiného se nedoporučuje, protože by to mohlo vést k poškození konfigurace pošty.

! Znak vykřičník odstraní název hostitele příjemce předtím, než je zpráva směrována na mailer. Tento oddělovač by se měl použít v tom případě, kdy chcete nařídit odeslání pošty do ýpatně nakonfigurovaného vzdáleného systému.

, Znak čárka adresu vůbec neupravuje. Zpráva je většinou směrována pomocí zadaného maileru na zadanou bránu.

: Znak dvojtečka odstraní název hostitele příjemce pouze v případě, že mezi vaším hostitelem a cílovým hostitelem existují nějací mezilehlí hostitelé. Bude-li tedy adresafoo!bar!joe, bude hostitel foo odstraněn, avšak bude-li adresa xyzzy!janet, pak zůstane nezměněná.

15.4.2 Tabulka uucpxtable

    Pošta na hostitele s plně kvalifikovanými doménovými jmény je obvykle doručena buď prostřednictvím směrování charakteristického pro Síť Internet (protokol SMTP) s využitím systému DNS, nebo prostřednictvím přenosových hostitelů (bran). Tabulka uucpxtable zajistí doručení pomocí směrování na bázi protokolu UUCP, protože převede doménový název na bezdoménový název vzdáleného hostitele, který je charakteristický pro protokol UUCP.

    Tato tabulka se často používá v případech, kdy jste dopravcem pošty pro daný systém nebo doménu, nebo když chcete poslat poštu pomocí přímého a spolehlivého spojení na bázi protokolu UUCP a nikoliv přes implicitní mailer a několik mezilehlých systémů a sítí, kde by eventuálně mohlo dojít k několika skokům.

    Systémy na bázi protokolu UUCP komunikující se svými UUCP-sousedy, kteří používají doménové poštovní hlavičky, by měly používat tento soubor, aby si vynutili doručení pošty prostřednictvím přímého spojení typu point-to-point na bázi protokolu UUCP, protože jinak by musely používat méně přímé směrování prostřednictvím parametrů RELAY_MAILER a RELAY_HOST nebo pomocí parametru DEFAULT_MAILER.

Internetové systémy, které nepoužívají komunikaci na bázi protokolu UUCP, nebudou muset tabulku uucpxtable používat.

    Předpokládejme, že poskytujete doručovací službu systému s názvem sesame.com prostřednictvím systému DNS a systému sesame prostřednictvím map protokolu UUCP. Do tabulky uucpxtable budete muset vložit následující položku, abyste poštu směrovanou na jejich hostitele mohli poslat po přímém spojení na bázi protokolu UUCP.

#=============== /usr/local/lib/mail/uucpxtable ==============

# Pošta poslaná na adresu joe@sesame.com bude přepsána na sesame!joe

# a poté doručena přes UUCP

#

sesame sesame.com

#

#------------------------------------------------------------

15.4.3 Tabulka pathtable

    Tabulka pathtable slouží k definici explicitního směrování na vzdálené hostitele nebo sítě. Soubor tabulky pathtable by měl mít syntaxi souboru cest paths a měl by být setříděn podle abecedy. Dvě pole na každé řádce musí být oddělena znakem tabulátoru, jinak by si mohl program dbm stěžovat.

Většina systémů nebude potřebovat žádné záznamy v tabulce pathtable.

#=============== /usr/local/lib/mail/pathtable ==============

#

# this is a pathalias-style paths file to let you kick mail to

# UUCP neighbors to the direct UUCP path so you don(tm)t have to

# go the long way through your smart host that takes other traffic

#

# you want real tabs on each line or m4 might complain

#

# route mail through one or more intermediate sites to a remote

# system using UUCP-style addressing

#

sesame!ernie!%s ernie

#

# forwarding to a system that is a UUCP neighbor of a reachable

# internet site.

#

swim!%s@gcc.groucho.edu swim

# The following sends all mail for two networks through different

# gateways (see the leading '.' ?).

# In this example, "uugate" and "byte" are specific systems thatserver

# as mail gateways to the .UUCP and .BITNET pseudo-domains respectively

#

%s@uugate.groucho.edu .UUCP

byte!%s@mail.shift.com .BITNET

15.4.4 Tabulka domaintable

    Tabulka domaintable se používá k dosažení jistého chování při vyhledávání pomocí systému DNS. Správci povoluje vytvořit zkrácené názvy, které lze použít u běžných odkazů na systémy nebo domény. Tyto zkrácené názvy tabulka domaintable automaticky nahradí odpovídajícími plnými názvy. Dále může být tabulka použita k nahrazení nekorektních názvů hostitelů nebo domén "korektnímiš. informacemi.

Většina systémů nebude potřebovat žádné záznamy v tabulce domaintable. Následující příklad ukazuje, jak nahradit nekorektní adresu, kterou se snaží lidé v poště používat, korektní adresou:

#=============== /usr/local/lib/mail/domaintable ==============

#

#

brokenhost.correct.domain brokenhost.wrong.domain

#

#

#=============== konec domaintable ===========================

15.4.5 Tabulka aliases

Přezdívky umožňují hned několik věcí:

Pro směrování pošty poskytují zkrácený název nebo veřejný název, takže pošta může být doručena jedné nebo více osobám.

Vyvolávají program, kterému je poštovní zpráva předána na vstup.

Posílají poštu do souboru.

Všechny systémy vyžadují přezdívky pro účty Postmaster a MAILER-DAEMON, aby splňovaly standardy definované v RFC.

Při definování přezdívek, které vyvolávají programy nebo zapisují do programů, buďte vždy opatrní, protože program sendmail má zpravidla nastavenou hodnotu uid na root.

Změny provedené v souboru aliases se projeví až po spuštění následujícího příkazu, který vytvoří požadované tabulky dbm:

# /usr/lib/sendmail -bi

Totéž lze také obvykle provést spuštěním příkazu newaliases z programu cron.

Detaily týkající se poštovních přezdívek můžete nalézt na manuálové stránce aliases(5).

#=============== /usr/local/lib/mail/aliases ==============

#

# příklad obvyklých typů přezdívek

#

usenet: janet # přezdívka pro jednu osobu

admin: joe, janet # přezdívka pro více lidí

newspak-users: :include:/usr/lib/lists/newspak

# příjemci jsou v souboru

changefeed: | /usr/local/lib/gup # přezdívka, která spustí

program

complaints: /var/log/complaints # přezdívka, která zapíše

poštu do souboru

#

# Následující přezdívky jsou podle RFC povinné.

# Je důležité, aby se pošta směrovaná na tyto adresy dostala do

přihrádky někoho, kdo čte poštu pravidelně.

#

postmaster: root # nutné

MIALER-DAEMON: postmaster # nutné

#

#-----------------------------------------------------------

15.4.6 Zřídka používané tabulky

    Následující tabulky jsou sice dostupné, ale používají se jen velmi zřídka. Chcete-li o nich získat více detailů, nahlédněte prosím do dokumentace, která je součástí zdrojového kódu programu sendmail+IDA. uucprelays Soubor uucprelays se používá ve zvláště známých systémech ke "zkráceníi. cesty protokolu UUCP. Je to lepší, než používat víceskokové nebo nespolehlivé cesty, které jsou vygenerovány z map protokolu UUCP tabulkou pathalias.

genericfrom a xaliases

    Soubor genericfrom skrývá před okolním světem názvy místních uživatelů a jejich adresy. Toho může dosáhnout tak, že převede jména místních uživatelů na obecné adresy odesilatele, které neodpovídají interním jménům uživatelů.

    Přidružená utilita s názvem xalparse automatizuje generování tabulky genericfrom a souboru aliases, takže převod jak odcházejícího, tak i přicházejícího jména uživatele se může dít z hlavního souboru xaliases.

decnetxtable Tabulka decnetxtable přepisuje doménové adresy na adresy vyhovující standardu, který se používá v sítích DEC. Tento převod je podobný přepisu bezdoménových adres na doménové adresy, které lze použít v sítích s protokolem SMTP.

15.5 Instalace programu sendmail

    V této stati se zaměříme na to, jak lze nainstalovat typickou distribuci binárního kódu programu sendmail+IDA a projdeme si kroky, které je zapotřebí učinit, aby byl tento program lokalizovaný a funkční.

    Současnou verzi binárního kódu programu sendmail+IDA pro platformu Linux můžete získat na adrese sunsite.unc.edu v adresáři /pub/Linux/system/mail. Dokonce i když máte dřívější verzi programu sendmail, vřele doporučuji přejít na verzi sendmail5.67b+IDA1.5, protože všechny požadované aktualizace specifické pro platformu Linux jsou obsaženy ve zdrojovém kódu "vanilla sourcesim a navíc bylo odstraněno i několik závažných bezpečnostních děr, které se nacházely ve verzích, jež byly uvolněny před 1. prosincem 1993.

    Jestliže sestavujete program sendmail ze zdrojového kódu, měli byste postupovat podle instrukcí uvedených v souborech README, které jsou součástí distribuce zdrojového kódu.

    Aktuální verze zdrojového kódu programu sendmail+IDA jsou k dispozici na adrese vixen.cso.uiuc.edu. Chcete-li sestavit program sendmail+IDA na linuxové platformě, budete k tomu potřebovat i konfigurační soubory specifické pro operační systém Linux, které se nacházejí v balíku newspak-2.2.tar.gz. Tento balík je k dispozici na adrese sunsite.unc.edu v adresáři /pub/Linux/system/Mail.

    Pokud jste již dříve nainstalovali program smail nebo nějakého jiného poštovního doručovacího agenta, budete pravděpodobně chtít z bezpečnostních důvodů odstranit (nebo přejmenovat) veškeré soubory vztahující se k programu smail.

15.5.1 Rozbalení distribuce binárního kódu

Nejdříve musíte rozbalit archívní soubor na nějaké bezpečné místo:

$ gunzip -c sendmail5.65b+IDA1.5+mailx5.3b.tgz | tar xvf

Máte-li "novější" verzi programu tar, například z poslední verze balíku Slackware, stačí pravděpodobně napsat pouze tar -zxvf filename.tgz, kde filename je název souboru, a dostanete stejný výsledek.

    Při rozbalování daného archívu se vytvoří adresář s názvem sendmail5.65b+IDA1.5+mailx5.3b. V tomto adresáři naleznete kompletní instalaci programu sendmail+IDA a navíc v něm bude i binární kód programu mailx, což je uživatelský agent. Všechny cesty k souborům nacházející se pod tímto adresářem určují umístění, kam by se měly soubory nainstalovat, takže je vhodné navrhnout takový příkaz tar, který přesune tyto soubory na požadované místo.

# cd sendmail5.65b+IDA1.5+mailx5.3b

# tar cf - . | (cd /; tar xvvpoof -)

15.5.2 Sestavení souboru sendmail.cf

    Abyste mohli sestavit soubor sendmail.cf, který bude přizpůsoben potřebám vašeho systému, musíte nejdříve napsat soubor sendmail.m4, jenž zpracujete pomocí programu m4.

    V adresáři /usr/local/lib/mail/CF naleznete ukázkový soubor s názvem sample.m4. Zkopírujte ho do souboru název_vašeho_hostitele.m4 a upravte ho tak, aby odrážel situaci panující ve vašem systému.

    Vzorový soubor je nastaven pro systém založený pouze na protokolu UUCP, který má doménové hlavičky a komunikuje s chytřejším hostitelem. U systémů podobných tomuto nastavení se musí v tomto souboru provést jen mírné úpravy.

    V této stati vám poskytnu pouze krátký přehled maker, které musíte pozměnit. Chcete-li kompletní popis jejich funkce, nahlédněte prosím do dřívějších statí, kde jsme se zabývali souborem sendmail.m4.

Chcete-li vytvořit soubor sendmail.cf, spusšte následující příkaz:

# make název_vašeho_hostitele.cf

Tento příkaz zpracuje váš soubor název_vašeho_hostitele.m4 a vytvoří z něho soubor název_vašeho_hostitele.cf.

    Dále musíte otestovat, zda vytvořený konfigurační soubor provádí přesně to, co jste od něj očekávali. Testování konfiguračního souboru bude vysvětleno v následujících dvou statích.

Jste-li teď již spokojeni s chováním konfiguračního souboru, zkopírujte ho pomocí následujícího příkazu na patřičné místo:

# cp název_vašeho_hostitele.cf /etc/sendmail.cf

    Od tohoto okamžiku může váš program sendmail začít pracovat. Do příslušného startovního souboru (obvykle je to soubor /etc/rc.inet2) vložte následující řádku. Chcete-li tento proces rozběhnout okamžitě, můžete ručně spustit následující příkaz.

# /usr/lib/sendmail -bd -q1h

15.5.3 Testování konfiguračního souboru sendmail.cf

    Chcete-li spustit program sendmail v "testovacímih režimu, spusšte ho s parametrem -bt. Implicitní konfigurační soubor se nazývá sendmail.cf, ten je také nainstalován ve vašem systému. Alternativní soubor můžete otestovat pomocí volby -C filename, kde filename je název daného souboru.

V následujících příkladech budeme testovat soubor vstout.cf, což je konfigurační soubor vygenerovaný ze souboru vstout.m4, který je zobrazen na obrázku 15.2.

# /usr/lib/sendmail -bt -Cvstout.cf

ADDRESS TEST MODE

Enter <ruleset> <address>

[Note: No initial ruleset 3 call]

>

    Následující testy zaručí, že je program sendmail schopen doručit veškerou poštu uživatelům ve vašem systému. Ve všech případech by měl být výsledek testu stejný a měl by ukazovat na místní název systému s nastaveným mailerem LOCAL.

Nejprve otestujme, jakým způsobem by měla být doručena pošta místnímu uživateli.

# /usr/lib/sendmail -bt -Cvstout.cf

ADDRESS TEST MODE

Enter <ruleset> <address>

[Note: No initial ruleset 3 call]

> 3,0 me

rewrite: ruleset 3 input: me

rewrite: ruleset 7 input: me

rewrite: ruleset 9 input: me

rewrite: ruleset 9 returns: < me >

rewrite: ruleset 7 returns: < >, me

rewrite: ruleset 3 returns: < >, me

rewrite: ruleset 0 input: < >, me

rewrite: ruleset 8 input: < >, me

rewrite: ruleset 20 input: < >, me

rewrite: ruleset 20 returns: < >, @ vstout . vbrew . com , me

rewrite: ruleset 8 returns: < >, @ vstout . vbrew . com , me

rewrite: ruleset 26 input: < >, @ vstout . vbrew . com , me

rewrite: ruleset 26 returns: $# LOCAL @$ vstout . vbrew . com $: me

rewrite: ruleset 0 returns: $# LOCAL @$ vstout . vbrew . com $: me

>

    Výstup ukazuje, jak program sendmail vnitřně zpracovává adresu. Tato adresa je předána různým skupinám pravidel, které ji analyzují, spustí postupně další skupiny pravidel a rozloží ji na jednotlivé komponenty.

    V našem příkladu jsme předali adresu me skupinám pravidel 3 a 0 (to je význam hodnot 3, 0, které jsou uvedeny před adresou). Poslední řádka ukazuje rozloženou adresu, která je výsledkem použití skupiny pravidel 0. Tato rozložená adresa se skládá z maileru, pomocí něhož by měla být daná zpráva doručena, a ze jmen hostitele a uživatele, které jsou maileru předány.

Dále otestujme poštu adresovanou uživateli vašeho systému, adresace bude splňovat syntaxi protokolu UUCP.

# /usr/lib/sendmail -bt -Cvstout.cf

ADDRESS TEST MODE

Enter <ruleset> <address>

[Note: No initial ruleset 3 call]

> 3,0 vstout!me

rewrite: ruleset 3 input: vstout ! me

[...]

rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me

>

Dále otestujme adresaci pošty uživateli vašeho systému, adresace bude splňovat syntaxi typickou pro Internet, tedy pošta bude adresována na váš plně kvalifikovaný název hostitele.

# /usr/lib/sendmail -bt -Cvstout.cf

ADDRESS TEST MODE

Enter <ruleset> <address>

[Note: No initial ruleset 3 call]

> 3,0 me@vstout.vbrew.com

rewrite: ruleset 3 input: me @ vstout . vbrew . com

[...]

rewrite: ruleset 0 returnes: $# LOCAL $@ vstout . vbrew . com $: me

>

    Výše uvedené dva testy byste měli zopakovat pro každý název, který jste uvedli v parametrech PSEUDONYMS a DEFAULT_NAME, jež se nacházejí v souboru sendmail.m4.

A konečně otestujme, zda můžete posílat poštu na svého přenosového hostitele (na svou bránu).

# /usr/lib/sendmail -bt -Cvstout.cf

ADDRESS TEST MODE

Enter <ruleset> <address>

[Note: No initial ruleset 3 call]

> 3,0 fred@moria.com

rewrite: ruleset 3 input: fred @ moria . com

rewrite: ruleset 7 input: fred @ moria . com

rewrite: ruleset 9 input: fred @ moria . com

rewrite: ruleset 9 returns: < fred > @ moria . com

rewrite: ruleset 7 returns: < @ moria . com > , fred

rewrite: ruleset 3 returns: < @ moria . com > , fred

rewrite: ruleset 0 input: < @ moria . com > , fred

rewrite: ruleset 8 input: < @ moria . com > , fred

rewrite: ruleset 8 returns: < @ moria . com > , fred

rewrite: ruleset 29 input: < @ moria . com > , fred

rewrite: ruleset 29 returns: < @ moria . com > , fred

rewrite: ruleset 26 input: < @ moria . com > , fred

rewrite: ruleset 25 input: < @ moria . com > , fred

rewrite: ruleset 25 returns: < @ moria . com > , fred

rewrite: ruleset 4 input: < @ moria . com > , fred

rewrite: ruleset 4 returns: fred @ moria . com

rewrite: ruleset 26 returns: < @ moria . com > , fred

rewrite: ruleset 0 returns: @# UUCP-A $@ moria $:

< @ moria . com > , fred

>

15.5.4 Všechno dohromady - integrované testování souboru sendmail.cf a jeho tabulek

    V tomto okamžiku máte již ověřeno, že pošta dodržuje požadované implicitní chování a že můžete posílat i přijímat korektně adresovanou poštu. K dokončení instalace vám už chybí jen vytvořit patřičné tabulky dbm, abyste získali požadované konečné výsledky.

    Po vytvoření tabulky nebo tabulek, které jsou potřebné pro váš systém, je musíte zpracovat pomocí programu dbm. To lze provést tak, že v adresáři s tabulkami napíšete příkaz make.

    Pokud provozujete systém pouze na bázi protokolu UUCP, nemusíte vytvářet žádnou z tabulek, o kterých se zmiňuje soubor README.linux. Stačí pouze vytvořit soubory tabulek s nulovou velikostí, aby soubor Makefile pracoval správně.

    Pokud provozujete systém pouze na bázi protokolu UUCP a pokud komunikujete i s jinými systémy, než je váš chytřejší hostitel, budete muset pro každý z těchto systémů vložit do tabulky uucpxtable (protože jinak by pošta adresovaná na ně ýla přes chytřejšího hostitele)příslušnou položku a znovu spustit příkaz dbm, aby se tabulka uucpxtable zaktualizovala.

    Nejprve se musíte ubezpečit, že pošta poslaná na tyto systémy přes přenosového hostitele, který je definován pomocí parametru RELAY_HOST, bude poslaná pomocí maileru, který je definován v parametru RELAY_MAILER.

# /usr/lib/sendmail -bt -Cvstout.cf

ADDRESS TEST MODE

Enter <ruleset> <address>

[Note: No initial ruleset 3 call]

> 3,0 fred@sesame.com

rewrite: ruleset 3 input: fred @ sesame . com

rewrite: ruleset 7 input: fred @ sesame . com

rewrite: ruleset 9 input: fred @ sesame . com

rewrite: ruleset 9 returns: < fred > @ sesame . com

rewrite: ruleset 7 returns: < @ sesame . com > , fred

rewrite: ruleset 3 returns: < @ sesame . com > , fred

rewrite: ruleset 0 input: < @ sesame . com > , fred

rewrite: ruleset 8 input: < @ sesame . com > , fred

rewrite: ruleset 8 returns: < @ sesame . com > , fred

rewrite: ruleset 29 input: < @ sesame . com > , fred

rewrite: ruleset 29 returns: < @ sesame . com > , fred

rewrite: ruleset 26 input: < @ sesame . com > , fred

rewrite: ruleset 25 input: < @ sesame . com > , fred

rewrite: ruleset 25 returns: < @ sesame . com > , fred

rewrite: ruleset 4 input: < @ sesame . com > , fred

rewrite: ruleset 4 returns: fred @ sesame . com

rewrite: ruleset 26 returns: < @ sesame . com > , fred

rewrite: ruleset 0 returns: @# UUCP-A $@ sesame $: < @ sesame . com > , fred

>

    Máte-li i jiné sousedy v síti UUCP, než je váš přenosový hostitel definovaný pomocí parametru RELAY_HOST, musíte se ujistit, že se pošta adresovaná na tyto hostitele bude chovat korektně. Pošta adresovaná pomocí vykřičníkové notace na hostitele, se kterým komunikujete na bázi protokolu UUCP, by měla být poslána přímo na tohoto hostitele (pokud to výslovně nezakážete prostřednictvím položky uvedené v tabulce domaintable). Předpokládejme, že hostitel swim je vaším přímým sousedem sítě UUCP. V tom případě, pokud programu sendmail pošlete adresu swim!fred, by se měl objevit následující výsledek:

# /usr/lib/sendmail -bt -Cvstout.cf

ADDRESS TEST MODE

Enter <ruleset> <address>

[Note: No initial ruleset 3 call]

> 3,0 swim!fred

rewrite: ruleset 3 input: swim ! fred

[...vynecháno...]

rewrite: ruleset 0 returnes: $# UUCP $@ swim $: < >, fred

>

    Pokud máte v tabulce uucpxtable uvedeny položky, jež přikazují doručit poštu pomocí protokolu UUCP určitým sousedům sítě UUCP, kteří používají u své pošty doménové hlavičky splňující standardy definované v síti Internet, je potřeba otestovat také tyto transportní cesty.

# /usr/lib/sendmail -bt -Cvstout.cf

ADDRESS TEST MODE

Enter <ruleset> <address>

[Note: No initial ruleset 3 call]

> 3,0 dude@swim.2birds.com

rewrite: ruleset 3 input: dude @ swim . 2birds . com

[...vynecháno...]

rewrite: ruleset 0 returns: $# UUCP $@ swim . 2 birds $: < >, dude

>

15.6 Administrace a jednoduché poštovní triky

    Když jsme nyní probrali teoriš konfigurace, instalace a testování programu sendmail+IDA, zastavme se na chvíli u věcí, které se často stávají v každodenním životě správce pošty.

    Vzdálené systémy se někdy porouchají. Modemy nebo telefonní linky selžou, definice systému DNS jsou díky chybě člověka nastaveny chybně. Sítě naprosto neočekávaně spadnou.

    V takových situacích musí správci pošty vědět, jak mají rychle, efektivně a bezpečně zasáhnout, aby pošta stále mohla chodit přes alternativní směrování, dokud vzdálené systémy nebo poskytovatelé služeb neobnoví normální provoz.

Zbytek této kapitoly budeme věnovat řešení nejčastěji se vyskytujících případů "nouzových stavů elektronické pošty".

15.6.1 Směrování pošty na přenosového hostitele

Směrujete-li poštu pro konkrétního hostitele nebo doménu na určitého přenosového hostitele, používáte k tomu obvykle tabulku mailertable.

Chcete-li například směrovat poštu pro doménu backwood.org na její bránu UUCP s názvem backdoor, pak vložíte do tabulky mailertable následující záznam:

UUCP-A,backdoor backwood.org

15.6.2 Vynucené poslání pošty do ýpatně zkonfigurovaných vzdálených systémů

    Hostitelé v Internetu mají často problémy s posláním pošty do ýpatně zkonfigurovaných vzdálených systémů. Existuje několik variant tohoto problému, avšak obecným příznakem těchto problémů je, že pošta je vzdáleným systémem odmítnuta nebo se do něj vůbec nedostane.

    Tyto problémy staví správce místního systému do těžké pozice, protože vaše uživatele zpravidla nezajímá, že osobně nespravujete všechny systémy na celém světě (nebo že nevíte, jak přimět vzdáleného správce k tomu, aby tento problém odstranil). Oni pouze vědí, že se jejich pošta nemůže prokousat na druhou stranu k příslušnému příjemci a že vy jste vhodnou osobou, které by si mohli stěžovat.

    Konfigurace vzdáleného systému je jejich problém, a ne váš. Ve všech případech se ale ujistěte, že nepoškodíte svůj systém jen kvůli tomu, abyste mohli komunikovat se ýpatně nakonfigurovaným vzdáleným systémem. Nemůžete-li sdělit poštmistrovi vzdáleného systému, aby v časově přijatelném období opravil svoji konfiguraci, máte jen dvě možnosti.

· Většinou je možné si úspěšně vynutit poslání pošty do vzdáleného systému, ale protože je vzdálený systém ýpatně nakonfigurovaný, nemusí na vzdáleném konci správně fungovat odpovědi-ale to už je vlastně problém správce vzdáleného systému.

Špatné hlavičky na obálce vaší odcházející pošty můžete pro daného hostitele nebo doménu upravit pouze prostřednictvím položky v tabulce domaintable. Ta způsobí opravu nekorektních informací v poště pocházející z vašeho systému:

braindead.correct.domain.com braindead.wrong.domain.com

· Často patně zkonfigurované systémy odmítnou přijetí pošty zpět do systému odesilatele a zobrazí působivou zprávu "that mail isn‚t for this siteiu (tato pošta není určena pro daný systém), protože tyto systémy nemají ve své konfiguraci správně nastaveny své přezdívky nebo jejich ekvivalenty pomocí parametru PSEUDONYMS. U veškeré pošty adresované na takovéto systémy je možné odstranit z adresy na obálce všechny názvy hostitelů a informace o doménách.

Znak vykřičník (!) uvedený v následujícím záznamu tabulky mailertable doručí poštu na patřičný vzdálený systém. Tato pošta se bude jevit jejich programu sendmail stejně tak, jako kdyby byla vytvořena na daném vzdáleném systému. Pamatujte si, že tato položka mění pouze adresu na obálce, takže ve zprávě se bude i nadále zobrazovat správná zpáteční adresa.

TCP!braindead.correct.domain.com braindead.wrong.domain.com

    Bez ohledu na to, zda se vám povede poslat poštu do ýpatně nakonfigurovaného systému, nebudete mít žádnou záruku, že uživatelé ze vzdáleného systému budou moci na vaši zprávu odpovědět (pamatujte, že adresy jsou poškozené...). Avšak v takovém případě si budou spíše stěžovat uživatelé vzdáleného systému svým správcům, nežli vaši uživatelé vám.

15.6.3 Jak dosáhnou toho, aby byla pošta poslána prostřednictvím protokolu UUCP

    V ideálním světě (z perspektivy sítě Internet) by měli všichni hostitelé uvedeny záznamy v doménové jmenné službě (v systému DNS) a posílali by poštu s plně kvalifikovanými názvy hostitelů.

    Pokud budete muset komunikovat s takovým systémem na bázi protokolu UUCP, můžete zajistit posílání pošty po spojení na bázi protokolu UUCP typu point-to-point a nikoliv prostřednictvím implicitního maileru, který by v podstatě pomocí tabulky uucpxtable vytvořil z plně kvalifikovaného názvu hostitele nekvalifikovaný název hostitele.

Chcete-li si vynutit doručení na bázi protokolu UUCP na adresu sesame.com, měli byste do tabulky uucpxtable vložit následující záznam:

# uprav adresu sesame.com a pro doručení použij UUCP

sesame sesame.com

    Výsledkem je, že program sendmail zjistí (na základě parametru UUCPNODES, který se nachází v souboru sendmail.m4), že jste přímo spojeni se vzdáleným systémem a proto bude řadit poštu tak, aby se mohla doručit pomocí protokolu UUCP.

15.6.4 Zákaz doručování pošty na bázi protokolu UUCP

    Občas se dostanete i do opačné situace. Systémy mohou mít často spoustu přímých spojení na bázi protokolu UUCP, které se používají jen zřídka, nebo které nejsou natolik spolehlivé a trvale dostupné jako implicitní mailer nebo přenosový hostitel.

    Například v okolí města Seattle existuje spousta systémů, které si vyměňují různé distribuce operačního systému Linux prostřednictvím anonymní služby UUCP. Tato výměna se ale děje pouze v době, kdy je uvolněna nová verze distribuce. Tyto systémy komunikují pomocí protokolu UUCP pouze tehdy, když je to zapotřebí, takže je zpravidla rychlejší a spolehlivější posílat poštu přes několik spolehlivějších skoků prostřednictvím veřejných (vždy dostupných) přenosových hostitelů.

    Doručování pošty na bázi protokolu UUCP na hostitele, s nímž jste přímo propojeni, zabráníte velmi snadno. Pokud má vzdálený systém plně kvalifikovaný název domény, můžete do tabulky domaintable přidat obdobnou položku:

# neposílej poštu svým sousedům přes UUCP

snorkel.com snorkel

    Tento záznam nahradí každý výskyt názvu pro protokol UUCP plně kvalifikovaným doménovým jménem (FQDN) a tím zabrání splnění řádky s parametrem UUCPNODES, která je definována v souboru sendmail.m4. Výsledkem bude obvykle to, že se pošta pošle na základě hodnot parametrů RELAY_HOST a RELAY_MAILER (nebo na základě hodnoty parametru DEFAULT_MAILER).

15.6.5 Spuštění programu sendmail v režimu okamžitého zpracování fronty

    Chcete-li zprávy čekající ve frontě zpracovat okamžitě, zadejte pouze příkaz /usr/lib/runq. Tento příkaz vyvolá program sendmail s patřičně nastavenými volbami, které zajistí, že program sendmail spustí frontu nevyřízených úkolů okamžitě a nebude čekat na další plánované spuštění.

15.6.6 Zápis poštovních statistik

    Mnoho správců systému (a lidí, kteří pro ně pracují) se zajímá o množství pošty poslané do místního systému, z místního systému nebo přes místní systém. Existuje několik způsobů, jak sledovat kvantitu poštovní dopravy.

    Používáte-li soubor mail.debug a máte-li poměrně velký objem pošty, může soubor log nabýt značné velikosti. Výstupní soubory z démona syslogd se zpravidla musí v pravidelných intervalech nahrazovat nebo "promazávativ prostřednictvím démona crond(8).

    Existuje množství běžně dostupných utilit, které vytvářejí souhrn z výstupu poštovních log-souborů vytvořených démonem syslogd. Jedněmi z nejznámějších utilit je perlový skript syslog-stat.pl, který je součástí distribuce zdrojového kódu programu sendmail+IDA.

15.7 Kombinace a srovnávání jednotlivých distribucí binárního kódu

Konfigurace přenosu elektronické pošty a doručovacích agentů nemá žádný přesný standard a navíc ani nemá "jednotnou strukturu adresářů".

    Z toho důvodu je nutné se ujistit, že všechny odlišné části systému (USENET news, pošta, protokol TCP/IP) souhlasí s umístěním doručovacího programu pro místní poštu (například programy lmail, deliver atd.), doručovacího programu pro vzdálenou poštu (například program rmail) a poštovního transportního programu (například program sendmail nebo smail). Tyto předpoklady nejsou zpravidla uvedeny, i když použití příkazu strings vám může pomoci zjistit, jaké soubory a adresáře se očekávají. Následuje několik problémů, se kterými jsme se v minulosti setkali u některých běžně dostupných distribucí binárního kódu a zdrojového kódu operačního systému Linux.

    Abyste neměli při kompilaci všech poštovních klientů ze zdrojových kódů potíže, doporučujeme raději místo tohoto postupu vytvořit mezi jednotlivými programy symbolické odkazy.

15.8 Kde získat více informací

    Existuje mnoho míst, kde byste mohli hledat informace o programu sendmail. Máte-li zájem o jejich seznam, nahlédněte prosím do dokumentu Linux Mail HOWTO, který je pravidelně posílán na adresu comp.answers. Tento informační bulletin je také dostupný prostřednictvím anonymní služby FTP na adrese rtfm.mit.edu. Avšak nejlepším zdrojem informací jsou zdrojové kódy k programu sendmail+IDA. Podívejte se do souborů DBM-GUIDE, OPTIONS a Sendmail.mc, které se nachází v podadresáři ida/cf adresáře se zdrojovými kódy.

Previous Content Next Up