3ef293e0a8
* English documentation for adding 3rd party modules to Rspamd * Added German translations, thanks to @MAGICCC --------- Co-authored-by: SnailShea <shea@vulpes.club>
382 Zeilen
Kein EOL
12 KiB
Markdown
382 Zeilen
Kein EOL
12 KiB
Markdown
Rspamd wird für die AV-Verarbeitung, DKIM-Signierung und SPAM-Verarbeitung verwendet. Es ist ein leistungsfähiges und schnelles Filtersystem. Für eine ausführlichere Dokumentation über Rspamd besuchen Sie bitte die [Rspamd Dokumentation] (https://rspamd.com/doc/index.html).
|
|
|
|
## Spam & Ham lernen
|
|
|
|
Rspamd lernt, ob es sich um Spam oder Ham handelt, wenn Sie eine Nachricht in oder aus dem Junk-Ordner in ein anderes Postfach als den Papierkorb verschieben.
|
|
Dies wird durch die Verwendung des Sieve-Plugins "sieve_imapsieve" und Parser-Skripte erreicht.
|
|
|
|
Rspamd liest auch automatisch Mails, wenn eine hohe oder niedrige Punktzahl erkannt wird (siehe https://rspamd.com/doc/configuration/statistic.html#autolearning). Wir haben das Plugin so konfiguriert, dass es ein vernünftiges Verhältnis zwischen Spam- und Ham-Learnings beibehält.
|
|
|
|
Die Bayes-Statistiken werden in Redis als Schlüssel `BAYES_HAM` und `BAYES_SPAM` gespeichert.
|
|
|
|
Neben Bayes wird ein lokaler Fuzzy-Speicher verwendet, um wiederkehrende Muster in Texten oder Bildern zu lernen, die auf Ham oder Spam hinweisen.
|
|
|
|
Sie können auch die Web-UI von Rspamd verwenden, um Ham und/oder Spam zu lernen oder bestimmte Einstellungen von Rspamd anzupassen.
|
|
|
|
### Spam oder Ham aus bestehendem Verzeichnis lernen
|
|
|
|
Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen:
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
# Ham
|
|
for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
|
|
# Spam
|
|
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
# Ham
|
|
for file in /my/folder/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
|
|
# Spam
|
|
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
|
|
```
|
|
|
|
Erwägen Sie, einen lokalen Ordner als neues Volume an `rspamd-mailcow` in `docker-compose.yml` anzuhängen und die gegebenen Dateien innerhalb des Containers zu lernen. Dies kann als Workaround verwendet werden, um komprimierte Daten mit zcat zu parsen. Beispiel:
|
|
|
|
```bash
|
|
for file in /data/old_mail/.Junk/cur/*; do rspamc learn_spam < zcat $file; done
|
|
```
|
|
|
|
### Gelernte Daten zurücksetzen (Bayes, Neural)
|
|
|
|
Sie müssen die Schlüssel in Redis löschen, um die gelernten Daten zurückzusetzen, also erstellen Sie jetzt eine Kopie Ihrer Redis-Datenbank:
|
|
|
|
**Backup Datenbank**
|
|
|
|
```bash
|
|
# Es ist besser, Redis zu stoppen, bevor Sie die Datei kopieren.
|
|
cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
|
|
```
|
|
|
|
**Bayes-Daten zurücksetzen**
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
|
|
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
|
|
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
|
|
```
|
|
|
|
**Neurale Daten zurücksetzen**
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
|
|
```
|
|
|
|
**Fuzzy-Daten zurücksetzen**
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
# Wir müssen zuerst das redis-cli eingeben:
|
|
docker compose exec redis-mailcow redis-cli
|
|
# In redis-cli:
|
|
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
# Wir müssen zuerst das redis-cli eingeben:
|
|
docker-compose exec redis-mailcow redis-cli
|
|
# In redis-cli:
|
|
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
|
|
```
|
|
|
|
**Info**
|
|
|
|
Wenn redis-cli sich beschwert über...
|
|
|
|
```Text
|
|
(error) ERR wrong number of arguments for 'del' command
|
|
```
|
|
|
|
...das Schlüsselmuster nicht gefunden wurde und somit keine Daten zum Löschen vorhanden sind - ist es in Ordnung.
|
|
|
|
## CLI-Werkzeuge
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose exec rspamd-mailcow rspamc --help
|
|
docker compose exec rspamd-mailcow rspamadm --help
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose exec rspamd-mailcow rspamc --help
|
|
docker-compose exec rspamd-mailcow rspamadm --help
|
|
```
|
|
|
|
## Greylisting deaktivieren
|
|
|
|
Nur Nachrichten mit einer höheren Punktzahl werden als Greylisting betrachtet (soft rejected). Es ist schlechte Praxis, Greylisting zu deaktivieren.
|
|
|
|
Sie können Greylisting serverweit durch Editieren deaktivieren:
|
|
|
|
`{mailcow-dir}/data/conf/rspamd/local.d/greylist.conf`
|
|
|
|
Fügen Sie die Zeile hinzu:
|
|
|
|
```cpp
|
|
enabled = false;
|
|
```
|
|
|
|
Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu:
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose restart rspamd-mailcow
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose restart rspamd-mailcow
|
|
```
|
|
|
|
## Spamfilter-Schwellenwerte (global)
|
|
|
|
Jeder Benutzer kann [seine Spam-Bewertung](../mailcow-UI/u_e-mailcow_ui-spamfilter.de.md) individuell ändern. Um eine neue **serverweite** Grenze zu definieren, editieren Sie `data/conf/rspamd/local.d/actions.conf`:
|
|
|
|
```cpp
|
|
reject = 15;
|
|
add_header = 8;
|
|
greylist = 7;
|
|
```
|
|
|
|
Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu:
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose restart rspamd-mailcow
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose restart rspamd-mailcow
|
|
```
|
|
|
|
Bestehende Einstellungen der Benutzer werden nicht überschrieben!
|
|
|
|
Um benutzerdefinierte Schwellenwerte zurückzusetzen, führen Sie aus:
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
source mailcow.conf
|
|
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
|
|
# oder:
|
|
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel' and object = 'only-this-mailbox@example.org';"
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
source mailcow.conf
|
|
docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
|
|
# oder:
|
|
docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel' and object = 'only-this-mailbox@example.org';"
|
|
```
|
|
|
|
## Benutzerdefinierte Ablehnungsnachrichten
|
|
|
|
Die Standard-Spam-Reject-Meldung kann durch Hinzufügen einer neuen Datei `data/conf/rspamd/override.d/worker-proxy.custom.inc` mit dem folgenden Inhalt geändert werden:
|
|
|
|
```
|
|
reject_message = "Meine eigene Ablehnungsnachricht";
|
|
```
|
|
|
|
Speichern Sie die Datei und starten Sie Rspamd neu:
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose restart rspamd-mailcow
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose restart rspamd-mailcow
|
|
```
|
|
|
|
Waehrend das oben genannte fuer abgelehnte Mails mit einem hohen Spam-Score funktioniert, ignorieren Prefilter-Aktionen diese Einstellung. Für diese Karten muss das Multimap-Modul in Rspamd angepasst werden:
|
|
|
|
1. Finden Sie das Prefilet-Reject-Symbol, für das Sie die Nachricht ändern wollen, führen Sie dazu aus: `grep -R "SYMBOL_YOU_WANT_TO_ADJUST" /opt/mailcow-dockerized/data/conf/rspamd/`
|
|
|
|
2. Fügen Sie Ihre eigene Nachricht als neue Zeile hinzu:
|
|
|
|
```
|
|
GLOBAL_RCPT_BL {
|
|
Typ = "rcpt";
|
|
map = "${LOCAL_CONFDIR}/custom/global_rcpt_blacklist.map";
|
|
regexp = true;
|
|
prefilter = true;
|
|
action = "reject";
|
|
message = "Der Versand von E-Mails an diesen Empfänger ist durch postmaster@your.domain verboten";
|
|
}
|
|
```
|
|
|
|
3. Speichern Sie die Datei und starten Sie Rspamd neu:
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose restart rspamd-mailcow
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose restart rspamd-mailcow
|
|
```
|
|
|
|
## Verwerfen statt zurückweisen
|
|
|
|
Wenn Sie eine Nachricht stillschweigend verwerfen wollen, erstellen oder bearbeiten Sie die Datei `data/conf/rspamd/override.d/worker-proxy.custom.inc` und fügen Sie den folgenden Inhalt hinzu:
|
|
|
|
```
|
|
discard_on_reject = true;
|
|
```
|
|
|
|
Starten Sie Rspamd neu:
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose restart rspamd-mailcow
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose restart rspamd-mailcow
|
|
```
|
|
|
|
## Lösche alle Ratelimit-Schlüssel
|
|
|
|
Wenn Sie das UI nicht verwenden wollen und stattdessen alle Schlüssel in der Redis-Datenbank löschen wollen, können Sie redis-cli für diese Aufgabe verwenden:
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose exec redis-mailcow sh
|
|
# Unlink (verfügbar in Redis >=4.) löscht im Hintergrund
|
|
redis-cli --scan --pattern RL* | xargs redis-cli unlink
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose exec redis-mailcow sh
|
|
# Unlink (verfügbar in Redis >=4.) löscht im Hintergrund
|
|
redis-cli --scan --pattern RL* | xargs redis-cli unlink
|
|
```
|
|
|
|
Starten Sie Rspamd neu:
|
|
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose restart rspamd-mailcow
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose restart rspamd-mailcow
|
|
```
|
|
|
|
## Erneutes Senden von Quarantäne-Benachrichtigungen auslösen
|
|
|
|
Sollte nur zur Fehlersuche verwendet werden!
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose exec dovecot-mailcow bash
|
|
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
|
|
redis-cli -h redis DEL Q_LAST_NOTIFIED
|
|
quarantine_notify.py
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose exec dovecot-mailcow bash
|
|
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
|
|
redis-cli -h redis DEL Q_LAST_NOTIFIED
|
|
quarantine_notify.py
|
|
```
|
|
|
|
## Speicherung der Historie erhöhen
|
|
|
|
Standardmäßig speichert Rspamd 1000 Elemente in der Historie.
|
|
|
|
Die Historie wird komprimiert gespeichert.
|
|
|
|
Es wird empfohlen, hier keinen unverhältnismäßig hohen Wert zu verwenden, probieren Sie etwas in der Größenordnung von 5000 oder 10000 und sehen Sie, wie Ihr Server damit umgeht:
|
|
|
|
Bearbeiten Sie `data/conf/rspamd/local.d/history_redis.conf`:
|
|
|
|
```
|
|
nrows = 1000; # Ändern Sie diesen Wert
|
|
```
|
|
|
|
Starten Sie anschließend Rspamd neu:
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose restart rspamd-mailcow
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose restart rspamd-mailcow
|
|
```
|
|
|
|
## Hinzufügen von Rspamd Modulen
|
|
|
|
Laden Sie das Modul herunter und speichern Sie es in folgenden Pfad ab: `data/conf/rspamd/plugins.d/`.
|
|
|
|
Danach müssen Sie die Konfigurationsparameter des Modules in `data/conf/rspamd/rspamd.conf.local` hinzufügen.
|
|
Falls das Modul `my_plugin.lua` heißt, sollte die Datei wie folgt aussehen:
|
|
|
|
```
|
|
# rspamd.conf.local
|
|
my_plugin {
|
|
some_setting = "some value";
|
|
}
|
|
```
|
|
|
|
Falls Ihr Modul keine zusätzlichen Konfigurationen benötigt, reicht es aus einen leeren Konfigurationsblock hinzuzufügen. Wie im folgenden Beispiel zu sehen:
|
|
|
|
```
|
|
# rspamd.conf.local
|
|
my_plugin { }
|
|
```
|
|
|
|
Falls Sie keinen Konfigurationsblock hinzufügen, dann wird das Modul automatisch deaktiviert und im Logfile des rspamd-mailcow Containers sehen Sie folgende Nachricht:
|
|
|
|
|
|
```
|
|
mailcowdockerized-rspamd-mailcow-1 | 2023-05-20 14:01:32 #1(main) <sh6j9z>; cfg; rspamd_config_is_module_enabled: lua module my_plugin is enabled but has not been configured
|
|
mailcowdockerized-rspamd-mailcow-1 | 2023-05-20 14:01:32 #1(main) <sh6j9z>; cfg; rspamd_config_is_module_enabled: my_plugin disabling unconfigured lua module
|
|
```
|
|
|
|
Falls Sie das Modul erfolgreich konfiguiert haben, dann sollte das Logfile des rspamd-mailcow Containers wie folgt aussehen:
|
|
|
|
```
|
|
mailcowdockerized-rspamd-mailcow-1 | 2023-05-20 14:04:50 #1(main) <8ayxpf>; cfg; rspamd_init_lua_filters: init lua module my_plugin from /etc/rspamd/plugins.d//my_plugin.lua; digest: 5cb88961e5 |