Mär 26 2008
Plesk: spamdyke POP-Before-SMTP qmail
English version of this article
Neben dem hier geschilderten Problem mit SMTP-Auth in Verbindung mit spamdyke, haben mich heute einige User darauf hingewiesen dass POP-Before-SMTP seit Inbetriebnahme des qmail Spamfilters dessen Installation ich hier beschrieben habe, nicht mehr funktioniert.
Nach einigen Minuten intensiver Google Suche gab es zu diesem Thema keine Lösung, außer ein “geht nicht mehr und ist ohnehin schlecht”. Dies ist jedoch keine sinnvolle Lösung und mich und meine User und daher habe ich nachgeforscht wie sich dieses Problem einigermaßen zufriedenstellend lösen lässt.
Plesk (besser gesagt relaylock) speichert die IP Adressen welche POP-Before-SMTP Authentifiziert sein sollen in der Datenbank psa und der Tabelle smtp_poplocks ab.
Das nachfolgende Perl Script liest diese Tabelle aus und bildet daraus eine IP Liste, welche sich als ip-whitelist-file für spamdyke verwenden lässt.
Bei der Entscheidung zwischen Perl Daemon oder Cronjob Script, habe ich mich zum Cronjob entschlossen, da ich davon ausgehe dass es sehr selten ist dass ein User eine E-Mail >59 Sekunden nach dem POP Abruf versenden will und gleichzeitig vollkommen auf SMTP-Auth verzichtet.
Die Installation erfolgt folgendermaßen:
# Download und überprüfen des Scriptinhalts: wget http://www.it-crowd.biz/wp-content/uploads/2008/03/spamdyke-pop-before-smtppl.txt mv spamdyke-pop-before-smtppl.txt spamdyke-pop-before-smtp.pl chmod 700 spamdyke-pop-before-smtp.pl nano spamdyke-pop-before-smtp.pl # Für Debian apt-get install liblog-log4perl-perl # Allgemein für jede andere Distribution perl -MCPAN -e shell install Log::Log4perl # /etc/spamdyke.conf (oder allgemein die Konfiguration öffnen) und folgende Zeile einfügen ip-whitelist-file=/var/qmail/spamdyke/pop-before-smtp # Einrichten des Cronjobs mittels "crontab -e" * * * * * /pfad/zum/script/spamdyke-pop-before-smtp.pl
Das Script wird nun alle 60 Sekunden gestartet, liest die Datenbank aus, schreibt das Whitelist File (/var/qmail/spamdyke/pop-before-smtp) und somit ist POP-Before-SMTP wieder funktionstüchtig.
Das Programm generiert keine Ausgabe sondern logged alle Fehler in einer Datei namens /var/log/pop-before-smtp.log. Wer bei Fehlern zusätzlich eine E-Mail an root erhalten will (insofern der Cron Daemon ist dahingehend konfiguriert” muss nichts weiter tun als die Zeile
open STDERR, '>/dev/null'; auszukommentieren.
Download Link:
spamdyke-pop-before-smtp.pl