Rewrite for Linked content tabs

Dieser Commit ist enthalten in:
Peter 2022-12-14 22:09:09 +01:00
Ursprung cc5a529823
Commit 460476a091
Es konnte kein GPG-SchlĂĽssel zu dieser Signatur gefunden werden
GPG-SchlĂĽssel-ID: A40EE5665510C9D5
26 geänderte Dateien mit 831 neuen und 247 gelöschten Zeilen

Datei anzeigen

@ -1,11 +1,18 @@
Um mailcow: dockerized mit all seinen Volumes, Images und Containern zu entfernen, tun Sie dies: Um mailcow: dockerized mit all seinen Volumes, Images und Containern zu entfernen, tun Sie dies:
=== "docker compose"
``` ``` bash
docker compose down -v --rmi all --remove-orphans docker compose down -v --rmi all --remove-orphans
``` ```
=== "docker-compose"
``` bash
docker-compose down -v --rmi all --remove-orphans
```
!!! info !!! info
- **-v** Entfernt benannte Volumes, die im Abschnitt `volumes` der Compose-Datei deklariert sind, und anonyme Volumes, die an Container angehängt sind. - **-v** Entfernt benannte Volumes, die im Abschnitt `volumes` der Compose-Datei deklariert sind, und anonyme Volumes, die an Container angehängt sind.
- **--rmi <Typ>** Images entfernen. Der Typ muss einer der folgenden sein: `all`: Entfernt alle Images, die von einem beliebigen Dienst verwendet werden. `local`: Entfernt nur Bilder, die kein benutzerdefiniertes Tag haben, das durch das Feld "image" gesetzt wurde. - **--rmi <Typ>** Images entfernen. Der Typ muss einer der folgenden sein: `all`: Entfernt alle Images, die von einem beliebigen Dienst verwendet werden. `local`: Entfernt nur Bilder, die kein benutzerdefiniertes Tag haben, das durch das Feld "image" gesetzt wurde.
- **--remove-orphans** Entfernt Container fĂĽr Dienste, die nicht in der Compose-Datei definiert sind. - **--remove-orphans** Entfernt Container fĂĽr Dienste, die nicht in der Compose-Datei definiert sind.
- Standardmäßig entfernt `docker compose down` nur derzeit aktive Container und Netzwerke, die in der Datei `docker-compose.yml` definiert sind. - Standardmäßig entfernt `docker compose down` nur derzeit aktive Container und Netzwerke, die in der Datei `docker-compose.yml` definiert sind.

Datei anzeigen

@ -1,8 +1,15 @@
To remove mailcow: dockerized with all it's volumes, images and containers do: To remove mailcow: dockerized with all it's volumes, images and containers do:
=== "docker compose"
``` ``` bash
docker compose down -v --rmi all --remove-orphans docker compose down -v --rmi all --remove-orphans
``` ```
=== "docker-compose"
``` bash
docker-compose down -v --rmi all --remove-orphans
```
!!! info !!! info
- **-v** Remove named volumes declared in the `volumes` section of the Compose file and anonymous volumes attached to containers. - **-v** Remove named volumes declared in the `volumes` section of the Compose file and anonymous volumes attached to containers.

Datei anzeigen

@ -17,7 +17,7 @@ Bitte verwenden Sie die neueste verfĂĽgbare Docker-Engine und nicht die Engine,
### docker compose ### docker compose
!!! danger "Achtung" !!! danger "Achtung"
**mailcow benötigt eine Version von Docker Compose >= v2**. **mailcow benötigt eine Version von Docker Compose >= v2**.
<br>Sollte die Installation von Docker ĂĽber das obenstehende Skript erfolgt sein wird das Docker Compose Plugin bereits automatisch <br>Sollte die Installation von Docker ĂĽber das obenstehende Skript erfolgt sein wird das Docker Compose Plugin bereits automatisch
in einer Version >=2.0 installiert. <br> in einer Version >=2.0 installiert. <br>
Ist die mailcow Installation älter oder Docker wurde auf einem anderen Weg installiert, muss das Compose Plugin bzw. die Standalone Version von Docker manuell installiert werden. Ist die mailcow Installation älter oder Docker wurde auf einem anderen Weg installiert, muss das Compose Plugin bzw. die Standalone Version von Docker manuell installiert werden.
@ -114,7 +114,7 @@ Möglicherweise müssen Sie einen vorinstallierten MTA stoppen, der Port 25/tcp
Einige Updates modifizieren mailcow.conf und fügen neue Parameter hinzu. Es ist schwer, in der Dokumentation den Überblick zu behalten. Bitte überprüfen Sie deren Beschreibung und fragen Sie, wenn Sie unsicher sind, in den bekannten Kanälen nach Rat. Einige Updates modifizieren mailcow.conf und fügen neue Parameter hinzu. Es ist schwer, in der Dokumentation den Überblick zu behalten. Bitte überprüfen Sie deren Beschreibung und fragen Sie, wenn Sie unsicher sind, in den bekannten Kanälen nach Rat.
## Problembehandlungen ## Problembehandlungen
### Benutzer mit einer MTU ungleich 1500 (z.B. OpenStack) ### Benutzer mit einer MTU ungleich 1500 (z.B. OpenStack)
**Wenn Sie auf Probleme und seltsame Phänomene stoßen, überprüfen Sie bitte Ihre MTU.** **Wenn Sie auf Probleme und seltsame Phänomene stoßen, überprüfen Sie bitte Ihre MTU.**
@ -139,10 +139,19 @@ Sollten Sie jedoch kein IPv6-fähiges Netzwerk auf Ihrem Host haben und Sie sich
## mailcow starten ## mailcow starten
Laden Sie die Images herunter und fĂĽhren Sie die Compose-Datei aus. Der Parameter `-d` wird ihre mailcow dann im Hintergrund starten: Laden Sie die Images herunter und fĂĽhren Sie die Compose-Datei aus. Der Parameter `-d` wird ihre mailcow dann im Hintergrund starten:
``` === "docker compose"
docker compose pull
docker compose up -d ``` bash
``` docker compose pull
docker compose up -d
```
=== "docker-compose"
``` bash
docker-compose pull
docker-compose up -d
```
Geschafft! Geschafft!
@ -153,4 +162,4 @@ Sie können nun auf **https://${MAILCOW_HOSTNAME}** mit den Standard-Zugangsdate
Die Datenbank wird sofort initialisiert, nachdem eine Verbindung zu MySQL hergestellt werden kann. Die Datenbank wird sofort initialisiert, nachdem eine Verbindung zu MySQL hergestellt werden kann.
Ihre Daten bleiben in mehreren Docker-Volumes erhalten, die nicht gelöscht werden, wenn Sie Container neu erstellen oder löschen. Führen Sie `docker volume ls` aus, um eine Liste aller Volumes zu sehen. Sie können `docker compose down` sicher ausführen, ohne persistente Daten zu entfernen. Ihre Daten bleiben in mehreren Docker-Volumes erhalten, die nicht gelöscht werden, wenn Sie Container neu erstellen oder löschen. Führen Sie `docker volume ls` aus, um eine Liste aller Volumes zu sehen. Sie können `docker compose down` sicher ausführen, ohne persistente Daten zu entfernen.

Datei anzeigen

@ -139,10 +139,19 @@ If you do not have an IPv6 enabled network on your host and you don't care for a
## Start mailcow ## Start mailcow
Pull the images and run the compose file. The parameter `-d` will start mailcow: dockerized detached: Pull the images and run the compose file. The parameter `-d` will start mailcow: dockerized detached:
``` === "docker compose"
docker compose pull
docker compose up -d ``` bash
``` docker compose pull
docker compose up -d
```
=== "docker-compose"
``` bash
docker-compose pull
docker-compose up -d
```
Done! Done!

Datei anzeigen

@ -20,11 +20,21 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.
``` ```
**4\.** Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner. **4\.** Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner.
``` === "docker compose"
cd /opt/mailcow-dockerized
docker compose down ``` bash
systemctl stop docker.service cd /opt/mailcow-dockerized
``` docker compose down
systemctl stop docker.service
```
=== "docker-compose"
``` bash
cd /opt/mailcow-dockerized
docker-compose down
systemctl stop docker.service
```
**Wiederholen Sie Schritt 3 mit denselben Befehlen. Dies wird viel schneller gehen als beim ersten Mal. **Wiederholen Sie Schritt 3 mit denselben Befehlen. Dies wird viel schneller gehen als beim ersten Mal.
@ -34,14 +44,31 @@ systemctl start docker.service
``` ```
**7\.** Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner. **7\.** Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner.
``` === "docker compose"
cd /opt/mailcow-dockerized
docker compose pull ``` bash
``` cd /opt/mailcow-dockerized
docker compose pull
```
=== "docker-compose"
``` bash
cd /opt/mailcow-dockerized
docker-compose pull
```
**8\.** Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein! **8\.** Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein!
``` === "docker compose"
docker compose up -d
``` ``` bash
docker compose up -d
```
=== "docker-compose"
``` bash
docker compose up -d
```
**9\.** Zum Schluss ändern Sie Ihre DNS-Einstellungen so, dass sie auf den Zielserver zeigen. **9\.** Zum Schluss ändern Sie Ihre DNS-Einstellungen so, dass sie auf den Zielserver zeigen.

Datei anzeigen

@ -20,11 +20,21 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.
``` ```
**4\.** Shut down mailcow and stop Docker on the source machine. **4\.** Shut down mailcow and stop Docker on the source machine.
``` === "docker compose"
cd /opt/mailcow-dockerized
docker compose down ``` bash
systemctl stop docker.service cd /opt/mailcow-dockerized
``` docker compose down
systemctl stop docker.service
```
=== "docker-compose"
``` bash
cd /opt/mailcow-dockerized
docker-compose down
systemctl stop docker.service
```
**5\.** Repeat step 3 with the same commands. This will be much quicker than the first time. **5\.** Repeat step 3 with the same commands. This will be much quicker than the first time.
@ -34,14 +44,31 @@ systemctl start docker.service
``` ```
**7\.** Now pull the mailcow Docker images on the target machine. **7\.** Now pull the mailcow Docker images on the target machine.
``` === "docker compose"
cd /opt/mailcow-dockerized
docker compose pull ``` bash
``` cd /opt/mailcow-dockerized
docker compose pull
```
=== "docker-compose"
``` bash
cd /opt/mailcow-dockerized
docker-compose pull
```
**8\.** Start the whole mailcow stack and everything should be done! **8\.** Start the whole mailcow stack and everything should be done!
``` === "docker compose"
docker compose up -d
``` ``` bash
docker compose up -d
```
=== "docker-compose"
``` bash
docker compose up -d
```
**9\.** Finally, change your DNS settings to point to the target server. **9\.** Finally, change your DNS settings to point to the target server.

Datei anzeigen

@ -64,14 +64,25 @@ FĂĽhren Sie `git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab` aus, um zu sehen
Ja. Ja.
Siehe das obige Thema, anstelle eines Diffs fĂĽhren Sie checkout aus: Siehe das obige Thema, anstelle eines Diffs fĂĽhren Sie checkout aus:
=== "docker compose"
``` ``` bash
docker compose down docker compose down
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID # Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
docker compose pull docker compose pull
docker compose up -d docker compose up -d
``` ```
=== "docker-compose"
``` bash
docker-compose down
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
docker-compose pull
docker-compose up -d
```
### Hooks ### Hooks
@ -114,4 +125,4 @@ Sollte alles problemlos geklappt haben (wofĂĽr wir ja auch vorsichtshalber ein B
1. Das [Cold-Standby Skript](../backup_restore/b_n_r-coldstandby.de.md) nutzen um die Maschine **vor** dem Schwenk auf die Nightly Builds auf ein anderes System zu kopieren. 1. Das [Cold-Standby Skript](../backup_restore/b_n_r-coldstandby.de.md) nutzen um die Maschine **vor** dem Schwenk auf die Nightly Builds auf ein anderes System zu kopieren.
2. Das `update.sh` Skript auf der neuen Maschine mit dem Parameter `--nightly` ausführen und bestätigen. 2. Das `update.sh` Skript auf der neuen Maschine mit dem Parameter `--nightly` ausführen und bestätigen.
3. Die Nightly Updates auf der sekundären Maschine erleben/testen. 3. Die Nightly Updates auf der sekundären Maschine erleben/testen.

Datei anzeigen

@ -64,14 +64,25 @@ Run `git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab` to see what changed.
Yes. Yes.
See the topic above, instead of a diff, you run checkout: See the topic above, instead of a diff, you run checkout:
=== "docker compose"
``` ``` bash
docker compose down docker compose down
# Replace commit ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab by your ID # Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
docker compose pull docker compose pull
docker compose up -d docker compose up -d
``` ```
=== "docker-compose"
``` bash
docker-compose down
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
docker-compose pull
docker-compose up -d
```
### Hooks ### Hooks
@ -114,4 +125,4 @@ If everything worked fine (for which we made a backup before) the mailcow UI sho
1. use the [cold standby script](../backup_restore/b_n_r-coldstandby.en.md) to copy the machine **before** the switch to the nightly builds on another system. 1. use the [cold standby script](../backup_restore/b_n_r-coldstandby.en.md) to copy the machine **before** the switch to the nightly builds on another system.
2. run the `update.sh` script on the new machine with the parameter `--nightly` and confirm. 2. run the `update.sh` script on the new machine with the parameter `--nightly` and confirm.
3. experience/test the nightly updates on the secondary machine. 3. experience/test the nightly updates on the secondary machine.

Datei anzeigen

@ -44,13 +44,21 @@ MaxScriptNormalize 50M
MaxZipTypeRcg 50M MaxZipTypeRcg 50M
``` ```
10. Starten Sie den ClamAV Container neu: 10. Starten Sie den ClamAV Container neu:
```bash === "docker compose"
docker compose restart clamd-mailcow
``` ``` bash
docker compose restart clamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart clamd-mailcow
```
**Bitte beachten Sie**: **Bitte beachten Sie**:
- Sie können `ExcludePUA` und `IncludePUA` in der `clamd.conf` nicht gleichzeitig nutzen! Kommentieren Sie bitte `IncludePUA` aus, sollte es nicht auskommentiert sein. - Sie können `ExcludePUA` und `IncludePUA` in der `clamd.conf` nicht gleichzeitig nutzen! Kommentieren Sie bitte `IncludePUA` aus, sollte es nicht auskommentiert sein.
- Die Liste der Datenbanken genutzt in diesem Beispiel sollten für die meisten Fälle passen. SecuriteInfo bietet jedoch noch andere Datenbanken an. Bitte schauen Sie sich das SecuriteInfo FAQ für weitere Informationen an. - Die Liste der Datenbanken genutzt in diesem Beispiel sollten für die meisten Fälle passen. SecuriteInfo bietet jedoch noch andere Datenbanken an. Bitte schauen Sie sich das SecuriteInfo FAQ für weitere Informationen an.
- Mit den neu eingestellten Datenbanken (und den Standard Datenbanken) ClamAV verbraucht ClamAV etwa 1,3 GB RAM des Servers. - Mit den neu eingestellten Datenbanken (und den Standard Datenbanken) ClamAV verbraucht ClamAV etwa 1,3 GB RAM des Servers.
- Sollten Sie `message_size_limit` in Postfix verändert haben müssen Sie die `MaxSize` Einstellung in ClamAV auf den selben Wert eintragen. - Sollten Sie `message_size_limit` in Postfix verändert haben müssen Sie die `MaxSize` Einstellung in ClamAV auf den selben Wert eintragen.
@ -65,6 +73,14 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
``` ```
2. Starten Sie den ClamAV Container neu: 2. Starten Sie den ClamAV Container neu:
```bash === "docker compose"
docker compose restart clamd-mailcow
``` ``` bash
docker compose restart clamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart clamd-mailcow
```

Datei anzeigen

@ -44,13 +44,21 @@ MaxScriptNormalize 50M
MaxZipTypeRcg 50M MaxZipTypeRcg 50M
``` ```
10. Restart ClamAV container: 10. Restart ClamAV container:
```bash === "docker compose"
docker compose restart clamd-mailcow
``` ``` bash
docker compose restart clamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart clamd-mailcow
```
Please note: Please note:
- You can't use `ExcludePUA` and `IncludePUA` in `clamd.conf` simultaneously, so please comment any `IncludePUA` if you uncommented them before. - You can't use `ExcludePUA` and `IncludePUA` in `clamd.conf` simultaneously, so please comment any `IncludePUA` if you uncommented them before.
- List of databases provided in this example fit most use-cases, but SecuriteInfo also provides other databases. Please check SecuriteInfo FAQ for additional information. - List of databases provided in this example fit most use-cases, but SecuriteInfo also provides other databases. Please check SecuriteInfo FAQ for additional information.
- With the current DB set (including default DBs) ClamAV will consume about 1.3Gb of RAM on your server. - With the current DB set (including default DBs) ClamAV will consume about 1.3Gb of RAM on your server.
- If you modified `message_size_limit` in Postfix you need to adapt `MaxSize` settings in ClamAV as well. - If you modified `message_size_limit` in Postfix you need to adapt `MaxSize` settings in ClamAV as well.
@ -65,6 +73,14 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
``` ```
2. Restart ClamAV container: 2. Restart ClamAV container:
```bash === "docker compose"
docker compose restart clamd-mailcow
``` ``` bash
docker compose restart clamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart clamd-mailcow
```

Datei anzeigen

@ -1,10 +1,17 @@
## Whitelist fĂĽr bestimmte ClamAV-Signaturen ## Whitelist fĂĽr bestimmte ClamAV-Signaturen
Es kann vorkommen, dass legitime (saubere) Mails von ClamAV blockiert werden (Rspamd markiert die Mail mit `VIRUS_FOUND`). So werden beispielsweise interaktive PDF-Formularanhänge standardmäßig blockiert, da der eingebettete Javascript-Code für schädliche Zwecke verwendet werden könnte. Überprüfen Sie dies anhand der clamd-Protokolle, z.B.: Es kann vorkommen, dass legitime (saubere) Mails von ClamAV blockiert werden (Rspamd markiert die Mail mit `VIRUS_FOUND`). So werden beispielsweise interaktive PDF-Formularanhänge standardmäßig blockiert, da der eingebettete Javascript-Code für schädliche Zwecke verwendet werden könnte. Überprüfen Sie dies anhand der clamd-Protokolle, z.B.:
=== "docker compose"
```bash ``` bash
docker compose logs clamd-mailcow | grep "FOUND" docker compose logs clamd-mailcow | grep "FOUND"
``` ```
=== "docker-compose"
``` bash
docker-compose logs clamd-mailcow | grep "FOUND"
```
Diese Zeile bestätigt, dass ein solcher identifiziert wurde: Diese Zeile bestätigt, dass ein solcher identifiziert wurde:
@ -19,15 +26,31 @@ echo 'PUA.Pdf.Trojan.EmbeddedJavaScript-1' >> data/conf/clamav/whitelist.ign2
``` ```
Dann starten Sie den clamd-mailcow Service Container in der mailcow UI oder mit docker compose neu: Dann starten Sie den clamd-mailcow Service Container in der mailcow UI oder mit docker compose neu:
=== "docker compose"
```bash ``` bash
docker compose restart clamd-mailcow docker compose restart clamd-mailcow
``` ```
=== "docker-compose"
``` bash
docker-compose restart clamd-mailcow
```
Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis: Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis:
=== "docker compose"
``` ``` bash
# docker compose exec redis-mailcow /bin/sh docker compose exec redis-mailcow /bin/sh
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL /data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
/data # exit /data # exit
``` ```
=== "docker-compose"
``` bash
docker-compose exec redis-mailcow /bin/sh
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
/data # exit
```

Datei anzeigen

@ -1,10 +1,17 @@
## Whitelist specific ClamAV signatures ## Whitelist specific ClamAV signatures
You may find that legitimate (clean) mail is being blocked by ClamAV (Rspamd will flag the mail with `VIRUS_FOUND`). For instance, interactive PDF form attachments are blocked by default because the embedded Javascript code may be used for nefarious purposes. Confirm by looking at the clamd logs, e.g.: You may find that legitimate (clean) mail is being blocked by ClamAV (Rspamd will flag the mail with `VIRUS_FOUND`). For instance, interactive PDF form attachments are blocked by default because the embedded Javascript code may be used for nefarious purposes. Confirm by looking at the clamd logs, e.g.:
=== "docker compose"
```bash ``` bash
docker compose logs clamd-mailcow | grep "FOUND" docker compose logs clamd-mailcow | grep "FOUND"
``` ```
=== "docker-compose"
``` bash
docker-compose logs clamd-mailcow | grep "FOUND"
```
This line confirms that such was identified: This line confirms that such was identified:
@ -19,15 +26,31 @@ echo 'PUA.Pdf.Trojan.EmbeddedJavaScript-1' >> data/conf/clamav/whitelist.ign2
``` ```
Then restart the clamd-mailcow service container in the mailcow UI or using docker compose: Then restart the clamd-mailcow service container in the mailcow UI or using docker compose:
=== "docker compose"
```bash ``` bash
docker compose restart clamd-mailcow docker compose restart clamd-mailcow
``` ```
=== "docker-compose"
``` bash
docker-compose restart clamd-mailcow
```
Cleanup cached ClamAV results in Redis: Cleanup cached ClamAV results in Redis:
=== "docker compose"
``` ``` bash
# docker compose exec redis-mailcow /bin/sh docker compose exec redis-mailcow /bin/sh
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL /data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
/data # exit /data # exit
``` ```
=== "docker-compose"
``` bash
docker-compose exec redis-mailcow /bin/sh
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
/data # exit
```

Datei anzeigen

@ -20,6 +20,14 @@ $service-mailcow:
Abschliessend müssen die geänderten Container automatisch neu erstellt werden: Abschliessend müssen die geänderten Container automatisch neu erstellt werden:
``` === "docker compose"
docker compose up -d
``` ``` bash
docker compose up -d
```
=== "docker-compose"
``` bash
docker-compose up -d
```

Datei anzeigen

@ -20,7 +20,14 @@ $service-mailcow:
``` ```
Now auto-recreate modified containers: Now auto-recreate modified containers:
=== "docker compose"
``` ``` bash
docker compose up -d docker compose up -d
``` ```
=== "docker-compose"
``` bash
docker-compose up -d
```

Datei anzeigen

@ -110,9 +110,16 @@ Dieser Dateiname muss keine ".conf"-Erweiterung haben, sondern folgt dem Muster
Wenn PHP in eine benutzerdefinierte Site eingebunden werden soll, verwenden Sie bitte den PHP-FPM-Listener auf phpfpm:9002 oder erstellen Sie einen neuen Listener in `data/conf/phpfpm/php-fpm.d/pools.conf`. Wenn PHP in eine benutzerdefinierte Site eingebunden werden soll, verwenden Sie bitte den PHP-FPM-Listener auf phpfpm:9002 oder erstellen Sie einen neuen Listener in `data/conf/phpfpm/php-fpm.d/pools.conf`.
Starten Sie Nginx neu (und PHP-FPM, falls ein neuer Listener erstellt wurde): Starten Sie Nginx neu (und PHP-FPM, falls ein neuer Listener erstellt wurde):
=== "docker compose"
``` ``` bash
docker compose restart nginx-mailcow docker compose restart nginx-mailcow
docker compose restart php-fpm-mailcow docker compose restart php-fpm-mailcow
``` ```
=== "docker-compose"
``` bash
docker-compose restart nginx-mailcow
docker-compose restart php-fpm-mailcow
```

Datei anzeigen

@ -111,8 +111,16 @@ This filename does not need to have a ".conf" extension but follows the pattern
If PHP is to be included in a custom site, please use the PHP-FPM listener on phpfpm:9002 or create a new listener in `data/conf/phpfpm/php-fpm.d/pools.conf`. If PHP is to be included in a custom site, please use the PHP-FPM listener on phpfpm:9002 or create a new listener in `data/conf/phpfpm/php-fpm.d/pools.conf`.
Restart Nginx (and PHP-FPM, if a new listener was created): Restart Nginx (and PHP-FPM, if a new listener was created):
=== "docker compose"
``` ``` bash
docker compose restart nginx-mailcow docker compose restart nginx-mailcow
docker compose restart php-fpm-mailcow docker compose restart php-fpm-mailcow
``` ```
=== "docker-compose"
``` bash
docker-compose restart nginx-mailcow
docker-compose restart php-fpm-mailcow
```

Datei anzeigen

@ -1,7 +1,14 @@
Ă–ffnen Sie `data/conf/postfix/extra.cf` und setzen Sie das `message_size_limit` entsprechend in Bytes. Siehe `main.cf` fĂĽr den Standardwert. Ă–ffnen Sie `data/conf/postfix/extra.cf` und setzen Sie das `message_size_limit` entsprechend in Bytes. Siehe `main.cf` fĂĽr den Standardwert.
Starten Sie Postfix neu: Starten Sie Postfix neu:
=== "docker compose"
``` ``` bash
docker compose restart postfix-mailcow docker compose restart postfix-mailcow
``` ```
=== "docker-compose"
``` bash
docker-compose restart postfix-mailcow
```

Datei anzeigen

@ -1,7 +1,14 @@
Open `data/conf/postfix/extra.cf` and set the `message_size_limit` accordingly in bytes. See `main.cf` for the default value. Open `data/conf/postfix/extra.cf` and set the `message_size_limit` accordingly in bytes. See `main.cf` for the default value.
Restart Postfix: Restart Postfix:
=== "docker compose"
``` ``` bash
docker compose restart postfix-mailcow docker compose restart postfix-mailcow
``` ```
=== "docker-compose"
``` bash
docker-compose restart postfix-mailcow
```

Datei anzeigen

@ -19,9 +19,16 @@ smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_
``` ```
Postmap auf check_sasl_access ausfĂĽhren: Postmap auf check_sasl_access ausfĂĽhren:
=== "docker compose"
``` ``` bash
docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
``` ```
=== "docker-compose"
``` bash
docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
```
Starten Sie den Postfix-Container neu. Starten Sie den Postfix-Container neu.

Datei anzeigen

@ -19,9 +19,16 @@ smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_
``` ```
Run postmap on check_sasl_access: Run postmap on check_sasl_access:
=== "docker compose"
``` ``` bash
docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
``` ```
Restart the Postfix container. === "docker-compose"
``` bash
docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
```
Restart the Postfix container.

Datei anzeigen

@ -6,6 +6,14 @@ Syslog-ng wurde so konfiguriert, dass es diese Warnungen ausblendet, während Po
Starten Sie `postfix-mailcow` neu, um Ihre Ă„nderungen zu ĂĽbernehmen: Starten Sie `postfix-mailcow` neu, um Ihre Ă„nderungen zu ĂĽbernehmen:
``` === "docker compose"
docker compose restart postfix-mailcow
``` ``` bash
docker compose restart postfix-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart postfix-mailcow
```

Datei anzeigen

@ -6,6 +6,14 @@ Syslog-ng was configured to hide those warnings while Postfix is running, to not
Restart `postfix-mailcow` to apply your changes: Restart `postfix-mailcow` to apply your changes:
``` === "docker compose"
docker compose restart postfix-mailcow
``` ``` bash
docker compose restart postfix-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart postfix-mailcow
```

Datei anzeigen

@ -3,10 +3,17 @@ Redis wird als Key-Value-Speicher fĂĽr die Einstellungen und Daten von rspamd un
## Client ## Client
Um sich mit dem redis cli zu verbinden, fĂĽhren Sie aus: Um sich mit dem redis cli zu verbinden, fĂĽhren Sie aus:
=== "docker compose"
``` ``` bash
docker compose exec redis-mailcow redis-cli docker compose exec redis-mailcow redis-cli
``` ```
=== "docker-compose"
``` bash
docker-compose exec redis-mailcow redis-cli
```
### Fehlersuche ### Fehlersuche
@ -15,15 +22,27 @@ Hier sind einige nĂĽtzliche Befehle fĂĽr den redis-cli zur Fehlersuche:
##### MONITOR ##### MONITOR
Ăśberwacht alle vom Server empfangenen Anfragen in Echtzeit: Ăśberwacht alle vom Server empfangenen Anfragen in Echtzeit:
=== "docker compose"
``` ``` bash
# docker compose exec redis-mailcow redis-cli #docker compose exec redis-mailcow redis-cli
127.0.0.1:6379> monitor 127.0.0.1:6379> monitor
OK OK
1494077286.401963 [0 172.22.1.253:41228] "SMEMBERS" "BAYES_SPAM_keys" 1494077286.401963 [0 172.22.1.253:41228] "SMEMBERS" "BAYES_SPAM_keys"
1494077288.292970 [0 172.22.1.253:41229] "SMEMBERS" "BAYES_SPAM_keys" 1494077288.292970 [0 172.22.1.253:41229] "SMEMBERS" "BAYES_SPAM_keys"
[...] [...]
``` ```
=== "docker-compose"
``` bash
#docker-compose exec redis-mailcow redis-cli
127.0.0.1:6379> monitor
OK
1494077286.401963 [0 172.22.1.253:41228] "SMEMBERS" "BAYES_SPAM_keys"
1494077288.292970 [0 172.22.1.253:41229] "SMEMBERS" "BAYES_SPAM_keys"
[...]
```
##### SCHLĂśSSEL (Keys) ##### SCHLĂśSSEL (Keys)
@ -42,4 +61,4 @@ Testen Sie eine Verbindung:
PONG PONG
``` ```
Wenn Sie mehr wissen wollen, hier ist ein [Cheat-Sheet](https://www.cheatography.com/tasjaevan/cheat-sheets/redis/). Wenn Sie mehr wissen wollen, hier ist ein [Cheat-Sheet](https://www.cheatography.com/tasjaevan/cheat-sheets/redis/).

Datei anzeigen

@ -3,10 +3,17 @@ Redis is used as a key-value store for rspamd's and (some of) mailcow's settings
## Client ## Client
To connect to the redis cli execute: To connect to the redis cli execute:
=== "docker compose"
``` ``` bash
docker compose exec redis-mailcow redis-cli docker compose exec redis-mailcow redis-cli
``` ```
=== "docker-compose"
``` bash
docker-compose exec redis-mailcow redis-cli
```
### Debugging ### Debugging
@ -15,15 +22,27 @@ Here are some useful commands for the redis-cli for debugging:
##### MONITOR ##### MONITOR
Listens for all requests received by the server in real time: Listens for all requests received by the server in real time:
=== "docker compose"
``` ``` bash
# docker compose exec redis-mailcow redis-cli #docker compose exec redis-mailcow redis-cli
127.0.0.1:6379> monitor 127.0.0.1:6379> monitor
OK OK
1494077286.401963 [0 172.22.1.253:41228] "SMEMBERS" "BAYES_SPAM_keys" 1494077286.401963 [0 172.22.1.253:41228] "SMEMBERS" "BAYES_SPAM_keys"
1494077288.292970 [0 172.22.1.253:41229] "SMEMBERS" "BAYES_SPAM_keys" 1494077288.292970 [0 172.22.1.253:41229] "SMEMBERS" "BAYES_SPAM_keys"
[...] [...]
``` ```
=== "docker-compose"
``` bash
#docker-compose exec redis-mailcow redis-cli
127.0.0.1:6379> monitor
OK
1494077286.401963 [0 172.22.1.253:41228] "SMEMBERS" "BAYES_SPAM_keys"
1494077288.292970 [0 172.22.1.253:41229] "SMEMBERS" "BAYES_SPAM_keys"
[...]
```
##### KEYS ##### KEYS
@ -42,4 +61,4 @@ Test a connection:
PONG PONG
``` ```
If you want to know more, here is a [cheat sheet](https://www.cheatography.com/tasjaevan/cheat-sheets/redis/). If you want to know more, here is a [cheat sheet](https://www.cheatography.com/tasjaevan/cheat-sheets/redis/).

Datei anzeigen

@ -16,13 +16,23 @@ Sie können auch die Web-UI von Rspamd verwenden, um Ham und/oder Spam zu lernen
### Spam oder Ham aus bestehendem Verzeichnis lernen ### Spam oder Ham aus bestehendem Verzeichnis lernen
Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen: Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen:
=== "docker compose"
```bash ``` bash
# Ham # Ham
for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
# Spam # Spam
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
``` ```
=== "docker-compose"
``` 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: 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:
@ -42,26 +52,51 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
``` ```
**Bayes-Daten zurĂĽcksetzen** **Bayes-Daten zurĂĽcksetzen**
=== "docker compose"
```bash ``` 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 BAYES_* | xargs redis-cli del'
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del' docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
``` ```
=== "docker-compose"
``` 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** **Neurale Daten zurĂĽcksetzen**
=== "docker compose"
```bash ``` bash
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del' docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
``` ```
=== "docker-compose"
``` bash
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
```
**Fuzzy-Daten zurĂĽcksetzen** **Fuzzy-Daten zurĂĽcksetzen**
=== "docker compose"
```bash ``` bash
# Wir mĂĽssen zuerst das redis-cli eingeben: # Wir mĂĽssen zuerst das redis-cli eingeben:
docker compose exec redis-mailcow redis-cli docker compose exec redis-mailcow redis-cli
# In 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* 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"
``` 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** **Info**
@ -74,11 +109,19 @@ Wenn redis-cli sich beschwert ĂĽber...
...das Schlüsselmuster nicht gefunden wurde und somit keine Daten zum Löschen vorhanden sind - ist es in Ordnung. ...das Schlüsselmuster nicht gefunden wurde und somit keine Daten zum Löschen vorhanden sind - ist es in Ordnung.
## CLI-Werkzeuge ## CLI-Werkzeuge
=== "docker compose"
``bash ``` bash
docker compose exec rspamd-mailcow rspamc --help docker compose exec rspamd-mailcow rspamc --help
docker compose exec rspamd-mailcow rspamadm --help docker compose exec rspamd-mailcow rspamadm --help
``` ```
=== "docker-compose"
``` bash
docker-compose exec rspamd-mailcow rspamc --help
docker-compose exec rspamd-mailcow rspamadm --help
```
## Greylisting deaktivieren ## Greylisting deaktivieren
@ -94,7 +137,18 @@ FĂĽgen Sie die Zeile hinzu:
enabled = false; enabled = false;
``` ```
Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: `docker compose restart rspamd-mailcow` Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu:
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
## Spamfilter-Schwellenwerte (global) ## Spamfilter-Schwellenwerte (global)
@ -106,18 +160,39 @@ add_header = 8;
greylist = 7; greylist = 7;
``` ```
Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: `docker compose restart rspamd-mailcow` Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu:
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
Bestehende Einstellungen der Benutzer werden nicht ĂĽberschrieben! Bestehende Einstellungen der Benutzer werden nicht ĂĽberschrieben!
Um benutzerdefinierte Schwellenwerte zurĂĽckzusetzen, fĂĽhren Sie aus: Um benutzerdefinierte Schwellenwerte zurĂĽckzusetzen, fĂĽhren Sie aus:
=== "docker compose"
``` ``` bash
source mailcow.conf source mailcow.conf
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';" docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
# oder: # 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 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"
``` 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 ## Benutzerdefinierte Ablehnungsnachrichten
@ -127,7 +202,18 @@ Die Standard-Spam-Reject-Meldung kann durch HinzufĂĽgen einer neuen Datei `data/
reject_message = "Meine eigene Ablehnungsnachricht"; reject_message = "Meine eigene Ablehnungsnachricht";
``` ```
Speichern Sie die Datei und starten Sie Rspamd neu: `docker compose restart rspamd-mailcow`. Speichern Sie die Datei und starten Sie Rspamd neu:
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` 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: 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:
@ -146,7 +232,18 @@ GLOBAL_RCPT_BL {
} }
``` ```
3. Speichern Sie die Datei und starten Sie Rspamd neu: `docker compose restart rspamd-mailcow`. 3. Speichern Sie die Datei und starten Sie Rspamd neu:
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
## Verwerfen statt zurĂĽckweisen ## Verwerfen statt zurĂĽckweisen
@ -157,37 +254,71 @@ discard_on_reject = true;
``` ```
Starten Sie Rspamd neu: Starten Sie Rspamd neu:
=== "docker compose"
```bash ``` bash
docker compose restart rspamd-mailcow docker compose restart rspamd-mailcow
``` ```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
## Lösche alle Ratelimit-Schlüssel ## 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: 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"
``` ``` bash
docker compose exec redis-mailcow sh docker compose exec redis-mailcow sh
# Unlink (verfügbar in Redis >=4.) löscht im Hintergrund # Unlink (verfügbar in Redis >=4.) löscht im Hintergrund
redis-cli --scan --pattern RL* | xargs redis-cli unlink redis-cli --scan --pattern RL* | xargs redis-cli unlink
``` ```
=== "docker-compose"
``` 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: Starten Sie Rspamd neu:
```bash === "docker compose"
docker compose restart rspamd-mailcow
``` ``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
## Erneutes Senden von Quarantäne-Benachrichtigungen auslösen ## Erneutes Senden von Quarantäne-Benachrichtigungen auslösen
Sollte nur zur Fehlersuche verwendet werden! Sollte nur zur Fehlersuche verwendet werden!
=== "docker compose"
``` ``` bash
docker compose exec dovecot-mailcow bash docker compose exec dovecot-mailcow bash
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;" mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
redis-cli -h redis DEL Q_LAST_NOTIFIED redis-cli -h redis DEL Q_LAST_NOTIFIED
quarantine_notify.py quarantine_notify.py
``` ```
=== "docker-compose"
``` 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 ## Speicherung der Historie erhöhen
@ -203,7 +334,15 @@ Bearbeiten Sie `data/conf/rspamd/local.d/history_redis.conf`:
nrows = 1000; # Ă„ndern Sie diesen Wert nrows = 1000; # Ă„ndern Sie diesen Wert
``` ```
Starten Sie anschlieĂźend Rspamd neu: `docker compose restart rspamd-mailcow` Starten Sie anschlieĂźend Rspamd neu:
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```

Datei anzeigen

@ -16,13 +16,23 @@ You can also use Rspamd's web UI to learn ham and / or spam or to adjust certain
### Learn Spam or Ham from existing directory ### Learn Spam or Ham from existing directory
You can use a one-liner to learn mail in plain-text (uncompressed) format: You can use a one-liner to learn mail in plain-text (uncompressed) format:
=== "docker compose"
```bash ``` bash
# Ham # Ham
for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
# Spam # Spam
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
``` ```
=== "docker-compose"
``` 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
```
Consider attaching a local folder as new volume to `rspamd-mailcow` in `docker-compose.yml` and learn given files inside the container. This can be used as workaround to parse compressed data with zcat. Example: Consider attaching a local folder as new volume to `rspamd-mailcow` in `docker-compose.yml` and learn given files inside the container. This can be used as workaround to parse compressed data with zcat. Example:
@ -42,26 +52,51 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
``` ```
**Reset Bayes data** **Reset Bayes data**
=== "docker compose"
```bash ``` 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 BAYES_* | xargs redis-cli del'
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del' docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
``` ```
=== "docker-compose"
``` 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'
```
**Reset Neural data** **Reset Neural data**
=== "docker compose"
```bash ``` bash
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del' docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
``` ```
=== "docker-compose"
``` bash
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
```
**Reset Fuzzy data** **Reset Fuzzy data**
=== "docker compose"
```bash ``` bash
# We need to enter the redis-cli first: # We need to enter the redis-cli first:
docker compose exec redis-mailcow redis-cli docker compose exec redis-mailcow redis-cli
# In 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* 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"
``` bash
# We need to enter the redis-cli first:
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** **Info**
@ -75,11 +110,19 @@ If redis-cli complains about...
## CLI tools ## CLI tools
=== "docker compose"
```bash ``` bash
docker compose exec rspamd-mailcow rspamc --help docker compose exec rspamd-mailcow rspamc --help
docker compose exec rspamd-mailcow rspamadm --help docker compose exec rspamd-mailcow rspamadm --help
``` ```
=== "docker-compose"
``` bash
docker-compose exec rspamd-mailcow rspamc --help
docker-compose exec rspamd-mailcow rspamadm --help
```
## Disable Greylisting ## Disable Greylisting
@ -95,7 +138,18 @@ Add the line:
enabled = false; enabled = false;
``` ```
Save the file and restart "rspamd-mailcow": `docker compose restart rspamd-mailcow` Save the file and restart "rspamd-mailcow":
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
## Spam filter thresholds (global) ## Spam filter thresholds (global)
@ -107,12 +161,39 @@ add_header = 8;
greylist = 7; greylist = 7;
``` ```
Save the file and restart "rspamd-mailcow": `docker compose restart rspamd-mailcow` Save the file and restart "rspamd-mailcow":
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
Existing settings of users will not be overwritten! Existing settings of users will not be overwritten!
To reset custom defined thresholds, run: To reset custom defined thresholds, run:
=== "docker compose"
``` bash
source mailcow.conf
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
# or:
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"
``` bash
source mailcow.conf
docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
# or:
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';"
```
``` ```
source mailcow.conf source mailcow.conf
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';" docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
@ -128,7 +209,18 @@ The default spam reject message can be changed by adding a new file `data/conf/r
reject_message = "My custom reject message"; reject_message = "My custom reject message";
``` ```
Save the file and restart Rspamd: `docker compose restart rspamd-mailcow`. Save the file and restart Rspamd:
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
While the above works for rejected mails with a high spam score, prefilter reject actions will ignore this setting. For these maps, the multimap module in Rspamd needs to be adjusted: While the above works for rejected mails with a high spam score, prefilter reject actions will ignore this setting. For these maps, the multimap module in Rspamd needs to be adjusted:
@ -147,7 +239,18 @@ GLOBAL_RCPT_BL {
} }
``` ```
3. Save the file and restart Rspamd: `docker compose restart rspamd-mailcow`. 3. Save the file and restart Rspamd:
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
## Discard instead of reject ## Discard instead of reject
@ -158,37 +261,70 @@ discard_on_reject = true;
``` ```
Restart Rspamd: Restart Rspamd:
=== "docker compose"
```bash ``` bash
docker compose restart rspamd-mailcow docker compose restart rspamd-mailcow
``` ```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
## Wipe all ratelimit keys ## Wipe all ratelimit keys
If you don't want to use the UI and instead wipe all keys in the Redis database, you can use redis-cli for that task: If you don't want to use the UI and instead wipe all keys in the Redis database, you can use redis-cli for that task:
=== "docker compose"
``` ``` bash
docker compose exec redis-mailcow sh docker compose exec redis-mailcow sh
# Unlink (available in Redis >=4.) will delete in the backgronud # Unlink (available in Redis >=4.) will delete in the backgronud
redis-cli --scan --pattern RL* | xargs redis-cli unlink redis-cli --scan --pattern RL* | xargs redis-cli unlink
``` ```
=== "docker-compose"
``` bash
docker-compose exec redis-mailcow sh
# Unlink (available in Redis >=4.) will delete in the backgronud
redis-cli --scan --pattern RL* | xargs redis-cli unlink
```
Restart Rspamd: Restart Rspamd:
=== "docker compose"
```bash ``` bash
docker compose restart rspamd-mailcow docker compose restart rspamd-mailcow
``` ```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```
## Trigger a resend of quarantine notifications ## Trigger a resend of quarantine notifications
Should be used for debugging only! Should be used for debugging only!
=== "docker compose"
``` ``` bash
docker compose exec dovecot-mailcow bash docker compose exec dovecot-mailcow bash
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;" mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
redis-cli -h redis DEL Q_LAST_NOTIFIED redis-cli -h redis DEL Q_LAST_NOTIFIED
quarantine_notify.py quarantine_notify.py
``` ```
=== "docker-compose"
``` 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
```
## Increase history retention ## Increase history retention
@ -204,4 +340,15 @@ Edit `data/conf/rspamd/local.d/history_redis.conf`:
nrows = 1000; # change this value nrows = 1000; # change this value
``` ```
Restart Rspamd afterwards: `docker compose restart rspamd-mailcow` Restart Rspamd afterwards:
=== "docker compose"
``` bash
docker compose restart rspamd-mailcow
```
=== "docker-compose"
``` bash
docker-compose restart rspamd-mailcow
```