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