Problem:
Spamdyke funktioniert recht gut, hat aber einen Nachteil: Es schreibt seine Meldungen ausschließlich ins Maillog. Wer also eine Auswertung erstellen will, muß das Maillog umständlich durchsuchen. (Z.B. Haggy's Plesk Spamdyke Control Panel.) Daher hat sich Haggy entschlossen, Spamdyke um ein Logging in eine MySQL-Datenbank zu erweitern.
Im Folgenden ist die Installation von Spamdyke mit MySQL-Logging inkl. Haggy's Spamdyke-Control-Panel für Plesk beschrieben:
Installation
Vorbereitung
Als erstes richten wir die Datenbank und einen Datenbank-User ein:
CREATE DATABASE spamdyke; USE spamdyke; CREATE TABLE `spamdyke_log_table` ( `id` bigint(7) NOT NULL auto_increment, `time` timestamp NOT NULL default CURRENT_TIMESTAMP, `reason` varchar(20) character set utf8 NOT NULL, `from` varchar(50) character set utf8 NOT NULL, `to` varchar(50) character set utf8 NOT NULL, `ip` varchar(15) character set utf8 NOT NULL, `rdns` varchar(50) character set utf8 NOT NULL, `auth` varchar(25) character set utf8 NOT NULL, PRIMARY KEY (`id`), KEY `time` (`time`), KEY `reason` (`reason`,`from`,`to`,`ip`,`rdns`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; #und noch den User einrichten: GRANT ALL ON spamdyke.* TO 'spamdyke'@'localhost' IDENTIFIED BY 'spamdyke'; FLUSH PRIVILEGES;
Nun brauchen wir noch einige Libaries und einen C-Compiler:
#Debian: apt-get install gcc libmysqlclient15-dev libssl-dev #SuSE (Achtung, in letzter Zeit hat SuSE seine Pakete leicht umbenannt!) yast -i gcc libmysqlclient-devel libopenssl-devel
Download und Kompilieren
Aktuell ist es die Version 4.0.8 von Haggy:
cd /usr/local/src
wget http://www.haggybear.de/download/spamdyke-mysql.tgz
tar xzf spamdyke-mysql.tgz
cd spamdyke-*
cd spamdyke/
./configure
Hier achten wir bei der Ausgabe auf Fehlermeldungen die wir beheben, indem wir die entsprechenden Devel-Pakete nach installieren. Für den MySQL-Support müssen folgende Zeilen auftauchen:
checking for MySQL (for MySQL-Logging support)... yes checking for MySQL includes (for MySQL-Logging support)...yes
Wenn alles vorhanden ist geht es weiter in unserem Dreisatz:
make make install
Konfiguration
Folgende /etc/spamdyke.conf
kann man als Ausgang für seine individuelle Konfiguration nutzten:
#für das Plesk-Addon von Haggybear: log-level=info local-domains-file=/var/qmail/control/rcpthosts tls-certificate-file=/var/qmail/control/servercert.pem #Copy&Paste from xinetd-conf smtp-auth-command=/var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /bin/qmail/bin/true smtp-auth-level=ondemand-encrypted #wichtiger Timeout: idle-timeout-secs=100 graylist-level=always-create-dir graylist-dir=/var/qmail/spamdyke/greylist #(300 Sek. = 5 Min.) graylist-min-secs=300 #1814400 Sek. = 3 Wochen graylist-max-secs=1814400 sender-blacklist-file=/var/qmail/spamdyke/blacklist_senders recipient-blacklist-file=/var/qmail/spamdyke/blacklist_recipients ip-in-rdns-keyword-blacklist-file=/var/qmail/spamdyke/blacklist_keywords ip-blacklist-file=/var/qmail/spamdyke/blacklist_ip rdns-whitelist-file=/var/qmail/spamdyke/whitelist_rdns ip-whitelist-file=/var/qmail/spamdyke/whitelist_ip sender-whitelist-file=/var/qmail/spamdyke/whitelist_senders greeting-delay-secs=5 #ggf. ein-/auskommentieren: dns-blacklist-entry=ix.dnsbl.manitu.net #dns-blacklist-entry=sbl.spamhaus.org #dns-blacklist-entry=zen.spamhaus.org #dns-blacklist-entry=list.dsbl.org #dns-blacklist-entry=zombie.dnsbl.sorbs.net #dns-blacklist-entry=dul.dnsbl.sorbs.net #dns-blacklist-entry=bogons.cymru.com reject-missing-sender-mx reject-empty-rdns reject-unresolvable-rdns reject-ip-in-cc-rdns #MySQL-Logging: config-mysql-database=spamdyke config-mysql-username=spamdyke config-mysql-password=spamdyke
Da auch mit Haggy's Änderung Spamdyke noch nicht vollends auf MySQL basiert, müssen folgende Dateien und Verzeichnisse noch per Hand angelegt werden:
mkdir /var/qmail/spamdyke mkdir /var/qmail/spamdyke/greylist touch /var/qmail/spamdyke/blacklist_ip touch /var/qmail/spamdyke/blacklist_recipients touch /var/qmail/spamdyke/whitelist_ip touch /var/qmail/spamdyke/whitelist_senders touch /var/qmail/spamdyke/blacklist_keywords touch /var/qmail/spamdyke/blacklist_senders touch /var/qmail/spamdyke/whitelist_rdns chown -R qmaild:qmail /var/qmail/spamdyke
Installation abschließen
ACHTUNG: der Plesk-Eigene RBL-Blocker (/usr/sbin/rblsmtpd
) ist nicht mehr nötig!
Bei Einsatz von inetd
kann es sogar zu Fehlern führen, da die Zeile dann zu lang wird.
Vorher also im Plesk abschalten unter [Server] -> [E-Mail] -> "Spamschutz auf Basis der DNS-Blackhole-Listen aktivieren"
Nun binden wir Spamdyke in die SMTP-Verarbeitung ein.
Entweder in /etc/inetd.conf
:
smtp stream tcp nowait.1000 root /var/qmail/bin/tcp-env tcp-env /usr/bin/env SMTPAUTH=1 SHORTNAMES=1 END=1 /var/qmail/bin/relaylock /usr/local/bin/spamdyke -f /etc/spamdyke.conf /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
Oder in /etc/xinetd.d/smtp_psa
(und smtps_psa
):
service smtp {
...
server = /var/qmail/bin/tcp-env
server_args = -Rt0 /var/qmail/bin/relaylock /usr/local/bin/spamdyke -f /etc/spamdyke.conf /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
}
Aufräumscript
Haggy liefert das Aufräumscript bereits mit:
cp -p ./cron/spamdyke-mysql-cleanup /etc/cron.daily/.
Kurz im Editor öffnen und die Datenbank-Daten angeben.
Wichtig bei älteren Versionen: Wir schmeißen alle Kommentare mit //
raus, da diese fehlerhaft sind.
use constant DBD => 'DBI:mysql:spamdyke:localhost:3306'; use constant DBUSER => 'spamdyke'; use constant DBPASS => 'spamdyke';
Wer keine tägliche Email erhalten möchte, schreibt zusätzlich ein exit;
nach dem disconnect
:
$dbh->disconnect; exit; my $rec = MAIL_RECIPIENT;
Installation des SCP
Der ganze Aufwand lohnt sich ja nur, wenn man das "Plesk Spamdyke Control Panel" installieren möchte:
Aktulle Version bei haggybear.de oder im SSF. (Den Thread nach neueren Versionen durchsuchen!)
#SuSE cd /usr/local/psa/admin/htdocs #Debian: cd /opt/psa/admin/htdocs wget -O scp.zip http://serversupportforum.de/forum/attachments/plesk/2623d1237420678-plesk-spamdyke-control-panel-scp2.zip unzip scp.zip mv scp211 spamdyke cd spamdyke #Da Haggy leider nur ein Zip anbietet, müssen wir uns die Dateirechte alle per Hand setzten: chmod 755 ../spamdyke chown -R root:psaadm * chmod 644 -R * chmod +x lang *.sh chown root:root wrapper chmod 4755 wrapper chmod 777 rights.txt
Die config.inc.php
muß i.d.R. nicht verändert werden.
Aber unter Ubuntu muss man ggf. noch die Shell ändern, da von Haggy /bin/sh
als Link auf /bin/bash
erwartet wird. Da Ubuntu aber auf /bin/dash
verlinkt muss man entweder den Link umbiegen, oder den Wrapper mit dem konkreten Aufruf von bash
neu kompilieren.
(Letzteres muss dann nach jedem Update erneut gemacht werden.)
Plesk-Button
Nun loggen wir uns in Plesk ein und gehen auf [Server] -> [Benutzerdefnierte Buttons] und klicken dort auf [Neuen Button anlegen].
Folgende Einträge setzen wir (der Rest bleibt unverändert):
Button-Beschriftung | Spamdyke |
Hintergrundbild | (z.B. das dslogo.gif aus dem Zip) |
URL | /spamdyke/index.php |
Domain-ID einfügen | [klick] |
Domainname einfügen | [klick] |
Kunden-ID einfügen | [klick] |
Kontexthilfe-Inhalt | Spamdyke-Control-Panel |
URL im Control Panel öffnen | [klick] |
Sichtbar für andere Benutzer | [klick] |
Nach dem Klick auf [OK] wird der Button angelegt und ist in der Domain-Ansicht verfügbar.
Troubleshooting:
a) Folgender Fehler wird im Plesk angezeigt:
Spamdyke ist nicht installiert, oder der Pfad zur spamdyke.conf in config.inc.php stimmt nicht!!
Dies ist ein Anzeichen dafür, dass der Wrapper nicht richtig funktioniert. Wenn das SetUID-Bit korrekt gesetzt ist (prüfen!!!), dann probiert es mal mit einem selbst kompilierten Wrapper. (Vor allem auf 64-Bit-Systemen oder Ubuntu.)
b) Das SCP läuft zwar aber es werden kein Daten angezeigt.
Überprüft im SCP die config.inc.php
ob folgende Zeile existiert (und zwar nur Einmalig):
define("LOG_TYPE","mysql");
c) Das Update wird zwar angezeigt, funktioniert aber nicht.
Entweder wieder ein Problem mit dem Wrapper, falls er selbst kompiliert war. (Denn beim Update wird ein neuer installiert.)
Oder ein Fehler in der Update-Routine. In beiden Fällen hilft eine manuelle Installation wie oben aus einer neuen Zip-Datei.
Weitere Links
- Haggybear's Plesk Spamdyke Control Panel
- Greylisting: Vor- und Nachteile
- Plesk & Qmail: Greylisting mit spamdyke
- Plesk & Qmail: Spamprotection mit Greylisting
- Debian/Postfix: Greylisting mit Postgrey
- SuSE/Postfix: Greylisting mit Postgrey
- Artikel bei Wikipedia: Greylisting
- Offizielle Site: spamdyke
- Readme - FAQ