Zum Inhalt springen

Dovecot/Imapsieve: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=== [[Dovecot]] configuration ===
=== [[Dovecot]] configuration ===
* Dovecot wird um ''imap_sieve'' erweitert
* Dovecot wird um ''imap_sieve'' erweitert
* Beim Kopieren einer Nachricht nach ''Junk'' wird diese an Rspamd als Spam gemeldet
* Beim Kopieren einer Nachricht nach ''Junk'' wird diese an Rspamd als Spam gemeldet
Zeile 44: Zeile 43:
</syntaxhighlight>
</syntaxhighlight>


* Die ISPConfig-Custom-Konfiguration wird in die aktive Dovecot-Konfiguration übernommen
Die ISPConfig-Custom-Konfiguration wird in die aktive Dovecot-Konfiguration übernommen


<syntaxhighlight lang="bash" highlight="1" copy line>
<syntaxhighlight lang="bash" highlight="1" copy line>
Zeile 60: Zeile 59:
<syntaxhighlight lang="console" copy line>
<syntaxhighlight lang="console" copy line>
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamd-learn-spam.sh";
pipe :copy "rspamd-learn-spam.sh";
</syntaxhighlight>
</syntaxhighlight>
Zeile 84: Zeile 82:


; /etc/dovecot/sieve/rspamd-learn-spam.sh
; /etc/dovecot/sieve/rspamd-learn-spam.sh
* Das Pipe-Skript übergibt die Nachricht an Rspamd und trainiert sie als Spam
Das Pipe-Skript übergibt die Nachricht an Rspamd und trainiert sie als Spam


<syntaxhighlight lang="bash" copy line>
<syntaxhighlight lang="bash" copy line>
Zeile 92: Zeile 90:


; /etc/dovecot/sieve/rspamd-learn-ham.sh
; /etc/dovecot/sieve/rspamd-learn-ham.sh
* Das Pipe-Skript übergibt die Nachricht an Rspamd und trainiert sie als Ham
Das Pipe-Skript übergibt die Nachricht an Rspamd und trainiert sie als Ham
<syntaxhighlight lang="bash" copy line>
<syntaxhighlight lang="bash" copy line>
#!/bin/sh
#!/bin/sh
Zeile 98: Zeile 96:
</syntaxhighlight>
</syntaxhighlight>


* Die Pipe-Skripte müssen für Dovecot ausführbar sein
Die Pipe-Skripte müssen für Dovecot ausführbar sein
<syntaxhighlight lang="bash" highlight="1-2" copy line>
<syntaxhighlight lang="bash" highlight="1-2" copy line>
chmod 0755 /etc/dovecot/sieve/rspamd-learn-spam.sh /etc/dovecot/sieve/rspamd-learn-ham.sh
chmod 0755 /etc/dovecot/sieve/rspamd-learn-spam.sh /etc/dovecot/sieve/rspamd-learn-ham.sh
Zeile 104: Zeile 102:
</syntaxhighlight>
</syntaxhighlight>


* Die Sieve-Skripte werden kompiliert, damit Dovecot sie direkt verwenden kann
Die Sieve-Skripte werden kompiliert, damit Dovecot sie direkt verwenden kann
<syntaxhighlight lang="bash" highlight="1-2" copy line>
<syntaxhighlight lang="bash" highlight="1-2" copy line>
sievec /etc/dovecot/sieve/report-spam.sieve
sievec /etc/dovecot/sieve/report-spam.sieve
Zeile 110: Zeile 108:
</syntaxhighlight>
</syntaxhighlight>


* Abschließend wird die Dovecot-Konfiguration geprüft und der Dienst neu geladen
Abschließend wird die Dovecot-Konfiguration geprüft und der Dienst neu geladen
<syntaxhighlight lang="bash" highlight="1-2" copy line>
<syntaxhighlight lang="bash" highlight="1-2" copy line>
dovecot -n
dovecot -n
Zeile 117: Zeile 115:


==== Bayes Hinweise ====
==== Bayes Hinweise ====
* Sehr kurze Nachrichten werden von Rspamd nicht für Bayes-Learning verwendet
Sehr kurze Nachrichten werden von Rspamd nicht für Bayes-Learning verwendet
** Der Standardwert ''min_tokens = 11'' bedeutet, dass mindestens 11 statistische Tokens vorhanden sein müssen
* Der Standardwert ''min_tokens = 11'' bedeutet, dass mindestens 11 statistische Tokens vorhanden sein müssen
** Bei zu kurzen Nachrichten erscheint im Log sinngemäß eine Meldung wie:
** Bei zu kurzen Nachrichten erscheint im Log sinngemäß eine Meldung wie:


Zeile 125: Zeile 123:
</syntaxhighlight>
</syntaxhighlight>


* Bayes wirkt nicht unmittelbar nach den ersten gelernten Nachrichten
Bayes wirkt nicht unmittelbar nach den ersten gelernten Nachrichten
** Der Standardwert ''min_learns = 200'' bedeutet, dass für Spam und Ham jeweils genügend gelernte Nachrichten vorhanden sein müssen, bevor die Bayes-Klassifizierung aktiv in die Bewertung einfließt
* Der Standardwert ''min_learns = 200'' bedeutet, dass für Spam und Ham jeweils genügend gelernte Nachrichten vorhanden sein müssen, bevor die Bayes-Klassifizierung aktiv in die Bewertung einfließt
* Rspamd speichert dafür gelernte IDs bzw. Signaturen im Cache und kann dann eine Meldung wie ''already learned'' zurückgeben.
 
Rspamd speichert dafür gelernte IDs bzw. Signaturen im Cache und kann dann eine Meldung wie ''already learned'' zurückgeben.


{| class="wikitable options big"
{| class="wikitable options big"
Zeile 148: Zeile 147:


; Variablen anzeigen
; Variablen anzeigen
* Die aktuell wirksamen Rspamd-Parameter können über ''rspamadm configdump'' geprüft werden
Die aktuell wirksamen Rspamd-Parameter können über ''rspamadm configdump'' geprüft werden
<syntaxhighlight lang="bash" highlight="1" copy line>
<syntaxhighlight lang="bash" highlight="1" copy line>
rspamadm configdump
rspamadm configdump
</syntaxhighlight>
</syntaxhighlight>


* Die Standardkonfiguration befindet sich in ''/etc/rspamd/statistic.conf''
Die Standardkonfiguration befindet sich in ''/etc/rspamd/statistic.conf''
** Diese Datei sollte nicht direkt angepasst werden, da sie zur Paketkonfiguration gehört
* Diese Datei sollte nicht direkt angepasst werden, da sie zur Paketkonfiguration gehört


; Eigene Werte setzen
; Eigene Werte setzen
* Eigene Bayes-Parameter werden üblicherweise in ''/etc/rspamd/local.d/classifier-bayes.conf'' gesetzt
Eigene Bayes-Parameter werden üblicherweise in ''/etc/rspamd/local.d/classifier-bayes.conf'' gesetzt
** Die Datei ergänzt bzw. überschreibt die Standardwerte aus der Rspamd-Konfiguration
* Die Datei ergänzt oder überschreibt die Standardwerte aus der Rspamd-Konfiguration


; /etc/rspamd/local.d/classifier-bayes.conf
; /etc/rspamd/local.d/classifier-bayes.conf
Zeile 167: Zeile 166:
</syntaxhighlight>
</syntaxhighlight>


* Nach der Änderung wird die Rspamd-Konfiguration geprüft
Nach der Änderung wird die Rspamd-Konfiguration geprüft
<syntaxhighlight lang="bash" highlight="1" copy line>
<syntaxhighlight lang="bash" highlight="1" copy line>
rspamadm configtest
rspamadm configtest
</syntaxhighlight>
</syntaxhighlight>


* Anschließend wird Rspamd neu gestartet, damit die geänderten Werte aktiv werden
Anschließend wird Rspamd neu gestartet, damit die geänderten Werte aktiv werden
<syntaxhighlight lang="bash" highlight="1" copy line>
<syntaxhighlight lang="bash" highlight="1" copy line>
systemctl restart rspamd
systemctl restart rspamd
</syntaxhighlight>
</syntaxhighlight>


[[Kategorie:Dovecot/Spam]]
[[Kategorie:Dovecot/Spam]]

Version vom 7. Juli 2026, 13:00 Uhr

Dovecot configuration

  • Dovecot wird um imap_sieve erweitert
  • Beim Kopieren einer Nachricht nach Junk wird diese an Rspamd als Spam gemeldet
  • Beim Kopieren einer Nachricht aus Junk in einen normalen Ordner wird diese an Rspamd als Ham gemeldet
/usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master
  • Die Custom-Konfiguration wird als ISPConfig-Template abgelegt, damit sie bei späteren Reconfigure-/Update-Vorgängen erhalten bleibt.
protocol imap {
  mail_plugins {
    imap_sieve = yes
  }
}

sieve_plugins {
  sieve_imapsieve = yes
  sieve_extprograms = yes
}

sieve_global_extensions {
  vnd.dovecot.pipe = yes
  vnd.dovecot.environment = yes
}

sieve_pipe_bin_dir = /etc/dovecot/sieve

mailbox Junk {
  sieve_script report-spam {
    type = before
    cause = copy
    path = /etc/dovecot/sieve/report-spam.sieve
  }
}

imapsieve_from Junk {
  sieve_script report-ham {
    type = before
    cause = copy
    path = /etc/dovecot/sieve/report-ham.sieve
  }
}

Die ISPConfig-Custom-Konfiguration wird in die aktive Dovecot-Konfiguration übernommen

cp /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master /etc/dovecot/conf.d/99-ispconfig-custom-config.conf
Create sieve scripts folder
mkdir -p /etc/dovecot/sieve
/etc/dovecot/sieve/report-spam.sieve
  • Die Nachricht wird per Pipe an rspamd-learn-spam.sh übergeben
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamd-learn-spam.sh";
/etc/dovecot/sieve/report-ham.sieve
  • Dieses Sieve-Skript wird ausgeführt, wenn eine Nachricht aus Junk in einen anderen IMAP-Ordner kopiert wird
  • Kopien nach Trash, Deleted Messages oder erneut nach Junk werden ignoriert
  • Alle anderen Kopien werden per Pipe an rspamd-learn-ham.sh übergeben
require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.mailbox" "*" {
  set "mailbox" "${1}";
}

if string "${mailbox}" ["Trash", "Deleted Messages", "Junk"] {
  stop;
}

pipe :copy "rspamd-learn-ham.sh";
/etc/dovecot/sieve/rspamd-learn-spam.sh

Das Pipe-Skript übergibt die Nachricht an Rspamd und trainiert sie als Spam

#!/bin/sh
exec /usr/bin/rspamc -h 10.0.0.8:11334 learn_spam
/etc/dovecot/sieve/rspamd-learn-ham.sh

Das Pipe-Skript übergibt die Nachricht an Rspamd und trainiert sie als Ham

#!/bin/sh
exec /usr/bin/rspamc -h 10.0.0.8:11334 learn_ham

Die Pipe-Skripte müssen für Dovecot ausführbar sein

chmod 0755 /etc/dovecot/sieve/rspamd-learn-spam.sh /etc/dovecot/sieve/rspamd-learn-ham.sh
chmod +x /etc/dovecot/sieve/rspamd-learn-spam.sh /etc/dovecot/sieve/rspamd-learn-ham.sh

Die Sieve-Skripte werden kompiliert, damit Dovecot sie direkt verwenden kann

sievec /etc/dovecot/sieve/report-spam.sieve
sievec /etc/dovecot/sieve/report-ham.sieve

Abschließend wird die Dovecot-Konfiguration geprüft und der Dienst neu geladen

dovecot -n
systemctl reload dovecot

Bayes Hinweise

Sehr kurze Nachrichten werden von Rspamd nicht für Bayes-Learning verwendet

  • Der Standardwert min_tokens = 11 bedeutet, dass mindestens 11 statistische Tokens vorhanden sein müssen
    • Bei zu kurzen Nachrichten erscheint im Log sinngemäß eine Meldung wie:
contains less tokens than required: 9 < 11

Bayes wirkt nicht unmittelbar nach den ersten gelernten Nachrichten

  • Der Standardwert min_learns = 200 bedeutet, dass für Spam und Ham jeweils genügend gelernte Nachrichten vorhanden sein müssen, bevor die Bayes-Klassifizierung aktiv in die Bewertung einfließt

Rspamd speichert dafür gelernte IDs bzw. Signaturen im Cache und kann dann eine Meldung wie already learned zurückgeben.

Parameter Standardwert Bedeutung
min_tokens 11 Mindestanzahl statistischer Tokens, damit eine Nachricht für Bayes verarbeitet wird
min_learns 200 Mindestanzahl gelernter Nachrichten pro Klasse, bevor Bayes für die Klassifizierung verwendet wird
cache_prefix learned_ids Prefix für gespeicherte IDs bereits gelernter Nachrichten
Variablen anzeigen

Die aktuell wirksamen Rspamd-Parameter können über rspamadm configdump geprüft werden

rspamadm configdump

Die Standardkonfiguration befindet sich in /etc/rspamd/statistic.conf

  • Diese Datei sollte nicht direkt angepasst werden, da sie zur Paketkonfiguration gehört
Eigene Werte setzen

Eigene Bayes-Parameter werden üblicherweise in /etc/rspamd/local.d/classifier-bayes.conf gesetzt

  • Die Datei ergänzt oder überschreibt die Standardwerte aus der Rspamd-Konfiguration
/etc/rspamd/local.d/classifier-bayes.conf
min_tokens = 11;
min_learns = 200;
cache_prefix = "learned_ids";

Nach der Änderung wird die Rspamd-Konfiguration geprüft

rspamadm configtest

Anschließend wird Rspamd neu gestartet, damit die geänderten Werte aktiv werden

systemctl restart rspamd