LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Sendmail - úplné základy

Podíváme se společně na MTA sendmail. Popíšeme si jeho kompilaci a podíváme se na způsob jakým se pomocí m4 makrojazyka konfiguruje.

6.4.2011 00:00 | Radim Kolář | Články autora | přečteno 7744×

Sendmail

Program Sendmail je opravdová legenda. Je to nejstarší MTA (Mail Transport Agent), který je používán dodnes. Byl napsán v roce 1983 a dlouho byl jediným programem pro posílání pošty. Vzhledem ke své neuvěřitelné flexibilitě konfigurace podporoval snad všechny otevřené mail protokoly. Byl používán pro SMTP, ESMTP, UUCP, HylaFax, DECnet, QuickPage . Historie sendmailu je hezky popsána na wikipedii.

Sendmail je sice dodnes nejpoužívanější MTA, ale je postupně vytlačován programy Postfix, Exim, Microsoft Exchange a Qmail.

RokZastoupení Sendmailu
200141 %
200438 %
200729,4 %
200924 %
V současné době dělá nejvěrohodnější statistiku SMTP MTA server mailradar.com, kterou si můžete prohlédnout zde.

Nejčastěji je sendmail nahrazován programem postfix a častým důvodem pro nahrazování je údajná špatná bezpečnost sendmailu. Není to tak docela pravda, Secunia report pro Postfix 2 2003-2011 ukazuje 4 zranitelnosti stejně jako Secunia report pro Sendmail 8. Musíme však přiznat, že nalezené bezpečnostní problémy v sendmailu byly závažnější.

Druhým důvodem pro nahrazování sendmailu je jeho obtížnější konfigurace. To je pravda a navíc situaci poměrně komplikuje nedostatek detailních návodů na internetu. Většina návodů pro sendmail, které najdete, je poměrně povrchní a ne vždy správná. Doporučuji si sehnat dvě výborné knížky o Sendmailu: sendmail cookbook a sendmail, Fourth Edition.

Kompilace Sendmailu

Sendmail musíme mít přeložený s podporou pro SASL2, STARTTLS a případně LDAP. Dnes už povětšinou sendmail kompilovat nemusíme, protože to za nás již udělali distributoři. Volby s kterými byl náš sendmail přeložen si zobrazíme pomocí sendmail -d0,1 -bv root. Pokud chcete postup jak přeložit sendmail z oficiálních zdrojáků, tak mi to napište do diskuze.

FreeBSD

Ve FreeBSD je sendmail obsažen v základním systému, ale bez voleb LDAP a SASL2. Pokud chceme sendmail s těmito volbama máme dvě možnosti: nainstalovat si port mail/sendmail-ldap nebo si přeložit znovu sendmail co je v základním systému. Já preferuji druhou volbu.

Nejdřív musíme nainstalovat sasl2 a ldap knihovny

cd /usr/ports/security/cyrus-sasl2
make install clean
cd /usr/ports/net/openldap24-sasl-client
make install clean

Do /etc/make.conf přidáme

SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2 -DLDAPMAP
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl2 -lldap -llber

a pak přeložíme a nainstalujeme nový sendmail, kterým přepíše stávající. Pokud bychom instalovali sendmail z portu tak budeme mít v systému sendmaily dva, což zvyšuje pravděpodobnost chyby tím, že některý z email programů zavolá starý sendmail.

cd /usr/src/lib/libsmutil
# make cleandir depend && make
# cd ../libsm
# make cleandir depend && make
# cd  /usr/src/usr.sbin/sendmail
# make cleandir depend && make && make install

Ubuntu

V Ubuntu máme situaci o poznání jednoduší. Nemusíme totiž ručně nic kompilovat. Stačí nám nainstalovat balíček sendmail včetně závislostí a získáme sendmail s podporou OpenLDAP 2.4, OpenSSL a SASL2.

Verze UbuntuVerze Sendmailu
8.048.14.2
10.048.14.3
10.108.14.3

Sendmail není oficiálně podporován společností Canonical.

M4 Konfigurace

Konfugurační soubory sendmailu se nachází tradičně v adresáři /etc/mail. Snad všechny existující distribuce toto dodržují. V tomto adresáři najdete .mc .cf a .db soubory. Soubory .cf a .db jsou generovány.

Sendmail se konfiguruje především pomocí makrojazyka M4. Na soubor s koncovkou .mc spustíme m4 preprocesor, který nám vygeneruje finální konfigurační soubor sendmail.cf. Makrojazyk M4 se používá ve všech osmičkových a možná i starších verzích sendmailu. S jinou než osmičkovou řadou se za posledních 20 let nepotkáme, osmičková řada vznikla forkem z 4.4 BSD v roce 1993.

Přímá editace konfiguračního souboru sendmail.cf se vzhledem ke své relativně dost velké složitosti nedoporučuje. Je lepší si vytvořit svá .m4 makra a ty pak volat z .mc souboru. Také se to snadněji udržuje a aktualizace konfigurace na novou verzi sendmailu je pak jednoduší.

V dnešních distribucích se již nemusíme o volání m4 preprocesoru starat. Distributor nám připravil Makefile, který po editaci konfiguračních souborů sendmailu zařídí vše potřebné a spustí jednak m4 preprocesor i vytvoří databázové hashtabulky ze vstupních textových souborů.

Ubuntu

V Ubuntu je situace jednoduchá. Poeditujeme co je libo a v /etc/mail spustíme příkaz make, který spustí docela sofistikovaný Makefile, protože kromě aktualizace konfiguračních souborů vypíše i změněné soubory a upozorní nás abychom nezapomněli spustit /etc/init.d/sendmail reload.

FreeBSD

Ve FreeBSD máme situaci o trochu složitější. Pokud v /etc/mail spustíme make tak dojde sice k vytvoření hash databází a konfiguračního souboru ale konfigurační soubor nebude nainstalován a proto bude v platnosti pořád stará konfigurace. K nainstalování nové konfigurace musíme zadat make install a restartovat sendmail pomocí make restart nebo /etc/rc.d/sendmail restart. Nově vytvořené hash databáze ale budou aktivní, netřeba je instalovat a restartovat sendmail.

Základy M4 makrojazyka

Konfigurační .mc soubor sendmailu obvykle začíná příkazem divert(-1) a poté následuje copyright. Vše co následuje po divert(-1) se nezkopíruje do výstupního souboru protože m4 má 10 front číslovaných 0-9. Tyto fronty jsou pak vzestupně seřazeny ve výstupním proudu. Vypnutí výstupu ale neznamená že jsou další m4 příkazy ignorovány - můžeme dále definovat a používat makra, bude jen potlačen jejich případný tiskový výstup. Po copyrightu který může být v libovolném formátu, který není zároveň příkazem m4 pak následuje divert(0), což vypne ignorování výstupu a jedeme již naostro.

Komentáře se v m4 makrojazyku označují zkratkou dnl a končí koncem řádku včetně ukončovacího znaku řádku - obvykle CR. Pokud chceme zabránit aby po příkazech makrojazyka m4 se přidala do výstupního souboru prázdná řádka tak příkaz ukončíme komentářem:

divert(-1)
Sendmail je nejflexibilnejsi MTA co znam
divert(0)dnl

Prázné řádky ve výstupním souboru ve většině případů nevadí a tak končit příkazy makrojazyka komentářem není dnes již bezpodmínečně nutné, ačkoliv to stále budete velmi často vídávat v různých návodech.

Nejčastějším příkazem m4 který budeme potřebovat je příkaz define kterým definujeme m4 makra. Sice si s ním můžeme definovat jakákoliv makra a pak je používat v následujících řádkách konfigurace, ale tato možnost se v praxi používá naprosto minimálně. My budeme definovat jen makra předem známých jmen jejichž existence je pak testována hlavním m4 skriptem pro vytváření konfigurace.

Prvním argumentem příkazu define je jméno makra, druhým je obsah makra. Jelikož m4 umí vytvářet makro v makru, což v našem případě není žádoucí chování je potřeba říci m4 aby jméno a obsah makra vzal tak jak je a nezpracovával ho. Tohoto docílíme umístěním řetězce do `' (obrácená uvozovka a normální uvozovka).

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

Je potřeba zvolit v terminálu vhodný font v kterém můžeme snadno tyto dvě uvozovky od sebe odlišit. Pokud je použijeme špatně tak m4 nezobrazí žádnou chybovou hlášku, ale vygenerovaný konfigurační soubor bude chybný. Tato chyba v konfiguraci se navíc špatně hledá.

Pokud nechceme generovat sendmail.cf pomocí připraveného makefile ale ručně tak toho dosáhneme takto:

/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/ /usr/share/sendmail/cf/m4/cf.m4 \
sendmail.mc > sendmail.cf

Příklad na spuštění m4 předpokládá že máme sendmail konfigurační makra umístěná v adresáři /usr/share/sendmail/cf. Tento adresář používá pro uložení konfigurace jak FreeBSD tak Ubuntu.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

8.1.2017 17:51 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 19. ledna od 18:30 v pražském hackerspacu Brmlab. Tentokrát je tématem srazu ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. K vidění bude mechanická klávesnice dasKeyboard, trackball Logitech nebo grafický tablet (a velký touchpad) Wacom. Přineste i vy ukázat svoje zajímavé klávesnice a další HW. V 18:20 je sraz před budovou, v 18:30 jdeme společně dovnitř, je tedy dobré přijít včas. Podle zájmu se později přesuneme do nějaké restaurace v okolí.
Přidat komentář

1.12.2016 22:13 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.
Komentářů: 1

4.9.2016 20:13 /Pavel `Goldenfish' Kysilka
PR: Dne 22.9.2016 proběhne v Praze konference Cloud computing v praxi. Tématy bude např. nejnovější trendy v oblasti cloudu a cloudových řešení, provozování ERP v cloudu, o hostování různých typů softwaru, ale třeba i o zálohování dat nabízeném podnikům formou služby.
Přidat komentář

1.9.2016 11:27 /Honza Javorek
Česká konference o Pythonu, PyCon CZ, stále hledá přednášející skrz dobrovolné přihlášky. Máte-li zajímavé téma, neváhejte a zkuste jej přihlásit, uzávěrka je již 12. září. Konference letos přijímá i přednášky v češtině a nabízí pomoc s přípravou začínajícím speakerům. Řečníci mají navíc vstup zadarmo! Více na webu.
Přidat komentář

27.8.2016 8:55 /Delujek
Dnes po 4 letech komunitního vývoje vyšla diaspora 0.6.0.0
diaspora* je open-source, distribuovaná sociální síť s důrazem na soukromý
Více v oficiálním blog-postu
Přidat komentář

24.8.2016 6:44 /Ondřej Čečák
Poslední týden CFP LinuxDays 2016; pokud byste rádi přednášeli na LinuxDays 2016 8. a 9. října v Praze, můžete svůj příspěvek přihlásit, následovat bude veřejné hlasování.
Přidat komentář

9.8.2016 22:56 /Petr Ježek
Zařazení souborového systému reiser4 do jádra 4.7 znamená konečně konec patchování jádra jen kvůli možnosti použít reiser4.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

18.1.2017 20:18 / martin horky
Spolupraca linuxu a microsoftu

17.1.2017 9:57 / Pavel Hrubeš
Re: Externí USB televizní karta

4.1.2017 11:24 / Marcum
extension to house

3.1.2017 10:09 / bolden
country cottages

4.12.2016 22:54 / František Kučera
Dárek

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze