DSPAM mit eingebettetem ClamAV, integriert in Postfix, mit virtuellen Benutzern und Domains

Version 1.0
Author: Oliver Meyer <o [dot] meyer [at] projektfarm [dot] de>


Diese Anleitung veranschaulicht, wie man DSPAM mit eingebettetem ClamAV in einen Mail Server, basierend auf Postfix mit virtuellen Benutzern und Domains, integriert. Das heißt Benutzer und Domains, die sich in einer MySQL Datenbank befinden. Dies beruht auf Teilen der Anleitung Virtual Users And Domains With Postfix, Courier And MySQL (Debian Etch) von Falko Timme.

Der daraus resultierende Postfix Server ist funktionsmäßig fast identisch mit dem, in der oben genannten Anleitung, er benötigt allerdings kein Amavisd.

Diese Anleitung ist ein praktischer Leitfaden; theoretisches Hintergrundwissen wird nicht abgedeckt. Dies findest Du in zahlreichen anderen Dokumenten im Netz.

Dieses Anleitung ist ohne jegliche Gewähr! Ich möchte darauf hinweisen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten dieses Ziel zu erreichen - dies ist der Weg, den ich gewählt habe. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbereitung

Bitte folge dieser Anleitung Virtual Users And Domains With Postfix, Courier And MySQL (Debian Etch) von Falko Timme von Schritt 1 - 8 bevor Du hier weiter machst.

2 Füge die debian-volatile Paketdatenbank hinzu

Wir fügen die debian-volatile Paketdatenbank der sources.list hinzu um eine neuere Version von ClamAV zu beziehen, als die, die in der Debian Paketdatenbank vorhanden ist.

vi /etc/apt/sources.list

So sollte es aussehen:
# deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 NETINST Binary-1 20070407-11:29]/ etch contrib main

deb http://ftp.uni-erlangen.de/pub/Linux/debian/ etch main
deb-src http://ftp.uni-erlangen.de/pub/Linux/debian/ etch main

deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib

# Debian Volatile

deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
Importiere den Key für die debian-volatile Paketdatenbank:

wget http://www.debian.org/volatile/etch-volatile.asc -O- | apt-key add -

Nun aktualisieren wir apt und das System:

apt-get update && apt-get upgrade


3 Installiere DSPAM

apt-get install dspam dspam-doc libdspam7-drv-mysql

Wenn Du gefragt wirst, ob die Datenbank für libdspam7-drv-mysql mit dbconfig-common konfiguriert werden soll, wähle yes.

Wenn Du nach dem Benutzer-Passwort des Datenbankadministrators gefragt wirst, gib das Passwort ein, das Du in Schritt 4 der vorherigen Anleitung gewählt hast.

Wenn Du nach einem Passwort für libdspam7-drv-mysql gefragt wirst, lass das Feld frei und wähle OK. Das Passwort wird automatisch generiert.

4 Konfiguriere DSPAM

Nun müssen wir dspam.conf nach unseren Wünschen bearbeiten:

vi /etc/dspam/dspam.conf

Ändere die vorhandenen Zeilen, dass sie wie folgt aussehen:
StorageDriver /usr/lib/dspam/libmysql_drv.so
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent localhost
DeliveryProto SMTP
Preference "spamSubject=SPAM"
Opt out
TrackSources spam virus
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse off
ServerPID /var/run/dspam.pid
ServerMode auto
ServerPass.Relay1 "secret"
ServerParameters "--deliver=innocent"
ServerIdent "localhost.localdomain"
ServerDomainSocketPath "/var/spool/postfix/var/run/dspam.sock"
ClientHost /var/spool/postfix/var/run/dspam.sock
ClientIdent "secret@Relay1"
Aktiviere diese Konfiguration für alle Benutzer:

vi /var/spool/dspam/group

Füge folgende Zeile ein:
dspam:shared:*.example.com
Pass auf, dass example.com mit einem gültigen FQDN ersetzt, sonst dann es sein, dass Dein Postfix nicht richtig funktioniert!

Aktiviere DSPAM:

vi /etc/default/dspam

Ändere START=no zu START=yes

Starte DSPAM:

/etc/init.d/dspam start

5 Konfiguriere Postfix

Nun integrieren wir DSPAM in Postfix:

vi /etc/postfix/master.cf

Ändere:
smtp inet	n	-	-	-	-	smtpd
zu:
smtp inet	n	-	-	-	-	smtpd
-o content_filter=lmtp:unix:/var/run/dspam.sock
Nachdem DSPAM die Mails überprüft hat, sendet er sie an Postfix zurück. Also müssen wir Postfix so konfigurieren, dass die E-Mails wieder in Postfix eingespeist werden, ohne eine überprüfte E-Mail erneut an DSPAM zu schicken.

Füge folgenden Inhalt hinzu:
127.0.0.1: 10026	inet	n	-	-	-	-	smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
Starte Postfix neu:

/etc/init.d/postfix restart

Nun testen wir, ob Postfix richtig funktioniert:

telnet localhost 25

Sollte wie folgt aussehen:

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 debian.example.com ESMTP Postfix (Debian/GNU)

ehlo localhost

Sollte wie folgt aussehen:

250-debian.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Beende telnet:

quit


6 Das erste Mail-Konto erstellen

Wenn Du nach dem mysql-Root-Passwort, gefragt wirst, gib das Passwort ein, das Du in der vorherigen Anleitung in Schritt 4 gewählt hast.

mysql -u root -p
USE mail;

INSERT INTO `domains` (`domain`) VALUES ('example.com');
INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('test@example.com', ENCRYPT('userpassword'), 10485760);

Nun sollte das Mail-Konto zur Benutzung bereit sein.
Postfix wird die Maildirs automatisch erstellen, wenn die erste Mail in diesem Konto ankommt. Bevor Du also Mails erhalten kannst, musst Du zuerst eine an dieses Konto schicken.

Erkannter Spam wird als "SPAM" in der Betreffzeile markiert. Um sicher zu gehen, dass DSPAM Deine E-Mails verarbeitet hat, werden alle Mails einen Eintrag in der unteren Zeile haben "!DSPAM:46b904f4169391516232331!".

7 DSPAM trainieren

Es macht sich ganz gut DSPAM auf Spam und nicht-Spam zu trainieren um eine bessere Spam-Erkennung zu gewährleisten.

Installiere bzip2:

apt-get install bzip2

Beziehe Spam-Mails für Trainingszwecke:

cd /tmp
wget http://spamassassin.apache.org/publiccorpus/20050311_spam_2.tar.bz2
wget http://spamassassin.apache.org/publiccorpus/20030228_easy_ham_2.tar.bz2

tar xvfj 20050311_spam_2.tar.bz2
tar xvfj 20030228_easy_ham_2.tar.bz2

Trainiere DSPAM:

dspam_train test spam_2/ easy_ham_2/

DSPAM wird nun die Datein bearbeiten (das wird etwas dauern) und füllt die Datenbank mit den resultierenden Token.

8 Installiere und konfiguriere ClamAV

apt-get install clamav-daemon

Ändere die Konfiguration:

vi /etc/clamav/clamd.conf

Kommentiere "LocalSocket /var/run/clamav/clamd.ctl" aus und die neue Zeile hinzu:
TCPSocket	3310
Starte ClamAV neu:

/etc/init.d/clamav-daemon restart


9 Integriere ClamAV in DSPAM

vi /etc/dspam/dspam.conf

Ändere die vorhandenen Zeilen, sodass sie wie folgt aussehen:
ClamAVPort     3310
ClamAVHost     127.0.0.1
ClamAVResponse reject
Starte DSPAM neu:

/etc/init.d/dspam restart


10 Links