Greylisting: Unterschied zwischen den Versionen

Aus Doku-Wiki
Zur Navigation springenZur Suche springen
Zeile 63: Zeile 63:
  
 
=Mailgraph=
 
=Mailgraph=
[http://www.howtoforge.de/howto/postfix-uberwachung-mit-mailgraph-und-pflogsumm Anleitung Mailgraph und PFLogSumm]
+
[[Mailgraph|Doku zu Mailgraph]]
=PFLogSumm=
+
=PFlogsumm=
[http://www.howtoforge.de/howto/postfix-uberwachung-mit-mailgraph-und-pflogsumm Anleitung Mailgraph und PFLogSumm]
+
[[PFlogsumm|Doku PFlogsumm]]
  
  
 
[[Kategorie:Linux]]
 
[[Kategorie:Linux]]
 
[[Kategorie:Anwendungen]]
 
[[Kategorie:Anwendungen]]

Version vom 20. Dezember 2009, 11:26 Uhr

Postgrey unter Debian einrichten

postgrey ist ein sehr nützliches Tool zur E-Mail-Spambekämpfung. postgrey arbeitet mit postfix zusammen (der Name verrät es schon) und basiert auf einem interessanten Konzept: Spam wird nicht durch Inhaltsfilter geprüft, wie es zum Beispiel Spamassassin macht, sondern bereits beim Vorgang der Einlieferung auf dem Mailserver aussortiert.

Vereinfacht kann man sich das Konzept von postgrey folgendermaßen vorstellen: Die wenigsten Spammer benutzen vernünftig aufgesetzte Mailserver. Ein solcher würde unter anderem bei einem erfolglosen Versuch eine Mail auf einem fremden Mailserver einzuliefern eine Weile warten und es erneut probieren. So kann man gewährleisten, dass im Falle einer temporären Nichterreichbarkeit eines Mailservers (Wartungsarbeiten, Reboot o. ä.) keine Mails verloren gehen. Über 95% aller Rechner, welche Spam versenden, machen dies mit einer "Fire and Forget"-Strategie: Wenn ein Mailserver die Mail nicht annimmt, wird nach einer Weile nicht noch einmal probiert die Mail einzuliefern. Viren, welche sich selbst verbreiten, verhalten sich in den allermeisten Fällen genauso wie die meisten Spammer.

Genau das macht man sich beim Greylisting zu Nutze. Ein Greylisting-Daemon prüft genau drei Dinge bei einer versuchten Maileinlieferung:

die IP-Adresse der Maschine, welche eine Mail einliefern möchte, die Senderadresse (Envelope) und die Empfängeradresse (Envelope). Nun hat man ein Triplet, welches eine Beziehung zwischen Sender, Empfänger und Sendehost herstellt. Hat man dieses Triplet, geht man wie folgt vor:

Wenn dieses Triplet noch nicht aufgetaucht ist, wird die Maileinlieferung mit einem temporären SMTP-Fehler (450) abgebrochen. Sobald eine erneute Einlieferung mit dem selben Triplet nach einer einzustellenden Zeitspanne versucht wird, darf diese erfolgen.

Mit dieser Methode erschlägt man den meisten Spam, bevor er überhaupt den Rechner erreicht und spart sich obendrein sogar noch die Rechenzeit fressende Untersuchung mit Filtern wie Spamassassin. postgrey sammelt alle bekannten Triplets in einer Datenbank, man kann so bekannte Triplets direkt erkennen und die entsprechende Einlieferung erlauben. Auch Clients, welche das Greylisting bereits mehrfach erfolgreich durchlaufen haben werden automatisch in einer Whitelist gesammelt.

Ein kleiner Nachteil der Methode soll hier nicht verschwiegen werden: Auf Grund der Abweisung einer Mail bei Auftreten eines unbekannten Triplets wird ein bestimmter Anteil der Mails mit einer kleinen Verzögerung von wenigen Minuten ankommen. Anfangs wird die durchschnittliche Verzögerung etwas höher sein, später merkt man kaum noch was davon.

  • Wie implementiert man nun postgrey?
    • Ich gehe davon aus, dass eine der folgenden Debian "Sarge/Etch/Lenny" eingesetzt wird und Postfix bereits läuft. Wenn diese Voraussetzungen erfüllt sind, ist es eigentlich ein Kinderspiel:
  • Zuerst installiert man postgrey. Unter Debian wie immer besonders einfach:
aptitude install postgrey

Eventuelle Abhängigkeiten (diverse Perl-Module) werden automatisch mitinstalliert.

  • Nun sollte der sogenannte Policy-Server auf dem lokalen Interface auf Port 60000 lauschen. Überprüfen kann man das ganz einfach mit netstat:
netstat -l -p -n | grep 60000
  • Diese Ausgabe sollte etwa so aussehen:
tcp        0      0 127.0.0.1:60000  0.0.0.0:*               LISTEN     23979/postgrey.pid
  • Jetzt muss postfix nur noch gesagt werden, dass postgrey auch benutzt werden soll. Dazu wird in der main.cf (meist in /etc/postfix/ zu finden) folgendes zu smtpd_recipient_restrictions hinzugefügt:
check_policy_service inet:127.0.0.1:60000
  • Die Zeile sieht dann vielleicht so aus:
smtpd_recipient_restrictions =
   permit_mynetworks
   permit_sasl_authenticated
   reject_unauth_destination
   check_policy_service inet:127.0.0.1:60000
  • Nun wird die Konfiguration von postfix neu eingelesen:
postfix reload 

und das Greylisting arbeitet! Mit ein paar Testmails von verschiedenen Accounts und Mailservern sowie dem Logfiles von postfix kann man die korrekte Funktion von postgrey überprüfen.

Will man Statistiken zur Effektivität von postgrey haben, bieten sich Tools wie mailgraph http://people.ee.ethz.ch/~dws/software/mailgraph/ oder pflogsumm http://people.ee.ethz.ch/~dws/software/mailgraph/ an. Die Anzahl der abgelehnten Mails wird ungeahnte Höhen erreichen ;-)

Bei meinem Projekt mtb-news.de werden mit der Greylisting-Methode pro Tag zwischen 3000 und 5000 Spammails gar nicht erst angenommen. Wenn man sich überlegt, dass sonst jede einzelne dieser Mails einen recht rechenzeitintensiven Filter wie Spamassassin durchlaufen würde wird man erleichtert sein, dass man neben der Vermeidung von lästigem Spam und Virenmails auch noch die Load auf dem Mailserver durch den Einsatz von Greylisting entscheidend senken konnte.

Debian Mailrelay mit Greylisting

Versionen

Alle Programme basieren auf den Standard-Paketen von:

Debian 5.0 / Lenny

Installation

aptitude install postgrey postfix

Konfiguration

Testen

Mailgraph

Doku zu Mailgraph

PFlogsumm

Doku PFlogsumm