mailcow-dockerized-docs/docs/manual-guides/Rspamd/u_e-rspamd.de.md
Shea Ramage 3ef293e0a8
Add documentation for 3rd party Rspamd modules (#575)
* English documentation for adding 3rd party modules to Rspamd

* Added German translations, thanks to @MAGICCC

---------

Co-authored-by: SnailShea <shea@vulpes.club>
2023-05-21 12:02:24 +02:00

12 KiB

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:

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

# 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...

(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:

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 individuell Àndern. Um eine neue serverweite Grenze zu definieren, editieren Sie data/conf/rspamd/local.d/actions.conf:

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";
}
  1. Speichern Sie die Datei und starten Sie Rspamd neu: === "docker compose (Plugin)"

    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