Rspamd Bayes lernen durch Verschieben: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= Rspamd Bayes lernen durch Verschieben (IMAPSieve ON TOP) = == Ziel == * Bestehendes Setup bleibt unverändert: ** Postfix + Rspamd + Dovecot (LMTP + Sieve)…“)
 
Zeile 8: Zeile 8:
 
** Junk-Entscheidung weiterhin nur über Sieve
 
** Junk-Entscheidung weiterhin nur über Sieve
 
* Lernen erfolgt automatisch:
 
* Lernen erfolgt automatisch:
** Mail wird aus INBOX nach Junk verschoben → learn_spam
+
** Mail aus INBOX nach INBOX.Junk verschoben → learn_spam
** Mail wird aus Junk nach INBOX verschoben → learn_ham
+
** Mail aus INBOX.Junk nach INBOX verschoben → learn_ham
 
* Kein Autolearn
 
* Kein Autolearn
 
* Kein Reject
 
* Kein Reject
* Kein Client-spezifisches Lernen
+
* Keine Client-Plugins erforderlich
  
 
== Voraussetzung ==
 
== Voraussetzung ==
 
* Rspamd Bayes ist aktiv (sqlite)
 
* Rspamd Bayes ist aktiv (sqlite)
 
* rspamc funktioniert lokal
 
* rspamc funktioniert lokal
* Junk-Ordner heißt: INBOX.Junk
+
* Junk-Ordner heißt exakt: INBOX.Junk
* IMAP-Client verschiebt Mails serverseitig (Standard)
+
* IMAP MOVE oder COPY wird serverseitig ausgeführt
  
 
== Prinzip ==
 
== Prinzip ==
; Dovecot IMAPSieve reagiert auf IMAP COPY / MOVE
+
; Dovecot IMAPSieve reagiert auf IMAP MOVE/COPY
; Beim Zielordner wird ein Lernskript ausgelöst
+
; Zielordner bestimmt Lernrichtung
; rspamc lernt die Mail exakt einmal
+
; rspamc lernt exakt die betroffene Mail
  
== Dovecot: IMAPSieve aktivieren ==
+
== IMAPSieve Plugin für IMAP aktivieren ==
*vi /etc/dovecot/conf.d/90-imapsieve.conf
+
; Korrekte Stelle für protocol imap
 +
 
 +
*vi /etc/dovecot/conf.d/20-imap.conf
 
<pre>
 
<pre>
 
protocol imap {
 
protocol imap {
Zeile 33: Zeile 35:
 
</pre>
 
</pre>
  
*vi /etc/dovecot/conf.d/90-sieve.conf
+
== IMAPSieve + extprograms konfigurieren ==
 +
; Nur Plugin-Konfiguration, KEIN protocol-Block
 +
 
 +
*vi /etc/dovecot/conf.d/90-imapsieve.conf
 
<pre>
 
<pre>
 
plugin {
 
plugin {
Zeile 62: Zeile 67:
 
</pre>
 
</pre>
  
== IMAPSieve an Ordner binden ==
+
== Lernskripte an Zielordner binden ==
*vi /etc/dovecot/conf.d/90-imapsieve.conf
+
; MOVE und COPY explizit erlauben
 +
 
 +
*vi /etc/dovecot/conf.d/90-imapsieve-learn.conf
 
<pre>
 
<pre>
 
plugin {
 
plugin {
 
   imapsieve_mailbox1_name = INBOX.Junk
 
   imapsieve_mailbox1_name = INBOX.Junk
   imapsieve_mailbox1_causes = COPY
+
   imapsieve_mailbox1_causes = COPY MOVE
 
   imapsieve_mailbox1_before = file:/var/lib/dovecot/sieve/learn-spam.sieve
 
   imapsieve_mailbox1_before = file:/var/lib/dovecot/sieve/learn-spam.sieve
  
 
   imapsieve_mailbox2_name = INBOX
 
   imapsieve_mailbox2_name = INBOX
   imapsieve_mailbox2_causes = COPY
+
   imapsieve_mailbox2_causes = COPY MOVE
 
   imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/learn-ham.sieve
 
   imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/learn-ham.sieve
 
}
 
}
Zeile 89: Zeile 96:
  
 
== Funktionstest ==
 
== Funktionstest ==
; Spam aus INBOX nach Junk verschieben
+
; Spam aus INBOX nach INBOX.Junk verschieben
; Erwartung: rspamc learn_spam
 
 
 
 
*rspamc stat
 
*rspamc stat
  
; Ham aus Junk nach INBOX verschieben
+
; Ham aus INBOX.Junk nach INBOX verschieben
; Erwartung: rspamc learn_ham
 
 
 
 
*rspamc stat
 
*rspamc stat
  
 
== Wichtige Hinweise ==
 
== Wichtige Hinweise ==
* Lernen erfolgt nur bei COPY / MOVE per IMAP
+
* Lernen erfolgt nur bei IMAP MOVE oder COPY
* Automatische Sieve-Filter lösen KEIN Lernen aus
+
* Automatische serverseitige Sieve-Filter lösen kein Lernen aus
* Jede Mail wird nur einmal gelernt
+
* Jede Mail wird genau einmal gelernt
* Bayes-Qualität steigt primär durch HAM
+
* Bayes benötigt signifikant mehr HAM als SPAM
* False Positives verschwinden mit wachsender Ham-Menge
+
* Keywords bleiben deterministisch führend
  
 
== Merksatz ==
 
== Merksatz ==
; Junk reinziehen = HAM lernen
+
; In Junk schieben = SPAM lernen
; Junk rausziehen = SPAM lernen
+
; Aus Junk holen = HAM lernen
; Admin entscheidet, Bayes folgt
+
; Admin entscheidet, Bayes passt sich an

Version vom 15. Dezember 2025, 15:54 Uhr

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
}

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
}

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