ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Amavis-Spam-Virenfilter

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

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 (universe bis einschließlich Hardy, Maverick, Virenscanner )

  • spamassassin (universe bis einschließlich Hardy, Maverick, Spamfilter )

  • razor (universe, Zugriff auf eine Online-Spamdatenbank )

  • pyzor (universe, Zugriff auf eine weitere Online-Spamdatenbank )

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install amavisd-new clamav-daemon spamassassin razor pyzor 

sudo aptitude install 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 /etc/init.d/clamav-daemon restart 

Hinweis:

Beim Start von Clamav wird folgende Warnung angezeigt:

This version of the ClamAV engine is outdated.

Diese Warnmeldung ist unkritisch und behindert nicht die Funktion. Erläuterungen stehen in der Clamav FAQ {en}

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 /etc/init.d/amavis restart 

U.U. meckert Amavis jetzt, dass es den vollen Domainnamen des Rechner nicht herausfinden kann. Dann muss man ihm den mitteilen, indem man z.B. folgende Zeile in die Datei /etc/amavis/conf.d/50-user einträgt:

$myhostname = "jaunty-test.otze";

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 jedes Statement mit einem Semikolon abgeschlossen werden muss.

spamassassin

Spamassassin benutzt automatisch die installierten Spamfilter razor und pyzor, ohne dass eine Konfiguration notwendig ist. Es muss lediglich der Daemon aktiviert werden. Hierzu wird die Datei /etc/default/spamassassin entsprechend angepasst [4] und danach das Startskript aufgerufen:

# Change to one to enable spamd
ENABLED=1
sudo /etc/init.d/spamassassin start 

Razor und pyzor erfordern keine besonderen Einstellungen.

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 "smtpd_tls_security_level = encrypt" benutzt wurde, muss nun noch der folgende Parameter hinzugefügt werden:

        -o smtpd_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 /etc/init.d/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 {en} -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" );

Des Weiteren 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, bekommt die oben erwähnten X-Spam-Kopfzeilen. Man kann diese Variable statt auf einen Zahlwert auch auf undef 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 /etc/init.d/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 durch's 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 IPs der Mailserver eintragen, bei denen man Postfächer und/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 IPs man da nun eintragen muss, untersucht man einfach die Received-Zeilen der Mails, die falsch eingestuft werden, und sucht die Server des Mailproviders heraus, über die die Mails regelmäßig laufen.

ubuntuusers.local › WikiAmavis-Spam-Virenfilter