Portál AbcLinuxu, 17. května 2024 09:17

Mailserver s odvirováním pošty

11. 12. 2003 | Dušan Hokův
Články - Mailserver s odvirováním pošty  

V současné době se nejvíce virů šíří elektronickou poštou. Před tím, než zavirovaný e-mail dorazí k potenciální oběti, lze jej zastavit mnoha způsoby. Tou nejhorší variantou je antivirový software pouze na pracovní stanici uživatele.

Zde se spoléhá na kázeň uživatele a pravidelné aktualizace antiviru. Mnohem účinnější obranou proti virům z e-mailů je antivirová kontrola přímo na poštovním serveru. A tomu bude věnován tento článek.

Existuje samozřejmě mnoho komerčních řešení od různých výrobců, ale my použijeme řešení zcela zdarma. Důvody šíření virů pomocí elektronické pošty osobně vidím v používání e-mailových klientů typu MS Outlook a MS Outlook Express, které dělají automatické náhledy HTML e-mailů. Pravdou totiž je, že do HTML se dá schovat spousta škodlivého kódu a ve spojení s děravým MS Internet Explorerem je poté dílo zkázy dokonáno. Dalším problémem bývají dále i spustitelné přílohy. Proto je třeba e-mail vyčistit, ještě než dorazí k uživateli s výše zmíněným programovým vybavením.

Pokud máte dobrého ISP (používá kvalitní serverový OS), připlaťte si a nechte si kontrolovat poštu přímo na jeho mailserveru. V opačném případě, nebo pokud si chcete postavit vlastní mailserver s kontrolou pošty, je třeba mezi vaši lokální síť a ISP předřadit nějakého toho nelétavého ptáka ve fraku.

V současné době na serverech s Redhat 7.3 provozuji klasický amavis+HBEDV antivir a na Red Hat 9 amavis-ng (next generation). Amavis-ng, jak už název vypovídá, je novější. Když jsem ho nedávno instaloval, zalíbil se mi ihned po zprovoznění. Popíši vám proto obě varianty.

Amavis, postfix, HBEDV antivir

Jako komponenty jsem zvolil starý známý Redhat 7.3, případně 9, postfix, amavis a H-BEDV antivir.

Nejdůležitějším stavebním kamenem je amavis (A Mail Virus Scanner). Pro jeho funkci je třeba Perl. Ten je součástí distribuce, ale pro jistotu rpm -qa | grep perl. Amavis samotný je totiž vlastně sada perlových skriptů. Pro naistalování amavisu budeme potřebovat tyto další perlové moduly:

Jednotlivé moduly lze stáhnout na stránkách amavisu nebo na CPAN. Pokud zvolíte rpm balíky, stačí jen rpm --rebuild název, respektive rpm-build --rebuild název a nakonec rpm -ivh název a postupně nainstalovat. Chcete-li kompilovat, do toho: perl Makefile.pl, make, make install.

Jediný problém, na který jsem narazil, byl v modulu perl-Convert-TNEF na RH8 a RH9, kdy se tento modul nainstaloval na nesprávné místo a bylo nutno jej ručně překopírovat.

Amavis umí nahlížet i do archívů, proto přítomnost např. unrar, perl-Archive-Zip. Výše uvedené moduly a programy je možné stáhnout na http://rmorales.modwest.com/rpms/amavis, kde se nalézá také originál tohoto návodu.

Ještě než amavis spustíte, bude třeba nějaký ten antivir. Amavis spolupracuje s mnoha, nás ale bude zajímat antivir, který je zdarma pro nekomerční využití - H-BEDV antivir. Z domovské stránky jej stačí stáhnout, vyplnit registrační formulář a počkat několik minut na e-mail s klíčem a privátní licencí. Ve staženém tgz souboru je instalační skript, který vás anglicky provede instalací a nastavením antiviru.

Nejedná-li se o dialup server, vyberte si spuštění update démona, který se postará o každodenní kontrolu, zda nevyšla nějaká aktualizace virových definicí. Po nainstalování zkopírujte oba soubory, které přišly e-mailem do adresáře, kam jste nainstalovali antivir (většinou /usr/lib/antivir), čímž ze stažené demoverze uděláte ostrou verzi.

Amavis se spustí příkazem /etc/init.d/amavis start. Startovací skripty jsou obsaženy v rpm balíku.

Teď je třeba říci postfixu, aby předával emaily amavisu. Do souboru /etc/postfix/master.cf přidejte:

vscan unix - n n - 10 pipe user=vscan argv=/usr/sbin/amavis ${sender} ${recipient}
localhost:10025 inet n - n - - smtpd -o content_filter=

Do souboru /etc/postfix/main.cf přidejte:

content_filter = vscan:
soft_bounce = yes

Příkazem /etc/init.d/postfix restart restartujte postfix. Cesta e-mailu se nyní změní tak, že postfix převezme a předá každý e-mail amavisu, který číhá na portu 10025, ten zavolá antivir, který udělá své, a nakonec vše vrátí postfixu. Je-li e-mail zavirovaný, pošle amavis hlášení uživateli virusalert, případně odesílateli, či adresátovi. Ve /var/spool/vscan/virusmails pak ukládá originální zavirované e-maily. Konfigurace se nalézá v /etc/amavisd.conf.

Amavis-ng, postfix, CLAM antivir

I v této variantě je potřeba perl, amavis-ng se liší jen architekturou. Pro Red Hat 9 jsem použil rpm balíčky z http://ftp.kspei.com/.../9/noarch/, takže po nainstalování všech potřebných už jen stačí upravit konfigurační soubory. Antivirový program jsem zvolil CLAM antivir, což je následník Openantiviru.

Amavis-ng poskytuje dvě možnosti, jak spolupracovat s Postfixem:

Filtr postfixu

         ..................................
Nefiltr. :            Postfix             :
    mail--->smtpd \                /local--->Filtr. mail
         :         -cleanup->queue-       :
      ---->pickup /                \smtp---->Filtr. mail
      ^  :                        |       :
      |  :                         \pipe-----+
      |  ..................................  |
      |                                      |
      |                                      |
      +-Postfix sendmail<----filtr. skript<--+
                                  (AMaViS)

Upravíme postfixu jeho master.cf:

přidejte řádek

filter unix - n n - - pipe flags=Rq user=mail argv=/usr/bin/amavis ${sender} -- ${recipient}

a řádek:

smtp inet n - - - - smtpd

změňte na:

smtp inet n - - - - smtpd -o content_filter=filter:

Samostatný SMTP démon

      ..................................
      :            Postfix             :
   ----->smtpd \                /local---->
      :         -cleanup->queue-       :
   ---->pickup /    ^       |   \smtp----->
      :             |       v          :
      :           smtpd    smtp        :
      :           10026     |          :
      ......................|...........
                    ^       |
                    |       v
                ....|............
                :   |     10025 :
                :   filtr       :
                :  (AMaViS)     :
                .................

V konfiguračním souboru amavis.conf, který se nalézá v /etc/amavis-ng upravíme:

[global]
mail-transfer-agent = SMTP

[SMTP]
input address = localhost
input port = 10025
output address = localhost
output port = 10026

Postfixu přidáme do jeho main.cf:

content_filter = smtp:localhost:10025

a nakonec do master.cf přidáme:

localhost:10026 inet n - - - - smtpd -o content_filter

Nakonec si ještě projděte amavis.conf, a nastavte si možnosti, kam doručovat varování o zavirovaných mailech, zda oznamovat i odesílateli (většinou falešná adresa podstrčená virem) apod.

Příkazem /etc/init.d/postfix restart restartujte postfix.

Zavirované maily se ukládají do adresáře /var/spool/amavis-ng/quarantine/, logovací protokol je v adresáři /var/log/amavis-ng/.

Ověření funkce, závěr

Teď bychom si měli ověřit, zda celý systém funguje. Máte-li nějaký ten vir, zkuste jej na váš nový mailserver poslat. Nemáte-li, nevadí. Pro účely testování existuje soubor eicar.com, který znají antivirové programy jako testovací neškodný soubor. Stáhněte jej na http://www.eicar.org/download/eicar.com a připojte k e-mailu.

Pokud přijde varování o zavirovaném e-mailu a ten nebude adresátovi doručen, podařilo se! Blahopřeji! V opačném případě nezoufejte a třeba napište, rád pomohu.

To, že e-mail prošel antivirovou kontrolou amavisu, lze zjistit z jeho obsahu. Najdete v něm hlavičku X-Virus-Scanned: by AMaViS snapshot-20020531, resp. X-Scanned-By: AMaViS-ng.

Na úplný konec pro zájemce do češtiny přeložený skript amavisu.

Poděkování: PinguiNovi z EFnetu, za trpělivost a support :-).

Související články

Jemný úvod do adresace v protokolu IP verze 4
Nastavení poštovního subsystému v Linuxu
Spam: naučte se bránit

Odkazy a zdroje

postfix
amavis
H-BEDV antivir

Další články z této rubriky

PowerDNS – přívětivý a jednoduchý DNS server
Bootování ze sítě: pxelinux a kořenový adresář na NFS
Těžký život Do Not Track
OpenAFS – servery
Architektura IPv6 – konfigurace adres a objevování sousedů (2)

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.