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 8128×

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ů

15.5.2017 23:50 /František Kučera

Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).


Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

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ář

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

> Poslední diskuze

15.6.2017 9:34 / Ondřej Havlas
php,

10.6.2017 10:39 / Temple
sell home for cash

11.5.2017 23:32 / lelo
Re: Problém se správcem balíčků

11.5.2017 5:45 / davd mašek
Re: Problém se správcem balíčků

10.5.2017 22:54 / lelo
Re: Problém se správcem balíčků

Více ...

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