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.
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
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.confservers = "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.confpath = "/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.incbind_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.incbind_socket = "localhost:11333";
Die Webanwendung lauscht auf Port 11334 und wird durch ein Passwort geschützt.
/etc/rspamd/local.d/worker-controller.incbind_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
Die Domäne des Absenders sollte über einen MX-Record verfügen.
/etc/rspamd/local.d/mx_check.confenabled = true;
Antworten auf existierende Nachrichten sind kein Spam.
/etc/rspamd/local.d/replies.confaction = "no action";
Schwarze Listen (SURBL)
/etc/rspamd/local.d/surbl.confredirector_hosts_map = "/etc/rspamd/redirectors.inc";
Dynamisch aktualisierte Listen von Domains mit schlecher Reputation
/etc/rspamd/local.d/url_reputation.confenabled = true;
Anti-Phising-Dienste wie OpenPhish und PhishTank
/etc/rspamd/local.d/phishing.confopenphish_enabled = true; phishtank_enabled = true;
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
Das Kontrollprogramm bietet eine eingebaut Webanwendung, über die man Statistiken einsehen und den Filter verfeinern kann. Der Webserver lauscht auf Port 11334.