Rspamd Keyword Filter

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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.