Rspamd Bayes lernen durch Verschieben

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Rspamd Bayes lernen durch Verschieben (IMAPSieve ON TOP)

Ziel

  • Bestehendes Setup bleibt unverändert:
    • Postfix + Rspamd + Dovecot (LMTP + Sieve)
    • Keyword-Filter aktiv
    • Bayes aktiv
    • Junk-Entscheidung weiterhin nur über Sieve
  • Lernen erfolgt automatisch:
    • Mail aus INBOX nach INBOX.Junk verschoben → learn_spam
    • Mail aus INBOX.Junk nach INBOX verschoben → learn_ham
  • Kein Autolearn
  • Kein Reject
  • Keine Client-Plugins erforderlich

Voraussetzung

  • Rspamd Bayes ist aktiv (sqlite)
  • rspamc funktioniert lokal
  • Junk-Ordner heißt exakt: INBOX.Junk
  • IMAP MOVE oder COPY wird serverseitig ausgeführt

Prinzip

Dovecot IMAPSieve reagiert auf IMAP MOVE/COPY
Zielordner bestimmt Lernrichtung
rspamc lernt exakt die betroffene Mail

IMAPSieve Plugin für IMAP aktivieren

Korrekte Stelle für protocol imap
  • vi /etc/dovecot/conf.d/20-imap.conf
protocol imap {
  mail_plugins = $mail_plugins imap_sieve
}

IMAPSieve + extprograms konfigurieren

Nur Plugin-Konfiguration, KEIN protocol-Block
  • vi /etc/dovecot/conf.d/90-imapsieve.conf
plugin {
    sieve_plugins = sieve_imapsieve sieve_extprograms

    sieve_pipe_bin_dir = /usr/bin
    sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment

    # SPAM lernen: bewusst nach Junk verschieben
    imapsieve_mailbox1_name = Junk
    imapsieve_mailbox1_causes = COPY MOVE
    imapsieve_mailbox1_before = file:/var/lib/dovecot/sieve/report-spam.sieve

    # HAM lernen: bewusst aus Junk zurück in INBOX
    imapsieve_mailbox2_name = INBOX
    imapsieve_mailbox2_from = Junk
    imapsieve_mailbox2_causes = COPY MOVE
    imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/report-ham.sieve
}

Lernskripte definieren

SPAM lernen
INBOX → INBOX.Junk
  • vi /var/lib/dovecot/sieve/learn-spam.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];

pipe :copy "rspamc" ["learn_spam"];
HAM lernen
INBOX.Junk → INBOX
  • vi /var/lib/dovecot/sieve/learn-ham.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];

pipe :copy "rspamc" ["learn_ham"];

Lernskripte an Zielordner binden

MOVE und COPY explizit erlauben
  • vi /etc/dovecot/conf.d/90-imapsieve-learn.conf
plugin {
  imapsieve_mailbox1_name = INBOX.Junk
  imapsieve_mailbox1_causes = COPY MOVE
  imapsieve_mailbox1_before = file:/var/lib/dovecot/sieve/learn-spam.sieve

  imapsieve_mailbox2_name = INBOX
  imapsieve_mailbox2_causes = COPY MOVE
  imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/learn-ham.sieve
}

Dienste neu starten

  • systemctl restart dovecot
  • systemctl restart rspamd

Sieve-Skripte kompilieren

  • sievec /var/lib/dovecot/sieve/learn-spam.sieve
  • sievec /var/lib/dovecot/sieve/learn-ham.sieve

Rechte setzen

  • chown -R dovecot:dovecot /var/lib/dovecot/sieve
  • chmod 750 /var/lib/dovecot/sieve

Dienste neu starten

  • systemctl restart dovecot
  • systemctl restart rspamd

Funktionstest

Spam aus INBOX nach INBOX.Junk verschieben
  • rspamc stat
Ham aus INBOX.Junk nach INBOX verschieben
  • rspamc stat

Wichtige Hinweise

  • Lernen erfolgt nur bei IMAP MOVE oder COPY
  • Automatische serverseitige Sieve-Filter lösen kein Lernen aus
  • Jede Mail wird genau einmal gelernt
  • Bayes benötigt signifikant mehr HAM als SPAM
  • Keywords bleiben deterministisch führend

Merksatz

In Junk schieben = SPAM lernen
Aus Junk holen = HAM lernen
Admin entscheidet, Bayes passt sich an