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 clamav
, clamavfreshclam
, clamav-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í
/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
- 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
/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
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 jei
).- Bude vhodné si změnit heslo pro přístup do databáze
database_password
. admin_email
– třebapostmaster@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í
Nejnovější komentáře