Domů > Linuxové zápisky pro správce > Poštovní server: Postfix, Amavis, SA, Dovecot

Poštovní server: Postfix, Amavis, SA, Dovecot

Úvod

Budeme nastavovat poštovní systém, který zvládne přijímat poštu i pro více domén. Je více variant jak poštu vyřešit. V tomto návodu se popisuje řešení s:

  • Postfix jako smpt server
  • Dovecot jako imap a pop server
  • MySQL jako úložiště informací o virtuálních doménách a uživatelích
  • Postfix admin jako nástroj pro správu virtuálních domén/užvatelů v databázi SQL
  • Antivirus/antispam: SpamAssassin, ClamAV to vše pod Amavis-new
  • Webmail Squirrelmail

Pro Postfix admina a pro Squirrelmail budeme potřebovat i web server Apache2 a PHP s podporou MySQL.

Jak to bude fungovat dohromady

Pošta bude fungovat pro:

  • lokání uživatele (to jsou ti, co mají na serveru zřízený opravdový účet)
  • virtuální uživatele ve virtuálních doménách (ti budou mít své účty uloženy v SQL databázi).

O předávání pošty se bude starat Postfix. Umožní jednak příjem pošty, tak i její odesílání (pro klienty z vnitřní sítě).

Finální doručení do schránek svěříme (kupodivu) Dovecotu, který má svého LDA (Local Delivery Agent), takže o tuto práci bude Posfix ošizen (i když mám vyzkoušeno, že by to zvládnul taky). Je ale asi přeci jen lepší, když poštu umístí do schránky stejný program, který ji pak bude ze schránky pro uživatele zase vyzvedávat.

Hlavní funkcí Dovecotu je ale sloužit jako IMAP a POP3 server. Takže poštovní klienti uživatelů budou komunikovat s ním.

Aby se do pošty dalo koukat i nezávisle na poštovním klientovi, bude na serveru fungovat i webmail Squirrelmail.

V pozadí běží servery MySQL, Spamassasin a ClamAV. MySQL je úložištěm virtuálních domén a uživatelů. SpamAssassin se stará o indentifikaci spamu. ClamAV zas odchytává viry pro MS Windows.

Nastavení DNS záznamů

Aby pošta mohla být doručována, je potřeba o tom říci DNS systému. Ve svých DNS záznamech byste měli mít řádek s MX (MailExchange) záznamem:

mail.server.com MX 10 www.server.com

A někde před ním pochopitelně řádek s IP adresou www.server.com:

www.server.com A 11.22.33.44

Má-li pošta fungovat pro víc domén, nastavíme to u ostatních podobně:

www.jinadomena.com A 11.22.33.44
mail.jinadomena.com MX 10 www.jinadomena.com

Všimneme si, že obě domény spojuje stejná IP adresa (zde vymyšlená).

Výchozí situace

V GNU Debian Linux Etch je po instalaci nainstalován jako smtp server program Exim4. Není špatný, jen k němu není, na rozdíl od Postfixu, česká knížka…

Pokud jste při instalaci systému zaškrtli v „task selectu“ volbu „mail server“, pak kromě Eximu máte nainstalovaný POP3 server Qpopper a IMAP server UW-IMAP.

Ale ještě než provedeme změny, je dobré si říci, že smtp servery (Exim i Postfix) jsou po nainstalování nastaveny tak, že fungují. Umí doručovat poštu lokálním uživatelům a rovněž jim odesílat poštu kamkoliv do Internetu. Na druhou stranu nefungují pro „cizí“ počítače, takže se nemusíte bát, že by váš smtp server fungoval na Internetu jako „open-relay“.

Instalujeme potřebný základ – „jednodoménové“ řešení

Postfix – smtp server

Budeme potřebovat balíčky:

apt-get install postfix postfix-mysql postfix-doc

apt-get install postfix postfix-mysql postfix-doc[/bash]Při instalaci dojde automaticky k odinstalování balíčků Exim4. Doporučuji nastavit důraznější formu odinstalace vyčistit (purge), místo výchozí odstranit (remove) – zbavíme se tak nepotřebných konfiguráků.

Po nainstalování funguje Postfix jak už bylo popsáno – pro lokální uživatele jako plnohodnotný smtp server, který umí maily z Internetu přijmout a doručit do schránky. A naopak může být použit k odesílání mailů do Internetu.

Dovecot – imap a pop server

Je obsažen v balíčcích:

apt-get install dovecot-common dovecot-imapd dovecot-pop3d

Při instalaci Dovecotu dojde k případnému odinstalování jiného POP3 a IMAP serveru, pokud jste si je nainstalovali kupř během prvotní instalace systému.

Dovecot není po nainstalování rovnou spuštěn. Budete muset navštívit jeho konfigurační soubor /etc/dovecot/dovecot.conf a nastavit direktivu

protocols imap imaps pop3 pop3s

Povolte jen ty protokoly které hodláte používat k zpřístupnění pošty klientům. Upozorňuji, že pokud budete instalovat webmailový program Squirrelmail, budete potřebovat protokol imap, nebo imaps (stačí nešifrovaný imap).

Po nastavení této direktivy můžete Dovecot spustit:

/etc/init.d/dovecot start

A můžete se přesvědčit, že jede ps -e.

V současnosti v /usr/share/doc/dovecot-common najdete několik textů a taky tu najdete doporučení hledat dokumentaci ve wiki(http://wiki.dovecot.org/).

Hotovo pro jednu doménu

Možná mi to nebudete věřit, ale v tuto chvíli máte nastavený Internetový poštovní server pro jednu doménu.

Každý uživatel, kterého přidáte do systému useradd má automaticky mailovou schránku v /var/mail ve formátu mailbox – to je jeden soubor, do kterého se příchozí maily připojují na konec. Používá-li uživatel přístup k poště přes POP3, pak se mu do jeho počítače stahuje obsah právě tohoto souboru. Používá-li IMAP, pak tento soubor na serveru zůstává a uživatel si je prohlíží svým mailovým klientem, jako by to nebyl jeden soubor ale sada odděleným e-mailových zpráv. IMAP klient umožňuje na serveru zřizovat složky/schránky jako je Odeslaná pošta, Koš ap. Tyto schránky se fyzicky vytvářejí v adresáři mail v jeho domovském adresáři.

Nastavení odesílání z vnitřní sítě

Je-li mailserver určen k odesílání pošty pro počítače ve vnitřní síti, pak je potřeba to povolit v konfiguraci Postfixu v /etc/postfix/main.cf. Tam najdeme direktivu mynetworks a dáme do ní sítě, které hodláme přeposílat:

mynetworks = 127.0.0.0/8, 192.168.1.0/24, 192.168.2.0/24

Po restartu Postfixu

/etc/init.d/postfix restart

už bude odesílání fungovat.

AntiSpam a AntiVirus: Amavis-new, ClamAV, SpamAssassin

Amavisd-new je neutrální spouštěč pro různé antispamové a antivirové programy. Je to takový dispečer, který přebírá maily od Postfixu a předává je připojeným AV a AS programům. Po profiltrování vrátí mail zpátky Postfixu ke konečnému doručení.

V knize o Postfixu se dočtete, že spolupráce Postfixu a Amavisu může mít dvě formy:

  • content-filter
  • smtpd-proxy-filter

My tady popisujeme variantu první content-filter, nicméně je dobré znát obě. Takže stručně: Postfix obdrží požadavek na doručení mailu. Během úvodní konverzace má Postfix možnost přijetí mailu odmítnout, neučiní-li tak, postupuje mail k dalšímu zpracování uvnitř systému.

smtpd-proxy-filter se uplatní už během té úvodní komunikace. Postfix má cca 5 minut na to, aby vzdálenému systému neřekl, jestli mail bere, nebo ne. Během této doby se může zeptat Amavisu, co si o tomto mailu myslí. Slepička běží od selky ke kravičce… Tedy Amavis se zeptá spřažených AV a AS programů a když je to špatňáckej mail, tak může Amavis říct Postfixu, že ten mail nechce a Postfix řekne vzdálenému serveru to samé.

content-filter fungje tak, že Postfix mail prostě přijme – tj. vzdálený systém je uchlácholen, že mail byl doručen, a teprve pak ho předá Amavisu k přežvýkání. Je jasné, že v této variantě už není možno mail odrazit jako nedoručitelný.

smtpd-proxy-filter se tak jeví daleko pružnější. Jeho jedinou nevýhodou je onen časový limit, během něhož musí vzdálenému systému odpovědět zde bere, nebo ne. Kdyby to nestihnul (což se u velmi zatíženého systému může přihodit), bude se vzdálený systém pokoušet doručit mail znovu. A znovu, a znovu..

Není-li váš systém příliš zatížený, bude smtpd-proxy-filter správnou volbou.

Pro zajímavost: Onen pětiminutový limit je využíván při tzv. graylistingu, což je jeden z nástrojů boje se spamem. Vychází se z toho, že spamové servery nečekají na definitivní soud přijímajícího mail serveru a tedy se nepokoušejí o opětovné odeslání mailu, nepřijde-li do těch pěti minut odpověď.

Amavis-new

Nejdříve nainstalujeme balíček

apt-get install amavisd-new

Po nainstalování amavisd-new rovnou pojede.

V tuto chvíli o amavisu postfix neví; zapojíme ho tedy do hry. Budeme editovat /etc/postfix/main.cf a přidáme řádek:

content_filter = amavisd-new:[127.0.0.1]:10024

Ten říká, ze má Postfix na portu 10024 filtr s názvem amavisd-new. Další informace o tomto filtru přidáme do /etc/postfix/master.cf:

amavisd-new unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20

To zajistí, aby Postfix do Amavisu posílal maily. Ještě musíme zajistit cestu zpět. Opět do /etc/postfix/ master.cf přidáme řádky:

127.0.0.1:10025 inet n - n - - smtpd
-o content_filter
-o local_recipient_maps
-o relay_recipient_maps
-o smtpd_restriction_classes
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions
-o smtpd_sender_restrictions
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit
-o smtpd_client_connection_rate_limit
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

To říká Postfixu aby naslouchal na portu 10025. Tam mu totiž Amavis bude profiltrované e-maily vracet. Je to tedy druhý port (vedle 25), kde náš Postfix čeká na poštu. Je důležité, aby naslouchal jen na lokální smyčce, aby nám tudy někdo ftipný nemohl posílat maily z Internetu. Ta spousta paramatrů je opsána z originál dokumentace, ale stručně řečeno vidíme, že jsou vypnuty různé kontorly, protože ty proběhly v první fázi v Postfixu, před předám mailu do Amavisu. Teď už by jejich opakování jen zdržovalo.

Před vyzkoušením je potřeba říct Postfixu, aby si znovu přečetl svoje konfiguráky:

/etc/init.d/postfix force-reload

Podíváme se na syslog:

tail -f /var/log/syslog

Nyní pošleme e-mail. Třeba z konzoly a hned si necháme ukázat, jak to v syslogu běží:

mail uzivatel && tail -f /var/log/syslog

Všimněte si v syslogu, že mezi řádky, které vypsal Postfix je i jeden, který vypsal Amavis. Váš uživatel by měl mít nový e-mail. Tak se na něj podíváme Muttem.

su -c "mutt" uzivatel

Otevřte si ho a klávesou h zapnete zobrazení všech hlaviček. Druhá hlavička Recieved: bude obsahovat informaci, že mail přijal Amavis na portu 10024. Funguje to! Ani to nebolelo.

Kdybyste fakt chtěli mít zážitky, tak můžete amavis stopnout a pak ho pustit v debug režimu:

/etc/init.d/amavis stop<br />/etc/init.d/amavis debug

Amavis pojede a na současné konzoli bude vypisovat vše, co se mu děje.

Teď přidáme filtrování spamu.

ClamAV

Jak už jsme si řekli, antivirový program ClamAV je využíván Amavisem. Amavis si ho najde sám při (re)statru.

Takže si nainstalujeme balíček.

apt-get install clamav-deamon

Automaticky to přibere i balíčky clamavclamavfreshclamclamav-base. Daemon je tím čemu bude Amavis předávat maily ke kontrole, freshclam je démon, který se stará o pravidelné stahování aktualizací virové databáze. Pro testování se nám možná bude hodit balíček clamav-testfiles.

Opět se podíváme do seznamu navrhovaných balíčků, kde ještě najdeme dokumentaci k ClamAV a balíček daemon. První mi připadá užitečný, o druhém si nejsem jistý. Ostatně, je to jen „navrhované“.

Po nainstalování běží ClamAV, včetně freshclamu automaticky. Teď je potřeba říct Amavisu, aby začal kontrolovat zprávy pomocí ClamAV. Upravíme soubor /etc/amavis/conf.d/15-content_filter_ mode, kde odkomentujeme dva řádky, začínající #@bypass_virus_checks_maps.

A restartujeme amavisd:

/etc/init.d/amavis restart

Můžete se též podívat do syslogu, co tam při restartu amavis vypsal.

tail -n100 /var/log/syslog | less

Je to fakt dlouhé. Najdeme si řádek, kde je ANTI-VIRUS code s informací „loaded“. A na konci najdeme řádky říkající, že ClamAV je naš kamarád.

Ještě přidáme uživatele clamav do skupiny amavis (viz. /usr/share/doc/libclamav2/READMDE.Debian.gz)

usermod -a -G amavis clamav

K testování použijeme testovacího „virusa“ ze stránek http://eicar.org (odkaz ke stažení najete vpravo nahoře). Stáhněte ten „eicar.com“ třeba do adresáře /tmp. A pošleme e-mail:

mail uzivatel < /tmp/eicar.com

A podíváme se do syslogu, kde ke konci bude řádek, že Amavis „blocked infected“. Uživateli nic nepřijde, páč mail je v tuto chvíli zahozen. To je výchozí chování v Debianu. Změnit se to dá, viz Další poladění

Čerstvá databáze virů

Je trochu problém. Debian se drží politiky, že ve Stable verzi se neaktualizuje na nové verze balíků, ale jen na opravené verze. To znamená, že víc než rok budete mít ClamAV ve stále stejné verzi. Databáze virů se sice aktualizuje, ale jak to znáte i z jiných antivirových systémů, občas je potřeba aktualizovat program samotný.

Debian udělal archiv, který je jakýmisi kompromisem: http://volatile.debian.org/. Tady se najde software, který ve Stable verzi přeci jen aktualizaci verzí potřebuje. Znalejší lidé by měli pochopit, že se nejedná o nějaký „Backport“ server.

Takže uděláme dvě věci:

  • přidáme odkaz na archiv do /etc/apt/sources.list
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
  • stáhneme a nainstalujeme veřejný klíč arichvu volatile:
    Na stránce http://www.debian.org/volatile/ najdeme odkaz na „Archive signing key“ etch-volatile.asc, a ten stáhneme a uložíme do /etc/apt/. Pak se do tohoto adresáře přepneme a přidáme klíč na klíčenku důvěryhodných zdrojů:
cd /etc/apt
gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --import etch-volatile.asc

aktualizujeme zdroje

sudo apt-get update

SpamAssassin

Nainstalujeme balíček spamassasin, k němu se automaticky přidá spamc a jak uvidíme před spuštěním instalace, i spousta dalších balíčků. Opět nakoukneme do navrhovaných balíčků. Přidat se určitě hodí razor a dcc-client.

SpamAssassin po nainstalování nejede. Je potřeba v /etc/default/spamassassin nastavit ENABLED na “1“ a SpamAssassin uvést do chodu:

/etc/init.d/spamassassin start

Stejně jako u ClamAV bude potřeba odkomentovat řádky v /etc/amavis/conf.d/15-content_ filter_mode, tentokrát ty, co začínají @bypass_spam_checks_maps. A restartovat Amavis:

/etc/init.d/amavis restart

A necháme si ukázat posledních hafo řádků v syslogu, kde budeme hledat, že ANTI-SPAM code byl „loaded“.

tail /var/log/syslog

sa-update je utilita, která stahuje aktualizace spamassassinní databáze do /var/lib/spamassassin. Musí se spouštět ručně a spouští ji root. Ale lidé znalí crontab -e si s tím poradí.

Ve výchozím nastavní není SpamAssassin právě ukecaný. Vlastně jen Amavis přidá do mailu, který je spam hlavičku:

Precedence: junk

To na filtrování není právě nejvíce, že? Takže do /etc/spamassassin/local.cf přidáme na konec řádky:

rewrite_header Subject {Spam?}
add_header all Flag _YESNOCAPS_
add_header spam Status _YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTS_ autolearn=_AUTOLEARN_
version=_VERSION_
add_header spam Level _STARS(s)_

které do všech e-mailů (header all) přidají řádek s hlavičkou X-Spam-Flag (YES/NO) a do spamových mailů další dvě hlavičky. Ta „Level“ obsahuje tolik znaků „s“, kolik dostal e-mail „spamových“ bodů. To se dobře používá v poštovních klientech pro filtrování pošty. Např. při pěti „s“ přesunout do schránky „spam“, při patnácti „s“ rovnou smazat.

Hlavička spamových mailů (těch co mají aspoň 5 bodů) je navíc obohacena o text {Spam?}.

No a čekáte nějaký testovací mailík, že? Takže teď to bude víc hardcore. Nejprve zjistíme, že v /usr/ share/doc/spamassassin/examples je soubor sample-spam.txt. V něm se dočteme, že on je opravdu tím testovacím mailem, ale že ho musíte poslat odněkud jinud než z lokálního stroje. Takže, jste-li na server připojeni přes ssh z domova, pošlete to z domova. Jste-li u serveru osboně, tak se přes ssh připojte na jiný stroj a pošlete to z něj. Použijeme program telnet (hvězdičkou odsadím řádky, které se vypisují samy).

telnet nas.server.com 25
*Trying 81.2.210.31...
*Connected to mail.no-frost.cz.
*Escape character is '^]'.
*220 nas.server.com ESMTP Postfix (Debian/GNU)
ehlo druhej.server.com
*250-nas.server.com
...
*250 DSN
mail from: ja@tady.com
*250 2.1.0 Ok
rcpt to: nekdo@nas.server.com
*250 2.1.5 Ok
data
*354 End data with <CR><LF>.<CR><LF>
--- následující řádky jsou zkopírovány z testovacího souboru sample-spam.txt ----
Subject: Test spam mail (GTUBE)
Message-ID: <GTUBE1.1010101@example.net>
Date: Wed, 23 Jul 2003 23:30:00 +0200
From: Sender <sender@example.net>
To: Recipient <recipient@example.net>
Precedence: junk
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

This is the GTUBE, the
Generic
Test for
Unsolicited
Bulk
Email

If your spam filter supports it, the GTUBE provides a test by which you
can verify that the filter is installed correctly and is detecting incoming
spam. You can send yourself a test mail containing the following string of
characters (in upper case and with no white spaces and line breaks):
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
You should send this test mail from an account outside of your network.
.
--- konec testovacího souboru sample-spam.txt ----
*250 2.0.0 Ok: queued as 7A9861003A8A5
quit
*221 2.0.0 Bye
*Connection closed by foreign host.

Nahlédnutím do syslogu zjistíme, že zpráva nebyla doručena, ale „BOUNCE“. To je podle mě špatně. O zahazování pošty má rozhodovat adresát. Takže bude potřeba Další poladění. Funguje i jednoduché testování, které funguje i přímo na lokále (serveru):

spamc < sample-spam.txt | less

Tady ovšem nejde spam poštovním systémem, jen testujeme, co s ním provede spamassassin.

Další poladění

Konfigurace amavisu je v adresáři /etc/amavis/conf.d/. Zajímavé čtení (neupravovat!) je v souboru 20-debian-default. Změny si dáme do 50-user. Chceme-li, aby Amavis všechno doručil, nic nezahazoval, nic neodrážel, dáme sem:

$final_virus_destiny = D_PASS;
$final_banned_destiny = D_PASS;
$final_spam_destiny = D_PASS;
$final_bad_header_destiny = D_PASS;

Reloadneme Amavis:

/etc/init.d/amavis restart

Spamové zprávy jsou nyní doručeny a mají přidanou hlavičku:

Precedence: junk

Zprávy obsahující viry jsou rovněž doručeny (což možná stojí za další poladění) a mají přidanou hlavičku:

X-Amavis-Alert: INFECTED, message contains virus: jméno viru

Další parametry mohou změnit „vážnost“ spamu:

$sa_tag_level_deflt = 0;
$sa_tag2_level_deflt = 5;
$sa_kill_level_deflt = 15;

Tag přidává X-Spam hlavičky do mailu. Tag2 přidá i další. Kill maily maže, nebo doručuje podle nastavení $final_spam_destiny nastaveného výše. Číslo je počet „spamových bodů“, které mailu přidělil SpamAssassin.

Více domén, virtuální domény

Úvodem, shrnutí předchozího

Pokud postupujete od začátku až sem, máte nyní jednodoménový server, který umí filtrovat spam a viry. V čem je vícedoménové řešení odlišné? No, hodně. Linuxový systém má svoje jméno z něhož je odvozeno i jméno domény. Všechny serverové služby tohle umí přečíst a pracují s tím ve svém výchozím nastavení. Proto jsme do teď zas tak moc pracovat nemuseli. Vícedoménové řešení představuje domény jako virtuální. Skutečná doména může být jen jedna. Vícedoménové řešení tedy přidává zcela novou dimenzi. Zatímco u jednodoménového řešení má každý uživatel přidaný do systému automaticky schránku, u vícedoménového to tak jednoduché není. Virtuální domény si žádají virtuální uživatele. Jenže kam s nimi? Do databáze! Nabízí se především MySQL, či LDAP. My zůstaneme u MySQL. V MySQL databázi budeme mít tabulky:

  • s virtuálními uživateli, jejich hesly (šifrovaná MD5) a umístěním adresářů na poštu
  • s aliasy uživatelů
  • s virtuálními doménami
  • s administrátory

Databázi budeme spravovovat přes webové rozhraní programu Postfix Admin, což je vážně pohoda. Naší databázi bude rozumět jak Postfix, tak Dovecot. Co víc si přát? Dejme se do toho

Instalace MySQL

Dá se předpokládat, že MySQL databázi už máte nainstalovanou, pokud ne, vyhoví nám MySQL ve verzi 4.1 a vyšší. Chcete-li mít v MySQL jako výchozí kódování znaků UTF-8 a třídit česky, dejte do /etc/mysql/conf.d/ soubor (název libovolný) s tímto obsahem:

[mysqld]
language = /usr/share/mysql/czech
character_set_server = utf8
collation_server = utf8_czech_ci

Squirrelmail

Budeme instalovat balíčky:

apt-get install squirrelmail squirrelmail-locales

Počítáte-li s exotickými kódováními v e-mailech, dejte ještě balíček

squirrelmail-decode

Postfix admin (pfadmin)

Není součástí Debianího archivu, takže si ho stáhneme ze SourceForge (http://sourceforge.net/projects/ postfixadmin/). Stažený soubor je zagzipovaný tar archiv. Rozbalíme ho do /var/www/postfixadmin. Nyní budeme věnovat pozornost dvěma konfiguračním souborům: config.inc.php a DATABASE_ MYSQL.TXT. Samozřejmě se nedopustíme chyby přečtením INSTALL.TXT.

config.inc.php

Vyrobíme zkopírováním config.inc.php.sample:

cp config.inc.php.sample config.inc.php

A pak si ho trochu upravíme.

  • Můžeme změnit default_language na “cs
  • database_type bude “mysqli“ (ano, na konci je i).
  • Bude vhodné si změnit heslo pro přístup do databáze database_password.
  • admin_email – třeba postmaster@skutecna.cz
  • generate_passwords bych nastavil na “NO“. Automaticky generovaná hesla stejně nikdo nemá rád.
  • default_aliases – tomu se dá rozumět.
  • kvóty; hlavně maxquota – výchozí hodnta 10MB se mi nezdá moc. Já přidal nulu, takže 100.
  • quota – vynucení kvóty změníme na YES, ale třeba až bude všechno fungovat. Když „NO“, tak bude mít uživatel informaci o tom, kolik prostoru zabírá, ale nebude omezován.
  • logging – bych nechal na „YES“. Log se zapisuje do SQL databáze a obsahuje informace o přidaných/změněných uživatelích, doménách, aliasech… Tedy užitečné informace.
  • footer_text se objeví dole na každé stránce a dá se na něj kliknout. Dostanete se pak na stránku na

adrese v dalším parametru footer_link. Tam bych dal odkaz na postfixadmin – login.php. Bude-li pfadmin na vlastní doméně třetí úrovně, pak by to mohlo vypadat takto: https://pfadmin.skutecna.cz:4440/login.php. Ostatní věci v tomto konfiguráku si pročtěte taky. Já jen chtěl upozornit na ty podstatnější.

generování sql databáze

DATABASE_MYSQL.TXT je další soubor, který nás bude extrémně zajímat. Hned první „INSERT“ vytváří uživatelele pro přístup do naší SQL databáze. Ta se bude jmenovat „postfix“, ale heslo nenecháme „postfix“, ale nastavíme si tu jiné. O pár řádek níž je další „INSERT“ pro uživatele „postfixadmin“. Tomu upravíme heslo na stejné, jako jsme dali do database_password v config.inc.php výše. A pak už jen spustíme tvorbu databáze:

mysql -u root [-p] < DATABASE_MYSQL.TXT

Nastavení virtuální domény pro pfadmina

Přečtěte si Linux jako server/Etch/web. Tady to jen velmi stručně ukážu.

Pfadmin bude naslouchat na portu 4440 a bude přístupný pouze po šifrované lince (ssl). Port si samozřejmě můžete vybrat jiný.

  • Budeme muset vygenerovat klíč/certifikát pro doménu pfadmin.skutecna.cz a uložit do adresáře „ssl“ v adresáři /etc/apache2.
  • Uděláme konfigurák pro doménu v sites-available s názvem „pfadm.skutecna.cz“.
Listen 4440
NameVirtualHost *:4440
<VirtualHost *:4440>
DocumentRoot /var/www/postfixadmin
ServerName pfadm.no-frost.cz
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/pfadm.skutecna.cz.crt
SSLCertificateKeyFile /etc/apache2/ssl/pfadm.skutecna.cz.key
</VirtualHost>
  • Zadáme příkaz, který nám doménu přidá do sites-enabled:
a2ensite pfadm.skutecna.cz

No a teď když si pustíme internetový prohlížeč a zadáme do něj https://pfadmin.skutecna.cz:4440/, dostaneme se na stránku s úvodními informacemi a s klik-odkazem na „setup“, který nám ověří, že všechno je jak má být. Další klik nás dostane na přihlašovací stránku.

Postfix

Po nainstalování umí Postfix doručovat do schránek typu mailbox uživatelům, kteří existují v systému. Samozřejmě nějaká další nastavení neuškodí.

Upřesněme si dva typy uživatelů:

lokální

  • ti mají v systému zřízen účet (passwd, shadow)

virtuální

  • ti v systému neexistují. Účet mají v SQL databázi.

My budeme chtít, aby poštu dostávali jak lokální uživatelé, tak i virtuální uživatelé. Budeme tedy muset říct Postfixu, které domény má považovat za „vlastní“ a které za virtuální.

Nejlepší bude, když se podíváme do hlavního konfiguračního souboru /etc/postfix/main.cf. Všimněte si hlavně částí LOCAL a VIRTUAL:

# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
# --- LOCAL -------------------------------------------------
# Zde uvádíme domény, které nemají být považovány za virtuální.
# Doručuje se uživatelům, kteří existují v /etc/passwd (tedy v systému)
myhostname = mail.skutecna.cz
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination =
skutecna.cz,
mail.skutecna.cz,
localhost
# --- VIRTUAL -------------------------------------------------
virtual_mailbox_base = /var/vmail
virtual_uid_maps = static:333
virtual_gid_maps = static:8
virtual_mailbox_domains = mysql:/etc/postfix/sql/virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql/virtual_mailbox_recipients.cf
virtual_alias_maps = mysql:/etc/postfix/sql/virtual_alias_maps.cf
virtual_trasnport = dovecot
# --- ANTI-SPAM-VIRUS -----------------------------------------
#content_filter = amavisd-new:[127.0.0.1]:10024

Z konfiguráku nás teď budou zajímat hlavně části LOCAL a VIRTUAL.

Lokální domény/uživatelé

V části LOCAL uvádíme domény, které mají lokální uživatele. Tedy, co přijde na tuto doménu, bude doručeno uživateli, který má v systému účet (/etc/passwd). Schránky těchto uživatelů jsou v souborech /var/mail/uživatel. Doménalocalhost je určena pro lokání doručování – např. když chce nějaký systémový program napsat rootovi, nebo když je uživatel přihlášený na serveru (třeba přes ssh) a napíše jinému lokálnímu uživateli mail (třeba pomocí příkazu mail).

Virtuální domény/uživatelé

Část VIRTUAL popisuje konfiguraci virtuálních domén a uživatelů – o nich systém nic neví (jsou uloženi v SQL databázi). Je jasné, že pokud budeme chtít jen lokální uživatele, část virtual se nás netýká a nepoužijeme ji.

Všimněme si ještě řádku virtual_trasnport = dovecot. Ten odkazuje do dalšího konfiguračního souboru Postfixu – master.cf a znamená, že o doručování do schránek se bude starat Dovecot, který to taky umí. Má to tu výhodu, že schránku bude vytvářet stejný program, který z ní pak bude číst.

Takže do /etc/postfix/master.cf přidáme někam na konec řádky:

dovecot unix - n n - - pipe
flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -d ${recipient}

Další pozoruhodnou věcí je adresář /var/vmail, kde bude hnízdečko pro virtuální domény a jejich uživatele. Taky vytvoříme uživatele vmail‚, který bude vlastníkem tohoto adresáře a adresářů domén:

useradd -g mail -u 333 vmail
mkdir /var/vmail
chown vmail.mail /var/vmail
chmod 770 /var/vmail

Jestli vás zajímá, jak se budou přidávat virtuální domény, buďte trpěliví – píše se o tom dále. Hezky pohromadě s ostatními věcmi.

Ale zpátky ke konfiguráku. Vidíme tam direktivy virtual-uid-maps a virtual-gid-maps se záhadnými čísly. To jsou čísla uživatele vmail – které jsme mu právě přidělili („333“) a skupiny mail, která ve vašem systému nemusí být právě „8“. Tak si to v /etc/group zjistěte a v main.cf případně upravte.

Ještě bude dobré zkontrolovat, zda master.cf obsahuje řádek pro doručování do virtuálních domén (měl by tam být):

virtual unix - n n - - virtual

Odesílání pošty

V našem příkladu je vidět, že prostřednictvím našeho serveru smí poštu odesílat pouze lokální klienti (tedy hlavně systémové programy). Potřebujete-li využít tento server i pro odesílání pošty i z jiných počítačů, pak pro klienty, kteří jsou ve vaší vnitřní síti to umožníte přidáním jejich sítě do parametru mynetworks. Například: <file>mynetworks = 127.0.0.0/8, 192.168.4.0/24, 192.168.5.0/24<file>

Potřebujete-li nastavit odesílání pro klienty, kteří jsou mimo vaši lokální síť, pak budete muset sáhnout k smtp autentifikaci a to vás lituju. Hledejte v dokumentaci k Postfixu.

Další části konfiguráku main.cf

Jak vidíme, je tu ještě část týkající se TLS. Poštovní klienti/servery, které nám budou chtít poslat poštu šifrovaně tak mohou učinit. Tato část konf. souboru tu je vytvořena defaultně. Stejně tak certifikáty (s krásným názvem „hadí maz“) se vygenerují automaticky při instalaci Postfixu. TLS prostě jede samo.Ostatní části snad dovedete přečíst sami. Komentář k nim nemám.

Slovní shrnutí

Naše pošta tedy bude běhat na serveru s názvem mail.skutecna.cz. Tento název uvedeme i souboru /etc/mailname. Je to doménové jméno, podstatné pro poštovní systém. Z něj je odvozeno mj. $mydomain (to co zbyde za první tečkou – tedy “skutecna.cz“).

Postfix poštu přijímá od klientů, nebo jiných smtp serverů a předává jí buď dovecotímu LDA k lokálnímu doručení, nebo jí posílá dál do Internetu (je-li příjemcem ne-naše doména). Odesílá dál samozřejmě jen v případě že je odesílatel v naší lokální síti. Jinak by to byla žádost o zápis do OpenRelay Black Listu (RBL) a s poštou utrum.

Dovecot

Dovecot je nastavený tak, aby se k němu dalo přihlásit jen po šifrované lince. Váš poštovní program tak musí zvládat buď spojení pomocí SSL (na portu 993), nebo TLS (na portu 143). Nešifrované spojení je umožněno pouze lokálním klientům, což je v našem případe webmail Squirrelmail. Důvod je jasný – aby nešlo na síti odposlouchávat zasílaná hesla. Ta totiž putují v plaintextu.

Zdroje informací

http://cs.wikibooks.org/wiki/Linux_jako_server/Etch/Po%C5%A1ta

  1. Bez komentářů.
  1. Žádné zpětné odkazy