Hlavní navigace

Sendmail: pošťák pro malou síť

10. 11. 2008
Doba čtení: 4 minuty

Sdílet

V tomto článku si ukážeme další praktické využití sednamilu. Rozšíříme si příklad z minulého článku a vytvoříme funkční poštovní server pro malou firmu. Antivir a antispam už máme a přidáme ještě uživatele, přesměrování a další důležité vlastnosti. Někdo má rád procmail, tak se podíváme i na něj.

V celém seriálu se zatím trochu vyhýbám teorii. Kdo chce vědět víc, může se prozatím podívat na starší seriál Pošta pro každého – díl 1, díl 2, díl 3.

Z minulého dílu máme nakonfigurovaný antivir, antispam a poštu předáváme na vnitřní poštovní server. Vše se ale může odehrávat na jednom stroji. Popsané řešení je vhodné pro malou firmu s několika uživateli, používám ho do několika desítek mailových schránek. Někdo může vidět nevýhodu v tom, že co mailbox, to jeden uživatelský účet v systému. Dost správců dnes preferuje vpopmail, uživatele v mysql databázi, … Ale pro pár účtů mi to přijde zbytečné, rozbíhat další démony.

Přesuneme se opět do adresáře /etc/mail, v něm bude většina úprav. Nejprve si založíme soubor local-host-names a do něj si vložíme jméno naší domény:

firma.cz

Tím sendmailu říkáme, že poštu pro doménu firma.cz má zpracovávat lokálně. Druhá úprava spočívá v odstranění řádku v souboru  mailertable:

firma.cz               smtp:exchange.firma.cz

Tím je zajištěno, že pošta se nebude směrovat nikam dál.

Teď si založíme uživatele, třeba pomocí příkazu adduser (někdo preferuje pw, na tom nezáleží). Uživatelům můžete zabránit se přihlašovat třeba zvolením shellu nologin. Pokud si vytvoříme uživatele mirek, bude mailová adresa mirek@firma.cz.

To se nám samozřejmě líbit nemusí, někdo má radši adresy ve formátu jmeno.prijmeni@firma.cz. V tom případě přichází na řadu soubor /etc/mail/aliases. Jeho formát je jednoduchý, na levé straně je alias, na pravé je schránka, do které bude zpráva doručena. Takže si můžeme přidat třeba:

mirek.dlouhy:       mirek
mirecek:            mirek

Když pak náš sendmail přijme poštu pro mirecek@firma.cz nebo mirek.dlouhy@firma.cz, bude doručeno do schránky mirek. Samozřejmě bude platná i adresa mirek@firma.cz.

Aliases umí mnohem víc. Můžete si tu třeba založit distribuční skupinu:

vedeni:        mirek, jana, velkysef

Co potom přijde na vedeni@firma.cz, rozešle se do schránek mirek, jana a velkysef. Pokud uživatel mirek požaduje posílat kopii zpráv na jinou adresu, opět stačí záznam v aliases:

mirek:    \mirek, mirek@jinam.cz

Pokud nechce zprávy zachovávat na server a jen je má přeposílat, stačí řádek:

mirek:    mirek@jinam.cz

Proč je v prvním případě před mirkem zpětné lomítko pěkně vysvětluje tutorial k sendmailu.

Můžeme dokonce některé e-maily předávat programům, ale to už by vydalo na další článek:

program-bugs: |/usr/local/bin/program-bug-tracker

Po úpravě aliases nezapomeňte spustit příkaz newaliases. Ten vygeneruje nový db soubor s aliasy. Stejně je možné použít sendmail -bi. U některých verzí FreeBSD stačí zadat v /etc/mail make a aliasy se také vytvoří.

Dále musíme zajistit, kdo a odkud může posílat e-maily. K tomu slouží soubor /etc/mail/access. Výchozí politika je taková, že jsou odmítány zprávy, které nejsou pro lokální stroj nebo domény vyjmenované v  local-host-names. Můžeme určit, z kterých e-mailových adres, domén nebo přímo IP adres budou e-maily přijaty, odmítnuty nebo zda je náš sendmail předá dál. U nás dovolíme všem ve vnitřní síti posílat kamkoli:

192.168.1                     RELAY

I zde jsou poměrně široké možnosti, můžeme například odmítat poštu od nekdo@nekde.cz, ale dovolíme na ni našim uživatelům psát:

From:nekdo@nekde.cz     REJECT

Možností je více, můžeme zprávy zahazovat, přijmout jen pokud jsou pro naši doménu, vrátit SMTP odpověd s chybou, … Po úpravě nezapomeňte spustit make, aby se opět vytvořila databáze.

Sendmail ve výchozím nastavení doručuje do mailboxů. V jednom souboru jsou za sebou uložené všechny emaily. Někdo má raději maildiry. Oboje má své výhody i nevýhody. Mailboxy jsou v adresáři /var/mail/. Co soubor, to jeden mailbox. Teď si ukážeme, jak udělat maildir. Nainstalujeme procmail:

cd /usr/ports/mail/procmail
make install

a upravíme konfigurační soubor /usr/local/etc/procmailrc

DEFAULT=$HOME/Maildir/

V souboru /etc/mail/mail.firma.cz.mc změníme lokálního doručovatele. Stačí změnit řádek:
MAILER(local) na  MAILER(procmail)

Restartujeme sendmail s upravenou konfigurací:

cd /etc/mail
make
make install
make restart

Pošta se potom ukládá do adresáře Maildir v domovském adresáři uživatele.

CS24_early

Teď trošku odbočíme od sendmailu, slíbil jsem kompletní řešení. Pošta nám přichází na server, teď ji ještě nějak musíme zprostředkovat uživatelům. Můžeme nainstalovat třeba nějaký jednoduchý pop3 server ( /usr/ports/mail/qpopper, /usr/ports/mail/akpop3d) nebo taky něco šikovnějšího, jako je třeba Dovecot. Konfiguraci nechám na Vás, někdo chce třeba IMAP, někdo SSL. Jediná věc, která je opravdu nutná je nastavit správně místo, kde jsou uložené schránky uživatelů. U maildirů to bude:

mail_location = maildir:~/Maildir

U mailboxů:

mail_location = mbox:~/mail:INBOX=/var/mail/%u

Byl pro vás článek přínosný?

Autor článku

Petr Macek studoval aplikovanou informatiku na Jihočeské univerzitě, pracuje jako síťový specialista ve firmě Kostax, s. r. o. Baví ho především FreeBSD, sítě a monitoring Cacti.