Linux jako server/Etch/Pošta: Porovnání verzí

Smazaný obsah Přidaný obsah
Bez shrnutí editace
HTML -> wikitext; - nadbytečná zalamování řádků; kosmetické úpravy
Řádek 17:
* Webmail Squirrelmail - [http://www.squirrelmail.org/ homepage]
 
Pro Postfix admina a pro Squirrelmail budeme potřebovat i web server Apache2 a PHP s podporou MySQL. Jejich instalace je popsána v návodu [[Linux_jako_server/Etch/Web]].
a PHP s podporou MySQL. Jejich instalace je popsána v návodu [[Linux_jako_server/Etch/Web]].
 
== Jak to bude fungovat dohromady ==
 
Nejhezčí by bylo udělat takový ten obrázek s obdélníčkama a šipečkama. Ale to bych se do toho stejně zamotal. Takže začněme hezky od prostředka:
stejně zamotal. Takže začněme hezky od prostředka:
 
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ě).
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 Postfix 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.
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 [[w:Internet_Message_Access_Protocol|IMAP]] a [[w:Post_Office_Protocol|POP3]] server. Takže poštovní klienti uživatelů budou komunikovat s ním.
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. Je to príma, když se do pošty dostanete i z internet kafé někde v Chile, nebo kam jezdíte na dovolenou.
fungovat i webmail Squirrelmail. Je to príma, když se do pošty dostanete
i z internet kafé někde v Chile, nebo kam jezdíte na dovolenou.
 
Správa virtuálních domén a uživatelů je svěřena programu PostFix Admin, který má příjemné webové rozhraní. Má dva stupně administrátorů: Superadmina, který je bohem (smí vytvářet normální adminy a domény) a normální adminy, kteří mají svěřené domény v nichž mohou spravovat uživatelské účty. PFadmin taky umožňuje přihlášení normálním smrtelníkům (uživatelům), kteří si tu mohou třeba změnit heslo, nebo přidat aliasy.
Správa virtuálních domén a uživatelů je svěřena programu PostFix Admin, který
má příjemné webové rozhraní. Má dva stupně administrátorů: Superadmina, který
je bohem (smí vytvářet normální adminy a domény) a normální adminy, kteří mají
svěřené domény v nichž mohou spravovat uživatelské účty. PFadmin taky
umožňuje přihlášení normálním smrtelníkům (uživatelům), kteří si tu mohou
třeba změnit heslo, nebo přidat aliasy.
 
No a někde v pozadí si brumlají servery MySQL, Spamassasin a ClamAV. MySQL je úložištěm virtuálních domén a virtuálních uživatelů. SpamAssassin se stará o indentifikaci spamu. ClamAV zas odchytává oblíbené utility operačního systému MS Windows.:o)
je úložištěm virtuálních domén a virtuálních uživatelů. SpamAssassin se
stará o indentifikaci spamu. ClamAV zas odchytává oblíbené utility operačního
systému MS Windows.:o)
 
Řekněme si ještě, že Postfix/Dovecot/PostFix-admin dovedou nastavovat a hlídat uživatelům kvóty - kolik že prostoru jejich e-maily na HDD zabírají. Nastavení v PFadminu je brnkačka. Pozdravujte vytočené uživatele! :o)
uživatelům kvóty - kolik že prostoru jejich e-maily na HDD zabírají. Nastavení
v PFadminu je brnkačka. Pozdravujte vytočené uživatele! :o)
 
A z venku to vypadá tak jednoduše...:-P
Řádek 65 ⟶ 45:
== 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:
 
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
 
Řádek 82 ⟶ 64:
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.
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".
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í ==
Řádek 99 ⟶ 77:
* postfix-doc
 
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ů.
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.
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 ===
Řádek 114 ⟶ 88:
* 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.
 
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 <code>/etc/dovecot/dovecot.conf</code> a nastavit direktivu
 
Dovecot není po nainstalování rovnou spuštěn. Budete muset navštívit jeho konfigurační soubor
<code>/etc/dovecot/dovecot.conf</code> 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,
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).
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 <code>ps -e</code>.
 
<i>''Sorry, ale tento odstavec je trochu mlžení: Jelikož kombinace přístupu přes IMAP a POP do jedné schránky není právě ideální, možná budete chtít balíček -pop3d vynechat. Na druhou stranu není na škodu nechat, ať si uživatel vybere, co chce. Nicméně naše řešení vychází z uspořádání pošty v Maildiru, tudíž použijeme imap.''
budete chtít balíček -pop3d vynechat. Na druhou stranu není na škodu nechat, ať si uživatel
vybere, co chce. Nicméně naše řešení vychází z uspořádání pošty v Maildiru, tudíž použijeme
imap.</i>
 
Dovecot je nyní ve fázi Release Candidate. Je zcela v pohodě vychytaný. Důvodem, proč stále nebyl vydán jako finální verze 1.0 je "pouze" nedostatečná dokumentace. V současnosti v /usr/share/doc/dovecot-common najdete několik textů, které jsou poněkud zatuchlé a taky tu najdete doporučení hledat dokumentaci ve [http://wiki.dovecot.org/ wiki]. Ale i taky to chce brát trochu s rezervou. Nechcete s dokumentací pomoct vy?
Dovecot je nyní ve fázi Release Candidate. Je zcela v pohodě vychytaný. Důvodem,
proč stále nebyl vydán jako finální verze 1.0 je "pouze" nedostatečná dokumentace.
V současnosti v /usr/share/doc/dovecot-common najdete několik textů, které
jsou poněkud zatuchlé a taky tu najdete doporučení hledat dokumentaci ve
[http://wiki.dovecot.org/ wiki]. Ale i taky to chce brát trochu s rezervou. Nechcete
s dokumentací pomoct vy?
 
=== 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.
pro jednu doménu.
 
Každý uživatel, kterého přidáte do systému ''useradd'' má automaticky mailovou schránku v <code>/var/mail</code> 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.
Každý uživatel, kterého přidáte do systému ''useradd'' má automaticky mailovou schránku
v <code>/var/mail</code> 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 <code>/etc/postfix/main.cf</code>. Tam najdeme direktivu ''mynetworks'' a dáme do ní sítě, které hodláme přeposílat:
 
potřeba to povolit v konfiguraci Postfixu v <code>/etc/postfix/main.cf</code>.
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í.
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.
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é.
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ý.
ž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... Chápete? :o)
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... Chápete? :o)
 
Není-li váš systém příliš zatížený, bude ''smtpd-proxy-filter'' správnou volbou.
 
<i>''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ěď.''
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ěď.</i>
 
=== Amavis-new ===
 
Nejdříve nainstalujeme balíček <code>amavisd-new</code>. V Aptitude se můžeme podívat do seznamu navrhovaných balíčků a přidat i dosud nenainstalovaná rozbalovadla na různé archivy (rar, lha, cab,...). Po nainstalování amavisd-new rovnou pojede.
balíčků a přidat i dosud nenainstalovaná rozbalovadla na různé archivy (rar, lha, cab,...).
Po nainstalování amavisd-new rovnou pojede.
 
V tuto chvíli o amavisu postfix neví; zapojíme ho tedy do hry. Budeme editovat <code>/etc/postfix/main.cf</code> a přidáme řádek:
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 <code>/etc/postfix/master.cf</code>:
filtru přidáme do <code>/etc/postfix/master.cf</code>:
 
<pre>
Řádek 221 ⟶ 161:
</pre>
 
To zajistí, aby Postfix do Amavisu posílal maily. Ještě musíme zajistit cestu zpět. Opět do <code>/etc/postfix/master.cf</code> přidáme řádky:
 
<code>/etc/postfix/master.cf</code> přidáme řádky:
<pre>
127.0.0.1:10025 inet n - n - - smtpd
Řádek 244 ⟶ 184:
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
</pre>
 
To říká Postfixu aby naslouchal na portu 10025. Tam mu totiž Amavis bude profiltrované e-maily vracet.
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.
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:
Řádek 263 ⟶ 199:
# 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.
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.
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:
Řádek 277 ⟶ 211:
/etc/init.d/amavis debug
</pre>
 
Amavis pojede a na současné konzoli bude vypisovat vše, co se mu děje.
 
Řádek 283 ⟶ 218:
=== ClamAV ===
 
Jak už jsme si řekli, antivirový program ClamAV je využíván Amavisem. Amavis si ho najde sám při (re)statru.
sám při (re)statru.
 
Takže si nainstalujeme balíček <code>clamav-daemon</code>. Automaticky to přibere i balíčky <code>clamav</code>, <code>clamav-freshclam</code>, <code>clamav-base</code>. 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 <code>clamav-testfiles</code>.
<code>clamav</code>, <code>clamav-freshclam</code>, <code>clamav-base</code>. 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 <code>clamav-testfiles</code>.
 
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é".
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 <code>/etc/amavis/conf.d/15-content_filter_mode</code>, kde odkomentářujeme dva řádky, začínající <code>#@bypass_virus_checks_maps</code>.
aby začal kontrolovat zprávy pomocí ClamAV. Upravíme soubor
<code>/etc/amavis/conf.d/15-content_filter_mode</code>, kde odkomentářujeme dva řádky,
začínající <code>#@bypass_virus_checks_maps</code>.
 
A restartujeme amavisd:
Řádek 306 ⟶ 231:
 
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ý :o) Najdeme si řádek, kde je <code>ANTI-VIRUS code</code> s informací
Je to fakt dlouhý :o) Najdeme si řádek, kde je <code>ANTI-VIRUS code</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)
Řádek 314 ⟶ 240:
# 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:
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í|Další poladění]]
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í|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ý.
 
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ší
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:
Řádek 343 ⟶ 262:
=== SpamAssassin ===
 
Nainstalujeme balíček <code>spamassasin</code>, k němu se automaticky přidá <code>spamc</code> 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í <code>razor</code> a <code>dcc-client</code>.
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í <code>razor</code> a <code>dcc-client</code>.
 
SpamAssassin po nainstalování '''ne'''jede (možná si té hlášky v Aptitude všimnete;o). Je potřeba v <code>/etc/default/spamassassin</code> nastavit <code>ENABLED</code> na "1" a SpamAssassin uvést do chodu:
v <code>/etc/default/spamassassin</code> nastavit <code>ENABLED</code> na "1" a SpamAssassin
uvést do chodu:
 
# /etc/init.d/spamassassin start
 
a (toho už se nezbavím):
 
# tail /var/log/syslog
 
Jede? Jesli je tam jen jeden řádek, byli jste moc rychlí. Dejte ten "tail" tak za půl minuty znova.
 
Stejně jako u ClamAV bude potřeba odkomentářovat řádky v <code>/etc/amavis/conf.d/15-content_filter_mode</code>, tentokrát ty, co začínají <code>@bypass_spam_checks_maps</code>. A restartovat Amavis:
tentokrát ty, co začínají <code>@bypass_spam_checks_maps</code>. A restartovat Amavis:
 
# /etc/init.d/amavis restart
A opět si necháme ukázat posledních hafo řádků v syslogu, kde budeme hledat, že <code>ANTI-SPAM code</code>
byl "loaded".
 
A opět si necháme ukázat posledních hafo řádků v syslogu, kde budeme hledat, že <code>ANTI-SPAM code</code> byl "loaded".
'''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. Ručně je to prý proto, že je to docela nové.
'''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. Ručně je to prý proto, že je to docela nové. Ale lidé znalí <code>crontab&nbsp;-e</code> 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:
 
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 <code>/etc/spamassassin/local.cf</code>
To na filtrování není právě nejvíce, že? Takže do <code>/etc/spamassassin/local.cf</code> přidáme na konec řádky:
 
<pre>
rewrite_header Subject {Spam?}
Řádek 378 ⟶ 294:
add_header spam Level _STARS(s)_
</pre>
 
které do všech e-mailů (header all) přidají řádek s hlavičkou X-Spam-Flag (YES/NO) a do
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.
"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 <code>/usr/share/doc/spamassassin/examples</code> je soubor <code>sample-spam.txt</code>. 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).
No a čekáte nějaký testovací mailík, že? Takže teď to bude víc hardcore. Nejprve zjistíme,
že v <code>/usr/share/doc/spamassassin/examples</code> je soubor <code>sample-spam.txt</code>.
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).
 
<pre>
Řádek 442 ⟶ 351:
</pre>
 
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í|Další poladění]].
špatně. O zahazování pošty má rozhodovat adresát. Takže bude potřeba [[#Další poladění|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 <code>/etc/amavis/conf.d/</code>. Zajímavé čtení (neupravovat!) je v souboru <code>20-debian-default</code>. Změny si dáme do <code>50-user</code>. Chceme-li, aby Amavis všechno doručil, nic nezahazoval, nic neodrážel, dáme sem:
Konfigurace amavisu je
v adresáři <code>/etc/amavis/conf.d/</code>. Zajímavé čtení (neupravovat!) je v souboru
<code>20-debian-default</code>. Změny si dáme do <code>50-user</code>. Chceme-li, aby
Amavis všechno doručil, nic nezahazoval, nic neodrážel, dáme sem:
 
<pre>
Řádek 462 ⟶ 369:
$final_bad_header_destiny = D_PASS;
</pre>
 
Reloadneme Amavis:
 
# /etc/init.d/amavis restart
 
A juchú! 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:
 
<pre>
$sa_tag_level_deflt = 0;
Řádek 476 ⟶ 389:
$sa_kill_level_deflt = 15;
</pre>
 
Tag přidává X-Spam hlavičky do mailu. Tag2 přidá i další. Kill maily maže, nebo doručuje podle nastavení
Tag přidává X-Spam hlavičky do mailu. Tag2 přidá i další. Kill maily maže, nebo doručuje podle nastavení <code>$final_spam_destiny</code> nastaveného výše. Číslo je počet "spamových bodů", které mailu přidělil SpamAssassin.
SpamAssassin.
 
== Více domén, virtuální domény ==
Řádek 484 ⟶ 396:
=== Úvodem, shrnutí předchozího ===
 
Pokud postupujete od začátku až sem, máte nyní jednodoménový server, který umí filtrovat spam a viry.
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.
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.
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í muže! A ženy. A děti. Jenže kam s nimi? Do databáze! A do jaké? No, nabízí se především SQL, či LDAP. LDAP je (jak říká kamarád) řešení "overkill", takže zůstaneme u SQL.
u vícedoménového to tak jednoduché není. Virtuální domény si žádají virtuální muže! A ženy.
A děti. Jenže kam s nimi? Do databáze! A do jaké? No, nabízí se především SQL, či LDAP.
LDAP je (jak říká kamarád) řešení "overkill", takže zůstaneme u SQL.
 
Programy, které použijeme, umějí pracovat jak s MySQL, tak s PostgreSQL. Ačkoli tu popisujeme řešení s MySQL, řešení s PostreSQL je tak podobné, že by bylo zbytečné ho tu rozpitvávat.
řešení s MySQL, řešení s PostreSQL je tak podobné, že by bylo zbytečné ho tu rozpitvávat.
 
V SQL databázi budeme mít tabulky:
Řádek 507 ⟶ 411:
* 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
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 SQL databázi už máte nainstalovanou, pokud ne, vyhoví nám MySQL ve verzi 4.1 a vyšší.
 
MySQL ve verzi 4.1 a vyšší.
Pokud máte raději PostgreSQL, tak vás snad potěší, že všechny použité programy umí i tuto databázi. Pokud tuto variantu vyzkoušíte, bude skvělé, když tento návod o případné ochylky obohatíte.
 
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:
Pokud máte raději PostgreSQL, tak vás snad potěší, že všechny použité programy umí
i tuto databázi. Pokud tuto variantu vyzkoušíte, bude skvělé, když tento návod o
případné ochylky obohatíte.
 
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
Řádek 541 ⟶ 440:
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: <code>config.inc.php</code> a <code>DATABASE_MYSQL.TXT</code>. Samozřejmě se nedopustíme chyby přečtením <code>INSTALL.TXT</code>.
<code>DATABASE_MYSQL.TXT</code>. Samozřejmě se nedopustíme chyby přečtením <code>INSTALL.TXT</code>.
 
==== 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 <code>default_language</code> na "cs"
Řádek 566 ⟶ 466:
<code>DATABASE_MYSQL.TXT</code> 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é.
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 <code>database_password</code> v <code>config.inc.php</code> výše.
jako jsme dali do <code>database_password</code> v <code>config.inc.php</code> výše.
 
A pak už jen spustíme tvorbu databáze:
 
# mysql -u root [-p] < DATABASE_MYSQL.TXT
 
Řádek 579 ⟶ 478:
Přečtěte si [[../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ý.
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.
Řádek 595 ⟶ 493:
* 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 <nowiki>https://pfadmin.skutecna.cz:4440/,</nowiki> 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.
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í.
v systému. Samozřejmě nějaká další nastavení neuškodí.
 
'''Upřesněme si dva typy uživatelů:'''
Řádek 608 ⟶ 503:
; 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í.
 
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 '''''main.cf''''', který je v adresáři /etc/postfix. Všimněte si hlavně částí LOCAL a VIRTUAL:
 
Nejlepší bude, když se podíváme do hlavního konfiguračního souboru '''''main.cf''''', který je v
adresáři /etc/postfix. Všimněte si hlavně částí LOCAL a VIRTUAL:
<pre>
# Debian specific: Specifying a file name will cause the first
Řádek 670 ⟶ 564:
==== 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éna ''localhost'' 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).
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éna ''localhost'' 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.
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 <code>virtual_trasnport = dovecot</code>. 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.
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:
 
<pre>
dovecot unix - n n - - pipe
Řádek 695 ⟶ 579:
</pre>
 
Další pozoruhodnou věcí je adresář <code>/var/vmail</code>, 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:
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
Řádek 704 ⟶ 586:
# 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.
- píše se o tom dále. Hezky pohromadě s ostatními věcmi.
 
Ale zpátky ke konfiguráku. Vidíme tam direktivy <code>virtual-uid-maps</code> a <code>virtual-gid-maps</code> 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 <code>/etc/group</code> zjistěte a v ''main.cf'' případně upravte.
 
a <code>virtual-gid-maps</code> se záhadnými čísly. To jsou čísla uživatele
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):
''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 <code>/etc/group</code> 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 <code>mynetworks</code>. Například:
 
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
<code>mynetworks</code>. Například:
<pre>
mynetworks =
Řádek 731 ⟶ 605:
</pre>
 
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.
 
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.
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.
Řádek 745 ⟶ 615:
==== 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").
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.
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.
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.
 
 
Já chci pokračování ... :-) HATEX
 
[[Kategorie:Linux|Pošta]]