Dovecot/Imapsieve: Unterschied zwischen den Versionen
Erscheinungsbild
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