Merge branch 'feat/docker-compose-toggle'
Dieser Commit ist enthalten in:
Commit
45d1e35700
132 geänderte Dateien mit 4524 neuen und 1029 gelöschten Zeilen
55
README.md
55
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)
|
# 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 rework of the official mailcow docs
|
The official mailcow docs based on mkdocs-material
|
||||||
|
|
||||||
### Introduction:
|
## Introduction:
|
||||||
The new 2.0 version of the mailcow documentation has been redesigned from scratch based on the original.
|
---
|
||||||
|
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).
|
- Full translation support (English and German are officially supported by Servercow/tinc).
|
||||||
- New folder structure for better overview/ordering of sub-pages.
|
- 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:
|
### 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.
|
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.
|
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
|
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:
|
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):
|
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.
|
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:
|
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**.
|
The preceding English variant **MUST be kept**, otherwise the translation will **not work**.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Folder structure:
|
### Folder structure:
|
||||||
```
|
```
|
||||||
|
@ -113,10 +134,9 @@ docs <-- Root Folder
|
||||||
│  ├── file.XX.md
|
│  ├── 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
|
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
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -134,3 +154,12 @@ 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
|
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
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 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é)
|
||||||
|
|
|
@ -60,3 +60,8 @@ code {
|
||||||
:root {
|
:root {
|
||||||
--md-code-font: "Source Code Pro";
|
--md-code-font: "Source Code Pro";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[data-md-color-scheme="slate"] {
|
||||||
|
|
||||||
|
--md-typeset-a-color: #6390e5;
|
||||||
|
}
|
|
@ -6,19 +6,43 @@ 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/`.
|
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`.
|
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:
|
||||||
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "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.
|
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
|
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 restart sogo-mailcow memcached-mailcow`
|
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
|
### Mail
|
||||||
|
|
||||||
|
@ -28,13 +52,23 @@ 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.
|
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:
|
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 (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*'
|
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 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
|
||||||
|
```
|
|
@ -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`.
|
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:
|
||||||
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "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.
|
Run `sogo-tool` without parameters to check for possible restore options.
|
||||||
|
|
||||||
3\. Delete the copied backup by running `rm __MAILCOW_DIRECTORY__/data/conf/sogo`
|
3. Delete the copied backup by running `rm __MAILCOW_DIRECTORY__/data/conf/sogo`
|
||||||
|
|
||||||
4\. Restart SOGo and Memcached: `docker compose restart sogo-mailcow memcached-mailcow`
|
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
|
### 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:
|
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 (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*'
|
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 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
|
||||||
|
```
|
|
@ -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.
|
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!
|
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_).
|
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!
|
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!
|
|
@ -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.
|
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!
|
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).
|
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!
|
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!
|
||||||
|
|
|
@ -1,16 +1,36 @@
|
||||||
### Sicherung
|
### Sicherung
|
||||||
|
|
||||||
Diese Zeile sichert das vmail-Verzeichnis in eine Datei backup_vmail.tar.gz im mailcow-Root-Verzeichnis:
|
Diese Zeile sichert das vmail-Verzeichnis in eine Datei backup_vmail.tar.gz im mailcow-Root-Verzeichnis:
|
||||||
```
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /pfad/zu/mailcow-dockerized
|
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 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.
|
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`
|
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
|
### Wiederherstellen
|
||||||
```
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /pfad/zu/mailcow-dockerized
|
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
|
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
|
||||||
```
|
```
|
|
@ -1,16 +1,36 @@
|
||||||
### Backup
|
### Backup
|
||||||
|
|
||||||
This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory:
|
This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory:
|
||||||
```
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /path/to/mailcow-dockerized
|
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 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.
|
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`
|
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
|
### Restore
|
||||||
```
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /path/to/mailcow-dockerized
|
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
|
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
|
||||||
```
|
```
|
|
@ -1,18 +1,34 @@
|
||||||
## Sicherung
|
## Sicherung
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /pfad/zu/mailcow-dockerized
|
cd /pfad/zu/mailcow-dockerized
|
||||||
source mailcow.conf
|
source mailcow.conf
|
||||||
DATE=$(date +"%Y%m%d_%H%M%S")
|
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 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
|
## Wiederherstellen
|
||||||
|
|
||||||
!!! warning
|
!!! warning "Warnung"
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
Sie sollten den SQL-Dump ohne `docker compose` umleiten, um Parsing-Fehler zu vermeiden.
|
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
|
cd /pfad/zu/mailcow-dockerized
|
||||||
source mailcow.conf
|
source mailcow.conf
|
||||||
docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
|
docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
|
||||||
|
|
|
@ -1,18 +1,34 @@
|
||||||
## Backup
|
## Backup
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /path/to/mailcow-dockerized
|
cd /path/to/mailcow-dockerized
|
||||||
source mailcow.conf
|
source mailcow.conf
|
||||||
DATE=$(date +"%Y%m%d_%H%M%S")
|
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 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
|
## Restore
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
You should redirect the SQL dump without `docker compose` to prevent parsing errors.
|
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
|
cd /path/to/mailcow-dockerized
|
||||||
source mailcow.conf
|
source mailcow.conf
|
||||||
docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
|
docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
|
||||||
|
|
|
@ -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.
|
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.
|
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.
|
||||||
|
|
||||||
|
@ -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.
|
`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.
|
Ihre Quelle wird zu keinem Zeitpunkt verändert.
|
||||||
|
|
||||||
|
|
|
@ -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.
|
`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.
|
Your source will not be changed at any time.
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ Wenn Sie auf diese Seite zugreifen, indem Sie sich bei Ihrem mailcow-Server anme
|
||||||
<div class="client_variables_available" markdown="1">
|
<div class="client_variables_available" markdown="1">
|
||||||
<div class="admonition success">
|
<div class="admonition success">
|
||||||
<p class="admonition-title">Erfolgreich</p>
|
<p class="admonition-title">Erfolgreich</p>
|
||||||
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.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
Um mailcow: dockerized mit all seinen Volumes, Images und Containern zu entfernen, tun Sie dies:
|
Um mailcow: dockerized mit all seinen Volumes, Images und Containern zu entfernen, tun Sie dies:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose down -v --rmi all --remove-orphans
|
docker compose down -v --rmi all --remove-orphans
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose down -v --rmi all --remove-orphans
|
||||||
|
```
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
- **-v** Entfernt benannte Volumes, die im Abschnitt `volumes` der Compose-Datei deklariert sind, und anonyme Volumes, die an Container angehängt sind.
|
- **-v** Entfernt benannte Volumes, die im Abschnitt `volumes` der Compose-Datei deklariert sind, und anonyme Volumes, die an Container angehängt sind.
|
||||||
- **--rmi <Typ>** Images entfernen. Der Typ muss einer der folgenden sein: `all`: Entfernt alle Images, die von einem beliebigen Dienst verwendet werden. `local`: Entfernt nur Bilder, die kein benutzerdefiniertes Tag haben, das durch das Feld "image" gesetzt wurde.
|
- **--rmi <Typ>** Images entfernen. Der Typ muss einer der folgenden sein: `all`: Entfernt alle Images, die von einem beliebigen Dienst verwendet werden. `local`: Entfernt nur Bilder, die kein benutzerdefiniertes Tag haben, das durch das Feld "image" gesetzt wurde.
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
To remove mailcow: dockerized with all it's volumes, images and containers do:
|
To remove mailcow: dockerized with all it's volumes, images and containers do:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose down -v --rmi all --remove-orphans
|
docker compose down -v --rmi all --remove-orphans
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose down -v --rmi all --remove-orphans
|
||||||
|
```
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
- **-v** Remove named volumes declared in the `volumes` section of the Compose file and anonymous volumes attached to containers.
|
- **-v** Remove named volumes declared in the `volumes` section of the Compose file and anonymous volumes attached to containers.
|
||||||
- **--rmi <type>** Remove images. Type must be one of: `all`: Remove all images used by any service. `local`: Remove only images that don't have a custom tag set by the `image` field.
|
- **--rmi <type>** Remove images. Type must be one of: `all`: Remove all images used by any service. `local`: Remove only images that don't have a custom tag set by the `image` field.
|
||||||
|
|
|
@ -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.
|
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
|
chmod +x /usr/local/bin/docker-compose
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -139,11 +139,20 @@ Sollten Sie jedoch kein IPv6-fähiges Netzwerk auf Ihrem Host haben und Sie sich
|
||||||
|
|
||||||
## mailcow starten
|
## mailcow starten
|
||||||
Laden Sie die Images herunter und fĂĽhren Sie die Compose-Datei aus. Der Parameter `-d` wird ihre mailcow dann im Hintergrund starten:
|
Laden Sie die Images herunter und fĂĽhren Sie die Compose-Datei aus. Der Parameter `-d` wird ihre mailcow dann im Hintergrund starten:
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose pull
|
docker compose pull
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose pull
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
Geschafft!
|
Geschafft!
|
||||||
|
|
||||||
Sie können nun auf **https://${MAILCOW_HOSTNAME}** mit den Standard-Zugangsdaten `admin` + Passwort `moohoo` zugreifen.
|
Sie können nun auf **https://${MAILCOW_HOSTNAME}** mit den Standard-Zugangsdaten `admin` + Passwort `moohoo` zugreifen.
|
||||||
|
|
|
@ -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.
|
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
|
chmod +x /usr/local/bin/docker-compose
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -139,11 +139,20 @@ If you do not have an IPv6 enabled network on your host and you don't care for a
|
||||||
|
|
||||||
## Start mailcow
|
## Start mailcow
|
||||||
Pull the images and run the compose file. The parameter `-d` will start mailcow: dockerized detached:
|
Pull the images and run the compose file. The parameter `-d` will start mailcow: dockerized detached:
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose pull
|
docker compose pull
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose pull
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
Done!
|
Done!
|
||||||
|
|
||||||
You can now access **https://${MAILCOW_HOSTNAME}** with the default credentials `admin` + password `moohoo`.
|
You can now access **https://${MAILCOW_HOSTNAME}** with the default credentials `admin` + password `moohoo`.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
!!! warning
|
!!! 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.
|
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
|
!!! 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.
|
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.
|
||||||
|
@ -20,12 +20,22 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.
|
||||||
```
|
```
|
||||||
|
|
||||||
**4\.** Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner.
|
**4\.** Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner.
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /opt/mailcow-dockerized
|
cd /opt/mailcow-dockerized
|
||||||
docker compose down
|
docker compose down
|
||||||
systemctl stop docker.service
|
systemctl stop docker.service
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
cd /opt/mailcow-dockerized
|
||||||
|
docker-compose down
|
||||||
|
systemctl stop docker.service
|
||||||
|
```
|
||||||
|
|
||||||
**Wiederholen Sie Schritt 3 mit denselben Befehlen. Dies wird viel schneller gehen als beim ersten Mal.
|
**Wiederholen Sie Schritt 3 mit denselben Befehlen. Dies wird viel schneller gehen als beim ersten Mal.
|
||||||
|
|
||||||
**6\.** Wechseln Sie auf den Zielrechner und starten Sie Docker.
|
**6\.** Wechseln Sie auf den Zielrechner und starten Sie Docker.
|
||||||
|
@ -34,13 +44,30 @@ systemctl start docker.service
|
||||||
```
|
```
|
||||||
|
|
||||||
**7\.** Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner.
|
**7\.** Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner.
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /opt/mailcow-dockerized
|
cd /opt/mailcow-dockerized
|
||||||
docker compose pull
|
docker compose pull
|
||||||
```
|
```
|
||||||
|
|
||||||
**8\.** Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein!
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
cd /opt/mailcow-dockerized
|
||||||
|
docker-compose pull
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**8\.** Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein!
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -20,12 +20,22 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.
|
||||||
```
|
```
|
||||||
|
|
||||||
**4\.** Shut down mailcow and stop Docker on the source machine.
|
**4\.** Shut down mailcow and stop Docker on the source machine.
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /opt/mailcow-dockerized
|
cd /opt/mailcow-dockerized
|
||||||
docker compose down
|
docker compose down
|
||||||
systemctl stop docker.service
|
systemctl stop docker.service
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
cd /opt/mailcow-dockerized
|
||||||
|
docker-compose down
|
||||||
|
systemctl stop docker.service
|
||||||
|
```
|
||||||
|
|
||||||
**5\.** Repeat step 3 with the same commands. This will be much quicker than the first time.
|
**5\.** Repeat step 3 with the same commands. This will be much quicker than the first time.
|
||||||
|
|
||||||
**6\.** Switch over to the target machine and start Docker.
|
**6\.** Switch over to the target machine and start Docker.
|
||||||
|
@ -34,13 +44,30 @@ systemctl start docker.service
|
||||||
```
|
```
|
||||||
|
|
||||||
**7\.** Now pull the mailcow Docker images on the target machine.
|
**7\.** Now pull the mailcow Docker images on the target machine.
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /opt/mailcow-dockerized
|
cd /opt/mailcow-dockerized
|
||||||
docker compose pull
|
docker compose pull
|
||||||
```
|
```
|
||||||
|
|
||||||
**8\.** Start the whole mailcow stack and everything should be done!
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
cd /opt/mailcow-dockerized
|
||||||
|
docker-compose pull
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**8\.** Start the whole mailcow stack and everything should be done!
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -64,8 +64,9 @@ FĂĽhren Sie `git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab` aus, um zu sehen
|
||||||
Ja.
|
Ja.
|
||||||
|
|
||||||
Siehe das obige Thema, anstelle eines Diffs fĂĽhren Sie checkout aus:
|
Siehe das obige Thema, anstelle eines Diffs fĂĽhren Sie checkout aus:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose down
|
docker compose down
|
||||||
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
|
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
|
||||||
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
|
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
|
||||||
|
@ -73,13 +74,23 @@ docker compose pull
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose down
|
||||||
|
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
|
||||||
|
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
|
||||||
|
docker-compose pull
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
### Hooks
|
### Hooks
|
||||||
|
|
||||||
Sie können sich in den Update-Mechanismus einklinken, indem Sie Skripte namens `pre_commit_hook.sh` und `post_commit_hook.sh` zu Ihrem mailcows-Root-Verzeichnis hinzufügen. Siehe [hier](../manual-guides/u_e-update-hooks.md) für weitere Details.
|
Sie können sich in den Update-Mechanismus einklinken, indem Sie Skripte namens `pre_commit_hook.sh` und `post_commit_hook.sh` zu Ihrem mailcows-Root-Verzeichnis hinzufügen. Siehe [hier](../manual-guides/u_e-update-hooks.md) für weitere Details.
|
||||||
|
|
||||||
## Update-Zyklus
|
## 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`).
|
- 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.
|
- Fehlerkorrekturen eines Hauptupdates werden bei uns als "Revisionen" wie a,b,c (Beispiele: `2022-05a`, `2022-05b` usw.) erscheinen.
|
||||||
|
|
||||||
|
|
|
@ -64,22 +64,33 @@ Run `git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab` to see what changed.
|
||||||
Yes.
|
Yes.
|
||||||
|
|
||||||
See the topic above, instead of a diff, you run checkout:
|
See the topic above, instead of a diff, you run checkout:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose down
|
docker compose down
|
||||||
# Replace commit ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab by your ID
|
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
|
||||||
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
|
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
|
||||||
docker compose pull
|
docker compose pull
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose down
|
||||||
|
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
|
||||||
|
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
|
||||||
|
docker-compose pull
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
### Hooks
|
### Hooks
|
||||||
|
|
||||||
You can hook into the update mechanism by adding scripts called `pre_commit_hook.sh` and `post_commit_hook.sh` to your mailcows root directory. See [this](../manual-guides/u_e-update-hooks.md) for more details.
|
You can hook into the update mechanism by adding scripts called `pre_commit_hook.sh` and `post_commit_hook.sh` to your mailcows root directory. See [this](../manual-guides/u_e-update-hooks.md) for more details.
|
||||||
|
|
||||||
## Update Cycle
|
## 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`)
|
- 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.)
|
- Fixes for a main Update will be stated as "Revisions" like a,b,c (e.g. `2022-05a`, `2022-05b` etc.)
|
||||||
|
|
||||||
|
|
|
@ -44,10 +44,18 @@ MaxScriptNormalize 50M
|
||||||
MaxZipTypeRcg 50M
|
MaxZipTypeRcg 50M
|
||||||
```
|
```
|
||||||
10. Starten Sie den ClamAV Container neu:
|
10. Starten Sie den ClamAV Container neu:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart clamd-mailcow
|
docker compose restart clamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart clamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
**Bitte beachten Sie**:
|
**Bitte beachten Sie**:
|
||||||
|
|
||||||
- Sie können `ExcludePUA` und `IncludePUA` in der `clamd.conf` nicht gleichzeitig nutzen! Kommentieren Sie bitte `IncludePUA` aus, sollte es nicht auskommentiert sein.
|
- Sie können `ExcludePUA` und `IncludePUA` in der `clamd.conf` nicht gleichzeitig nutzen! Kommentieren Sie bitte `IncludePUA` aus, sollte es nicht auskommentiert sein.
|
||||||
|
@ -65,6 +73,14 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb
|
||||||
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
|
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
|
||||||
```
|
```
|
||||||
2. Starten Sie den ClamAV Container neu:
|
2. Starten Sie den ClamAV Container neu:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart clamd-mailcow
|
docker compose restart clamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart clamd-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -44,10 +44,18 @@ MaxScriptNormalize 50M
|
||||||
MaxZipTypeRcg 50M
|
MaxZipTypeRcg 50M
|
||||||
```
|
```
|
||||||
10. Restart ClamAV container:
|
10. Restart ClamAV container:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart clamd-mailcow
|
docker compose restart clamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart clamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
Please note:
|
Please note:
|
||||||
|
|
||||||
- You can't use `ExcludePUA` and `IncludePUA` in `clamd.conf` simultaneously, so please comment any `IncludePUA` if you uncommented them before.
|
- You can't use `ExcludePUA` and `IncludePUA` in `clamd.conf` simultaneously, so please comment any `IncludePUA` if you uncommented them before.
|
||||||
|
@ -65,6 +73,14 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb
|
||||||
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
|
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
|
||||||
```
|
```
|
||||||
2. Restart ClamAV container:
|
2. Restart ClamAV container:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart clamd-mailcow
|
docker compose restart clamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart clamd-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -1,11 +1,18 @@
|
||||||
## Whitelist fĂĽr bestimmte ClamAV-Signaturen
|
## Whitelist fĂĽr bestimmte ClamAV-Signaturen
|
||||||
|
|
||||||
Es kann vorkommen, dass legitime (saubere) Mails von ClamAV blockiert werden (Rspamd markiert die Mail mit `VIRUS_FOUND`). So werden beispielsweise interaktive PDF-Formularanhänge standardmäßig blockiert, da der eingebettete Javascript-Code für schädliche Zwecke verwendet werden könnte. Überprüfen Sie dies anhand der clamd-Protokolle, z.B.:
|
Es kann vorkommen, dass legitime (saubere) Mails von ClamAV blockiert werden (Rspamd markiert die Mail mit `VIRUS_FOUND`). So werden beispielsweise interaktive PDF-Formularanhänge standardmäßig blockiert, da der eingebettete Javascript-Code für schädliche Zwecke verwendet werden könnte. Überprüfen Sie dies anhand der clamd-Protokolle, z.B.:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose logs clamd-mailcow | grep "FOUND"
|
docker compose logs clamd-mailcow | grep "FOUND"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose logs clamd-mailcow | grep "FOUND"
|
||||||
|
```
|
||||||
|
|
||||||
Diese Zeile bestätigt, dass ein solcher identifiziert wurde:
|
Diese Zeile bestätigt, dass ein solcher identifiziert wurde:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
@ -19,15 +26,31 @@ echo 'PUA.Pdf.Trojan.EmbeddedJavaScript-1' >> data/conf/clamav/whitelist.ign2
|
||||||
```
|
```
|
||||||
|
|
||||||
Dann starten Sie den clamd-mailcow Service Container in der mailcow UI oder mit docker compose neu:
|
Dann starten Sie den clamd-mailcow Service Container in der mailcow UI oder mit docker compose neu:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart clamd-mailcow
|
docker compose restart clamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis:
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart clamd-mailcow
|
||||||
```
|
```
|
||||||
# docker compose exec redis-mailcow /bin/sh
|
|
||||||
|
Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose exec redis-mailcow /bin/sh
|
||||||
|
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
|
||||||
|
/data # exit
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow /bin/sh
|
||||||
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
|
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
|
||||||
/data # exit
|
/data # exit
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,11 +1,18 @@
|
||||||
## Whitelist specific ClamAV signatures
|
## Whitelist specific ClamAV signatures
|
||||||
|
|
||||||
You may find that legitimate (clean) mail is being blocked by ClamAV (Rspamd will flag the mail with `VIRUS_FOUND`). For instance, interactive PDF form attachments are blocked by default because the embedded Javascript code may be used for nefarious purposes. Confirm by looking at the clamd logs, e.g.:
|
You may find that legitimate (clean) mail is being blocked by ClamAV (Rspamd will flag the mail with `VIRUS_FOUND`). For instance, interactive PDF form attachments are blocked by default because the embedded Javascript code may be used for nefarious purposes. Confirm by looking at the clamd logs, e.g.:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose logs clamd-mailcow | grep "FOUND"
|
docker compose logs clamd-mailcow | grep "FOUND"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose logs clamd-mailcow | grep "FOUND"
|
||||||
|
```
|
||||||
|
|
||||||
This line confirms that such was identified:
|
This line confirms that such was identified:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
@ -19,15 +26,31 @@ echo 'PUA.Pdf.Trojan.EmbeddedJavaScript-1' >> data/conf/clamav/whitelist.ign2
|
||||||
```
|
```
|
||||||
|
|
||||||
Then restart the clamd-mailcow service container in the mailcow UI or using docker compose:
|
Then restart the clamd-mailcow service container in the mailcow UI or using docker compose:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart clamd-mailcow
|
docker compose restart clamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
Cleanup cached ClamAV results in Redis:
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart clamd-mailcow
|
||||||
```
|
```
|
||||||
# docker compose exec redis-mailcow /bin/sh
|
|
||||||
|
Cleanup cached ClamAV results in Redis:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose exec redis-mailcow /bin/sh
|
||||||
|
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
|
||||||
|
/data # exit
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow /bin/sh
|
||||||
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
|
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
|
||||||
/data # exit
|
/data # exit
|
||||||
```
|
```
|
||||||
|
|
|
@ -20,6 +20,14 @@ $service-mailcow:
|
||||||
|
|
||||||
|
|
||||||
Abschliessend müssen die geänderten Container automatisch neu erstellt werden:
|
Abschliessend müssen die geänderten Container automatisch neu erstellt werden:
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
|
@ -20,7 +20,14 @@ $service-mailcow:
|
||||||
```
|
```
|
||||||
|
|
||||||
Now auto-recreate modified containers:
|
Now auto-recreate modified containers:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
|
@ -6,4 +6,16 @@ Diese Funktion kann wieder aktiviert werden, indem `ACL_ANYONE` auf `allow` in m
|
||||||
ACL_ANYONE=allow
|
ACL_ANYONE=allow
|
||||||
```
|
```
|
||||||
|
|
||||||
Wenden Sie die Ă„nderungen an, indem Sie `docker compose up -d` ausfĂĽhren.
|
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
|
||||||
|
```
|
|
@ -6,4 +6,16 @@ This function can be re-enabled by setting `ACL_ANYONE` to `allow` in mailcow.co
|
||||||
ACL_ANYONE=allow
|
ACL_ANYONE=allow
|
||||||
```
|
```
|
||||||
|
|
||||||
Apply the changes by running `docker compose up -d`.
|
Apply the changes by restarting the stack:
|
||||||
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
|
@ -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.
|
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.
|
||||||
|
|
|
@ -6,28 +6,61 @@ Dann wollen wir mal loslegen:
|
||||||
|
|
||||||
Löschen Sie die Mails eines Benutzers im Junk-Ordner, die **gelesen** und **älter** als 4 Stunden sind
|
Löschen Sie die Mails eines Benutzers im Junk-Ordner, die **gelesen** und **älter** als 4 Stunden sind
|
||||||
|
|
||||||
```
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
|
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
|
Lösche **alle** Mails des Benutzers im Junk-Ordner, die **älter** als 7 Tage sind
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
|
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).
|
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 (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
|
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
|
Löschen von Mails in einem benutzerdefinierten Ordner **innerhalb** des Posteingangs eines Benutzers, die **nicht** gekennzeichnet und **älter** als 2 Wochen sind
|
||||||
|
|
||||||
```
|
=== "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 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
|
!!! 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)
|
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,13 +70,27 @@ 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:
|
Wenn Sie eine solche Aufgabe automatisieren wollen, können Sie einen Cron-Job auf Ihrem Rechner erstellen, der ein Skript wie das folgende aufruft:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized
|
# Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized
|
||||||
cd /pfad/zu/ihrem/mailcow-dockerized
|
cd /pfad/zu/ihrer/mailcow-dockerized
|
||||||
|
|
||||||
/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
|
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
|
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
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -56,7 +103,7 @@ Um einen Cronjob zu erstellen, können Sie `crontab -e` ausführen und etwas wie
|
||||||
|
|
||||||
### ĂĽber Docker Job Scheduler
|
### ĂĽ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:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -6,28 +6,60 @@ That said, let's dive in:
|
||||||
|
|
||||||
Delete a user's mails inside the junk folder that **are read** and **older** than 4 hours
|
Delete a user's mails inside the junk folder that **are read** and **older** than 4 hours
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
|
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
|
Delete **all** user's mails in the junk folder that are **older** than 7 days
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
|
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).
|
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 (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
|
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
|
Delete mails inside a custom folder **inside** a user's inbox that are **not** flagged and **older** than 2 weeks
|
||||||
|
|
||||||
```
|
=== "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 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
|
!!! 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)
|
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,13 +69,27 @@ 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:
|
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:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Path to mailcow-dockerized, e.g. /opt/mailcow-dockerized
|
# Path to mailcow-dockerized, for example: /opt/mailcow-dockerized
|
||||||
cd /path/to/your/mailcow-dockerized
|
cd /path/to/your/mailcow-dockerized
|
||||||
|
|
||||||
/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
|
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
|
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
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -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:
|
Starten Sie `dovecot-mailcow` neu, um Ihre Ă„nderungen zu ĂĽbernehmen:
|
||||||
|
|
||||||
```
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart dovecot-mailcow
|
docker compose restart dovecot-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart dovecot-mailcow
|
||||||
|
```
|
|
@ -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:
|
Restart `dovecot-mailcow` to apply your changes:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart dovecot-mailcow
|
docker compose restart dovecot-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart dovecot-mailcow
|
||||||
|
```
|
|
@ -11,26 +11,50 @@ Da wir in Docker laufen und unsere Container mit dem "restart: always" Flag erst
|
||||||
|
|
||||||
### FTS-bezogene Dovecot-Befehle
|
### FTS-bezogene Dovecot-Befehle
|
||||||
|
|
||||||
```
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
# Einzelbenutzer
|
# Einzelbenutzer
|
||||||
docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain
|
docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain
|
||||||
# alle Benutzer
|
# alle Benutzer
|
||||||
docker compose exec dovecot-mailcow doveadm fts rescan -A
|
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."
|
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.
|
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:
|
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:
|
||||||
|
|
||||||
```
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
# einzelner Benutzer
|
# einzelner Benutzer
|
||||||
docker compose exec dovecot-mailcow doveadm index -u user@domain '*'
|
docker compose exec dovecot-mailcow doveadm index -u user@domain '*'
|
||||||
# alle Benutzer, aber offensichtlich langsamer und gefährlicher
|
# alle Benutzer, aber offensichtlich langsamer und gefährlicher
|
||||||
docker compose exec dovecot-mailcow doveadm index -A '*'
|
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!
|
Dies **wird** einige Zeit in Anspruch nehmen, abhängig von Ihrer Maschine und Solr kann oom ausführen, überwachen Sie es!
|
||||||
|
|
||||||
Da die Neuindizierung sehr sinnvoll ist, haben wir sie nicht in die mailcow UI integriert. Sie mĂĽssen sich um eventuelle Fehler beim Re-Indizieren einer Mailbox kĂĽmmern.
|
Da die Neuindizierung sehr sinnvoll ist, haben wir sie nicht in die mailcow UI integriert. Sie mĂĽssen sich um eventuelle Fehler beim Re-Indizieren einer Mailbox kĂĽmmern.
|
||||||
|
|
|
@ -12,26 +12,48 @@ Since we run in Docker and create our containers with the "restart: always" flag
|
||||||
|
|
||||||
### FTS related Dovecot commands
|
### FTS related Dovecot commands
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
# single user
|
# single user
|
||||||
docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain
|
docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain
|
||||||
# all users
|
# all users
|
||||||
docker compose exec dovecot-mailcow doveadm fts rescan -A
|
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)."
|
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)."
|
||||||
|
|
||||||
This does **not** re-index a mailbox. It basically repairs a given index.
|
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:
|
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:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
# single user
|
# single user
|
||||||
docker compose exec dovecot-mailcow doveadm index -u user@domain '*'
|
docker compose exec dovecot-mailcow doveadm index -u user@domain '*'
|
||||||
# all users, but obviously slower and more dangerous
|
# all users, but obviously slower and more dangerous
|
||||||
docker compose exec dovecot-mailcow doveadm index -A '*'
|
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!
|
This **will** take some time depending on your machine and Solr can run oom, monitor it!
|
||||||
|
|
||||||
Because re-indexing is very sensible, we did not include it to mailcow UI. You will need to take care of any errors while re-indexing a mailbox.
|
Because re-indexing is very sensible, we did not include it to mailcow UI. You will need to take care of any errors while re-indexing a mailbox.
|
||||||
|
|
|
@ -15,21 +15,37 @@ imap_idle_notify_interval = 5 mins
|
||||||
|
|
||||||
29 Minuten ist der maximale Wert, den der [entsprechende RFC](https://tools.ietf.org/html/rfc2177) erlaubt.
|
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.
|
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
|
### Dovecot neu laden
|
||||||
Nun laden Sie Dovecot neu:
|
Nun laden Sie Dovecot neu:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow dovecot reload
|
docker compose exec dovecot-mailcow dovecot reload
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec dovecot-mailcow dovecot reload
|
||||||
|
```
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
Sie können den Wert dieser Einstellung überprüfen mit
|
Sie können den Wert dieser Einstellung überprüfen mit
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval"
|
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.
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,15 +20,32 @@ imap_idle_notify_interval = 5 mins
|
||||||
|
|
||||||
### Reload Dovecot
|
### Reload Dovecot
|
||||||
Now reload Dovecot:
|
Now reload Dovecot:
|
||||||
```
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow dovecot reload
|
docker compose exec dovecot-mailcow dovecot reload
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec dovecot-mailcow dovecot reload
|
||||||
|
```
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
You can check the value of this setting with
|
You can check the value of this setting with
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval"
|
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.
|
If you didn't change it, it should be at 2m. If you did change it, you should see your new value.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,20 @@
|
||||||
|
|
||||||
Wenn Sie vorhandene maildir-Dateien entschlüsseln/verschlüsseln wollen, können Sie das folgende Skript auf eigene Gefahr verwenden:
|
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
|
# EntschlĂĽsseln Sie /var/vmail
|
||||||
|
|
|
@ -3,7 +3,19 @@
|
||||||
|
|
||||||
If you want to decode/encode existing maildir files, you can use the following script at your own risk:
|
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
|
# Decrypt /var/vmail
|
||||||
|
|
|
@ -21,10 +21,18 @@ 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:
|
Um allen authentifizierten Benutzern vollen Zugriff auf das neue Postfach (nicht auf den gesamten Namespace) zu gewähren, führen Sie aus:
|
||||||
|
|
||||||
```
|
=== "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 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`).
|
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`).
|
||||||
|
|
||||||
## Erlaube authentifizierten Benutzern den Zugriff auf den gesamten öffentlichen Namespace
|
## Erlaube authentifizierten Benutzern den Zugriff auf den gesamten öffentlichen Namespace
|
||||||
|
|
|
@ -21,10 +21,19 @@ 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:
|
To allow all authenticated users access full to that new mailbox (not the whole namespace), run:
|
||||||
|
|
||||||
```
|
=== "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 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).
|
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).
|
||||||
|
|
||||||
## Allow authenticated users access to the whole public namespace
|
## Allow authenticated users access to the whole public namespace
|
||||||
|
|
|
@ -11,7 +11,20 @@ DOVECOT_MASTER_USER=mymasteruser
|
||||||
DOVECOT_MASTER_PASS=mysecretpass
|
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.
|
Der statische Master-Benutzername wird zu `DOVECOT_MASTER_USER@mailcow.local` erweitert.
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,19 @@ DOVECOT_MASTER_USER=mymasteruser
|
||||||
DOVECOT_MASTER_PASS=mysecretpass
|
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`.
|
The static master username will be expanded to `DOVECOT_MASTER_USER@mailcow.local`.
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
## Der "neue" Weg
|
## 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).
|
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:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup
|
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
|
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:
|
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'
|
version: '2.1'
|
||||||
volumes:
|
volumes:
|
||||||
vmail-vol-1:
|
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
|
- 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
|
- 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`
|
- 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
|
||||||
|
```
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
!!! warning
|
!!! 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).
|
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
|
mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup
|
||||||
|
@ -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
|
- 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
|
- Create the file `docker-compose.override.yml`, edit the device path accordingly
|
||||||
- Delete the current vmail folder: `docker volume rm mailcowdockerized_vmail-vol-1`
|
- 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`)
|
- 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
|
||||||
|
```
|
|
@ -110,9 +110,16 @@ Dieser Dateiname muss keine ".conf"-Erweiterung haben, sondern folgt dem Muster
|
||||||
Wenn PHP in eine benutzerdefinierte Site eingebunden werden soll, verwenden Sie bitte den PHP-FPM-Listener auf phpfpm:9002 oder erstellen Sie einen neuen Listener in `data/conf/phpfpm/php-fpm.d/pools.conf`.
|
Wenn PHP in eine benutzerdefinierte Site eingebunden werden soll, verwenden Sie bitte den PHP-FPM-Listener auf phpfpm:9002 oder erstellen Sie einen neuen Listener in `data/conf/phpfpm/php-fpm.d/pools.conf`.
|
||||||
|
|
||||||
Starten Sie Nginx neu (und PHP-FPM, falls ein neuer Listener erstellt wurde):
|
Starten Sie Nginx neu (und PHP-FPM, falls ein neuer Listener erstellt wurde):
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose restart nginx-mailcow
|
docker compose restart nginx-mailcow
|
||||||
docker compose restart php-fpm-mailcow
|
docker compose restart php-fpm-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart nginx-mailcow
|
||||||
|
docker-compose restart php-fpm-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -111,8 +111,16 @@ This filename does not need to have a ".conf" extension but follows the pattern
|
||||||
If PHP is to be included in a custom site, please use the PHP-FPM listener on phpfpm:9002 or create a new listener in `data/conf/phpfpm/php-fpm.d/pools.conf`.
|
If PHP is to be included in a custom site, please use the PHP-FPM listener on phpfpm:9002 or create a new listener in `data/conf/phpfpm/php-fpm.d/pools.conf`.
|
||||||
|
|
||||||
Restart Nginx (and PHP-FPM, if a new listener was created):
|
Restart Nginx (and PHP-FPM, if a new listener was created):
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose restart nginx-mailcow
|
docker compose restart nginx-mailcow
|
||||||
docker compose restart php-fpm-mailcow
|
docker compose restart php-fpm-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart nginx-mailcow
|
||||||
|
docker-compose restart php-fpm-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -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`.
|
Ă–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!
|
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
|
ADDITIONAL_SAN=webmail.example.org
|
||||||
```
|
```
|
||||||
|
|
||||||
Führen Sie `docker compose up -d` aus. Siehe "acme-mailcow" und "nginx-mailcow" Logs, wenn etwas fehlschlägt.
|
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
|
|
@ -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`.
|
Now open `mailcow.conf` and find `ADDITIONAL_SAN`.
|
||||||
Add `webmail.example.org` to this array, don't use quotes!
|
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
|
ADDITIONAL_SAN=webmail.example.org
|
||||||
```
|
```
|
||||||
|
|
||||||
Run `docker compose up -d`. See "acme-mailcow" and "nginx-mailcow" logs if anything fails.
|
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.
|
|
@ -1,7 +1,14 @@
|
||||||
Ă–ffnen Sie `data/conf/postfix/extra.cf` und setzen Sie das `message_size_limit` entsprechend in Bytes. Siehe `main.cf` fĂĽr den Standardwert.
|
Ă–ffnen Sie `data/conf/postfix/extra.cf` und setzen Sie das `message_size_limit` entsprechend in Bytes. Siehe `main.cf` fĂĽr den Standardwert.
|
||||||
|
|
||||||
Starten Sie Postfix neu:
|
Starten Sie Postfix neu:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose restart postfix-mailcow
|
docker compose restart postfix-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart postfix-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
Open `data/conf/postfix/extra.cf` and set the `message_size_limit` accordingly in bytes. See `main.cf` for the default value.
|
Open `data/conf/postfix/extra.cf` and set the `message_size_limit` accordingly in bytes. See `main.cf` for the default value.
|
||||||
|
|
||||||
Restart Postfix:
|
Restart Postfix:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose restart postfix-mailcow
|
docker compose restart postfix-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart postfix-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -19,9 +19,16 @@ smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_
|
||||||
```
|
```
|
||||||
|
|
||||||
Postmap auf check_sasl_access ausfĂĽhren:
|
Postmap auf check_sasl_access ausfĂĽhren:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
|
docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
|
||||||
|
```
|
||||||
|
|
||||||
Starten Sie den Postfix-Container neu.
|
Starten Sie den Postfix-Container neu.
|
||||||
|
|
|
@ -19,9 +19,16 @@ smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_
|
||||||
```
|
```
|
||||||
|
|
||||||
Run postmap on check_sasl_access:
|
Run postmap on check_sasl_access:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
|
docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
|
||||||
|
```
|
||||||
|
|
||||||
Restart the Postfix container.
|
Restart the Postfix container.
|
|
@ -6,6 +6,14 @@ Syslog-ng wurde so konfiguriert, dass es diese Warnungen ausblendet, während Po
|
||||||
|
|
||||||
Starten Sie `postfix-mailcow` neu, um Ihre Ă„nderungen zu ĂĽbernehmen:
|
Starten Sie `postfix-mailcow` neu, um Ihre Ă„nderungen zu ĂĽbernehmen:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart postfix-mailcow
|
docker compose restart postfix-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart postfix-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -6,6 +6,14 @@ Syslog-ng was configured to hide those warnings while Postfix is running, to not
|
||||||
|
|
||||||
Restart `postfix-mailcow` to apply your changes:
|
Restart `postfix-mailcow` to apply your changes:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart postfix-mailcow
|
docker compose restart postfix-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart postfix-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -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.
|
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.
|
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.
|
||||||
|
|
|
@ -15,6 +15,7 @@ SHELL=/bin/bash
|
||||||
|
|
||||||
To work, a local postfix must be installed on the server, which relays to the mailcow postfix.
|
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.
|
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.
|
||||||
|
|
|
@ -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.
|
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
|
Das Format der Datei ist wie folgt
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ Beispiel:
|
||||||
|
|
||||||
```
|
```
|
||||||
# Regeln werden in der angegebenen Reihenfolge ausgewertet.
|
# 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.1 permit
|
||||||
192.168.0.0/16 reject
|
192.168.0.0/16 reject
|
||||||
```
|
```
|
||||||
|
|
|
@ -6,7 +6,7 @@ Wenn Sie sich entscheiden, `mynetworks` zu setzen, ignoriert Postfix die mynetwo
|
||||||
|
|
||||||
## Unauthentifiziertes Relaying
|
## 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.
|
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
|
### 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
|
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
|
### 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
|
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
|
!!! Info
|
||||||
Weitere Informationen ĂĽber mynetworks finden Sie in der [Postfix-Dokumentation](http://www.postfix.org/postconf.5.html#mynetworks).
|
Weitere Informationen ĂĽber mynetworks finden Sie in der [Postfix-Dokumentation](http://www.postfix.org/postconf.5.html#mynetworks).
|
||||||
|
|
|
@ -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
|
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
|
### 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
|
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
|
!!! Info
|
||||||
More information about mynetworks can be found in the [Postfix documentation](http://www.postfix.org/postconf.5.html#mynetworks).
|
More information about mynetworks can be found in the [Postfix documentation](http://www.postfix.org/postconf.5.html#mynetworks).
|
|
@ -3,11 +3,18 @@ Redis wird als Key-Value-Speicher fĂĽr die Einstellungen und Daten von rspamd un
|
||||||
## Client
|
## Client
|
||||||
|
|
||||||
Um sich mit dem redis cli zu verbinden, fĂĽhren Sie aus:
|
Um sich mit dem redis cli zu verbinden, fĂĽhren Sie aus:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose exec redis-mailcow redis-cli
|
docker compose exec redis-mailcow redis-cli
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow redis-cli
|
||||||
|
```
|
||||||
|
|
||||||
### Fehlersuche
|
### Fehlersuche
|
||||||
|
|
||||||
Hier sind einige nĂĽtzliche Befehle fĂĽr den redis-cli zur Fehlersuche:
|
Hier sind einige nĂĽtzliche Befehle fĂĽr den redis-cli zur Fehlersuche:
|
||||||
|
@ -15,8 +22,9 @@ Hier sind einige nĂĽtzliche Befehle fĂĽr den redis-cli zur Fehlersuche:
|
||||||
##### MONITOR
|
##### MONITOR
|
||||||
|
|
||||||
Ăśberwacht alle vom Server empfangenen Anfragen in Echtzeit:
|
Ăśberwacht alle vom Server empfangenen Anfragen in Echtzeit:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
#docker compose exec redis-mailcow redis-cli
|
#docker compose exec redis-mailcow redis-cli
|
||||||
127.0.0.1:6379> monitor
|
127.0.0.1:6379> monitor
|
||||||
OK
|
OK
|
||||||
|
@ -25,6 +33,17 @@ OK
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
#docker-compose exec redis-mailcow redis-cli
|
||||||
|
127.0.0.1:6379> monitor
|
||||||
|
OK
|
||||||
|
1494077286.401963 [0 172.22.1.253:41228] "SMEMBERS" "BAYES_SPAM_keys"
|
||||||
|
1494077288.292970 [0 172.22.1.253:41229] "SMEMBERS" "BAYES_SPAM_keys"
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
##### SCHLĂśSSEL (Keys)
|
##### SCHLĂśSSEL (Keys)
|
||||||
|
|
||||||
Ermittelt alle SchlĂĽssel, die dem Muster entsprechen:
|
Ermittelt alle SchlĂĽssel, die dem Muster entsprechen:
|
||||||
|
|
|
@ -3,11 +3,18 @@ Redis is used as a key-value store for rspamd's and (some of) mailcow's settings
|
||||||
## Client
|
## Client
|
||||||
|
|
||||||
To connect to the redis cli execute:
|
To connect to the redis cli execute:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose exec redis-mailcow redis-cli
|
docker compose exec redis-mailcow redis-cli
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow redis-cli
|
||||||
|
```
|
||||||
|
|
||||||
### Debugging
|
### Debugging
|
||||||
|
|
||||||
Here are some useful commands for the redis-cli for debugging:
|
Here are some useful commands for the redis-cli for debugging:
|
||||||
|
@ -15,8 +22,9 @@ Here are some useful commands for the redis-cli for debugging:
|
||||||
##### MONITOR
|
##### MONITOR
|
||||||
|
|
||||||
Listens for all requests received by the server in real time:
|
Listens for all requests received by the server in real time:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
#docker compose exec redis-mailcow redis-cli
|
#docker compose exec redis-mailcow redis-cli
|
||||||
127.0.0.1:6379> monitor
|
127.0.0.1:6379> monitor
|
||||||
OK
|
OK
|
||||||
|
@ -25,6 +33,17 @@ OK
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
#docker-compose exec redis-mailcow redis-cli
|
||||||
|
127.0.0.1:6379> monitor
|
||||||
|
OK
|
||||||
|
1494077286.401963 [0 172.22.1.253:41228] "SMEMBERS" "BAYES_SPAM_keys"
|
||||||
|
1494077288.292970 [0 172.22.1.253:41229] "SMEMBERS" "BAYES_SPAM_keys"
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
##### KEYS
|
##### KEYS
|
||||||
|
|
||||||
Get all keys matching your pattern:
|
Get all keys matching your pattern:
|
||||||
|
|
|
@ -16,6 +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
|
### Spam oder Ham aus bestehendem Verzeichnis lernen
|
||||||
|
|
||||||
Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen:
|
Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
# Ham
|
# Ham
|
||||||
|
@ -24,6 +25,15 @@ for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-ma
|
||||||
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
|
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
# Ham
|
||||||
|
for file in /my/folder/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
|
||||||
|
# Spam
|
||||||
|
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
|
||||||
|
```
|
||||||
|
|
||||||
Erwägen Sie, einen lokalen Ordner als neues Volume an `rspamd-mailcow` in `docker-compose.yml` anzuhängen und die gegebenen Dateien innerhalb des Containers zu lernen. Dies kann als Workaround verwendet werden, um komprimierte Daten mit zcat zu parsen. Beispiel:
|
Erwägen Sie, einen lokalen Ordner als neues Volume an `rspamd-mailcow` in `docker-compose.yml` anzuhängen und die gegebenen Dateien innerhalb des Containers zu lernen. Dies kann als Workaround verwendet werden, um komprimierte Daten mit zcat zu parsen. Beispiel:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -42,19 +52,35 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
|
||||||
```
|
```
|
||||||
|
|
||||||
**Bayes-Daten zurĂĽcksetzen**
|
**Bayes-Daten zurĂĽcksetzen**
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
|
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
|
||||||
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
|
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
|
||||||
|
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
|
||||||
|
```
|
||||||
|
|
||||||
**Neurale Daten zurĂĽcksetzen**
|
**Neurale Daten zurĂĽcksetzen**
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
|
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
|
||||||
|
```
|
||||||
|
|
||||||
**Fuzzy-Daten zurĂĽcksetzen**
|
**Fuzzy-Daten zurĂĽcksetzen**
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
# Wir mĂĽssen zuerst das redis-cli eingeben:
|
# Wir mĂĽssen zuerst das redis-cli eingeben:
|
||||||
|
@ -63,6 +89,15 @@ docker compose exec redis-mailcow redis-cli
|
||||||
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
|
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
# Wir mĂĽssen zuerst das redis-cli eingeben:
|
||||||
|
docker-compose exec redis-mailcow redis-cli
|
||||||
|
# In redis-cli:
|
||||||
|
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
|
||||||
|
```
|
||||||
|
|
||||||
**Info**
|
**Info**
|
||||||
|
|
||||||
Wenn redis-cli sich beschwert ĂĽber...
|
Wenn redis-cli sich beschwert ĂĽber...
|
||||||
|
@ -74,12 +109,20 @@ Wenn redis-cli sich beschwert ĂĽber...
|
||||||
...das Schlüsselmuster nicht gefunden wurde und somit keine Daten zum Löschen vorhanden sind - ist es in Ordnung.
|
...das Schlüsselmuster nicht gefunden wurde und somit keine Daten zum Löschen vorhanden sind - ist es in Ordnung.
|
||||||
|
|
||||||
## CLI-Werkzeuge
|
## CLI-Werkzeuge
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose exec rspamd-mailcow rspamc --help
|
docker compose exec rspamd-mailcow rspamc --help
|
||||||
docker compose exec rspamd-mailcow rspamadm --help
|
docker compose exec rspamd-mailcow rspamadm --help
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec rspamd-mailcow rspamc --help
|
||||||
|
docker-compose exec rspamd-mailcow rspamadm --help
|
||||||
|
```
|
||||||
|
|
||||||
## Greylisting deaktivieren
|
## Greylisting deaktivieren
|
||||||
|
|
||||||
Nur Nachrichten mit einer höheren Punktzahl werden als Greylisting betrachtet (soft rejected). Es ist schlechte Praxis, Greylisting zu deaktivieren.
|
Nur Nachrichten mit einer höheren Punktzahl werden als Greylisting betrachtet (soft rejected). Es ist schlechte Praxis, Greylisting zu deaktivieren.
|
||||||
|
@ -94,7 +137,18 @@ FĂĽgen Sie die Zeile hinzu:
|
||||||
enabled = false;
|
enabled = false;
|
||||||
```
|
```
|
||||||
|
|
||||||
Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: `docker compose restart rspamd-mailcow`
|
Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
## Spamfilter-Schwellenwerte (global)
|
## Spamfilter-Schwellenwerte (global)
|
||||||
|
|
||||||
|
@ -106,17 +160,38 @@ add_header = 8;
|
||||||
greylist = 7;
|
greylist = 7;
|
||||||
```
|
```
|
||||||
|
|
||||||
Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: `docker compose restart rspamd-mailcow`
|
Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
Bestehende Einstellungen der Benutzer werden nicht ĂĽberschrieben!
|
Bestehende Einstellungen der Benutzer werden nicht ĂĽberschrieben!
|
||||||
|
|
||||||
Um benutzerdefinierte Schwellenwerte zurĂĽckzusetzen, fĂĽhren Sie aus:
|
Um benutzerdefinierte Schwellenwerte zurĂĽckzusetzen, fĂĽhren Sie aus:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
source mailcow.conf
|
source mailcow.conf
|
||||||
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
|
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
|
||||||
# oder:
|
# oder:
|
||||||
# docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel' and object = 'only-this-mailbox@example.org';"
|
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel' and object = 'only-this-mailbox@example.org';"
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
source mailcow.conf
|
||||||
|
docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
|
||||||
|
# oder:
|
||||||
|
docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel' and object = 'only-this-mailbox@example.org';"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Benutzerdefinierte Ablehnungsnachrichten
|
## Benutzerdefinierte Ablehnungsnachrichten
|
||||||
|
@ -127,7 +202,18 @@ Die Standard-Spam-Reject-Meldung kann durch HinzufĂĽgen einer neuen Datei `data/
|
||||||
reject_message = "Meine eigene Ablehnungsnachricht";
|
reject_message = "Meine eigene Ablehnungsnachricht";
|
||||||
```
|
```
|
||||||
|
|
||||||
Speichern Sie die Datei und starten Sie Rspamd neu: `docker compose restart rspamd-mailcow`.
|
Speichern Sie die Datei und starten Sie Rspamd neu:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
Waehrend das oben genannte fuer abgelehnte Mails mit einem hohen Spam-Score funktioniert, ignorieren Prefilter-Aktionen diese Einstellung. FĂĽr diese Karten muss das Multimap-Modul in Rspamd angepasst werden:
|
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 (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
## Verwerfen statt zurĂĽckweisen
|
## Verwerfen statt zurĂĽckweisen
|
||||||
|
|
||||||
|
@ -157,38 +254,72 @@ discard_on_reject = true;
|
||||||
```
|
```
|
||||||
|
|
||||||
Starten Sie Rspamd neu:
|
Starten Sie Rspamd neu:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart rspamd-mailcow
|
docker compose restart rspamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
## Lösche alle Ratelimit-Schlüssel
|
## Lösche alle Ratelimit-Schlüssel
|
||||||
|
|
||||||
Wenn Sie das UI nicht verwenden wollen und stattdessen alle Schlüssel in der Redis-Datenbank löschen wollen, können Sie redis-cli für diese Aufgabe verwenden:
|
Wenn Sie das UI nicht verwenden wollen und stattdessen alle Schlüssel in der Redis-Datenbank löschen wollen, können Sie redis-cli für diese Aufgabe verwenden:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose exec redis-mailcow sh
|
docker compose exec redis-mailcow sh
|
||||||
# Unlink (verfügbar in Redis >=4.) löscht im Hintergrund
|
# Unlink (verfügbar in Redis >=4.) löscht im Hintergrund
|
||||||
redis-cli --scan --pattern RL* | xargs redis-cli unlink
|
redis-cli --scan --pattern RL* | xargs redis-cli unlink
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow sh
|
||||||
|
# Unlink (verfügbar in Redis >=4.) löscht im Hintergrund
|
||||||
|
redis-cli --scan --pattern RL* | xargs redis-cli unlink
|
||||||
|
```
|
||||||
|
|
||||||
Starten Sie Rspamd neu:
|
Starten Sie Rspamd neu:
|
||||||
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart rspamd-mailcow
|
docker compose restart rspamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
## Erneutes Senden von Quarantäne-Benachrichtigungen auslösen
|
## Erneutes Senden von Quarantäne-Benachrichtigungen auslösen
|
||||||
|
|
||||||
Sollte nur zur Fehlersuche verwendet werden!
|
Sollte nur zur Fehlersuche verwendet werden!
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose exec dovecot-mailcow bash
|
docker compose exec dovecot-mailcow bash
|
||||||
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
|
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
|
||||||
redis-cli -h redis DEL Q_LAST_NOTIFIED
|
redis-cli -h redis DEL Q_LAST_NOTIFIED
|
||||||
quarantine_notify.py
|
quarantine_notify.py
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec dovecot-mailcow bash
|
||||||
|
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
|
||||||
|
redis-cli -h redis DEL Q_LAST_NOTIFIED
|
||||||
|
quarantine_notify.py
|
||||||
|
```
|
||||||
|
|
||||||
## Speicherung der Historie erhöhen
|
## Speicherung der Historie erhöhen
|
||||||
|
|
||||||
Standardmäßig speichert Rspamd 1000 Elemente in der Historie.
|
Standardmäßig speichert Rspamd 1000 Elemente in der Historie.
|
||||||
|
@ -203,7 +334,15 @@ Bearbeiten Sie `data/conf/rspamd/local.d/history_redis.conf`:
|
||||||
nrows = 1000; # Ă„ndern Sie diesen Wert
|
nrows = 1000; # Ă„ndern Sie diesen Wert
|
||||||
```
|
```
|
||||||
|
|
||||||
Starten Sie anschlieĂźend Rspamd neu: `docker compose restart rspamd-mailcow`
|
Starten Sie anschlieĂźend Rspamd neu:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -16,6 +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
|
### Learn Spam or Ham from existing directory
|
||||||
|
|
||||||
You can use a one-liner to learn mail in plain-text (uncompressed) format:
|
You can use a one-liner to learn mail in plain-text (uncompressed) format:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
# Ham
|
# Ham
|
||||||
|
@ -24,6 +25,15 @@ for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-ma
|
||||||
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
|
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
# Ham
|
||||||
|
for file in /my/folder/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
|
||||||
|
# Spam
|
||||||
|
for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
|
||||||
|
```
|
||||||
|
|
||||||
Consider attaching a local folder as new volume to `rspamd-mailcow` in `docker-compose.yml` and learn given files inside the container. This can be used as workaround to parse compressed data with zcat. Example:
|
Consider attaching a local folder as new volume to `rspamd-mailcow` in `docker-compose.yml` and learn given files inside the container. This can be used as workaround to parse compressed data with zcat. Example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -42,19 +52,35 @@ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
|
||||||
```
|
```
|
||||||
|
|
||||||
**Reset Bayes data**
|
**Reset Bayes data**
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
|
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
|
||||||
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
|
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
|
||||||
|
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
|
||||||
|
```
|
||||||
|
|
||||||
**Reset Neural data**
|
**Reset Neural data**
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
|
docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern rn_* | xargs redis-cli del'
|
||||||
|
```
|
||||||
|
|
||||||
**Reset Fuzzy data**
|
**Reset Fuzzy data**
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
# We need to enter the redis-cli first:
|
# We need to enter the redis-cli first:
|
||||||
|
@ -63,6 +89,15 @@ docker compose exec redis-mailcow redis-cli
|
||||||
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
|
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
# We need to enter the redis-cli first:
|
||||||
|
docker-compose exec redis-mailcow redis-cli
|
||||||
|
# In redis-cli:
|
||||||
|
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
|
||||||
|
```
|
||||||
|
|
||||||
**Info**
|
**Info**
|
||||||
|
|
||||||
If redis-cli complains about...
|
If redis-cli complains about...
|
||||||
|
@ -75,12 +110,20 @@ If redis-cli complains about...
|
||||||
|
|
||||||
|
|
||||||
## CLI tools
|
## CLI tools
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose exec rspamd-mailcow rspamc --help
|
docker compose exec rspamd-mailcow rspamc --help
|
||||||
docker compose exec rspamd-mailcow rspamadm --help
|
docker compose exec rspamd-mailcow rspamadm --help
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec rspamd-mailcow rspamc --help
|
||||||
|
docker-compose exec rspamd-mailcow rspamadm --help
|
||||||
|
```
|
||||||
|
|
||||||
## Disable Greylisting
|
## Disable Greylisting
|
||||||
|
|
||||||
Only messages with a higher score will be considered to be greylisted (soft rejected). It is bad practice to disable greylisting.
|
Only messages with a higher score will be considered to be greylisted (soft rejected). It is bad practice to disable greylisting.
|
||||||
|
@ -95,7 +138,18 @@ Add the line:
|
||||||
enabled = false;
|
enabled = false;
|
||||||
```
|
```
|
||||||
|
|
||||||
Save the file and restart "rspamd-mailcow": `docker compose restart rspamd-mailcow`
|
Save the file and restart "rspamd-mailcow":
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
## Spam filter thresholds (global)
|
## Spam filter thresholds (global)
|
||||||
|
|
||||||
|
@ -107,12 +161,39 @@ add_header = 8;
|
||||||
greylist = 7;
|
greylist = 7;
|
||||||
```
|
```
|
||||||
|
|
||||||
Save the file and restart "rspamd-mailcow": `docker compose restart rspamd-mailcow`
|
Save the file and restart "rspamd-mailcow":
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
Existing settings of users will not be overwritten!
|
Existing settings of users will not be overwritten!
|
||||||
|
|
||||||
To reset custom defined thresholds, run:
|
To reset custom defined thresholds, run:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
source mailcow.conf
|
||||||
|
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
|
||||||
|
# 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 (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
source mailcow.conf
|
||||||
|
docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
|
||||||
|
# or:
|
||||||
|
docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel' and object = 'only-this-mailbox@example.org';"
|
||||||
|
```
|
||||||
```
|
```
|
||||||
source mailcow.conf
|
source mailcow.conf
|
||||||
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
|
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
|
||||||
|
@ -128,7 +209,18 @@ The default spam reject message can be changed by adding a new file `data/conf/r
|
||||||
reject_message = "My custom reject message";
|
reject_message = "My custom reject message";
|
||||||
```
|
```
|
||||||
|
|
||||||
Save the file and restart Rspamd: `docker compose restart rspamd-mailcow`.
|
Save the file and restart Rspamd:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
While the above works for rejected mails with a high spam score, prefilter reject actions will ignore this setting. For these maps, the multimap module in Rspamd needs to be adjusted:
|
While the above works for rejected mails with a high spam score, prefilter reject actions will ignore this setting. For these maps, the multimap module in Rspamd needs to be adjusted:
|
||||||
|
|
||||||
|
@ -147,7 +239,18 @@ GLOBAL_RCPT_BL {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Save the file and restart Rspamd: `docker compose restart rspamd-mailcow`.
|
3. Save the file and restart Rspamd:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
## Discard instead of reject
|
## Discard instead of reject
|
||||||
|
|
||||||
|
@ -158,38 +261,71 @@ discard_on_reject = true;
|
||||||
```
|
```
|
||||||
|
|
||||||
Restart Rspamd:
|
Restart Rspamd:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart rspamd-mailcow
|
docker compose restart rspamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
## Wipe all ratelimit keys
|
## Wipe all ratelimit keys
|
||||||
|
|
||||||
If you don't want to use the UI and instead wipe all keys in the Redis database, you can use redis-cli for that task:
|
If you don't want to use the UI and instead wipe all keys in the Redis database, you can use redis-cli for that task:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose exec redis-mailcow sh
|
docker compose exec redis-mailcow sh
|
||||||
# Unlink (available in Redis >=4.) will delete in the backgronud
|
# Unlink (available in Redis >=4.) will delete in the backgronud
|
||||||
redis-cli --scan --pattern RL* | xargs redis-cli unlink
|
redis-cli --scan --pattern RL* | xargs redis-cli unlink
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec redis-mailcow sh
|
||||||
|
# Unlink (available in Redis >=4.) will delete in the backgronud
|
||||||
|
redis-cli --scan --pattern RL* | xargs redis-cli unlink
|
||||||
|
```
|
||||||
|
|
||||||
Restart Rspamd:
|
Restart Rspamd:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose restart rspamd-mailcow
|
docker compose restart rspamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
## Trigger a resend of quarantine notifications
|
## Trigger a resend of quarantine notifications
|
||||||
|
|
||||||
Should be used for debugging only!
|
Should be used for debugging only!
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
```
|
``` bash
|
||||||
docker compose exec dovecot-mailcow bash
|
docker compose exec dovecot-mailcow bash
|
||||||
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
|
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
|
||||||
redis-cli -h redis DEL Q_LAST_NOTIFIED
|
redis-cli -h redis DEL Q_LAST_NOTIFIED
|
||||||
quarantine_notify.py
|
quarantine_notify.py
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec dovecot-mailcow bash
|
||||||
|
mysql -umailcow -p$DBPASS mailcow -e "update quarantine set notified = 0;"
|
||||||
|
redis-cli -h redis DEL Q_LAST_NOTIFIED
|
||||||
|
quarantine_notify.py
|
||||||
|
```
|
||||||
|
|
||||||
## Increase history retention
|
## Increase history retention
|
||||||
|
|
||||||
By default Rspamd keeps 1000 elements in the history.
|
By default Rspamd keeps 1000 elements in the history.
|
||||||
|
@ -204,4 +340,15 @@ Edit `data/conf/rspamd/local.d/history_redis.conf`:
|
||||||
nrows = 1000; # change this value
|
nrows = 1000; # change this value
|
||||||
```
|
```
|
||||||
|
|
||||||
Restart Rspamd afterwards: `docker compose restart rspamd-mailcow`
|
Restart Rspamd afterwards:
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart rspamd-mailcow
|
||||||
|
```
|
||||||
|
|
|
@ -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
|
## 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.
|
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.
|
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
|
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.
|
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
|
2\. SOGo und Memcached Container neu starten, indem man folgenden Befehl ausfĂĽhrt:
|
||||||
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
|
=== "docker compose (Plugin)"
|
||||||
6. fĂĽgen Sie den Java-Script-Schnipsel in die Entwicklungskonsole ein:
|
|
||||||
|
``` 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)
|
copy([].slice.call(document.styleSheets)
|
||||||
.map(e => e.ownerNode)
|
.map(e => e.ownerNode)
|
||||||
|
@ -21,10 +38,13 @@ copy([].slice.call(document.styleSheets)
|
||||||
.join('\n')
|
.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
|
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;`
|
8\. kopieren Sie die CSS-Datei auf den mailcow-Server `data/conf/sogo/custom-theme.css`
|
||||||
10. Anhängen/Erstellen von `docker-compose.override.yml` mit:
|
|
||||||
|
9\. editiere `data/conf/sogo/sogo.conf` und setze `SOGoUIxDebugEnabled = NO;`
|
||||||
|
|
||||||
|
10\. Anhängen/Erstellen von `docker-compose.override.yml` mit:
|
||||||
```
|
```
|
||||||
Version: '2.1'
|
Version: '2.1'
|
||||||
|
|
||||||
|
@ -33,8 +53,30 @@ Dienste:
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
|
- ./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
|
11\. FĂĽhren Sie folgenden Befehl aus:
|
||||||
12. AusfĂĽhren von `docker compose restart memcached-mailcow`
|
=== "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
|
## 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
|
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
|
- ./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
|
4. FĂĽhren Sie folgenden Befehl aus:
|
||||||
5. Starten Sie `docker compose restart memcached-mailcow`.
|
=== "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
|
## 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.
|
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.
|
**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.
|
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
|
## 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).
|
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.
|
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 verbinden (untereinander sichtbar machen)
|
||||||
Domains sind normalerweise voneinander isoliert.
|
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
|
## 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.
|
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
|
## 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}'
|
||||||
|
```
|
||||||
|
|
||||||
|
|
|
@ -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.
|
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
|
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;`
|
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
|
2\. restart SOGo and Memcached containers by executing the command:
|
||||||
4. open browser developer console, usually shortcut is F12
|
=== "docker compose (Plugin)"
|
||||||
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:
|
``` 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)
|
copy([].slice.call(document.styleSheets)
|
||||||
.map(e => e.ownerNode)
|
.map(e => e.ownerNode)
|
||||||
|
@ -21,10 +37,14 @@ copy([].slice.call(document.styleSheets)
|
||||||
.join('\n')
|
.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`
|
7\. open text editor and paste data from clipboard (Ctrl+V), you should get minified CSS, save it
|
||||||
9. edit `data/conf/sogo/sogo.conf` and set `SOGoUIxDebugEnabled = NO;`
|
|
||||||
10. append/create `docker-compose.override.yml` with:
|
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'
|
version: '2.1'
|
||||||
|
|
||||||
|
@ -33,12 +53,37 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
|
- ./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
|
## 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`
|
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`:
|
|
||||||
|
2\. find in `data/conf/sogo/custom-theme.js`:
|
||||||
```
|
```
|
||||||
// Apply new palettes to the default theme, remap some of the hues
|
// Apply new palettes to the default theme, remap some of the hues
|
||||||
$mdThemingProvider.theme('default')
|
$mdThemingProvider.theme('default')
|
||||||
|
@ -60,22 +105,71 @@ and replace it with:
|
||||||
```
|
```
|
||||||
$mdThemingProvider.theme('default');
|
$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
|
- ./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
|
## 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.
|
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`.
|
**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.
|
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
|
## 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`.
|
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
|
## Connect domains
|
||||||
Domains are usually isolated from eachother.
|
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
|
## Disable password changing
|
||||||
|
|
||||||
Edit `data/conf/sogo/sogo.conf` and **change** `SOGoPasswordChangeEnabled` to `NO`. Please do not add a new parameter.
|
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
|
## 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}'
|
||||||
|
```
|
||||||
|
|
|
@ -17,10 +17,18 @@ forward-zone:
|
||||||
|
|
||||||
Unbound neu starten:
|
Unbound neu starten:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart unbound-mailcow
|
docker compose restart unbound-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart unbound-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Methode B, Ăśberschreiben der Datei
|
## 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.
|
Bearbeiten Sie `docker-compose.override.yml` und passen Sie die IP an.
|
||||||
|
|
||||||
FĂĽhren Sie `docker compose down ; docker compose up -d` aus.
|
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
|
||||||
|
```
|
|
@ -17,10 +17,18 @@ forward-zone:
|
||||||
|
|
||||||
Restart Unbound:
|
Restart Unbound:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart unbound-mailcow
|
docker compose restart unbound-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart unbound-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Method B, Override file
|
## 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.
|
Edit `docker-compose.override.yml` and adjust the IP.
|
||||||
|
|
||||||
Run `docker compose down ; docker compose up -d`.
|
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
|
||||||
|
```
|
|
@ -23,7 +23,19 @@ Beispiel:
|
||||||
- MAILQ_CRIT=${MAILQ_CRIT:-30}
|
- 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
|
### Threshold Beschreibungen
|
||||||
|
|
|
@ -23,7 +23,19 @@ Example:
|
||||||
- MAILQ_CRIT=${MAILQ_CRIT:-30}
|
- 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
|
### Thresholds descriptions
|
||||||
|
|
|
@ -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.
|
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.
|
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.
|
||||||
|
|
||||||
|
|
|
@ -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)
|
![Wo man die Spam-, Black- und Whitelist-Einstellungen des Benutzers anpasst](../../assets/images/manual-guides/mailcow-spamfilter.png)
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ Herzlichen Glückwunsch! Sie können sich nun mit Ihrem YubiKey in die mailcow U
|
||||||
---
|
---
|
||||||
|
|
||||||
## WebAuthn (U2F, Ersatz)
|
## 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.<br>**
|
**Seit Februar 2022 hat Google Chrome die UnterstĂĽtzung fĂĽr U2F aufgegeben und die Verwendung von WebAuthn standardisiert.<br>**
|
||||||
*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.
|
*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.
|
WebAuthn funktioniert auch ohne Internetverbindung.
|
||||||
|
|
||||||
### Was passiert mit meinem registrierten Fido Security Key nach dem Update von U2F auf WebAuthn?
|
### 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.
|
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.
|
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.
|
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.
|
Die mailcow wird nun die Vendor-Zertifikate verwenden, die sich in Ihrem mailcow-Verzeichnis unter `data/web/inc/lib/WebAuthn/rootCertificates` befinden.
|
||||||
|
|
||||||
##### Beispiel:
|
!!! 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`.
|
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.
|
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
|
### 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!
|
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.
|
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!
|
Nein, das ist es nicht!
|
||||||
Diese Herstellerzertifikate werden nur zur ĂśberprĂĽfung der Originalhardware verwendet, nicht zur Absicherung des Registrierungsprozesses.
|
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:
|
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://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/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)
|
- [https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01](https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01)
|
||||||
|
|
|
@ -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.
|
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`.
|
The mailcow will now use the Vendor Certificates located in your mailcow directory under `data/web/inc/lib/WebAuthn/rootCertificates`.
|
||||||
|
|
||||||
##### Example:
|
!!! 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`.
|
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.
|
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!
|
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.
|
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.
|
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!
|
No, it isn´t!
|
||||||
These vendor certificates are only used to verify original hardware, not to secure the registration process.
|
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:
|
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://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/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)
|
- [https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01](https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01)
|
||||||
|
|
|
@ -25,12 +25,28 @@ server {
|
||||||
|
|
||||||
Falls Sie den Parameter HTTP_BIND geändert haben, erstellen Sie den Container neu:
|
Falls Sie den Parameter HTTP_BIND geändert haben, erstellen Sie den Container neu:
|
||||||
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
Andernfalls starten Sie Nginx neu:
|
Andernfalls starten Sie Nginx neu:
|
||||||
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart
|
||||||
```
|
```
|
||||||
docker compose restart nginx-mailcow
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart
|
||||||
```
|
```
|
|
@ -25,12 +25,28 @@ server {
|
||||||
|
|
||||||
In case you changed the HTTP_BIND parameter, recreate the container:
|
In case you changed the HTTP_BIND parameter, recreate the container:
|
||||||
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
Otherwise restart Nginx:
|
Otherwise restart Nginx:
|
||||||
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart
|
||||||
```
|
```
|
||||||
docker compose restart nginx-mailcow
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose restart
|
||||||
```
|
```
|
|
@ -19,8 +19,16 @@ ssl_min_protocol = TLSv1
|
||||||
|
|
||||||
Starten Sie die betroffenen Dienste neu:
|
Starten Sie die betroffenen Dienste neu:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart postfix-mailcow dovecot-mailcow
|
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.
|
Tipp: Sie können TLS 1.2 in Windows 7 aktivieren.
|
|
@ -19,8 +19,16 @@ ssl_min_protocol = TLSv1
|
||||||
|
|
||||||
Restart the affected services:
|
Restart the affected services:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart postfix-mailcow dovecot-mailcow
|
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.
|
Hint: You can enable TLS 1.2 in Windows 7.
|
|
@ -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.
|
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
|
* `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
|
* `post_update_hook.sh` fĂĽr Befehle, die nach dem Update ausgefĂĽhrt werden sollen
|
||||||
|
|
|
@ -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.
|
> 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`
|
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
|
||||||
|
```
|
|
@ -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.
|
> 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`
|
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
|
||||||
|
```
|
|
@ -45,11 +45,21 @@ 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:
|
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 (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose down
|
docker compose down
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose down
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
**3.** Deaktivieren Sie IPv6 in unbound-mailcow
|
**3.** Deaktivieren Sie IPv6 in unbound-mailcow
|
||||||
|
|
||||||
Bearbeiten Sie `data/conf/unbound/unbound.conf` und setzen Sie `do-ip6` auf "no":
|
Bearbeiten Sie `data/conf/unbound/unbound.conf` und setzen Sie `do-ip6` auf "no":
|
||||||
|
@ -63,10 +73,18 @@ Server:
|
||||||
|
|
||||||
unbound neu starten:
|
unbound neu starten:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart unbound-mailcow
|
docker compose restart unbound-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart unbound-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
**4.** Deaktivieren Sie IPv6 in postfix-mailcow
|
**4.** Deaktivieren Sie IPv6 in postfix-mailcow
|
||||||
|
|
||||||
Erstellen Sie `data/conf/postfix/extra.cf` und setzen Sie `smtp_address_preference` auf `ipv4`:
|
Erstellen Sie `data/conf/postfix/extra.cf` und setzen Sie `smtp_address_preference` auf `ipv4`:
|
||||||
|
@ -78,10 +96,18 @@ inet_protocols = ipv4
|
||||||
|
|
||||||
Starten Sie Postfix neu:
|
Starten Sie Postfix neu:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart postfix-mailcow
|
docker compose restart postfix-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart postfix-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
**5.** Wenn im Docker Daemon IPv6 komplett deaktiviert ist:
|
**5.** Wenn im Docker Daemon IPv6 komplett deaktiviert ist:
|
||||||
|
|
||||||
Folgende NGINX, Dovecot und Php-fpm Konfigurationsdateien anpassen
|
Folgende NGINX, Dovecot und Php-fpm Konfigurationsdateien anpassen
|
||||||
|
|
|
@ -45,11 +45,20 @@ services:
|
||||||
|
|
||||||
For these changes to be effective, you need to fully stop and then restart the stack, so containers and networks are recreated:
|
For these changes to be effective, you need to fully stop and then restart the stack, so containers and networks are recreated:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose down
|
docker compose down
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose down
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
**3.** Disable IPv6 in unbound-mailcow
|
**3.** Disable IPv6 in unbound-mailcow
|
||||||
|
|
||||||
Edit `data/conf/unbound/unbound.conf` and set `do-ip6` to "no":
|
Edit `data/conf/unbound/unbound.conf` and set `do-ip6` to "no":
|
||||||
|
@ -63,10 +72,18 @@ server:
|
||||||
|
|
||||||
Restart Unbound:
|
Restart Unbound:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart unbound-mailcow
|
docker compose restart unbound-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart unbound-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
**4.** Disable IPv6 in postfix-mailcow
|
**4.** Disable IPv6 in postfix-mailcow
|
||||||
|
|
||||||
Create `data/conf/postfix/extra.cf` and set `smtp_address_preference` to `ipv4`:
|
Create `data/conf/postfix/extra.cf` and set `smtp_address_preference` to `ipv4`:
|
||||||
|
@ -78,10 +95,18 @@ inet_protocols = ipv4
|
||||||
|
|
||||||
Restart Postfix:
|
Restart Postfix:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart postfix-mailcow
|
docker compose restart postfix-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart postfix-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
**5.** If your docker daemon completly disabled IPv6:
|
**5.** If your docker daemon completly disabled IPv6:
|
||||||
|
|
||||||
Fix the following NGINX, Dovecot and php-fpm config files
|
Fix the following NGINX, Dovecot and php-fpm config files
|
||||||
|
|
|
@ -52,7 +52,19 @@ services:
|
||||||
- rspamd-mailcow
|
- 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
|
## Senden Sie eine Kopie der Berichte an sich selbst
|
||||||
|
|
||||||
|
@ -77,35 +89,75 @@ Dies kann nĂĽtzlich sein, wenn Sie...
|
||||||
|
|
||||||
PrĂĽfen Sie, wann der Berichtsplan zuletzt ausgefĂĽhrt wurde:
|
PrĂĽfen Sie, wann der Berichtsplan zuletzt ausgefĂĽhrt wurde:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log
|
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:
|
Sehen Sie sich die letzte Berichtsausgabe an:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log
|
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:
|
Manuelles Auslösen eines DMARC-Berichts:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec rspamd-mailcow rspamadm dmarc_report
|
docker compose exec rspamd-mailcow rspamadm dmarc_report
|
||||||
```
|
```
|
||||||
|
|
||||||
Bestätigen Sie, dass Rspamd Daten in Redis aufgezeichnet hat:
|
=== "docker-compose (Standalone)"
|
||||||
Ă„ndern Sie `20220428` in ein anderes interessantes Datum zum schauen.
|
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec rspamd-mailcow rspamadm dmarc_report
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Bestätigen Sie, dass Rspamd Daten in Redis aufgezeichnet hat:
|
||||||
|
Ă„ndern Sie `20220428` in Ihr gewĂĽnschtes Datum zum ĂĽberprĂĽfen.
|
||||||
|
|
||||||
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428"
|
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.:
|
Nehmen Sie eine der Zeilen aus der Ausgabe, die Sie interessiert, und fordern Sie sie an, z. B.:
|
||||||
|
|
||||||
```
|
=== "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 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
|
## Ändern Sie die Häufigkeit der DMARC-Berichte
|
||||||
|
|
||||||
|
@ -118,7 +170,6 @@ Der Ofelia-Zeitplan hat die gleiche Implementierung wie `cron` in Go, die unters
|
||||||
Um den Zeitplan zu ändern:
|
Um den Zeitplan zu ändern:
|
||||||
|
|
||||||
1. `docker-compose.override.yml` bearbeiten:
|
1. `docker-compose.override.yml` bearbeiten:
|
||||||
|
|
||||||
```
|
```
|
||||||
version: '2.1'
|
version: '2.1'
|
||||||
|
|
||||||
|
@ -137,9 +188,33 @@ services:
|
||||||
- rspamd-mailcow
|
- rspamd-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
2. FĂĽhren Sie `docker compose up -d` aus.
|
2. Starten Sie die betroffenen Container neu:
|
||||||
|
|
||||||
3. FĂĽhren Sie `docker compose restart ofelia-mailcow` aus
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` 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
|
## 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
|
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
|
||||||
|
```
|
||||||
|
|
|
@ -52,7 +52,18 @@ services:
|
||||||
- rspamd-mailcow
|
- 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
|
## Send a copy reports to yourself
|
||||||
|
|
||||||
|
@ -77,33 +88,74 @@ This can be useful if you...
|
||||||
|
|
||||||
Check when the report schedule last ran:
|
Check when the report schedule last ran:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log
|
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:
|
See the latest report output:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log
|
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:
|
Manually trigger a DMARC report:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec rspamd-mailcow rspamadm dmarc_report
|
docker compose exec rspamd-mailcow rspamadm dmarc_report
|
||||||
```
|
```
|
||||||
|
|
||||||
Validate that Rspamd has recorded data in Redis:
|
=== "docker-compose (Standalone)"
|
||||||
Change `20220428` to date which you interested in.
|
|
||||||
|
|
||||||
|
``` 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 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 (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
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 (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49
|
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
|
## Change DMARC reporting frequency
|
||||||
|
|
||||||
In the example above reports are sent once every 24 hours and send reports for yesterday. This will be okay for most setups.
|
In the example above reports are sent once every 24 hours and send reports for yesterday. This will be okay for most setups.
|
||||||
|
@ -134,9 +186,33 @@ services:
|
||||||
- rspamd-mailcow
|
- 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
|
## 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`
|
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
|
||||||
|
```
|
||||||
|
|
|
@ -33,7 +33,21 @@ SQL_PORT=127.0.0.1:13306
|
||||||
SOLR_PORT=127.0.0.1:18983
|
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
|
## IPv6-Binding
|
||||||
|
|
||||||
|
@ -69,4 +83,18 @@ services:
|
||||||
- '[2001:db8:dead:beef::123]:443:443'
|
- '[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.
|
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
|
||||||
|
```
|
|
@ -33,7 +33,21 @@ SQL_PORT=127.0.0.1:13306
|
||||||
SOLR_PORT=127.0.0.1:18983
|
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
|
## IPv6 binding
|
||||||
|
|
||||||
|
@ -69,4 +83,18 @@ services:
|
||||||
- '[2001:db8:dead:beef::123]:443:443'
|
- '[2001:db8:dead:beef::123]:443:443'
|
||||||
```
|
```
|
||||||
|
|
||||||
To apply your changes, run `docker compose down` followed by `docker compose up -d`.
|
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
|
||||||
|
```
|
|
@ -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.
|
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.
|
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.
|
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-driver": "gelf",
|
||||||
"log-opts": {
|
"log-opts": {
|
||||||
"gelf-address": "udp://graylog:12201"
|
"gelf-address": "udp://graylog:12201"
|
||||||
}
|
}
|
||||||
...
|
[...]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -109,16 +121,30 @@ FĂĽr Syslog:
|
||||||
|
|
||||||
```
|
```
|
||||||
{
|
{
|
||||||
...
|
[...]
|
||||||
"log-driver": "syslog",
|
"log-driver": "syslog",
|
||||||
"log-opts": {
|
"log-opts": {
|
||||||
"syslog-address": "udp://1.2.3.4:514"
|
"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
|
### Log rotation
|
||||||
|
|
||||||
|
|
|
@ -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.
|
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.
|
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.
|
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
|
### Log rotation
|
||||||
|
|
||||||
|
|
|
@ -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!
|
**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!**
|
**Wichtige Informationen, bitte lesen Sie diese sorgfältig durch!**
|
||||||
|
|
||||||
!!! info
|
!!! 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.
|
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.
|
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.
|
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.
|
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
|
!!! 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.
|
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.
|
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
|
```yaml
|
||||||
version: '2.1'
|
version: '2.1'
|
||||||
|
@ -223,7 +247,7 @@ services:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
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}
|
- DOMAIN=${MAILCOW_HOSTNAME}
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
|
@ -239,13 +263,25 @@ volumes:
|
||||||
name: traefik_acme
|
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.
|
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.
|
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).
|
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
|
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
|
||||||
|
```
|
||||||
|
|
|
@ -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!
|
**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!**
|
**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.
|
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.
|
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
|
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.
|
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.
|
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).
|
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
|
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
|
||||||
|
```
|
||||||
|
|
|
@ -11,8 +11,32 @@ SNAT_TO_SOURCE=1.2.3.4
|
||||||
SNAT6_TO_SOURCE=dead:beef
|
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.
|
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.
|
Ăś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
|
||||||
|
```
|
|
@ -11,8 +11,32 @@ SNAT_TO_SOURCE=1.2.3.4
|
||||||
SNAT6_TO_SOURCE=dead:beef
|
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.
|
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.
|
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
|
||||||
|
```
|
|
@ -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.
|
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.
|
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.
|
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.
|
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
|
### 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.
|
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
|
!!! info
|
||||||
Die Verwendung anderer Namen als `MAILCOW_HOSTNAME` fĂĽr den Zugriff auf das mailcow UI kann weitere Konfiguration erfordern.
|
Die Verwendung anderer Namen als `MAILCOW_HOSTNAME` fĂĽr den Zugriff auf das mailcow UI kann weitere Konfiguration erfordern.
|
||||||
|
@ -40,13 +78,27 @@ Wenn Sie planen, einen anderen Servernamen als `MAILCOW_HOSTNAME` fĂĽr den Zugri
|
||||||
ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
|
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
|
### Erneuerung erzwingen
|
||||||
|
|
||||||
Um eine Erneuerung zu erzwingen, mĂĽssen Sie eine Datei namens `force_renew` erstellen und den `acme-mailcow` Container neu starten:
|
Um eine Erneuerung zu erzwingen, mĂĽssen Sie eine Datei namens `force_renew` erstellen und den `acme-mailcow` Container neu starten:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /opt/mailcow-dockerized
|
cd /opt/mailcow-dockerized
|
||||||
touch data/assets/ssl/force_renew
|
touch data/assets/ssl/force_renew
|
||||||
docker compose restart acme-mailcow
|
docker compose restart acme-mailcow
|
||||||
|
@ -54,26 +106,72 @@ docker compose restart acme-mailcow
|
||||||
docker compose logs --tail=200 -f acme-mailcow
|
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.
|
Die Datei wird automatisch gelöscht.
|
||||||
|
|
||||||
### Validierungsfehler und wie man die Validierung ĂĽberspringt
|
### Validierungsfehler und wie man die Validierung ĂĽberspringt
|
||||||
|
|
||||||
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.
|
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.
|
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
|
||||||
#### Deaktivieren Sie Let's Encrypt vollständig
|
#### 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
|
#### 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
|
### 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
|
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)).
|
(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:
|
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.
|
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).
|
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.
|
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`
|
- `MAILCOW_HOSTNAME=server.email.tld`
|
||||||
- `ADDITIONAL_SAN=webmail.email.tld,mail.*`
|
- `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:
|
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)
|
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
|
### Test gegen das ACME-Verzeichnis
|
||||||
|
|
||||||
Bearbeiten Sie `mailcow.conf` und fĂĽgen Sie `LE_STAGING=y` hinzu.
|
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
|
### 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.
|
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
|
### Ăś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.
|
Um zu ĂĽberprĂĽfen, ob nginx das richtige Zertifikat verwendet, benutzen Sie einfach einen Browser Ihrer Wahl und ĂĽberprĂĽfen Sie das angezeigte Zertifikat.
|
||||||
|
|
||||||
|
@ -170,7 +316,7 @@ openssl s_client -connect MAILCOW_HOSTNAME:443 | openssl x509 -noout -text
|
||||||
|
|
||||||
Um die von openssl zurückgegebenen Verfallsdaten gegen MAILCOW_HOSTNAME zu validieren, können Sie unser Hilfsskript verwenden:
|
Um die von openssl zurückgegebenen Verfallsdaten gegen MAILCOW_HOSTNAME zu validieren, können Sie unser Hilfsskript verwenden:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
cd /opt/mailcow-dockerized
|
cd /opt/mailcow-dockerized
|
||||||
bash helper-scripts/expiry-dates.sh
|
bash helper-scripts/expiry-dates.sh
|
||||||
```
|
```
|
||||||
|
|
|
@ -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.
|
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
|
### 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.
|
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
|
!!! info
|
||||||
Using names other name `MAILCOW_HOSTNAME` to access the mailcow UI may need further configuration.
|
Using names other name `MAILCOW_HOSTNAME` to access the mailcow UI may need further configuration.
|
||||||
|
@ -40,13 +78,27 @@ 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
|
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
|
### Force renewal
|
||||||
|
|
||||||
To force a renewal, you need to create a file named `force_renew` and restart the `acme-mailcow` container:
|
To force a renewal, you need to create a file named `force_renew` and restart the `acme-mailcow` container:
|
||||||
|
|
||||||
```
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
cd /opt/mailcow-dockerized
|
cd /opt/mailcow-dockerized
|
||||||
touch data/assets/ssl/force_renew
|
touch data/assets/ssl/force_renew
|
||||||
docker compose restart acme-mailcow
|
docker compose restart acme-mailcow
|
||||||
|
@ -54,26 +106,72 @@ docker compose restart acme-mailcow
|
||||||
docker compose logs --tail=200 -f acme-mailcow
|
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.
|
The file will be deleted automatically.
|
||||||
|
|
||||||
### Validation errors and how to skip validation
|
### Validation errors and how to skip validation
|
||||||
|
|
||||||
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.
|
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.
|
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
|
||||||
#### Disable Let's Encrypt completely
|
#### 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}
|
#### 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
|
### 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.
|
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
|
!!! 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).
|
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`
|
- `MAILCOW_HOSTNAME=server.email.tld`
|
||||||
- `ADDITIONAL_SAN=webmail.email.tld,mail.*`
|
- `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:
|
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`.
|
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
|
### 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.
|
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
|
### 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.
|
To check if nginx serves the correct certificate, simply use a browser of your choice and check the displayed certificate.
|
||||||
|
|
||||||
|
@ -170,7 +316,7 @@ openssl s_client -connect MAILCOW_HOSTNAME:443 | openssl x509 -noout -text
|
||||||
|
|
||||||
To validate the expiry dates as returned by openssl against MAILCOW_HOSTNAME, you are able to use our helper script:
|
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
|
cd /opt/mailcow-dockerized
|
||||||
bash helper-scripts/expiry-dates.sh
|
bash helper-scripts/expiry-dates.sh
|
||||||
```
|
```
|
||||||
|
|
134
docs/third_party/borgmatic/third_party-borgmatic.de.md
gevendort
134
docs/third_party/borgmatic/third_party-borgmatic.de.md
gevendort
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## EinfĂĽhrung
|
## 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.
|
einzurichten.
|
||||||
|
|
||||||
Aufgrund seiner Deduplizierungsfähigkeiten können Sie eine große Anzahl von Backups speichern, ohne große Mengen an Speicherplatz zu verschwenden.
|
Aufgrund seiner Deduplizierungsfähigkeiten können Sie eine große Anzahl von Backups speichern, ohne große Mengen an Speicherplatz zu verschwenden.
|
||||||
|
@ -127,10 +127,62 @@ 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:
|
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 (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose up -d
|
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
|
## Wiederherstellung von einem Backup
|
||||||
|
|
||||||
Das Wiederherstellen eines Backups setzt voraus, dass Sie mit einer neuen Installation von mailcow beginnen, und dass Sie derzeit keine
|
Das Wiederherstellen eines Backups setzt voraus, dass Sie mit einer neuen Installation von mailcow beginnen, und dass Sie derzeit keine
|
||||||
|
@ -138,13 +190,13 @@ keine benutzerdefinierten Daten in ihrem maildir oder ihrer mailcow Datenbank.
|
||||||
|
|
||||||
### Wiederherstellen von maildir
|
### 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
|
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.
|
Dateien von einem Backup wiederherzustellen.
|
||||||
|
|
||||||
!!! note "Wenn Sie SELinux im Erzwingungsmodus verwenden"
|
!!! 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
|
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
|
ausschlieĂźlich. SELinux wird (berechtigterweise) jeden anderen Container, wie z.B. den borgmatic Container, daran hindern, auf
|
||||||
dieses Volume zu schreiben.
|
dieses Volume zu schreiben.
|
||||||
|
|
||||||
|
@ -152,38 +204,62 @@ Bevor Sie eine Wiederherstellung durchfĂĽhren, mĂĽssen Sie das vmail-Volume in `
|
||||||
das `ro`-Flag aus dem Volume entfernen.
|
das `ro`-Flag aus dem Volume entfernen.
|
||||||
Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup wiederherzustellen:
|
Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup wiederherzustellen:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest
|
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
|
Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe
|
||||||
[Auflistung aller verfĂĽgbaren Archive](#auflistung-aller-verfugbaren-archive))
|
[Auflistung aller verfĂĽgbaren Archive](#auflistung-aller-verfugbaren-archive))
|
||||||
|
|
||||||
### MySQL wiederherstellen
|
### 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.
|
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:
|
Um die MySQL-Datenbank aus dem letzten Archiv wiederherzustellen, verwenden Sie diesen Befehl:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borgmatic restore --archive latest
|
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
|
Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe
|
||||||
[Auflistung aller verfĂĽgbaren Archive](#auflistung-aller-verfugbaren-archive))
|
[Auflistung aller verfĂĽgbaren Archive](#auflistung-aller-verfugbaren-archive))
|
||||||
|
|
||||||
### Nach der Wiederherstellung
|
### 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.
|
ihn wieder zu aktivieren.
|
||||||
|
|
||||||
Um mailcow neu zu starten, verwenden Sie den folgenden Befehl:
|
Um mailcow neu zu starten, verwenden Sie den folgenden Befehl:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose down && docker compose up -d
|
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
|
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.
|
eine Weile dauern kann, wenn Sie viele Dateien haben.
|
||||||
|
|
||||||
|
@ -191,25 +267,49 @@ eine Weile dauern kann, wenn Sie viele Dateien haben.
|
||||||
|
|
||||||
### Manueller Archivierungslauf (mit Debugging-Ausgabe)
|
### Manueller Archivierungslauf (mit Debugging-Ausgabe)
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borgmatic -v 2
|
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
|
### Auflistung aller verfĂĽgbaren Archive
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borgmatic list
|
docker compose exec borgmatic-mailcow borgmatic list
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec borgmatic-mailcow borgmatic list
|
||||||
|
```
|
||||||
|
|
||||||
### Sperre aufheben
|
### Sperre aufheben
|
||||||
|
|
||||||
Wenn borg während eines Archivierungslaufs unterbrochen wird, hinterlässt es eine veraltete Sperre, die gelöscht werden muss, bevor
|
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:
|
neue Operationen durchgeführt werden können:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow
|
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.
|
Wobei `user@rsync.net:mailcow` die URI zu Ihrem Repository ist.
|
||||||
|
|
||||||
Jetzt wäre ein guter Zeitpunkt, einen manuellen Archivierungslauf durchzuführen, um sicherzustellen, dass er erfolgreich durchgeführt werden kann.
|
Jetzt wäre ein guter Zeitpunkt, einen manuellen Archivierungslauf durchzuführen, um sicherzustellen, dass er erfolgreich durchgeführt werden kann.
|
||||||
|
@ -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:
|
Um die `keyfile` zu holen, fĂĽhren Sie aus:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borg key export --paper user@rsync.net:mailcow
|
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.
|
Wobei `user@rsync.net:mailcow` die URI zu Ihrem Repository ist.
|
||||||
|
|
102
docs/third_party/borgmatic/third_party-borgmatic.en.md
gevendort
102
docs/third_party/borgmatic/third_party-borgmatic.en.md
gevendort
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Introduction
|
## 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.
|
set up.
|
||||||
|
|
||||||
Due to it's deduplication capabilities you can store a great number of backups without wasting large amounts of disk
|
Due to it's deduplication capabilities you can store a great number of backups without wasting large amounts of disk
|
||||||
|
@ -128,10 +128,18 @@ 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:
|
For the next step we need the container to be up and running in a configured state. To do that run:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
### Initialize the repository
|
### Initialize the repository
|
||||||
|
|
||||||
By now your borgmatic container is up and running, but the backups will currently fail due to the repository not being
|
By now your borgmatic container is up and running, but the backups will currently fail due to the repository not being
|
||||||
|
@ -139,10 +147,18 @@ initialized.
|
||||||
|
|
||||||
To initialize the repository run:
|
To initialize the repository run:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2
|
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
|
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`
|
the prompt by entering `yes`. The repository will be initialized with the passphrase you set in the `BORG_PASSPHRASE`
|
||||||
environment variable earlier.
|
environment variable earlier.
|
||||||
|
@ -157,10 +173,18 @@ 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
|
Now that we finished configuring and initializing the repository restart the container to ensure it is in a defined
|
||||||
state:
|
state:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose restart borgmatic-mailcow
|
docker compose restart borgmatic-mailcow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose restart borgmatic-mailcow
|
||||||
|
```
|
||||||
|
|
||||||
## Restoring from a backup
|
## Restoring from a backup
|
||||||
|
|
||||||
Restoring a backup assumes you are starting off with a fresh installation of mailcow, and you currently do not have
|
Restoring a backup assumes you are starting off with a fresh installation of mailcow, and you currently do not have
|
||||||
|
@ -182,10 +206,18 @@ Before running a restore you must make the vmail volume writeable in `docker-com
|
||||||
the `ro` flag from the volume.
|
the `ro` flag from the volume.
|
||||||
Then you can use the following command to restore the maildir from a backup:
|
Then you can use the following command to restore the maildir from a backup:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest
|
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
|
Alternatively you can specify any archive name from the list of archives (see
|
||||||
[Listing all available archives](#listing-all-available-archives))
|
[Listing all available archives](#listing-all-available-archives))
|
||||||
|
|
||||||
|
@ -197,10 +229,18 @@ 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:
|
To restore the MySQL database from the latest archive use this command:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borgmatic restore --archive latest
|
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
|
Alternatively you can specify any archive name from the list of archives (see
|
||||||
[Listing all available archives](#listing-all-available-archives))
|
[Listing all available archives](#listing-all-available-archives))
|
||||||
|
|
||||||
|
@ -211,10 +251,18 @@ re-enable it.
|
||||||
|
|
||||||
To restart mailcow use the follwing command:
|
To restart mailcow use the follwing command:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose down && docker compose up -d
|
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
|
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.
|
take a while if you have lots of files.
|
||||||
|
|
||||||
|
@ -222,25 +270,49 @@ take a while if you have lots of files.
|
||||||
|
|
||||||
### Manual archiving run (with debugging output)
|
### Manual archiving run (with debugging output)
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borgmatic -v 2
|
docker compose exec borgmatic-mailcow borgmatic -v 2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec borgmatic-mailcow borgmatic -v 2
|
||||||
|
```
|
||||||
|
|
||||||
### Listing all available archives
|
### Listing all available archives
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borgmatic list
|
docker compose exec borgmatic-mailcow borgmatic list
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "docker-compose (Standalone)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker-compose exec borgmatic-mailcow borgmatic list
|
||||||
|
```
|
||||||
|
|
||||||
### Break lock
|
### Break lock
|
||||||
|
|
||||||
When borg is interrupted during an archiving run it will leave behind a stale lock that needs to be cleared before any
|
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:
|
new operations can be performed:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow
|
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.
|
Where `user@rsync.net:mailcow` is the URI to your repository.
|
||||||
|
|
||||||
Now would be a good time to do a manual archiving run to ensure it can be successfully performed.
|
Now would be a good time to do a manual archiving run to ensure it can be successfully performed.
|
||||||
|
@ -255,8 +327,16 @@ Note that in either case you also must have the passphrase to decrypt any archiv
|
||||||
|
|
||||||
To fetch the keyfile run:
|
To fetch the keyfile run:
|
||||||
|
|
||||||
```shell
|
=== "docker compose (Plugin)"
|
||||||
|
|
||||||
|
``` bash
|
||||||
docker compose exec borgmatic-mailcow borg key export --paper user@rsync.net:mailcow
|
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.
|
Where `user@rsync.net:mailcow` is the URI to your repository.
|
2
docs/third_party/checkmk/u_e-checkmk.de.md
gevendort
2
docs/third_party/checkmk/u_e-checkmk.de.md
gevendort
|
@ -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:
|
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:
|
||||||
|
|
||||||
|
|
2
docs/third_party/checkmk/u_e-checkmk.en.md
gevendort
2
docs/third_party/checkmk/u_e-checkmk.en.md
gevendort
|
@ -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:
|
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:
|
||||||
|
|
||||||
|
|
Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden Mehr anzeigen
Laden …
In neuem Issue referenzieren