Disclaimer: Übliches Blabla. Ihr seid selbst für eure Systeme verantwortlich. Ich übernehme keine Garantie, dass das untenbeschriebene Vorgehen funktioniert und euer System nicht zerstört. Falls das passiert: Pech gehabt.
EDIT: Update für spamdyke 4.xx
Die Anleitung steht unter einer Creative Commons-Lizenz:

Im Gegensatz zu anderen Lösungen ist spamdyke nicht-invasiv, d. h. qmail-smtpd muss beim Einsatz von spamdyke nicht gepatched und neu kompiliert werden. Das Setup sollte daher auch ein Update von Plesk und dem damit ausgelieferten qmail überleben.http://www.spamdyke.org/ wrote:spamdyke is a filter for monitoring and intercepting SMTP connections between a remote host and a qmail server. Spam is blocked while the remote server (spammer) is still connected; no additional processing or storage is needed.
Eine Featureübersicht von spamdyke gibt es unter http://www.spamdyke.org/.
Installation
Die Installation ist recht schnell erledigt: Einfach Quellcode herunterladen und kompilieren. Eventuell müssen noch der GCC und die Entwicklerpakete von OpenSSL (für TLS-Support in spamdyke) nachinstalliert werden.
Zunächst wird der Quellcode von spamdyke von der Homepage heruntergeladen, nach /usr/src gespeichert und dort entpackt. Eine vorige Prüfung, ob vielleicht eine aktuellere Version veröffentlicht wurde, schadet dabei nicht.
Code: Select all
cd /usr/src
wget http://www.spamdyke.org/releases/spamdyke-4.0.10.tgz
tar -xzf spamdyke-4.0.10.tgz
Code: Select all
# OpenSuSE Linux
yast -i gcc openssl-devel
# Debian oder Ubuntu Linux
aptitude install gcc libssl-dev
# Fedora, RHEL oder CentOS
yum install gcc openssl-devel
Code: Select all
cd /usr/src/spamdyke-4.0.10/spamdyke
./configure && make
make install
Code: Select all
cd /usr/src/spamdyke-4.0.10/utils
./configure && make
cp dnsa dnsany dnsany_libc dnsmx dnsns dnsptr dnssoa dnstxt domain2path domainsplit /usr/local/bin
Zunächst wird spamdyke nun mit einer sinnvollen Konfiguration versorgt. Dazu wird eine Datei namens /etc/spamdyke.conf mit folgendem Inhalt angelegt:
Code: Select all
local-domains-file=/var/qmail/control/rcpthosts
tls-certificate-file=/var/qmail/control/servercert.pem
smtp-auth-command=/var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /bin/true
smtp-auth-level=ondemand-encrypted
graylist-level=always-create-dir
graylist-dir=/var/qmail/spamdyke/greylist
graylist-min-secs=300
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
greeting-delay-secs=5
dns-blacklist-entry=ix.dnsbl.manitu.net
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
Code: Select all
mkdir -p /var/qmail/spamdyke/greylist
touch /var/qmail/spamdyke/blacklist_ip /var/qmail/spamdyke/blacklist_recipients
/var/qmail/spamdyke/whitelist_ip /var/qmail/spamdyke/blacklist_keywords
/var/qmail/spamdyke/blacklist_senders /var/qmail/spamdyke/whitelist_rdns
chown -R qmaild:qmail /var/qmail/spamdyke
Code: Select all
# /etc/xinetd.d/smtp_psa
service smtp
{
socket_type = stream
protocol = tcp
wait = no
disable = no
user = root
instances = UNLIMITED
env = SMTPAUTH=1 POPLOCK_TIME=20
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
}
Code: Select all
# /etc/xinetd.d/smtps_psa
service smtps
{
socket_type = stream
protocol = tcp
wait = no
disable = no
user = root
instances = UNLIMITED
env = SMTPAUTH=1 POPLOCK_TIME=20
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
}
Vor der Inbetriebnahme sollte aber auf jeden Fall überprüft werden, ob die in der Konfigurationsdatei /etc/spamdyke.conf vorgenommenen Einträge für den jeweiligen Server sinnvoll sind. Insbesondere die eingetragenen DNSBL sollten überprüft werden. Wenn deren Nutzung nicht gewünscht ist, müssen die entsprechenden Einträge entfernt oder auskommentiert werden.
Wartung des Datenbestands (Greylisting)
spamdyke verwaltet die Einträge für das Greylisting nicht selbst. Aufräumarbeiten müssen also periodisch durch einen Cronjob erledigt werden.
Dazu wird ein Skript namens /etc/cron.daily/spamdyke.sh erstellt, welches diese Aufgabe erledigt.
Code: Select all
#!/bin/sh
# Löschen von leeren Einträgen, die älter als 1 Woche sind.
/usr/bin/find /var/qmail/spamdyke/greylist/ -type f -mmin +10080 -size 0 -delete
# Löschen veralteter Datensätze. Der Wert sollte mit dem von graylist-max-secs (in unserer Konfiguration 1814400 Sekunden = 30240 Minuten = 3 Wochen) übereinstimmen.
/usr/bin/find /var/qmail/spamdyke/greylist/ -type f -mmin +30240 -delete
Weiterführende Informationen
http://www.spamdyke.org/documentation/README.html
http://www.spamdyke.org/documentation/FAQ.html
Hinweis in eigener Sache
Speziell an http://www.plesk-forum.de/viewtopic.php?t=613: Das nächste mal bitte auch die Fehler aus der "geliehenen" Anleitung bzw. Konfigurationsdatei entfernen. Danke.