Filtrovanie pošty

Jedným z najväčších problémov elektronickej pošty sú nevyžiadané reklamné emaily Unsolicited Bulk Email (UBE), ktoré tiež poznáme pod názvom SPAM. Niektoré emaily tiež môžu obsahovať vírusy alebo inú formu škodlivého kódu. Podľa štatistík práve tieto správy predstavujú väčšinu emailových správ posielaných cez Internet.

Táto časť hovorí o integrovaní programov Amavisd-new, Spamassassin a ClamAV do agenta na transport pošty - programu Postfix. Postfix tiež dokáže filtrovať emaily použitím externých filtrov obsahu. Tieto filtre môžu určiť, či správa je spam bez toho aby ju bolo nutné kontrolovať náročnými aplikáciami. Dva najčastejšie používané filtre sú dkim-filter a python-policyd-spf.

  • Amavisd-new je prepojovací program, ktorý môže spustiť ľubovoľné množstvo programov na filtrovanie obsahu, napríklad kvôli detekcii spamu, vírusov, atď.

  • Spamassassin používa rôzne mechanizmy na filtrovanie emailov podľa toho, čo obsahujú.

  • ClamAV je otvorený antivírový program.

  • dkim-filter implementuje Sendmail Mail Filter (Milter) pre štandard DomainKeys Identified Mail (DKIM).

  • python-policyd-spf zapne kontrolu pomocou Sender Policy Framework (SPF) v programe Postfix.

Takto jednotlivé časti spolupracujú:

  • Postfix príme Emailovú správu.

  • Správa prejde cez externé filtre dkim-filter a python-policyd-spf.

  • Potom novú správu spracuje Amavisd-new.

  • Na kontrolu proti vírusom sa použije ClamAV. Ak správa obsahuje vírus, Postfix ju odmietne.

  • Správu bez vírusu analyzuje Spamassassin, ktorý zistí, či správa nie je spam. Spamassassin potom pridá do správy riadky hlavičky X-Header, ktoré umožnia programu Amavisd-new rozhodnúť čo má urobiť ďalej so správou.

Napríklad, ak je správa dostane 50 zlých bodov, správa môže byť automaticky vyradená z fronty bez upozornenia príjemcu. V opačnom prípade bude postúpená agentovi, ktorý doručí správu používateľovi.

Inštalácia

Návod na inštaláciu systému Postfix sa nachádza v časti Postfix.

Ostatné aplikácie nainštalujete zadaním nasledujúcich príkazov do príkazového riadka:

sudo apt-get install amavisd-new spamassassin clamav-daemon
sudo apt-get install dkim-filter python-policyd-spf

Existuje niekoľko voliteľných balíkov, ktoré sa dajú integrovať do programu Spamassassin, aby lepšie odhaľoval spam:

sudo apt-get install pyzor razor

Okrem hlavných filtrovacích aplikácií, sú potrebné aj nástroje na rozbaľovanie, ktoré umožnia kontrolu skomprimovaných príloh:

sudo apt-get install arj cabextract cpio lha nomarch pax rar unrar unzip zip zoo
[Note]

Ak systém niektorý z balíkov nenájde, skontrolujte, či je povolené úložisko multiverse v súbore /etc/apt/sources.list.

Ak urobíte v súbore zmeny, je potrebné pred spustením inštalačného príkazu spustiť ešte príkaz sudo apt-get update.

Konfigurácia

Teraz všetky systémy nastavíme tak, aby spolu fungovali a filtrovali poštu.

ClamAV

Predvolené správanie antivírového programu ClamAV je vyhovujúce. Viac o konfigurácii systému ClamAV sa dozvieme priamo v konfiguračných súboroch v priečinku /etc/clamav.

Používateľa s názvom clamav pridáme do skupiny amavis aby mal systém Amavisd-new prístup ku skenovaným súborom:

sudo adduser clamav amavis

Spamassassin

Spamassassin automaticky zistí voliteľné komponenty a použije ich ak sú dostupné. To znamená, že nie je potrebné nastavovať systémy pyzor a razor.

Otvoríme súbor /etc/default/spamassassin a aktivujeme démon Spamassassin. Zmeníme ENABLED=0 na:

ENABLED=1

Teraz reštartujeme démon:

sudo /etc/init.d/spamassassin start

Amavisd-new

Najskôr aktivujeme detekciu spamu a vírusov v Amavisd-new úpravou súboru /etc/amavis/conf.d/15-content_filter_mode:

use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Uncomment the two lines below to enable it
#

@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Default SPAM checking mode
# Uncomment the two lines below to enable it
#

@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1; # insure a defined return

Vracanie spamu je zlý nápad pretože spiatočná adresa je väčšinou falošná. Preto otvoríme súbor /etc/amavis/conf.d/20-debian_defaults a nastavíme $final_spam_destiny na D_DISCARD miesto D_BOUNCE, takto:

$final_spam_destiny       = D_DISCARD;

Ďalej môžeme zmeniť nasledujúce voľby aby sme viac správ označili ako spam:

$sa_tag_level_deflt = -999; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.0; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 21.0; # triggers spam evasive actions
$sa_dsn_cutoff_level = 4; # spam level beyond which a DSN is not sent

Ak je menná adresa servera iná ako MX záznam, bude potrebné nastaviť $myhostname. Ak server prijíma maily z viacerých domén, prispôsobíme aj nastavenie @local_domains_acl. Upravíme súbor /etc/amavis/conf.d/50-user:

$myhostname = 'mail.nieco.sk';
@local_domains_acl = ( "nieco.sk", "nieco.org" );

Po dokončení nastavovania Amavisd-new systém reštartujeme:

sudo /etc/init.d/amavis restart
DKIM Whitelist

Amavisd-new môžeme nastaviť aj tak, aby automaticky dal na bielu listinu - Whitelist adresy z doménou podľa platných doménových kľúčov. V súbore /etc/amavis/conf.d/40-policy_banks sa nachádza niekoľko predkonfigurovaných domén.

Existuje niekoľko spôsobov ako pridať ďalšiu doménu na Whitelist:

  • 'nieco.sk' => 'WHITELIST',: pridá na bielu listinu adresy z domény "nieco.sk".

  • '.nieco.sk' => 'WHITELIST',: pridá na bielu listinu adresy z ľubovoľnej poddomény domény "nieco.sk", ktoré majú platný podpis.

  • '.nieco.sk/@nieco.sk' => 'WHITELIST',: pridá na bielu listinu adresy z poddomén domény "nieco.sk", ktoré používajú podpis rodičovskej domény nieco.sk.

  • './@nieco.sk' => 'WHITELIST',: pridá adresy ktoré majú platný podpis od "nieco.sk". Toto sa zvyčajne používa pri vytváraní diskusných skupín ktoré podpisujú svoje správy.

Doména môže mať viacero Whitelist nastavení. Po dokončení úprav je potrebné reštartovať amaisd-new:

sudo /etc/init.d/amavis restart
[Note]

Ak je doména pridaná na bielu listinu, správy z tejto domény nebudú kontrolované antivírovým programom ani spamovým filtrom.

Postfix

 Programy integrujeme do systému Postfix zadaním nasledujúceho príkazu do príkazového riadka:

sudo postconf -e 'content_filter = smtp-amavis:[127.0.0.1]:10024'

Potom otvoríme súbor /etc/postfix/master.cf a pridáme nasledujúce riadky na koniec súboru:

smtp-amavis     unix    -       -       -       -       2       smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20

127.0.0.1:10025 inet 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=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

Tiež pridáme nasledujúce dva riadky hneď pod transportnú službu "pickup":

         -o content_filter=
-o receive_override_options=no_header_body_checks

Toto ochráni správy, ktoré sú vygenerované ako hlásenie o spame aby neboli zatriedené medzi spam.

Teraz reštartujemet Postfix:

sudo /etc/init.d/postfix restart

Filtrovanie obsahu s detekciou spamu a vírusov je teraz zapnuté.

Testovanie

Najskôr otestujeme, či Amavisd-new SMTP načúva:

telnet localhost 10024
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
^]

V hlavičke správ, ktoré prešli cez filter by sme mali vidieť:

X-Spam-Level: 
X-Virus-Scanned: Debian amavisd-new at nieco.sk
X-Spam-Status: No, hits=-2.3 tagged_above=-1000.0 required=5.0 tests=AWL, BAYES_00
X-Spam-Level:
[Note]

Výstup môže byť rôzny ale dôležité je aby v hlavičke boli záznamy X-Virus-Scanned a X-Spam-Status.

Riešenie problémov

Najlepší spôsob ako zistiť prečo niečo nefunguje správne, je skontrolovať súbory so záznamami.

  • Postup ako nastaviť zaznamenávanie v systéme Postfix sa nachádza v časti “Riešenie problémov”.

  • Amavisd-new používa Syslog na posielanie správ do /var/log/mail.log. Detailnosť správ sa dá nastaviť pomocou nastavenia $log_level v súbore /etc/amavis/conf.d/50-user, ktoré môže mať hodnotu 1 až 5.

    $log_level = 2;
    
    [Note]

    Keď zvýšite detailnosť výstupu systému Amavisd-new, zvýši sa aj detailnosť výstupu systému Spamassassin.

  • Detailnosť výstupov systému ClamAV sa dá zvýšiť nastavením v súbore /etc/clamav/clamd.conf pomocou nasledujúceho nastavenia:

    LogVerbose true
    

    V predvolenom stave bude ClamAV odosielať správy do súboru /var/log/clamav/clamav.log.

[Note]

Po zmene nastavení záznamov reštartujte služby, aby sa nové nastavenia prejavili. Keď problém vyriešite, vráťte nastavenia späť na pôvodné hodnoty.

Zdroje

Viac informácií o filtrovaní mailov sa dozvieme na týchto stránkach:

Môžeme tiež požiadať niekoho o pomoc v #ubuntu-server IRC kanále na freenode.