Spam mit Greylisting bekämpfen


Wer einen Mail-Server auf Open Source-Basis betreibt, kann sehr viel Spam-Aufkommen verhindern, indem Greylisting zum Einsatz kommt.

Greylisting ist ein ganz einfaches Prinzip: Will ein Mail-Server eine Mail anliefern, wird diese erstmal abgewiesen. Gut konfigurierte Mail-Server versuchen die Zustellung einige Zeit später nochmals. Nun wird die Mail auch angenommen und alles geht den gewohnten Gang.

Die meisten Spammer jedoch verschicken ihren Müll nur einmal - und somit kommt der Spam nicht an, da er beim ersten Zustellversuch abgewiesen wird.

Der Einsatz dieser Methode hat das Spam-Aufkommen ziemlich genau halbiert. Greylisting blockt 50% meines Spams, bevor dieser überhaupt das System erreicht. Sehr effizient. (Um den Rest kümmert sich SpamAssassin.)

Das Manko an dieser Methode ist, dass es - je nach Konfiguration des Senders - zu gehörigen Verzögerungen kommen kann. Ich konnte beobachten, dass Mails erst nach 20 Minuten ein zweites Mail gesendet wurden. Das heißt, auch erwünschte Mails verzögern sich bis zu 20 Minuten, anstatt sofort im Posteingang zu landen. Allerdings nur beim ersten Verbindungsaufbau: Ist die Quelle schon als "sicher" eingestuft, geht beim zweiten Mal das Einliefern ohne Verzögerung.

Unter Debian/Ubuntu ist die Installation und Konfiguration sehr einfach, wenn Postfix als MTA zum Einsatz kommt. Dann kann das Programm Postgrey eingesetzt werden, das in den Quellen verfügbar ist. (Postgrey soll auch mit Exim laufen, aber das habe ich nicht getestet.)

Nach dem Installieren mit sudo aptitude install postgrey muss Postfix darüber unterrichtet werden, Postgrey einzubinden. Dazu fügen wir in der Datei /etc/postfix/main.cf die Zeile check_policy_service inet:127.0.0.1:60000 ein im Abschnitt smtpd_recipient_restrictions. Das ganze sieht bei mir so aus:

smtpd_recipient_restrictions = 
    permit_mynetworks 
    permit_sasl_authenticated 
    reject_unauth_destination 
    reject_non_fqdn_recipient
    reject_unknown_recipient_domain
    check_policy_service inet:127.0.0.1:60000
    permit

Danach muss Postfix noch neu die Konfiguration einlesen mittels sudo /etc/init.d/postfix reload. Wenn alles klappt, sieht man nun Dinge wie folgende Zeile in den log-Files:

Oct 24 04:40:01 bheil postfix/smtpd[8878]: NOQUEUE: reject: RCPT from 227.52.218.87.dynamic.jazztel.es[87.218.52.227]: 450 4.2.0 benjamin.heil@bheil.net: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/bheil.net.html; from=imetak1959@BIGSKYLAWYERS.COM to=benjamin.heil@bheil.net proto=ESMTP helo=227.52.218.87.dynamic.jazztel.es

Dieses Beispiel war eine Spam-Mail, die ich kein zweites Mal gesehen hab. Smile

Die Debian/Ubuntu-Standard-Postgrey-Konfiguration sieht eigentlich so gut aus, dass man da nichts machen muss. Falls doch, liegen die Config-Files unter /etc/postgrey bzw. /etc/default/postgrey.

Mails per Postfix über GMails-SMTP-Server versenden (unter Debian oder Ubuntu)


Um Mails von einem Rechner, der mit Debian oder Ubuntu läuft, zu verschicken, kann man Postfix mit folgender Konfiguration einrichten:

Ich gehe davon aus, dass Postfix schon installiert ist. Die Server von GMail setzen für eine erfolgreiche Verbindung TLS-Verschlüsselung voraus. Das ist schon in Debians Postfix reinkompiliert, also müssen wir uns nur darum kümmern, gültige Zertifikate zu haben, damit die Verbindung zu Stande kommen kann (und natürlich braucht man einen gültigen GMail-Account, aber das ist wohl selbstredend Wink ).