Rspamd Bayes: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 +
= Bayes ON TOP des bestehenden Keyword-Setups =
 +
 
= Ziel =
 
= Ziel =
* Spam wird erkannt
+
* Keyword-Filter bleibt aktiv
* Spam landet im Junk
+
* Bayes wird zusätzlich aktiviert
 
* KEIN Reject
 
* KEIN Reject
* KEIN Lernen
+
* KEIN Greylist
* Bayes nur vorbereitet
+
* KEIN Autolearn
 +
* Lernen nur manuell
 +
* Junk-Logik bleibt ausschließlich in Dovecot/Sieve
  
= Schritt 0: Voraussetzungen prüfen =
+
= Voraussetzung =
; Rspamd setzt Header nur bei add_header
+
; Dein bestehendes Setup funktioniert:
; Dovecot muss Sieve im LMTP haben
+
; rspamd setzt X-Spam: Yes
 +
; Dovecot sortiert nach Junk
  
*grep -R "protocol lmtp" /etc/dovecot/conf.d/20-lmtp.conf
+
= Schritt 1: Bayes aktivieren (kontrolliert) =
; MUSS enthalten:
 
; mail_plugins = $mail_plugins sieve
 
 
 
= Schritt 1: Bayes ruhigstellen (nicht aktiv, nicht löschen) =
 
 
*vi /etc/rspamd/local.d/classifier-bayes.conf
 
*vi /etc/rspamd/local.d/classifier-bayes.conf
 
<pre>
 
<pre>
Zeile 21: Zeile 22:
 
autolearn = false;
 
autolearn = false;
 
min_tokens = 11;
 
min_tokens = 11;
 +
expire = 864000;
 
</pre>
 
</pre>
*systemctl restart rspamd
 
  
= Schritt 2: Aktionen so setzen, dass NIE gebounced wird =
 
*vi /etc/rspamd/local.d/actions.conf
 
<pre>
 
reject = 999;
 
greylist = 999;
 
add_header = 6;
 
</pre>
 
 
*systemctl restart rspamd
 
*systemctl restart rspamd
  
; Erklärung:
+
= Schritt 2: Prüfen, ob Bayes geladen ist =
; Score >= 6 → add_header → X-Spam: Yes
+
*rspamd -c
; Reject ist faktisch unmöglich
 
  
= Schritt 3: Hauptfilter – Keywords (DEIN Filter) =
+
; Erwartung:
*mkdir -p /etc/rspamd/local.d/lists
+
; KEINE Fehler
 +
; classifier-bayes geladen
  
*vi /etc/rspamd/local.d/multimap.conf
+
= Schritt 3: Bayes-Status prüfen (leer ist OK) =
<pre>
+
*rspamc stat
CUSTOM_KEYWORDS {
 
    type = "content";
 
    map = "/etc/rspamd/local.d/lists/junk_keywords.map";
 
    regexp = true;
 
    icase = true;
 
    symbol = "CUSTOM_KEYWORDS";
 
    score = 10.0;
 
}
 
</pre>
 
  
*vi /etc/rspamd/local.d/lists/junk_keywords.map
+
; Erwartung:
<pre>
+
; Bayes statistics:
viagra
+
; learned: 0 spam, 0 ham
cialis
 
tadalafil
 
penis enlargement
 
xxx
 
porn
 
</pre>
 
 
 
*systemctl restart rspamd
 
  
= Schritt 4: Funktionstest Rspamd (ohne Mailserver) =
+
= Schritt 4: Erste Trainingsmails vorbereiten =
*cat <<EOF | rspamc
+
; Spam-Beispiel
From: a@b
+
*cat > /root/spam1.eml <<EOF
To: c@d
+
From: spam@bad
Subject: viagra test
+
To: user@example.de
 +
Subject: cheap viagra now
  
cheap viagra now
+
buy viagra cheap
 
EOF
 
EOF
  
; MUSS ergeben:
+
; Ham-Beispiel
; Action: add header
+
*cat > /root/ham1.eml <<EOF
; Symbol: CUSTOM_KEYWORDS
+
From: friend@good
; Score >= 10
+
To: user@example.de
 +
Subject: meeting
  
= Schritt 5: Dovecot – Junk-Ablage NUR über Sieve =
+
see you tomorrow
; KEIN imapsieve
+
EOF
; KEIN Lernskript
 
; KEIN Pipe
 
  
*vi /etc/dovecot/conf.d/90-sieve.conf
+
= Schritt 5: Manuelles Lernen =
<pre>
+
*rspamc learn_spam /root/spam1.eml
plugin {
+
*rspamc learn_ham /root/ham1.eml
    sieve = ~/.dovecot.sieve
 
    sieve_before = /var/lib/dovecot/sieve/spam-to-junk.sieve
 
}
 
</pre>
 
  
*mkdir -p /var/lib/dovecot/sieve
+
= Schritt 6: Lernstand prüfen =
 +
*rspamc stat
  
*vi /var/lib/dovecot/sieve/spam-to-junk.sieve
+
; Erwartung:
<pre>
+
; learned: 1 spam, 1 ham
require ["fileinto"];
 
  
if header :contains "X-Spam" "Yes" {
+
= Schritt 7: Wirkung testen (ohne Keyword-Treffer) =
    fileinto "Junk";
+
*cat <<EOF | rspamc
    stop;
+
From: x@y
}
+
To: z@a
</pre>
+
Subject: cheap pills
  
*sievec /var/lib/dovecot/sieve/spam-to-junk.sieve
+
buy pills online
*chown dovecot:dovecot /var/lib/dovecot/sieve/spam-to-junk.*
+
EOF
*chmod 644 /var/lib/dovecot/sieve/spam-to-junk.*
 
  
*systemctl restart dovecot
+
; Erwartung:
 +
; Symbol: BAYES_SPAM oder BAYES_HAM
 +
; Score > 0 (klein!)
  
= Schritt 6: ECHTER Test =
+
= Schritt 8: Zusammenspiel mit Keywords (realer Effekt) =
; Mail mit:
+
; Beispiel:
; Subject: viagra
+
; CUSTOM_KEYWORDS  +8.0
; Body: viagra
+
; BAYES_SPAM      +2.x
 +
; ---------------------
 +
; Gesamt          > add_header
 +
; → X-Spam: Yes
 +
; → Sieve → Junk
  
; Erwartung:
+
= WICHTIG =
; Mail wird angenommen
+
; Bayes ist am Anfang schwach
; Mail ist NICHT gebounced
+
; Erst ab ~500 Spam + ~500 Ham brauchbar
; Mail liegt in:
+
; Keywords bleiben Hauptfilter
; ~/Maildir/.Junk/cur/
 
  
= Schritt 7: Kontrolle =
+
= Merksatz =
*ls /home/thomas.will/Maildir/.Junk/cur/
+
; Keywords = deterministisch
 +
; Bayes    = statistisch
 +
; Sieve    = entscheidet

Version vom 14. Dezember 2025, 18:37 Uhr

Bayes ON TOP des bestehenden Keyword-Setups

Ziel

  • Keyword-Filter bleibt aktiv
  • Bayes wird zusätzlich aktiviert
  • KEIN Reject
  • KEIN Greylist
  • KEIN Autolearn
  • Lernen nur manuell
  • Junk-Logik bleibt ausschließlich in Dovecot/Sieve

Voraussetzung

Dein bestehendes Setup funktioniert
rspamd setzt X-Spam
Yes
Dovecot sortiert nach Junk

Schritt 1: Bayes aktivieren (kontrolliert)

  • vi /etc/rspamd/local.d/classifier-bayes.conf
backend = "sqlite3";
path = "/var/lib/rspamd/bayes.sqlite";
autolearn = false;
min_tokens = 11;
expire = 864000;
  • systemctl restart rspamd

Schritt 2: Prüfen, ob Bayes geladen ist

  • rspamd -c
Erwartung
KEINE Fehler
classifier-bayes geladen

Schritt 3: Bayes-Status prüfen (leer ist OK)

  • rspamc stat
Erwartung
Bayes statistics
learned
0 spam, 0 ham

Schritt 4: Erste Trainingsmails vorbereiten

Spam-Beispiel
  • cat > /root/spam1.eml <<EOF

From: spam@bad To: user@example.de Subject: cheap viagra now

buy viagra cheap EOF

Ham-Beispiel
  • cat > /root/ham1.eml <<EOF

From: friend@good To: user@example.de Subject: meeting

see you tomorrow EOF

Schritt 5: Manuelles Lernen

  • rspamc learn_spam /root/spam1.eml
  • rspamc learn_ham /root/ham1.eml

Schritt 6: Lernstand prüfen

  • rspamc stat
Erwartung
learned
1 spam, 1 ham

Schritt 7: Wirkung testen (ohne Keyword-Treffer)

  • cat <<EOF | rspamc

From: x@y To: z@a Subject: cheap pills

buy pills online EOF

Erwartung
Symbol
BAYES_SPAM oder BAYES_HAM
Score > 0 (klein!)

Schritt 8: Zusammenspiel mit Keywords (realer Effekt)

Beispiel
CUSTOM_KEYWORDS +8.0
BAYES_SPAM +2.x
---------------------
Gesamt > add_header
→ X-Spam
Yes
→ Sieve → Junk

WICHTIG

Bayes ist am Anfang schwach
Erst ab ~500 Spam + ~500 Ham brauchbar
Keywords bleiben Hauptfilter

Merksatz

Keywords = deterministisch
Bayes = statistisch
Sieve = entscheidet