Sendmail

Radim Pavlíček


Obsah


Sendmail - obecně

Sendmail je nejrozšířenějším MTA /Mail Transfer Agent/ , česky paní pošťačka. Standardně je nainstalovaný třeba na Redhatu. Existují alternativy jako Smail, Exim nebo Qmail. Pokud záleží na bezpečnosti tak je nejlepší volba Qmail. Sendmail je typicky představitel monolitického programu, tj. jedna binárka dělá vše, narozdíl třeba od Qmailu. Je k dostání zadarmo na adrese www.sendmail.org ze zdrojových textu, nebo např. na ftp.linux.cz ve zkompilované podobě RPM balíků. Popisovaná verze v referatu je 8.12.1.

ftp.sendmail.org


Instalace

Pokud byl už na náš systém Sendmail portován nebo nemáme-li nějaké speciální požadavky můžeme instalovat z balíku RPM. My budeme instalovat balíčky, ale zkusíme si začátek kompilace.

Stáhneme si zdrojové texty sendmail-8.12.1

tar -xzvf sendmail-8.12.1.tgz

přepneme se do adresáře sendmail

cd sendmail-8.12.1/sendmail
./Build
Za povšimnutí rozhodně stojí, že se automaticky rozhodlo o jaký systém se jedná. U mne /root/sendmail-8.12.1/obj.Linux.2.4.2-2.i686/sendmail

Přepneme se do adresáře cf, kde jsou předpřipraveny soubory, pomocí kterých vytvoříme základní konfigurační soubor.

cd ..; cd cf/cf

Vybereme soubor, který je nejbližší našemu operačnímu systému. V našem případě je to generic-linux.mc, který nakopírujeme do sendmail.mc, tedy

cp generic-linux.mc sendmail.mc

Teď budeme upravovat soubor sendmail.mc. Tento soubor je alfa a omega celé instalace. V něm se nastavují všechny možnosti sendmailu. Rozhodně není na škodu si přečíst README v adresáři cf, ve kterém jsou všechny možnosti detailně popsány.


FEATURE(`blacklist_recipients')dnl 		
	umožnuje zavedení anti-spam listu v access db
MASQUERADE_AS(`lab.fi.muni.cz')			
	veškerá odchozí pošta bude neco@lab.fi.muni.cz
FEATURE(`masquerade_envelope')		
	maškarádovat můžeme i obálku
define(`LOCAL_RELAY', `hostname')	
	pro jména bez @hostname tu mame RELAY
define(`MAIL_HUB', `pc2.lab.fi.muni.cz')
	xpavlic4@pc2.lab.fi.muni.cz pošleme na pc2

pokud jsou poslední dvě definovány, pak je to 
FEATURE(`stickyhost')			
	root, xpavlic4 bude poslán na LOCAL_RELAY, zbytek aisa 
define(`SMART_HOST', `aisa.fi.muni.cz')		
	aplikuje se na gates@microsoft.com

Příklad:
jsme na stroji  mastodon.CS.Berkeley.EDU a je zapnuto FEATURE(`stickyhost')

email sent to....	eric			  eric@mastodon.CS.Berkeley.EDU

LOCAL_RELAY set to	mail.CS.Berkeley.EDU	  (delivered locally)
mail.CS.Berkeley.EDU	  (no local aliasing)	    (aliasing done)

MAIL_HUB set to		mammoth.CS.Berkeley.EDU	  mammoth.CS.Berkeley.EDU
mammoth.CS.Berkeley.EDU	  (aliasing done)	    (aliasing done)

Both LOCAL_RELAY and	mail.CS.Berkeley.EDU	  mammoth.CS.Berkeley.EDU
MAIL_HUB set as above	  (no local aliasing)	    (aliasing done)

A proti spammerům:
Relaying je vypnut defaultne. Muzeme zapnout pomocí FEATURE(`promiscuous_relay').
FEATURE(`dnsbl')			
	blacklist založený na DNS, nutnost registrace na http://mail-abuse.org

Nakonec vygenerujeme soubor sendmail.cf

$ pwd
/root/sendmail-8.12.1/cf/cf
$ ./Build sendmail.mc

Po konečné fázi upravení bysme měli udělat nějaké symbolické linky v adřesářích /etc/rc.d/nekde, což je ale velice pracné a navíc bysme museli napsat ještě skript pro /etc/init.d/sendmail. Tady zjistíme, že instalovat ze zdrojovych souboru je pro normalní smrtelníky nesmysl a proto vše smažeme a nainstalujeme rpm balicky sendmail-xxx.rpm a sendmail-cf-xxx.rpm.

Balíček sendmail-X.X.X.rpm nainstaluje samotnou binárku /usr/lib/sendmail, manuálove stránky, a obecný konfigurační soubor. Balíček sendmail-cf-X.X.X.rpm nainstaluje do adresáře /usr/share/sendmail-cf různé konfigurační soubory, které můžeme použít při detailnější konfiguraci.

rpm -ql sendmail | more
rpm -ql sendmail-cf |more

Jak to pracuje?

Konfigurační soubor sendmail.cf

Celý sendmail se řídí podle souboru /etc/mail/sendmail.cf. Jeho editace je jen pro skutečné hardcore linuxáky. Celý soubor je de facto formální automat se sadou pravidel, podle kterých se řídí. V souboru můžeme nalézt například přepisovací pravidla:

R$+@$+			$:$1<@$2> focus on domain
R$+<$+@$+>	$1$2<@$3>	moce gaze right

Další možnosti příkazu:
M	Definuje agenta pro doruceni posty /procmail, /bin/sh
D	Definuje makro
R	Přepisovací pravidlo
O	Definice nastavení
H 	Definice hlavičky
P	Priorita

Jak se zpracovává posta:
   0 *	Parsing
   1 *	Sender rewriting
   2 *	Recipient rewriting
   3 *	Canonicalization
   4 *	Post cleanup
   5 *	Local address rewrite (after aliasing)

Install-sendmail

Na www.freshmeat.net existuje program install-sendmail, který je určen pro normalní pozemšťany a odstiňuje uživatele od editace souboru sendmail.mc nebo dokonce sendmail.cf. Zvláště užitečný je pro dial-upisty (proste lidi na modemu).