From cc5a529823dcdb1c7a44b34994caf0ecaa3a1892 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 14 Dec 2022 22:08:46 +0100 Subject: [PATCH 01/11] Enable plugin for Linked content tabs --- mkdocs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mkdocs.yml b/mkdocs.yml index fc0597966..6df5c20c0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -25,6 +25,7 @@ theme: - navigation.top - navigation.tracking - announce.dismiss + - content.tabs.link markdown_extensions: - abbr @@ -41,6 +42,9 @@ markdown_extensions: - pymdownx.betterem - pymdownx.snippets - footnotes + - pymdownx.superfences + - pymdownx.tabbed: + alternate_style: true nav: - 'Information & Support': 'index.md' From 460476a09117d3963c5f98f5682522b17ef8e460 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 14 Dec 2022 22:09:09 +0100 Subject: [PATCH 02/11] Rewrite for Linked content tabs --- docs/i_u_m/i_u_m_deinstall.de.md | 15 +- docs/i_u_m/i_u_m_deinstall.en.md | 13 +- docs/i_u_m/i_u_m_install.de.md | 23 +- docs/i_u_m/i_u_m_install.en.md | 17 +- docs/i_u_m/i_u_m_migration.de.md | 51 +++- docs/i_u_m/i_u_m_migration.en.md | 51 +++- docs/i_u_m/i_u_m_update.de.md | 27 +- docs/i_u_m/i_u_m_update.en.md | 27 +- .../ClamAV/u_e-clamav-additional_dbs.de.md | 30 ++- .../ClamAV/u_e-clamav-additional_dbs.en.md | 30 ++- .../ClamAV/u_e-clamav-whitelist.de.md | 45 +++- .../ClamAV/u_e-clamav-whitelist.en.md | 45 +++- .../Docker/u_e-docker-cust_dockerfiles.de.md | 14 +- .../Docker/u_e-docker-cust_dockerfiles.en.md | 13 +- .../Nginx/u_e-nginx_custom.de.md | 15 +- .../Nginx/u_e-nginx_custom.en.md | 16 +- .../Postfix/u_e-postfix-attachment_size.de.md | 13 +- .../Postfix/u_e-postfix-attachment_size.en.md | 13 +- ...-postfix-disable_sender_verification.de.md | 13 +- ...-postfix-disable_sender_verification.en.md | 15 +- .../Postfix/u_e-postfix-extra_cf.de.md | 14 +- .../Postfix/u_e-postfix-extra_cf.en.md | 14 +- docs/manual-guides/Redis/u_e-redis.de.md | 43 +++- docs/manual-guides/Redis/u_e-redis.en.md | 43 +++- docs/manual-guides/Rspamd/u_e-rspamd.de.md | 241 ++++++++++++++---- docs/manual-guides/Rspamd/u_e-rspamd.en.md | 237 +++++++++++++---- 26 files changed, 831 insertions(+), 247 deletions(-) diff --git a/docs/i_u_m/i_u_m_deinstall.de.md b/docs/i_u_m/i_u_m_deinstall.de.md index d6c5f3603..726fb8855 100644 --- a/docs/i_u_m/i_u_m_deinstall.de.md +++ b/docs/i_u_m/i_u_m_deinstall.de.md @@ -1,11 +1,18 @@ Um mailcow: dockerized mit all seinen Volumes, Images und Containern zu entfernen, tun Sie dies: +=== "docker compose" -``` -docker compose down -v --rmi all --remove-orphans -``` + ``` bash + docker compose down -v --rmi all --remove-orphans + ``` + +=== "docker-compose" + + ``` bash + docker-compose down -v --rmi all --remove-orphans + ``` !!! info - **-v** Entfernt benannte Volumes, die im Abschnitt `volumes` der Compose-Datei deklariert sind, und anonyme Volumes, die an Container angehängt sind. - **--rmi ** 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. - - Standardmäßig entfernt `docker compose down` nur derzeit aktive Container und Netzwerke, die in der Datei `docker-compose.yml` definiert sind. \ No newline at end of file + - Standardmäßig entfernt `docker compose down` nur derzeit aktive Container und Netzwerke, die in der Datei `docker-compose.yml` definiert sind. diff --git a/docs/i_u_m/i_u_m_deinstall.en.md b/docs/i_u_m/i_u_m_deinstall.en.md index 4399712ed..ad08d0c83 100644 --- a/docs/i_u_m/i_u_m_deinstall.en.md +++ b/docs/i_u_m/i_u_m_deinstall.en.md @@ -1,8 +1,15 @@ To remove mailcow: dockerized with all it's volumes, images and containers do: +=== "docker compose" -``` -docker compose down -v --rmi all --remove-orphans -``` + ``` bash + docker compose down -v --rmi all --remove-orphans + ``` + +=== "docker-compose" + + ``` bash + docker-compose down -v --rmi all --remove-orphans + ``` !!! info - **-v** Remove named volumes declared in the `volumes` section of the Compose file and anonymous volumes attached to containers. diff --git a/docs/i_u_m/i_u_m_install.de.md b/docs/i_u_m/i_u_m_install.de.md index 77e74e24c..07353bca1 100644 --- a/docs/i_u_m/i_u_m_install.de.md +++ b/docs/i_u_m/i_u_m_install.de.md @@ -17,7 +17,7 @@ Bitte verwenden Sie die neueste verfügbare Docker-Engine und nicht die Engine, ### docker compose !!! danger "Achtung" - **mailcow benötigt eine Version von Docker Compose >= v2**. + **mailcow benötigt eine Version von Docker Compose >= v2**.
Sollte die Installation von Docker über das obenstehende Skript erfolgt sein wird das Docker Compose Plugin bereits automatisch in einer Version >=2.0 installiert.
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. -## Problembehandlungen +## Problembehandlungen ### 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.** @@ -139,10 +139,19 @@ Sollten Sie jedoch kein IPv6-fähiges Netzwerk auf Ihrem Host haben und Sie sich ## 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: -``` -docker compose pull -docker compose up -d -``` +=== "docker compose" + + ``` bash + docker compose pull + docker compose up -d + ``` + +=== "docker-compose" + + ``` bash + docker-compose pull + docker-compose up -d + ``` 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. -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. \ No newline at end of file +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. diff --git a/docs/i_u_m/i_u_m_install.en.md b/docs/i_u_m/i_u_m_install.en.md index ec71f3335..ffa132eba 100644 --- a/docs/i_u_m/i_u_m_install.en.md +++ b/docs/i_u_m/i_u_m_install.en.md @@ -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 Pull the images and run the compose file. The parameter `-d` will start mailcow: dockerized detached: -``` -docker compose pull -docker compose up -d -``` +=== "docker compose" + + ``` bash + docker compose pull + docker compose up -d + ``` + +=== "docker-compose" + + ``` bash + docker-compose pull + docker-compose up -d + ``` Done! diff --git a/docs/i_u_m/i_u_m_migration.de.md b/docs/i_u_m/i_u_m_migration.de.md index 161ddcd9d..4809d1c34 100644 --- a/docs/i_u_m/i_u_m_migration.de.md +++ b/docs/i_u_m/i_u_m_migration.de.md @@ -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. -``` -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 + ``` + +=== "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. @@ -34,14 +44,31 @@ systemctl start docker.service ``` **7\.** Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner. -``` -cd /opt/mailcow-dockerized -docker compose pull -``` +=== "docker compose" + + ``` 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! -``` -docker compose up -d -``` +=== "docker compose" + + ``` 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. diff --git a/docs/i_u_m/i_u_m_migration.en.md b/docs/i_u_m/i_u_m_migration.en.md index 9f8c8ae1e..12f8cbfd9 100644 --- a/docs/i_u_m/i_u_m_migration.en.md +++ b/docs/i_u_m/i_u_m_migration.en.md @@ -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. -``` -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 + ``` + +=== "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. @@ -34,14 +44,31 @@ systemctl start docker.service ``` **7\.** Now pull the mailcow Docker images on the target machine. -``` -cd /opt/mailcow-dockerized -docker compose pull -``` +=== "docker compose" + + ``` 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! -``` -docker compose up -d -``` +=== "docker compose" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose" + + ``` bash + docker compose up -d + ``` **9\.** Finally, change your DNS settings to point to the target server. diff --git a/docs/i_u_m/i_u_m_update.de.md b/docs/i_u_m/i_u_m_update.de.md index b2de1b2aa..3959061e6 100644 --- a/docs/i_u_m/i_u_m_update.de.md +++ b/docs/i_u_m/i_u_m_update.de.md @@ -64,14 +64,25 @@ Führen Sie `git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab` aus, um zu sehen Ja. Siehe das obige Thema, anstelle eines Diffs führen Sie checkout aus: +=== "docker compose" -``` -docker compose down -# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID -git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab -docker compose pull -docker compose up -d -``` + ``` bash + docker compose down + # Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID + git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab + docker compose pull + 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 @@ -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. 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. \ No newline at end of file +3. Die Nightly Updates auf der sekundären Maschine erleben/testen. diff --git a/docs/i_u_m/i_u_m_update.en.md b/docs/i_u_m/i_u_m_update.en.md index 4b831f022..8f745f098 100644 --- a/docs/i_u_m/i_u_m_update.en.md +++ b/docs/i_u_m/i_u_m_update.en.md @@ -64,14 +64,25 @@ Run `git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab` to see what changed. Yes. See the topic above, instead of a diff, you run checkout: +=== "docker compose" -``` -docker compose down -# Replace commit ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab by your ID -git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab -docker compose pull -docker compose up -d -``` + ``` bash + docker compose down + # Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID + git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab + docker compose pull + 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 @@ -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. 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. \ No newline at end of file +3. experience/test the nightly updates on the secondary machine. diff --git a/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.de.md b/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.de.md index 1f9c335e8..e4b50f219 100644 --- a/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.de.md +++ b/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.de.md @@ -44,13 +44,21 @@ MaxScriptNormalize 50M MaxZipTypeRcg 50M ``` 10. Starten Sie den ClamAV Container neu: -```bash -docker compose restart clamd-mailcow -``` +=== "docker compose" + + ``` bash + docker compose restart clamd-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart clamd-mailcow + ``` **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. - 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. @@ -65,6 +73,14 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb DatabaseCustomURL http://sigs.interserver.net/whitelist.fp ``` 2. Starten Sie den ClamAV Container neu: -```bash -docker compose restart clamd-mailcow -``` +=== "docker compose" + + ``` bash + docker compose restart clamd-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart clamd-mailcow + ``` diff --git a/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.en.md b/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.en.md index b912ec280..afafac8aa 100644 --- a/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.en.md +++ b/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.en.md @@ -44,13 +44,21 @@ MaxScriptNormalize 50M MaxZipTypeRcg 50M ``` 10. Restart ClamAV container: -```bash -docker compose restart clamd-mailcow -``` +=== "docker compose" + + ``` bash + docker compose restart clamd-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart clamd-mailcow + ``` 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. - 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. @@ -65,6 +73,14 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb DatabaseCustomURL http://sigs.interserver.net/whitelist.fp ``` 2. Restart ClamAV container: -```bash -docker compose restart clamd-mailcow -``` +=== "docker compose" + + ``` bash + docker compose restart clamd-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart clamd-mailcow + ``` diff --git a/docs/manual-guides/ClamAV/u_e-clamav-whitelist.de.md b/docs/manual-guides/ClamAV/u_e-clamav-whitelist.de.md index 615c4744b..efa078f2a 100644 --- a/docs/manual-guides/ClamAV/u_e-clamav-whitelist.de.md +++ b/docs/manual-guides/ClamAV/u_e-clamav-whitelist.de.md @@ -1,10 +1,17 @@ ## 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.: +=== "docker compose" -```bash -docker compose logs clamd-mailcow | grep "FOUND" -``` + ``` bash + 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: @@ -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: +=== "docker compose" -```bash -docker compose restart clamd-mailcow -``` + ``` bash + docker compose restart clamd-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart clamd-mailcow + ``` Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis: +=== "docker compose" -``` -# docker compose exec redis-mailcow /bin/sh -/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL -/data # exit -``` + ``` bash + docker compose exec redis-mailcow /bin/sh + /data # redis-cli KEYS rs_cl* | xargs redis-cli DEL + /data # exit + ``` + +=== "docker-compose" + + ``` bash + docker-compose exec redis-mailcow /bin/sh + /data # redis-cli KEYS rs_cl* | xargs redis-cli DEL + /data # exit + ``` diff --git a/docs/manual-guides/ClamAV/u_e-clamav-whitelist.en.md b/docs/manual-guides/ClamAV/u_e-clamav-whitelist.en.md index 270d4736e..15c46b8b3 100644 --- a/docs/manual-guides/ClamAV/u_e-clamav-whitelist.en.md +++ b/docs/manual-guides/ClamAV/u_e-clamav-whitelist.en.md @@ -1,10 +1,17 @@ ## 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.: +=== "docker compose" -```bash -docker compose logs clamd-mailcow | grep "FOUND" -``` + ``` bash + docker compose logs clamd-mailcow | grep "FOUND" + ``` + +=== "docker-compose" + + ``` bash + docker-compose logs clamd-mailcow | grep "FOUND" + ``` 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: +=== "docker compose" -```bash -docker compose restart clamd-mailcow -``` + ``` bash + docker compose restart clamd-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart clamd-mailcow + ``` Cleanup cached ClamAV results in Redis: +=== "docker compose" -``` -# docker compose exec redis-mailcow /bin/sh -/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL -/data # exit -``` + ``` bash + docker compose exec redis-mailcow /bin/sh + /data # redis-cli KEYS rs_cl* | xargs redis-cli DEL + /data # exit + ``` + +=== "docker-compose" + + ``` bash + docker-compose exec redis-mailcow /bin/sh + /data # redis-cli KEYS rs_cl* | xargs redis-cli DEL + /data # exit + ``` diff --git a/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.de.md b/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.de.md index f542a193c..6824d75c3 100644 --- a/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.de.md +++ b/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.de.md @@ -20,6 +20,14 @@ $service-mailcow: Abschliessend müssen die geänderten Container automatisch neu erstellt werden: -``` -docker compose up -d -``` +=== "docker compose" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose" + + ``` bash + docker-compose up -d + ``` diff --git a/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.en.md b/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.en.md index 8ee15a75f..8324d1841 100644 --- a/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.en.md +++ b/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.en.md @@ -20,7 +20,14 @@ $service-mailcow: ``` Now auto-recreate modified containers: +=== "docker compose" -``` -docker compose up -d -``` + ``` bash + docker compose up -d + ``` + +=== "docker-compose" + + ``` bash + docker-compose up -d + ``` diff --git a/docs/manual-guides/Nginx/u_e-nginx_custom.de.md b/docs/manual-guides/Nginx/u_e-nginx_custom.de.md index 8398f35c9..73c68cb66 100644 --- a/docs/manual-guides/Nginx/u_e-nginx_custom.de.md +++ b/docs/manual-guides/Nginx/u_e-nginx_custom.de.md @@ -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`. Starten Sie Nginx neu (und PHP-FPM, falls ein neuer Listener erstellt wurde): +=== "docker compose" -``` -docker compose restart nginx-mailcow -docker compose restart php-fpm-mailcow -``` + ``` bash + docker compose restart nginx-mailcow + docker compose restart php-fpm-mailcow + ``` +=== "docker-compose" + + ``` bash + docker-compose restart nginx-mailcow + docker-compose restart php-fpm-mailcow + ``` diff --git a/docs/manual-guides/Nginx/u_e-nginx_custom.en.md b/docs/manual-guides/Nginx/u_e-nginx_custom.en.md index b44ac57f6..91a688511 100644 --- a/docs/manual-guides/Nginx/u_e-nginx_custom.en.md +++ b/docs/manual-guides/Nginx/u_e-nginx_custom.en.md @@ -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`. Restart Nginx (and PHP-FPM, if a new listener was created): +=== "docker compose" -``` -docker compose restart nginx-mailcow -docker compose restart php-fpm-mailcow -``` + ``` bash + docker compose restart nginx-mailcow + docker compose restart php-fpm-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart nginx-mailcow + docker-compose restart php-fpm-mailcow + ``` diff --git a/docs/manual-guides/Postfix/u_e-postfix-attachment_size.de.md b/docs/manual-guides/Postfix/u_e-postfix-attachment_size.de.md index 0e1d36b62..5a3f4fe19 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-attachment_size.de.md +++ b/docs/manual-guides/Postfix/u_e-postfix-attachment_size.de.md @@ -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. Starten Sie Postfix neu: +=== "docker compose" -``` -docker compose restart postfix-mailcow -``` \ No newline at end of file + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart postfix-mailcow + ``` diff --git a/docs/manual-guides/Postfix/u_e-postfix-attachment_size.en.md b/docs/manual-guides/Postfix/u_e-postfix-attachment_size.en.md index 7ab8d2498..7beec05f6 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-attachment_size.en.md +++ b/docs/manual-guides/Postfix/u_e-postfix-attachment_size.en.md @@ -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. Restart Postfix: +=== "docker compose" -``` -docker compose restart postfix-mailcow -``` \ No newline at end of file + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart postfix-mailcow + ``` diff --git a/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.de.md b/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.de.md index 4c7ddb894..20e877903 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.de.md +++ b/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.de.md @@ -19,9 +19,16 @@ smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_ ``` Postmap auf check_sasl_access ausführen: +=== "docker compose" -``` -docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access -``` + ``` bash + 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. diff --git a/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.en.md b/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.en.md index 12e3233c0..c8bb27255 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.en.md +++ b/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.en.md @@ -19,9 +19,16 @@ smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_ ``` Run postmap on check_sasl_access: +=== "docker compose" -``` -docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access -``` + ``` bash + docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access + ``` -Restart the Postfix container. \ No newline at end of file +=== "docker-compose" + + ``` bash + docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access + ``` + +Restart the Postfix container. diff --git a/docs/manual-guides/Postfix/u_e-postfix-extra_cf.de.md b/docs/manual-guides/Postfix/u_e-postfix-extra_cf.de.md index 54ea1bb44..182cd8539 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-extra_cf.de.md +++ b/docs/manual-guides/Postfix/u_e-postfix-extra_cf.de.md @@ -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: -``` -docker compose restart postfix-mailcow -``` +=== "docker compose" + + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart postfix-mailcow + ``` diff --git a/docs/manual-guides/Postfix/u_e-postfix-extra_cf.en.md b/docs/manual-guides/Postfix/u_e-postfix-extra_cf.en.md index 2b1db5c3a..35d8bff16 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-extra_cf.en.md +++ b/docs/manual-guides/Postfix/u_e-postfix-extra_cf.en.md @@ -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: -``` -docker compose restart postfix-mailcow -``` +=== "docker compose" + + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart postfix-mailcow + ``` diff --git a/docs/manual-guides/Redis/u_e-redis.de.md b/docs/manual-guides/Redis/u_e-redis.de.md index 648c55457..a8c71220b 100644 --- a/docs/manual-guides/Redis/u_e-redis.de.md +++ b/docs/manual-guides/Redis/u_e-redis.de.md @@ -3,10 +3,17 @@ Redis wird als Key-Value-Speicher für die Einstellungen und Daten von rspamd un ## Client Um sich mit dem redis cli zu verbinden, führen Sie aus: +=== "docker compose" -``` -docker compose exec redis-mailcow redis-cli -``` + ``` bash + docker compose exec redis-mailcow redis-cli + ``` + +=== "docker-compose" + + ``` bash + docker-compose exec redis-mailcow redis-cli + ``` ### Fehlersuche @@ -15,15 +22,27 @@ Hier sind einige nützliche Befehle für den redis-cli zur Fehlersuche: ##### MONITOR Überwacht alle vom Server empfangenen Anfragen in Echtzeit: +=== "docker compose" -``` -# 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" -[...] -``` + ``` 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" + [...] + ``` + +=== "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) @@ -42,4 +61,4 @@ Testen Sie eine Verbindung: PONG ``` -Wenn Sie mehr wissen wollen, hier ist ein [Cheat-Sheet](https://www.cheatography.com/tasjaevan/cheat-sheets/redis/). \ No newline at end of file +Wenn Sie mehr wissen wollen, hier ist ein [Cheat-Sheet](https://www.cheatography.com/tasjaevan/cheat-sheets/redis/). diff --git a/docs/manual-guides/Redis/u_e-redis.en.md b/docs/manual-guides/Redis/u_e-redis.en.md index 38a269f25..ef266fa7d 100644 --- a/docs/manual-guides/Redis/u_e-redis.en.md +++ b/docs/manual-guides/Redis/u_e-redis.en.md @@ -3,10 +3,17 @@ Redis is used as a key-value store for rspamd's and (some of) mailcow's settings ## Client To connect to the redis cli execute: +=== "docker compose" -``` -docker compose exec redis-mailcow redis-cli -``` + ``` bash + docker compose exec redis-mailcow redis-cli + ``` + +=== "docker-compose" + + ``` bash + docker-compose exec redis-mailcow redis-cli + ``` ### Debugging @@ -15,15 +22,27 @@ Here are some useful commands for the redis-cli for debugging: ##### MONITOR Listens for all requests received by the server in real time: +=== "docker compose" -``` -# 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" -[...] -``` + ``` 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" + [...] + ``` + +=== "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 @@ -42,4 +61,4 @@ Test a connection: PONG ``` -If you want to know more, here is a [cheat sheet](https://www.cheatography.com/tasjaevan/cheat-sheets/redis/). \ No newline at end of file +If you want to know more, here is a [cheat sheet](https://www.cheatography.com/tasjaevan/cheat-sheets/redis/). diff --git a/docs/manual-guides/Rspamd/u_e-rspamd.de.md b/docs/manual-guides/Rspamd/u_e-rspamd.de.md index 4acd3c648..c1c2be4bb 100644 --- a/docs/manual-guides/Rspamd/u_e-rspamd.de.md +++ b/docs/manual-guides/Rspamd/u_e-rspamd.de.md @@ -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 Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen: +=== "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 -``` + ``` 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" + + ``` 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: @@ -42,26 +52,51 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ ``` **Bayes-Daten zurücksetzen** +=== "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' -``` + ``` 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" + + ``` 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" -```bash -docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del' -``` + ``` bash + 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** +=== "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* -``` + ``` 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" + + ``` 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** @@ -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. ## CLI-Werkzeuge +=== "docker compose" -``bash -docker compose exec rspamd-mailcow rspamc --help -docker compose exec rspamd-mailcow rspamadm --help -``` + ``` bash + docker compose exec rspamd-mailcow rspamc --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 @@ -94,7 +137,18 @@ Fügen Sie die Zeile hinzu: 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) @@ -106,18 +160,39 @@ add_header = 8; 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! Um benutzerdefinierte Schwellenwerte zurückzusetzen, führen Sie aus: +=== "docker compose" -``` -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';" -``` + ``` 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" + + ``` 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 @@ -127,7 +202,18 @@ Die Standard-Spam-Reject-Meldung kann durch Hinzufügen einer neuen Datei `data/ 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: @@ -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 @@ -157,37 +254,71 @@ discard_on_reject = true; ``` Starten Sie Rspamd neu: +=== "docker compose" -```bash -docker compose restart rspamd-mailcow -``` + ``` bash + docker compose restart rspamd-mailcow + ``` + +=== "docker-compose" + + ``` 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" -``` -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 -``` + ``` 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" + + ``` 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: -```bash -docker compose restart rspamd-mailcow -``` +=== "docker compose" + + ``` bash + docker compose restart rspamd-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart rspamd-mailcow + ``` ## Erneutes Senden von Quarantäne-Benachrichtigungen auslösen Sollte nur zur Fehlersuche verwendet werden! +=== "docker compose" -``` -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 -``` + ``` 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" + + ``` 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 @@ -203,7 +334,15 @@ Bearbeiten Sie `data/conf/rspamd/local.d/history_redis.conf`: 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 + ``` diff --git a/docs/manual-guides/Rspamd/u_e-rspamd.en.md b/docs/manual-guides/Rspamd/u_e-rspamd.en.md index 3e6619196..7dda5aa50 100644 --- a/docs/manual-guides/Rspamd/u_e-rspamd.en.md +++ b/docs/manual-guides/Rspamd/u_e-rspamd.en.md @@ -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 You can use a one-liner to learn mail in plain-text (uncompressed) format: +=== "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 -``` + ``` 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" + + ``` 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: @@ -42,26 +52,51 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ ``` **Reset Bayes data** +=== "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' -``` + ``` 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" + + ``` 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** +=== "docker compose" -```bash -docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del' -``` + ``` bash + 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** +=== "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* -``` + ``` 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* + ``` + +=== "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** @@ -75,11 +110,19 @@ If redis-cli complains about... ## CLI tools +=== "docker compose" -```bash -docker compose exec rspamd-mailcow rspamc --help -docker compose exec rspamd-mailcow rspamadm --help -``` + ``` bash + docker compose exec rspamd-mailcow rspamc --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 @@ -95,7 +138,18 @@ Add the line: 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) @@ -107,12 +161,39 @@ add_header = 8; 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! 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 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"; ``` -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: @@ -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 @@ -158,37 +261,70 @@ discard_on_reject = true; ``` Restart Rspamd: +=== "docker compose" -```bash -docker compose restart rspamd-mailcow -``` + ``` bash + docker compose restart rspamd-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart rspamd-mailcow + ``` ## 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: +=== "docker compose" -``` -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 -``` + ``` 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 + ``` + +=== "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: +=== "docker compose" -```bash -docker compose restart rspamd-mailcow -``` + ``` bash + docker compose restart rspamd-mailcow + ``` + +=== "docker-compose" + + ``` bash + docker-compose restart rspamd-mailcow + ``` ## Trigger a resend of quarantine notifications Should be used for debugging only! +=== "docker compose" -``` -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 -``` + ``` 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" + + ``` 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 @@ -204,4 +340,15 @@ Edit `data/conf/rspamd/local.d/history_redis.conf`: 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 + ``` From 2571d5812a21a065113ec918bf862757515f8a3b Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Thu, 15 Dec 2022 15:31:09 +0100 Subject: [PATCH 03/11] Added new Sections with Compose Switch --- docs/i_u_m/i_u_m_deinstall.de.md | 4 +- docs/i_u_m/i_u_m_deinstall.en.md | 4 +- docs/i_u_m/i_u_m_install.de.md | 4 +- docs/i_u_m/i_u_m_install.en.md | 4 +- docs/i_u_m/i_u_m_migration.de.md | 12 +-- docs/i_u_m/i_u_m_migration.en.md | 12 +-- docs/i_u_m/i_u_m_update.de.md | 4 +- docs/i_u_m/i_u_m_update.en.md | 4 +- .../ClamAV/u_e-clamav-additional_dbs.de.md | 8 +- .../ClamAV/u_e-clamav-additional_dbs.en.md | 8 +- .../ClamAV/u_e-clamav-whitelist.de.md | 12 +-- .../ClamAV/u_e-clamav-whitelist.en.md | 12 +-- .../Docker/u_e-docker-cust_dockerfiles.de.md | 4 +- .../Docker/u_e-docker-cust_dockerfiles.en.md | 4 +- .../Dovecot/u_e-dovecot-any_acl.de.md | 14 ++- .../Dovecot/u_e-dovecot-any_acl.en.md | 14 ++- .../u_e-dovecot-catchall_vacation.de.md | 2 +- .../Dovecot/u_e-dovecot-expunge.de.md | 87 ++++++++++++++----- .../Dovecot/u_e-dovecot-expunge.en.md | 86 +++++++++++++----- .../Dovecot/u_e-dovecot-extra_conf.de.md | 15 +++- .../Dovecot/u_e-dovecot-extra_conf.en.md | 14 ++- .../Dovecot/u_e-dovecot-fts.de.md | 48 +++++++--- .../Dovecot/u_e-dovecot-fts.en.md | 46 +++++++--- .../Dovecot/u_e-dovecot-idle_interval.de.md | 28 ++++-- .../Dovecot/u_e-dovecot-idle_interval.en.md | 29 +++++-- .../Dovecot/u_e-dovecot-mail-crypt.de.md | 15 +++- .../Dovecot/u_e-dovecot-mail-crypt.en.md | 14 ++- .../Dovecot/u_e-dovecot-public_folder.de.md | 14 ++- .../Dovecot/u_e-dovecot-public_folder.en.md | 15 +++- .../Dovecot/u_e-dovecot-static_master.de.md | 15 +++- .../Dovecot/u_e-dovecot-static_master.en.md | 14 ++- .../Dovecot/u_e-dovecot-vmail-volume.en.md | 2 +- .../Nginx/u_e-nginx_custom.de.md | 4 +- .../Nginx/u_e-nginx_custom.en.md | 4 +- .../Postfix/u_e-postfix-attachment_size.de.md | 4 +- .../Postfix/u_e-postfix-attachment_size.en.md | 4 +- ...-postfix-disable_sender_verification.de.md | 4 +- ...-postfix-disable_sender_verification.en.md | 4 +- .../Postfix/u_e-postfix-extra_cf.de.md | 4 +- .../Postfix/u_e-postfix-extra_cf.en.md | 4 +- docs/manual-guides/Redis/u_e-redis.de.md | 8 +- docs/manual-guides/Redis/u_e-redis.en.md | 8 +- docs/manual-guides/Rspamd/u_e-rspamd.de.md | 60 ++++++------- docs/manual-guides/Rspamd/u_e-rspamd.en.md | 60 ++++++------- overrides/main.html | 4 +- 45 files changed, 510 insertions(+), 230 deletions(-) diff --git a/docs/i_u_m/i_u_m_deinstall.de.md b/docs/i_u_m/i_u_m_deinstall.de.md index 726fb8855..1aa1f5bf5 100644 --- a/docs/i_u_m/i_u_m_deinstall.de.md +++ b/docs/i_u_m/i_u_m_deinstall.de.md @@ -1,11 +1,11 @@ Um mailcow: dockerized mit all seinen Volumes, Images und Containern zu entfernen, tun Sie dies: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose down -v --rmi all --remove-orphans ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose down -v --rmi all --remove-orphans diff --git a/docs/i_u_m/i_u_m_deinstall.en.md b/docs/i_u_m/i_u_m_deinstall.en.md index ad08d0c83..d9c29e0d0 100644 --- a/docs/i_u_m/i_u_m_deinstall.en.md +++ b/docs/i_u_m/i_u_m_deinstall.en.md @@ -1,11 +1,11 @@ To remove mailcow: dockerized with all it's volumes, images and containers do: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose down -v --rmi all --remove-orphans ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose down -v --rmi all --remove-orphans diff --git a/docs/i_u_m/i_u_m_install.de.md b/docs/i_u_m/i_u_m_install.de.md index 07353bca1..db9a68af2 100644 --- a/docs/i_u_m/i_u_m_install.de.md +++ b/docs/i_u_m/i_u_m_install.de.md @@ -139,14 +139,14 @@ Sollten Sie jedoch kein IPv6-fähiges Netzwerk auf Ihrem Host haben und Sie sich ## 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: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose pull docker compose up -d ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose pull diff --git a/docs/i_u_m/i_u_m_install.en.md b/docs/i_u_m/i_u_m_install.en.md index ffa132eba..c946251c9 100644 --- a/docs/i_u_m/i_u_m_install.en.md +++ b/docs/i_u_m/i_u_m_install.en.md @@ -139,14 +139,14 @@ If you do not have an IPv6 enabled network on your host and you don't care for a ## Start mailcow Pull the images and run the compose file. The parameter `-d` will start mailcow: dockerized detached: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose pull docker compose up -d ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose pull diff --git a/docs/i_u_m/i_u_m_migration.de.md b/docs/i_u_m/i_u_m_migration.de.md index 4809d1c34..ef819ca83 100644 --- a/docs/i_u_m/i_u_m_migration.de.md +++ b/docs/i_u_m/i_u_m_migration.de.md @@ -20,7 +20,7 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine. ``` **4\.** Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner. -=== "docker compose" +=== "docker compose (Plugin)" ``` bash cd /opt/mailcow-dockerized @@ -28,7 +28,7 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine. systemctl stop docker.service ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash cd /opt/mailcow-dockerized @@ -44,14 +44,14 @@ systemctl start docker.service ``` **7\.** Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner. -=== "docker compose" +=== "docker compose (Plugin)" ``` bash cd /opt/mailcow-dockerized docker compose pull ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash cd /opt/mailcow-dockerized @@ -59,13 +59,13 @@ systemctl start docker.service ``` **8\.** Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein! -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose up -d ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker compose up -d diff --git a/docs/i_u_m/i_u_m_migration.en.md b/docs/i_u_m/i_u_m_migration.en.md index 12f8cbfd9..2fb0ca725 100644 --- a/docs/i_u_m/i_u_m_migration.en.md +++ b/docs/i_u_m/i_u_m_migration.en.md @@ -20,7 +20,7 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine. ``` **4\.** Shut down mailcow and stop Docker on the source machine. -=== "docker compose" +=== "docker compose (Plugin)" ``` bash cd /opt/mailcow-dockerized @@ -28,7 +28,7 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine. systemctl stop docker.service ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash cd /opt/mailcow-dockerized @@ -44,14 +44,14 @@ systemctl start docker.service ``` **7\.** Now pull the mailcow Docker images on the target machine. -=== "docker compose" +=== "docker compose (Plugin)" ``` bash cd /opt/mailcow-dockerized docker compose pull ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash cd /opt/mailcow-dockerized @@ -59,13 +59,13 @@ systemctl start docker.service ``` **8\.** Start the whole mailcow stack and everything should be done! -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose up -d ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker compose up -d diff --git a/docs/i_u_m/i_u_m_update.de.md b/docs/i_u_m/i_u_m_update.de.md index 3959061e6..0bf141592 100644 --- a/docs/i_u_m/i_u_m_update.de.md +++ b/docs/i_u_m/i_u_m_update.de.md @@ -64,7 +64,7 @@ Führen Sie `git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab` aus, um zu sehen Ja. Siehe das obige Thema, anstelle eines Diffs führen Sie checkout aus: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose down @@ -74,7 +74,7 @@ Siehe das obige Thema, anstelle eines Diffs führen Sie checkout aus: docker compose up -d ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose down diff --git a/docs/i_u_m/i_u_m_update.en.md b/docs/i_u_m/i_u_m_update.en.md index 8f745f098..f702f2f9e 100644 --- a/docs/i_u_m/i_u_m_update.en.md +++ b/docs/i_u_m/i_u_m_update.en.md @@ -64,7 +64,7 @@ Run `git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab` to see what changed. Yes. See the topic above, instead of a diff, you run checkout: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose down @@ -74,7 +74,7 @@ See the topic above, instead of a diff, you run checkout: docker compose up -d ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose down diff --git a/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.de.md b/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.de.md index e4b50f219..f8a3eaaa6 100644 --- a/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.de.md +++ b/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.de.md @@ -44,13 +44,13 @@ MaxScriptNormalize 50M MaxZipTypeRcg 50M ``` 10. Starten Sie den ClamAV Container neu: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart clamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart clamd-mailcow @@ -73,13 +73,13 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb DatabaseCustomURL http://sigs.interserver.net/whitelist.fp ``` 2. Starten Sie den ClamAV Container neu: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart clamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart clamd-mailcow diff --git a/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.en.md b/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.en.md index afafac8aa..69f15baa2 100644 --- a/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.en.md +++ b/docs/manual-guides/ClamAV/u_e-clamav-additional_dbs.en.md @@ -44,13 +44,13 @@ MaxScriptNormalize 50M MaxZipTypeRcg 50M ``` 10. Restart ClamAV container: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart clamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart clamd-mailcow @@ -73,13 +73,13 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb DatabaseCustomURL http://sigs.interserver.net/whitelist.fp ``` 2. Restart ClamAV container: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart clamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart clamd-mailcow diff --git a/docs/manual-guides/ClamAV/u_e-clamav-whitelist.de.md b/docs/manual-guides/ClamAV/u_e-clamav-whitelist.de.md index efa078f2a..4965aed9d 100644 --- a/docs/manual-guides/ClamAV/u_e-clamav-whitelist.de.md +++ b/docs/manual-guides/ClamAV/u_e-clamav-whitelist.de.md @@ -1,13 +1,13 @@ ## 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.: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose logs clamd-mailcow | grep "FOUND" ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose logs clamd-mailcow | grep "FOUND" @@ -26,20 +26,20 @@ 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: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart clamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart clamd-mailcow ``` Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec redis-mailcow /bin/sh @@ -47,7 +47,7 @@ Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis: /data # exit ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec redis-mailcow /bin/sh diff --git a/docs/manual-guides/ClamAV/u_e-clamav-whitelist.en.md b/docs/manual-guides/ClamAV/u_e-clamav-whitelist.en.md index 15c46b8b3..813c78862 100644 --- a/docs/manual-guides/ClamAV/u_e-clamav-whitelist.en.md +++ b/docs/manual-guides/ClamAV/u_e-clamav-whitelist.en.md @@ -1,13 +1,13 @@ ## 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.: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose logs clamd-mailcow | grep "FOUND" ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose logs clamd-mailcow | grep "FOUND" @@ -26,20 +26,20 @@ 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: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart clamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart clamd-mailcow ``` Cleanup cached ClamAV results in Redis: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec redis-mailcow /bin/sh @@ -47,7 +47,7 @@ Cleanup cached ClamAV results in Redis: /data # exit ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec redis-mailcow /bin/sh diff --git a/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.de.md b/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.de.md index 6824d75c3..e6b0ad155 100644 --- a/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.de.md +++ b/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.de.md @@ -20,13 +20,13 @@ $service-mailcow: Abschliessend müssen die geänderten Container automatisch neu erstellt werden: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose up -d ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose up -d diff --git a/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.en.md b/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.en.md index 8324d1841..aef7c3988 100644 --- a/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.en.md +++ b/docs/manual-guides/Docker/u_e-docker-cust_dockerfiles.en.md @@ -20,13 +20,13 @@ $service-mailcow: ``` Now auto-recreate modified containers: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose up -d ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose up -d diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-any_acl.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-any_acl.de.md index 75f4a5e28..9e9ee894e 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-any_acl.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-any_acl.de.md @@ -6,4 +6,16 @@ Diese Funktion kann wieder aktiviert werden, indem `ACL_ANYONE` auf `allow` in m ACL_ANYONE=allow ``` -Wenden Sie die Änderungen an, indem Sie `docker compose up -d` ausführen. \ No newline at end of file +Wenden Sie die Änderungen an, indem Sie den Docker Stack neustarten mit: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` \ No newline at end of file diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-any_acl.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-any_acl.en.md index 1169eaefd..4b648b9e1 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-any_acl.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-any_acl.en.md @@ -6,4 +6,16 @@ This function can be re-enabled by setting `ACL_ANYONE` to `allow` in mailcow.co ACL_ANYONE=allow ``` -Apply the changes by running `docker compose up -d`. \ No newline at end of file +Apply the changes by restarting the stack: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` \ No newline at end of file diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-catchall_vacation.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-catchall_vacation.de.md index c6d3490af..6c5fc0a1f 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-catchall_vacation.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-catchall_vacation.de.md @@ -1,3 +1,3 @@ Der Dovecot-Parameter `sieve_vacation_dont_check_recipient` - der in mailcow-Konfigurationen vor dem 21. Juli 2021 standardmäßig auf `yes` gesetzt war - erlaubt Urlaubsantworten auch dann, wenn eine Mail an nicht existierende Mailboxen wie Catch-All-Adressen gesendet wird. -Wir haben uns entschlossen, diesen Parameter wieder auf `nein` zu setzen und dem Benutzer zu erlauben, die Empfängeradresse zu spezifizieren, die eine Urlaubsantwort auslöst. Die auslösenden Empfänger können auch in SOGos Autoresponder-Funktion konfiguriert werden. +Wir haben uns entschlossen, diesen Parameter wieder auf `no` zu setzen und dem Benutzer zu erlauben, die Empfängeradresse zu spezifizieren, die eine Urlaubsantwort auslöst. Die auslösenden Empfänger können auch in SOGos Autoresponder-Funktion konfiguriert werden. diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-expunge.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-expunge.de.md index e62248a99..26cf59ed4 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-expunge.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-expunge.de.md @@ -6,27 +6,60 @@ Dann wollen wir mal loslegen: Löschen Sie die Mails eines Benutzers im Junk-Ordner, die **gelesen** und **älter** als 4 Stunden sind -``` -docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h -``` + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h + ``` Lösche **alle** Mails des Benutzers im Junk-Ordner, die **älter** als 7 Tage sind -``` -docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d + ``` Löscht **alle** Mails (aller Benutzer) in **allen** Ordnern, die **älter** als 52 Wochen sind (internes Datum der Mail, nicht das Datum, an dem sie auf dem System gespeichert wurde => `before` statt `savedbefore`). Nützlich zum Löschen sehr alter Mails in allen Benutzern und Ordnern (daher besonders nützlich für GDPR-Compliance). -``` -docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w + ``` Löschen von Mails in einem benutzerdefinierten Ordner **innerhalb** des Posteingangs eines Benutzers, die **nicht** gekennzeichnet und **älter** als 2 Wochen sind -``` -docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w + ``` !!! info Für mögliche [Zeitspannen](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_date_specification) oder [SearchQuery](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_search_keys) schauen Sie bitte in [man doveadm-search-query](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery) @@ -37,15 +70,29 @@ docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mai Wenn Sie eine solche Aufgabe automatisieren wollen, können Sie einen Cron-Job auf Ihrem Rechner erstellen, der ein Skript wie das folgende aufruft: -``` -#!/bin/bash -# Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized -cd /pfad/zu/ihrem/mailcow-dockerized +=== "docker compose (Plugin)" -/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w -/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h -[...] -``` + ``` bash + #!/bin/bash + # Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized + cd /pfad/zu/ihrer/mailcow-dockerized + + docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w + docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h + [...] + ``` + +=== "docker-compose (Standalone)" + + ``` bash + #!/bin/bash + # Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized + cd /pfad/zu/ihrer/mailcow-dockerized + + docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w + docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h + [...] + ``` Um einen Cronjob zu erstellen, können Sie `crontab -e` ausführen und etwas wie das Folgende einfügen, um ein Skript auszuführen: diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-expunge.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-expunge.en.md index 578889300..4837cd5e9 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-expunge.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-expunge.en.md @@ -6,27 +6,59 @@ That said, let's dive in: Delete a user's mails inside the junk folder that **are read** and **older** than 4 hours -``` -docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h + ``` Delete **all** user's mails in the junk folder that are **older** than 7 days -``` -docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d + ``` Delete **all** mails (of all users) in **all** folders that are **older** than 52 weeks (internal date of the mail, not the date it was saved on the system => `before` instead of `savedbefore`). Useful for deleting very old mails on all users and folders (thus especially useful for GDPR-compliance). -``` -docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w + ``` Delete mails inside a custom folder **inside** a user's inbox that are **not** flagged and **older** than 2 weeks -``` -docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w + ``` !!! info For possible [time spans](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_date_specification) or [search keys](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_search_keys) have a look at [man doveadm-search-query](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery) @@ -37,15 +69,29 @@ docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mai If you want to automate such a task you can create a cron job on your host that calls a script like the one below: -``` -#!/bin/bash -# Path to mailcow-dockerized, e.g. /opt/mailcow-dockerized -cd /path/to/your/mailcow-dockerized +=== "docker compose (Plugin)" -/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w -/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h -[...] -``` + ``` bash + #!/bin/bash + # Path to mailcow-dockerized, for example: /opt/mailcow-dockerized + cd /path/to/your/mailcow-dockerized + + docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w + docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h + [...] + ``` + +=== "docker-compose (Standalone)" + + ``` bash + #!/bin/bash + # Path to mailcow-dockerized, for example: /opt/mailcow-dockerized + cd /path/to/your/mailcow-dockerized + + docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w + docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h + [...] + ``` To create a cron job you may execute `crontab -e` and insert something like the following to execute a script: diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-extra_conf.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-extra_conf.de.md index 847b4d1d9..fdb8777d9 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-extra_conf.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-extra_conf.de.md @@ -2,6 +2,15 @@ Erstellen Sie eine Datei `data/conf/dovecot/extra.conf` - falls nicht vorhanden Starten Sie `dovecot-mailcow` neu, um Ihre Änderungen zu übernehmen: -``` -docker compose restart dovecot-mailcow -``` \ No newline at end of file + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart dovecot-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart dovecot-mailcow + ``` \ No newline at end of file diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-extra_conf.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-extra_conf.en.md index a77d2bdab..6de337f29 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-extra_conf.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-extra_conf.en.md @@ -2,6 +2,14 @@ Create a file `data/conf/dovecot/extra.conf` - if missing - and add your additio Restart `dovecot-mailcow` to apply your changes: -``` -docker compose restart dovecot-mailcow -``` \ No newline at end of file +=== "docker compose (Plugin)" + + ``` bash + docker compose restart dovecot-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart dovecot-mailcow + ``` \ No newline at end of file diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-fts.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-fts.de.md index d17e83932..431ffaae9 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-fts.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-fts.de.md @@ -11,25 +11,49 @@ Da wir in Docker laufen und unsere Container mit dem "restart: always" Flag erst ### FTS-bezogene Dovecot-Befehle -``` -# Einzelbenutzer -docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain -# alle Benutzer -docker compose exec dovecot-mailcow doveadm fts rescan -A -``` +=== "docker compose (Plugin)" + + ``` bash + # Einzelbenutzer + docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain + # alle Benutzer + docker compose exec dovecot-mailcow doveadm fts rescan -A + ``` + +=== "docker-compose (Standalone)" + + ``` bash + # Einzelbenutzer + docker-compose exec dovecot-mailcow doveadm fts rescan -u user@domain + # alle Benutzer + docker-compose exec dovecot-mailcow doveadm fts rescan -A + ``` + Dovecot Wiki: "Scannt, welche Mails im Volltextsuchindex vorhanden sind und vergleicht diese mit den tatsächlich in den Postfächern vorhandenen Mails. Dies entfernt Mails aus dem Index, die bereits gelöscht wurden und stellt sicher, dass der nächste doveadm-Index alle fehlenden Mails (falls vorhanden) indiziert." Dies indiziert **nicht** eine Mailbox neu. Es repariert im Grunde einen gegebenen Index. Wenn Sie die Daten sofort neu indizieren wollen, können Sie den folgenden Befehl ausführen, wobei '*' auch eine Postfachmaske wie 'Sent' sein kann. Sie müssen diese Befehle nicht ausführen, aber es wird die Dinge ein wenig beschleunigen: -``` -# einzelner Benutzer -docker compose exec dovecot-mailcow doveadm index -u user@domain '*' -# alle Benutzer, aber offensichtlich langsamer und gefährlicher -docker compose exec dovecot-mailcow doveadm index -A '*' -``` + +=== "docker compose (Plugin)" + + ``` bash + # einzelner Benutzer + docker compose exec dovecot-mailcow doveadm index -u user@domain '*' + # alle Benutzer, aber offensichtlich langsamer und gefährlicher + docker compose exec dovecot-mailcow doveadm index -A '*' + ``` + +=== "docker-compose (Standalone)" + + ``` bash + # einzelner Benutzer + docker-compose exec dovecot-mailcow doveadm index -u user@domain '*' + # alle Benutzer, aber offensichtlich langsamer und gefährlicher + docker-compose exec dovecot-mailcow doveadm index -A '*' + ``` Dies **wird** einige Zeit in Anspruch nehmen, abhängig von Ihrer Maschine und Solr kann oom ausführen, überwachen Sie es! diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-fts.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-fts.en.md index e65a9741d..3f9ebca34 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-fts.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-fts.en.md @@ -12,12 +12,23 @@ Since we run in Docker and create our containers with the "restart: always" flag ### FTS related Dovecot commands -``` -# single user -docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain -# all users -docker compose exec dovecot-mailcow doveadm fts rescan -A -``` +=== "docker compose (Plugin)" + + ``` bash + # single user + docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain + # all users + docker compose exec dovecot-mailcow doveadm fts rescan -A + ``` + +=== "docker-compose (Standalone)" + + ``` bash + # single user + docker-compose exec dovecot-mailcow doveadm fts rescan -u user@domain + # all users + docker-compose exec dovecot-mailcow doveadm fts rescan -A + ``` Dovecot Wiki: "Scan what mails exist in the full text search index and compare those to what actually exist in mailboxes. This removes mails from the index that have already been expunged and makes sure that the next doveadm index will index all the missing mails (if any)." @@ -25,12 +36,23 @@ This does **not** re-index a mailbox. It basically repairs a given index. If you want to re-index data immediately, you can run the followig command, where '*' can also be a mailbox mask like 'Sent'. You do not need to run these commands, but it will speed things up a bit: -``` -# single user -docker compose exec dovecot-mailcow doveadm index -u user@domain '*' -# all users, but obviously slower and more dangerous -docker compose exec dovecot-mailcow doveadm index -A '*' -``` +=== "docker compose (Plugin)" + + ``` bash + # single user + docker compose exec dovecot-mailcow doveadm index -u user@domain '*' + # all users, but obviously slower and more dangerous + docker compose exec dovecot-mailcow doveadm index -A '*' + ``` + +=== "docker-compose (Standalone)" + + ``` bash + # single user + docker-compose exec dovecot-mailcow doveadm index -u user@domain '*' + # all users, but obviously slower and more dangerous + docker-compose exec dovecot-mailcow doveadm index -A '*' + ``` This **will** take some time depending on your machine and Solr can run oom, monitor it! diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.de.md index 9b7de06b9..dfd09f459 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.de.md @@ -21,15 +21,31 @@ imap_idle_notify_interval = 5 mins ### Dovecot neu laden Nun laden Sie Dovecot neu: -``` -docker compose exec dovecot-mailcow dovecot reload -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow dovecot reload + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow dovecot reload + ``` !!! info Sie können den Wert dieser Einstellung überprüfen mit - ``` - docker compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval" - ``` + === "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval" + ``` + + === "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval" + ``` Wenn Sie den Wert nicht geändert haben, sollte er auf 2m stehen. Wenn Sie ihn geändert haben, sollten Sie den neuen Wert sehen. diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.en.md index 1dd92f375..05552fc85 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.en.md @@ -20,15 +20,32 @@ imap_idle_notify_interval = 5 mins ### Reload Dovecot Now reload Dovecot: -``` -docker compose exec dovecot-mailcow dovecot reload -``` + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow dovecot reload + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow dovecot reload + ``` !!! info You can check the value of this setting with - ``` - docker compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval" - ``` + === "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval" + ``` + + === "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval" + ``` If you didn't change it, it should be at 2m. If you did change it, you should see your new value. diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-mail-crypt.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-mail-crypt.de.md index 6771c7a01..c4f8553d6 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-mail-crypt.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-mail-crypt.de.md @@ -3,7 +3,20 @@ Wenn Sie vorhandene maildir-Dateien entschlüsseln/verschlüsseln wollen, können Sie das folgende Skript auf eigene Gefahr verwenden: -Rufen Sie Dovecot auf, indem Sie `docker compose exec dovecot-mailcow /bin/bash` im mailcow-dockerisierten Verzeichnis ausführen. +Wechseln Sie in den Dovecot Container, indem Sie folgenden Befehl im mailcow-dockerized Verzeichnis ausführen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow /bin/bash + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow /bin/bash + ``` + ``` # Entschlüsseln Sie /var/vmail diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-mail-crypt.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-mail-crypt.en.md index ee03db65e..b9e21ec92 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-mail-crypt.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-mail-crypt.en.md @@ -3,7 +3,19 @@ If you want to decode/encode existing maildir files, you can use the following script at your own risk: -Enter Dovecot by running `docker compose exec dovecot-mailcow /bin/bash` in the mailcow-dockerized location. +Enter Dovecot by running the following command in the mailcow-dockerized location: + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow /bin/bash + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow /bin/bash + ``` ``` # Decrypt /var/vmail diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-public_folder.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-public_folder.de.md index a51fcf5f5..fb306214a 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-public_folder.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-public_folder.de.md @@ -21,9 +21,17 @@ Die neue Mailbox im öffentlichen Namensraum wird von den Benutzern automatisch Um allen authentifizierten Benutzern vollen Zugriff auf das neue Postfach (nicht auf den gesamten Namespace) zu gewähren, führen Sie aus: -``` -docker compose exec dovecot-mailcow doveadm acl set -A "Public/Develcow" "authenticated" lookup read write write-seen write-deleted insert post delete expunge create -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm acl set -A "Public/Develcow" "authenticated" lookup read write write-seen write-deleted insert post delete expunge create + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm acl set -A "Public/Develcow" "authenticated" lookup read write write-seen write-deleted insert post delete expunge create + ``` Passen Sie den Befehl an Ihre Bedürfnisse an, wenn Sie detailliertere Rechte pro Benutzer vergeben möchten (verwenden Sie z.B. `-u user@domain` anstelle von `-A`). diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-public_folder.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-public_folder.en.md index 7b241e24b..fb86ca419 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-public_folder.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-public_folder.en.md @@ -21,9 +21,18 @@ The new mailbox in the public namespace will be auto-subscribed by users. To allow all authenticated users access full to that new mailbox (not the whole namespace), run: -``` -docker compose exec dovecot-mailcow doveadm acl set -A "Public/Develcow" "authenticated" lookup read write write-seen write-deleted insert post delete expunge create -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm acl set -A "Public/Develcow" "authenticated" lookup read write write-seen write-deleted insert post delete expunge create + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm acl set -A "Public/Develcow" "authenticated" lookup read write write-seen write-deleted insert post delete expunge create + ``` + Adjust the command to your needs if you like to assign more granular rights per user (use `-u user@domain` instead of `-A` for example). diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-static_master.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-static_master.de.md index 3c3b26270..ab7ca0a57 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-static_master.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-static_master.de.md @@ -11,7 +11,20 @@ DOVECOT_MASTER_USER=mymasteruser DOVECOT_MASTER_PASS=mysecretpass ``` -Führen Sie `docker compose up -d` aus, um Ihre Änderungen zu übernehmen. +Führen Sie folgenden Befehl aus, um Ihre Änderungen zu übernehmen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + Der statische Master-Benutzername wird zu `DOVECOT_MASTER_USER@mailcow.local` erweitert. diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-static_master.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-static_master.en.md index 528baaea8..25b3ecb83 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-static_master.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-static_master.en.md @@ -11,7 +11,19 @@ DOVECOT_MASTER_USER=mymasteruser DOVECOT_MASTER_PASS=mysecretpass ``` -Run `docker compose up -d` to apply your changes. +Run the command below to apply your changes: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` The static master username will be expanded to `DOVECOT_MASTER_USER@mailcow.local`. diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.en.md index 30ddf7933..87c5718ce 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.en.md @@ -3,7 +3,7 @@ !!! warning Newer Docker versions seem to complain about existing volumes. You can fix this temporarily by removing the existing volume and start mailcow with the override file. But it seems to be problematic after a reboot (needs to be confirmed). -An easy, dirty, yet stable workaround is to stop mailcow (`docker compose down`), remove `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data` and create a new link to your remote filesystem location, for example: +An easy, dirty, yet stable workaround is to stop mailcow, remove `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data` and create a new link to your remote filesystem location, for example: ``` mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup diff --git a/docs/manual-guides/Nginx/u_e-nginx_custom.de.md b/docs/manual-guides/Nginx/u_e-nginx_custom.de.md index 73c68cb66..3a08dfb4a 100644 --- a/docs/manual-guides/Nginx/u_e-nginx_custom.de.md +++ b/docs/manual-guides/Nginx/u_e-nginx_custom.de.md @@ -110,14 +110,14 @@ 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`. Starten Sie Nginx neu (und PHP-FPM, falls ein neuer Listener erstellt wurde): -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart nginx-mailcow docker compose restart php-fpm-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart nginx-mailcow diff --git a/docs/manual-guides/Nginx/u_e-nginx_custom.en.md b/docs/manual-guides/Nginx/u_e-nginx_custom.en.md index 91a688511..f1441fb14 100644 --- a/docs/manual-guides/Nginx/u_e-nginx_custom.en.md +++ b/docs/manual-guides/Nginx/u_e-nginx_custom.en.md @@ -111,14 +111,14 @@ 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`. Restart Nginx (and PHP-FPM, if a new listener was created): -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart nginx-mailcow docker compose restart php-fpm-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart nginx-mailcow diff --git a/docs/manual-guides/Postfix/u_e-postfix-attachment_size.de.md b/docs/manual-guides/Postfix/u_e-postfix-attachment_size.de.md index 5a3f4fe19..bf64523cd 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-attachment_size.de.md +++ b/docs/manual-guides/Postfix/u_e-postfix-attachment_size.de.md @@ -1,13 +1,13 @@ Ö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: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart postfix-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart postfix-mailcow diff --git a/docs/manual-guides/Postfix/u_e-postfix-attachment_size.en.md b/docs/manual-guides/Postfix/u_e-postfix-attachment_size.en.md index 7beec05f6..0e85e6711 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-attachment_size.en.md +++ b/docs/manual-guides/Postfix/u_e-postfix-attachment_size.en.md @@ -1,13 +1,13 @@ Open `data/conf/postfix/extra.cf` and set the `message_size_limit` accordingly in bytes. See `main.cf` for the default value. Restart Postfix: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart postfix-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart postfix-mailcow diff --git a/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.de.md b/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.de.md index 20e877903..960392fa7 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.de.md +++ b/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.de.md @@ -19,13 +19,13 @@ smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_ ``` Postmap auf check_sasl_access ausführen: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access diff --git a/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.en.md b/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.en.md index c8bb27255..3e413341d 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.en.md +++ b/docs/manual-guides/Postfix/u_e-postfix-disable_sender_verification.en.md @@ -19,13 +19,13 @@ smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_ ``` Run postmap on check_sasl_access: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access diff --git a/docs/manual-guides/Postfix/u_e-postfix-extra_cf.de.md b/docs/manual-guides/Postfix/u_e-postfix-extra_cf.de.md index 182cd8539..75d56a352 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-extra_cf.de.md +++ b/docs/manual-guides/Postfix/u_e-postfix-extra_cf.de.md @@ -6,13 +6,13 @@ Syslog-ng wurde so konfiguriert, dass es diese Warnungen ausblendet, während Po Starten Sie `postfix-mailcow` neu, um Ihre Änderungen zu übernehmen: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart postfix-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart postfix-mailcow diff --git a/docs/manual-guides/Postfix/u_e-postfix-extra_cf.en.md b/docs/manual-guides/Postfix/u_e-postfix-extra_cf.en.md index 35d8bff16..f0b4a28b6 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-extra_cf.en.md +++ b/docs/manual-guides/Postfix/u_e-postfix-extra_cf.en.md @@ -6,13 +6,13 @@ Syslog-ng was configured to hide those warnings while Postfix is running, to not Restart `postfix-mailcow` to apply your changes: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart postfix-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart postfix-mailcow diff --git a/docs/manual-guides/Redis/u_e-redis.de.md b/docs/manual-guides/Redis/u_e-redis.de.md index a8c71220b..9fa119a61 100644 --- a/docs/manual-guides/Redis/u_e-redis.de.md +++ b/docs/manual-guides/Redis/u_e-redis.de.md @@ -3,13 +3,13 @@ Redis wird als Key-Value-Speicher für die Einstellungen und Daten von rspamd un ## Client Um sich mit dem redis cli zu verbinden, führen Sie aus: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec redis-mailcow redis-cli ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec redis-mailcow redis-cli @@ -22,7 +22,7 @@ Hier sind einige nützliche Befehle für den redis-cli zur Fehlersuche: ##### MONITOR Überwacht alle vom Server empfangenen Anfragen in Echtzeit: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash #docker compose exec redis-mailcow redis-cli @@ -33,7 +33,7 @@ Hier sind einige nützliche Befehle für den redis-cli zur Fehlersuche: [...] ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash #docker-compose exec redis-mailcow redis-cli diff --git a/docs/manual-guides/Redis/u_e-redis.en.md b/docs/manual-guides/Redis/u_e-redis.en.md index ef266fa7d..47a1e6e3b 100644 --- a/docs/manual-guides/Redis/u_e-redis.en.md +++ b/docs/manual-guides/Redis/u_e-redis.en.md @@ -3,13 +3,13 @@ Redis is used as a key-value store for rspamd's and (some of) mailcow's settings ## Client To connect to the redis cli execute: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec redis-mailcow redis-cli ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec redis-mailcow redis-cli @@ -22,7 +22,7 @@ Here are some useful commands for the redis-cli for debugging: ##### MONITOR Listens for all requests received by the server in real time: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash #docker compose exec redis-mailcow redis-cli @@ -33,7 +33,7 @@ Listens for all requests received by the server in real time: [...] ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash #docker-compose exec redis-mailcow redis-cli diff --git a/docs/manual-guides/Rspamd/u_e-rspamd.de.md b/docs/manual-guides/Rspamd/u_e-rspamd.de.md index c1c2be4bb..a783cdacc 100644 --- a/docs/manual-guides/Rspamd/u_e-rspamd.de.md +++ b/docs/manual-guides/Rspamd/u_e-rspamd.de.md @@ -16,7 +16,7 @@ Sie können auch die Web-UI von Rspamd verwenden, um Ham und/oder Spam zu lernen ### Spam oder Ham aus bestehendem Verzeichnis lernen Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash # Ham @@ -25,7 +25,7 @@ Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash # Ham @@ -52,14 +52,14 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ ``` **Bayes-Daten zurücksetzen** -=== "docker compose" +=== "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" +=== "docker-compose (Standalone)" ``` bash docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del' @@ -67,20 +67,20 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ ``` **Neurale Daten zurücksetzen** -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del' ``` -=== "docker-compose" +=== "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" +=== "docker compose (Plugin)" ``` bash # Wir müssen zuerst das redis-cli eingeben: @@ -89,7 +89,7 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ 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" +=== "docker-compose (Standalone)" ``` bash # Wir müssen zuerst das redis-cli eingeben: @@ -109,14 +109,14 @@ 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. ## CLI-Werkzeuge -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec rspamd-mailcow rspamc --help docker compose exec rspamd-mailcow rspamadm --help ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec rspamd-mailcow rspamc --help @@ -138,13 +138,13 @@ enabled = false; ``` Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -161,13 +161,13 @@ greylist = 7; ``` Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -176,7 +176,7 @@ Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: Bestehende Einstellungen der Benutzer werden nicht überschrieben! Um benutzerdefinierte Schwellenwerte zurückzusetzen, führen Sie aus: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash source mailcow.conf @@ -185,7 +185,7 @@ Um benutzerdefinierte Schwellenwerte zurückzusetzen, führen Sie aus: 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" +=== "docker-compose (Standalone)" ``` bash source mailcow.conf @@ -203,13 +203,13 @@ reject_message = "Meine eigene Ablehnungsnachricht"; ``` Speichern Sie die Datei und starten Sie Rspamd neu: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -233,13 +233,13 @@ GLOBAL_RCPT_BL { ``` 3. Speichern Sie die Datei und starten Sie Rspamd neu: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -254,13 +254,13 @@ discard_on_reject = true; ``` Starten Sie Rspamd neu: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -269,7 +269,7 @@ Starten Sie Rspamd neu: ## 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" +=== "docker compose (Plugin)" ``` bash docker compose exec redis-mailcow sh @@ -277,7 +277,7 @@ Wenn Sie das UI nicht verwenden wollen und stattdessen alle Schlüssel in der Re redis-cli --scan --pattern RL* | xargs redis-cli unlink ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec redis-mailcow sh @@ -287,13 +287,13 @@ Wenn Sie das UI nicht verwenden wollen und stattdessen alle Schlüssel in der Re Starten Sie Rspamd neu: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -302,7 +302,7 @@ Starten Sie Rspamd neu: ## Erneutes Senden von Quarantäne-Benachrichtigungen auslösen Sollte nur zur Fehlersuche verwendet werden! -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec dovecot-mailcow bash @@ -311,7 +311,7 @@ Sollte nur zur Fehlersuche verwendet werden! quarantine_notify.py ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec dovecot-mailcow bash @@ -335,13 +335,13 @@ nrows = 1000; # Ändern Sie diesen Wert ``` Starten Sie anschließend Rspamd neu: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow diff --git a/docs/manual-guides/Rspamd/u_e-rspamd.en.md b/docs/manual-guides/Rspamd/u_e-rspamd.en.md index 7dda5aa50..6dba53c95 100644 --- a/docs/manual-guides/Rspamd/u_e-rspamd.en.md +++ b/docs/manual-guides/Rspamd/u_e-rspamd.en.md @@ -16,7 +16,7 @@ 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 You can use a one-liner to learn mail in plain-text (uncompressed) format: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash # Ham @@ -25,7 +25,7 @@ You can use a one-liner to learn mail in plain-text (uncompressed) format: for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash # Ham @@ -52,14 +52,14 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ ``` **Reset Bayes data** -=== "docker compose" +=== "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" +=== "docker-compose (Standalone)" ``` bash docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del' @@ -67,20 +67,20 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ ``` **Reset Neural data** -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del' ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del' ``` **Reset Fuzzy data** -=== "docker compose" +=== "docker compose (Plugin)" ``` bash # We need to enter the redis-cli first: @@ -89,7 +89,7 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ 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" +=== "docker-compose (Standalone)" ``` bash # We need to enter the redis-cli first: @@ -110,14 +110,14 @@ If redis-cli complains about... ## CLI tools -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec rspamd-mailcow rspamc --help docker compose exec rspamd-mailcow rspamadm --help ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec rspamd-mailcow rspamc --help @@ -139,13 +139,13 @@ enabled = false; ``` Save the file and restart "rspamd-mailcow": -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -162,13 +162,13 @@ greylist = 7; ``` Save the file and restart "rspamd-mailcow": -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -177,7 +177,7 @@ Save the file and restart "rspamd-mailcow": Existing settings of users will not be overwritten! To reset custom defined thresholds, run: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash source mailcow.conf @@ -186,7 +186,7 @@ To reset custom defined thresholds, run: 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" +=== "docker-compose (Standalone)" ``` bash source mailcow.conf @@ -210,13 +210,13 @@ reject_message = "My custom reject message"; ``` Save the file and restart Rspamd: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -240,13 +240,13 @@ GLOBAL_RCPT_BL { ``` 3. Save the file and restart Rspamd: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -261,13 +261,13 @@ discard_on_reject = true; ``` Restart Rspamd: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -276,7 +276,7 @@ Restart Rspamd: ## 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: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec redis-mailcow sh @@ -284,7 +284,7 @@ If you don't want to use the UI and instead wipe all keys in the Redis database, redis-cli --scan --pattern RL* | xargs redis-cli unlink ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec redis-mailcow sh @@ -293,13 +293,13 @@ If you don't want to use the UI and instead wipe all keys in the Redis database, ``` Restart Rspamd: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow @@ -308,7 +308,7 @@ Restart Rspamd: ## Trigger a resend of quarantine notifications Should be used for debugging only! -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose exec dovecot-mailcow bash @@ -317,7 +317,7 @@ Should be used for debugging only! quarantine_notify.py ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose exec dovecot-mailcow bash @@ -341,13 +341,13 @@ nrows = 1000; # change this value ``` Restart Rspamd afterwards: -=== "docker compose" +=== "docker compose (Plugin)" ``` bash docker compose restart rspamd-mailcow ``` -=== "docker-compose" +=== "docker-compose (Standalone)" ``` bash docker-compose restart rspamd-mailcow diff --git a/overrides/main.html b/overrides/main.html index 55c35d1d5..042e56f7a 100644 --- a/overrides/main.html +++ b/overrides/main.html @@ -1,6 +1,6 @@ {% extends "base.html" %} {% block announce %} -

Alle Befehle sind gemäß der Syntax des Docker Compose Plugins beschrieben.
- All commands are written according to the Docker Compose Plugin syntax.

+

Alle Befehle sind gemäß der Syntax des Docker Compose Plugin und der Standalone Variante anschaubar.
+ All Commands are available according to the Docker Compose Plugin and the Standalone Version

{% endblock %} \ No newline at end of file From b156a05ddabc4e9dd8b7c703e42e83f99a184121 Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Thu, 15 Dec 2022 15:38:44 +0100 Subject: [PATCH 04/11] Set Compose Toggler in NGINX Section --- .../Nginx/u_e-nginx_webmail-site.de.md | 30 +++++++++++++++++-- .../Nginx/u_e-nginx_webmail-site.en.md | 30 +++++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/docs/manual-guides/Nginx/u_e-nginx_webmail-site.de.md b/docs/manual-guides/Nginx/u_e-nginx_webmail-site.de.md index 75eaa0d0c..f3b40cbc3 100644 --- a/docs/manual-guides/Nginx/u_e-nginx_webmail-site.de.md +++ b/docs/manual-guides/Nginx/u_e-nginx_webmail-site.de.md @@ -26,7 +26,19 @@ server { } ``` -Speichern Sie und starten Sie Nginx neu: `docker compose restart nginx-mailcow`. +Speichern Sie und starten Sie Nginx neu: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart nginx-mailcow + ``` Öffnen Sie nun `mailcow.conf` und suchen Sie `ADDITIONAL_SAN`. Fügen Sie `webmail.example.org` zu diesem Array hinzu, verwenden Sie keine Anführungszeichen! @@ -35,4 +47,18 @@ Fügen Sie `webmail.example.org` zu diesem Array hinzu, verwenden Sie keine Anf ADDITIONAL_SAN=webmail.example.org ``` -Führen Sie `docker compose up -d` aus. Siehe "acme-mailcow" und "nginx-mailcow" Logs, wenn etwas fehlschlägt. \ No newline at end of file +Führen Sie den Befehl aus: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +Siehe "acme-mailcow" und "nginx-mailcow" Logs, wenn etwas fehlschlägt \ No newline at end of file diff --git a/docs/manual-guides/Nginx/u_e-nginx_webmail-site.en.md b/docs/manual-guides/Nginx/u_e-nginx_webmail-site.en.md index 4e7819023..1aacb0f77 100644 --- a/docs/manual-guides/Nginx/u_e-nginx_webmail-site.en.md +++ b/docs/manual-guides/Nginx/u_e-nginx_webmail-site.en.md @@ -26,7 +26,19 @@ server { } ``` -Save and restart Nginx: `docker compose restart nginx-mailcow`. +Save and restart Nginx: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart nginx-mailcow + ``` Now open `mailcow.conf` and find `ADDITIONAL_SAN`. Add `webmail.example.org` to this array, don't use quotes! @@ -35,4 +47,18 @@ Add `webmail.example.org` to this array, don't use quotes! ADDITIONAL_SAN=webmail.example.org ``` -Run `docker compose up -d`. See "acme-mailcow" and "nginx-mailcow" logs if anything fails. \ No newline at end of file +Run the command to apply the changes: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + + See "acme-mailcow" and "nginx-mailcow" logs if anything fails. \ No newline at end of file From f86388b992ad49c613ee13816a5dbdcc2f59fbd2 Mon Sep 17 00:00:00 2001 From: knuth Date: Fri, 16 Dec 2022 15:19:31 +0100 Subject: [PATCH 05/11] Use GitHub to determine latest version --- docs/i_u_m/i_u_m_install.de.md | 4 ++-- docs/i_u_m/i_u_m_install.en.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/i_u_m/i_u_m_install.de.md b/docs/i_u_m/i_u_m_install.de.md index 77e74e24c..cab8adb67 100644 --- a/docs/i_u_m/i_u_m_install.de.md +++ b/docs/i_u_m/i_u_m_install.de.md @@ -48,7 +48,7 @@ yum install docker-compose-plugin Diese Installation ist die alt bekannte Weise. Sie installiert Docker Compose als Standalone Programm und ist nicht auf die Art und weise der Docker Installation angewiesen. ``` -curl -L https://github.com/docker/compose/releases/download/v$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose +LATEST=$(curl -Ls -w %{url_effective} -o /dev/null https://github.com/docker/compose/releases/latest) && LATEST=${LATEST##*/} && curl -L https://github.com/docker/compose/releases/download/$LATEST/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ``` @@ -153,4 +153,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. -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. \ No newline at end of file +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. diff --git a/docs/i_u_m/i_u_m_install.en.md b/docs/i_u_m/i_u_m_install.en.md index ec71f3335..e8b551cbe 100644 --- a/docs/i_u_m/i_u_m_install.en.md +++ b/docs/i_u_m/i_u_m_install.en.md @@ -45,7 +45,7 @@ yum install docker-compose-plugin This installation is the old familiar way. It installs Docker Compose as a standalone program and does not rely on the Docker installation way. ``` -curl -L https://github.com/docker/compose/releases/download/v$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose +LATEST=$(curl -Ls -w %{url_effective} -o /dev/null https://github.com/docker/compose/releases/latest) && LATEST=${LATEST##*/} && curl -L https://github.com/docker/compose/releases/download/$LATEST/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ``` From 108e93fcf4645bb7a9ce17abd443f4281e96a0a4 Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Sat, 31 Dec 2022 11:42:41 +0100 Subject: [PATCH 06/11] Added Compose Switch to Unbound Section --- .../Unbound/u_e-unbound-fwd.de.md | 30 ++++++++++++++++--- .../Unbound/u_e-unbound-fwd.en.md | 30 ++++++++++++++++--- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/docs/manual-guides/Unbound/u_e-unbound-fwd.de.md b/docs/manual-guides/Unbound/u_e-unbound-fwd.de.md index c58d8f386..9bf059e29 100644 --- a/docs/manual-guides/Unbound/u_e-unbound-fwd.de.md +++ b/docs/manual-guides/Unbound/u_e-unbound-fwd.de.md @@ -17,9 +17,17 @@ forward-zone: Unbound neu starten: -``` -docker compose restart unbound-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose restart unbound-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart unbound-mailcow + ``` ## Methode B, Überschreiben der Datei @@ -31,4 +39,18 @@ cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.over Bearbeiten Sie `docker-compose.override.yml` und passen Sie die IP an. -Führen Sie `docker compose down ; docker compose up -d` aus. \ No newline at end of file +Stoppen und starten Sie bitte im Anschluss noch den Docker Stack: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` \ No newline at end of file diff --git a/docs/manual-guides/Unbound/u_e-unbound-fwd.en.md b/docs/manual-guides/Unbound/u_e-unbound-fwd.en.md index 5b98dcc40..00fb77d41 100644 --- a/docs/manual-guides/Unbound/u_e-unbound-fwd.en.md +++ b/docs/manual-guides/Unbound/u_e-unbound-fwd.en.md @@ -17,9 +17,17 @@ forward-zone: Restart Unbound: -``` -docker compose restart unbound-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose restart unbound-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart unbound-mailcow + ``` ## Method B, Override file @@ -31,4 +39,18 @@ cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.over Edit `docker-compose.override.yml` and adjust the IP. -Run `docker compose down ; docker compose up -d`. \ No newline at end of file +Afterwards stop and start the Docker Stack again: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` \ No newline at end of file From e28b5b8cac40f9e6332fc653b2c6622fcfa158de Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Mon, 9 Jan 2023 15:44:30 +0100 Subject: [PATCH 07/11] New Pages with Docker Compose Switcher --- docs/assets/stylesheets/extra.css | 7 +- .../Dovecot/u_e-dovecot-vmail-volume.de.md | 2 +- docs/models/model-passwd.de.md | 14 +- docs/models/model-passwd.en.md | 14 +- .../firststeps-disable_ipv6.de.md | 46 +++-- .../firststeps-disable_ipv6.en.md | 45 +++-- .../firststeps-dmarc_reporting.de.md | 159 ++++++++++++++---- .../firststeps-dmarc_reporting.en.md | 130 +++++++++++--- .../firststeps-ip_bindings.de.md | 32 +++- .../firststeps-ip_bindings.en.md | 32 +++- .../firststeps-logging.de.md | 38 ++++- .../firststeps-logging.en.md | 30 +++- .../debug-admin_login_sogo.de.md | 15 +- .../debug-admin_login_sogo.en.md | 15 +- .../debug-attach_service.de.md | 46 +++-- .../debug-attach_service.en.md | 45 +++-- docs/troubleshooting/debug-logs.de.md | 30 +++- overrides/main.html | 9 +- 18 files changed, 586 insertions(+), 123 deletions(-) diff --git a/docs/assets/stylesheets/extra.css b/docs/assets/stylesheets/extra.css index 11a533573..cf96f95f3 100644 --- a/docs/assets/stylesheets/extra.css +++ b/docs/assets/stylesheets/extra.css @@ -59,4 +59,9 @@ code { :root { --md-code-font: "Source Code Pro"; - } \ No newline at end of file + } + +[data-md-color-scheme="slate"] { + + --md-typeset-a-color: #6390e5; +} \ No newline at end of file diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.de.md index 4b908f73d..564ce5796 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.de.md @@ -3,7 +3,7 @@ !!! warning Neuere Docker-Versionen scheinen sich über bestehende Volumes zu beschweren. Man kann dies vorübergehend beheben, indem man das bestehende Volume entfernt und mailcow mit der Override-Datei startet. Aber es scheint nach einem Neustart problematisch zu sein (muss bestätigt werden). -Ein einfacher, schmutziger, aber stabiler Workaround ist es, mailcow zu stoppen (`docker compose down`), `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data` zu entfernen und einen neuen Link zu Ihrem entfernten Dateisystem zu erstellen, zum Beispiel: +Ein einfacher, schmutziger, aber stabiler Workaround ist es, mailcow zu stoppen, `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data` zu entfernen und einen neuen Link zu Ihrem entfernten Dateisystem zu erstellen, zum Beispiel: ``` mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup diff --git a/docs/models/model-passwd.de.md b/docs/models/model-passwd.de.md index a44b962d8..25f18212d 100644 --- a/docs/models/model-passwd.de.md +++ b/docs/models/model-passwd.de.md @@ -46,4 +46,16 @@ Der Wert von `MAILCOW_PASS_SCHEME` wird _immer_ verwendet, um neue Passwörter z > Ich habe die Passwort-Hashes in der SQL-Tabelle "Mailbox" geändert und kann mich nicht anmelden. -Eine "Ansicht" muss aktualisiert werden. Sie können dies durch einen Neustart von sogo-mailcow auslösen: `docker compose restart sogo-mailcow` \ No newline at end of file +Eine "Ansicht" muss aktualisiert werden. Sie können dies durch einen Neustart von sogo-mailcow auslösen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart sogo-mailcow + ``` \ No newline at end of file diff --git a/docs/models/model-passwd.en.md b/docs/models/model-passwd.en.md index 5885b723c..fd13148d7 100644 --- a/docs/models/model-passwd.en.md +++ b/docs/models/model-passwd.en.md @@ -46,4 +46,16 @@ The value of `MAILCOW_PASS_SCHEME` will _always_ be used to encrypt new password > I changed the password hashes in the "mailbox" SQL table and cannot login. -A "view" needs to be updated. You can trigger this by restarting sogo-mailcow: `docker compose restart sogo-mailcow` \ No newline at end of file +A "view" needs to be updated. You can trigger this by restarting sogo-mailcow: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart sogo-mailcow + ``` \ No newline at end of file diff --git a/docs/post_installation/firststeps-disable_ipv6.de.md b/docs/post_installation/firststeps-disable_ipv6.de.md index 10088e615..e469025cc 100644 --- a/docs/post_installation/firststeps-disable_ipv6.de.md +++ b/docs/post_installation/firststeps-disable_ipv6.de.md @@ -45,10 +45,20 @@ services: Damit diese Änderungen wirksam werden, müssen Sie den Stack vollständig stoppen und dann neu starten, damit Container und Netzwerke neu erstellt werden: -``` -docker compose down -docker compose up -d -``` + +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` **3.** Deaktivieren Sie IPv6 in unbound-mailcow @@ -63,9 +73,17 @@ Server: unbound neu starten: -``` -docker compose restart unbound-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose restart unbound-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart unbound-mailcow + ``` **4.** Deaktivieren Sie IPv6 in postfix-mailcow @@ -78,9 +96,17 @@ inet_protocols = ipv4 Starten Sie Postfix neu: -``` -docker compose restart postfix-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart postfix-mailcow + ``` **5.** Wenn im Docker Daemon IPv6 komplett deaktiviert ist: diff --git a/docs/post_installation/firststeps-disable_ipv6.en.md b/docs/post_installation/firststeps-disable_ipv6.en.md index 7313bfd06..26c89a8db 100644 --- a/docs/post_installation/firststeps-disable_ipv6.en.md +++ b/docs/post_installation/firststeps-disable_ipv6.en.md @@ -45,10 +45,19 @@ services: For these changes to be effective, you need to fully stop and then restart the stack, so containers and networks are recreated: -``` -docker compose down -docker compose up -d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` **3.** Disable IPv6 in unbound-mailcow @@ -63,9 +72,17 @@ server: Restart Unbound: -``` -docker compose restart unbound-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose restart unbound-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart unbound-mailcow + ``` **4.** Disable IPv6 in postfix-mailcow @@ -78,9 +95,17 @@ inet_protocols = ipv4 Restart Postfix: -``` -docker compose restart postfix-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart postfix-mailcow + ``` **5.** If your docker daemon completly disabled IPv6: diff --git a/docs/post_installation/firststeps-dmarc_reporting.de.md b/docs/post_installation/firststeps-dmarc_reporting.de.md index 5ba98fb61..78adec51f 100644 --- a/docs/post_installation/firststeps-dmarc_reporting.de.md +++ b/docs/post_installation/firststeps-dmarc_reporting.de.md @@ -52,7 +52,19 @@ services: - rspamd-mailcow ``` -Starte `docker compose up -d` +Starten Sie den mailcow Stack mit: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ## Senden Sie eine Kopie der Berichte an sich selbst @@ -77,34 +89,74 @@ Dies kann nützlich sein, wenn Sie... Prüfen Sie, wann der Berichtsplan zuletzt ausgeführt wurde: -``` -docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log + ``` Sehen Sie sich die letzte Berichtsausgabe an: -``` -docker compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log + ``` Manuelles Auslösen eines DMARC-Berichts: -``` -docker compose exec rspamd-mailcow rspamadm dmarc_report -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec rspamd-mailcow rspamadm dmarc_report + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow rspamadm dmarc_report + ``` Bestätigen Sie, dass Rspamd Daten in Redis aufgezeichnet hat: -Ändern Sie `20220428` in ein anderes interessantes Datum zum schauen. +Ändern Sie `20220428` in Ihr gewünschtes Datum zum überprüfen. -``` -docker compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428" -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428" + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428" + ``` Nehmen Sie eine der Zeilen aus der Ausgabe, die Sie interessiert, und fordern Sie sie an, z. B.: -``` -docker compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49 -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49 + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49 + ``` ## Ändern Sie die Häufigkeit der DMARC-Berichte @@ -118,28 +170,51 @@ Der Ofelia-Zeitplan hat die gleiche Implementierung wie `cron` in Go, die unters Um den Zeitplan zu ändern: 1. `docker-compose.override.yml` bearbeiten: + ``` + version: '2.1' -``` -version: '2.1' + services: + rspamd-mailcow: + environment: + - MASTER=${MASTER:-y} + labels: + ofelia.enabled: "true" + ofelia.job-exec.rspamd_dmarc_reporting_yesterday.schedule: "0 5 0 * * *" + ofelia.job-exec.rspamd_dmarc_reporting_yesterday.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date --date yesterday '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\"" + ofelia.job-exec.rspamd_dmarc_reporting_today.schedule: "@every 12h" + ofelia.job-exec.rspamd_dmarc_reporting_today.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\"" + ofelia-mailcow: + depends_on: + - rspamd-mailcow + ``` -services: - rspamd-mailcow: - environment: - - MASTER=${MASTER:-y} - labels: - ofelia.enabled: "true" - ofelia.job-exec.rspamd_dmarc_reporting_yesterday.schedule: "0 5 0 * * *" - ofelia.job-exec.rspamd_dmarc_reporting_yesterday.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date --date yesterday '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\"" - ofelia.job-exec.rspamd_dmarc_reporting_today.schedule: "@every 12h" - ofelia.job-exec.rspamd_dmarc_reporting_today.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\"" - ofelia-mailcow: - depends_on: - - rspamd-mailcow -``` +2. Starten Sie die betroffenen Container neu: -2. Führen Sie `docker compose up -d` aus. + === "docker compose (Plugin)" -3. Führen Sie `docker compose restart ofelia-mailcow` aus + ``` bash + docker compose up -d + ``` + + === "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +3. Führen Sie einen Neustart nur von Ofelia aus: + + === "docker compose (Plugin)" + + ``` bash + docker compose restart ofelia-mailcow + ``` + + === "docker-compose (Standalone)" + + ``` bash + docker-compose restart ofelia-mailcow + ``` ## DMARC-Berichterstattung deaktivieren @@ -149,4 +224,16 @@ Zum Deaktivieren der Berichterstattung: 2. Machen Sie Änderungen in `docker-compose.override.yml` an `rspamd-mailcow` und `ofelia-mailcow` rückgängig -3. Führen Sie `docker compose up -d` aus +3. Starten Sie die betroffenen Container neu: + + === "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + + === "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` diff --git a/docs/post_installation/firststeps-dmarc_reporting.en.md b/docs/post_installation/firststeps-dmarc_reporting.en.md index 2643a3ecb..d84e50af5 100644 --- a/docs/post_installation/firststeps-dmarc_reporting.en.md +++ b/docs/post_installation/firststeps-dmarc_reporting.en.md @@ -52,7 +52,18 @@ services: - rspamd-mailcow ``` -Run `docker compose up -d` +Start the mailcow stack with: +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ## Send a copy reports to yourself @@ -77,32 +88,73 @@ This can be useful if you... Check when the report schedule last ran: -``` -docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log + ``` See the latest report output: -``` -docker compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log + ``` Manually trigger a DMARC report: -``` -docker compose exec rspamd-mailcow rspamadm dmarc_report -``` +=== "docker compose (Plugin)" -Validate that Rspamd has recorded data in Redis: -Change `20220428` to date which you interested in. + ``` bash + docker compose exec rspamd-mailcow rspamadm dmarc_report + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow rspamadm dmarc_report + ``` + +Validate that Rspamd has recorded data in Redis: Change `20220428` to date which you interested in. + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428" + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428" + ``` -``` -docker compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428" -``` Take one of the lines from output you interested in and request it, f.e.: -``` -docker compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49 -``` + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49 + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49 + ``` ## Change DMARC reporting frequency @@ -134,9 +186,33 @@ services: - rspamd-mailcow ``` -2. Run `docker compose up -d` +2. Restart the desired containers with: -3. Run `docker compose restart ofelia-mailcow` + === "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + + === "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +3. Restart the ofelia container only: + + === "docker compose (Plugin)" + + ``` bash + docker compose restart ofelia-mailcow + ``` + + === "docker-compose (Standalone)" + + ``` bash + docker-compose restart ofelia-mailcow + ``` ## Disable DMARC Reporting @@ -146,4 +222,16 @@ To disable reporting: 2. Revert changes done in `docker-compose.override.yml` to `rspamd-mailcow` and `ofelia-mailcow` -3. Run `docker compose up -d` +3. Restart the desired containers with: + + === "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + + === "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` diff --git a/docs/post_installation/firststeps-ip_bindings.de.md b/docs/post_installation/firststeps-ip_bindings.de.md index 1e53919f6..33345d562 100644 --- a/docs/post_installation/firststeps-ip_bindings.de.md +++ b/docs/post_installation/firststeps-ip_bindings.de.md @@ -33,7 +33,21 @@ SQL_PORT=127.0.0.1:13306 SOLR_PORT=127.0.0.1:18983 ``` -Um Ihre Änderungen zu übernehmen, führen Sie `docker compose down` gefolgt von `docker compose up -d` aus. +Um Ihre Änderungen zu übernehmen, führen Sie folgende Befehle aus: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` ## IPv6-Binding @@ -69,4 +83,18 @@ services: - '[2001:db8:dead:beef::123]:443:443' ``` -Um Ihre Änderungen zu übernehmen, führen Sie `docker compose down` gefolgt von `docker compose up -d` aus. \ No newline at end of file +Um Ihre Änderungen zu übernehmen, führen Sie folgendes aus: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` \ No newline at end of file diff --git a/docs/post_installation/firststeps-ip_bindings.en.md b/docs/post_installation/firststeps-ip_bindings.en.md index df63ea98b..112d234b2 100644 --- a/docs/post_installation/firststeps-ip_bindings.en.md +++ b/docs/post_installation/firststeps-ip_bindings.en.md @@ -33,7 +33,21 @@ SQL_PORT=127.0.0.1:13306 SOLR_PORT=127.0.0.1:18983 ``` -To apply your changes, run `docker compose down` followed by `docker compose up -d`. +To apply your changes, run: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` ## IPv6 binding @@ -69,4 +83,18 @@ services: - '[2001:db8:dead:beef::123]:443:443' ``` -To apply your changes, run `docker compose down` followed by `docker compose up -d`. \ No newline at end of file +To apply your changes, run the commands below: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` \ No newline at end of file diff --git a/docs/post_installation/firststeps-logging.de.md b/docs/post_installation/firststeps-logging.de.md index a94724d6d..b9e4ea537 100644 --- a/docs/post_installation/firststeps-logging.de.md +++ b/docs/post_installation/firststeps-logging.de.md @@ -1,7 +1,19 @@ Das Logging in mailcow: dockerized besteht aus mehreren Stufen, ist aber immerhin wesentlich flexibler und einfacher in einen Logging-Daemon zu integrieren als bisher. In Docker schreibt die containerisierte Anwendung (PID 1) ihre Ausgabe auf stdout. Für echte Ein-Anwendungs-Container funktioniert das sehr gut. -Führen Sie `docker compose logs --help` aus, um mehr zu erfahren. +Führen Sie folgenden Befehl aus, um mehr zu erfahren: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs --help + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs --help + ``` Einige Container protokollieren oder streamen an mehrere Ziele. @@ -96,12 +108,12 @@ Wenn Sie den Logging-Treiber **global** ändern wollen, editieren Sie die Konfig ``` { -... +[...] "log-driver": "gelf", "log-opts": { "gelf-address": "udp://graylog:12201" } -... +[...] } ``` @@ -109,16 +121,30 @@ Für Syslog: ``` { -... +[...] "log-driver": "syslog", "log-opts": { "syslog-address": "udp://1.2.3.4:514" } -... +[...] } ``` -Starten Sie den Docker-Daemon neu und führen Sie `docker compose down && docker compose up -d` aus, um die Container mit dem neuen Protokollierungstreiber neu zu erstellen. +Starten Sie den Docker-Daemon neu und führen Sie die folgenden Befehle aus, um die Container mit dem neuen Protokollierungstreiber neu zu erstellen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` ### Log rotation diff --git a/docs/post_installation/firststeps-logging.en.md b/docs/post_installation/firststeps-logging.en.md index b02812cf4..af0398fa7 100644 --- a/docs/post_installation/firststeps-logging.en.md +++ b/docs/post_installation/firststeps-logging.en.md @@ -1,7 +1,19 @@ Logging in mailcow: dockerized consists of multiple stages, but is, after all, much more flexible and easier to integrate into a logging daemon than before. In Docker the containerized application (PID 1) writes its output to stdout. For real one-application containers this works just fine. -Run `docker compose logs --help` to learn more. +Run the command below to learn more: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs --help + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs --help + ``` Some containers log or stream to multiple destinations. @@ -117,7 +129,21 @@ For Syslog: } ``` -Restart the Docker daemon and run `docker compose down && docker compose up -d` to recreate the containers with the new logging driver. +Restart the Docker daemon and run the commands below to recreate the containers with the new logging driver: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` ### Log rotation diff --git a/docs/troubleshooting/debug-admin_login_sogo.de.md b/docs/troubleshooting/debug-admin_login_sogo.de.md index e3ec735e7..c5eaa935e 100644 --- a/docs/troubleshooting/debug-admin_login_sogo.de.md +++ b/docs/troubleshooting/debug-admin_login_sogo.de.md @@ -10,9 +10,18 @@ Die Funktion ist standardmäßig deaktiviert. Es kann in der `mailcow.conf` durc ALLOW_ADMIN_EMAIL_LOGIN=y ``` und die betroffenen Container neu erstellen mit -``` -docker compose up -d -``` + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ## Nachteile bei Aktivierung diff --git a/docs/troubleshooting/debug-admin_login_sogo.en.md b/docs/troubleshooting/debug-admin_login_sogo.en.md index aff5edfda..23e4286b4 100644 --- a/docs/troubleshooting/debug-admin_login_sogo.en.md +++ b/docs/troubleshooting/debug-admin_login_sogo.en.md @@ -12,9 +12,18 @@ The feature is disabled by default. It can be enabled in the `mailcow.conf` by s ALLOW_ADMIN_EMAIL_LOGIN=y ``` and recreating the affected containers with -``` -docker compose up -d -``` + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ## Drawbacks when enabled diff --git a/docs/troubleshooting/debug-attach_service.de.md b/docs/troubleshooting/debug-attach_service.de.md index 2badb19df..635427e96 100644 --- a/docs/troubleshooting/debug-attach_service.de.md +++ b/docs/troubleshooting/debug-attach_service.de.md @@ -2,9 +2,17 @@ Um einen Container an Ihre Shell anzuhängen, können Sie einfach folgendes ausführen -``` -docker compose exec $Dienst_Name /bin/bash -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec $Dienst_Name /bin/bash + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec $Dienst_Name /bin/bash + ``` ### Verbindung zu Diensten herstellen @@ -12,16 +20,34 @@ Wenn Sie sich direkt mit einem Dienst / einer Anwendung verbinden wollen, ist es #### MySQL -``` -Quelle mailcow.conf -docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -``` + +=== "docker compose (Plugin)" + + ``` bash + source mailcow.conf + docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} + ``` + +=== "docker-compose (Standalone)" + + ``` bash + source mailcow.conf + docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} + ``` #### Redis -``` -docker compose exec redis-mailcow redis-cli -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec redis-mailcow redis-cli + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec redis-mailcow redis-cli + ``` ## Dienstbeschreibungen diff --git a/docs/troubleshooting/debug-attach_service.en.md b/docs/troubleshooting/debug-attach_service.en.md index 65680c47d..f0f1e0bfa 100644 --- a/docs/troubleshooting/debug-attach_service.en.md +++ b/docs/troubleshooting/debug-attach_service.en.md @@ -2,9 +2,17 @@ To attach a container to your shell you can simply run -``` -docker compose exec $Service_Name /bin/bash -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec $Dienst_Name /bin/bash + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec $Dienst_Name /bin/bash + ``` ### Connecting to Services @@ -12,16 +20,33 @@ If you want to connect to a service / application directly it is always a good i #### MySQL -``` -source mailcow.conf -docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -``` +=== "docker compose (Plugin)" + + ``` bash + source mailcow.conf + docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} + ``` + +=== "docker-compose (Standalone)" + + ``` bash + source mailcow.conf + docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} + ``` #### Redis -``` -docker compose exec redis-mailcow redis-cli -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec redis-mailcow redis-cli + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec redis-mailcow redis-cli + ``` ## Service Descriptions diff --git a/docs/troubleshooting/debug-logs.de.md b/docs/troubleshooting/debug-logs.de.md index f77831b9c..dea6f0186 100644 --- a/docs/troubleshooting/debug-logs.de.md +++ b/docs/troubleshooting/debug-logs.de.md @@ -1,9 +1,35 @@ !!! warning Dieser Abschnitt gilt nur für Docker's Standard-Logging-Treiber (JSON). -Um die Logs aller mailcow: dockerized bezogenen Container zu sehen, können Sie `docker compose logs` innerhalb Ihres mailcow-dockerized Ordners verwenden, der Ihre `mailcow.conf` enthält. Dies ist normalerweise ein bisschen viel, aber Sie können die Ausgabe mit `--tail=100` auf die letzten 100 Zeilen pro Container kürzen, oder ein `-f` hinzufügen, um die Live-Ausgabe aller Ihrer Dienste zu verfolgen. +Um die Logs aller mailcow: dockerized bezogenen Container zu sehen, können Sie den folgenden Befehl innerhalb Ihres mailcow-dockerized Ordners verwenden, der Ihre `mailcow.conf` enthält: -Um die Logs eines bestimmten Dienstes zu sehen, kann man `docker compose logs [options] $service_name` verwenden +=== "docker compose (Plugin)" + + ``` bash + docker compose logs + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs + ``` + +Dies ist normalerweise ein bisschen viel, aber Sie können die Ausgabe mit `--tail=100` auf die letzten 100 Zeilen pro Container kürzen, oder ein `-f` hinzufügen, um die Live-Ausgabe aller Ihrer Dienste zu verfolgen. + +Um die Logs eines bestimmten Dienstes zu sehen, kann man folgendes verwenden: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs [options] $service_name + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs [options] $service_name + ``` !!! info Die verfügbaren Optionen für den Befehl **docker compose logs** sind: diff --git a/overrides/main.html b/overrides/main.html index 042e56f7a..0ca4fb7e1 100644 --- a/overrides/main.html +++ b/overrides/main.html @@ -1,6 +1,11 @@ {% extends "base.html" %} {% block announce %} -

Alle Befehle sind gemäß der Syntax des Docker Compose Plugin und der Standalone Variante anschaubar.
- All Commands are available according to the Docker Compose Plugin and the Standalone Version

+{% if config.theme.language == 'de' %} +

Alle Befehle sind gemäß der Syntax des Docker Compose Plugin und der Standalone Variante anwählbar.

+{% elif config.theme.language == 'en' %} +

All Commands are available according to the Docker Compose Plugin and the Standalone Version

+{% else %} +

All Commands are available according to the Docker Compose Plugin and the Standalone Version

+{% endif %} {% endblock %} \ No newline at end of file From 9e69d091b5a1e48d77648250dcb33f4d4cc33b59 Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Tue, 10 Jan 2023 12:08:32 +0100 Subject: [PATCH 08/11] Changed Backup Section to Compose switch --- .../b_n_r-accidental_deletion.de.md | 52 +++++++++++++++---- .../b_n_r-accidental_deletion.en.md | 51 ++++++++++++++---- docs/backup_restore/b_n_r-backup.de.md | 16 +++++- docs/backup_restore/b_n_r-backup.en.md | 16 +++++- .../b_n_r-backup_restore-maildir.de.md | 36 ++++++++++--- .../b_n_r-backup_restore-maildir.en.md | 36 ++++++++++--- .../b_n_r-backup_restore-mysql.de.md | 34 ++++++++---- .../b_n_r-backup_restore-mysql.en.md | 32 +++++++++--- docs/backup_restore/b_n_r-coldstandby.de.md | 14 ++++- docs/backup_restore/b_n_r-coldstandby.en.md | 14 ++++- 10 files changed, 246 insertions(+), 55 deletions(-) diff --git a/docs/backup_restore/b_n_r-accidental_deletion.de.md b/docs/backup_restore/b_n_r-accidental_deletion.de.md index 1eda7e582..0d959c7c8 100644 --- a/docs/backup_restore/b_n_r-accidental_deletion.de.md +++ b/docs/backup_restore/b_n_r-accidental_deletion.de.md @@ -10,15 +10,39 @@ Wir erstellen automatisch tägliche Backups (24 Stunden Intervall ab dem Hochfah Kopieren Sie die Datei mit dem Namen des Benutzers, den Sie wiederherstellen wollen, nach `__MAILCOW_DIRECTORY__/data/conf/sogo`. -1\. Kopieren Sie die Sicherung: `cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo` +1. Kopieren Sie die Sicherung: `cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo` -2\. Starten Sie `docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org`. +2. Führen Sie folgenden Befehl aus: -Führen Sie `sogo-tool` ohne Parameter aus, um nach möglichen Wiederherstellungsoptionen zu suchen. + === "docker compose (Plugin)" -3\. Löschen Sie die kopierte Sicherung, indem Sie `rm __MAILCOW_DIRECTORY__/data/conf/sogo` ausführen + ``` bash + docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org + ``` -4\. Starten Sie SOGo und Memcached neu: `docker compose restart sogo-mailcow memcached-mailcow` + === "docker-compose (Standalone)" + + ``` bash + docker-compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org + ``` + + Führen Sie `sogo-tool` ohne Parameter aus, um nach möglichen Wiederherstellungsoptionen zu suchen. + +3. Löschen Sie die kopierte Sicherung, indem Sie `rm __MAILCOW_DIRECTORY__/data/conf/sogo` ausführen + +4. Starten Sie SOGo und Memcached neu: + + === "docker compose (Plugin)" + + ``` bash + docker compose restart sogo-mailcow memcached-mailcow + ``` + + === "docker-compose (Standalone)" + + ``` bash + docker-compose restart sogo-mailcow memcached-mailcow + ``` ### Mail @@ -34,7 +58,17 @@ Um die Mailbox wiederherzustellen, stellen Sie sicher, dass Sie tatsächlich auf Kopieren Sie die Ordner von `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]` zurück nach `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]` und synchronisieren Sie die Ordner neu und berechnen Sie die Quota (Speicherplatz) neu: -``` -docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*' -docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net -``` + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*' + docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*' + docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net + ``` \ No newline at end of file diff --git a/docs/backup_restore/b_n_r-accidental_deletion.en.md b/docs/backup_restore/b_n_r-accidental_deletion.en.md index d7b6a324a..f08390e81 100644 --- a/docs/backup_restore/b_n_r-accidental_deletion.en.md +++ b/docs/backup_restore/b_n_r-accidental_deletion.en.md @@ -10,15 +10,39 @@ We automatically create daily backups (24h interval starting from running up -d) Copy the file named after the user you want to restore to `__MAILCOW_DIRECTORY__/data/conf/sogo`. -1\. Copy the backup: `cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo` +1. Copy the backup: `cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo` -2\. Run `docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org` +2. Run the following command: -Run `sogo-tool` without parameters to check for possible restore options. + === "docker compose (Plugin)" -3\. Delete the copied backup by running `rm __MAILCOW_DIRECTORY__/data/conf/sogo` + ``` bash + docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org + ``` -4\. Restart SOGo and Memcached: `docker compose restart sogo-mailcow memcached-mailcow` + === "docker-compose (Standalone)" + + ``` bash + docker-compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org + ``` + + Run `sogo-tool` without parameters to check for possible restore options. + +3. Delete the copied backup by running `rm __MAILCOW_DIRECTORY__/data/conf/sogo` + +4. Restart SOGo and Memcached: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart sogo-mailcow memcached-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart sogo-mailcow memcached-mailcow + ``` ### Mail @@ -34,7 +58,16 @@ To restore make sure you are actually restoring to the same mailcow it was delet Copy the folders from `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]` back to `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]` and resync the folder and recalc the quota: -``` -docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*' -docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net -``` \ No newline at end of file +=== "docker compose (Plugin)" + + ``` bash + docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*' + docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*' + docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net + ``` \ No newline at end of file diff --git a/docs/backup_restore/b_n_r-backup.de.md b/docs/backup_restore/b_n_r-backup.de.md index 8c9e8b09e..c0201aef2 100644 --- a/docs/backup_restore/b_n_r-backup.de.md +++ b/docs/backup_restore/b_n_r-backup.de.md @@ -111,7 +111,21 @@ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin Am Zielort (in diesem Fall `/external_share/backups`) möchten Sie vielleicht Snapshot-Möglichkeiten haben (ZFS, Btrfs usw.). Machen Sie täglich einen Snapshot und bewahren Sie ihn für n Tage auf, um ein konsistentes Backup zu erhalten. Führen Sie **kein** rsync auf eine Samba-Freigabe durch, Sie müssen die richtigen Berechtigungen behalten! -Zum Wiederherstellen müssen Sie rsync einfach in umgekehrter Richtung ausführen und Docker neu starten, um die Volumes erneut zu lesen. Führen Sie `docker compose pull` und `docker compose up -d` aus. +Zum Wiederherstellen müssen Sie rsync einfach in umgekehrter Richtung ausführen und Docker neu starten, um die Volumes erneut zu lesen. Führen Sie folgende Befehle aus: + +=== "docker compose (Plugin)" + + ``` bash + docker compose pull + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose pull + docker-compose up -d + ``` Wenn Sie Glück haben, können Redis und MariaDB die inkonsistenten Datenbanken automatisch reparieren (wenn sie inkonsistent _sind_). Im Falle einer beschädigten Datenbank müssen Sie das Hilfsskript verwenden, um die inkonsistenten Elemente wiederherzustellen. Wenn die Wiederherstellung fehlschlägt, versuchen Sie, die Sicherungen zu extrahieren und die Dateien manuell zurück zu kopieren. Behalten Sie die Dateiberechtigungen bei! \ No newline at end of file diff --git a/docs/backup_restore/b_n_r-backup.en.md b/docs/backup_restore/b_n_r-backup.en.md index fefeb88e3..9b21a3a0e 100644 --- a/docs/backup_restore/b_n_r-backup.en.md +++ b/docs/backup_restore/b_n_r-backup.en.md @@ -111,7 +111,21 @@ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin On the destination (in this case `/external_share/backups`) you may want to have snapshot capabilities (ZFS, Btrfs etc.). Snapshot daily and keep for n days for a consistent backup. Do **not** rsync to a Samba share, you need to keep the correct permissions! -To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run `docker compose pull` and `docker compose up -d`. +To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run: + +=== "docker compose (Plugin)" + + ``` bash + docker compose pull + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose pull + docker-compose up -d + ``` If you are lucky Redis and MariaDB can automatically fix the inconsistent databases (if they _are_ inconsistent). In case of a corrupted database you'd need to use the helper script to restore the inconsistent elements. If a restore fails, try to extract the backups and copy the files back manually. Keep the file permissions! diff --git a/docs/backup_restore/b_n_r-backup_restore-maildir.de.md b/docs/backup_restore/b_n_r-backup_restore-maildir.de.md index 0150f5936..5a504894d 100644 --- a/docs/backup_restore/b_n_r-backup_restore-maildir.de.md +++ b/docs/backup_restore/b_n_r-backup_restore-maildir.de.md @@ -1,16 +1,36 @@ ### Sicherung Diese Zeile sichert das vmail-Verzeichnis in eine Datei backup_vmail.tar.gz im mailcow-Root-Verzeichnis: -``` -cd /pfad/zu/mailcow-dockerized -docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail -``` + +=== "docker compose (Plugin)" + + ``` bash + cd /pfad/zu/mailcow-dockerized + docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:bullseye-slim tar cvfz /backup/backup_vmail.tar.gz /vmail + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /pfad/zu/mailcow-dockerized + docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:bullseye-slim tar cvfz /backup/backup_vmail.tar.gz /vmail + ``` Sie können den Pfad ändern, indem Sie ${PWD} (das dem aktuellen Verzeichnis entspricht) zu einem beliebigen Pfad ändern, auf den Sie Schreibzugriff haben. Setzen Sie den Dateinamen `backup_vmail.tar.gz` auf einen beliebigen Namen, aber lassen Sie den Pfad so wie er ist. Beispiel: `[...] tar cvfz /backup/mein_eigener_dateiname_.tar.gz` ### Wiederherstellen -``` -cd /pfad/zu/mailcow-dockerized -docker run --rm -it -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar xvfz /backup/backup_vmail.tar.gz -``` \ No newline at end of file + +=== "docker compose (Plugin)" + + ``` bash + cd /pfad/zu/mailcow-dockerized + docker run --rm -it -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:bullseye-slim tar xvfz /backup/backup_vmail.tar.gz + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /pfad/zu/mailcow-dockerized + docker run --rm -it -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:bullseye-slim tar xvfz /backup/backup_vmail.tar.gz + ``` \ No newline at end of file diff --git a/docs/backup_restore/b_n_r-backup_restore-maildir.en.md b/docs/backup_restore/b_n_r-backup_restore-maildir.en.md index 3906dcb01..246da29a0 100644 --- a/docs/backup_restore/b_n_r-backup_restore-maildir.en.md +++ b/docs/backup_restore/b_n_r-backup_restore-maildir.en.md @@ -1,16 +1,36 @@ ### Backup This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory: -``` -cd /path/to/mailcow-dockerized -docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail -``` + +=== "docker compose (Plugin)" + + ``` bash + cd /path/to/mailcow-dockerized + docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:bullseye-slim tar cvfz /backup/backup_vmail.tar.gz /vmail + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /path/to/mailcow-dockerized + docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:bullseye-slim tar cvfz /backup/backup_vmail.tar.gz /vmail + ``` You can change the path by adjusting ${PWD} (which equals to the current directory) to any path you have write-access to. Set the filename `backup_vmail.tar.gz` to any custom name, but leave the path as it is. Example: `[...] tar cvfz /backup/my_own_filename_.tar.gz` ### Restore -``` -cd /path/to/mailcow-dockerized -docker run --rm -it -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar xvfz /backup/backup_vmail.tar.gz -``` \ No newline at end of file + +=== "docker compose (Plugin)" + + ``` bash + cd /path/to/mailcow-dockerized + docker run --rm -it -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:bullseye-slim tar xvfz /backup/backup_vmail.tar.gz + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /path/to/mailcow-dockerized + docker run --rm -it -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:bullseye-slim tar xvfz /backup/backup_vmail.tar.gz + ``` \ No newline at end of file diff --git a/docs/backup_restore/b_n_r-backup_restore-mysql.de.md b/docs/backup_restore/b_n_r-backup_restore-mysql.de.md index 425d0e1f4..4e497371b 100644 --- a/docs/backup_restore/b_n_r-backup_restore-mysql.de.md +++ b/docs/backup_restore/b_n_r-backup_restore-mysql.de.md @@ -1,18 +1,34 @@ ## Sicherung -``` -cd /pfad/zu/mailcow-dockerized -source mailcow.conf -DATE=$(date +"%Y%m%d_%H%M%S") -docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql -``` +=== "docker compose (Plugin)" + + ``` bash + cd /pfad/zu/mailcow-dockerized + source mailcow.conf + DATE=$(date +"%Y%m%d_%H%M%S") + docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /pfad/zu/mailcow-dockerized + source mailcow.conf + DATE=$(date +"%Y%m%d_%H%M%S") + docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql + ``` ## Wiederherstellen -!!! warning - Sie sollten den SQL-Dump ohne `docker compose` umleiten, um Parsing-Fehler zu vermeiden. +!!! warning "Warnung" + === "docker compose (Plugin)" + Sie sollten den SQL-Dump ohne `docker compose` umleiten, um Parsing-Fehler zu vermeiden. -``` + === "docker-compose (Standalone)" + + Sie sollten den SQL-Dump ohne `docker-compose` umleiten, um Parsing-Fehler zu vermeiden. + +``` bash cd /pfad/zu/mailcow-dockerized source mailcow.conf docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql diff --git a/docs/backup_restore/b_n_r-backup_restore-mysql.en.md b/docs/backup_restore/b_n_r-backup_restore-mysql.en.md index 0739ca79d..91407a639 100644 --- a/docs/backup_restore/b_n_r-backup_restore-mysql.en.md +++ b/docs/backup_restore/b_n_r-backup_restore-mysql.en.md @@ -1,18 +1,34 @@ ## Backup -``` -cd /path/to/mailcow-dockerized -source mailcow.conf -DATE=$(date +"%Y%m%d_%H%M%S") -docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql -``` +=== "docker compose (Plugin)" + + ``` bash + cd /path/to/mailcow-dockerized + source mailcow.conf + DATE=$(date +"%Y%m%d_%H%M%S") + docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /path/to/mailcow-dockerized + source mailcow.conf + DATE=$(date +"%Y%m%d_%H%M%S") + docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql + ``` ## Restore !!! warning - You should redirect the SQL dump without `docker compose` to prevent parsing errors. + === "docker compose (Plugin)" + You should redirect the SQL dump without `docker compose` to prevent parsing errors. -``` + === "docker-compose (Standalone)" + + You should redirect the SQL dump without `docker-compose` to prevent parsing errors. + +``` bash cd /path/to/mailcow-dockerized source mailcow.conf docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql diff --git a/docs/backup_restore/b_n_r-coldstandby.de.md b/docs/backup_restore/b_n_r-coldstandby.de.md index 0690bda70..829aaa0cd 100644 --- a/docs/backup_restore/b_n_r-coldstandby.de.md +++ b/docs/backup_restore/b_n_r-coldstandby.de.md @@ -18,7 +18,19 @@ Das Skript verwendet rsync mit dem `--delete` Flag. Das Ziel wird eine exakte Ko `mariabackup` wird verwendet, um eine konsistente Kopie des SQL-Datenverzeichnisses zu erstellen. -Nach dem Rsync der Daten führen wir `docker compose pull` aus und entfernen alte Image-Tags aus dem Ziel. +Nach dem Rsync der Daten führen wir folgenden Befehl aus (anhand der gesetzten docker compose Version in der mailcow.conf) und entfernen alte Image-Tags aus dem Ziel: + +=== "docker compose (Plugin)" + + ``` bash + docker compose pull + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose pull + ``` Ihre Quelle wird zu keinem Zeitpunkt verändert. diff --git a/docs/backup_restore/b_n_r-coldstandby.en.md b/docs/backup_restore/b_n_r-coldstandby.en.md index 0aa680c27..0a662ee7a 100644 --- a/docs/backup_restore/b_n_r-coldstandby.en.md +++ b/docs/backup_restore/b_n_r-coldstandby.en.md @@ -18,7 +18,19 @@ The script uses rsync with the `--delete` flag. The destination will be an exact `mariabackup` is used to create a consistent copy of the SQL data directory. -After rsync'ing the data we will run `docker compose pull` and remove old image tags from the destination. +After rsync'ing the data we will run the command below (depending on your set docker compose type in mailcow.conf) and remove old image tags from the destination: + +=== "docker compose (Plugin)" + + ``` bash + docker compose pull + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose pull + ``` Your source will not be changed at any time. From ff66db2ee77797b893cbd9456d18ae4e3ef57fc2 Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Fri, 13 Jan 2023 18:16:08 +0100 Subject: [PATCH 09/11] Finalized Compose Switch --- .../b_n_r-accidental_deletion.de.md | 6 +- docs/backup_restore/b_n_r-coldstandby.de.md | 2 +- docs/client/client.de.md | 2 +- docs/i_u_m/i_u_m_migration.de.md | 4 +- .../Dovecot/u_e-dovecot-expunge.de.md | 2 +- .../Dovecot/u_e-dovecot-idle_interval.de.md | 2 +- .../Dovecot/u_e-dovecot-vmail-volume.de.md | 32 ++- .../Dovecot/u_e-dovecot-vmail-volume.en.md | 26 ++- .../Postfix/u_e-postfix-pflogsumm.de.md | 3 +- .../Postfix/u_e-postfix-pflogsumm.en.md | 3 +- .../u_e-postfix-postscreen_whitelist.de.md | 4 +- .../Postfix/u_e-postfix-trust_networks.de.md | 30 ++- .../Postfix/u_e-postfix-trust_networks.en.md | 28 ++- docs/manual-guides/SOGo/u_e-sogo.de.md | 167 +++++++++++++-- docs/manual-guides/SOGo/u_e-sogo.en.md | 174 ++++++++++++++-- .../Watchdog/u_e-watchdog-thresholds.de.md | 14 +- .../Watchdog/u_e-watchdog-thresholds.en.md | 14 +- .../mailcow-UI/u_e-mailcow_ui-fido.de.md | 2 +- .../u_e-mailcow_ui-spamfilter.de.md | 2 +- .../mailcow-UI/u_e-mailcow_ui-tfa.de.md | 35 +++- .../mailcow-UI/u_e-mailcow_ui-tfa.en.md | 27 ++- docs/manual-guides/u_e-80_to_443.de.md | 28 ++- docs/manual-guides/u_e-80_to_443.en.md | 28 ++- .../u_e-reeanble-weak-protocols.de.md | 14 +- .../u_e-reeanble-weak-protocols.en.md | 14 +- docs/manual-guides/u_e-update-hooks.de.md | 2 +- docs/post_installation/firststeps-rp.de.md | 66 +++++- docs/post_installation/firststeps-rp.en.md | 58 +++++- docs/post_installation/firststeps-snat.de.md | 28 ++- docs/post_installation/firststeps-snat.en.md | 28 ++- docs/post_installation/firststeps-ssl.de.md | 194 +++++++++++++++--- docs/post_installation/firststeps-ssl.en.md | 186 +++++++++++++++-- .../borgmatic/third_party-borgmatic.de.md | 166 ++++++++++++--- .../borgmatic/third_party-borgmatic.en.md | 142 ++++++++++--- docs/third_party/checkmk/u_e-checkmk.de.md | 2 +- docs/third_party/checkmk/u_e-checkmk.en.md | 2 +- .../third_party-exchange_onprem.de.md | 20 +- .../third_party/gitea/third_party-gitea.de.md | 49 ++++- .../third_party/gitea/third_party-gitea.en.md | 50 ++++- docs/third_party/gogs/third_party-gogs.de.md | 34 ++- docs/third_party/gogs/third_party-gogs.en.md | 34 ++- .../mailman3/third_party-mailman3.de.md | 63 ++++-- .../mailman3/third_party-mailman3.en.md | 59 ++++-- .../third_party-mailpiler_integration.de.md | 2 +- .../nextcloud/third_party-nextcloud.de.md | 134 ++++++++++-- .../nextcloud/third_party-nextcloud.en.md | 135 ++++++++++-- .../portainer/third_party-portainer.de.md | 20 +- .../portainer/third_party-portainer.en.md | 16 +- .../roundcube/third_party-roundcube.de.md | 45 ++-- .../roundcube/third_party-roundcube.en.md | 41 ++-- .../debug-admin_login_sogo.de.md | 2 +- docs/troubleshooting/debug-logs.de.md | 4 +- docs/troubleshooting/debug-logs.en.md | 32 ++- docs/troubleshooting/debug-mysql_aria.de.md | 73 ++++++- docs/troubleshooting/debug-mysql_aria.en.md | 79 ++++++- .../troubleshooting/debug-mysql_upgrade.de.md | 17 +- .../troubleshooting/debug-mysql_upgrade.en.md | 17 +- docs/troubleshooting/debug-reset_pw.de.md | 106 +++++++--- docs/troubleshooting/debug-reset_pw.en.md | 28 ++- docs/troubleshooting/debug-rm_volumes.de.md | 14 +- docs/troubleshooting/debug-rm_volumes.en.md | 14 +- .../debug-rspamd_memory_leaks.de.md | 86 ++++++-- .../debug-rspamd_memory_leaks.en.md | 87 ++++++-- mkdocs.yml | 6 +- overrides/main.html | 4 +- 65 files changed, 2328 insertions(+), 480 deletions(-) diff --git a/docs/backup_restore/b_n_r-accidental_deletion.de.md b/docs/backup_restore/b_n_r-accidental_deletion.de.md index 0d959c7c8..ab941a0f8 100644 --- a/docs/backup_restore/b_n_r-accidental_deletion.de.md +++ b/docs/backup_restore/b_n_r-accidental_deletion.de.md @@ -6,7 +6,7 @@ Wenn Sie Ihren Fehler innerhalb von ein paar Stunden bemerken, können Sie die D Wir erstellen automatisch tägliche Backups (24 Stunden Intervall ab dem Hochfahren -d) in `/var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/`. -**Stellen Sie sicher, dass der Benutzer, den Sie wiederherstellen wollen, in Ihrem Mailcow-Backend existiert**. Legen Sie diesen neu an, falls nicht mehr existent. +**Stellen Sie sicher, dass der Benutzer, den Sie wiederherstellen wollen, in Ihrem mailcow-Backend existiert**. Legen Sie diesen neu an, falls nicht mehr existent. Kopieren Sie die Datei mit dem Namen des Benutzers, den Sie wiederherstellen wollen, nach `__MAILCOW_DIRECTORY__/data/conf/sogo`. @@ -52,9 +52,9 @@ Eine gelöschte Mailbox wird in ihrer verschlüsselten Form nach `/var/lib/docke Der Ordner innerhalb von `_garbage` folgt der Struktur `[timestamp]_[domain_sanitized][user_sanitized]`, zum Beispiel `1629109708_exampleorgtest` im Falle von test@example.org, das am 1629109708 gelöscht wurde. -Um die Mailbox wiederherzustellen, stellen Sie sicher, dass Sie tatsächlich auf die gleiche Mailcow wiederherstellen, von der sie gelöscht wurde, oder Sie die gleichen Verschlüsselungsschlüssel in `crypt-vol-1` verwenden. +Um die Mailbox wiederherzustellen, stellen Sie sicher, dass Sie tatsächlich auf die gleiche mailcow wiederherstellen, von der sie gelöscht wurde, oder Sie die gleichen Verschlüsselungsschlüssel in `crypt-vol-1` verwenden. -**Stellen Sie sicher, dass der Benutzer, den Sie wiederherstellen wollen, in Ihrer Mailcow existiert**. Legen Sie diesen neu an, wenn der Benutzer fehlt. +**Stellen Sie sicher, dass der Benutzer, den Sie wiederherstellen wollen, in Ihrer mailcow existiert**. Legen Sie diesen neu an, wenn der Benutzer fehlt. Kopieren Sie die Ordner von `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]` zurück nach `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]` und synchronisieren Sie die Ordner neu und berechnen Sie die Quota (Speicherplatz) neu: diff --git a/docs/backup_restore/b_n_r-coldstandby.de.md b/docs/backup_restore/b_n_r-coldstandby.de.md index 829aaa0cd..0c6abefb1 100644 --- a/docs/backup_restore/b_n_r-coldstandby.de.md +++ b/docs/backup_restore/b_n_r-coldstandby.de.md @@ -10,7 +10,7 @@ Das bereitgestellte Skript funktioniert auf Standardinstallationen. Es kann versagen, wenn Sie nicht unterstützte Volume Overrides verwenden. Wir unterstützen das nicht und wir werden keine Hacks einbauen, die das unterstützen. Bitte erstellen und pflegen Sie einen Fork, wenn Sie Ihre Änderungen beibehalten wollen. -Das Skript wird **die gleichen Pfade** wie Ihre Standard-Mailcow-Installation verwenden. Das ist das mailcow-Basisverzeichnis - für die meisten Nutzer `/opt/mailcow-dockerized` - sowie die Mountpoints. +Das Skript wird **die gleichen Pfade** wie Ihre Standard-mailcow-Installation verwenden. Das ist das mailcow-Basisverzeichnis - für die meisten Nutzer `/opt/mailcow-dockerized` - sowie die Mountpoints. Um die Pfade Ihrer Quellvolumes zu finden, verwenden wir `docker inspect` und lesen das Zielverzeichnis jedes Volumes, das mit Ihrem mailcow compose Projekt verbunden ist. Das bedeutet, dass wir auch Volumes übertragen, die Sie in einer Override-Datei hinzugefügt haben. Lokale Bind-Mounts können funktionieren, müssen aber nicht. diff --git a/docs/client/client.de.md b/docs/client/client.de.md index 6d26b61ad..66fdd724a 100644 --- a/docs/client/client.de.md +++ b/docs/client/client.de.md @@ -11,7 +11,7 @@ Wenn Sie auf diese Seite zugreifen, indem Sie sich bei Ihrem mailcow-Server anme

Erfolgreich

-Da Sie diese Seite aufgerufen haben, nachdem Sie sich in Ihren Mailcow-Server eingeloggt haben, wurden alle Anleitungen mit Ihrer E-Mail-Adresse und Ihrem Servernamen personalisiert. +Da Sie diese Seite aufgerufen haben, nachdem Sie sich in Ihren mailcow-Server eingeloggt haben, wurden alle Anleitungen mit Ihrer E-Mail-Adresse und Ihrem Servernamen personalisiert.
diff --git a/docs/i_u_m/i_u_m_migration.de.md b/docs/i_u_m/i_u_m_migration.de.md index ef819ca83..4ab3113bf 100644 --- a/docs/i_u_m/i_u_m_migration.de.md +++ b/docs/i_u_m/i_u_m_migration.de.md @@ -1,5 +1,5 @@ -!!! warning - Diese Anleitung geht davon aus, dass Sie beabsichtigen, einen bestehenden Mailcow-Server (Quelle) auf einen brandneuen, leeren Server (Ziel) zu migrieren. Sie kümmert sich nicht um die Erhaltung bestehender Daten auf dem Zielserver und löscht alles innerhalb von `/var/lib/docker/volumes` und somit alle Docker-Volumes, die Sie bereits eingerichtet haben. +!!! warning "Warnung" + Diese Anleitung geht davon aus, dass Sie beabsichtigen, einen bestehenden mailcow-Server (Quelle) auf einen brandneuen, leeren Server (Ziel) zu migrieren. Sie kümmert sich nicht um die Erhaltung bestehender Daten auf dem Zielserver und löscht alles innerhalb von `/var/lib/docker/volumes` und somit alle Docker-Volumes, die Sie bereits eingerichtet haben. !!! tip Alternativ können Sie das Skript `./helper-scripts/backup_and_restore.sh` verwenden, um ein vollständiges Backup auf der Quellmaschine zu erstellen, dann installieren Sie mailcow auf der Zielmaschine wie gewohnt, kopieren Sie Ihre `mailcow.conf` und verwenden Sie das gleiche Skript, um Ihr Backup auf der Zielmaschine wiederherzustellen. diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-expunge.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-expunge.de.md index 26cf59ed4..e76b2e7d0 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-expunge.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-expunge.de.md @@ -103,7 +103,7 @@ Um einen Cronjob zu erstellen, können Sie `crontab -e` ausführen und etwas wie ### über Docker Job Scheduler -Um dies mit einem Docker-Job-Scheduler zu archivieren, verwenden Sie diese docker-compose.override.yml mit Ihrer Mailcow: +Um dies mit einem Docker-Job-Scheduler zu archivieren, verwenden Sie diese docker-compose.override.yml mit Ihrer mailcow: ``` diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.de.md index dfd09f459..d58c2165f 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-idle_interval.de.md @@ -15,7 +15,7 @@ imap_idle_notify_interval = 5 mins 29 Minuten ist der maximale Wert, den der [entsprechende RFC](https://tools.ietf.org/html/rfc2177) erlaubt. -!!! warning +!!! warning "Warnung" Dies ist keine Standardeinstellung in mailcow, da wir nicht wissen, wie diese Einstellung das Verhalten anderer Clients verändert. Seien Sie vorsichtig, wenn Sie dies ändern und ein anderes Verhalten beobachten. ### Dovecot neu laden diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.de.md index 564ce5796..018c416df 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.de.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.de.md @@ -1,11 +1,11 @@ ## Der "neue" Weg -!!! warning +!!! warning "Warnung" Neuere Docker-Versionen scheinen sich über bestehende Volumes zu beschweren. Man kann dies vorübergehend beheben, indem man das bestehende Volume entfernt und mailcow mit der Override-Datei startet. Aber es scheint nach einem Neustart problematisch zu sein (muss bestätigt werden). Ein einfacher, schmutziger, aber stabiler Workaround ist es, mailcow zu stoppen, `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data` zu entfernen und einen neuen Link zu Ihrem entfernten Dateisystem zu erstellen, zum Beispiel: -``` +```bash mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup ln -s /mnt/volume-xy/vmail_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data ``` @@ -18,7 +18,7 @@ Starten Sie anschließend mailcow. Wenn man einen anderen Ordner für das vmail-Volume verwenden möchte, kann man eine `docker-compose.override.yml` Datei erstellen und den folgenden Inhalt hinzufügen: -``` +```yaml version: '2.1' volumes: vmail-vol-1: @@ -51,8 +51,30 @@ volumes: ``` - Kopieren Sie den Inhalt des `Mountpoint`-Ordners an den neuen Speicherort (z.B. `/data/mailcow/vmail`) mit `cp -a`, `rsync -a` oder einem ähnlichen, nicht strikten Kopierbefehl -- Stoppen Sie mailcow durch Ausführen von `docker compose down` aus Ihrem mailcow-Stammverzeichnis (z.B. `/opt/mailcow-dockerized`) +- Stoppen Sie mailcow durch Ausführen des kommenden Befehls aus Ihrem mailcow-Stammverzeichnis (z.B. `/opt/mailcow-dockerized`): +=== "docker compose (Plugin)" + + ``` bash + docker compose down + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + ``` - Erstellen Sie die Datei `docker-compose.override.yml`, bearbeiten Sie den Gerätepfad entsprechend - Löschen Sie den aktuellen vmail-Ordner: `docker volume rm mailcowdockerized_vmail-vol-1` -- Starten Sie mailcow durch Ausführen von `docker compose up -d` aus Ihrem mailcow-Stammverzeichnis (z.B. `/opt/mailcow-dockerized`) +- Starten Sie mailcow durch Ausführen des folgenden Befehls aus Ihrem mailcow-Stammverzeichnis (z.B. `/opt/mailcow-dockerized`): +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.en.md index 87c5718ce..b5b22b9c2 100644 --- a/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.en.md +++ b/docs/manual-guides/Dovecot/u_e-dovecot-vmail-volume.en.md @@ -51,7 +51,29 @@ volumes: ``` - Copy the content of the `Mountpoint` folder to the new location (e.g. `/data/mailcow/vmail`) using `cp -a`, `rsync -a` or a similar non strcuture breaking copy command -- Stop mailcow by executing `docker compose down` from within your mailcow root folder (e.g. `/opt/mailcow-dockerized`) +- Stop mailcow by executing the following command from within your mailcow root folder (e.g. `/opt/mailcow-dockerized`): +=== "docker compose (Plugin)" + + ``` bash + docker compose down + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + ``` - Create the file `docker-compose.override.yml`, edit the device path accordingly - Delete the current vmail folder: `docker volume rm mailcowdockerized_vmail-vol-1` -- Start mailcow by executing `docker compose up -d` from within your mailcow root folder (e.g. `/opt/mailcow-dockerized`) \ No newline at end of file +- Start mailcow by executing the following command from within your mailcow root folder (e.g. `/opt/mailcow-dockerized`): +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` \ No newline at end of file diff --git a/docs/manual-guides/Postfix/u_e-postfix-pflogsumm.de.md b/docs/manual-guides/Postfix/u_e-postfix-pflogsumm.de.md index 2fe691a39..936dbd44c 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-pflogsumm.de.md +++ b/docs/manual-guides/Postfix/u_e-postfix-pflogsumm.de.md @@ -15,6 +15,7 @@ SHELL=/bin/bash Um zu funktionieren muss ein lokaler Postfix auf dem Server installiert werden, welcher an den Postfix der mailcow relayed. -Genauere Informationen lassen sich unter Sektion [Post-Installationsaufgaben -> Lokaler MTA auf Dockerhost](https://mailcow.github.io/mailcow-dockerized-docs/de/post_installation/firststeps-local_mta/) finden. +!!! question "Frage" + Genauere Informationen lassen sich unter Sektion [Post-Installationsaufgaben -> Lokaler MTA auf Dockerhost](../../post_installation/firststeps-local_mta.de.md) finden. Basierend auf den Postfix-Logs der letzten 24 Stunden sendet dieses Beispiel dann jeden Tag um 23:59:00 Uhr einen pflogsumm-Bericht an postmaster@example.net. diff --git a/docs/manual-guides/Postfix/u_e-postfix-pflogsumm.en.md b/docs/manual-guides/Postfix/u_e-postfix-pflogsumm.en.md index a468db228..57edffc82 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-pflogsumm.en.md +++ b/docs/manual-guides/Postfix/u_e-postfix-pflogsumm.en.md @@ -15,6 +15,7 @@ SHELL=/bin/bash To work, a local postfix must be installed on the server, which relays to the mailcow postfix. -More detailed information can be found in section [Post installation tasks -> Local MTA on Dockerhost](https://mailcow.github.io/mailcow-dockerized-docs/post_installation/firststeps-local_mta/). +!!! question + More detailed information can be found in section [Post installation tasks -> Local MTA on Dockerhost](../../post_installation/firststeps-local_mta.en.md). Based on the postfix logs of the last 24 hours, this example then sends a pflogsumm report to postmaster@example.net every day at 23:59:00. diff --git a/docs/manual-guides/Postfix/u_e-postfix-postscreen_whitelist.de.md b/docs/manual-guides/Postfix/u_e-postfix-postscreen_whitelist.de.md index ec44b7160..2964ebcd4 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-postscreen_whitelist.de.md +++ b/docs/manual-guides/Postfix/u_e-postfix-postscreen_whitelist.de.md @@ -1,6 +1,6 @@ IPs können in der Datei `data/conf/postfix/custom_postscreen_whitelist.cidr` aus dem Postscreen und damit _auch_ aus den RBL-Prüfungen entfernt werden. -Postscreen führt mehrere Prüfungen durch, um bösartige Absender zu identifizieren. In den meisten Fällen möchten Sie eine IP-Adresse auf die Whitelist setzen, um sie von der Suche nach einer schwarzen Liste auszuschließen. +Postscreen führt mehrere Prüfungen durch, um bösartige Absender zu identifizieren. In den meisten Fällen möchten Sie eine IP-Adresse auf die Whitelist setzen, um sie von der Suche nach einer Blacklist auszuschließen. Das Format der Datei ist wie folgt @@ -12,7 +12,7 @@ Beispiel: ``` # Regeln werden in der angegebenen Reihenfolge ausgewertet. -# Schwarze Liste 192.168.* außer 192.168.0.1. +# Blacklist 192.168.* außer 192.168.0.1. 192.168.0.1 permit 192.168.0.0/16 reject ``` diff --git a/docs/manual-guides/Postfix/u_e-postfix-trust_networks.de.md b/docs/manual-guides/Postfix/u_e-postfix-trust_networks.de.md index 4e7fcf4fe..af676a9ec 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-trust_networks.de.md +++ b/docs/manual-guides/Postfix/u_e-postfix-trust_networks.de.md @@ -6,7 +6,7 @@ Wenn Sie sich entscheiden, `mynetworks` zu setzen, ignoriert Postfix die mynetwo ## Unauthentifiziertes Relaying -!!! warning +!!! warning "Warnung" Eine falsche Einstellung von `mynetworks` erlaubt es Ihrem Server, als offenes Relay verwendet zu werden. Wenn dies missbraucht wird, **beeinträchtigt** dies Ihre Fähigkeit, E-Mails zu versenden, und es kann einige Zeit dauern, bis dies behoben ist. ### IPv4-Hosts/Subnetze @@ -19,7 +19,19 @@ Bearbeiten Sie `data/conf/postfix/extra.cf`: mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 192.168.2.0/24 ``` -Führen Sie `docker compose restart postfix-mailcow` aus, um Ihre neuen Einstellungen zu übernehmen. +Führen Sie folgenden Befehl aus aus, um Ihre neuen Einstellungen zu übernehmen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart postfix-mailcow + ``` ### IPv6-Hosts/Subnets @@ -33,7 +45,19 @@ Bearbeiten Sie `data/conf/postfix/extra.cf`: mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 [2001:db8::]/32 ``` -Führen Sie `docker compose restart postfix-mailcow` aus, um Ihre neuen Einstellungen zu übernehmen. +Führen Sie folgenden Befehl aus, um Ihre neuen Einstellungen zu übernehmen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart postfix-mailcow + ``` !!! Info Weitere Informationen über mynetworks finden Sie in der [Postfix-Dokumentation](http://www.postfix.org/postconf.5.html#mynetworks). diff --git a/docs/manual-guides/Postfix/u_e-postfix-trust_networks.en.md b/docs/manual-guides/Postfix/u_e-postfix-trust_networks.en.md index b28c20941..e6ee17075 100644 --- a/docs/manual-guides/Postfix/u_e-postfix-trust_networks.en.md +++ b/docs/manual-guides/Postfix/u_e-postfix-trust_networks.en.md @@ -19,7 +19,19 @@ Edit `data/conf/postfix/extra.cf`: mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 192.168.2.0/24 ``` -Run `docker compose restart postfix-mailcow` to apply your new settings. +Run the following command to apply your new settings: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart postfix-mailcow + ``` ### IPv6 hosts/subnets @@ -33,7 +45,19 @@ Edit `data/conf/postfix/extra.cf`: mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 [2001:db8::]/32 ``` -Run `docker compose restart postfix-mailcow` to apply your new settings. +Run the following command to apply your new settings: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart postfix-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart postfix-mailcow + ``` !!! Info More information about mynetworks can be found in the [Postfix documentation](http://www.postfix.org/postconf.5.html#mynetworks). \ No newline at end of file diff --git a/docs/manual-guides/SOGo/u_e-sogo.de.md b/docs/manual-guides/SOGo/u_e-sogo.de.md index 31e6f2c4a..ca7e38fef 100644 --- a/docs/manual-guides/SOGo/u_e-sogo.de.md +++ b/docs/manual-guides/SOGo/u_e-sogo.de.md @@ -1,4 +1,4 @@ -SOGo wird verwendet, um über einen Webbrowser auf Ihre Mails zuzugreifen und Ihre Kontakte oder Kalender hinzuzufügen und zu teilen. Für eine ausführlichere Dokumentation zu SOGo besuchen Sie bitte die [eigene Dokumentation] (http://wiki.sogo.nu/). +SOGo wird verwendet, um über einen Webbrowser auf Ihre Mails zuzugreifen und Ihre Kontakte oder Kalender hinzuzufügen und zu teilen. Für eine ausführlichere Dokumentation zu SOGo besuchen Sie bitte die [Dokumentation von SOGo](http://wiki.sogo.nu/). ## Benutzerdefiniertes SOGo-Thema (CSS) anwenden mailcow-Builds nach dem 28. Januar 2021 können das CSS-Thema von SOGo ändern, indem sie `data/conf/sogo/custom-theme.js` bearbeiten. @@ -7,12 +7,29 @@ Bitte schauen Sie sich die AngularJS Material [intro](https://material.angularjs Sie können die mitgelieferte `custom-theme.js` als Beispiel verwenden, indem Sie die Kommentare entfernen. Nachdem Sie `data/conf/sogo/custom-theme.js` modifiziert und Änderungen an Ihrem neuen SOGo-Theme vorgenommen haben, müssen Sie -1. Bearbeiten Sie `data/conf/sogo/sogo.conf` und fügen Sie `SOGoUIxDebugEnabled = YES;` ein. -2. SOGo und Memcached Container neu starten, indem man `docker compose restart memcached-mailcow sogo-mailcow` ausführt. -3. SOGo im Browser öffnen -4. öffnen Sie die Entwicklerkonsole des Browsers, normalerweise ist die Tastenkombination F12 -5. nur wenn Sie Firefox benutzen: schreiben Sie mit der Hand in die Entwicklerkonsole `allow pasting` und drücken Sie Enter -6. fügen Sie den Java-Script-Schnipsel in die Entwicklungskonsole ein: +1\. Bearbeiten Sie `data/conf/sogo/sogo.conf` und fügen Sie `SOGoUIxDebugEnabled = YES;` ein. + +2\. SOGo und Memcached Container neu starten, indem man folgenden Befehl ausführt: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow sogo-mailcow + ``` + +3\. SOGo im Browser öffnen + +4\. öffnen Sie die Entwicklerkonsole des Browsers, normalerweise ist die Tastenkombination F12 + +5\. nur wenn Sie Firefox benutzen: schreiben Sie mit der Hand in die Entwicklerkonsole `allow pasting` und drücken Sie Enter + +6\. fügen Sie den Java-Script-Schnipsel in die Entwicklungskonsole ein: ``` copy([].slice.call(document.styleSheets) .map(e => e.ownerNode) @@ -21,10 +38,13 @@ copy([].slice.call(document.styleSheets) .join('\n') ) ``` -7. Öffnen Sie den Texteditor und fügen Sie die Daten aus der Zwischenablage ein (Strg+V), Sie sollten ein minimiertes CSS erhalten, speichern Sie es -8. kopieren Sie die CSS-Datei auf den Mailcow-Server `data/conf/sogo/custom-theme.css` -9. editiere `data/conf/sogo/sogo.conf` und setze `SOGoUIxDebugEnabled = NO;` -10. Anhängen/Erstellen von `docker-compose.override.yml` mit: +7\. Öffnen Sie den Texteditor und fügen Sie die Daten aus der Zwischenablage ein (Strg+V), Sie sollten ein minimiertes CSS erhalten, speichern Sie es + +8\. kopieren Sie die CSS-Datei auf den mailcow-Server `data/conf/sogo/custom-theme.css` + +9\. editiere `data/conf/sogo/sogo.conf` und setze `SOGoUIxDebugEnabled = NO;` + +10\. Anhängen/Erstellen von `docker-compose.override.yml` mit: ``` Version: '2.1' @@ -33,8 +53,30 @@ Dienste: volumes: - ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z ``` -11. führen Sie `docker compose up -d` aus -12. Ausführen von `docker compose restart memcached-mailcow` +11\. Führen Sie folgenden Befehl aus: +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` +12\. Neustarten des memcached Containers mit: +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow + ``` ## Zurücksetzen auf das SOGo Standardthema 1. checken Sie `data/conf/sogo/custom-theme.js` aus, indem Sie `git fetch ; git checkout origin/master data/conf/sogo/custom-theme.js data/conf/sogo/custom-theme.js` ausführen @@ -64,18 +106,65 @@ und ersetzen Sie es durch: ``` - ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z ``` -4. führen Sie `docker compose up -d` aus -5. Starten Sie `docker compose restart memcached-mailcow`. +4. Führen Sie folgenden Befehl aus: +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` +5. Starten Sie memcached neu mit: +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow + ``` ## Favicon ändern mailcow-Builds nach dem 31. Januar 2021 können SOGo's Favicon ändern, indem sie `data/conf/sogo/custom-favicon.ico` für SOGo und `data/web/favicon.png` für mailcow UI ersetzen. + **Anmerkung**: Sie können `.png` Favicons für SOGo verwenden, indem Sie sie in `custom-favicon.ico` umbenennen. Für beide, SOGo und mailcow UI Favicons, müssen Sie eine der Standardgrößen verwenden: 16x16, 32x32, 64x64, 128x128 und 256x256. -Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie `docker compose restart memcached-mailcow sogo-mailcow` ausführen. +Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie folgenden Befehl ausführen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow sogo-mailcow + ``` ## Logo ändern -Mailcow-Builds nach dem 21. Dezember 2018 können das SOGo-Logo ändern, indem sie die Datei `data/conf/sogo/sogo-full.svg` ersetzen oder erstellen (falls sie fehlt). -Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie `docker compose restart memcached-mailcow sogo-mailcow` ausführen. +mailcow-Builds nach dem 21. Dezember 2018 können das SOGo-Logo ändern, indem sie die Datei `data/conf/sogo/sogo-full.svg` ersetzen oder erstellen (falls sie fehlt). +Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie folgendes ausführen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow sogo-mailcow + ``` ## Domains verbinden (untereinander sichtbar machen) Domains sind normalerweise voneinander isoliert. @@ -97,15 +186,51 @@ Suche... ); ``` -SOGo neu starten: `docker compose restart sogo-mailcow` +SOGo neu starten: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart sogo-mailcow + ``` ## Deaktivieren Sie die Passwortänderung Bearbeiten Sie `data/conf/sogo/sogo.conf` und **ändern** Sie `SOGoPasswordChangeEnabled` auf `NO`. Bitte fügen Sie keinen neuen Parameter hinzu. -Führen Sie `docker compose restart memcached-mailcow sogo-mailcow` aus, um die Änderungen zu aktivieren. +Führen Sie folgenden Befehl aus, um die Änderungen zu aktivieren: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow sogo-mailcow + ``` ## TOTP zurücksetzen / TOTP deaktivieren -Führen Sie `docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}'` aus dem mailcow Verzeichnis aus. +Führen Sie folgenden Befehl aus dem mailcow Verzeichnis aus: + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}' + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}' + ``` diff --git a/docs/manual-guides/SOGo/u_e-sogo.en.md b/docs/manual-guides/SOGo/u_e-sogo.en.md index fc3e9650f..50f86159d 100644 --- a/docs/manual-guides/SOGo/u_e-sogo.en.md +++ b/docs/manual-guides/SOGo/u_e-sogo.en.md @@ -7,12 +7,28 @@ Please check the AngularJS Material [intro](https://material.angularjs.org/lates You can use the provided `custom-theme.js` as an example starting point by removing the comments. After you modified `data/conf/sogo/custom-theme.js` and made changes to your new SOGo theme you need to -1. edit `data/conf/sogo/sogo.conf` and append/set `SOGoUIxDebugEnabled = YES;` -2. restart SOGo and Memcached containers by executing `docker compose restart memcached-mailcow sogo-mailcow`. -3. open SOGo in browser -4. open browser developer console, usually shortcut is F12 -5. only if you use Firefox: write by hands in dev console `allow pasting` and press enter -6. paste java script snipet in dev console: +1\. edit `data/conf/sogo/sogo.conf` and append/set `SOGoUIxDebugEnabled = YES;` + +2\. restart SOGo and Memcached containers by executing the command: +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow sogo-mailcow + ``` + +3\. open SOGo in browser + +4\. open browser developer console, usually shortcut is F12 + +5\. only if you use Firefox: write by hands in dev console `allow pasting` and press enter + +6\. paste java script snipet in dev console: ``` copy([].slice.call(document.styleSheets) .map(e => e.ownerNode) @@ -21,10 +37,14 @@ copy([].slice.call(document.styleSheets) .join('\n') ) ``` -7. open text editor and paste data from clipboard (Ctrl+V), you should get minified CSS, save it -8. copy CSS file to mailcow server `data/conf/sogo/custom-theme.css` -9. edit `data/conf/sogo/sogo.conf` and set `SOGoUIxDebugEnabled = NO;` -10. append/create `docker-compose.override.yml` with: + +7\. open text editor and paste data from clipboard (Ctrl+V), you should get minified CSS, save it + +8\. copy CSS file to mailcow server `data/conf/sogo/custom-theme.css` + +9\. edit `data/conf/sogo/sogo.conf` and set `SOGoUIxDebugEnabled = NO;` + +10\. append/create `docker-compose.override.yml` with: ``` version: '2.1' @@ -33,12 +53,37 @@ services: volumes: - ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z ``` -11. run `docker compose up -d` -12. run `docker compose restart memcached-mailcow` + +11\. Run: +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +12\. Run: +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow + ``` ## Reset to SOGo default theme -1. checkout `data/conf/sogo/custom-theme.js` by executing `git fetch ; git checkout origin/master data/conf/sogo/custom-theme.js data/conf/sogo/custom-theme.js` -2. find in `data/conf/sogo/custom-theme.js`: +1\. checkout `data/conf/sogo/custom-theme.js` by executing `git fetch ; git checkout origin/master data/conf/sogo/custom-theme.js data/conf/sogo/custom-theme.js` + +2\. find in `data/conf/sogo/custom-theme.js`: ``` // Apply new palettes to the default theme, remap some of the hues $mdThemingProvider.theme('default') @@ -60,22 +105,71 @@ and replace it with: ``` $mdThemingProvider.theme('default'); ``` -3. remove from `docker-compose.override.yml` volume mount in `sogo-mailcow`: + +3\. remove from `docker-compose.override.yml` volume mount in `sogo-mailcow`: ``` - ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z ``` -4. run `docker compose up -d` -5. run `docker compose restart memcached-mailcow` + +4\. Run: +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +5\. Run: +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow + ``` ## Change favicon mailcow builds after 31 January 2021 can change SOGo's favicon by replacing `data/conf/sogo/custom-favicon.ico` for SOGo and `data/web/favicon.png` for mailcow UI. **Note**: You can use `.png` favicons for SOGo by renaming them to `custom-favicon.ico`. For both SOGo and mailcow UI favicons you need use one of the standard dimensions: 16x16, 32x32, 64x64, 128x128 and 256x256. -After you replaced said file you need to restart SOGo and Memcached containers by executing `docker compose restart memcached-mailcow sogo-mailcow`. +After you replaced said file you need to restart SOGo and Memcached containers by executing: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow sogo-mailcow + ``` ## Change logo mailcow builds after 21 December 2018 can change SOGo's logo by replacing or creating (if missing) `data/conf/sogo/sogo-full.svg`. -After you replaced said file you need to restart SOGo and Memcached containers by executing `docker compose restart memcached-mailcow sogo-mailcow`. +After you replaced said file you need to restart SOGo and Memcached containers by executing: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow sogo-mailcow + ``` ## Connect domains Domains are usually isolated from eachother. @@ -97,14 +191,50 @@ Search... ); ``` -Restart SOGo: `docker compose restart sogo-mailcow` +Restart SOGo: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart sogo-mailcow + ``` ## Disable password changing Edit `data/conf/sogo/sogo.conf` and **change** `SOGoPasswordChangeEnabled` to `NO`. Please do not add a new parameter. -Run `docker compose restart memcached-mailcow sogo-mailcow` to activate the changes. +Run this command to activate the changes: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart memcached-mailcow sogo-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart memcached-mailcow sogo-mailcow + ``` ## Reset TOTP / Disable TOTP -Run `docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}'` from within the mailcow directory. +Run the following command from within the mailcow directory: + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}' + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}' + ``` diff --git a/docs/manual-guides/Watchdog/u_e-watchdog-thresholds.de.md b/docs/manual-guides/Watchdog/u_e-watchdog-thresholds.de.md index 2570edfcd..44b24c36e 100644 --- a/docs/manual-guides/Watchdog/u_e-watchdog-thresholds.de.md +++ b/docs/manual-guides/Watchdog/u_e-watchdog-thresholds.de.md @@ -23,7 +23,19 @@ Beispiel: - MAILQ_CRIT=${MAILQ_CRIT:-30} ``` -Um sie anzupassen, fügen Sie einfach die notwendigen Threshold Variablen (z.B. `MAILQ_THRESHOLD=10`) zu `mailcow.conf` hinzu und führen `docker compose up -d` aus. +Um sie anzupassen, fügen Sie einfach die notwendigen Threshold Variablen (z.B. `MAILQ_THRESHOLD=10`) zu `mailcow.conf` hinzu und führen Sie den folgenden Befehl aus: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Threshold Beschreibungen diff --git a/docs/manual-guides/Watchdog/u_e-watchdog-thresholds.en.md b/docs/manual-guides/Watchdog/u_e-watchdog-thresholds.en.md index 104c8330c..115a7888b 100644 --- a/docs/manual-guides/Watchdog/u_e-watchdog-thresholds.en.md +++ b/docs/manual-guides/Watchdog/u_e-watchdog-thresholds.en.md @@ -23,7 +23,19 @@ Example: - MAILQ_CRIT=${MAILQ_CRIT:-30} ``` -To adjust them just add necessary threshold variables (e.g. `MAILQ_THRESHOLD=10`) to `mailcow.conf` and run `docker compose up -d`. +To adjust them just add necessary threshold variables (e.g. `MAILQ_THRESHOLD=10`) to `mailcow.conf` and run the following command: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Thresholds descriptions diff --git a/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-fido.de.md b/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-fido.de.md index 9f623b8fd..8ee6c8a73 100644 --- a/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-fido.de.md +++ b/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-fido.de.md @@ -6,7 +6,7 @@ Das UV-Flag (wie in "user verification") erzwingt, dass WebAuthn den Benutzer ve mailcow verwendet **Client-seitige Schlüsselverarbeitung**. Wir bitten den Authentifikator (d.h. YubiKey), die Registrierung in seinem Speicher zu speichern. -Ein Benutzer muss keinen Benutzernamen eingeben. Die verfügbaren Anmeldedaten - falls vorhanden - werden dem Nutzer angezeigt, wenn er den "Schlüssel-Login" über das Mailcow UI Login auswählt. +Ein Benutzer muss keinen Benutzernamen eingeben. Die verfügbaren Anmeldedaten - falls vorhanden - werden dem Nutzer angezeigt, wenn er den "Schlüssel-Login" über das mailcow UI Login auswählt. Beim Aufruf des Login-Prozesses werden dem Authentifikator keine Credential-IDs übergeben. Dies wird ihn dazu zwingen, die Anmeldeinformationen in seinem eigenen Speicher zu suchen. diff --git a/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter.de.md b/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter.de.md index d73096e0a..bddd835d6 100644 --- a/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter.de.md +++ b/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter.de.md @@ -1,4 +1,4 @@ -Ein Mailbox-Nutzer kann den Spam-Filter und die Black-/Whitelist-Einstellungen für seine Mailbox individuell anpassen, indem er zum Reiter **Spam-Filter** in der Mailcow-Benutzeroberfläche navigiert. +Ein Mailbox-Nutzer kann den Spam-Filter und die Black-/Whitelist-Einstellungen für seine Mailbox individuell anpassen, indem er zum Reiter **Spam-Filter** in der mailcow-Benutzeroberfläche navigiert. ![Wo man die Spam-, Black- und Whitelist-Einstellungen des Benutzers anpasst](../../assets/images/manual-guides/mailcow-spamfilter.png) diff --git a/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa.de.md b/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa.de.md index 7095ecdee..e496f4fd3 100644 --- a/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa.de.md +++ b/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa.de.md @@ -40,7 +40,7 @@ Herzlichen Glückwunsch! Sie können sich nun mit Ihrem YubiKey in die mailcow U --- ## WebAuthn (U2F, Ersatz) -!!! warning +!!! warning "Warnung" **Seit Februar 2022 hat Google Chrome die Unterstützung für U2F aufgegeben und die Verwendung von WebAuthn standardisiert.
** *Die WebAuthn API (der Ersatz für U2F) ist seit dem 21. Januar 2022 Teil von mailcow, wenn Sie also den Key über Februar 2022 hinaus nutzen wollen, sollten Sie ein Update mit der `update.sh`* in Betracht ziehen. @@ -64,7 +64,7 @@ Quellen: [caniuse.com](https://caniuse.com/webauthn), [blog.mozilla.org](https:/ WebAuthn funktioniert auch ohne Internetverbindung. ### Was passiert mit meinem registrierten Fido Security Key nach dem Update von U2F auf WebAuthn? -!!! warning +!!! warning "Warnung" Mit dem neuen U2F-Ersatz (WebAuthn) müssen Sie Ihren Fido Security Key neu registrieren, zum Glück ist WebAuthn abwärtskompatibel und unterstützt das U2F-Protokoll. Im Idealfall sollten Sie beim nächsten Einloggen (mit dem Schlüssel) ein Textfeld erhalten, das besagt, dass Ihr Fido Security Key aufgrund des Updates auf WebAuthn entfernt und als 2-Faktor-Authentifikator gelöscht wurde. @@ -76,28 +76,41 @@ Mit WebAuthn gibt es die Möglichkeit, nur offizielle Fido Security Keys zu verw Dies dient in erster Linie der Sicherheit, da es Administratoren ermöglicht, sicherzustellen, dass nur offizielle Hardware in ihrer Umgebung verwendet werden kann. -Um diese Funktion zu aktivieren, ändern Sie den Wert `WEBAUTHN_ONLY_TRUSTED_VENDORS` in mailcow.conf von `n` auf `y` und starten Sie die betroffenen Container mit `docker compose up -d` neu. +Um diese Funktion zu aktivieren, ändern Sie den Wert `WEBAUTHN_ONLY_TRUSTED_VENDORS` in mailcow.conf von `n` auf `y` und starten Sie die betroffenen Container mit dem folgenden Befehl neu: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` Die mailcow wird nun die Vendor-Zertifikate verwenden, die sich in Ihrem mailcow-Verzeichnis unter `data/web/inc/lib/WebAuthn/rootCertificates` befinden. -##### Beispiel: -Wenn Sie die offiziellen Hersteller-Geräte nur auf Apple beschränken wollen, brauchen Sie nur das Apple Hersteller-Zertifikat im `data/web/inc/lib/WebAuthn/rootCertificates`. -Nachdem Sie alle anderen Zertifikate gelöscht haben, können Sie WebAuthn 2FA nur noch mit Apple-Geräten aktivieren. +!!! abstract "Beispiel" + Wenn Sie die offiziellen Hersteller-Geräte nur auf Apple beschränken wollen, brauchen Sie nur das Apple Hersteller-Zertifikat im `data/web/inc/lib/WebAuthn/rootCertificates`. + Nachdem Sie alle anderen Zertifikate gelöscht haben, können Sie WebAuthn 2FA nur noch mit Apple-Geräten aktivieren. -Das ist für jeden Hersteller gleich, also wählen Sie aus, was Ihnen gefällt (wenn Sie es wollen). + Das ist für jeden Hersteller gleich, also wählen Sie aus, was Ihnen gefällt (wenn Sie wollen). -#### Eigene Zertifikate für WebAuthn verwenden -Wenn du ein gültiges Zertifikat vom Hersteller deines Schlüssels hast, kannst du es auch zu deiner Mailcow hinzufügen! +### Eigene Zertifikate für WebAuthn verwenden +Wenn Sie ein gültiges Zertifikat vom Hersteller eines Schlüssels haben, können Sie es auch zu ihrer mailcow hinzufügen! -Kopieren Sie einfach das Zertifikat in den `data/web/inc/lib/WebAuthn/rootCertificates` Ordner und starten Sie Ihre Mailcow neu. +Kopieren Sie einfach das Zertifikat in den `data/web/inc/lib/WebAuthn/rootCertificates` Ordner und starten Sie Ihre mailcow neu. Nun sollten Sie in der Lage sein, auch dieses Gerät zu registrieren, obwohl die Überprüfung für die Herstellerzertifikate aktiviert ist, da Sie das Zertifikat manuell hinzugefügt haben. -#### Ist es gefährlich, den Vendor Check deaktiviert zu lassen? +### Ist es gefährlich, den Vendor Check deaktiviert zu lassen? Nein, das ist es nicht! Diese Herstellerzertifikate werden nur zur Überprüfung der Originalhardware verwendet, nicht zur Absicherung des Registrierungsprozesses. Wie Sie in diesen Artikeln lesen können, hat die Deaktivierung nichts mit der Software-Sicherheit zu tun: + - [https://developers.yubico.com/U2F/Attestation_and_Metadata/](https://developers.yubico.com/U2F/Attestation_and_Metadata/) - [https://medium.com/webauthnworks/webauthn-fido2-demystifying-attestation-and-mds-efc3b3cb3651](https://medium.com/webauthnworks/webauthn-fido2-demystifying-attestation-and-mds-efc3b3cb3651) - [https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01](https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01) diff --git a/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa.en.md b/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa.en.md index 4a42ce0b9..bb22a5c1e 100644 --- a/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa.en.md +++ b/docs/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa.en.md @@ -78,28 +78,41 @@ With WebAuthn there is the possibility to use only official Fido Security Keys ( This is primarily for security purposes, as it allows administrators to ensure that only official hardware can be used in their environment. -To enable this feature, change the value `WEBAUTHN_ONLY_TRUSTED_VENDORS` in mailcow.conf from `n` to `y` and restart the affected containers with `docker compose up -d`. +To enable this feature, change the value `WEBAUTHN_ONLY_TRUSTED_VENDORS` in mailcow.conf from `n` to `y` and restart the affected containers with the following command: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` The mailcow will now use the Vendor Certificates located in your mailcow directory under `data/web/inc/lib/WebAuthn/rootCertificates`. -##### Example: -If you want to limit the official Vendor devices to Apple only you only need the Apple Vendor Certificate inside the `data/web/inc/lib/WebAuthn/rootCertificates`. -After you deleted all other certs you now only can activate WebAuthn 2FA with Apple devices. +!!! abstract "Example" + If you want to limit the official Vendor devices to Apple only you only need the Apple Vendor Certificate inside the `data/web/inc/lib/WebAuthn/rootCertificates`. + After you deleted all other certs you now only can activate WebAuthn 2FA with Apple devices. -That´s for every vendor the same, so choose what you like (if you want to). + Every vendor (listed there) behaves the same, so choose what you like (if you want to). -#### Use own certificates for WebAuthn +### Use own certificates for WebAuthn If you have a valid certificate from the vendor of your key you can also add it to your mailcow! Just copy the certificate into the `data/web/inc/lib/WebAuthn/rootCertificates` folder and restart your mailcow. Now you should be able to register this device as well, even though the verification for the vendor certificates is enabled, since you just added the certificate manually. -#### Is it dangerous to keep the Vendor Check disabled? +### Is it dangerous to keep the Vendor Check disabled? No, it isn´t! These vendor certificates are only used to verify original hardware, not to secure the registration process. As you can read in these articles, the deactivation is not software security related: + - [https://developers.yubico.com/U2F/Attestation_and_Metadata/](https://developers.yubico.com/U2F/Attestation_and_Metadata/) - [https://medium.com/webauthnworks/webauthn-fido2-demystifying-attestation-and-mds-efc3b3cb3651](https://medium.com/webauthnworks/webauthn-fido2-demystifying-attestation-and-mds-efc3b3cb3651) - [https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01](https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01) diff --git a/docs/manual-guides/u_e-80_to_443.de.md b/docs/manual-guides/u_e-80_to_443.de.md index 23be5a024..174a64b0b 100644 --- a/docs/manual-guides/u_e-80_to_443.de.md +++ b/docs/manual-guides/u_e-80_to_443.de.md @@ -25,12 +25,28 @@ server { Falls Sie den Parameter HTTP_BIND geändert haben, erstellen Sie den Container neu: -``` -docker compose up -d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker compose up -d + ``` Andernfalls starten Sie Nginx neu: -``` -docker compose restart nginx-mailcow -``` \ No newline at end of file +=== "docker compose (Plugin)" + + ``` bash + docker compose restart + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker compose restart + ``` \ No newline at end of file diff --git a/docs/manual-guides/u_e-80_to_443.en.md b/docs/manual-guides/u_e-80_to_443.en.md index eaaba3e8a..fb9c197a7 100644 --- a/docs/manual-guides/u_e-80_to_443.en.md +++ b/docs/manual-guides/u_e-80_to_443.en.md @@ -25,12 +25,28 @@ server { In case you changed the HTTP_BIND parameter, recreate the container: -``` -docker compose up -d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker compose up -d + ``` Otherwise restart Nginx: -``` -docker compose restart nginx-mailcow -``` \ No newline at end of file +=== "docker compose (Plugin)" + + ``` bash + docker compose restart + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker compose restart + ``` \ No newline at end of file diff --git a/docs/manual-guides/u_e-reeanble-weak-protocols.de.md b/docs/manual-guides/u_e-reeanble-weak-protocols.de.md index a1a7ad12f..827f6af14 100644 --- a/docs/manual-guides/u_e-reeanble-weak-protocols.de.md +++ b/docs/manual-guides/u_e-reeanble-weak-protocols.de.md @@ -19,8 +19,16 @@ ssl_min_protocol = TLSv1 Starten Sie die betroffenen Dienste neu: -``` -docker compose restart postfix-mailcow dovecot-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose restart postfix-mailcow dovecot-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart postfix-mailcow dovecot-mailcow + ``` Tipp: Sie können TLS 1.2 in Windows 7 aktivieren. \ No newline at end of file diff --git a/docs/manual-guides/u_e-reeanble-weak-protocols.en.md b/docs/manual-guides/u_e-reeanble-weak-protocols.en.md index 8254765db..f2077af71 100644 --- a/docs/manual-guides/u_e-reeanble-weak-protocols.en.md +++ b/docs/manual-guides/u_e-reeanble-weak-protocols.en.md @@ -19,8 +19,16 @@ ssl_min_protocol = TLSv1 Restart the affected services: -``` -docker compose restart postfix-mailcow dovecot-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose restart postfix-mailcow dovecot-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart postfix-mailcow dovecot-mailcow + ``` Hint: You can enable TLS 1.2 in Windows 7. \ No newline at end of file diff --git a/docs/manual-guides/u_e-update-hooks.de.md b/docs/manual-guides/u_e-update-hooks.de.md index cb0461e37..f4704ac72 100644 --- a/docs/manual-guides/u_e-update-hooks.de.md +++ b/docs/manual-guides/u_e-update-hooks.de.md @@ -1,6 +1,6 @@ Es ist möglich, Pre- und Post-Update-Hooks zum `update.sh` Skript hinzuzufügen, das Ihre gesamte mailcow-Installation aktualisiert. -Um dies zu tun, fügen Sie einfach das entsprechende Bash-Skript in Ihr Mailcow-Root-Verzeichnis ein: +Um dies zu tun, fügen Sie einfach das entsprechende Bash-Skript in Ihr mailcow-Root-Verzeichnis ein: * `pre_update_hook.sh` für Befehle, die vor dem Update laufen sollen * `post_update_hook.sh` für Befehle, die nach dem Update ausgeführt werden sollen diff --git a/docs/post_installation/firststeps-rp.de.md b/docs/post_installation/firststeps-rp.de.md index 44b839aad..34e0dfa06 100644 --- a/docs/post_installation/firststeps-rp.de.md +++ b/docs/post_installation/firststeps-rp.de.md @@ -13,18 +13,30 @@ Dadurch werden auch die Bindungen innerhalb des Nginx-Containers geändert! Dies **WICHTIG:** Verwenden Sie nicht Port 8081, 9081 oder 65510! -Erzeugen Sie die betroffenen Container neu, indem Sie `docker compose up -d` ausführen. +Erzeugen Sie die betroffenen Container neu, indem Sie den folgenden Befehl ausführen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` **Wichtige Informationen, bitte lesen Sie diese sorgfältig durch!** !!! info Wenn Sie planen, einen Reverse-Proxy zu verwenden und einen anderen Servernamen als **MAILCOW_HOSTNAME** verwenden wollen, müssen Sie **Zusätzliche Servernamen für mailcow UI** am Ende dieser Seite hinzufügen. -!!! warning +!!! warning "Warnung" Stellen Sie sicher, dass Sie `generate_config.sh` ausführen, bevor Sie die untenstehenden Konfigurationsbeispiele aktivieren. Das Skript `generate_config.sh` kopiert die Snake-oil Zertifikate an den richtigen Ort, so dass die Dienste nicht aufgrund fehlender Dateien nicht starten können. -!!! warning +!!! warning "Warnung" Wenn Sie TLS SNI aktivieren (`ENABLE_TLS_SNI` in mailcow.conf), **müssen** die Zertifikatspfade in Ihrem Reverse-Proxy mit den korrekten Pfaden in data/assets/ssl/{hostname} übereinstimmen. Die Zertifikate werden in `data/assets/ssl/{hostname1,hostname2,etc}` aufgeteilt und werden daher nicht funktionieren, wenn Sie die Beispiele von unten kopieren, die auf `data/assets/ssl/cert.pem` etc. zeigen. !!! info @@ -180,9 +192,21 @@ backend mailcow In diesem Abschnitt gehen wir davon aus, dass Sie Ihren Traefik 2 `[certificatesresolvers]` in Ihrer Traefik-Konfigurationsdatei richtig konfiguriert haben und auch acme verwenden. Das folgende Beispiel verwendet Lets Encrypt, aber Sie können es gerne auf Ihren eigenen Zertifikatsresolver ändern. Eine grundlegende Traefik 2 toml-Konfigurationsdatei mit allen oben genannten Elementen, die für dieses Beispiel verwendet werden kann, finden Sie hier [traefik.toml](https://github.com/Frenzoid/TraefikBasicConfig/blob/master/traefik.toml), falls Sie eine solche Datei benötigen oder einen Hinweis, wie Sie Ihre Konfiguration anpassen können. Zuallererst werden wir den acme-mailcow-Container deaktivieren, da wir die von traefik bereitgestellten Zertifikate verwenden werden. -Dazu müssen wir `SKIP_LETS_ENCRYPT=y` in unserer `mailcow.conf` setzen und `docker compose up -d` ausführen, um die Änderungen zu übernehmen. +Dazu müssen wir `SKIP_LETS_ENCRYPT=y` in unserer `mailcow.conf` setzen und den folgenden Befehl ausführen, um die Änderungen zu übernehmen: -Dann erstellen wir eine `docker-compose.override.yml` Datei, um die Hauptdatei `docker-compose.yml` zu überschreiben, die sich im Mailcow-Stammverzeichnis befindet. +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +Dann erstellen wir eine `docker-compose.override.yml` Datei, um die Hauptdatei `docker-compose.yml` zu überschreiben, die sich im mailcow-Stammverzeichnis befindet. ```yaml version: '2.1' @@ -223,7 +247,7 @@ services: - /var/run/docker.sock:/var/run/docker.sock:ro restart: always environment: - # Ändern Sie dies nur, wenn Sie eine andere Domain für Mailcows Web-Frontend verwenden als in der Standard-Konfiguration + # Ändern Sie dies nur, wenn Sie eine andere Domain für mailcows Web-Frontend verwenden als in der Standard-Konfiguration - DOMAIN=${MAILCOW_HOSTNAME} networks: @@ -239,13 +263,25 @@ volumes: name: traefik_acme ``` -Starten Sie die neuen Container mit `docker compose up -d`. +Starten Sie die neuen Container mit: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` Da Traefik 2 ein acme v2 Format verwendet, um ALLE Zertifikaten von allen Domains zu speichern, müssen wir einen Weg finden, die Zertifikate auszulagern. Zum Glück haben wir [diesen kleinen Container] (https://hub.docker.com/r/humenius/traefik-certs-dumper), der die Datei `acme.json` über ein Volume und eine Variable `DOMAIN=example. org`, und damit wird der Container die `cert.pem` und `key.pem` Dateien ausgeben, dafür lassen wir einfach den `traefik-certs-dumper` Container laufen, binden das `/traefik` Volume an den Ordner, in dem unsere `acme.json` gespeichert ist, binden das `/output` Volume an unseren mailcow `data/assets/ssl/` Ordner, und setzen die `DOMAIN=example.org` Variable auf die Domain, von der wir die Zertifikate ausgeben wollen. Dieser Container überwacht die Datei `acme.json` auf Änderungen und generiert die Dateien `cert.pem` und `key.pem` direkt in `data/assets/ssl/`, wobei der Pfad mit dem `/output`-Pfad des Containers verbunden ist. -Sie können es über die Kommandozeile ausführen oder das [hier] gezeigte docker compose verwenden (https://hub.docker.com/r/humenius/traefik-certs-dumper). +Sie können es über die Kommandozeile ausführen oder das [hier](https://hub.docker.com/r/humenius/traefik-certs-dumper) gezeigte docker-compose.yml verwenden. Nachdem wir die Zertifikate übertragen haben, müssen wir die Konfigurationen aus unseren Postfix- und Dovecot-Containern neu laden und die Zertifikate überprüfen. Wie das geht, sehen Sie [hier](https://mailcow.github.io/mailcow-dockerized-docs/de/post_installation/firststeps-ssl/#ein-eigenes-zertifikat-verwenden). @@ -339,4 +375,16 @@ Wenn Sie vorhaben, einen Servernamen zu verwenden, der nicht `MAILCOW_HOSTNAME` ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld ``` -Führen Sie `docker compose up -d` zum Anwenden aus. +Führen Sie zum Anwenden folgendes aus: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` diff --git a/docs/post_installation/firststeps-rp.en.md b/docs/post_installation/firststeps-rp.en.md index 8316c6c4d..406890540 100644 --- a/docs/post_installation/firststeps-rp.en.md +++ b/docs/post_installation/firststeps-rp.en.md @@ -13,7 +13,19 @@ This will also change the bindings inside the Nginx container! This is important **IMPORTANT:** Do not use port 8081, 9081 or 65510! -Recreate affected containers by running `docker compose up -d`. +Recreate affected containers by running the command: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` **Important information, please read them carefully!** @@ -182,7 +194,19 @@ For this section we'll assume you have your Traefik 2 `[certificatesresolvers]` So, first of all, we are going to disable the acme-mailcow container since we'll use the certs that traefik will provide us. -For this we'll have to set `SKIP_LETS_ENCRYPT=y` on our `mailcow.conf`, and run `docker compose up -d` to apply the changes. +For this we'll have to set `SKIP_LETS_ENCRYPT=y` on our `mailcow.conf`, and run the following command to apply the changes: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` Then we'll create a `docker-compose.override.yml` file in order to override the main `docker-compose.yml` found in your mailcow root folder. @@ -242,14 +266,26 @@ volumes: name: traefik_acme ``` -Start the new containers with `docker compose up -d`. +Start the new containers with: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` Now, there's only one thing left to do, which is setup the certs so that the mail services can use them as well, since Traefik 2 uses an acme v2 format to save ALL the license from all the domains we have, we'll need to find a way to dump the certs, lucky we have [this tiny container](https://hub.docker.com/r/humenius/traefik-certs-dumper) which grabs the `acme.json` file trough a volume, and a variable `DOMAIN=example.org`, and with these, the container will output the `cert.pem` and `key.pem` files, for this we'll simply run the `traefik-certs-dumper` container binding the `/traefik` volume to the folder where our `acme.json` is saved, bind the `/output` volume to our mailcow `data/assets/ssl/` folder, and set up the `DOMAIN=example.org` variable to the domain we want the certs dumped from. This container will watch over the `acme.json` file for any changes, and regenerate the `cert.pem` and `key.pem` files directly into `data/assets/ssl/` being the path binded to the container's `/output` path. -You can use the command line to run it, or use the docker compose shown [here](https://hub.docker.com/r/humenius/traefik-certs-dumper). +You can use the command line to run it, or use the docker-compose.yml shown [here](https://hub.docker.com/r/humenius/traefik-certs-dumper). After we have the certs dumped, we'll have to reload the configs from our postfix and dovecot containers, and check the certs, you can see how [here](https://mailcow.github.io/mailcow-dockerized-docs/firststeps-ssl/#how-to-use-your-own-certificate). @@ -342,4 +378,16 @@ If you plan to use a server name that is not `MAILCOW_HOSTNAME` in your reverse ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld ``` -Run `docker compose up -d` to apply. +Run the following command to apply: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` diff --git a/docs/post_installation/firststeps-snat.de.md b/docs/post_installation/firststeps-snat.de.md index a5bc49636..9fe64e27e 100644 --- a/docs/post_installation/firststeps-snat.de.md +++ b/docs/post_installation/firststeps-snat.de.md @@ -11,8 +11,32 @@ SNAT_TO_SOURCE=1.2.3.4 SNAT6_TO_SOURCE=dead:beef ``` -Führen Sie `docker compose up -d` aus. +Führen Sie folgendes aus: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` Die Werte werden von netfilter-mailcow gelesen. netfilter-mailcow stellt sicher, dass die Post-Routing-Regeln auf Position 1 in der Netfilter-Tabelle stehen. Es löscht sie automatisch und legt sie neu an, wenn sie an einer anderen Position als 1 gefunden werden. -Überprüfen Sie die Ausgabe von `docker compose logs --tail=200 netfilter-mailcow`, um sicherzustellen, dass die SNAT-Einstellungen angewendet wurden. \ No newline at end of file +Überprüfen Sie die Ausgabe mit hilfe des folgendem Befehles um sicherzustellen, dass die SNAT-Einstellungen angewendet wurden: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs --tail=200 netfilter-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs --tail=200 netfilter-mailcow + ``` \ No newline at end of file diff --git a/docs/post_installation/firststeps-snat.en.md b/docs/post_installation/firststeps-snat.en.md index 5bf0f8c20..4ba976fc3 100644 --- a/docs/post_installation/firststeps-snat.en.md +++ b/docs/post_installation/firststeps-snat.en.md @@ -11,8 +11,32 @@ SNAT_TO_SOURCE=1.2.3.4 SNAT6_TO_SOURCE=dead:beef ``` -Run `docker compose up -d`. +Run the command: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` The values are read by netfilter-mailcow. netfilter-mailcow will make sure, the post-routing rules are on position 1 in the netfilter table. It does automatically delete and re-create them if they are found on another position than 1. -Check the output of `docker compose logs --tail=200 netfilter-mailcow` to ensure the SNAT settings have been applied. \ No newline at end of file +Check the output with the following command to ensure the SNAT settings have been applied: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs --tail=200 netfilter-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs --tail=200 netfilter-mailcow + ``` \ No newline at end of file diff --git a/docs/post_installation/firststeps-ssl.de.md b/docs/post_installation/firststeps-ssl.de.md index 0fb488b6c..5ea37d4d0 100644 --- a/docs/post_installation/firststeps-ssl.de.md +++ b/docs/post_installation/firststeps-ssl.de.md @@ -2,7 +2,7 @@ Der "acme-mailcow" Container wird versuchen, ein LE-Zertifikat für `${MAILCOW_HOSTNAME}`, `autodiscover.ADDED_MAIL_DOMAIN` und `autoconfig.ADDED_MAIL_DOMAIN` zu erhalten. -!!! warning +!!! warning "Warnung" mailcow **muss** auf Port 80 verfügbar sein, damit der acme-Client funktioniert. Unsere Reverse Proxy Beispielkonfigurationen decken das ab. Sie können auch jeden externen ACME-Client (z.B. certbot) verwenden, um Zertifikate zu erhalten, aber Sie müssen sicherstellen, dass sie an den richtigen Ort kopiert werden und ein Post-Hook die betroffenen Container neu lädt. Weitere Informationen finden Sie in der Reverse Proxy-Dokumentation. Standardmäßig, d.h. **0 Domains** sind zu mailcow hinzugefügt, wird es versuchen, ein Zertifikat für `${MAILCOW_HOSTNAME}` zu erhalten. @@ -13,7 +13,33 @@ Nur Namen, die validiert werden können, werden als SAN hinzugefügt. Für jede Domain, die Sie entfernen, wird das Zertifikat verschoben und ein neues Zertifikat angefordert. Es ist nicht möglich, Domains in einem Zertifikat zu behalten, wenn wir nicht in der Lage sind, die Challenge für diese zu validieren. -Wenn Sie den ACME-Client neu starten wollen, verwenden Sie `docker compose restart acme-mailcow` und überwachen Sie die Protokolle mit `docker compose logs --tail=200 -f acme-mailcow`. +Wenn Sie den ACME-Client neu starten wollen, verwenden Sie den folgenden Befehl: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart acme-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart acme-mailcow + ``` + +Überwachen Sie die Logs mit: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs --tail=200 -f acme-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs --tail=200 -f acme-mailcow + ``` ### Zusätzliche Domain-Namen @@ -29,7 +55,19 @@ Jeder Name wird anhand seiner IPv6-Adresse oder - wenn IPv6 in Ihrer Domäne nic Ein Wildcard-Name wie `smtp.*` wird versuchen, ein smtp.DOMAIN_NAME SAN für jede zu mailcow hinzugefügte Domain zu erhalten. -Führen Sie `docker compose up -d` aus, um betroffene Container automatisch neu zu erstellen. +Führen Sie den folgenden Befehl aus, um betroffene Container automatisch neu zu erstellen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` !!! info Die Verwendung anderer Namen als `MAILCOW_HOSTNAME` für den Zugriff auf das mailcow UI kann weitere Konfiguration erfordern. @@ -40,19 +78,43 @@ Wenn Sie planen, einen anderen Servernamen als `MAILCOW_HOSTNAME` für den Zugri ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld ``` -Führen Sie `docker compose up -d` aus, um es anzuwenden. +Führen Sie den folgenden Befehl aus, um es anzuwenden: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Erneuerung erzwingen Um eine Erneuerung zu erzwingen, müssen Sie eine Datei namens `force_renew` erstellen und den `acme-mailcow` Container neu starten: -``` -cd /opt/mailcow-dockerized -touch data/assets/ssl/force_renew -docker compose restart acme-mailcow -# Prüfen Sie nun die Logs auf eine Erneuerung -docker compose logs --tail=200 -f acme-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + cd /opt/mailcow-dockerized + touch data/assets/ssl/force_renew + docker compose restart acme-mailcow + # Prüfen Sie nun die Logs auf eine Erneuerung + docker compose logs --tail=200 -f acme-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /opt/mailcow-dockerized + touch data/assets/ssl/force_renew + docker-compose restart acme-mailcow + # Prüfen Sie nun die Logs auf eine Erneuerung + docker-compose logs --tail=200 -f acme-mailcow + ``` Die Datei wird automatisch gelöscht. @@ -60,20 +122,56 @@ Die Datei wird automatisch gelöscht. Sie können die **IP-Überprüfung** überspringen, indem Sie `SKIP_IP_CHECK=y` in mailcow.conf setzen (keine Anführungszeichen). Seien Sie gewarnt, dass eine Fehlkonfiguration dazu führt, dass Sie von Let's Encrypt eingeschränkt werden! Dies ist vor allem für Multi-IP-Setups nützlich, bei denen der IP-Check die falsche Quell-IP-Adresse zurückgeben würde. Aufgrund der Verwendung von dynamischen IPs für acme-mailcow ist Source-NAT bei Neustarts nicht konsistent. -Wenn Sie Probleme mit der "HTTP-Validierung" haben, aber Ihre IP-Adressbestätigung erfolgreich ist, verwenden Sie höchstwahrscheinlich firewalld, ufw oder eine andere Firewall, die Verbindungen von `br-mailcow` zu Ihrem externen Interface verbietet. Sowohl firewalld als auch ufw lassen dies standardmäßig nicht zu. Es reicht oft nicht aus, diese Firewall-Dienste einfach zu stoppen. Sie müssen mailcow stoppen (`docker compose down`), den Firewall-Dienst stoppen, die Ketten flushen und Docker neu starten. +Wenn Sie Probleme mit der "HTTP-Validierung" haben, aber Ihre IP-Adressbestätigung erfolgreich ist, verwenden Sie höchstwahrscheinlich firewalld, ufw oder eine andere Firewall, die Verbindungen von `br-mailcow` zu Ihrem externen Interface verbietet. Sowohl firewalld als auch ufw lassen dies standardmäßig nicht zu. Es reicht oft nicht aus, diese Firewall-Dienste einfach zu stoppen. Sie müssen mailcow stoppen, den Firewall-Dienst stoppen, die Chains flushen und Docker neu starten. Sie können diese Validierungsmethode auch überspringen, indem Sie `SKIP_HTTP_VERIFICATION=y` in "mailcow.conf" setzen. Seien Sie gewarnt, dass dies nicht zu empfehlen ist. In den meisten Fällen wird die HTTP-Überprüfung übersprungen, um unbekannte NAT-Reflection-Probleme zu umgehen, die durch das Ignorieren dieser spezifischen Netzwerk-Fehlkonfiguration nicht gelöst werden. Wenn Sie Probleme haben, TLSA-Einträge in der DNS-Übersicht innerhalb von mailcow zu generieren, haben Sie höchstwahrscheinlich Probleme mit NAT-Reflexion, die Sie beheben sollten. -Wenn du einen SKIP_* Parameter geändert hast, führe `docker compose up -d` aus, um deine Änderungen zu übernehmen. +Wenn Sie einen SKIP_* Parameter geändert haben, führen Sie den folgenden Befehl aus, um die Änderungen zu übernehmen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Deaktivieren Sie Let's Encrypt #### Deaktivieren Sie Let's Encrypt vollständig -Setzen Sie `SKIP_LETS_ENCRYPT=y` in "mailcow.conf" und erstellen Sie "acme-mailcow" neu, indem Sie `docker compose up -d` ausführen. +Setzen Sie `SKIP_LETS_ENCRYPT=y` in "mailcow.conf" und erstellen Sie "acme-mailcow" neu, mit dem folgenden Befehl: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` #### Alle Namen außer ${MAILCOW_HOSTNAME} überspringen -Fügen Sie `ONLY_MAILCOW_HOSTNAME=y` zu "mailcow.conf" hinzu und erstellen Sie "acme-mailcow" neu, indem Sie `docker compose up -d` ausführen. +Fügen Sie `ONLY_MAILCOW_HOSTNAME=y` zu "mailcow.conf" hinzu und erstellen Sie "acme-mailcow" neu, mit dem folgenden Befehl: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Das Let's Encrypt subjectAltName-Limit von 100 Domains @@ -81,7 +179,7 @@ Let's Encrypt hat derzeit [ein Limit von 100 Domainnamen pro Zertifikat](https:/ Standardmäßig erstellt "acme-mailcow" ein einzelnes SAN-Zertifikat für alle validierten Domains (siehe den [ersten Abschnitt](#lets-encrypt-wird-mitgeliefert) und [Zusätzliche Domainnamen](#zusatzliche-domain-namen)). -Dies bietet beste Kompatibilität, bedeutet aber, dass das Let's Encrypt-Limit überschritten wird, wenn Sie zu viele Domains zu einer einzelnen Mailcow-Installation hinzufügen. +Dies bietet beste Kompatibilität, bedeutet aber, dass das Let's Encrypt-Limit überschritten wird, wenn Sie zu viele Domains zu einer einzelnen mailcow-Installation hinzufügen. Um dies zu lösen, können Sie `ENABLE_SSL_SNI` so konfigurieren, dass es generiert wird: @@ -91,9 +189,21 @@ Um dies zu lösen, können Sie `ENABLE_SSL_SNI` so konfigurieren, dass es generi Postfix, Dovecot und Nginx werden dann diese Zertifikate mit SNI bedienen. -Setzen Sie `ENABLE_SSL_SNI=y` in "mailcow.conf" und erstellen Sie "acme-mailcow" durch Ausführen von `docker compose up -d`. +Setzen Sie `ENABLE_SSL_SNI=y` in "mailcow.conf" und erstellen Sie "acme-mailcow" mit dem folgenden Befehl neu: -!!! warning +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +!!! warning "Warnung" Nicht alle Clients unterstützen SNI, [siehe Dovecot Dokumentation](https://wiki.dovecot.org/SSL/SNIClientSupport) oder [Wikipedia](https://en.wikipedia.org/wiki/Server_Name_Indication#Support). Sie sollten sicherstellen, dass diese Clients den `MAILCOW_HOSTNAME` für sichere Verbindungen verwenden, wenn Sie diese Funktion aktivieren. @@ -101,7 +211,7 @@ Hier ist ein Beispiel: - `MAILCOW_HOSTNAME=server.email.tld` - `ADDITIONAL_SAN=webmail.email.tld,mail.*` -- Mailcow E-Mail-Domänen: "domain1.tld" und "domain2.tld" +- mailcow E-Mail-Domänen: "domain1.tld" und "domain2.tld" Die folgenden Zertifikate werden generiert: @@ -125,13 +235,25 @@ docker restart $(docker ps -qaf name=nginx-mailcow) docker restart $(docker ps -qaf name=dovecot-mailcow) ``` -Siehe [Post-Hook-Skript für Nicht-Mailcow-ACME-Clients](../firststeps-rp#optional-post-hook-skript-fur-nicht-mailcow-acme-clients) für ein vollständiges Beispielskript. +Siehe [Post-Hook-Skript für Nicht-mailcow-ACME-Clients](../firststeps-rp#optional-post-hook-skript-fur-nicht-mailcow-acme-clients) für ein vollständiges Beispielskript. ### Test gegen das ACME-Verzeichnis Bearbeiten Sie `mailcow.conf` und fügen Sie `LE_STAGING=y` hinzu. -Führen Sie `docker compose up -d` aus, um Ihre Änderungen zu aktivieren. +Führen Sie den folgenden Befehl aus, um Ihre Änderungen zu aktivieren: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Benutzerdefinierte Verzeichnis-URL @@ -143,11 +265,35 @@ DIRECTORY_URL=https://acme-custom-v9000.api.letsencrypt.org/directory Sie können `LE_STAGING` nicht mit `DIRECTORY_URL` verwenden. Wenn beide gesetzt sind, wird nur `LE_STAGING` verwendet. -Führen Sie `docker compose up -d` aus, um Ihre Änderungen zu aktivieren. +Führen Sie den folgenden Befehl aus, um Ihre Änderungen zu aktivieren: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Überprüfen Sie Ihre Konfiguration -Führen Sie `docker compose logs acme-mailcow` aus, um herauszufinden, warum eine Validierung fehlschlägt. +Führen Sie den folgenden Befehl aus, um herauszufinden, warum eine Validierung fehlschlägt: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs --tail=200 acme-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs --tail=200 acme-mailcow + ``` Um zu überprüfen, ob nginx das richtige Zertifikat verwendet, benutzen Sie einfach einen Browser Ihrer Wahl und überprüfen Sie das angezeigte Zertifikat. @@ -164,7 +310,7 @@ echo "Q" | openssl s_client -connect mx.mailcow.email:443 Um die von openssl zurückgegebenen Verfallsdaten gegen MAILCOW_HOSTNAME zu validieren, können Sie unser Hilfsskript verwenden: -``` +```bash cd /opt/mailcow-dockerized bash helper-scripts/expiry-dates.sh ``` diff --git a/docs/post_installation/firststeps-ssl.en.md b/docs/post_installation/firststeps-ssl.en.md index d834d5827..6cefa32ac 100644 --- a/docs/post_installation/firststeps-ssl.en.md +++ b/docs/post_installation/firststeps-ssl.en.md @@ -13,7 +13,33 @@ Only names that can be validated, will be added as SAN. For every domain you remove, the certificate will be moved and a new certificate will be requested. It is not possible to keep domains in a certificate, when we are not able validate the challenge for those. -If you want to re-run the ACME client, use `docker compose restart acme-mailcow` and monitor its logs with `docker compose logs --tail=200 -f acme-mailcow`. +If you want to re-run the ACME client, use the following command: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart acme-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart acme-mailcow + ``` + +Monitor its logs with: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs --tail=200 -f acme-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs --tail=200 -f acme-mailcow + ``` ### Additional domain names @@ -29,7 +55,19 @@ Each name will be validated against its IPv6 address or - if IPv6 is not configu A wildcard name like `smtp.*` will try to obtain a smtp.DOMAIN_NAME SAN for each domain added to mailcow. -Run `docker compose up -d` to recreate affected containers automatically. +Run the following command to recreate affected containers automatically: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` !!! info Using names other name `MAILCOW_HOSTNAME` to access the mailcow UI may need further configuration. @@ -40,19 +78,43 @@ If you plan to use a server name that is not `MAILCOW_HOSTNAME` to access the ma ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld ``` -Run `docker compose up -d` to apply. +Run the command below to apply: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Force renewal To force a renewal, you need to create a file named `force_renew` and restart the `acme-mailcow` container: -``` -cd /opt/mailcow-dockerized -touch data/assets/ssl/force_renew -docker compose restart acme-mailcow -# Now check the logs for a renewal -docker compose logs --tail=200 -f acme-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + cd /opt/mailcow-dockerized + touch data/assets/ssl/force_renew + docker compose restart acme-mailcow + # Now check the logs for a renewal + docker compose logs --tail=200 -f acme-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /opt/mailcow-dockerized + touch data/assets/ssl/force_renew + docker-compose restart acme-mailcow + # Now check the logs for a renewal + docker-compose logs --tail=200 -f acme-mailcow + ``` The file will be deleted automatically. @@ -60,20 +122,56 @@ The file will be deleted automatically. You can skip the **IP verification** by setting `SKIP_IP_CHECK=y` in mailcow.conf (no quotes). Be warned that a misconfiguration will get you ratelimited by Let's Encrypt! This is primarily useful for multi-IP setups where the IP check would return the incorrect source IP address. Due to using dynamic IPs for acme-mailcow, source NAT is not consistent over restarts. -If you encounter problems with "HTTP validation", but your IP address confirmation succeeds, you are most likely using firewalld, ufw or any other firewall, that disallows connections from `br-mailcow` to your external interface. Both firewalld and ufw disallow this by default. It is often not enough to just stop these firewall services. You'd need to stop mailcow (`docker compose down`), stop the firewall service, flush the chains and restart Docker. +If you encounter problems with "HTTP validation", but your IP address confirmation succeeds, you are most likely using firewalld, ufw or any other firewall, that disallows connections from `br-mailcow` to your external interface. Both firewalld and ufw disallow this by default. It is often not enough to just stop these firewall services. You'd need to stop mailcow, stop the firewall service, flush the chains and restart Docker. You can also skip this validation method by setting `SKIP_HTTP_VERIFICATION=y` in "mailcow.conf". Be warned that this is discouraged. In most cases, the HTTP verification is skipped to workaround unknown NAT reflection issues, which are not resolved by ignoring this specific network misconfiguration. If you encounter problems generating TLSA records in the DNS overview within mailcow, you are most likely having issues with NAT reflection you should fix. -If you changed a SKIP_* parameter, run `docker compose up -d` to apply your changes. +If you changed a SKIP_* parameter, run the command below to apply your changes: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Disable Let's Encrypt #### Disable Let's Encrypt completely -Set `SKIP_LETS_ENCRYPT=y` in "mailcow.conf" and recreate "acme-mailcow" by running `docker compose up -d`. +Set `SKIP_LETS_ENCRYPT=y` in "mailcow.conf" and recreate "acme-mailcow" with: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` #### Skip all names but ${MAILCOW_HOSTNAME} -Add `ONLY_MAILCOW_HOSTNAME=y` to "mailcow.conf" and recreate "acme-mailcow" by running `docker compose up -d`. +Add `ONLY_MAILCOW_HOSTNAME=y` to "mailcow.conf" and recreate "acme-mailcow" with: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### The Let's Encrypt subjectAltName limit of 100 domains @@ -91,7 +189,19 @@ To solve this, you can configure `ENABLE_SSL_SNI` to generate: Postfix, Dovecot and Nginx will then serve these certificates with SNI. -Set `ENABLE_SSL_SNI=y` in "mailcow.conf" and recreate "acme-mailcow" by running `docker compose up -d`. +Set `ENABLE_SSL_SNI=y` in "mailcow.conf" and recreate "acme-mailcow" with: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` !!! warning Not all clients support SNI, [see Dovecot documentation](https://wiki.dovecot.org/SSL/SNIClientSupport) or [Wikipedia](https://en.wikipedia.org/wiki/Server_Name_Indication#Support). @@ -101,7 +211,7 @@ Here is an example: - `MAILCOW_HOSTNAME=server.email.tld` - `ADDITIONAL_SAN=webmail.email.tld,mail.*` -- Mailcow email domains: "domain1.tld" and "domain2.tld" +- mailcow email domains: "domain1.tld" and "domain2.tld" The following certificates will be generated: @@ -131,7 +241,19 @@ See [Post-hook script for non-mailcow ACME clients](../firststeps-rp/#optional-p Edit `mailcow.conf` and add `LE_STAGING=y`. -Run `docker compose up -d` to activate your changes. +Run the command below to activate your changes: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Custom directory URL @@ -143,11 +265,35 @@ DIRECTORY_URL=https://acme-custom-v9000.api.letsencrypt.org/directory You cannot use `LE_STAGING` with `DIRECTORY_URL`. If both are set, only `LE_STAGING` is used. -Run `docker compose up -d` to activate your changes. +Run the command below to activate your changes: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Check your configuration -Run `docker compose logs acme-mailcow` to find out why a validation fails. +Run the command below to find out why a validation fails: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs --tail=200 acme-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs --tail=200 acme-mailcow + ``` To check if nginx serves the correct certificate, simply use a browser of your choice and check the displayed certificate. @@ -164,7 +310,7 @@ echo "Q" | openssl s_client -connect mx.mailcow.email:443 To validate the expiry dates as returned by openssl against MAILCOW_HOSTNAME, you are able to use our helper script: -``` +```bash cd /opt/mailcow-dockerized bash helper-scripts/expiry-dates.sh ``` diff --git a/docs/third_party/borgmatic/third_party-borgmatic.de.md b/docs/third_party/borgmatic/third_party-borgmatic.de.md index 59ee4f6dd..3831ca781 100644 --- a/docs/third_party/borgmatic/third_party-borgmatic.de.md +++ b/docs/third_party/borgmatic/third_party-borgmatic.de.md @@ -2,7 +2,7 @@ ## Einführung -Borgmatic ist ein großartiger Weg, um Backups auf Ihrem Mailcow-Setup durchzuführen, da es Ihre Daten sicher verschlüsselt und extrem einfach zu +Borgmatic ist ein großartiger Weg, um Backups auf Ihrem mailcow-Setup durchzuführen, da es Ihre Daten sicher verschlüsselt und extrem einfach zu einzurichten. Aufgrund seiner Deduplizierungsfähigkeiten können Sie eine große Anzahl von Backups speichern, ohne große Mengen an Speicherplatz zu verschwenden. @@ -127,9 +127,61 @@ oder OpenSSH wird sich weigern, den SSH-Schlüssel zu benutzen. Für den nächsten Schritt müssen wir den Container in einem konfigurierten Zustand hochfahren und laufen lassen. Um das zu tun, führen Sie aus: -```shell -docker compose up -d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +### Das Backup Repository initialisieren + +Zwar ist Ihr borgmatic-Container jetzt betriebsbereit, aber die Backups schlagen derzeit fehl, da das Repository nicht +initialisiert wurde. + +Um das Repository zu initialisieren, führen Sie folgenden Befehl aus: + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2 + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2 + ``` + +Sie werden aufgefordert, den SSH-Hostschlüssel Ihres entfernten Repository-Servers zu authentifizieren. Prüfen Sie, ob er übereinstimmt und bestätigen +und bestätigen Sie die Aufforderung mit `yes`. Das Repository wird mit der Passphrase initialisiert, die Sie zuvor in der Umgebungsvariable `BORG_PASSPHRASE` gesetzt haben. + +Bei Verwendung einer der `repokey`-Verschlüsselungsmethoden wird der Verschlüsselungsschlüssel im Repository selbst gespeichert und nicht auf dem +dem Client, so dass in dieser Hinsicht keine weiteren Maßnahmen erforderlich sind. Wenn Sie sich für die Verwendung einer `keyfile` anstelle von +`repokey` entscheiden, stellen Sie sicher, dass Sie den Schlüssel exportieren und separat sichern. Lesen Sie den Abschnitt [Exportieren von Schlüsseln](#exportieren-von-schlusseln) +um zu erfahren, wie Sie den Schlüssel abrufen können. + +### Container neustarten + +Nachdem wir nun die Konfiguration und Initialisierung des Repositorys abgeschlossen haben, starten wir den Container neu, um sicherzustellen, dass er sich in einem definierten +Zustand befindet: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart borgmatic-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart borgmatic-mailcow + ``` ## Wiederherstellung von einem Backup @@ -138,13 +190,13 @@ keine benutzerdefinierten Daten in ihrem maildir oder ihrer mailcow Datenbank. ### Wiederherstellen von maildir -!!! warning +!!! warning "Warnung" Dies wird Dateien in Ihrem maildir überschreiben! Führen Sie dies nicht aus, es sei denn, Sie beabsichtigen tatsächlich, Mail Dateien von einem Backup wiederherzustellen. !!! note "Wenn Sie SELinux im Erzwingungsmodus verwenden" Wenn Sie mailcow auf einem Host mit SELinux im Enforcing-Modus verwenden, müssen Sie es vorübergehend deaktivieren während - während der Extraktion des Archivs vorübergehend deaktivieren, da das Mailcow-Setup das vmail-Volumen als privat kennzeichnet, das ausschließlich dem Dovecot-Container + während der Extraktion des Archivs vorübergehend deaktivieren, da das mailcow-Setup das vmail-Volumen als privat kennzeichnet, das ausschließlich dem Dovecot-Container ausschließlich. SELinux wird (berechtigterweise) jeden anderen Container, wie z.B. den borgmatic Container, daran hindern, auf dieses Volume zu schreiben. @@ -152,37 +204,61 @@ Bevor Sie eine Wiederherstellung durchführen, müssen Sie das vmail-Volume in ` das `ro`-Flag aus dem Volume entfernen. Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup wiederherzustellen: -```shell -docker compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest + ``` Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe [Auflistung aller verfügbaren Archive](#auflistung-aller-verfugbaren-archive)) ### MySQL wiederherstellen -!!! warning +!!! warning "Warnung" Die Ausführung dieses Befehls löscht und erstellt die mailcow-Datenbank neu! Führen sie diesen Befehl nicht aus, es sei denn sie beabsichtigen, die mailcow-Datenbank von einem Backup wiederherzustellen. Um die MySQL-Datenbank aus dem letzten Archiv wiederherzustellen, verwenden Sie diesen Befehl: -```shell -docker compose exec borgmatic-mailcow borgmatic restore --archive latest -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic restore --archive latest + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic restore --archive latest + ``` Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe [Auflistung aller verfügbaren Archive](#auflistung-aller-verfugbaren-archive)) ### Nach der Wiederherstellung -Nach der Wiederherstellung müssen Sie mailcow neu starten. Wenn Sie den SELinux-Erzwingungsmodus deaktiviert haben, wäre jetzt ein guter Zeitpunkt, um +Nach der Wiederherstellung müssen Sie mailcow neu starten. Wenn Sie SELinux "Erzwingen" deaktiviert haben, wäre jetzt ein guter Zeitpunkt, um ihn wieder zu aktivieren. Um mailcow neu zu starten, verwenden Sie den folgenden Befehl: -```shell -docker compose down && docker compose up -d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose down && docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down && docker-compose up -d + ``` Wenn Sie SELinux verwenden, werden dadurch auch alle Dateien in Ihrem vmail-Volume neu benannt. Seien Sie geduldig, denn dies kann eine Weile dauern kann, wenn Sie viele Dateien haben. @@ -191,24 +267,48 @@ eine Weile dauern kann, wenn Sie viele Dateien haben. ### Manueller Archivierungslauf (mit Debugging-Ausgabe) -```shell -docker compose exec borgmatic-mailcow borgmatic -v 2 -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic -v 2 + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic -v 2 + ``` ### Auflistung aller verfügbaren Archive -```shell -docker compose exec borgmatic-mailcow borgmatic list -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic list + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic list + ``` ### Sperre aufheben Wenn borg während eines Archivierungslaufs unterbrochen wird, hinterlässt es eine veraltete Sperre, die gelöscht werden muss, bevor neue Operationen durchgeführt werden können: -```shell -docker compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow + ``` Wobei `user@rsync.net:mailcow` die URI zu Ihrem Repository ist. @@ -224,8 +324,16 @@ Beachten Sie, dass Sie in beiden Fällen auch die Passphrase haben müssen, um d Um die `keyfile` zu holen, führen Sie aus: -```shell -docker compose exec borgmatic-mailcow borg key export --paper user@rsync.net:mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borg key export --paper user@rsync.net:mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borg key export --paper user@rsync.net:mailcow + ``` Wobei `user@rsync.net:mailcow` die URI zu Ihrem Repository ist. diff --git a/docs/third_party/borgmatic/third_party-borgmatic.en.md b/docs/third_party/borgmatic/third_party-borgmatic.en.md index 43e0c9cf9..119f53b30 100644 --- a/docs/third_party/borgmatic/third_party-borgmatic.en.md +++ b/docs/third_party/borgmatic/third_party-borgmatic.en.md @@ -2,7 +2,7 @@ ## Introduction -Borgmatic is a great way to run backups on your Mailcow setup as it securely encrypts your data and is extremely easy to +Borgmatic is a great way to run backups on your mailcow setup as it securely encrypts your data and is extremely easy to set up. Due to it's deduplication capabilities you can store a great number of backups without wasting large amounts of disk @@ -128,9 +128,17 @@ or OpenSSH will refuse to use the SSH key. For the next step we need the container to be up and running in a configured state. To do that run: -```shell -docker compose up -d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` ### Initialize the repository @@ -139,9 +147,17 @@ initialized. To initialize the repository run: -```shell -docker compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2 -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2 + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2 + ``` You will be asked you to authenticate the SSH host key of your remote repository server. See if it matches and confirm the prompt by entering `yes`. The repository will be initialized with the passphrase you set in the `BORG_PASSPHRASE` @@ -157,9 +173,17 @@ for how to retrieve the key. Now that we finished configuring and initializing the repository restart the container to ensure it is in a defined state: -```shell -docker compose restart borgmatic-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose restart borgmatic-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart borgmatic-mailcow + ``` ## Restoring from a backup @@ -182,9 +206,17 @@ Before running a restore you must make the vmail volume writeable in `docker-com the `ro` flag from the volume. Then you can use the following command to restore the maildir from a backup: -```shell -docker compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest + ``` Alternatively you can specify any archive name from the list of archives (see [Listing all available archives](#listing-all-available-archives)) @@ -197,9 +229,17 @@ Alternatively you can specify any archive name from the list of archives (see To restore the MySQL database from the latest archive use this command: -```shell -docker compose exec borgmatic-mailcow borgmatic restore --archive latest -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic restore --archive latest + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic restore --archive latest + ``` Alternatively you can specify any archive name from the list of archives (see [Listing all available archives](#listing-all-available-archives)) @@ -211,9 +251,17 @@ re-enable it. To restart mailcow use the follwing command: -```shell -docker compose down && docker compose up -d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose down && docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down && docker-compose up -d + ``` If you use SELinux this will also trigger the re-labeling of all files in your vmail volume. Be patient, as this may take a while if you have lots of files. @@ -222,24 +270,48 @@ take a while if you have lots of files. ### Manual archiving run (with debugging output) -```shell -docker compose exec borgmatic-mailcow borgmatic -v 2 -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic -v 2 + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic -v 2 + ``` ### Listing all available archives -```shell -docker compose exec borgmatic-mailcow borgmatic list -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borgmatic list + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borgmatic list + ``` ### Break lock When borg is interrupted during an archiving run it will leave behind a stale lock that needs to be cleared before any new operations can be performed: -```shell -docker compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow + ``` Where `user@rsync.net:mailcow` is the URI to your repository. @@ -255,8 +327,16 @@ Note that in either case you also must have the passphrase to decrypt any archiv To fetch the keyfile run: -```shell -docker compose exec borgmatic-mailcow borg key export --paper user@rsync.net:mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec borgmatic-mailcow borg key export --paper user@rsync.net:mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec borgmatic-mailcow borg key export --paper user@rsync.net:mailcow + ``` Where `user@rsync.net:mailcow` is the URI to your repository. \ No newline at end of file diff --git a/docs/third_party/checkmk/u_e-checkmk.de.md b/docs/third_party/checkmk/u_e-checkmk.de.md index 54ddaf907..16c18f132 100644 --- a/docs/third_party/checkmk/u_e-checkmk.de.md +++ b/docs/third_party/checkmk/u_e-checkmk.de.md @@ -1,4 +1,4 @@ -Mailcow bietet mittels dem eigenen Update-Script die Möglichkeit zu prüfen ob Updates vorhanden sind. +mailcow bietet mittels dem eigenen Update-Script die Möglichkeit zu prüfen ob Updates vorhanden sind. Sofern mailcow-Updates mittels checkmk abgefragt werden soll, kann man im `local`-Verzeichnis des checkmk-Agents (normalerweise `/usr/lib/check_mk_agent/local/`) eine ausführbare Datei mit dem Namen `mailcow_update` und nachfolgendem Inhalt erstellen: diff --git a/docs/third_party/checkmk/u_e-checkmk.en.md b/docs/third_party/checkmk/u_e-checkmk.en.md index d9897a4d6..017f4b712 100644 --- a/docs/third_party/checkmk/u_e-checkmk.en.md +++ b/docs/third_party/checkmk/u_e-checkmk.en.md @@ -1,4 +1,4 @@ -Mailcow provides the ability to check for updates using its own update script. +mailcow provides the ability to check for updates using its own update script. If you want to check for mailcow updates using checkmk, you can create an executable file in the `local` directory of the checkmk agent (typically `/usr/lib/check_mk_agent/local/`) with the name `mailcow_update` and the following content: diff --git a/docs/third_party/exchange_onprem/third_party-exchange_onprem.de.md b/docs/third_party/exchange_onprem/third_party-exchange_onprem.de.md index e5a2e60a3..c8f57d227 100644 --- a/docs/third_party/exchange_onprem/third_party-exchange_onprem.de.md +++ b/docs/third_party/exchange_onprem/third_party-exchange_onprem.de.md @@ -12,31 +12,31 @@ Dieses Setup ist sehr praktisch, wenn Sie die [Office 365 Sicherheitsvorgaben](h 3. Wählen Sie die Domäne aus und schalten Sie sie von "autorisiert" auf "internes Relais" um. -## Einrichten der Mailcow -Ihre Mailcow muss alle Mails an Ihren personalisierten Exchange Host weiterleiten. Es ist die gleiche Host-Adresse, die wir bereits für den mx Record gesucht haben. +## Einrichten der mailcow +Ihre mailcow muss alle Mails an Ihren personalisierten Exchange Host weiterleiten. Es ist die gleiche Host-Adresse, die wir bereits für den mx Record gesucht haben. -1. Fügen Sie die Domain zu Ihrer Mailcow hinzu +1. Fügen Sie die Domain zu Ihrer mailcow hinzu 2. [Fügen Sie Ihre personalisierte Exchange Host Adresse als relayhost hinzu](../../manual-guides/Postfix/u_e-postfix-relayhost.de.md) 3. Fügen Sie Ihre personalisierte Exchange Host Adresse als Weiterleitungshost hinzu, um alle weitergeleiteten Mails von Exchange bedingungslos zu akzeptieren. (Admin > Konfiguration & Details > Konfigurations-Dropdown > Weiterleitungshosts) 4. Gehen Sie zu den Domäneneinstellungen und wählen Sie den neu hinzugefügten Host in der Dropdown-Liste "Absenderabhängige Transporte" aus. Aktivieren Sie die Weiterleitung, indem Sie die Kontrollkästchen "Diese Domäne weiterleiten", "Alle Empfänger weiterleiten" und "Nur nicht vorhandene Postfächer weiterleiten" aktivieren. !!! info - Von nun an wird Ihre Mailcow alle Mails akzeptieren, die von Exchange weitergeleitet werden. Die **Eingangsfilterung und damit das neuronale Lernen Ihrer Kuh wird nicht mehr funktionieren**. Da alle Mails über Exchange geroutet werden, wird der [Filterungsprozess dort abgewickelt](https://docs.microsoft.com/exchange/antispam-and-antimalware/antispam-and-antimalware?view=exchserver-2019). + Von nun an wird Ihre mailcow alle Mails akzeptieren, die von Exchange weitergeleitet werden. Die **Eingangsfilterung und damit das neuronale Lernen Ihrer Kuh wird nicht mehr funktionieren**. Da alle Mails über Exchange geroutet werden, wird der [Filterungsprozess dort abgewickelt](https://docs.microsoft.com/exchange/antispam-and-antimalware/antispam-and-antimalware?view=exchserver-2019). ## Connectors in Exchange einrichten -Der gesamte Mailverkehr läuft nun über Exchange. Zu diesem Zeitpunkt filtert der Exchange Online-Schutz bereits alle ein- und ausgehenden Mails. Jetzt müssen wir zwei Konnektoren einrichten, um eingehende Mails von unserem Exchange Service an die Mailcow weiterzuleiten und einen weiteren, um Mails zuzulassen, die von der Mailcow an unseren Exchange Service weitergeleitet werden. Sie können der [offiziellen Anleitung von Microsoft] folgen (https://docs.microsoft.com/exchange/mail-flow-best-practices/use-connectors-to-configure-mail-flow/set-up-connectors-to-route-mail#2-set-up-a-connector-from-microsoft-365-or-office-365-to-your-email-server). +Der gesamte Mailverkehr läuft nun über Exchange. Zu diesem Zeitpunkt filtert der Exchange Online-Schutz bereits alle ein- und ausgehenden Mails. Jetzt müssen wir zwei Konnektoren einrichten, um eingehende Mails von unserem Exchange Service an die mailcow weiterzuleiten und einen weiteren, um Mails zuzulassen, die von der mailcow an unseren Exchange Service weitergeleitet werden. Sie können der [offiziellen Anleitung von Microsoft] folgen (https://docs.microsoft.com/exchange/mail-flow-best-practices/use-connectors-to-configure-mail-flow/set-up-connectors-to-route-mail#2-set-up-a-connector-from-microsoft-365-or-office-365-to-your-email-server). -!!! warning - Für den Connector, der die Mails von Ihrer Mailcow zu Exchange weiterleitet, bietet Microsoft zwei Möglichkeiten der Authentifizierung an. Der empfohlene Weg ist die Verwendung eines tls-Zertifikats, das mit einem Subject-Namen konfiguriert ist, der mit einer akzeptierten Domäne in Exchange übereinstimmt. Andernfalls müssen Sie die Authentifizierung mit der statischen IP-Adresse Ihrer Mailcow wählen. +!!! warning "Warnung" + Für den Connector, der die Mails von Ihrer mailcow zu Exchange weiterleitet, bietet Microsoft zwei Möglichkeiten der Authentifizierung an. Der empfohlene Weg ist die Verwendung eines tls-Zertifikats, das mit einem Subject-Namen konfiguriert ist, der mit einer akzeptierten Domäne in Exchange übereinstimmt. Andernfalls müssen Sie die Authentifizierung mit der statischen IP-Adresse Ihrer mailcow wählen. ## Validierung -Der einfachste Weg, die hybride Einrichtung zu überprüfen, ist das Senden einer Mail aus dem Internet an eine Mailbox, die nur auf der Mailcow existiert und andersherum. +Der einfachste Weg, die hybride Einrichtung zu überprüfen, ist das Senden einer Mail aus dem Internet an eine Mailbox, die nur auf der mailcow existiert und andersherum. ### Allgemeine Probleme -- Die Validierung des Connectors von Exchange zu Ihrer Mailcow schlug fehl mit `550 5.1.10 RESOLVER.ADR.RecipientNotFound; Recipient test@contoso.com not found by SMTP address lookup` +- Die Validierung des Connectors von Exchange zu Ihrer mailcow schlug fehl mit `550 5.1.10 RESOLVER.ADR.RecipientNotFound; Recipient test@contoso.com not found by SMTP address lookup` **Mögliche Lösung:** Ihre Domäne ist nicht als "internes Relay" eingerichtet. Exchange kann daher den Empfänger nicht finden. -- Mails, die von der Mailcow an eine Mailbox im Internet gesendet werden, können nicht zugestellt werden. Non Delivery Report mit Fehler `550 5.7.64 TenantAttribution; Relay Access Denied` +- Mails, die von der mailcow an eine Mailbox im Internet gesendet werden, können nicht zugestellt werden. Non Delivery Report mit Fehler `550 5.7.64 TenantAttribution; Relay Access Denied` **Mögliche Lösung:** Die Authentifizierungsmethode ist fehlgeschlagen. Stellen Sie sicher, dass der Betreff des Zertifikats mit einer akzeptierten Domäne in Exchange übereinstimmt. Versuchen Sie stattdessen die Authentifizierung über eine statische IP. Microsoft-Anleitung für die Einrichtung des Connectors und zusätzliche Anforderungen: https://docs.microsoft.com/exchange/mail-flow-best-practices/use-connectors-to-configure-mail-flow/set-up-connectors-to-route-mail#prerequisites-for-your-on-premises-email-environment diff --git a/docs/third_party/gitea/third_party-gitea.de.md b/docs/third_party/gitea/third_party-gitea.de.md index ee3b5a879..cbe89577e 100644 --- a/docs/third_party/gitea/third_party-gitea.de.md +++ b/docs/third_party/gitea/third_party-gitea.de.md @@ -2,7 +2,7 @@ Mit der Fähigkeit von Gitea, sich über SMTP zu authentifizieren, ist es trivia 1\. Öffnen Sie `docker-compose.override.yml` und fügen Sie Gitea hinzu: -``` +```yaml version: '2.1' services: @@ -31,9 +31,36 @@ location /gitea/ { GITEA_SSH_PORT=127.0.0.1:4000 ``` -5\. Führen Sie `docker compose up -d` aus, um den Gitea-Container hochzufahren und führen Sie anschließend `docker compose restart nginx-mailcow` aus. +5\. Führen Sie folgenden Befehl aus, um den Gitea-Container hochzufahren und führen Sie anschließend einen Neustart von NGINX mit dem zweiten Befehl durch: -6\. Wenn Sie mailcow zu https gezwungen haben, führen Sie Schritt 9 aus und starten Sie gitea mit `docker compose restart gitea-mailcow` neu. Fahren Sie mit Schritt 7 fort (Denken Sie daran, https anstelle von http zu verwenden, `https://mx.example.org/gitea/` +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + docker-compose restart nginx-mailcow + ``` + +6\. Wenn Sie mailcow zu https gezwungen haben, führen Sie Schritt 9 aus und starten Sie gitea mit dem folgenden Befehl neu. +=== "docker compose (Plugin)" + + ``` bash + docker compose restart gitea-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart gitea-mailcow + ``` + +Fahren Sie mit Schritt 7 fort (Denken Sie daran, https anstelle von http zu verwenden, `https://mx.example.org/gitea/`) 7\. Öffnen Sie `http://${MAILCOW_HOSTNAME}/gitea/`, zum Beispiel `http://mx.example.org/gitea/`. Für die Datenbankdetails stellen Sie `mysql` als Datenbankhost ein. Verwenden Sie den in mailcow.conf gefundenen Wert von DBNAME als Datenbankname, DBUSER als Datenbankbenutzer und DBPASS als Datenbankpasswort. @@ -41,7 +68,7 @@ GITEA_SSH_PORT=127.0.0.1:4000 9\. Erstellen Sie `data/gitea/gitea/conf/app.ini` und setzen Sie die folgenden Werte. Sie können [gitea cheat sheet, leider bisher nur in Englisch verfügbar](https://docs.gitea.io/en-us/config-cheat-sheet/) für deren Bedeutung und andere mögliche Werte konsultieren. -``` +```ini [server] SSH_LISTEN_PORT = 22 # Für GITEA_SSH_PORT=127.0.0.1:4000 in mailcow.conf, setzen: @@ -51,5 +78,17 @@ SSH_PORT = 4000 ROOT_URL = https://mx.example.org/gitea/ ``` -10\. Starten Sie gitea neu mit `docker compose restart gitea-mailcow`. Ihre Nutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten anzumelden. +10\. Starten Sie gitea neu mit dem kommenden Befehl. Ihre Nutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten anzumelden. + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart gitea-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart gitea-mailcow + ``` diff --git a/docs/third_party/gitea/third_party-gitea.en.md b/docs/third_party/gitea/third_party-gitea.en.md index 01c847dea..6679f4e71 100644 --- a/docs/third_party/gitea/third_party-gitea.en.md +++ b/docs/third_party/gitea/third_party-gitea.en.md @@ -2,7 +2,7 @@ With Gitea' ability to authenticate over SMTP it is trivial to integrate it with 1\. Open `docker-compose.override.yml` and add gitea: -``` +```yaml version: '2.1' services: @@ -31,9 +31,37 @@ location /gitea/ { GITEA_SSH_PORT=127.0.0.1:4000 ``` -5\. Run `docker compose up -d` to bring up the gitea container and run `docker compose restart nginx-mailcow` afterwards. +5\. Run the commands to bring up the gitea container and restart the nginx-mailcow container afterwards: -6\. If you forced mailcow to https, execute step 9 and restart gitea with `docker compose restart gitea-mailcow` . Go head with step 7 (Remember to use https instead of http, `https://mx.example.org/gitea/` +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + docker-compose restart nginx-mailcow + ``` + +6\. If you forced mailcow to https, execute step 9 and restart gitea with the following command: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart gitea-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart gitea-mailcow + ``` + +Go head with step 7 (Remember to use https instead of http, `https://mx.example.org/gitea/`) 7\. Open `http://${MAILCOW_HOSTNAME}/gitea/`, for example `http://mx.example.org/gitea/`. For database details set `mysql` as database host. Use the value of DBNAME found in mailcow.conf as database name, DBUSER as database user and DBPASS as database password. @@ -41,7 +69,7 @@ GITEA_SSH_PORT=127.0.0.1:4000 9\. Create `data/gitea/gitea/conf/app.ini` and set following values. You can consult [gitea cheat sheet](https://docs.gitea.io/en-us/config-cheat-sheet/) for their meaning and other possible values. -``` +```ini [server] SSH_LISTEN_PORT = 22 # For GITEA_SSH_PORT=127.0.0.1:4000 in mailcow.conf, set: @@ -51,4 +79,16 @@ SSH_PORT = 4000 ROOT_URL = https://mx.example.org/gitea/ ``` -10\. Restart gitea with `docker compose restart gitea-mailcow`. Your users should be able to login with mailcow managed accounts. \ No newline at end of file +10\. Restart gitea with the following command. Your users should be able to login with mailcow managed accounts. + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart gitea-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart gitea-mailcow + ``` \ No newline at end of file diff --git a/docs/third_party/gogs/third_party-gogs.de.md b/docs/third_party/gogs/third_party-gogs.de.md index b31178b45..1fd839e8b 100644 --- a/docs/third_party/gogs/third_party-gogs.de.md +++ b/docs/third_party/gogs/third_party-gogs.de.md @@ -2,7 +2,7 @@ Mit Gogs' Fähigkeit, sich über SMTP zu authentifizieren, ist es einfach, es mi 1\. Öffne `docker-compose.override.yml` und füge Gogs hinzu: -``` +```yaml version: '2.1' services: @@ -31,7 +31,21 @@ location /gogs/ { GOGS_SSH_PORT=127.0.0.1:4000 ``` -5\. Führen Sie `docker compose up -d` aus, um den Gogs-Container hochzufahren und führen Sie anschließend `docker compose restart nginx-mailcow` aus. +5\. Führen Sie folgenden Befehl aus, um den Gogs-Container hochzufahren und führen Sie anschließend einen Neustart von NGINX mit dem zweiten Befehl durch: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + docker-compose restart nginx-mailcow + ``` 6\. Öffnen Sie `http://${MAILCOW_HOSTNAME}/gogs/`, zum Beispiel `http://mx.example.org/gogs/`. Für Datenbank-Details setzen Sie `mysql` als Datenbank-Host. Verwenden Sie den in mailcow.conf gefundenen Wert von DBNAME als Datenbankname, DBUSER als Datenbankbenutzer und DBPASS als Datenbankpasswort. @@ -39,7 +53,7 @@ GOGS_SSH_PORT=127.0.0.1:4000 8\. Erstellen Sie `data/gogs/gogs/conf/app.ini` und setzen Sie die folgenden Werte. Sie können [Gogs cheat sheet](https://gogs.io/docs/advanced/configuration_cheat_sheet) für ihre Bedeutung und andere mögliche Werte konsultieren. -``` +```ini [server] SSH_LISTEN_PORT = 22 # Für GOGS_SSH_PORT=127.0.0.1:4000 in mailcow.conf, setzen: @@ -49,5 +63,17 @@ SSH_PORT = 4000 ROOT_URL = https://mx.example.org/gogs/ ``` -9\. Starten Sie Gogs neu mit `docker compose restart gogs-mailcow`. Ihre Benutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten einzuloggen. +9\. Starten Sie Gogs neu mit dem kommenden Befehl. Ihre Nutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten anzumelden. + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart gogs-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart gogs-mailcow + ``` diff --git a/docs/third_party/gogs/third_party-gogs.en.md b/docs/third_party/gogs/third_party-gogs.en.md index d21af1ae5..27a890cf3 100644 --- a/docs/third_party/gogs/third_party-gogs.en.md +++ b/docs/third_party/gogs/third_party-gogs.en.md @@ -2,7 +2,7 @@ With Gogs' ability to authenticate over SMTP it is trivial to integrate it with 1\. Open `docker-compose.override.yml` and add Gogs: -``` +```yaml version: '2.1' services: @@ -31,7 +31,21 @@ location /gogs/ { GOGS_SSH_PORT=127.0.0.1:4000 ``` -5\. Run `docker compose up -d` to bring up the Gogs container and run `docker compose restart nginx-mailcow` afterwards. +5\. Run the commands to bring up the Gogs container and restart the nginx-mailcow container afterwards: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + docker-compose restart nginx-mailcow + ``` 6\. Open `http://${MAILCOW_HOSTNAME}/gogs/`, for example `http://mx.example.org/gogs/`. For database details set `mysql` as database host. Use the value of DBNAME found in mailcow.conf as database name, DBUSER as database user and DBPASS as database password. @@ -39,7 +53,7 @@ GOGS_SSH_PORT=127.0.0.1:4000 8\. Create `data/gogs/gogs/conf/app.ini` and set following values. You can consult [Gogs cheat sheet](https://gogs.io/docs/advanced/configuration_cheat_sheet) for their meaning and other possible values. -``` +```ini [server] SSH_LISTEN_PORT = 22 # For GOGS_SSH_PORT=127.0.0.1:4000 in mailcow.conf, set: @@ -49,4 +63,16 @@ SSH_PORT = 4000 ROOT_URL = https://mx.example.org/gogs/ ``` -9\. Restart Gogs with `docker compose restart gogs-mailcow`. Your users should be able to login with mailcow managed accounts. \ No newline at end of file +9\. Restart Gogs with the following command. Your users should be able to login with mailcow managed accounts. + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart gogs-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart gogs-mailcow + ``` \ No newline at end of file diff --git a/docs/third_party/mailman3/third_party-mailman3.de.md b/docs/third_party/mailman3/third_party-mailman3.de.md index cbd2c7396..4d272c266 100644 --- a/docs/third_party/mailman3/third_party-mailman3.de.md +++ b/docs/third_party/mailman3/third_party-mailman3.de.md @@ -3,7 +3,7 @@ !!! info Diese Anleitung ist eine Kopie von [dockerized-mailcow-mailman](https://github.com/g4rf/dockerized-mailcow-mailman). Bitte posten Sie Probleme, Fragen und Verbesserungen in den [issue tracker](https://github.com/g4rf/dockerized-mailcow-mailman/issues) dort. -!!! warning +!!! warning "Warnung" mailcow ist nicht verantwortlich für Datenverlust, Hardwareschäden oder kaputte Tastaturen. Diese Anleitung kommt ohne jegliche Garantie. Macht Backups bevor ihr anfangt, **Kein Backup kein Mitleid!** ## Einleitung @@ -90,9 +90,9 @@ certbot certonly -d MAILMAN_DOMAIN #### Installieren Sie mailcow -Folgen Sie der [mailcow installation](../../i_u_m/i_u_m_install.de.md). **Schritt 5 auslassen und nicht mit `docker compose` starten!** +Folgen Sie der [mailcow installation](../../i_u_m/i_u_m_install.de.md). **Schritt 5 auslassen und nicht mit starten!** -#### Mailcow konfigurieren +#### mailcow konfigurieren Dies ist auch **Schritt 4** in der offiziellen *mailcow-Installation* (`nano mailcow.conf`). Passen Sie also Ihre Bedürfnisse an und ändern Sie die folgenden Variablen: @@ -272,19 +272,37 @@ Sie können `LANGUAGE_CODE` und `SOCIALACCOUNT_PROVIDERS` an Ihre Bedürfnisse a Ausführen (als *root* oder *sudo*) -``` -a2ensite mailcow.conf -a2ensite mailman.conf -systemctl restart apache2 +=== "docker compose (Plugin)" -cd /opt/docker-mailman -docker compose pull -docker compose up -d + ``` bash + a2ensite mailcow.conf + a2ensite mailman.conf + systemctl restart apache2 -cd /opt/mailcow-dockerized/ -docker compose pull -./renew-ssl.sh -``` + cd /opt/docker-mailman + docker compose pull + docker compose up -d + + cd /opt/mailcow-dockerized/ + docker compose pull + ./renew-ssl.sh + ``` + +=== "docker-compose (Standalone)" + + ``` bash + a2ensite mailcow.conf + a2ensite mailman.conf + systemctl restart apache2 + + cd /opt/docker-mailman + docker-compose pull + docker-compose up -d + + cd /opt/mailcow-dockerized/ + docker-compose pull + ./renew-ssl.sh + ``` **Warten Sie ein paar Minuten!** Die Container müssen ihre Datenbanken und Konfigurationsdateien erstellen. Dies kann bis zu 1 Minute und mehr dauern. @@ -294,10 +312,19 @@ docker compose pull Wenn man eine neue Liste anlegt und versucht, sofort eine E-Mail zu versenden, antwortet *postfix* mit `Benutzer existiert nicht`, weil *postfix* die Liste noch nicht an *Mailman* übergeben hat. Die Konfiguration unter `/opt/mailman/core/var/data/postfix_lmtp` wird nicht sofort aktualisiert. Wenn Sie die Liste sofort benötigen, starten Sie *postifx* manuell neu: -``` -cd /opt/mailcow-dockerized -docker compose restart postfix-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + cd /opt/mailcow-dockerized + docker compose restart postfix-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /opt/mailcow-dockerized + docker-compose restart postfix-mailcow + ``` ## Update diff --git a/docs/third_party/mailman3/third_party-mailman3.en.md b/docs/third_party/mailman3/third_party-mailman3.en.md index 2fbe38b3d..2eef1f3bf 100644 --- a/docs/third_party/mailman3/third_party-mailman3.en.md +++ b/docs/third_party/mailman3/third_party-mailman3.en.md @@ -91,7 +91,7 @@ certbot certonly -d MAILMAN_DOMAIN #### Install mailcow -Follow the [mailcow installation](../../i_u_m/i_u_m_install.en.md). **Omit step 5 and do not pull and up with `docker compose`!** +Follow the [mailcow installation](../../i_u_m/i_u_m_install.en.md). **Omit step 5 and do not pull and start!** #### Configure mailcow @@ -273,19 +273,37 @@ You can change `LANGUAGE_CODE` and `SOCIALACCOUNT_PROVIDERS` to your needs. Run (as *root* or *sudo*) -``` -a2ensite mailcow.conf -a2ensite mailman.conf -systemctl restart apache2 +=== "docker compose (Plugin)" -cd /opt/docker-mailman -docker compose pull -docker compose up -d + ``` bash + a2ensite mailcow.conf + a2ensite mailman.conf + systemctl restart apache2 -cd /opt/mailcow-dockerized/ -docker compose pull -./renew-ssl.sh -``` + cd /opt/docker-mailman + docker compose pull + docker compose up -d + + cd /opt/mailcow-dockerized/ + docker compose pull + ./renew-ssl.sh + ``` + +=== "docker-compose (Standalone)" + + ``` bash + a2ensite mailcow.conf + a2ensite mailman.conf + systemctl restart apache2 + + cd /opt/docker-mailman + docker-compose pull + docker-compose up -d + + cd /opt/mailcow-dockerized/ + docker-compose pull + ./renew-ssl.sh + ``` **Wait a few minutes!** The containers have to create there databases and config files. This can last up to 1 minute and more. @@ -295,10 +313,19 @@ docker compose pull When you create a new list and try to immediately send an e-mail, *postfix* responses with `User doesn't exist`, because *postfix* won't deliver it to *Mailman* yet. The configuration at `/opt/mailman/core/var/data/postfix_lmtp` is not instantly updated. If you need the list instantly, restart *postifx* manually: -``` -cd /opt/mailcow-dockerized -docker compose restart postfix-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + cd /opt/mailcow-dockerized + docker compose restart postfix-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + cd /opt/mailcow-dockerized + docker-compose restart postfix-mailcow + ``` ## Update diff --git a/docs/third_party/mailpiler/third_party-mailpiler_integration.de.md b/docs/third_party/mailpiler/third_party-mailpiler_integration.de.md index 524135733..4741827eb 100644 --- a/docs/third_party/mailpiler/third_party-mailpiler_integration.de.md +++ b/docs/third_party/mailpiler/third_party-mailpiler_integration.de.md @@ -36,7 +36,7 @@ Hinweis: Die Dateipfade können je nach Einrichtung variieren. - Eine funktionierende mailpiler Instanz ([Sie finden eine Installationsanleitung hier](https://patrik.kernstock.net/2020/08/mailpiler-installation-guide/), [überprüfen Sie unterstützte Versionen hier](https://github.com/patschi/mailpiler-mailcow-integration#piler)) - Ein mailcow API-Schlüssel (Nur-Lesen funktioniert): `Konfiguration & Details - Zugang - Nur-Lesen-Zugang`. Vergessen Sie nicht, den API-Zugang von Ihrer mailpiler IP zu erlauben. -!!! warning +!!! warning "Warnung" Da mailpiler sich gegenüber mailcow, unserem IMAP-Server, authentifiziert, können fehlgeschlagene Logins von Nutzern oder Bots eine Sperre für Ihre mailpiler-Instanz auslösen. Daher sollten Sie in Erwägung ziehen, die IP-Adresse der mailpiler-Instanz innerhalb von mailcow auf eine Whitelist zu setzen: `Konfiguration & Details - Konfiguration - Fail2ban-Parameter - Whitelisted networks/hosts`. ### Einrichtung diff --git a/docs/third_party/nextcloud/third_party-nextcloud.de.md b/docs/third_party/nextcloud/third_party-nextcloud.de.md index 6e4b84692..e3dab19dd 100644 --- a/docs/third_party/nextcloud/third_party-nextcloud.de.md +++ b/docs/third_party/nextcloud/third_party-nextcloud.de.md @@ -6,14 +6,28 @@ Nextcloud kann mit dem [helper script](https://github.com/mailcow/mailcow-docker Für den Fall, dass Sie das Passwort (z.B. für admin) vergessen haben und kein neues anfordern können [über den Passwort-Reset-Link auf dem Login-Bildschirm] (https://docs.nextcloud.com/server/20/admin_manual/configuration_user/reset_admin_password.html?highlight=reset), können Sie durch den Aufruf des Helper-Skripts mit `-r` als Parameter ein neues Passwort setzen. Verwenden Sie diese Option nur, wenn Ihre Nextcloud nicht so konfiguriert ist, dass Sie mailcow zur Authentifizierung verwendet, wie im nächsten Abschnitt beschrieben. -Damit mailcow ein Zertifikat für die Nextcloud Domain generieren kann, muss die Domain unter welcher die Nextcloud später erreichbar sein soll als ADDITIONAL_SAN in die mailcow.conf hinzufügt werden und `docker compose up -d` zur Übernahme ausgeführt werden. Für weitere Informationen siehe: [Erweitertes SSL](../../post_installation/firststeps-ssl.de.md). +Damit mailcow ein Zertifikat für die Nextcloud Domain generieren kann, muss die Domain unter welcher die Nextcloud später erreichbar sein soll als ADDITIONAL_SAN in die mailcow.conf hinzufügt werden und folgender Befehl zur Übernahme ausgeführt werden. + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +Für weitere Informationen siehe: [Erweitertes SSL](../../post_installation/firststeps-ssl.de.md). ## Hintergrund-Aufgaben Zur Verwendung der empfohlenen Einstellung (Cron) zur Verarbeitung der Hintergrund-Aufgaben müssen in der `docker-compose.override.yml` folgende Zeilen hinzugefügt werden: -``` +```yaml version: '2.1' services: php-fpm-mailcow: @@ -23,10 +37,48 @@ services: ofelia.job-exec.nextcloud-cron.command: "su www-data -s /bin/bash -c \"/usr/local/bin/php -f /web/nextcloud/cron.php\"" ``` -Nachdem diese Zeilen hinzugefügt wurden muss `docker compose up -d` ausgeführt werden, um das Docker Image mit den entsprechenden Labels zu versehen. Danach muss - zudem der docker scheduler neu gestartet werden, um den neuen Job zu registrieren. Dazu wird `docker compose restart ofelia-mailcow` ausgeführt. Zur - Überprüfung, ob die `ofelia` Konfiguration korrekt ist geladen wurde, kann mittels `docker compose logs ofelia-mailcow` nach einer Zeile mit dem Inhalt - `New job registered "nextcloud-cron" - ...` gesucht werden. +Nachdem diese Zeilen hinzugefügt wurden muss der folgende Befehl ausgeführt werden, um das Docker Image mit den entsprechenden Labels zu versehen. + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +Danach muss zudem der docker scheduler neu gestartet werden, um den neuen Job zu registrieren. Dazu wird der folgende Befehl ausgeführt. + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart ofelia-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart ofelia-mailcow + ``` + +Zur Überprüfung, ob die `ofelia` Konfiguration korrekt ist geladen wurde, kann mittels dem untenstehenden Befehl nach einer Zeile mit dem Inhalt + `New job registered "nextcloud-cron" - ...` gesucht werden: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs ofelia-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs ofelia-mailcow + ``` Hierdurch wird alle 5 Minuten die Hintergrundverarbeitung gestartet. Da die Ausführung selbst keine Ausgabe liefert, kann die korrekte Funktionsweise in den Grundeinstellungen von Nextcloud überprüft werden. Hier wird automatisch mit der ersten Ausführung die Hintergrund-Aufgaben Verarbeitung auf `(X) Cron` gesetzt @@ -38,10 +90,14 @@ Im Folgenden wird beschrieben, wie die Authentifizierung über mailcow unter Ver 1\. Melden Sie sich bei mailcow als Administrator an. -2\. Scrollen Sie nach unten zu _OAuth2 Apps_ und klicken Sie auf die Schaltfläche _Hinzufügen_. Geben Sie die Redirect URI als `https://cloud.example.com/index.php/apps/sociallogin/custom_oauth2/Mailcow` an und klicken Sie auf _Hinzufügen_. Speichern Sie die Client-ID und das Geheimnis für später. +2\. Klicken Sie im Dropdown Menü (oben rechts) auf Konfiguration. + +3\. Wählen Sie dann im Reiter "Zugang" den Dropdown Punkt OAuth2 aus. + +4\. Scrollen Sie nach unten und klicken Sie auf die Schaltfläche _Füge OAuth2 Client hinzu_. Geben Sie die Redirect URI als `https://cloud.example.com/index.php/apps/sociallogin/custom_oauth2/mailcow` an und klicken Sie auf _Hinzufügen_. Speichern Sie die Client-ID und das Geheimnis für später. !!! info - Einige Installationen, einschließlich derer, die mit dem Helper-Skript von mailcow eingerichtet wurden, müssen index.php/ aus der URL entfernen, um einen erfolgreichen Redirect zu erhalten: `https://cloud.example.com/apps/sociallogin/custom_oauth2/Mailcow` + Einige Installationen, einschließlich derer, die mit dem Helper-Skript von mailcow eingerichtet wurden, müssen index.php/ aus der URL entfernen, um einen erfolgreichen Redirect zu erhalten: `https://cloud.example.com/apps/sociallogin/custom_oauth2/mailcow` 3\. Melden Sie sich bei Nextcloud als Administrator an. @@ -68,8 +124,8 @@ Klicken Sie auf die Schaltfläche _Speichern_. 8\. Scrollen Sie nach unten zu _Custom OAuth2_ und klicken Sie auf die Schaltfläche _+_. 9\. Konfigurieren Sie die Parameter wie folgt: -- Interner Name: `Mailcow` -- Titel: `Mailcow` +- Interner Name: `mailcow` +- Titel: `mailcow` - API Basis-URL: `https://mail.example.com` - Autorisierungs-URL: `https://mail.example.com/oauth/authorize` - Token-URL: `https://mail.example.com/oauth/token` @@ -86,19 +142,46 @@ Klicken Sie auf die Schaltfläche _Speichern_ ganz unten auf der Seite. Wenn Sie bisher Nextcloud mit mailcow-Authentifizierung über user\_external/IMAP verwendet haben, müssen Sie einige zusätzliche Schritte durchführen, um Ihre bestehenden Benutzerkonten mit OAuth2 zu verknüpfen. 1\. Klicken Sie auf die Schaltfläche in der oberen rechten Ecke und wählen Sie _Apps_. Scrollen Sie nach unten zur App _Externe Benutzerauthentifizierung_ und klicken Sie daneben auf _Entfernen_. -2\. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie `source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME` ausführen): -``` -INSERT INTO nc_users (uid, uid_lower) SELECT DISTINCT uid, LOWER(uid) FROM nc_users_external; -INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users_external; + +2\. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie folgenden Befehl nutzen um in den Container zu gelangen) + +=== "docker compose (Plugin)" + + ``` bash + source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME + ``` + +=== "docker-compose (Standalone)" + + ``` bash + source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME + ``` + +```sql +INSERT INTO oc_users (uid, uid_lower) SELECT DISTINCT uid, LOWER(uid) FROM oc_users_external; +INSERT INTO oc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("mailcow-", uid) FROM oc_users_external; ``` --- Wenn Sie Nextcloud bisher ohne mailcow-Authentifizierung, aber mit den gleichen Benutzernamen wie mailcow genutzt haben, können Sie Ihre bestehenden Benutzerkonten auch mit OAuth2 verknüpfen. -1\. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie `source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME` ausführen): -``` -INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users; +1\. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie folgenden Befehl nutzen um in den Container zu gelangen): + +=== "docker compose (Plugin)" + + ``` bash + source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME + ``` + +=== "docker-compose (Standalone)" + + ``` bash + source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME + ``` + +```sql +INSERT INTO oc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("mailcow-", uid) FROM oc_users; ``` --- @@ -108,7 +191,8 @@ INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT Die Nextcloud-Instanz kann einfach mit dem Web-Update-Mechanismus aktualisiert werden. Bei größeren Updates können nach dem Update weitere Änderungen vorgenommen werden. Nachdem die Nextcloud-Instanz geprüft wurde, werden Probleme angezeigt. Dies können z.B. fehlende Indizes in der DB oder ähnliches sein. Es wird angezeigt, welche Befehle ausgeführt werden müssen, diese müssen im php-fpm-mailcow Container platziert werden. -Führen Sie z.B. folgenden Befehl aus, um die fehlenden Indizes hinzuzufügen +Führen Sie z.B. folgenden Befehl aus, um die fehlenden Indizes hinzuzufügen: + `docker exec -it -u www-data $(docker ps -f name=php-fpm-mailcow -q) bash -c "php /web/nextcloud/occ db:add-missing-indices"` --- @@ -117,7 +201,7 @@ Führen Sie z.B. folgenden Befehl aus, um die fehlenden Indizes hinzuzufügen Es kann vorkommen, dass Sie die Nextcloud-Instanz von Ihrem Netzwerk aus nicht erreichen können. Dies kann daran liegen, dass der Eintrag Ihres Subnetzes im Array 'trusted_proxies' fehlt. Sie können Änderungen in der Nextcloud config.php in `data/web/nextcloud/config/*` vornehmen. -``` +```php 'trusted_proxies' => array ( 0 => 'fd4d:6169:6c63:6f77::/64', @@ -127,4 +211,14 @@ Es kann vorkommen, dass Sie die Nextcloud-Instanz von Ihrem Netzwerk aus nicht e ``` Nachdem die Änderungen vorgenommen wurden, muss der nginx-Container neu gestartet werden. -`docker compose restart nginx-mailcow` \ No newline at end of file +=== "docker compose (Plugin)" + + ``` bash + docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart nginx-mailcow + ``` \ No newline at end of file diff --git a/docs/third_party/nextcloud/third_party-nextcloud.en.md b/docs/third_party/nextcloud/third_party-nextcloud.en.md index e93479fb7..7f49b6f26 100644 --- a/docs/third_party/nextcloud/third_party-nextcloud.en.md +++ b/docs/third_party/nextcloud/third_party-nextcloud.en.md @@ -6,13 +6,27 @@ Nextcloud can be set up (parameter `-i`) and removed (parameter `-p`) with the [ In case you have forgotten the password (e.g. for admin) and can't request a new one [via the password reset link on the login screen](https://docs.nextcloud.com/server/20/admin_manual/configuration_user/reset_admin_password.html?highlight=reset) calling the helper script with `-r` as parameter allows you to set a new password. Only use this option if your Nextcloud isn't configured to use mailcow for authentication as described in the next section. -In order for mailcow to generate a a certificate for the nextcloud domain you need to add "nextcloud.domain.tld" to ADDITIONAL_SAN in mailcow.conf and run `docker compose up -d` to apply. For more informaton refer to: [Advanced SSL](../../post_installation/firststeps-ssl.en.md). +In order for mailcow to generate a a certificate for the nextcloud domain you need to add "nextcloud.domain.tld" to ADDITIONAL_SAN in mailcow.conf and runthe following to apply: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +For more informaton refer to: [Advanced SSL](../../post_installation/firststeps-ssl.en.md). ## Background jobs To use the recommended setting (cron) to execute the background jobs following lines need to be added to the `docker-compose.override.yml`: -``` +```yaml version: '2.1' services: php-fpm-mailcow: @@ -22,9 +36,49 @@ services: ofelia.job-exec.nextcloud-cron.command: "su www-data -s /bin/bash -c \"/usr/local/bin/php -f /web/nextcloud/cron.php\"" ``` -After adding these lines the `docker compose up -d` command must be executed to update the docker image and also the docker scheduler image must be restarted to - pick up the new job definition by executing `docker compose restart ofelia-mailcow`. To check if the job was successfully picked up by `ofelia` the command - `docker compose logs ofelia-mailcow` will contain a line similar to `New job registered "nextcloud-cron" - ...`. +After adding these lines the following command must be executed to update the docker image: + +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d + ``` + +And also the docker scheduler image must be restarted to pick up the new job definition by executing: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart ofelia-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart ofelia-mailcow + ``` + +To check if the job was successfully picked up by `ofelia` the command: + +=== "docker compose (Plugin)" + + ``` bash + docker compose logs ofelia-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose logs ofelia-mailcow + ``` + +It should contain a line similar to `New job registered "nextcloud-cron" - ...`. By adding these lines the background jobs will be executed every 5 minutes. To verify that the execution works correctly, the only way is to see it in the basic settings when logged in as an admin in Nextcloud. If everything is correct the first scheduled execution will change the background jobs processing setting to @@ -36,18 +90,22 @@ The following describes how set up authentication via mailcow using the OAuth2 p 1\. Log into mailcow as administrator. -2\. Scroll down to _OAuth2 Apps_ and click the _Add_ button. Specify the redirect URI as `https://cloud.example.com/index.php/apps/sociallogin/custom_oauth2/Mailcow` and click _Add_. Save the client ID and secret for later. +2\. Click Configuration in the drop-down menu (top right). + +3\. Then, in the "Access" tab, select the OAuth2 drop-down item. + +4\. Scroll down and click the _Add OAuth2 client_ button. Specify the redirect URI as `https://cloud.example.com/index.php/apps/sociallogin/custom_oauth2/mailcow` and click _Add_. Save the client ID and secret for later. !!! info - Some installations, including those setup using the helper script of mailcow, need to remove index.php/ from the URL to get a successful redirect: `https://cloud.example.com/apps/sociallogin/custom_oauth2/Mailcow` + Some installations, including those setup using the helper script of mailcow, need to remove index.php/ from the URL to get a successful redirect: `https://cloud.example.com/apps/sociallogin/custom_oauth2/mailcow` -3\. Log into Nextcloud as administrator. +5\. Log into Nextcloud as administrator. -4\. Click the button in the top right corner and select _Apps_. Click the search button in the toolbar, search for the [_Social Login_](https://apps.nextcloud.com/apps/sociallogin) plugin and click _Download and enable_ next to it. +6\. Click the button in the top right corner and select _Apps_. Click the search button in the toolbar, search for the [_Social Login_](https://apps.nextcloud.com/apps/sociallogin) plugin and click _Download and enable_ next to it. -5\. Click the button in the top right corner and select _Settings_. Scroll down to the _Administration_ section on the left and click _Social login_. +7\. Click the button in the top right corner and select _Settings_. Scroll down to the _Administration_ section on the left and click _Social login_. -6\. Uncheck the following items: +8\. Uncheck the following items: - "Disable auto create new users" - "Allow users to connect social logins with their accounts" @@ -66,8 +124,8 @@ Click the _Save_ button. 8\. Scroll down to _Custom OAuth2_ and click the _+_ button. 9\. Configure the parameters as follows: -- Internal name: `Mailcow` -- Title: `Mailcow` +- Internal name: `mailcow` +- Title: `mailcow` - API Base URL: `https://mail.example.com` - Authorize URL: `https://mail.example.com/oauth/authorize` - Token URL: `https://mail.example.com/oauth/token` @@ -84,19 +142,44 @@ Click the _Save_ button at the very bottom of the page. If you have previously used Nextcloud with mailcow authentication via user\_external/IMAP, you need to perform some additional steps to link your existing user accounts with OAuth2. 1\. Click the button in the top right corner and select _Apps_. Scroll down to the _External user authentication_ app and click _Remove_ next to it. -2\. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run `source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME`): -``` -INSERT INTO nc_users (uid, uid_lower) SELECT DISTINCT uid, LOWER(uid) FROM nc_users_external; -INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users_external; +2\. Run the following queries in your Nextcloud database (if you set up Nextcloud with the script from mailcow, you can use the following command to get into the container): + +=== "docker compose (Plugin)" + + ``` bash + source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME + ``` + +=== "docker-compose (Standalone)" + + ``` bash + source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME + ``` + +```sql +INSERT INTO oc_users (uid, uid_lower) SELECT DISTINCT uid, LOWER(uid) FROM oc_users_external; +INSERT INTO oc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("mailcow-", uid) FROM oc_users_external; ``` --- If you have previously used Nextcloud without mailcow authentication, but with the same usernames as mailcow, you can also link your existing user accounts with OAuth2. -1\. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run `source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME`): -``` -INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users; +1\. Run the following queries in your Nextcloud database (if you set up Nextcloud with the script from mailcow, you can use the following command to get into the container): +=== "docker compose (Plugin)" + + ``` bash + source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME + ``` + +=== "docker-compose (Standalone)" + + ``` bash + source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME + ``` + +```sql +INSERT INTO oc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("mailcow-", uid) FROM oc_users; ``` --- @@ -125,4 +208,14 @@ It may happen that you cannot reach the Nextcloud instance from your network. Th ``` After the changes have been made, the nginx container must be restarted. -`docker compose restart nginx-mailcow` \ No newline at end of file +=== "docker compose (Plugin)" + + ``` bash + docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart nginx-mailcow + ``` \ No newline at end of file diff --git a/docs/third_party/portainer/third_party-portainer.de.md b/docs/third_party/portainer/third_party-portainer.de.md index 095b64301..ac9a23084 100644 --- a/docs/third_party/portainer/third_party-portainer.de.md +++ b/docs/third_party/portainer/third_party-portainer.de.md @@ -1,7 +1,7 @@ Um Portainer zu aktivieren, müssen die docker-compose.yml und site.conf für Nginx geändert werden. 1\. Erstellen Sie eine neue Datei `docker-compose.override.yml` im mailcow-dockerized Stammverzeichnis und fügen Sie die folgende Konfiguration ein -``` +```yaml version: '2.1' services: portainer-mailcow: @@ -19,7 +19,7 @@ services: - portainer ``` 2a\. Erstelle `data/conf/nginx/portainer.conf`: -``` +```conf upstream portainer { server portainer-mailcow:9000; } @@ -30,7 +30,7 @@ map $http_upgrade $connection_upgrade { } ``` -2b\. Fügen Sie einen neuen Standort für die Standard-Mailcow-Site ein, indem Sie die Datei `data/conf/nginx/site.portainer.custom` erstellen: +2b\. Fügen Sie einen neuen Standort für die Standard-mailcow-Site ein, indem Sie die Datei `data/conf/nginx/site.portainer.custom` erstellen: ``` location /portainer/ { proxy_http_version 1.1; @@ -54,9 +54,17 @@ map $http_upgrade $connection_upgrade { ``` 3\. Übernehmen Sie Ihre Änderungen: -``` -docker compose up -d && docker compose restart nginx-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d && docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d && docker-compose restart nginx-mailcow + ``` Nun können Sie einfach zu https://${MAILCOW_HOSTNAME}/portainer/ navigieren, um Ihre Portainer-Container-Überwachungsseite anzuzeigen. Sie werden dann aufgefordert, ein neues Passwort für den **admin** Account anzugeben. Nachdem Sie Ihr Passwort eingegeben haben, können Sie sich mit der Portainer UI verbinden. diff --git a/docs/third_party/portainer/third_party-portainer.en.md b/docs/third_party/portainer/third_party-portainer.en.md index 72c23924f..87128bd52 100644 --- a/docs/third_party/portainer/third_party-portainer.en.md +++ b/docs/third_party/portainer/third_party-portainer.en.md @@ -1,7 +1,7 @@ In order to enable Portainer, the docker-compose.yml and site.conf for Nginx must be modified. 1\. Create a new file `docker-compose.override.yml` in the mailcow-dockerized root folder and insert the following configuration -``` +```yaml version: '2.1' services: portainer-mailcow: @@ -54,9 +54,17 @@ map $http_upgrade $connection_upgrade { ``` 3\. Apply your changes: -``` -docker compose up -d && docker compose restart nginx-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose up -d && docker compose restart nginx-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose up -d && docker-compose restart nginx-mailcow + ``` Now you can simply navigate to https://${MAILCOW_HOSTNAME}/portainer/ to view your Portainer container monitoring page. You’ll then be prompted to specify a new password for the **admin** account. After specifying your password, you’ll then be able to connect to the Portainer UI. diff --git a/docs/third_party/roundcube/third_party-roundcube.de.md b/docs/third_party/roundcube/third_party-roundcube.de.md index b48b765d7..5d8329332 100644 --- a/docs/third_party/roundcube/third_party-roundcube.de.md +++ b/docs/third_party/roundcube/third_party-roundcube.de.md @@ -1,9 +1,9 @@ ## Installation von Roundcube Laden Sie Roundcube 1.6.x in das Web htdocs Verzeichnis herunter und entpacken Sie es (hier `rc/`): -``` +```bash # Prüfen Sie, ob eine neuere Version vorliegt! -cd daten/web +cd data/web wget -O - https://github.com/roundcube/roundcubemail/releases/download/1.6.0/roundcubemail-1.6.0-complete.tar.gz | tar xfvz - # Ändern Sie den Ordnernamen @@ -14,7 +14,7 @@ chown -R root: rc/ ``` Wenn Sie eine Rechtschreibprüfung benötigen, erstellen Sie eine Datei `data/hooks/phpfpm/aspell.sh` mit folgendem Inhalt und geben Sie dann `chmod +x data/hooks/phpfpm/aspell.sh` ein. Dadurch wird eine lokale Rechtschreibprüfung installiert. Beachten Sie, dass die meisten modernen Webbrowser eine eingebaute Rechtschreibprüfung haben, so dass Sie diese vielleicht nicht benötigen. -``` +```bash #!/bin/bash apk update apk add aspell-de # oder jede andere Sprache @@ -24,7 +24,7 @@ Erstellen Sie eine Datei `data/web/rc/config/config.inc.php` mit dem folgenden I - **Ändern Sie den Parameter `des_key` auf einen Zufallswert.** Er wird verwendet, um Ihr IMAP-Passwort vorübergehend zu speichern. - Der `db_prefix` ist optional, wird aber empfohlen. - Wenn Sie die Rechtschreibprüfung im obigen Schritt nicht installiert haben, entfernen Sie den Parameter `spellcheck_engine` und ersetzen ihn durch `$config['enable_spellcheck'] = false;`. -``` +```php array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true) @@ -81,7 +81,7 @@ $config['managesieve_vacation'] = 1; Öffnen Sie `data/web/rc/config/config.inc.php` und aktivieren Sie das Passwort-Plugin: -``` +```php [...] $config['plugins'] = array( 'archive', @@ -92,7 +92,7 @@ $config['plugins'] = array( Öffnen Sie `data/web/rc/plugins/password/password.php`, suchen Sie nach `case 'ssha':` und fügen Sie oben hinzu: -``` +```php case 'ssha256': $salt = rcube_utils::random_bytes(8); $crypted = base64_encode( hash('sha256', $password . $salt, TRUE ) . $salt ); @@ -102,7 +102,7 @@ $config['plugins'] = array( Öffnen Sie `data/web/rc/plugins/password/config.inc.php` und ändern Sie die folgenden Parameter (oder fügen Sie sie am Ende der Datei hinzu): -``` +```php $config['password_driver'] = 'sql'; $config['password_algorithm'] = 'ssha256'; $config['password_algorithm_prefix'] = '{SSHA256}'; @@ -112,14 +112,14 @@ $config['password_query'] = "UPDATE mailbox SET password = %P WHERE username = % ## CardDAV Adressbücher in Roundcube einbinden Laden Sie die neueste Version von [RCMCardDAV](https://github.com/mstilkerich/rcmcarddav) in das Roundcube Plugin Verzeichnis und entpacken Sie es (hier `rc/plugins`): -``` +```bash cd data/web/rc/plugins wget -O - https://github.com/mstilkerich/rcmcarddav/releases/download/v4.4.1/carddav-v4.4.1-roundcube16.tar.gz | tar xfvz - chown -R root: carddav/ ``` Kopieren Sie die Datei `config.inc.php.dist` nach `config.inc.php` (hier in `rc/plugins/carddav`) und fügen Sie die folgende Voreinstellung an das Ende der Datei an - vergessen Sie nicht, `mx.example.org` durch Ihren eigenen Hostnamen zu ersetzen: -``` +```php $prefs['SOGo'] = array( 'name' => 'SOGo', 'username' => '%u', @@ -147,7 +147,7 @@ Um dies zu tun, öffnen oder erstellen Sie `data/web/inc/vars.local.inc.php` und *HINWEIS: Vergessen Sie nicht, das ` (preg_match("/^(yes|y)+$/i", $_ENV["ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE"])) ? 'true' : 'false', ``` -Bearbeiten Sie `data/web/templates/mailbox.twig` und fügen Sie diesen Code am Ende des [javascript-Abschnitts] ein (https://github.com/mailcow/mailcow-dockerized/blob/2f9da5ae93d93bf62a8c2b7a5a6ae50a41170c48/data/web/templates/mailbox.twig#L49-L57): +Bearbeiten Sie `data/web/templates/mailbox.twig` und fügen Sie diesen Code am Ende des [javascript-Abschnitts](https://github.com/mailcow/mailcow-dockerized/blob/2f9da5ae93d93bf62a8c2b7a5a6ae50a41170c48/data/web/templates/mailbox.twig#L49-L57) ein: ```js var ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE = {{ allow_admin_email_login_roundcube }}; @@ -251,10 +251,19 @@ Kopieren Sie den Inhalt der folgenden Dateien aus diesem [Snippet](https://gitla Starten Sie schließlich mailcow neu -``` -docker compose down -docker compose up -d -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose down + docker compose up -d + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down + docker-compose up -d + ``` diff --git a/docs/third_party/roundcube/third_party-roundcube.en.md b/docs/third_party/roundcube/third_party-roundcube.en.md index 9168f2e44..162e01c9e 100644 --- a/docs/third_party/roundcube/third_party-roundcube.en.md +++ b/docs/third_party/roundcube/third_party-roundcube.en.md @@ -1,7 +1,7 @@ ## Installing Roundcube Download Roundcube 1.6.x to the web htdocs directory and extract it (here `rc/`): -``` +```bash # Check for a newer release! cd data/web wget -O - https://github.com/roundcube/roundcubemail/releases/download/1.6.0/roundcubemail-1.6.0-complete.tar.gz | tar xfvz - @@ -14,7 +14,7 @@ chown -R root: rc/ ``` If you need spell check features, create a file `data/hooks/phpfpm/aspell.sh` with the following content, then `chmod +x data/hooks/phpfpm/aspell.sh`. This installs a local spell check engine. Note, most modern web browsers have built in spell check, so you may not want/need this. -``` +```bash #!/bin/bash apk update apk add aspell-en # or any other language @@ -24,7 +24,7 @@ Create a file `data/web/rc/config/config.inc.php` with the following content. - **Change the `des_key` parameter to a random value.** It is used to temporarily store your IMAP password. - The `db_prefix` is optional but recommended. - If you didn't install spell check in the above step, remove `spellcheck_engine` parameter and replace it with `$config['enable_spellcheck'] = false;`. -``` +```php array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true) @@ -81,7 +81,7 @@ $config['managesieve_vacation'] = 1; Open `data/web/rc/config/config.inc.php` and enable the password plugin: -``` +```php ... $config['plugins'] = array( 'archive', @@ -92,7 +92,7 @@ $config['plugins'] = array( Open `data/web/rc/plugins/password/password.php`, search for `case 'ssha':` and add above: -``` +```php case 'ssha256': $salt = rcube_utils::random_bytes(8); $crypted = base64_encode( hash('sha256', $password . $salt, TRUE ) . $salt ); @@ -102,7 +102,7 @@ Open `data/web/rc/plugins/password/password.php`, search for `case 'ssha':` and Open `data/web/rc/plugins/password/config.inc.php` and change the following parameters (or add them at the bottom of that file): -``` +```php $config['password_driver'] = 'sql'; $config['password_algorithm'] = 'ssha256'; $config['password_algorithm_prefix'] = '{SSHA256}'; @@ -112,14 +112,14 @@ $config['password_query'] = "UPDATE mailbox SET password = %P WHERE username = % ## Integrate CardDAV addressbooks in Roundcube Download the latest release of [RCMCardDAV](https://github.com/mstilkerich/rcmcarddav) to the Roundcube plugin directory and extract it (here `rc/plugins`): -``` +```bash cd data/web/rc/plugins wget -O - https://github.com/mstilkerich/rcmcarddav/releases/download/v4.4.1/carddav-v4.4.1-roundcube16.tar.gz | tar xfvz - chown -R root: carddav/ ``` Copy the file `config.inc.php.dist` to `config.inc.php` (here in `rc/plugins/carddav`) and append the following preset to the end of the file - don't forget to replace `mx.example.org` with your own hostname: -``` +```php $prefs['SOGo'] = array( 'name' => 'SOGo', 'username' => '%u', @@ -147,7 +147,7 @@ To do this, open or create `data/web/inc/vars.local.inc.php` and add the followi *NOTE: Don't forget to add the ` show databases; -+--------------------+ -| Database | -+--------------------+ -| information_schema | -| mailcow_database | <===== -| mysql | -| performance_schema | -+--------------------+ -4 rows in set (0.00 sec) -``` +=== "docker compose (Plugin)" + + ``` bash + # source mailcow.conf + # docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} + MariaDB [(none)]> show databases; + +--------------------+ + | Database | + +--------------------+ + | information_schema | + | mailcow_database | <===== + | mysql | + | performance_schema | + +--------------------+ + 4 rows in set (0.00 sec) + ``` + +=== "docker-compose (Standalone)" + + ``` bash + # source mailcow.conf + # docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} + MariaDB [(none)]> show databases; + +--------------------+ + | Database | + +--------------------+ + | information_schema | + | mailcow_database | <===== + | mysql | + | performance_schema | + +--------------------+ + 4 rows in set (0.00 sec) + ``` ### 2\. Einen oder mehrere Benutzer zurücksetzen @@ -81,13 +120,30 @@ MariaDB [(none)]> FLUSH PRIVILEGES; Dies funktioniert ähnlich wie das Zurücksetzen eines MySQL-Passworts, jetzt machen wir es vom Host aus, ohne uns mit dem MySQL CLI zu verbinden: -``` -Quelle mailcow.conf -docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='YOUR_USERNAME';" -``` +=== "docker compose (Plugin)" + + ``` bash + source mailcow.conf + docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='YOUR_USERNAME';" + ``` + +=== "docker-compose (Standalone)" + + ``` bash + source mailcow.conf + docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='YOUR_USERNAME';" + ``` ### Für SOGo: -``` -docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled '{"SOGoGoogleAuthenticatorEnabled":0}' -``` \ No newline at end of file +=== "docker compose (Plugin)" + + ``` bash + docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled '{"SOGoGoogleAuthenticatorEnabled":0}' + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled '{"SOGoGoogleAuthenticatorEnabled":0}' + ``` \ No newline at end of file diff --git a/docs/troubleshooting/debug-reset_pw.en.md b/docs/troubleshooting/debug-reset_pw.en.md index dcc81e6f8..852f1a80d 100644 --- a/docs/troubleshooting/debug-reset_pw.en.md +++ b/docs/troubleshooting/debug-reset_pw.en.md @@ -9,13 +9,33 @@ cd mailcow_path ## Reset MySQL Passwords -Stop the stack by running `docker compose stop`. +Stop the stack by running: + +=== "docker compose (Plugin)" + + ``` bash + docker compose stop + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose stop + ``` When the containers came to a stop, run this command: -``` -docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && mysql -hlocalhost -uroot && exit 0"' mysql-mailcow -``` +=== "docker compose (Plugin)" + + ``` bash + docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && mysql -hlocalhost -uroot && exit 0"' mysql-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && mysql -hlocalhost -uroot && exit 0"' mysql-mailcow + ``` ### 1\. Find database name diff --git a/docs/troubleshooting/debug-rm_volumes.de.md b/docs/troubleshooting/debug-rm_volumes.de.md index 3df49230c..a3b732ebc 100644 --- a/docs/troubleshooting/debug-rm_volumes.de.md +++ b/docs/troubleshooting/debug-rm_volumes.de.md @@ -14,4 +14,16 @@ docker volume rm mailcowdockerized_${VOLUME_NAME} - Entfernen Sie das Volume `rspamd-vol-1`, um alle Rspamd-Daten zu entfernen. - Entfernen Sie Volume `crypt-vol-1`, um alle Crypto-Daten zu entfernen. Dies wird **alle Mails** unlesbar machen. -Alternativ dazu wird die Ausführung von `docker compose down -v` **alle mailcow: dockerized volumes** zerstören und alle zugehörigen Container und Netzwerke löschen. +Alternativ dazu wird die Ausführung des folgenden Befehles **alle mailcow: dockerized volumes** zerstören und alle zugehörigen Container und Netzwerke löschen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down -v + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down -v + ``` diff --git a/docs/troubleshooting/debug-rm_volumes.en.md b/docs/troubleshooting/debug-rm_volumes.en.md index 2d98c51a7..15eb6a4a2 100644 --- a/docs/troubleshooting/debug-rm_volumes.en.md +++ b/docs/troubleshooting/debug-rm_volumes.en.md @@ -14,4 +14,16 @@ docker volume rm mailcowdockerized_${VOLUME_NAME} - Remove volume `rspamd-vol-1` to remove all Rspamd data. - Remove volume `crypt-vol-1` to remove all crypto data. This will render **all mails** unreadable. -Alternatively, running `docker compose down -v` will **destroy all mailcow: dockerized volumes** and delete any related containers and networks. +Alternatively, running the following command will **destroy all mailcow: dockerized volumes** and delete any related containers and networks: + +=== "docker compose (Plugin)" + + ``` bash + docker compose down -v + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose down -v + ``` diff --git a/docs/troubleshooting/debug-rspamd_memory_leaks.de.md b/docs/troubleshooting/debug-rspamd_memory_leaks.de.md index 23ecedccb..42f050c12 100644 --- a/docs/troubleshooting/debug-rspamd_memory_leaks.de.md +++ b/docs/troubleshooting/debug-rspamd_memory_leaks.de.md @@ -1,27 +1,85 @@ Eine kurze Anleitung, um einen schlecht funktionierenden Rspamd tiefgehend zu analysieren. -``` -docker compose exec rspamd-mailcow bash +=== "docker compose (Plugin)" -if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then - sed -i 's/apt-stabil/apt-stabil-asan/i' /etc/apt/sources.list.d/rspamd.list -fi + ``` bash + docker compose exec rspamd-mailcow bash -apt-get update ; apt-get upgrade rspamd + if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then + sed -i 's/apt-stabil/apt-stabil-asan/i' /etc/apt/sources.list.d/rspamd.list + fi -nano /docker-entrypoint.sh + apt-get update ; apt-get upgrade rspamd -# Fügen Sie vor "exec "$@"" die folgenden Zeilen ein: + nano /docker-entrypoint.sh -export G_SLICE=always-malloc -export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0 + # Fügen Sie vor "exec "$@"" die folgenden Zeilen ein: -``` + export G_SLICE=always-malloc + export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0 + ``` -Starten Sie Rspamd neu: `docker compose restart rspamd-mailcow` +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow bash + + if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then + sed -i 's/apt-stabil/apt-stabil-asan/i' /etc/apt/sources.list.d/rspamd.list + fi + + apt-get update ; apt-get upgrade rspamd + + nano /docker-entrypoint.sh + + # Fügen Sie vor "exec "$@"" die folgenden Zeilen ein: + + export G_SLICE=always-malloc + export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0 + ``` + +Starten Sie Rspamd neu: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart rspamd-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart rspamd-mailcow + ``` Ihr Speicherverbrauch wird stark ansteigen, er wird auch stetig wachsen, was nicht mit einem möglichen Memory Leak zusammenhängt, nach dem Sie suchen. -Lassen Sie den Container für ein paar Minuten, Stunden oder Tage laufen (es sollte die Zeit sein, die Sie normalerweise warten, bis der Memory Leak "passiert") und starten Sie ihn neu: `docker compose restart rspamd-mailcow`. +Lassen Sie den Container für ein paar Minuten, Stunden oder Tage laufen (es sollte die Zeit sein, die Sie normalerweise warten, bis der Memory Leak "passiert") und starten Sie ihn neu: -Betreten Sie nun den Container, indem Sie `docker compose exec rspamd-mailcow bash` ausführen, wechseln Sie das Verzeichnis zu /tmp und kopieren Sie die asan-Dateien an den gewünschten Ort oder laden Sie sie über termbin.com hoch (`cat /tmp/rspamd-asan.* | nc termbin.com 9999`). \ No newline at end of file +=== "docker compose (Plugin)" + + ``` bash + docker compose restart rspamd-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart rspamd-mailcow + ``` + +Betreten Sie nun den Container, indem Sie den folgenden Befehl ausführen: + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec rspamd-mailcow bash + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow bash + ``` + + Wechseln Sie das Verzeichnis zu /tmp und kopieren Sie die asan-Dateien an den gewünschten Ort oder laden Sie sie über termbin.com hoch (`cat /tmp/rspamd-asan.* | nc termbin.com 9999`). \ No newline at end of file diff --git a/docs/troubleshooting/debug-rspamd_memory_leaks.en.md b/docs/troubleshooting/debug-rspamd_memory_leaks.en.md index d3a55ce24..ca58ee4df 100644 --- a/docs/troubleshooting/debug-rspamd_memory_leaks.en.md +++ b/docs/troubleshooting/debug-rspamd_memory_leaks.en.md @@ -1,27 +1,86 @@ A quick guide to deeply analyze a malfunctioning Rspamd. -``` -docker compose exec rspamd-mailcow bash +=== "docker compose (Plugin)" -if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then - sed -i 's/apt-stable/apt-stable-asan/i' /etc/apt/sources.list.d/rspamd.list -fi + ``` bash + docker compose exec rspamd-mailcow bash -apt-get update ; apt-get upgrade rspamd + if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then + sed -i 's/apt-stabil/apt-stabil-asan/i' /etc/apt/sources.list.d/rspamd.list + fi -nano /docker-entrypoint.sh + apt-get update ; apt-get upgrade rspamd -# Before "exec "$@"" add the following lines: + nano /docker-entrypoint.sh -export G_SLICE=always-malloc -export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0 + # Add this in front of "exec "$@"": -``` + export G_SLICE=always-malloc + export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0 + ``` -Restart Rspamd: `docker compose restart rspamd-mailcow` +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow bash + + if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then + sed -i 's/apt-stabil/apt-stabil-asan/i' /etc/apt/sources.list.d/rspamd.list + fi + + apt-get update ; apt-get upgrade rspamd + + nano /docker-entrypoint.sh + + # Add this in front of "exec "$@"": + + export G_SLICE=always-malloc + export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0 + ``` + +Restart Rspamd: + +=== "docker compose (Plugin)" + + ``` bash + docker compose restart rspamd-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart rspamd-mailcow + ``` Your memory consumption will increase by a lot, it will also steadily grow, which is not related to a possible memory leak you are looking for. -Leave the container running for a few minutes, hours or days (it should match the time you usually wait for the leak to "happen") and restart it: `docker compose restart rspamd-mailcow`. +Leave the container running for a few minutes, hours or days (it should match the time you usually wait for the leak to "happen") and restart it: -Now enter the container by running `docker compose exec rspamd-mailcow bash`, change the directory to /tmp and copy the asan Files to your desired location or upload them via termbin.com (`cat /tmp/rspamd-asan.* | nc termbin.com 9999`). \ No newline at end of file +=== "docker compose (Plugin)" + + ``` bash + docker compose restart rspamd-mailcow + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose restart rspamd-mailcow + ``` + +Now enter the container by running the command: + +=== "docker compose (Plugin)" + + ``` bash + docker compose exec rspamd-mailcow bash + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow bash + ``` + + +Change the directory to /tmp and copy the asan Files to your desired location or upload them via termbin.com (`cat /tmp/rspamd-asan.* | nc termbin.com 9999`). \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 6df5c20c0..061bee6eb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -192,7 +192,7 @@ plugins: 'Disable IPv6': 'IPv6 deaktivieren' 'IP bindings': 'IP-Bindings' 'Local MTA on Docker host': 'Lokaler MTA auf Docker-Host' - 'Sync job migration': 'Migration von Sync-Jobs' + 'Sync job migration': 'Migration mit Sync Jobs' ### Models Section 'Models': 'Modelle' 'Password hashing': 'Passwort-Hashing' @@ -220,13 +220,13 @@ plugins: 'Recover accidentally deleted data' : 'Versehentlich gelöschte Daten wiederherstellen' ### Manual/Guides/Examples Section 'Manual/Guides/Examples': 'Anleitungen/Beispiele' - ### Mailcow UI Subsection + ### mailcow UI Subsection 'Configuration' : 'Konfiguration' 'CSS overrides' : 'CSS-Überschreibungen' 'Sub-addressing' : 'Sub-Adressierung' 'Temporary email aliases' : 'Temporäre E-Mail-Aliase' 'Tags (for Domains and Mailboxes)' : 'Tags (für Domains und Mailboxen)' - 'Two-Factor Authentication' : 'Zwei-Faktoren-Authentifizierung' + 'Two-Factor Authentication' : 'Zwei-Faktor Authentifizierung' ### Postfix Subsection 'Add trusted networks': 'Vertrauenswürdige Netzwerke hinzufügen' 'Custom transport maps': 'Benutzerdefinierte Transportmaps' diff --git a/overrides/main.html b/overrides/main.html index 0ca4fb7e1..207ffc73e 100644 --- a/overrides/main.html +++ b/overrides/main.html @@ -4,8 +4,8 @@ {% if config.theme.language == 'de' %}

Alle Befehle sind gemäß der Syntax des Docker Compose Plugin und der Standalone Variante anwählbar.

{% elif config.theme.language == 'en' %} -

All Commands are available according to the Docker Compose Plugin and the Standalone Version

+

All Commands are available according to the Docker Compose Plugin and the Standalone Version syntax

{% else %} -

All Commands are available according to the Docker Compose Plugin and the Standalone Version

+

All Commands are available according to the Docker Compose Plugin and the Standalone Version syntax

{% endif %} {% endblock %} \ No newline at end of file From d0eb3075e128cd47fd633cc5c534c80bf4c34615 Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Fri, 13 Jan 2023 18:17:09 +0100 Subject: [PATCH 10/11] Corrected update cycle info --- docs/i_u_m/i_u_m_update.de.md | 2 +- docs/i_u_m/i_u_m_update.en.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/i_u_m/i_u_m_update.de.md b/docs/i_u_m/i_u_m_update.de.md index 0bf141592..f92c8fe8c 100644 --- a/docs/i_u_m/i_u_m_update.de.md +++ b/docs/i_u_m/i_u_m_update.de.md @@ -90,7 +90,7 @@ Sie können sich in den Update-Mechanismus einklinken, indem Sie Skripte namens ## Update-Zyklus -- Wir planen an jedem ersten Dienstag eines Monats ein neues Hauptupdate zu veröffentlichen. +- Wir planen in jedem Monat ein neues Hauptupdate zu veröffentlichen. - Die Updates sind wie folgt nummeriert: `JJJJ-MM` (Beispiel: `2022-05`). - Fehlerkorrekturen eines Hauptupdates werden bei uns als "Revisionen" wie a,b,c (Beispiele: `2022-05a`, `2022-05b` usw.) erscheinen. diff --git a/docs/i_u_m/i_u_m_update.en.md b/docs/i_u_m/i_u_m_update.en.md index f702f2f9e..e6b32f9e0 100644 --- a/docs/i_u_m/i_u_m_update.en.md +++ b/docs/i_u_m/i_u_m_update.en.md @@ -90,7 +90,7 @@ You can hook into the update mechanism by adding scripts called `pre_commit_hook ## Update Cycle -- We schedule a monthly release cycle for a major update at the first tuesday of the month. +- We schedule a monthly release cycle for a major update. - The releases are numbered like this: `YYYY-MM` (e.g. `2022-05`) - Fixes for a main Update will be stated as "Revisions" like a,b,c (e.g. `2022-05a`, `2022-05b` etc.) From dcf87984efb9229139ecee79bdd809680207babe Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Fri, 13 Jan 2023 18:27:49 +0100 Subject: [PATCH 11/11] Updated README.md --- README.md | 57 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 6ae680971..8a919c0c3 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ -# mailcow-docs-2.0 | [![pages-build-deployment](https://github.com/mailcow/mailcow-dockerized-docs/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/mailcow/mailcow-dockerized-docs/actions/workflows/pages/pages-build-deployment) -The rework of the official mailcow docs +# mailcow-docs | [![pages-build-deployment](https://github.com/mailcow/mailcow-dockerized-docs/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/mailcow/mailcow-dockerized-docs/actions/workflows/pages/pages-build-deployment) +The official mailcow docs based on mkdocs-material -### Introduction: -The new 2.0 version of the mailcow documentation has been redesigned from scratch based on the original. +## Introduction: +--- +The mailcow documentation has been redesigned from scratch based on the original (legacy-1.0 branch). -Advantages compared to the 1.0 version: +Advantages compared to the legacy version: - Full translation support (English and German are officially supported by Servercow/tinc). - New folder structure for better overview/ordering of sub-pages. +- Switches for Command Syntax (Docker Compose especially) -Due to the fact that this version now has some serious changes compared to the 1.0 version, all pending merge requests are no longer compatible with this version. +## Contributions: --- ### About contributions: @@ -20,15 +22,35 @@ Of course, we will also make our contributions to the documentation, but especia To contribute new pages/translations simply clone the repository and then work with your cloned repository. Once you are done with your work start a pull request, if approved this will then be implemented into the actual documentation. ---- -### How to add new translations: +### Use the Compose Switch in a new/edited Page: +If you plan to contribute to our docs please make sure to always specify **both** docker compose syntaxes! This can be done by using a "switch". Example: + +``` +=== "docker compose (Plugin)" + + ``` bash + docker compose exec rspamd-mailcow bash + ``` + +=== "docker-compose (Standalone)" + + ``` bash + docker-compose exec rspamd-mailcow bash + ``` +``` + +Simply change the Content of this two cases acording to your desired needs. + + +### Translations +#### About Translations: So you want to provide a new translation for the documentation? Great, thanks for that <3 There are a few things to keep in mind, which are essential for a smooth process: -##### Add the new Language to the Language selector: +#### Add the new Language to the Language selector: As a start for possible translations, the language must first be added to the language selection. To add it, edit the mkdocs.yml file and add the language in the "translations" section (under the already existing languages): ``` [...] @@ -51,7 +73,7 @@ If a page does **NOT** exist in a language, the English version of the page will Images can also be "translated"! These are distinguished (similar to the pages) by the country codes. -##### Translate the menu: +#### Translate the menu: The menu is **NOT** translated by default and must be translated by hand, this is also done in the mkdocs.yml: ``` [...] @@ -72,7 +94,6 @@ The menu is **NOT** translated by default and must be translated by hand, this i ``` The preceding English variant **MUST be kept**, otherwise the translation will **not work**. ---- ### Folder structure: ``` @@ -113,10 +134,9 @@ docs <-- Root Folder │   ├── file.XX.md ``` +## Testing --- -### Testing - To build and test it locally, you need the [Material theme for MkDocs](https://squidfunk.github.io/mkdocs-material/), [MkDocs](https://www.mkdocs.org/) itself and [Pygments](http://pygments.org/). To install these with [pip](https://pip.pypa.io/en/stable/) and get it up and running, fire up your terminal and enter ``` @@ -133,4 +153,13 @@ If you want to test how the documentation looks like with the placeholder values For Example: ``` http://127.0.0.1:8000/client/client-manual/#host=mail.test.org&email=mail@example.org&name=mail&ui=mail.example.org&port=443 -``` \ No newline at end of file +``` + +## Misc +--- + +mailcow is a registered word mark of The Infrastructure Company GmbH, Parkstr. 42, 47877 Willich, Germany. + +The project is managed and maintained by The Infrastructure Company GmbH. + +Originated from @andryyy (André)