Rspamd Keyword Filter
Version vom 14. Dezember 2025, 14:59 Uhr von Thomas.will (Diskussion | Beiträge)
Installation und Basisdienste
- apt update
- apt install rspamd dovecot-core dovecot-sieve
- systemctl enable --now rspamd
Controller-Passwort setzen
- Hash generieren
- rspamadm pw
- Konfiguration des Worker-Controllers
- vi /etc/rspamd/override.d/worker-controller.inc
password = "$2$DEIN_HASH_HIER";
enable_password = "$2$DEIN_HASH_HIER";
bind_socket = [
"*:11334",
"/run/rspamd/controller.sock mode=0660"
];
- dovecot zur Gruppe _rspamd hinzufügen (KRITISCH für Socket-Zugriff)
- usermod -a -G _rspamd dovecot
- systemctl restart rspamd
Postfix-Integration
- postconf -e "smtpd_milters=inet:127.0.0.1:11332"
- postconf -e "non_smtpd_milters=inet:127.0.0.1:11332"
- postconf -e "milter_default_action=accept"
- postfix reload
Bayes-Filter aktivieren
- vi /etc/rspamd/local.d/classifier-bayes.conf
backend = "sqlite3"; path = "/var/lib/rspamd/bayes.sqlite"; min_tokens = 11; new_schema = true; autolearn = true;
- systemctl restart rspamd
IMAPSieve / Dovecot-Integration (Training über Mail-Verschieben)
- vi /etc/dovecot/conf.d/90-sieve.conf
plugin {
sieve = ~/.dovecot.sieve
sieve_global = /var/lib/dovecot/sieve/spam-to-junk.sieve
sieve_global_extensions = +vnd.dovecot.pipe
; Der Pfad, in dem die rspamd-Lernskripte gesucht werden:
sieve_pipe_bin_dir = /usr/local/bin
}
- vi /etc/dovecot/conf.d/90-imapsieve.conf
plugin {
imapsieve = yes
sieve_plugins = sieve_imapsieve sieve_extprograms
; Lernen als SPAM: Verschieben in den Ordner "Junk"
imapsieve_mailbox1_name = Junk
imapsieve_mailbox1_causes = COPY APPEND
imapsieve_mailbox1_before = file:/var/lib/dovecot/sieve/report-spam.sieve
; Lernen als HAM: Verschieben aus dem Ordner "Junk" in einen beliebigen anderen Ordner
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_causes = COPY APPEND
imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/report-ham.sieve
}
- vi /etc/dovecot/conf.d/20-imap.conf
mail_plugins = $mail_plugins imap_sieve imap_filter_sieve
Sieve-Skripte erstellen und kompilieren
- Sieve-Verzeichnis einrichten
- mkdir -p /var/lib/dovecot/sieve
- chown -R dovecot:dovecot /var/lib/dovecot/sieve
- 1. Skript für automatische Ablage (Optional)
- vi /var/lib/dovecot/sieve/spam-to-junk.sieve
require ["fileinto"];
if header :contains "X-Spam" "Yes" {
fileinto "Junk";
stop;
}
- sievec /var/lib/dovecot/sieve/spam-to-junk.sieve
- 2. Sieve-Pipe-Skript für SPAM-Lernen
- vi /var/lib/dovecot/sieve/report-spam.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"]; ; 'rspamd-learn-spam' ist der Name des Skripts in /usr/local/bin pipe "rspamd-learn-spam";
- sievec /var/lib/dovecot/sieve/report-spam.sieve <--- KRITISCH: Muss kompiliert werden
- 3. Sieve-Pipe-Skript für HAM-Lernen
- vi /var/lib/dovecot/sieve/report-ham.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"]; ; 'rspamd-learn-ham' ist der Name des Skripts in /usr/local/bin pipe "rspamd-learn-ham";
- sievec /var/lib/dovecot/sieve/report-ham.sieve <--- KRITISCH: Muss kompiliert werden
- Rechte korrigieren
- chown dovecot:dovecot /var/lib/dovecot/sieve/*.sieve /var/lib/dovecot/sieve/*.svbin
- chmod 644 /var/lib/dovecot/sieve/*.sieve /var/lib/dovecot/sieve/*.svbin
Ausführbare Lernskripte für Rspamd
- Diese Skripte werden vom Dovecot-Benutzer ausgeführt und benötigen die korrekten Rechte (siehe usermod oben)
- vi /usr/local/bin/rspamd-learn-spam
#!/bin/sh # Der Socket wird verwendet, auf den dovecot (dank usermod) Zugriff hat exec /usr/bin/rspamc -h /run/rspamd/controller.sock learn_spam
- vi /usr/local/bin/rspamd-learn-ham
#!/bin/sh exec /usr/bin/rspamc -h /run/rspamd/controller.sock learn_ham
- Skripte ausführbar machen (KRITISCH)
- chmod +x /usr/local/bin/rspamd-learn-*
Dovecot final neu starten
- Alte Binary-Dateien löschen (zur Sicherheit, falls vorher fehlerhaft kompiliert)
- rm -f /var/lib/dovecot/sieve/*.svbin
- systemctl restart dovecot
Rspamd-Funktionstest
- rspamc sollte Bayes anzeigen
- rspamc -h /run/rspamd/controller.sock stat
- Manueller Test der Rechte (WICHTIG
- Sollte als dovecot laufen, um Zugriff zu prüfen):
- sudo -u dovecot /usr/bin/rspamc -h /run/rspamd/controller.sock stat
- Ergebnis muss eine Statistik ohne "Permission denied" liefern.