Skip to content

Amavis Spamfilter mit Spamassassin

Spamassassin installieren

Zuerst wird die Spamerkennung an sich Spamassassin installiert. Dazu kommen noch zwei andere Pakete, die die Erkennung verbessern.

root:~# apt-get install spamassassin razor pyzor

Spamassassin muss noch aktiviert werden. Das geschieht, indem die Datei /etc/default/spamassassin. Außerdem sollen die automatischen Spamassassin Updates aktiviert werden, sodass die Spamerkennung immer auf dem aktuellen Stand ist.

root:~# vi /etc/default/spamassassin
....
ENABLED=1
....
OPTIONS="-u amavis -g amavis --create-prefs --max-children 5 --helper-home-dir -l"
...
CRON=1

In der Datei /etc/spamassassin/local.cf setzen wir noch folgende Einstellungen.

root:~# vi /etc/spamassassin/local.cf
....
use_bayes 1
bayes_auto_learn 1
bayes_path /var/lib/amavis/bayes
bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 3.0

Nach diesen Änderungen muss spamassassin neu gestartet werden.

root:~# service spamassassin restart

Amavis installieren

Weiterhin installieren wir noch Amavis mit dem Paketmanager.

root:~# apt-get install amavisd-new

Damit Amavis Spammails behandelt, müssen die Spam Checks aktiviert werden. Bearbeitet die Datei /etc/amavis/conf.d/15-content_filter_mode und entfernt die Kommentarzeichen vor folgenden Zeilen sodass dort steht.

root:~# vi /etc/amavis/conf.d/15-content_filter_mode
@bypass_spam_checks_maps = (
    \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Amavis soll Spam E-Mails mit ***SPAM*** im Betreff Kennzeichnen und zusätzlich einen X-Spam-Flag Header in den E-Mail Queltext schreiben, sodass Mailclients (oder später der Sieve Filter) erkennen können, dass es sich um eine als Spam klassifizierte E-Mail handelt. E-Mails, die ein Spamlevel > 20 erreichen, werden sofort gelöscht.

Dazu wird die Datei /etc/amavis/conf.d/20-debian_defaults wie folgt geändert.

root:~# vi /etc/amavis/conf.d/20-debian_defaults
....
$sa_spam_subject_tag = '***SPAM*** ';
$sa_tag_level_deflt  = -1000.0;
$sa_tag2_level_deflt = 5;
$sa_kill_level_deflt = 10;
$sa_dsn_cutoff_level = 20;   # spam level beyond which a DSN is not sent

In der Datei /etc/amavis/conf.d/50-user definieren wir noch die SQL Settings und Query um alle Domains aufzulisten.

root:~# vi /etc/amavis/conf.d/50-user
....
@lookup_sql_dsn = (
    ['DBI:mysql:database=vimbadmin;host=127.0.0.1;port=3306',
     'vimbadmin',
     '********']);
$sql_select_policy = 'SELECT domain FROM domain WHERE CONCAT("@",domain) IN (%k)';

Nach den beiden Konfigurationsänderungen wird Amavis neu gestartet.

root:~# service amavis restart

Amavis in Postfix integrieren

Postfix muss nun so eingestellt werden, dass eintreffende E-Mails durch den Amavis Filter geschickt werden, sodass sie von Spamassassin kontrolliert werden können.

In die Datei /etc/postfix/main.cf wird folgende Zeile eingefügt.

root:~# vi /etc/postfix/main.cf
....
content_filter=smtp-amavis:[127.0.0.1]:10024

Die Service Konfigurationsdatei /etc/postfix/master.cf wird unten um folgende Zeilen erweitert.

root:~# vi /etc/postfix/master.cf
....
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

Postfix wird neu gestartet, um die Änderungen zu übernehmen.

root:~# service postfix restart

Dokumentation