Admin- / ISP-Software » Plesk

ID #1342 Plesk & Qmail: Spamdyke mit MySQL-Logging

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;
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;
GRANT ALL ON spamdyke.* TO 'spamdyke'@'localhost' IDENTIFIED BY 'spamdyke';

Nun brauchen wir noch einige Libaries und einen C-Compiler:

apt-get install gcc libmysqlclient15-dev libssl-dev

Download und Kompilieren

Aktuell ist es die Version 4.0.8 von Haggy:

cd /usr/local/src
wget http://www.haggybear.de/download/spamdyke-4.0.8-mysql.tgz
tar xzf spamdyke-4.0.8-mysql.tgz
cd spamdyke-4.0.8-mysql
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/2304d1225155685-plesk-spamdyke-control-panel-scp.zip
unzip scp.zip
mv scp183 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.

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)
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.

Weitere Links

 

sozial Bookmarking
Bookmarken bei YIGG Bookmarken bei Mister-Wong Bookmarken bei Icio Bookmarken bei del.icio.us Bookmarken bei Technorati Bookmarken bei Furl Bookmarken bei Spurl Bookmarken bei Yahoo Bookmarken bei Google

huschi, 2008-11-23 18:48     Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen

Dieser Inhalt ist unter der Creative-Commons Lizenz lizensiert.

Probleme bitte im Server-Support-Forum diskutieren.

Rubriken zu diesem Artikel
überflüssig 1 2 3 4 5 wertvoll  
Durchschnittliche Bewertung:   0 von 5 (0 Bewertungen)

Artikel kommentieren

Kommentar von Steffen (2008-11-10 13:12:49):
Hallo Huschi,

danke für den Patch - klingt nett!

Wurde der Patch bereits an den Spamdyke-Entwickler gesendet und wenn ja: Besteht Aussicht, dass das mal in Spamdyke einfließt?

Steffen

Kommentar von huschi (2008-11-10 13:24:45):
Der Dank gilt wohl eher Haggybear!
Und ja, soweit ich weiß, steht Haggy mit dem Spamdyke-Entwickler in Verbindung.

huschi.