Plesk: qmail Anti Spam mittels spamdyke - HowTo

Der vom Hause SWSoft standardmäßig ausgelieferte Mailserver qmail wurde zu einer Zeit entwickelt als Spam, Phishing, Malware und Mailbomben noch Fremdwörter waren.

Daher nimmt dieser fern ab der heutigen Mailserver Realität alle E-Mails entgegen die ihm über das Netzwerk vermittelt werden.

Der einzige Schutz der einem danach noch verbleibt ist die Textfilterung mittels spamassassin, was jedoch nicht ausreichend ist um einen Rund um Schutz herzustellen.

Um eine einigermaßen zufriedenstellende Lösung gegen Spam zu erhalten benötigen wir als Multiple Maßnahmen die dem Schrott aus dem Netzwerk den Kampf ansagen.

Die Aufstellung sieht nachdem man sich durch diesen Artikel durchgearbeitet hat wie folgt aus:

spamdyke: Netzwerkseitiger Spamfilter der während der SMTP Connection prüft und entscheidet.
spamassassin: Der alle E-Mails anhand Textbasierte Filterung überprüft bevor diese in die Postfächer gehen.

Das Tutorial basiert auf Plesk 8 und Debian sarge, lässt sich aber problemlos auf alle anderen Distributionen übertragen, da nur sehr wenige Pakete nachinstalliert werden müssen (wenn überhaupt)

1. Installation von spamdyke

apt-get install gcc openssl gzip libc6-dev make
cd /usr/src
wget http://www.spamdyke.org/releases/spamdyke-3.1.6.tgz
tar xfz spamdyke-3.1.6.tgz
cd spamdyke-3.1.6/spamdyke/
./configure && make && make install
cd ../utils/
./configure && make && make install

Nun wurde spamdyke aus den Sources kompiliert und nach /usr/local/bin kopiert.

2. Konfiguration von spamdyke

Öffnen der Konfigurationsdatei:

nano /etc/spamdyke.conf

In die Konfigurationsdateien werden alle zum Betrieb notwendigen Konfigurationsparameter eingefügt:

log-level=2
local-domains-file=/var/qmail/control/rcpthosts
max-recipients=5
idle-timeout-secs=60
graylist-dir=/var/qmail/spamdyke/greylist
graylist-min-secs=290
graylist-max-secs=1814400
greeting-delay-secs=5
check-dnsrbl=ix.dnsbl.manitu.net
check-dnsrbl=zen.spamhaus.org
check-dnsrbl=list.dsbl.org
check-dnsrbl=zombie.dnsbl.sorbs.net
check-dnsrbl=dul.dnsbl.sorbs.net
check-dnsrbl=bogons.cymru.com
reject-missing-sender-mx
reject-empty-rdns
reject-unresolvable-rdns
reject-ip-in-cc-rdns
tls-certificate-file=/var/qmail/control/servercert.pem
smtp-auth-command=/var/qmail/bin/smtp_auth /var/qmail/bin/true
smtp-auth-command=/var/qmail/bin/cmd5checkpw /var/qmail/bin/true
hostname-file=/var/qmail/control/me

Anlegen der Ordnerstrukturen:

mkdir /var/qmail/spamdyke
mkdir /var/qmail/spamdyke/greylist

Wer Greylisting in Verbindung mit spamdyke haben möchte muss den Namen der Domain für die Greylisting aktiviert sein soll als Ordner im Greylisting Verzeichnis anlegen.

Beispiel:

mkdir /var/qmail/spamdyke/greylist/meinedomain.tld
chmod 777 /var/qmail/spamdyke/greylist/meinedomain.tld

Wer Greylisting für alle Plesk Domains aktivieren möchte kann dies mit folgender Zeile tun:

for i in  `cat /var/qmail/control/rcpthosts`; do mkdir /var/qmail/spamdyke/greylist/"$i"; done
chmod 777 /var/qmail/spamdyke/greylist/* -R

3. Einbinden von spamdyke in das Plesk Setup

Wer inetd verwendet editiert die Konfigurationsdatei /etc/inetd.conf bei den Zeilen "smtp" und "smtpd". Diese dürfen jeweils nur 1 Zeile haben, was hier im Blog nicht funktioniert da es den Rahmen sprengt!!

Zeile 1.
smtp stream tcp nowait.1000 root /var/qmail/bin/tcp-env tcp-env  /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

Zeile 2.
smtps stream tcp nowait.1000 root /var/qmail/bin/tcp-env tcp-env  /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

Wer xinetd verwendet muss im selben Server in der Section "server_args" von xinetd dessen Konfigurationsdateien ändern. Diese sind /etc/xinetd.d/smtp_psa und /etc/xinetd.d/smtps_psa

Danach müssen inetd oder xinetd neugestartet werden

/etc/init.d/inetd restart
/etc/init.d/xinetd restart

Nun sollte sich der Einsatz von spamdyke in den Maillogs sofort bemerkbar machen und der eingehende Spam trastisch sinken.

Das ganze lässt sich schön in den Maillogs die meist unter /var/log/mail.info zu finden sind sehen.
Jede von spamdyke abgewiesene E-Mail wird dort protokolliert und die Gründe genannt.

Wer POP-Before-SMTP weiterhin nutzen möchte folgt diesem Link zum zwingend notwendigen HowTo.

Wer mehr über dieses wunderschöne Tool wissen möchte, besucht am besten die offizielle Webseite unter: http://www.spamdyke.org

12 Gedanken zu „Plesk: qmail Anti Spam mittels spamdyke - HowTo“

  1. Hallo,

    ich habe mich sehr gefreut, als ich das beschriebene HowTo gefunden habe.
    Gut beschrieben, tolles Tool.

    Allerdings tritt bei mir nach der Installation permanent ein Fehler auf:

    """

    ERROR: incorrect SSL/TLS private key password or SSL/TLS certificate/privatekey mismatch (/var/qmail/control/servercert.pem): A protocol or library failure occurrederror:140A80B1:lib(20):func(168):reason(177)

    """
    Die Fehlermeldung trifft auch offenbar zu, denn im Verzeichnis /var/qmail/control finde ich nur folgenden Eintrag:

    clientcert.pem -> /var/qmail/control/servercert.pem

    Die Datei servercert.pem existiert dort nicht.

    Gibt es dafür einen Trick, oder eine Idee - würde mich freuen.

    Gruß C.

  2. Hi,

    danke für die netten Worte.

    Die Datei servercert.pem im Ordner /var/qmail/control/ wird von Plesk während der Installation generiert und dort abgelegt.

    Sie beinhaltet Zuerst einen Public Key und danach das Zertifikat.

    Wenn es die Datei bei dir nicht nutzt du offenbar SMTP ohne SSL und TLS.
    Dadurch ist es möglich die Angabe "tls-certificate-file=" einfach weg zu lassen.

    Alternativ kannst du dir das s.g. SSL-Chain-File auch selbst generieren oder aus Plesk heraus ziehen. (default certificat im Admin Bereich)

  3. Jo,

    danke für die schnelle Antwort.

    Ich habe auf der Seite - http://qmail.jms1.net/smtp-service.shtml -
    folgende Anweisung gefunden:

    Creating an SSL key file

    If you are setting up an SSL or TLS server, you will need to create a /var/qmail/control/servercert.pem file. This file contains the public and private keys used to set up SSL or TLS encryption. It should be readable to the userid which your "qmail-smtpd" program runs as (which is normally the "qmaild" user.)

    Part of the file is a "certificate", which is the public key with a signature applied to it. This is the same kind of signature used when you create an SSL key for use with a secure web site- in fact, if you already have such a certificate from an SSL web site, you can use it (with the matching ".key" file) to build this .pem file. As long as the key and the certificate are both stored in PEM-encoded format, you can "cat" the files together and save the result as "servercert.pem", and it will work.

    If you don't have such a key, you can create a key and then sign it using itself (also known as a "self-signed" certificate.) Clients will complain about the certificate not being signed by a trusted certificate authority, but the encryption is just as secure. The following example shows how to create a self-signed certificate which expires ten years from the date it was created.

    # cd /var/qmail/control
    # openssl req -newkey rsa:1024 -x509 -nodes -days 3650 -out servercert.pem -keyout servercert.pem
    Generating a 1024 bit RSA private key
    ............................++++++
    .............................++++++
    writing new private key to 'servercert.pem'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:US
    State or Province Name (full name) [Some-State]:Florida
    Locality Name (eg, city) []:Orlando
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:John Simpson
    Organizational Unit Name (eg, section) []:
    Common Name (eg, YOUR name) []:testkey.jms1.net This name MUST MATCH the name your clients will put into their mail program as their SMTP server name.
    Email Address []:jms1@jms1.net
    # chown root:nofiles servercert.pem The "nofiles" group is the group which "qmaild" belongs to. This combination of ownership and permissions allows qmail-smtpd to read the key, but not change or delete it.
    # chmod 640 servercert.pem

    Funktioniert prima :-)

    SpamDyke nimmt das Zertifikat und filter bis zu 3.000 Mails pro Tag - GEIL !!!

  4. Erstmal danke für einen der wenig findbaren Beiträge zu diesem Thema.

    Mittlerweile gibts ja Version 4.x und hab auch fluggs diese installiert. log-level & check-dnsrbl brav angepasst, aber leider Probleme mit SMTP_AUTH und dem verflixten relaylock. Überlass ich das spamdyke (--access-file=/etc/tcp.smtp) .. wunderbar. Aber .. das relaylock müsste doch smtp_auth ermöglichen, ganz ohne?!

    Vielleicht hast du ne Idee?!

  5. Hab's wohl doch noch rausgekriegt :)

    Ich ergeh mich mal nicht in Erklärungen und sag einfach, dass ein gezieltes TCPREMOTEIP=1.2.3.4 in /etc/xinetd.d/smtp_psa geholfen hat.

  6. hi, das ist eine super coole anleitung vielen dank hat mir im gegensatz zu allen anderen tutorials sehr geholfen da ich noch den alten inetd anstatt xinetd nutze.

    hat einer von euch vielleicht schon erfolgreich die neueste version 4.01 installiert? die will bei mir einfach nicht laufen:( fände es sehr cool wenn man das tutorial für die neue version abpassen könnte.

  7. hi,

    super beschreibung. Habe mir Spamdyke 4.0.3 auf meinem PLESK 8 Server installiert. Bekomme aber folgende Fehlermedlung bei

    spamdyke --config-test:
    -----------------------------------------------------------------------------------------
    spamdyke 4.0.3+TLS+CONFIGTEST+DEBUG (C)2008 Sam Clippinger, samc (at) silence (dot) org
    http://www.spamdyke.org/

    Use -h for an option summary or see README.html for complete option details.

    ERROR: Missing qmail-smtpd command
    -----------------------------------------------------------------------------------------

    Hast Du vielleicht eine Idee ?? Danke im Voraus.

  8. Hallo,
    habe inzwischen so ziemlich alles über das Tool gelesen und auch so ziemlich alles ausprobiert, bekomme aber einfach meinen SMTP nicht mehr zum Laufen.
    Port25 ist laut Telnet nicht ansprechbar

    Finde einfach keinen Ansatz mehr :(

    Wäre schön, wenn hier jemand die zündende Idee hat.

    Gruß
    jokotten

Schreibe einen Kommentar