Bei Ubuntu und Debian ist die Erweiterung von Postfix um Postgrey kein großes Ding. Die leichtgewichtige Software installiert man mit:
# apt-get install postgrey
Die Integration von Postgrey in Postfix besteht dann nur noch darin, die Zeile
»smtp_recipient_restrictions
«
in der Datei
»/etc/postfix/main.cf
«
zu finden und am Ende ein Kommando an die Liste anzuhängen (
Listing 1
). Die Settings können sich natürlich etwas unterscheiden, wichtig ist die letzte Zeile. Sie besagt, dass Postfix mit einer Software, die auf Port 60 000 hört, eine Überprüfung starten soll, bevor es die SMTP-Transaktion abschließt. Die Portnummer ist im Bedarfsfall änderbar, aber weil es sich um
»localhost
«
handelt, muss man auf keine Firewall Rücksicht nehmen.
Listing 1
Integration von Postgrey in Postfix
Danach wird Postfix neu gestartet. In diesem Fall wäre auch ein einfacher Reload genug, aber der Restart stellt sicher, das Postfix seine gesamte
»main.cf
«
neu einliest.
# /etc/init.d/postfix restart
Postgrey kann nun während des E-Mail-Dialogs mit anderen Servern zu Postfix sprechen.
Für ein voll funktionsfähiges Setup braucht man nur drei Konfigurationsfiles zu beachten. Das erste, seltener benutzte, ist
»/etc/postgrey/whitelist_recipients
«
. Es erlaubt einigen Empfängern, den gesamten Mechanismus zu umgehen. Das ist etwa für einige öffentliche Adressen interessant, die immer Post empfangen sollen wie
»postermaster
«
oder
»abuse
«
.
Das zweite File, das häufiger gebraucht wird, ist
»/etc/postgrey/whitelist_clients
«
. Es regelt das Whitelisting für alle eingehenden Mails. Man kann damit individuelle Adressen und Domains oder IP-Adressen oder durch reguläre Ausdrücke beschriebene Sender filtern. Man kann damit sogar Präfixe von Absenderadressen auf die Whitelist setzen wie
»chrisbinnie@
«
– wenn der Absender mehrere Mail-Adressen mit demselben Präfix, aber unterschiedlichen Domain-Endungen hat. Das File könnte im Ergebnis so aussehen:
Domain names: debian.org gmail,org Regular Expressions (all outbound GMail Boxes): /^.*-out-.*\.google\.com$/ CIDR IP Adresses: 112.113.0.0/24 112.113.0.10
Das letzte Konfigurationsfile ist
»/etc/default/postgrey
«
. Es enthält einige einstellbare Parameter. Das
»POSTGREY_OPTS
«
-Kommando
POSTREY_OPTS = "--inet=60000--delax=199--auto-Whitelist_clients=5--greylist-text"
stellt unter anderem den benutzten Port ein. Bei dem darauffolgenden Parameter sollte man einige Einstellungen ausprobieren, um passende Werte zu finden. Der Delay-Schwellwert bezeichnet die Zeit, die ein wiederkehrender Mailserver verstreichen lassen muss, um sich erneut verbinden zu dürfen. In diesem Fall wird jeder entfernte Delivery Agent, der sich vor Ablauf von 199 Sekunden erneut zu konnektieren versucht, angewiesen, es später wieder zu versuchen. Wenn er es in der Vergangenheit bereits zu oft versucht hat, wird er ganz ausgesperrt. Der Default sind fünf Minuten, aber man kann die Wartezeit für Ersteinlieferer problemlos auf 199 Sekunden kürzen.
Der Eintrag
»--auto-whitelist-clients
«
ist etwas komplizierter, man kann ihn aber auch gänzlich weglassen. Wird er wirksam, landet ein entfernter Agent, der eine Reihe von Mails erfolgreich eingeliefert hat, nach einer bestimmten Wartezeit automatisch auf einer Whitelist. Das kann ungünstigenfalls den gesamten Spamschutz untergraben; man muss den Parameter also mit Bedacht verwenden. Die Art des Spam und auch der Anteil interner Mails entscheiden darüber, ob man diesen Parameter einsetzen kann oder besser nicht.
Ein letzter Parameter, den man einstellen sollte, ist:
POSTGREY_TEXT="Sorry, your mail server has been greylistetd for fiveminutes. Please come back later."
Das ist die Message, die dem entfernten Delivery Agent übermittelt wird, während die Annahme der Mail verzögert wird. Nachdem die Konfiguration angepasst ist, muss der Daemon neu gestartet werden, damit die Änderungen wirksam werden.
# /etc/init.d/postgrey restart
Um zu überprüfen, ob Postgrey läuft, kann man
»lsof
«
verwenden, das anzeigt, ob jemand an Port 60 000 lauscht (
Listing 2
). Bei Bedarf installiert man
»lsof
«
mit
»apt-get install lsof
«
. Das wars. Zeigt
»lsof
«
einen Eintrag für den TCP-Port 60 000, ist alles in Ordnung.
Listing 2
List Open Files