Amavis-Spam-Virenfilter
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Diese Anleitung erweitert den Postfix-Mailserver um Virenscanner und Spamfilter sowie automatische Mailfilter. Sie basiert auf der englischsprachigen Anleitung PostfixAmavisNewClamAVSpamAssassin.
Natürlich lässt sich auch ein auf Sendmail basierender Mailserver mittels Sendmail-Dual und Amavis erweitern. Im Kapitel Links befindet sich ein Verweis auf eine Anleitung zur Konfiguration von Sendmail Dual, das als Basis für die weitere Konfiguration des Amavis-Spam-Virenfilter mittels dieser Anleitung herangezogen werden kann.
Installation¶
Über die bereits mit Postfix installierten Pakete hinaus müssen folgende Pakete noch installiert [1] werden:
amavisd-new (Skript zur Interaktion eines MTA (Mail Transfer Agent) mit Virenscanner und Spamfilter )
clamav-daemon (security, Virenscanner )
spamassassin (universe , Spamfilter )
razor (universe, Zugriff auf eine Online-Spamdatenbank )
pyzor (universe, Zugriff auf eine weitere Online-Spamdatenbank )
Befehl zum Installieren der Pakete:
sudo apt-get install amavisd-new clamav-daemon spamassassin razor pyzor
Oder mit apturl installieren, Link: apt://amavisd-new,clamav-daemon,spamassassin,razor,pyzor
Konfiguration¶
Die erfolgreiche Konfiguration und Inbetriebnahme von Postfix sowie anderer Mailserver-Komponenten wird an dieser Stelle vorausgesetzt.
Clamav-Daemon¶
Clamav erfordert normalerweise keine Anpassungen. Der Daemon ist gestartet, und Virensignaturen werden täglich aktualisiert. Damit Amavis und Clamav-Daemon zusammenarbeiten, muss der Benutzer clamav
der Gruppe amavis
über die Verwaltung der Benutzer und Gruppen [5] zugeordnet werden. Dies erfolgt über die Befehle:
sudo adduser clamav amavis sudo service clamav-daemon restart
Hinweis:
Beim Re-Start von Clamav wird folgender Fehler angezeigt:
* Stopping ClamAV daemon clamd [ OK ] * Clamav signatures not found in /var/lib/clamav * Please retrieve them using freshclam * Then run '/etc/init.d/clamav-daemon start'
Um das Problem zu beheben, muss man
sudo freshclam
ausführen. Damit wird die Clamav-Signatur heruntergeladen, und man kann anschließend den Clamav-Daemon mit dem Befehl
sudo service clamav-daemon start
starten.
Amavis¶
Zur Aktivierung des Spamfilters und Virenscanners müssen in der Datei /etc/amavis/conf.d/15-content_filter_mode mit Root-Rechten insgesamt vier Kommentarzeichen vor den bypass
-Direktiven entfernt werden [4]:
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Wer nur auf Spam oder Viren prüfen will, lässt die Kommentarzeichen vor dem Block, den er nicht benötigt, stehen.
Danach muss Amavis selbstverständlich neu gestartet werden (wie jedes Mal, nachdem man etwas an der Konfiguration geändert hat):
sudo service amavis restart
U.U. meckert Amavis jetzt, dass es den vollen Domainnamen des Rechner nicht herausfinden kann. Dann muss man den noch in der Datei /etc/hosts eintragen:
127.0.0.1 localhost 127.0.0.1 jaunty-test.otze jaunty-test …
Achtung!
Amavis-Konfigurationsdateien sind technisch betrachtet Perl-Skripte, die von Amavis aufgerufen werden. Daher muss man sich an die Perl-Syntax halten. U.a. bedeutet das, dass Variablen mit einem Dollarzeichen beginnen, Zeichenketten in Anführungszeichen gesetzt und jede Anweisung mit einem Semikolon abgeschlossen werden muss.
spamassassin¶
Amavis greift direkt auf die spamassassin-Bibliotheken zu und benötigt keinen laufenden spamd Demon. Von daher ist keine weitere Konfiguration von spamassassin notwendig.
Damit amavis razor und pyzor verwenden kann, ist Folgendes notwendig[3]:
su - amavis -s /bin/bash razor-admin -create razor-admin -register pyzor discover exit
Eine Konfiguration von razor oder pyzor ist nicht notwendig.
Postfix¶
Zur Integration von Amavis in Postfix muss in der Datei /etc/postfix/main.cf folgende Zeile eingefügt werden:
content_filter=smtp-amavis:[127.0.0.1]:10024
Weitere Anpassungen sind in der Datei /etc/postfix/master.cf erforderlich. Am Ende:
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
Wenn in der der Datei /etc/postfix/main.cf "smtp_tls_security_level = encrypt
" benutzt wurde, muss nun noch der folgende Parameter bei beiden Einträgen hinzugefügt werden:
-o smtp_tls_security_level=none
Unmittelbar hinter der Zeile mit dem Dienst pickup
:
-o content_filter= -o receive_override_options=no_header_body_checks
Nun muss Postfix zur Aktivierung des Viren- und Spamfilters neu gestartet werden [3]:
sudo service postfix restart
Sendmail¶
Es gibt mehrere Möglichkeiten, Amavis an sendmail anzubinden. Die mit Abstand mächtigste und leistungsfähigste Variante ist die Sendmail-Dual 🇬🇧 -Variante. Leider ist sie nur sehr wenig dokumentiert und wird von großen Distributionen wie Ubuntu auch nur mangelhaft unterstützt. Interessierte finden aber im Kapitel Links einen Verweis auf eine entsprechende Anleitung für Gutsy Gibbon.
Weitere Einstellungen¶
Spammails mit ***SPAM*** kennzeichnen¶
In der Standardeinstellung filtert Amavis erkannten Spam einfach weg. Möglicherweise möchte man jedoch seinen Spam lieber selber nochmal auf falsche Treffer überprüfen. Dafür bietet Amavis die Möglichkeit, Spam in der Betreffszeile zu kennzeichnen. So erkennt man auf den ersten Blick, dass es sich bei der Mail nach Einschätzung von Amavis bzw. Spamassassin um Spam handelt, und man kann in seinem E-Mail-Programm sehr einfach einen Filter dafür einstellen, der den Spam automatisch in einen eigenen Ordner sortiert. Außerdem kann man verschiedene Kopfzeilen, die mit X-Spam
beginnen, einfügen lassen, wo Amavis Informationen über den Spamwert und die angeschlagenen Tests hinterlegt. Das ist praktisch, wenn man z.B. wissen möchte, weswegen eine bestimmte Mail falsch einsortiert wurde.
Als erstes muss man folgende Zeile in die Datei /etc/amavis/conf.d/50-user eintragen, wobei man seinen Host- und Domainnamen entsprechend einsetzen muss:
@local_domains_acl = ( ".$mydomain","localhost","hostname",".domain" );
Weiterhin muss man in /etc/amavis/conf.d/20-debian_defaults folgende Variablen den eigenen Bedürfnissen anpassen:
$sa_tag_level_deflt
: Mail, die höher als dieser Wert eingestuft wird, erhält die oben erwähnten X-Spam-Kopfzeilen. Man kann diese Variable statt auf einen Zahlwert auch aufundef
setzen, um wirklich jede Mail derartig zu behandeln. Standardmäßig steht dieser Wert auf 2.$sa_tag2_level_deflt
: Ab diesem Wert wird die Mail als Spam eingestuft, eine entsprechende Kopfzeile eingefügt und der Betreff mit dem Präfix***SPAM***
versehen. In der Voreinstellung steht diese Variable auf dem Wert 6.31.$sa_kill_level_deflt
: Dieser Wert legt fest, ab wann die Mail so eindeutig als Spam eingestuft wird, dass sie sofort vernichtet wird. In der Grundeinstellung steht dieser Wert ebenfalls auf 6.31, so dass der oben erwähnte Fall mit der Kennzeichnung nie eintrifft.
Folgende Einstellungen haben sich in der Praxis als sinnvoll erwiesen:
$sa_tag_level_deflt = undef; $sa_tag2_level_deflt = 5; $sa_kill_level_deflt = 20;
Zum Übernehmen der Änderungen muss Amavis neu gestartet werden
sudo service amavis restart
ALL-TRUSTED-Spamtest lässt zu viel Spam durch¶
Einige der Tests, die Spamassassin durchführt, prüfen nicht darauf, ob es sich bei der Mail um Spam handelt, sondern ob es sich im Gegenteil um vertrauenswürdige Mail handelt. Dementsprechend haben diese Tests einen negativen Wert, den sie vom Spamscore abziehen, und führen – falls sie nicht ordentlich funktionieren – dazu, dass Spam durchs Raster schlüpft. Einer dieser Tests, mit dem es bei nicht-trivialen Netzwerk-Setups (NAT, Fetchmail, E-Mail-Weiterleitungen, etc.) gelegentlich zu Problemen kommt, ist ALL_TRUSTED
. Die Lösung besteht darin, dass man Spamassassin mitteilt, welche IP-Adressen zum eigenen Netz gehören, und welchen Servern man sonst noch so vertraut, nicht die Kopfzeilen zu fälschen. Da kann man dann z.B. die IP-Adressen der Mailserver eintragen, bei denen man Postfächer oder Weiterleitungen unterhält.
Dazu muss man in die Datei /etc/spamassassin/local.cf etwas derartiges eintragen:
internal_networks 192.168.0. 10.0.8. # internal networks plus mx.kundenserver.de trusted_networks 192.168.4. 10.0.8. 212.227.15.134 212.227.15.150 212.227.15.169 212.227.15.186
Um herauszufinden, welche IP-Adressen man dort eintragen muss, untersucht man einfach die Received
-Zeilen der Mails, die falsch eingestuft werden, und sucht die Server des Mail-Anbieters heraus, über die die Mails regelmäßig laufen.
Links¶