Levélszűrés

Manapság az e-mailekkel kapcsolatos legnagyobb problémák egyike a nemkívánatos tömeges levélszemét. Ezek a spam néven is ismert üzenetek vírusokat és egyéb rosszindulatú programokat tartalmazhatnak. Egyes jelentések szerint ezek az üzenetek teszik ki az internet e-mail forgalmának zömét.

Ez a szakasz az Amavisd-new, Spamassassin és ClamAV integrálását ismerteti a Postfix levéltovábbító ügynökkel (MTA). A Postfix külső tartalomszűrőkön való átküldéssel képes ellenőrizni az e-mailek érvényességét is. Ezek a szűrők néha az erőforrás-igényesebb alkalmazásokkal való feldolgozás nélkül is képesek megállapítani egy üzenetről, hogy levélszemét-e. Két általános szűrő az opendkim és a python-policyd-spf.

  • Az Amavisd-new egy átalakítóprogram, amely képes tetszőleges számú tartalomszűrő programot meghívni levélszemét-felismerési, víruskeresési stb. céllal.

  • A Spamassassin számos mechanizmust használ az e-mailek szűrésére az üzenet tartalma alapján.

  • A ClamAV egy nyílt forrású víruskereső alkalmazás.

  • Az opendkim egy Sendmail levélszűrőt (Milter) valósít meg a DKIM szabványhoz.

  • A python-policyd-spf engedélyezi a SPF-ellenőrzéseket a Postfix-szel.

A részek így illeszkednek:

  • A Postfix fogadja az e-mailt.

  • Az üzenet átkerül a külső szűrőkhöz, ezek ebben az esetben az opendkim és python-policyd-spf.

  • Ezután az Amavisd-new feldolgozza az üzenetet.

  • A ClamAV megvizsgálja az üzenetet. Ha az üzenet vírust tartalmaz, akkor a Postfix visszautasítja az üzenetet.

  • A tiszta üzeneteket a Spamassassin elemzi, és eldönti hogy az levélszemét-e. A Spamassassin X-Header sorokat ad az üzenethez, lehetővé téve az Amavisd-new számára azok további manipulálását.

Ha például egy üzenet levélszemét-pontszáma ötven felett van, akkor az üzenet automatikusan kidobható a sorból, a címzett tudta nélkül. Másik lehetőség a megjelölt üzenetek kezelésére azok átadása a levelezőkliensnek, lehetővé téve a felhasználónak az üzenet ízlésének megfelelő kezelését.

Telepítés

A Postfix telepítésével és beállításával kapcsolatos utasításokért lásd: „Postfix”.

A további alkalmazások telepítéséhez adja ki a következő parancsokat:

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

A jobb levélszemét-felismerés érdekében telepíthető néhány, a Spamassassinba integrálódó csomag:

sudo apt-get install pyzor razor

A fő szűrőalkalmazások mellett tömörítő segédprogramok is szükségesek egyes e-mail mellékletek feldolgozásához.

sudo apt-get install arj cabextract cpio lha nomarch pax rar unrar unzip zip
[Megjegyzés]

Ha néhány csomag nem található, akkor az /etc/apt/sources.list fájlban ellenőrizze, hogy a multiverse tároló engedélyezve van-e.

Ha módosította a fájlt, a telepítés újrapróbálása előtt futtassa a sudo apt-get update parancsot.

Beállítás

Most beállíthatja a csomagokat az együttműködésre és az e-mailek szűrésére.

ClamAV

A ClamAV alapértelmezett viselkedése megfelel igényeinknek. A ClamAV további beállítási lehetőségeivel kapcsolatban nézze meg az /etc/clamav alatti konfigurációs fájlokat.

Vegye fel a clamav felhasználót az amavis csoportba ahhoz, hogy az Amavisd-new megfelelő hozzáféréssel rendelkezzen a fájlok vizsgálatához:

sudo adduser clamav amavis

Spamassassin

A Spamassassin automatikusan felismeri az elhagyható összetevőket, és használatba veszi a jelenlévőket. Ez azt jelenti, hogy nincs szükség a pyzor és razor konfigurálására.

A Spamassassin démon aktiválásához szerkessze az /etc/default/spamassassin fájlt. Módosítsa az ENABLED=0 értéket:

ENABLED=1

Most indítsa el a démont:

sudo /etc/init.d/spamassassin start

Amavisd-new

Első lépésként engedélyezze a levélszemét- és víruskeresést az Amavisd-new programban az /etc/amavis/conf.d/15-content_filter_mode szerkesztésével:

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

A levélszemét visszaküldése rossz ötlet, mivel a visszatérési cím gyakran hamis. Szerkessze az /etc/amavis/conf.d/20-debian_defaults fájlt, és állítsa a $final_spam_destiny változót D_BOUNCE helyett D_DISCARD értékűre a következőképpen:

$final_spam_destiny       = D_DISCARD;

Ezen kívül szüksége lehet az alábbi beállítások módosítására több üzenet megjelöléséhez levélszemétként:

$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

Ha a kiszolgáló gépneve eltér a tartomány MX rekordjától, akkor szükség lehet a $myhostname beállítás módosítására. Ha a kiszolgáló több tartomány leveleit is fogadja, akkor a @local_domains_acl beállítást kell módosítani. Szerkessze az /etc/amavis/conf.d/50-user fájlt:

$myhostname = 'mail.példa.hu';
@local_domains_acl = ( "példa.hu", "példa.org" );

A beállítások módosítása után az Amavisd-new démont újra kell indítani:

sudo /etc/init.d/amavis restart
DKIM fehérlista

Az Amavisd-new beállítható azon címek automatikus fehérlistázására, amelyek érvényes tartománykulcsú tartományokból jönnek. Ezek az előre beállított tartományok az /etc/amavis/conf.d/40-policy_banks fájlban találhatók.

Egy tartomány fehérlistája több módon is beállítható:

  • 'példa.hu' => 'WHITELIST',: minden címet fehérlistára tesz a „példa.hu” tartományból.

  • '.példa.hu' => 'WHITELIST',: minden címet fehérlistára tesz a „példa.hu” altartományaiból, amelyek aláírása érvényes.

  • '.példa.hu/@példa.hu' => 'WHITELIST',: fehérlistára teszi a „példa.hu” altartományait, amelyek a példa.hu szülőtartomány aláírását használják.

  • './@példa.hu' => 'WHITELIST',: a „példa.hu” tartományból érvényes aláírással rendelkező címeket fehérlistázza. Ezt általában az üzeneteiket aláíró tagokkal rendelkező listákhoz használják.

A domain can also have multiple Whitelist configurations. After, editing the file restart amavisd-new:

sudo /etc/init.d/amavis restart
[Megjegyzés]

Ebben a kontextusban a fehérlistához adott tartományok üzenetein nem lesz vírus- vagy levélszemétszűrés végrehajtva. Ez lehet egyes tartományok esetén a kívánatos vagy a nem kívánatos viselkedés.

Postfix

A Postfix integrációhoz adja ki a következő parancsot:

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

Ezután szerkessze az /etc/postfix/master.cf fájlt, és adja a következőket a fájl végéhez:

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

A következő két sort is vegye fel közvetlenül a "pickup" átviteli szolgáltatás alá:

         -o content_filter=
         -o receive_override_options=no_header_body_checks

Ez megakadályozza a levélszemétről küldött értesítő üzenetek levélszemétté nyilvánítását.

Most indítsa újra a Postfix démont:

sudo /etc/init.d/postfix restart

A levélszemét- és vírusfelismeréses tartalomszűrés ezzel engedélyezve lett.

Amavisd-new és Spamassassin

Az Amavisd-new és a Spamassassin integrálásakor, amennyiben a Bayes szűrés kikapcsolását választja az /etc/spamassassin/local.cf szerkesztésével és a cron használatával az éjjeli szabályok frissítésére, akkor az eredmény nagy mennyiségű hibaüzenet küldését okozhatja az amavis felhasználónak az amavisd-new cron feladaton keresztül.

Ez a helyzet számos módon kezelhető:

  • Állítsa be az MDA-ját az elrejteni kívánt üzenetek szűrésére.

  • Módosítsa a /usr/sbin/amavisd-new-cronjob fájlt a use_bayes 0 keresésére. Szerkessze például a /usr/sbin/amavisd-new-cronjob fájlt, és vegye fel a következőt a tetejére, a test utasítások elé:

    egrep -q "^[ \t]*use_bayes[ \t]*0" /etc/spamassassin/local.cf && exit 0
    

Tesztelés

Első lépésként ellenőrizze, hogy az Amavisd-new SMTP figyel-e:

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

A tartalomszűrőn átmenő üzenetek fejlécében a következőt kell látnia:

X-Spam-Level: 
X-Virus-Scanned: Debian amavisd-new at példa.hu
X-Spam-Status: No, hits=-2.3 tagged_above=-1000.0 required=5.0 tests=AWL, BAYES_00
X-Spam-Level: 
[Megjegyzés]

A kimenet változhat, de a fontos részt az X-Virus-Scanned és X-Spam-Status sorok képezik.

Hibaelhárítás

A hibák okainak meghatározásához a legjobb módszer a naplók ellenőrzése.

  • A Postfix naplózásával kapcsolatos információkért lásd a „Hibaelhárítás” szakaszt.

  • Az Amavisd-new a Syslogot használja az üzenetek /var/log/mail.log fájlba küldésére. A részletesség szintje növelhető a $log_level beállítás /etc/amavis/conf.d/50-user fájlhoz adásával, és az érték 1 és 5 közé állításával.

    $log_level = 2;
    
    [Megjegyzés]

    A Spamassassin naplókimenetének részletessége az Amavisd-new naplókimenetének részletességével együtt nő.

  • A ClamAV naplókimenetének részletessége az /etc/clamav/clamd.conf szerkesztésével, és a következő beállítás megadásával növelhető:

    LogVerbose true
    

    Alapértelmezésben a ClamAV a /var/log/clamav/clamav.log fájlba küldi a naplóüzeneteit.

[Megjegyzés]

Az alkalmazások naplózási beállításainak módosítása után ne felejtse el újraindítani a szolgáltatást az új beállítások életbe léptetéséhez. Ha a hiba elhárítása sikerült, állítsa vissza a naplózási szintet az eredetire.

Hivatkozások

A levélszűréssel kapcsolatos további információért lásd:

A freenode #ubuntu-server IRC-csatornáján is nyugodtan felteheti kérdéseit.