Zum Inhalt springen

Dovecot/Imapsieve: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „ Kategorie:Dovecot/Spam
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=== [[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.
<syntaxhighlight lang="json" copy line>
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
  }
}
</syntaxhighlight>
* Die ISPConfig-Custom-Konfiguration wird in die aktive Dovecot-Konfiguration übernommen
<syntaxhighlight lang="bash" highlight="1" copy line>
cp /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master /etc/dovecot/conf.d/99-ispconfig-custom-config.conf
</syntaxhighlight>
; Create sieve scripts folder
<syntaxhighlight lang="bash" highlight="1" copy line>
mkdir -p /etc/dovecot/sieve
</syntaxhighlight>
; /etc/dovecot/sieve/report-spam.sieve
* Die Nachricht wird per Pipe an ''rspamd-learn-spam.sh'' übergeben
<syntaxhighlight lang="console" copy line>
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamd-learn-spam.sh";
</syntaxhighlight>
; /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
<syntaxhighlight lang="console" copy line>
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";
</syntaxhighlight>
; /etc/dovecot/sieve/rspamd-learn-spam.sh
* Das Pipe-Skript übergibt die Nachricht an Rspamd und trainiert sie als Spam
<syntaxhighlight lang="bash" copy line>
#!/bin/sh
exec /usr/bin/rspamc -h 10.0.0.8:11334 learn_spam
</syntaxhighlight>
; /etc/dovecot/sieve/rspamd-learn-ham.sh
* Das Pipe-Skript übergibt die Nachricht an Rspamd und trainiert sie als Ham
<syntaxhighlight lang="bash" copy line>
#!/bin/sh
exec /usr/bin/rspamc -h 10.0.0.8:11334 learn_ham
</syntaxhighlight>
* Die Pipe-Skripte müssen für Dovecot ausführbar sein
<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 +x /etc/dovecot/sieve/rspamd-learn-spam.sh /etc/dovecot/sieve/rspamd-learn-ham.sh
</syntaxhighlight>
* Die Sieve-Skripte werden kompiliert, damit Dovecot sie direkt verwenden kann
<syntaxhighlight lang="bash" highlight="1-2" copy line>
sievec /etc/dovecot/sieve/report-spam.sieve
sievec /etc/dovecot/sieve/report-ham.sieve
</syntaxhighlight>
* Abschließend wird die Dovecot-Konfiguration geprüft und der Dienst neu geladen
<syntaxhighlight lang="bash" highlight="1-2" copy line>
dovecot -n
systemctl reload dovecot
</syntaxhighlight>
==== 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:
<syntaxhighlight lang="console">
contains less tokens than required: 9 < 11
</syntaxhighlight>
* 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.
{| class="wikitable options big"
! 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
<syntaxhighlight lang="bash" highlight="1" copy line>
rspamadm configdump
</syntaxhighlight>
* 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 bzw. überschreibt die Standardwerte aus der Rspamd-Konfiguration
; /etc/rspamd/local.d/classifier-bayes.conf
<syntaxhighlight lang="console" copy line>
min_tokens = 11;
min_learns = 200;
cache_prefix = "learned_ids";
</syntaxhighlight>
* Nach der Änderung wird die Rspamd-Konfiguration geprüft
<syntaxhighlight lang="bash" highlight="1" copy line>
rspamadm configtest
</syntaxhighlight>
* Anschließend wird Rspamd neu gestartet, damit die geänderten Werte aktiv werden
<syntaxhighlight lang="bash" highlight="1" copy line>
systemctl restart rspamd
</syntaxhighlight>


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

Version vom 7. Juli 2026, 12:55 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 bzw. ü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