Rspamd Bayes: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
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