Spam- und Virenfilter für Postfix für Postfix einrichten
Vor einiger Zeit habe ich euch bereits gezeigt, wie man einen E-Mail-Server auf Basis von Postfix und Dovecot aufsetzen kann. Dieses Setup erweitere ich heute um einen Spam- und Virenfilter. Voraussetzung für diese Anleitung sind ein funktionierender Postfix-Server und natürlich ein paar Linux-Kenntnisse. Getestet habe ich diese Anleitung auf meinem vServer von netcup, auf dem ein Ubuntu 9.04 läuft.
Pakete installieren
Die folgenden Pakete müssen installiert werden:
- amavisd-new (ermöglicht Interaktion zwischen Postfix und den Filtern)
- clamav-daemon (Virenfilter)
- spamassassin (Spamfilter)
- razor (Spam-Datenbank)
- pyzor (weitere Spam-Datenbank)
Die Pakete werden wie folgt installiert:
aptitude install amavisd-new clamav-daemon spamassassin razor pyzor
ClamAV einrichten
Bei ClamAV ist nicht viel zu machen, wir müssen lediglich den Benutzer clamav zur Gruppe amavis hinzufügen, damit die Dienste miteinander kommunizieren können:
adduser clamav amavis
Danach muss ClamAV neugestartet werden:
/etc/init.d/clamav-daemon restart
Spamassasin einrichten
Richten wir nun den Spamfilter ein. Dazu öffnest du zunächst die Datei /etc/default/spamassassin und passt dort folgende Werte an:
ENABLED=1 CRON=1
Danach starten wir SpamAssasin:
/etc/init.d/spamassassin start
Amavis einrichten
Zunächst müssen die Rautezeichen vor den folgenden Zeilen der Datei /etc/amavis/conf.d/15-content_filter_mode entfernt werden:
@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);
Danach setzen wir den richtigen Hostname in der Datei /etc/amavis/conf.d/50-user. In meinem Fall wird folgendes dort eingetragen:
$myhostname = "techspread.de";
Damit SPAM nicht sofort gelöscht, sondern nur mit ***SPAM*** markiert wird, muss noch folgende Zeile eingefügt werden. Trage hier alle Domains (durch Komma getrennt) ein, bei denen E-Mails markiert werden sollen:
@local_domains_acl = ( "localhost", "techspread.de" );
Außerdem müssen die Filtereinstellungen in der Datei /etc/amavis/conf.d/20-debian_defaults angepasst werden:
$sa_tag_level_deflt = undef; # X-SPAM-Header werden immer hinzugefügt $sa_tag2_level_deflt = 5; # Ab welchem SPAM-Wert E-Mails mit ***SPAM*** markiert werden $sa_kill_level_deflt = 20; # AB welchem SPAM-Wert E-Mails sofort gelöscht werden
Nun folgt der obligatorische Neustart von Amavis:
/etc/init.d/amavis restart
Postfix einrichten
Nun müssen wir nurnoch Postfix mitteilen, dass er alle E-Mails auf Spam und Viren prüfen soll. Dazu öffnest du zunächst die Datei /etc/postfix/main.cf und fügst folgende Zeile an das Ende der Datei ein:
content_filter=smtp-amavis:[127.0.0.1]:10024
Danach öffnest du die Datei /etc/postfix/master.cf und fügst folgende Zeilen direkt nach dem Dienst pickup (steht direkt am Anfang einer Zeile) ein:
-o content_filter= -o receive_override_options=no_header_body_checks
Zuletzt fügen wir die diese Zeilen an das Ende der Datei ein:
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
Und natürlich muss Postfix nochmal neugestartet werden:
/etc/init.d/postfix restart
Filter testen
Um die Filter zu testen, kann man sich Testmails von byteplant zuschicken lassen. Des Weiteren kann man den GTUBE-Test auf seinen Server loslassen.
Veröffentlicht am 20.07.2010

Stefan schrieb am 10. August 2010
Hey Patrick, keine schlechte Anleitung. Bin grad mal am Testen ob das funktioniert
nen kleinen Fehler scheint es noch zu geben. Momentan nimmt meine Server überhaupt keine Mails an und in der mail.err steht:
fatal: /etc/postfix/master.cf: line 24: bad transport type: content_filter=
hab das einfach mal sinngemäß durch ein “-o content_filter=smtp-amavis:[127.0.0.1]:10024″ ersetzt.
Nu scheint das Teil zu laufen, ob er Spam auch richtig filtert, werd ich später mal testen
Tobias schrieb am 4. April 2011
Hallo,.
Also die Content-Filter geschichte läuft eigentlich echt gut und Ich habe damit auch lange keine Probleme gehabt…
Gelöschter Spam ist wirklich Spam (Ich lass mich da aktuell noch gesondert drüber Informieren
) und Virus-Behaftete Mails sind auch entweder Virus Mails (oder wie eben nen nicht genehmigter Anhang)…
Dabei ist mir allerdings sauer aufgestoßen, dass die Quarantäne sich echt mies administrieren lässt (ja ne Mail nachträglich genehmigen is einfach!).
Kennt jmd ein gutes FrontEnd, eine gute Möglichkeit um Mails aus der Quarantäne zu löschen, anzusehen?
Richtig cool wär natürlich die ganze Konfig auf SQL und PHP Basis als WebFrontend zu gestalten
Aber Ich schweife vom Thema ab… => Quarantäne Säubern
Patrick schrieb am 4. April 2011
Installier dir doch zuhause eine Astaro Firewall, die hat eine sehr schöne Administration für diesen Zweck
Tobias schrieb am 4. April 2011
Ich such aber eine Lösung für mein Problem und keine alternative Lösung
Wozu ne ganze Firewall aufm Server installieren, die dann nur als Content-Filter arbeitet?
Patrick schrieb am 4. April 2011
Was lässt sich denn genau “schlecht” administrieren? Lass die E-Mails doch einfach mit ***SPAM*** markieren und richte dir eine Regel in deinem Client ein…
Tobias schrieb am 4. April 2011
Paddy…
Ich suche kein Workaround sondern Ich möchte doch nur wissen wie man einzelne Mails aus der Quarantäne löschen kann
Das ist nun kein dringendes Problem, aber in einem größeren Umfeld kann son eine Quarantäne ja nicht ein leben lang anwachsen
Patrick schrieb am 4. April 2011
@Tobi: http://sourceforge.net/projects/mailzu/
streilu schrieb am 6. Mai 2011
Hallo!
Ich bin unter Ubuntu Natty 11.04 wie hier beschrieben vorgegangen, jedoch hab ich folgendes Problem:
- interne Mails also von meinem Server zu meinem Server funktionieren problemlos.
- kommt eine Mail von draußen, steht folgendes im Log-File mail.log:
streilu schrieb am 6. Mai 2011
May 6 14:02:06 streilucom postfix/smtpd[8493]: warning: connect to private/policy-spf: Connection refused
May 6 14:02:06 streilucom postfix/smtpd[8493]: warning: problem talking to server private/policy-spf: Connection refused
Patrick schrieb am 7. Mai 2011
@streilu: Kann es sein, dass dein Amavis oder Postfix nicht (neu-)gestartet wurden? Ansonsten kenne ich die Fehlermeldung auch nicht, sorry…