V předchozích dílech našeho seriálu jsme vycházeli z předpokladu, že máme pouze jedno doménové jméno, které na našem poštovním serveru obsluhujeme. Někdy je však ve firmě k dispozici domén více, typicky v holdingovém nebo korporátním uspořádání. Náš server pak musí umět pracovat se schránkami, které mají před zavináčem stejné jméno (např. info@subfirma1.cz, info@subfirma2.cz), ale míří ke zcela odlišným uživatelům. Sendmail je na tuto situaci naštěstí vybaven dostatečně.
Definice domén
Prvním krokem je editace souboru /etc/mail/local-host-names, v němž je nutné uvést veškerá doménová jména, pro která má sendmail poštu zpracovávat. U těchto domén je následně nutné nasměrovat MX záznam na IP adresu našeho pošťáka. Konfigurační soubor by pak mohl vypadat takto:
firma.cz
subfirma1.cz
subfirma2.cz
Pokud by na server dorazila libovolná zpráva s příjemcem v jedné z uvedených domén, bude se jí sendmail věnovat a udělá s ní úkony definované v dalších konfiguračních souborech. V opačném případě ji rovnou odmítne. Pro aplikaci změn je nutné démona sendmail restartovat příkazem
service sendmail restart
Schránky se stejným názvem
Jestliže obsluhujeme na serveru více domén, nutně narazíme na konflikt schránek se stejnými názvy. Pokud např. zřídíme schránku (uživatele) info, automaticky nám bude server doručovat e-maily pro info@firma.cz, info@subfirma1.cz a info@subfirma2.cz. Fyzicky však půjde o jedinou schránku, do které budou padat všechny zprávy pro výše uvedené e-mailové adresy. Proto je nutné schránky se stejným názvem pro jednotlivé uživatele odlišit.
Nejprve vytvoříme pro každou budoucí doménu vlastní pracovní „ info“ schránku (uživatele) takto:
adduser info-firma
adduser info-subfirma1
adduser info-subfirma2
Následně v souboru /etc/mail/virtusertable nadefinujeme propojení těchto pracovních schránek na příslušné e-mailové adresy.
info@firma.cz info-firma
info@subfirma1.cz info-subfirma1
info@subfirma2.cz info-subfirma2
Tím přesně určíme, do které schránky budou směřovat správné e-maily. Povšimněte si, že v tomto případě vůbec není nutné, abychom měli v systému uživatele info jako takového. Jednotlivé pracovní schránky pak obsluhujeme standardním způsobem uvedeným v minulých dílech seriálu.
Soubor virtusertable má sice textový formát, ale podobně jako jiné konfigurační soubory sendmailu je nutné jej převést do databázové podoby s příponou db. Učiníme tak opět restartem démona příkazem
service sendmail restart
Transfer pošty na vnitřní servery
Výše jsme popisovali situaci, kdy obsluhujeme veškeré domény na jediném poštovním serveru. V některých firmách je však z různých důvodů výhodné provozovat pošťáků více. Například na každé pobočce, tak aby se eliminoval transfer dat mezi pobočkou a centrálou. V takovém případě uvedeme do MX záznamů buď přímo dílčí poštovní servery, nebo jednoho centrálního pošťáka, který se o distribuci zpráv postará sám.
Druhá varianta je samozřejmě výhodnější, protože můžeme centrálně pracovat s e-maily, které následně distribuujeme k doručení na lokální pobočkové poštovní servery. Typicky prověříme všechny zprávy na centrálním serveru antivirem a antispamem a následně je předáme na vnitřní servery firmy.
K definici transferu zpráv slouží soubor /etc/mail/mailertable, ve které určíme, co se má dít s poštou pro různé zde uvedené domény. Např.
firma.cz smtp:mail.firma.cz
subfirma1.cz smtp:brno.firma.cz
subfirma2.cz smtp:ostrava.firma.cz
Pomocí těchto řádků rozmístíme e-maily pro různé domény na rozličné poštovní servery. Jelikož zde pracujeme s doménovými názvy, je nutné mít na serveru DNS nebo tato pojmenování uvést alespoň do souboru /etc/hosts a nasměrovat je na příslušné IP adresy.
Soubor mailertable je opět nutné konvertovat do binární podoby pomocí restartu celého démona sendmail.
Maskování uživatelů
Ve složce /etc/mail naleznete ještě jeden konfigurační soubor, kterému jsme se prozatím nevěnovali. Soubor genericstable slouží primárně k maskování existujících uživatelů za jiné (rozuměj správné) e-mailové adresy. Jde vlastně o opak virtualizace uživatelů z úvodu tohoto dílu seriálu.
Obsah souboru má i obrácený syntax k tabulce virtusertable.
honza povolny@firma.cz
root administrator@firma.cz
Výše uvedené řádky zajistí, že pokud bude e-mail odeslán např. z terminálu uživatele samotného Linuxu, bude vždy opatřen uvedenou adresou odesílatele.
Např. jestliže uživatel honza, přihlášený v programu putty na serveru brněnské pobočky, odešle e-mail, bude mít zpáteční adresu honza@brno.firma.cz. Správné nastavení maskování zajistí i náležité nahrazení adresy odesílatele za povolny@firma.cz.
V současnosti jsou k odesílání pošty téměř výhradně používané specializované programy, ve kterých vždy uvádíme adresu odesílatele, tak jak si ji přejete zobrazovat u příjemce. Nejinak je tomu i u webového rozhraní, kdy ve svém profilu opět definujeme i adresu, za kterou se budete vždy maskovat. Soubor genericstable tak poněkud ztrácí na účinnosti, nicméně je dobré jeho smysl znát a počítat s použitím.
Stejně jako u všech předchozích „tables“ je nutné převést vše do podoby s příponou db. Pokud nechceme restartovat samotného démona sendmailu, můžeme získat databázové soubory následovně.
makemap hash genericstable.db < genericstable
makemap hash virtusertable.db < virtusertable
makemap hash mailertable.db < mailertable
makemap hash access.db < access
Možnosti sendmailu jsou opravdu velmi bohaté, v našem seriálu se jich dotýkáme vždy jen v základním pojetí. Neváhejte však prostudovat příslušnou dokumentaci, jíž je na internetu opravdu dostatek a pomocí které dokážete funkci sendmailu využít na maximum.
Autor je vedoucím informačního centra Univerzity J. E. Purkyně