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

10 Kommentare

  • 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 :P ) 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 :D

    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 :D

  • 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 :D

  • 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…

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>