Poštovní server na OS Linux: Poštovní schránky

25. 12. 2013

Sdílet

 Autor: © Javierafael - Fotolia.com
Základní konfiguraci SMTP serveru máme hotovou. Nyní zbývá vytvořit schránky, pro které by bylo možné poštu doručovat.

Uživatelské schránky jsou vlastně všechny uživatelské účty, které máme v Linuxu vytvořené. Každý uživatel Linuxu se tak automaticky stává vlastníkem poštovní schránky, do které je mu ihned SMTP serverem doručována pošta.

Vytvořit uživatele lze v Linuxu snadno příkazy useradd nebo adduser (záleží na distribuci) s příslušnými parametry a příkazem passwd, kterým nastavíte uživatelské heslo. Příkazy je možné použít i bez parametrů, potom Linux vytvoří standardního uživatele s domovským adresářem a základním nastavením podle zvolené distribuce. Dvojicí příkazů

useradd povolny

passwd povolny

tak vytvoříte uživatele povolny s domovskou složku /home/povolny a poštovní schránkou /var/mail/povolny. Následně mu nastavíte přístupové heslo. Jeho poštovní adresa je pak ve tvaru povolny@firma.cz podle domény, kterou jsme definovali v konfiguraci serveru v minulém dílu.

Formát takto vytvořené poštovní schránky je čistě textový, jednotlivé zprávy jsou umísťovány za sebou tak, jak do schránky dorazí (formát mbox). Zprávy v tomto formátu nelze třídit ani nijak upravovat. K tomu slouží poštovní klienti, o kterých si řekneme dále.

Třídění zpráv

Před samotným doručením zprávy ji lze směrovat a třídit. Existuje hned několik způsobů, jak s ní pracovat.

První možností je třídění pomocí konfigurace aliasů, tedy editace souboru /etc/aliases na našem linuxovém serveru. Tento soubor má velmi jednoduchý syntax. Vlevo se nachází adresa zdroje, vpravo potom adresa cílová.

Mějme např. schránku povolny (e-mail povolny@firma.cz), ke které bychom chtěli vytvořit alias jan.povolny@firma.cz. Potom do souboru /etc/aliases dopíšeme řádek takto:

jan.povolny:      povolny

Tím poštovnímu serveru oznámíme, že zprávy přijaté pro jan.povolny@firma.cz doručujeme do schránky uživatele povolny, kterého jsme vytvořili výše. Se stejnou logikou utvoříme pomocí souboru aliases i jednoduché distribuční skupiny. Např. řádek

info:      povolny, sekretariat, reditel

řekne serveru, že vše, co přijde na adresu info@firma.cz, rozešle automaticky do uvedených schránek. Uživatel info přitom vůbec nemusí v Linuxu existovat. Podobným způsobem si pak mohou jednotliví uživatelé přeposílat své zprávy na jiné e-mailové adresy. Např. řádek

povolny:              \povolny, povolny@jinde.cz

zajistí, že bude pošta pro povolny@firma.cz doručena do jeho schránky na serveru (lomítko před vlastním jménem předejde zacyklení zprávy) a zároveň v kopii přeposlána na jinou e-mailovou adresu.

Po každé změně souboru aliases je nutné jej aktivovat. Buď restartováním celého serveru, nebo příkazem newaliases bez parametrů. Úspěšné nastavení lze opět ověřit v logu serveru.

Na základní práci s poštou nám aliasy postačí, pokud však chceme třídit sofistikovaně, můžeme použít program k tomuto účelu vytvořený – procmail. Je to specialista na třídění, avšak jeho konfigurace není nejjednodušší. Možnosti procmailu si ukážeme na nastavení automatické odpovědi, pro kterou bývají jeho schopnosti využívané nejčastěji. Procmail lze konfigurovat buď globálně (např. u nastavení antivirové kontroly – viz následující díly seriálu), nebo uživatelsky. Globální soubor nalezneme ve složce /etc/mail/procmailrc, lokální potom vždy v příslušné domovské složce, např. /home/povolny/.procmailrc. Vzorový soubor pro případ „out of office“ by tak mohl vypadat např. takto:

SHELL=/bin/sh
LOGFILE=$HOME/procmail.log
FROM='Jan Povolny
'
SUBJECT=`formail -zcxSubject:`

:0 Whc: dovolena.lock
* !^FROM_DAEMON
* !^X-Loop: ${LOGNAME}@${HOST}
| formail -rD 8192 dovolena.cache

:0 ehc
| (formail -rI"Precedence: junk" \
 -I"Subject: Out of Office: ${SUBJECT}" \
 -I"From: ${FROM}" \
-A"X-Loop: ${LOGNAME}@${HOST}" ; \
 cat ${HOME}/dovolena.txt ; \
  ) | $SENDMAIL -oi -t

V první části skriptu definujeme základní proměnné. Tj. chceme nastavit log soubor, odesílatele a subjekt zprávy, který bude vždy odpovědí na došlý e-mail. Následně definujeme filtry. Každý se skládá ze tří částí. První je počátek „:0 s parametry“, následují podmínky filtru uvozené znakem „*“, celý proces je zakončen akcí uvozenou znakem „|“.  V podstatě tak procmailu říkáme, že pro každý došlý e-mail (který doručí a ponechá ve schránce) vytvoří automatickou odpověď, jejíž obsah je uložen v souboru dovolena.txt v domovské složce uživatele. Adresa odesílatele se potom navíc uloží do souboru dovolena.cache, tak aby se na ni posílala informace pouze jednou, a ne opakovaně.

Klienti

Doručené zprávy je nutné ze schránek vyzvednout. K tomu slouží takzvané klientské protokoly. Mezi nejznámější jistě patří POP3 a IMAP. Zatímco první zprávy ze schránky vyzvedne a stáhne na lokální stanici, druhý s nimi pracuje vzdáleně a ponechává je tak na serveru. Výhody a nevýhody obou jsou zřejmé.

Stejně jako je poštovní server obsluhován démonem sendmail, jsou klientské protokoly také obsluhovány příslušnými servery dostupnými v linuxových distribucích. V našem případě použijeme výborně zpracovaný server dovecot, jenž v sobě obsahuje démony pro POP3 i IMAP.

V distribuci Fedora není nutné dovecot jakkoliv nastavovat. Standardní nastavení plně odpovídá potřebám sendmailu. Přesto doporučujeme prověřit direktivy konfiguračního souboru /etc/dovecot.conf, zejména pak správnou definici mail_location. V souboru najdete i možnosti pro jednotlivé protokoly a také způsoby autorizace. Standardně se používají stejná jména a hesla, tak jak jsme je nadefinovali při tvorbě uživatele. Samotnou službu spustíte příkazem

service dovecot start

Úspěšné pokusy o přihlášení lze opět ověřit v soubor /var/log/maillog. Klientským programem pak může být libovolný POP3 nebo IMAP klient, např. MS Outlook, Mozilla Thunderbird nebo běžně dostupný Windows Mail. Příslušná nastavení těchto klientů jsou notoricky známá.

V příštím dílu našeho seriálu se podíváme podrobněji na zabezpečení serveru SMTP (SMTP auth) a využití procmailu pro implementaci antivirové a antispamové kontroly příchozích zpráv.

bitcoin_skoleni

Autor je vedoucím Informačního centra Univerzity J. E. Purkyně