1. Index
  2. Debian
  3. Desktop
  4. Heimserver
  5. Webserver

Spam filtern

Rspamd bewertet eingehende Nachrichten als Spam oder Ham und unterschreibt ausgehende Nachrichten mit DKIM-Signaturen. Das Bayes-Modul lernt auf Grund der von Benutzern in den Junk-Ordner verschobenen Nachrichten dazu und speichert sein Wissen in einer Redis-Datenbank.

Pakete installieren

Debian pflegt noch kein offizielles Paket. Daher nehmen wir den Schlüssel und das Depot des Rspamd-Projekts in die Paketquellen auf und installieren den Daemon sowie die Redis-Datenbank.

curl https://rspamd.com/apt-stable/gpg.key | apt-key add
echo "deb https://rspamd.com/apt-stable bullseye main" >> /etc/apt/sources.list
apt update
apt install rspamd redis-server

Komponenten konfigurieren

Die benutzerspezifische Konfiguration von Rspamd verteilt sich gemäß der modernen Mode auf zahlreiche Dateien im Verzeichnis /etc/rspamd/local.d. Redis dienst als Unterbau für den Bayes-Filter und läuft im einfachsten Fall auf dem selben Rechner.

/etc/rspamd/local.d/redis.conf
servers = "localhost";

Der private DKIM-Schlüssel wurde bereits erzeugt und im DNS hinterlegt. Rspamd braucht aber Zugriffsrechte und muss den Ort und den Namen des Selektors kennen.

/etc/rspamd/local.d/dkim_signing.conf
path = "/etc/ssl/dkim.key"; selector = "mail1"; allow_username_mismatch = true;

Der Milter für Postfix lauscht auf Port 11332.

/etc/rspamd/local.d/worker-proxy.inc
bind_socket = "localhost:11332"; milter = yes; timeout = 120s; upstream "local" { default = yes; self_scan = yes; }

Der Daemon des Klassifizierers lauscht auf Port 11333.

/etc/rspamd/local.d/worker-normal.inc
bind_socket = "localhost:11333";

Die Webanwendung lauscht auf Port 11334 und wird durch ein Passwort geschützt.

/etc/rspamd/local.d/worker-controller.inc
bind_socket = "localhost:11334"; password = "$2$sng…$czk…"; enable_password = "$2$sng…$czk…";

Den Streuwert des Passworts erzeugt man mit:

rspamadm pw
Enter passphrase: Password
$2$sng…$czk…

Schließlich wird der Daemon neu gestartet.

systemctl restart rspamd

Prüfmodule konfigurieren

Die Domäne des Absenders sollte über einen MX-Record verfügen.

/etc/rspamd/local.d/mx_check.conf
enabled = true;

Antworten auf existierende Nachrichten sind kein Spam.

/etc/rspamd/local.d/replies.conf
action = "no action";

Schwarze Listen (SURBL)

/etc/rspamd/local.d/surbl.conf
redirector_hosts_map = "/etc/rspamd/redirectors.inc";

Dynamisch aktualisierte Listen von Domains mit schlecher Reputation

/etc/rspamd/local.d/url_reputation.conf
enabled = true;

Anti-Phising-Dienste wie OpenPhish und PhishTank

/etc/rspamd/local.d/phishing.conf
openphish_enabled = true; phishtank_enabled = true;

Bayes-Filter trainieren

Falls größere Mengen bekannten Spams verfügbar sind, kann man den Klassifizierer damit trainieren. Eine Mailbox im Mbox-Format zerlegt man vorher noch in einzelne Nachrichten.

mbox=/srv/mail/User/Junk
mkdir spam
awk '/^From / {nr += 1; getline }; { print $0 >> ( "spam/"nr".eml" ) }' $mbox
rspamc learn_spam spam

Statistiken in Webanwendung ansehen

Das Kontrollprogramm bietet eine eingebaut Webanwendung, über die man Statistiken einsehen und den Filter verfeinern kann. Der Webserver lauscht auf Port 11334.

Literatur

  1. zac: Rspamd with Postfix and Dovecot in Debian Stretch, 2017