logo_header

icon_bubbles Forum

icon_bubbles Wiki

icon_bubbles Planet

RootForum Community » Wiki

Spam-Abwehr für Plesk und qmail mit spamdyke

From RootForum Community » Wiki

Jump to:navigation, search

Original: Mini-HOWTO: Spam-Abwehr für Plesk und qmail mit spamdyke

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.


Contents

Einleitung

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.

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.

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.

cd /usr/src
wget http://www.spamdyke.org/releases/spamdyke-4.0.10.tgz
tar -xzf spamdyke-4.0.10.tgz

Je nach Distribution müssen ggf. noch die notwendigen Entwicklerpakete (Compiler, make usw.) installiert werden.

# OpenSuSE Linux <11.0
yast -i gcc openssl-devel
# OpenSuSE Linux >=11.0
yast -i gcc libopenssl-devel
 
# Debian oder Ubuntu Linux
aptitude install gcc libssl-dev
 
# Fedora, RHEL oder CentOS
yum install gcc openssl-devel

Danach kann spamdyke kompiliert und nach /usr/local/bin installiert werden.

cd /usr/src/spamdyke-4.0.10/spamdyke
./configure && make
make install

Optional können auch noch einige Hilfsprogramme installiert werden. Diese sind für das Funktionieren von spamdyke aber nicht notwendig.

cd /usr/src/spamdyke-4.0.10/utils
./configure && make
cp -a dnsa dnsany dnsany_libc dnsmx dnsns dnsptr dnssoa dnstxt domain2path domainsplit /usr/local/bin

Konfiguration

Zunächst wird spamdyke nun mit einer sinnvollen Konfiguration versorgt. Dazu wird eine Datei namens /etc/spamdyke.conf mit folgendem Inhalt angelegt:

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=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


Zusätzlich müssen einige Verzeichnisse und Dateien angelegt werden, auf die spamdyke zurückgreift.

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

Im letzten Schritt muss die Einbindung von qmail über den xinetd bearbeitet werden, so dass spamdyke vor qmail-smtpd ausgeführt wird. Dazu werden die Dateien /etc/xinetd.d/smtp_psa und /etc/xinetd.d/smtps_psa bearbeitet:

# /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
}


# /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
}


Nach der Änderung muss der xinetd mit dem Kommando

/etc/init.d/xinetd restart

neugestartet werden. Weitere Schritte sind nicht notwendig.

Falls noch der ältere inetd eingesetzt wird, muss dessen Konfigurationsdatei /etc/inetd.conf folgendermaßen ergänzt werden:

smtp stream tcp nowait.1000 root /var/qmail/bin/tcp-env tcp-env /usr/bin/env  SMTPAUTH=1  POPLOCK_TIME=20  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
smtps stream tcp nowait.1000 root /var/qmail/bin/tcp-env tcp-env /usr/bin/env  SMTPAUTH=1  POPLOCK_TIME=20  END=1 /var/qmail/bin/relaylock /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.


Separates Logging

Wer bezüglich der Effizienz von spamdyke skeptisch ist und zunächst prüfen möchte, welche E-Mails abgewiesen werden, kann spamdyke mit einem aktuellen Syslog-Daemon in eine separate Logdatei schreiben lassen.

In der Konfigurationsdatei /etc/spamdyke.conf muss lediglich folgende Zeile hinzugefügt werden:

log-level=INFO

Details zum Logging von spamdyke finden sich unter http://spamdyke.org/documentation/README.html#FULL_LOGGING


syslog-ng

Folgende Einträge müssen in die Konfigurationsdatei /etc/syslog-ng/syslog-ng.conf eingefügt werden:

filter f_spamdyke   { level(info) and facility(mail) and match("spamdyke"); };
destination spamdyke { file("/var/log/spamdyke.log"); };
log { source(src); filter(f_spamdyke); destination(spamdyke); };

syslog-ng muss danach mit /etc/init.d/syslog-ng reload neu gestartet werden. Die blockierten E-Mails werden in /var/log/spamdyke.log protokolliert.


rsyslog

Folgender Eintrag muss in die Konfigurationsdatei /etc/rsyslog.conf eingefügt werden:

:programname, isequal, "spamdyke" /var/log/spamdyke.log

rsyslog muss danach mit /etc/init.d/rsyslog reload neu gestartet werden. Die blockierten E-Mails werden in /var/log/spamdyke.log protokolliert.


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.

#!/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


Das Skript muss mit folgendem Kommando ausführbar gemacht werden:

chmod +x /etc/cron.daily/spamdyke.sh


Weiterführende Informationen