DSPAM ist ein lernender, contentbasierter Spamfilter. Im Gegensatz zu Spam Assassin verwendet DSPAM keine statischen Regeln sondern verlässt sich voll und ganz auf den Bayes-Filter. Daher benötig DSPAM zu Beginn etwas Zeit(Lernphase) ehe er effektiv Spam filtert. In diesen Blog wird die Einbindung in ein bestehendes Postfixsetup erklärt auf einer ArchLinux Installation.
Benötigte Software
Fast alle Distributionen bieten bereits fertige Pakete für die Programme an.
Datenbank anlegen
# mysqladmin -u root -p create dspam
# mysql dspam < /var/lib/dspam/mysql/mysql_objects-4.1.sql
# mysql -u root -p
mysql> grant all on dspam.* to dspam@localhost identified by 'ThisIsMyPassword';
Um die Datenbank sauber zu halten sollte man noch folgendes Script nach /etc/cron.daily kopieren.
#!/bin/bash
mysql -u dspam -p ThisIsMyPassword dspam < /var/lib/dspam/mysql/purge-4.1.sql
DSPAM konfigurieren
DSPAM wird mit der Datei /etc/dspam/dspam.conf konfiguriert. Um die eben erstellte Datenbank mit DSPAM zu benutzen müssen dort folgende Einträge erstellt/angepasst werden:
StorageDriver /usr/lib/dspam/libmysql_drv.so
MySQLServer /var/run/mysqld/mysqld.sock
MySQLUser dspam
MySQLPass ThisIsMyPassword
MySQLDb dspam
MySQLCompress true
MySQLReconnect true
MySQLConnectionCache 10
Damit Postfix eine Verbindung zu DSPAM aufbauen kann muss noch folgendes erstellt werden:
ServerDomainSocketPath "/var/run/dspam/dspam.sock"
und damit DSPAM die klassifizierten Mails wieder an Postfix zurückgeben kann muss folgendes eingetragen werden:
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent mail.whoami.org.uk
DeliveryProto SMTP
Es ist auch möglich direkt von DSPAM einen MDA anzusprechen. Dies ist allerdings nicht Teil dieser Anleitung. Die anderen Einstellungen können nach den eigenen Präferenzen gewählt werden aber folgende sind zumindest Empfohlen.
TrainingMode toe
Feature noise
Feature whitelist
Feature tb=5
Algorithm graham burton
Tokenizer osb
PValue bcr
Sollte der Eintrag noch nicht vorhanden sein so muss auch noch
Trust dspam
eingetragen werden.
Eine Erklärung der weiteren Settings gibt es hier.
Postfix Einstellungen
Damit Postfix Mails an DSPAM weitereicht muss in /etc/postfix/master.cf folgende Zeile zum smtp service hinzugefügt werden:
-o content_filter=lmtp:unix:/var/run/dspam/dspam.sock
Damit Postfix von DSPAM klassifizierte Mails wieder annimmt musst in der gleichen Datei folgender Eintrag neu erstellt werden.
localhost:10026 inet n - 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
Wenn später das umlernen von bereits bewerteten Mails via Mail möglich sein soll muss folgendes an das Ende der master.cf gesetzt werden:
dspam-retrain unix - n n - - pipe
flags=Rhq user=dspam argv=/usr/bin/dspam --mode=toe --class=$nexthop --source=error --user ${sasl_username}
In der /etc/postfix/aliases sollten folgende beide Zeilen hinzugefügt werden:
ham: ham@meine.domain
spam: spam@meine.domain
In die /etc/postfix/transport muss folgendes eingetragen werden.
spam@meine.domain dspam-retrain:spam
ham@meine.domain dspam-retrain:innocent
Damit später keine nicht authentisierten Benutzer Mail an die ham/spam Adressen schicken können muss noch die Datei /etc/postfix/dspam_check_aliases mit folgenden Inhalt angelegt werden.
/^.*(spam|ham)@.*$/ REJECT
Jetzt sollte man nicht vergessen mit postmap die lookup Tables der 3 eben bearbeiteten Dateien neu zu erstellen.
In der /etc/postfix/main.cf sollte in den smtpd_recipient_restrictions nach permit_sasl_authenticated noch
check_recipient_access pcre:/etc/postfix/dspam_check_aliases
eingetragen werden.
Nach einen Neustart von Postfix und den Start von DSPAM sollte DSPAM jetzt Spam filtern.
Webinterface
Sollte man die Quarantänefunktion von DSPAM nutzen so muss das Webinterface eingerichtet werden um Mails die sich in Quarantäne befinden freischalten zu können.
Die Dateien für das Webinterface befinden sich unter /srv/http/dspam/cgi-bin/. Der httpd sollte so Eingerichtet werden das die cgi Datein als User dspam ausgeführt werden(z.b. mit Apaches suexec). Außerdem eine Authentisierung der User über htpasswd stattfinden. Weiter Informationen zum Webinterface finden man im Wiki von DSPAM
