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

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ů

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

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

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

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