diff --git a/404.html b/404.html index 2338d3076..8e020465d 100644 --- a/404.html +++ b/404.html @@ -62,6 +62,23 @@
Make sure the user you want to restore exists in your mailcow. Re-create them if they are missing.
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
2. Run docker-compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org
2. Run docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org
Run sogo-tool
without parameters to check for possible restore options.
3. Delete the copied backup by running rm __MAILCOW_DIRECTORY__/data/conf/sogo
4. Restart SOGo and Memcached: docker-compose restart sogo-mailcow memcached-mailcow
4. Restart SOGo and Memcached: docker compose restart sogo-mailcow memcached-mailcow
In case of an accidental deletion of a mailbox, you will be able to recover for (by default) 5 days. This depends on the MAILDIR_GC_TIME
parameter in mailcow.conf
.
A deleted mailbox is copied in its encrypted form to /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage
.
To restore make sure you are actually restoring to the same mailcow it was deleted from or you use the same encryption keys in crypt-vol-1
.
Make sure the user you want to restore exists in your mailcow. Re-create them if they are missing.
Copy the folders from /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]
back to /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]
and resync the folder and recalc the quota:
docker-compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*'
-docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
+docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*'
+docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
@@ -2460,7 +2477,7 @@ docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2576,7 +2593,7 @@ docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
On the destination (in this case /external_share/backups
) you may want to have snapshot capabilities (ZFS, Btrfs etc.). Snapshot daily and keep for n days for a consistent backup.
Do not rsync to a Samba share, you need to keep the correct permissions!
To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run docker-compose pull
and docker-compose up -d
.
To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run docker compose pull
and docker compose up -d
.
If you are lucky Redis and MariaDB can automatically fix the inconsistent databases (if they are inconsistent). In case of a corrupted database you'd need to use the helper script to restore the inconsistent elements. If a restore fails, try to extract the backups and copy the files back manually. Keep the file permissions!
@@ -2549,7 +2566,7 @@ In case of a corrupted database you'd need to use the helper script to restore t Last update: - 2022-07-11 21:14:01 + 2022-08-31 14:45:46 @@ -2665,7 +2682,7 @@ In case of a corrupted database you'd need to use the helper script to restore t - + diff --git a/backup_restore/b_n_r-backup_restore-maildir/index.html b/backup_restore/b_n_r-backup_restore-maildir/index.html index 7f3ced73a..d25c19e09 100644 --- a/backup_restore/b_n_r-backup_restore-maildir/index.html +++ b/backup_restore/b_n_r-backup_restore-maildir/index.html @@ -69,6 +69,23 @@This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory:
cd /path/to/mailcow-dockerized
-docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail
+docker 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
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
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:stretch-slim tar xvfz /backup/backup_vmail.tar.gz
cd /path/to/mailcow-dockerized
source mailcow.conf
DATE=$(date +"%Y%m%d_%H%M%S")
-docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql
+docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql
Warning
-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.
cd /path/to/mailcow-dockerized
source mailcow.conf
-docker exec -i $(docker-compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
+docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
To find the paths of your source volumes we use docker inspect
and read the destination directory of every volume related to your mailcow compose project. This means we will also transfer volumes you may have added in an override file. Local bind mounts may or may not work.
The script uses rsync with the --delete
flag. The destination will be an exact copy of the source.
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 docker compose pull
and remove old image tags from the destination.
Your source will not be changed at any time.
You may want to make sure to use the same /etc/docker/daemon.json
on the remote target.
You should not run disk snapshots (e.g. via ZFS, LVM etc.) on the target at the very same time as this script is run.
@@ -2488,7 +2505,7 @@ export REMOTE_SSH_HOST=mailcow-backup.host.nameThe key must be owned and readable by root only.
Both the source and destination require rsync
>= v3.1.0.
-The destination must have Docker and docker-compose v2 available.
The script will detect errors automatically and exit.
You may want to test the connection by running ssh mailcow-backup.host.name -p22 -i /path/to/keyfile
.
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
.
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. Starten Sie docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org
.
Führen Sie sogo-tool
ohne Parameter aus, um nach möglichen Wiederherstellungsoptionen zu suchen.
3. Löschen Sie die kopierte Sicherung, indem Sie rm __MAILCOW_DIRECTORY__/data/conf/sogo
ausführen
4. Starten Sie SOGo und Memcached neu: docker-compose restart sogo-mailcow memcached-mailcow
4. Starten Sie SOGo und Memcached neu: docker compose restart sogo-mailcow memcached-mailcow
Im Falle einer versehentlichen Löschung einer Mailbox, können Sie diese (standardmäßig) 5 Tage lang wiederherstellen. Dies hängt von dem MAILDIR_GC_TIME
Parameter in mailcow.conf
ab.
Eine gelöschte Mailbox wird in ihrer verschlüsselten Form nach /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage
kopiert.
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.
Kopieren Sie die Ordner von /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]
zurück nach /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]
und synchronisieren Sie die Ordner neu und berechnen Sie die Quota (Speicherplatz) neu:
docker-compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*'
-docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
+docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*'
+docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
@@ -2460,7 +2477,7 @@ docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
Letztes Update:
- 2022-06-27 19:14:02
+ 2022-08-31 14:45:46
@@ -2576,7 +2593,7 @@ docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
Am Zielort (in diesem Fall /external_share/backups
) möchten Sie vielleicht Snapshot-Möglichkeiten haben (ZFS, Btrfs usw.). Machen Sie täglich einen Snapshot und bewahren Sie ihn für n Tage auf, um ein konsistentes Backup zu erhalten.
Führen Sie kein rsync auf eine Samba-Freigabe durch, Sie müssen die richtigen Berechtigungen behalten!
Zum Wiederherstellen müssen Sie rsync einfach in umgekehrter Richtung ausführen und Docker neu starten, um die Volumes erneut zu lesen. Führen Sie docker-compose pull
und docker-compose up -d
aus.
Zum Wiederherstellen müssen Sie rsync einfach in umgekehrter Richtung ausführen und Docker neu starten, um die Volumes erneut zu lesen. Führen Sie docker compose pull
und docker compose up -d
aus.
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!
@@ -2549,7 +2566,7 @@ Im Falle einer beschädigten Datenbank müssen Sie das Hilfsskript verwenden, um Letztes Update: - 2022-07-11 21:14:01 + 2022-08-31 14:45:46 @@ -2665,7 +2682,7 @@ Im Falle einer beschädigten Datenbank müssen Sie das Hilfsskript verwenden, um - + diff --git a/de/backup_restore/b_n_r-backup_restore-maildir/index.html b/de/backup_restore/b_n_r-backup_restore-maildir/index.html index 5797d762c..cf1a64b16 100644 --- a/de/backup_restore/b_n_r-backup_restore-maildir/index.html +++ b/de/backup_restore/b_n_r-backup_restore-maildir/index.html @@ -69,6 +69,23 @@Diese Zeile sichert das vmail-Verzeichnis in eine Datei backup_vmail.tar.gz im mailcow-Root-Verzeichnis:
cd /pfad/zu/mailcow-dockerized
-docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail
+docker 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
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
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:stretch-slim tar xvfz /backup/backup_vmail.tar.gz
cd /pfad/zu/mailcow-dockerized
source mailcow.conf
DATE=$(date +"%Y%m%d_%H%M%S")
-docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql
+docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql
Warning
-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.
cd /pfad/zu/mailcow-dockerized
source mailcow.conf
-docker exec -i $(docker-compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
+docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
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.
Das Skript verwendet rsync mit dem --delete
Flag. Das Ziel wird eine exakte Kopie der Quelle sein.
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 docker compose pull
aus und entfernen alte Image-Tags aus dem Ziel.
Ihre Quelle wird zu keinem Zeitpunkt verändert.
Sie sollten sicherstellen, dass Sie die gleiche /etc/docker/daemon.json
auf dem entfernten Ziel verwenden.
Sie sollten keine Festplatten-Snapshots (z. B. über ZFS, LVM usw.) auf dem Ziel ausführen, während dieses Skript ausgeführt wird.
@@ -2488,7 +2505,7 @@ export REMOTE_SSH_HOST=mailcow-backup.host.nameDer Schlüssel muss im Besitz von root sein und darf nur von diesem gelesen werden können.
Sowohl die Quelle als auch das Ziel benötigen rsync
>= v3.1.0.
-Das Ziel muss über Docker und docker-compose v2 verfügen.
Das Skript wird Fehler automatisch erkennen und sich beenden.
Sie können die Verbindung testen, indem Sie ssh mailcow-backup.host.name -p22 -i /path/to/keyfile
ausführen.
Um mailcow: dockerized mit all seinen Volumes, Images und Containern zu entfernen, tun Sie dies:
-docker-compose down -v --rmi all --remove-orphans
+docker compose down -v --rmi all --remove-orphans
Info
@@ -2377,7 +2394,7 @@
-v Entfernt benannte Volumes, die im Abschnitt volumes
der Compose-Datei deklariert sind, und anonyme Volumes, die an Container angehängt sind.
--rmi Images entfernen. Der Typ muss einer der folgenden sein: all
: Entfernt alle Images, die von einem beliebigen Dienst verwendet werden. local
: Entfernt nur Bilder, die kein benutzerdefiniertes Tag haben, das durch das Feld "image" gesetzt wurde.
--remove-orphans Entfernt Container für Dienste, die nicht in der Compose-Datei definiert sind.
-Standardmäßig entfernt docker-compose down
nur derzeit aktive Container und Netzwerke, die in der Datei docker-compose.yml
definiert sind.
+Standardmäßig entfernt docker compose down
nur derzeit aktive Container und Netzwerke, die in der Datei docker compose.yml
definiert sind.
@@ -2386,7 +2403,7 @@
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2502,7 +2519,7 @@
Sie benötigen Docker (eine Version >= 20.10.2
ist erforderlich) und Docker Compose (eine Version >= 2.0
ist erforderlich).
1. Erfahren Sie, wie Sie Docker und Docker Compose installieren.
+Erfahren Sie, wie Sie Docker und Docker Compose installieren.
Schnelle Installation für die meisten Betriebssysteme:
-Docker -
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
+Docker¶
+curl -sSL https://get.docker.com/ | CHANNEL=stable sh
# Nachdem der Installationsprozess abgeschlossen ist, müssen Sie eventuell den Dienst aktivieren und sicherstellen, dass er gestartet ist (z. B. CentOS 7)
systemctl enable --now docker
-
-
--
-
Docker-Compose
-
-
+
Achtung
-mailcow benötigt die neueste Version von docker-compose v2. Es wird dringend empfohlen, die untenstehenden Befehle zu verwenden, um docker-compose
zu installieren. Paket-Manager (z.B. apt
, yum
) werden wahrscheinlich nicht die richtige Version liefern.
-Hinweis: Dieser Befehl lädt docker-compose aus dem offiziellen Docker-Github-Repository herunter und ist eine sichere Methode. Das Snippet ermittelt die neueste unterstützte Version von mailcow. In fast allen Fällen ist dies die letzte verfügbare Version (Ausnahmen sind kaputte Versionen oder größere Änderungen, die noch nicht von mailcow unterstützt werden).
mailcow benötigt eine Version von Docker Compose >= v2.
+
Sollte die Installation von Docker über das obenstehende Skript erfolgt sein wird das Docker Compose Plugin bereits automatisch
+in einer Version >=2.0 installiert.
+Ist die mailcow Installation älter oder Docker wurde auf einem anderen Weg installiert, muss das Compose Plugin bzw. die Standalone Version von Docker manuell installiert werden.
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
-chmod +x /usr/local/bin/docker-compose
+Installation via Paketmanager (Plugin)¶
+
+Hinweis
+Diese Vorgehensweise mit den Paketquellen ist nur dann möglich, wenn das Docker Repository eingebunden wurde. Dies kann entweder durch die Anleitung oben (siehe Docker) oder durch eine manuelle Einbindung passieren.
+
+Auf Debian/Ubuntu Systemen:
+
apt update
+apt install docker compose-plugin
+
+Auf Centos 7 Systemen:
+
yum update
+yum install docker compose-plugin
+
+
+Achtung
+Die Syntax der Docker Compose Befehle lautet docker compose
bei der Plugin Variante von Docker Compose!!
+
+Installation via Script (Standalone)¶
+
+Hinweis
+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
+chmod +x /usr/local/bin/docker compose
-Bitte verwenden Sie die neueste verfügbare Docker-Engine und nicht die Engine, die mit Ihrem Distros-Repository ausgeliefert wird.
-1.1.1. Auf SELinux-aktivierten Systemen, z.B. CentOS 7:
+
+Achtung
+Die Syntax der Docker Compose Befehle lautet docker compose
bei der Standalone Variante von Docker Compose!!
+
+SELinux Besonderheiten prüfen¶
+Auf SELinux-aktivierten Systemen, z.B. CentOS 7:
- Prüfen Sie, ob das Paket "container-selinux" auf Ihrem System vorhanden ist:
@@ -2412,7 +2692,8 @@ chmod +x /usr/local/bin/docker-compose
Starten Sie den Docker-Daemon neu und überprüfen Sie, ob SELinux nun aktiviert ist.
Dieser Schritt ist erforderlich, um sicherzustellen, dass die mailcows-Volumes richtig gekennzeichnet sind, wie in der Compose-Datei angegeben.
Wenn Sie daran interessiert sind, wie das funktioniert, können Sie sich die Readme-Datei von https://github.com/containers/container-selinux ansehen, die auf viele nützliche Informationen zu diesem Thema verweist.
-2. Klonen Sie den Master-Zweig des Repositorys und stellen Sie sicher, dass Ihre umask gleich 0022 ist. Bitte klonen Sie das Repository als root-Benutzer und kontrollieren Sie auch den Stack als root. Wir werden die Attribute - wenn nötig - ändern, während wir die Container automatisch bereitstellen und sicherstellen, dass alles gesichert ist. Das update.sh-Skript muss daher ebenfalls als root ausgeführt werden. Es kann notwendig sein, den Besitzer und andere Attribute von Dateien zu ändern, auf die Sie sonst keinen Zugriff haben. Wir geben die Berechtigungen für jede exponierte Anwendung auf und führen einen exponierten Dienst nicht als root aus! Wenn Sie den Docker-Daemon als Nicht-Root-Benutzer steuern, erhalten Sie keine zusätzliche Sicherheit. Der unprivilegierte Benutzer wird die Container ebenfalls als root spawnen. Das Verhalten des Stacks ist identisch.
+mailcow Installieren¶
+Klonen Sie den Master-Zweig des Repositorys und stellen Sie sicher, dass Ihre umask gleich 0022 ist. Bitte klonen Sie das Repository als root-Benutzer und kontrollieren Sie auch den Stack als root. Wir werden die Attribute - wenn nötig - ändern, während wir die Container automatisch bereitstellen und sicherstellen, dass alles gesichert ist. Das update.sh-Skript muss daher ebenfalls als root ausgeführt werden. Es kann notwendig sein, den Besitzer und andere Attribute von Dateien zu ändern, auf die Sie sonst keinen Zugriff haben. Wir geben die Berechtigungen für jede exponierte Anwendung auf und führen einen exponierten Dienst nicht als root aus! Wenn Sie den Docker-Daemon als Nicht-Root-Benutzer steuern, erhalten Sie keine zusätzliche Sicherheit. Der unprivilegierte Benutzer wird die Container ebenfalls als root spawnen. Das Verhalten des Stacks ist identisch.
$ su
# umask
0022 # <- Überprüfen, dass es 0022 ist
@@ -2420,18 +2701,20 @@ Wenn Sie daran interessiert sind, wie das funktioniert, können Sie sich die Rea
# git clone https://github.com/mailcow/mailcow-dockerized
# cd mailcow-dockerized
-3. Erzeugen Sie eine Konfigurationsdatei. Verwenden Sie einen FQDN (host.domain.tld
) als Hostname, wenn Sie gefragt werden.
+
mailcow Initialisieren¶
+Erzeugen Sie eine Konfigurationsdatei. Verwenden Sie einen FQDN (host.domain.tld
) als Hostname, wenn Sie gefragt werden.
./generate_config.sh
-4. Ändern Sie die Konfiguration, wenn Sie das wollen oder müssen.
+
Ändern Sie die Konfiguration, wenn Sie wollen oder müssen.
nano mailcow.conf
Wenn Sie planen, einen Reverse Proxy zu verwenden, können Sie zum Beispiel HTTPS an 127.0.0.1 auf Port 8443 und HTTP an 127.0.0.1 auf Port 8080 binden.
Möglicherweise müssen Sie einen vorinstallierten MTA stoppen, der Port 25/tcp blockiert. Siehe dieses Kapitel, um zu erfahren, wie man Postfix rekonfiguriert, um nach einer erfolgreichen Installation neben mailcow laufen zu lassen.
Einige Updates modifizieren mailcow.conf und fügen neue Parameter hinzu. Es ist schwer, in der Dokumentation den Überblick zu behalten. Bitte überprüfen Sie deren Beschreibung und fragen Sie, wenn Sie unsicher sind, in den bekannten Kanälen nach Rat.
-4.1. Benutzer mit einer MTU ungleich 1500 (z.B. OpenStack):
+Problembehandlungen¶
+Benutzer mit einer MTU ungleich 1500 (z.B. OpenStack)¶
Wenn Sie auf Probleme und seltsame Phänomene stoßen, überprüfen Sie bitte Ihre MTU.
-Bearbeiten Sie docker-compose.yml
und ändern Sie die Netzwerkeinstellungen entsprechend Ihrer MTU.
+
Bearbeiten Sie docker compose.yml
und ändern Sie die Netzwerkeinstellungen entsprechend Ihrer MTU.
Fügen Sie den neuen Parameter driver_opts wie folgt hinzu:
networks:
mailcow-network:
@@ -2440,12 +2723,13 @@ Fügen Sie den neuen Parameter driver_opts wie folgt hinzu:
com.docker.network.driver.mtu: 1450
...
-4.2. Benutzer ohne ein IPv6-aktiviertes Netzwerk auf ihrem Hostsystem:
-Einschalten von IPv6. Endlich.
-Wenn Sie kein IPv6-fähiges Netzwerk auf Ihrem Host haben und Sie sich nicht um ein besseres Internet kümmern (hehe), ist es empfehlenswert, IPv6 für das mailcow-Netzwerk zu deaktivieren, um unvorhergesehene Probleme zu vermeiden.
-5. LAden Sie die Images herunter und führen Sie die Compose-Datei aus. Der Parameter -d
wird mailcow: dockerized starten:
-
docker-compose pull
-docker-compose up -d
+Benutzer ohne ein IPv6-aktiviertes Netzwerk auf ihrem Hostsystem¶
+Schalten Sie IPv6 bitte nicht ab, auch wenn es Ihnen nicht gefällt. IPv6 ist die Zukunft und sollte nicht ignoriert werden.
+Sollten Sie jedoch kein IPv6-fähiges Netzwerk auf Ihrem Host haben und Sie sich nicht um ein besseres Internet kümmern wollen (hehe), ist es empfehlenswert, IPv6 für das mailcow-Netzwerk zu deaktivieren, um unvorhergesehene Probleme zu vermeiden.
+mailcow starten¶
+Laden Sie die Images herunter und führen Sie die Compose-Datei aus. Der Parameter -d
wird ihre mailcow dann im Hintergrund starten:
+
docker compose pull
+docker compose up -d
Geschafft!
Sie können nun auf https://${MAILCOW_HOSTNAME} mit den Standard-Zugangsdaten admin
+ Passwort moohoo
zugreifen.
@@ -2454,14 +2738,14 @@ docker-compose up -d
Wenn Sie mailcow nicht hinter einem Reverse Proxy verwenden, sollten Sie alle HTTP-Anfragen auf HTTPS umleiten.
Die Datenbank wird sofort initialisiert, nachdem eine Verbindung zu MySQL hergestellt werden kann.
-Ihre Daten bleiben in mehreren Docker-Volumes erhalten, die nicht gelöscht werden, wenn Sie Container neu erstellen oder löschen. Führen Sie docker volume ls
aus, um eine Liste aller Volumes zu sehen. Sie können docker-compose down
sicher ausführen, ohne persistente Daten zu entfernen.
+Ihre Daten bleiben in mehreren Docker-Volumes erhalten, die nicht gelöscht werden, wenn Sie Container neu erstellen oder löschen. Führen Sie docker volume ls
aus, um eine Liste aller Volumes zu sehen. Sie können docker compose down
sicher ausführen, ohne persistente Daten zu entfernen.
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2577,7 +2861,7 @@ docker-compose up -d
-
+
diff --git a/de/i_u_m/i_u_m_migration/index.html b/de/i_u_m/i_u_m_migration/index.html
index 5d280fb1c..7b0713c9c 100644
--- a/de/i_u_m/i_u_m_migration/index.html
+++ b/de/i_u_m/i_u_m_migration/index.html
@@ -64,6 +64,23 @@
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.
1. -Installieren Sie Docker und docker-compose auf Ihrem neuen Server.
+Installieren Sie Docker und docker compose auf Ihrem neuen Server.Schnelle Installation für die meisten Betriebssysteme:
docker-compose -
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
-chmod +x /usr/local/bin/docker-compose
+docker compose
+
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
+chmod +x /usr/local/bin/docker compose
@@ -2405,7 +2422,7 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.
4. Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner.
cd /opt/mailcow-dockerized
-docker-compose herunterfahren
+docker compose herunterfahren
systemctl stop docker.service
**Wiederholen Sie Schritt 3 mit denselben Befehlen. Dies wird viel schneller gehen als beim ersten Mal.
@@ -2414,10 +2431,10 @@ systemctl stop docker.service7. Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner.
cd /opt/mailcow-dockerized
-docker-compose pull
+docker compose pull
8. Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein! -
docker-compose up -d
+docker compose up -d
9. Zum Schluss ändern Sie Ihre DNS-Einstellungen so, dass sie auf den Zielserver zeigen.
@@ -2426,7 +2443,7 @@ docker-compose pull
Letztes Update:
- 2022-06-24 11:27:36
+ 2022-08-31 14:45:46
@@ -2542,7 +2559,7 @@ docker-compose pull
Ein Update-Skript in Ihrem mailcow-dockerized Verzeichnis kümmert sich um Updates.
Aber benutzen Sie es mit Bedacht! Wenn Sie denken, dass Sie viele Änderungen am mailcow-Code vorgenommen haben, sollten Sie die manuelle Update-Anleitung unten verwenden.
Führen sie das Update-Skript aus: @@ -2520,8 +2619,12 @@ Einige kleinere Konflikte werden automatisch korrigiert (zugunsten des mailcow-d # - Überspringt den ICMP Check auf die öffentlichen DNS Resolver (Bitte nur nutzen, wenn keinerlei ICMP Verbindungen von und zur mailcow erlaubt sind) ./update.sh --skip-ping-check -# - Überspringt den Docker-Compose Update Prozess, aktualisierung erfolgt dann vom Benutzer -./update.sh --no-update-compose +# - Wechselt die Update Quellen der mailcow auf nightly (unstabile) Inhalte. +NUR ZUM TESTEN VERWENDEN!! KEIN PRODUKTIV BETRIEB!!! +./update.sh --nightly + +# - Wechselt die Update Quellen der mailcow auf stable (stabile) Inhalte (standard). +./update.sh --stable # - Erzwinge Update (unbeaufsichtigt, aber nicht unterstützt, Benutzung auf eigenes Risiko) ./update.sh --force @@ -2545,11 +2648,11 @@ dacd4fb9b51e9e1c8a37d84485b92ffaf6c59353 Before update on 2020-08-07_13_31_31
Ja.
Siehe das obige Thema, anstelle eines Diffs führen Sie checkout aus:
-docker-compose down
+docker compose down
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
-docker-compose pull
-docker-compose up -d
+docker compose pull
+docker compose up -d
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 für weitere Details.
@@ -2559,13 +2662,40 @@ docker-compose up -d
- 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.
+Update-Varianten¶
+stable (stabile Updates): Diese Updates sind für den Produktivbetrieb geeignet. Sie erscheinen in einem Zyklus von mindest 1x im Monat.
+nightly (instabile Updates): Diese Updates sind NICHT für den Produktivbetrieb geeignet und dienen lediglich dem Testen. Die nightly Updates sind den stabilen Updates vorraus, da in diesen neue und auch umfangreichere Funktionen getestet werden bevor diese für alle User Live gehen.
+NEU: Nightly Updates beziehen¶
+Infos zu den Nightly Updates¶
+Seit dem 2022-08 Update gibt es die Möglichkeit die Update quellen zu ändern. Bisher diente der master Branch auf GitHub als einzige (offizieller) Update Quelle. Mit dem August 2022 Update gibt es aber nun noch den Nightly Branch welcher instabile und größere Änderungen zum testen und Feedback geben enthält.
+Dabei bekommt der Nightly Branch immer dann neue Updates, wenn irgendetwas am mailcow Projekt fertig gemacht wurde was in die neue Hauptversion reinkommt.
+Neben den offensichtlichen neuerungen welche sowieso im nächsten Major Update enthalten sein werden enthält er ebenfalls erstmal exklusive Features welche eine längere Testzeit brauchen (bspw. das UI Update auf Bootstrap 5).
+Wie bekomme ich Nightly Updates?¶
+Der Vorgang ist relativ simpel. Mit dem 2022-08 Update (ein Update auf die Version voraussgesetzt) ist es möglich die update.sh
mit dem Parameter --nightly
zu starten.
+
+Achtung
Bitte machen Sie vorher ein Backup oder folgen Sie dem Abschnitt Best Practice Nightly Update bevor Sie auf die Nightly Builds von mailcow wechseln. Wir sind für keinerlei Datenverluste/korruptionen verantwortlich, also arbeiten Sie mit bedacht!
+
+
+Das Skript wird nun den Branch wechseln mit git checkout nightly
d.h. es wird auch wieder nach den IPv6 Einstellungen fragen. Das ist aber normal.
+Sollte alles problemlos geklappt haben (wofür wir ja auch vorsichtshalber ein Backup vorher gemacht haben) sollte nun in der mailcow UI unten rechts die aktuelle Versionsnummer samt Datumsstempel abgebildet sein:
+
+Best Practice Nightly Update¶
+
+Info
Wir empfehlen die Benutzung des Nightly Updates nur dann, wenn Ihr eine weitere Maschine oder VM besitzt und diese NICHT Produktiv nutzt.
+
+
+
+- Das Cold-Standby Skript nutzen um die Maschine vor dem Schwenk auf die Nightly Builds auf ein anderes System zu kopieren.
+- Das
update.sh
Skript auf der neuen Maschine mit dem Parameter --nightly
ausführen und bestätigen.
+- Die Nightly Updates auf der sekundären Maschine erleben/testen.
+
Letztes Update:
- 2022-06-23 15:19:13
+ 2022-08-31 14:45:46
@@ -2681,7 +2811,7 @@ docker-compose up -d
-
+
diff --git a/de/index.html b/de/index.html
index 4313f8f62..7efa739cc 100644
--- a/de/index.html
+++ b/de/index.html
@@ -69,6 +69,23 @@
docker-compose restart clamd-mailcow
+docker compose restart clamd-mailcow
Bitte beachten Sie:
@@ -2538,7 +2555,7 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
docker-compose restart clamd-mailcow
+docker compose restart clamd-mailcow
@@ -2547,7 +2564,7 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2663,7 +2680,7 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
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 logs clamd-mailcow | grep "FOUND"
+docker compose logs clamd-mailcow | grep "FOUND"
Diese Zeile bestätigt, dass ein solcher identifiziert wurde:
clamd-mailcow_1 | Sat Sep 28 07:43:24 2019 -> instream(local): PUA.Pdf.Trojan.EmbeddedJavaScript-1(e887d2ac324ce90750768b86b63d0749:363325) FOUND
@@ -2429,11 +2446,11 @@
Um diese spezielle Signatur auf die Whitelist zu setzen (und den Versand dieses Dateityps im Anhang zu ermöglichen), fügen Sie sie der ClamAV-Signatur-Whitelist-Datei hinzu:
echo 'PUA.Pdf.Trojan.EmbeddedJavaScript-1' >> data/conf/clamav/whitelist.ign2
-Dann starten Sie den clamd-mailcow Service Container in der mailcow UI oder mit docker-compose neu:
-docker-compose restart clamd-mailcow
+Dann starten Sie den clamd-mailcow Service Container in der mailcow UI oder mit docker compose neu:
+docker compose restart clamd-mailcow
Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis:
-# docker-compose exec redis-mailcow /bin/sh
+# docker compose exec redis-mailcow /bin/sh
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
/data # exit
@@ -2443,7 +2460,7 @@
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2559,7 +2576,7 @@
-
+
diff --git a/de/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html b/de/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html
index a42e3f4ae..847d43cd7 100644
--- a/de/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html
+++ b/de/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2371,13 +2388,13 @@
Dockerfiles anpassen
Sie müssen die Override-Datei mit den entsprechenden Build-Tags in den mailcow: dockerized Root-Ordner (d.h. /opt/mailcow-dockerized
) kopieren:
-cp helper-scripts/docker-compose.override.yml.d/BUILD_FLAGS/docker-compose.override.yml docker-compose.override.yml
+cp helper-scripts/docker compose.override.yml.d/BUILD_FLAGS/docker compose.override.yml docker compose.override.yml
Nehmen Sie Ihre Änderungen in data/Dockerfiles/$service
vor und erstellen Sie das Image lokal:
docker build data/Dockerfiles/service -t mailcow/$service
Nun werden die geänderten Container automatisch neu erstellt:
-docker-compose up -d
+docker compose up -d
@@ -2385,7 +2402,7 @@
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2501,7 +2518,7 @@
-
+
diff --git a/de/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html b/de/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html
index 4af6c3efa..2ca8824b4 100644
--- a/de/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html
+++ b/de/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2374,14 +2391,14 @@
Diese Funktion kann wieder aktiviert werden, indem ACL_ANYONE
auf allow
in mailcow.conf gesetzt wird:
ACL_ANYONE=allow
-Wenden Sie die Änderungen an, indem Sie docker-compose up -d
ausführen.
+Wenden Sie die Änderungen an, indem Sie docker compose up -d
ausführen.
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2497,7 +2514,7 @@
-
+
diff --git a/de/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html b/de/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html
index fe2f84f4e..b2f8dfe50 100644
--- a/de/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html
+++ b/de/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2494,7 +2511,7 @@
Dann wollen wir mal loslegen:
Löschen Sie die Mails eines Benutzers im Junk-Ordner, die gelesen und älter als 4 Stunden sind
-docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
+docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
Lösche alle Mails des Benutzers im Junk-Ordner, die älter als 7 Tage sind
-docker-compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
+docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
Löscht alle Mails (aller Benutzer) in allen Ordnern, die älter als 52 Wochen sind (internes Datum der Mail, nicht das Datum, an dem sie auf dem System gespeichert wurde => before
statt savedbefore
). Nützlich zum Löschen sehr alter Mails in allen Benutzern und Ordnern (daher besonders nützlich für GDPR-Compliance).
-docker-compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
+docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
Löschen von Mails in einem benutzerdefinierten Ordner innerhalb des Posteingangs eines Benutzers, die nicht gekennzeichnet und älter als 2 Wochen sind
-docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w
+docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w
Info
@@ -2499,8 +2516,8 @@
# Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized
cd /pfad/zu/ihrem/mailcow-dockerized
-/usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
-/usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h
+/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
+/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h
[...]
Um einen Cronjob zu erstellen, können Sie crontab -e
ausführen und etwas wie das Folgende einfügen, um ein Skript auszuführen:
@@ -2508,7 +2525,7 @@ cd /pfad/zu/ihrem/mailcow-dockerized
0 4 * * * /pfad/zu/ihr/expunge_mailboxes.sh
ü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:
version: '2.1'
services:
@@ -2529,7 +2546,7 @@ services:
- "ofelia.job-exec.dovecot-expunge-trash.tty=false"
Der Job-Controller braucht nur Zugriff auf den Docker Control Socket, um das Verhalten von "exec" zu emulieren. Dann fügen wir unserem Dovecot-Container ein paar Labels hinzu, um den Job-Scheduler zu aktivieren und ihm in einem Cron-kompatiblen Scheduling-Format mitzuteilen, wann er laufen soll. Wenn Sie Probleme mit dem Scheduling-String haben, können Sie crontab guru verwenden.
-Diese docker-compose.override.yml löscht jeden Tag um 4 Uhr morgens alle Mails, die älter als 2 Wochen sind, aus dem Ordner "Junk". Um zu sehen, ob alles richtig gelaufen ist, können Sie nicht nur in Ihrer Mailbox nachsehen, sondern auch im Docker-Log von Ofelia, ob es etwa so aussieht:
+Diese docker compose.override.yml löscht jeden Tag um 4 Uhr morgens alle Mails, die älter als 2 Wochen sind, aus dem Ordner "Junk". Um zu sehen, ob alles richtig gelaufen ist, können Sie nicht nur in Ihrer Mailbox nachsehen, sondern auch im Docker-Log von Ofelia, ob es etwa so aussieht:
common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)] Started - doveadm expunge -A mailbox 'Junk' savedbefore 2w,
common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)] Finished in "285.032291ms", failed: false, skipped: false, error: none,
@@ -2541,7 +2558,7 @@ common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)]
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2657,7 +2674,7 @@ common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)]
-
+
diff --git a/de/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html b/de/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html
index 2c615ac34..3d031d28e 100644
--- a/de/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html
+++ b/de/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2372,7 +2389,7 @@
Erstellen Sie eine Datei data/conf/dovecot/extra.conf
- falls nicht vorhanden - und fügen Sie Ihren zusätzlichen Inhalt hier ein.
Starten Sie dovecot-mailcow
neu, um Ihre Änderungen zu übernehmen:
-docker-compose restart dovecot-mailcow
+docker compose restart dovecot-mailcow
@@ -2380,7 +2397,7 @@
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2496,7 +2513,7 @@
-
+
diff --git a/de/manual-guides/Dovecot/u_e-dovecot-fts/index.html b/de/manual-guides/Dovecot/u_e-dovecot-fts/index.html
index 6eeecc195..81cbf945c 100644
--- a/de/manual-guides/Dovecot/u_e-dovecot-fts/index.html
+++ b/de/manual-guides/Dovecot/u_e-dovecot-fts/index.html
@@ -69,6 +69,23 @@
Da wir in Docker laufen und unsere Container mit dem "restart: always" Flag erstellen, wird eine oom Situation zumindest nur einen Neustart des Containers auslösen.
# 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
-docker-compose exec dovecot-mailcow doveadm fts rescan -A
+docker compose exec dovecot-mailcow doveadm fts rescan -A
Dies indiziert nicht eine Mailbox neu. Es repariert im Grunde einen gegebenen Index.
Wenn Sie die Daten sofort neu indizieren wollen, können Sie den folgenden Befehl ausführen, wobei '*' auch eine Postfachmaske wie 'Sent' sein kann. Sie müssen diese Befehle nicht ausführen, aber es wird die Dinge ein wenig beschleunigen:
# einzelner Benutzer
-docker-compose exec dovecot-mailcow doveadm index -u user@domain '*'
+docker compose exec dovecot-mailcow doveadm index -u user@domain '*'
# alle Benutzer, aber offensichtlich langsamer und gefährlicher
-docker-compose exec dovecot-mailcow doveadm index -A '*'
+docker compose 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!
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.
@@ -2489,7 +2506,7 @@ docker-compose exec dovecot-mailcow doveadm index -A '*' Letztes Update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2605,7 +2622,7 @@ docker-compose exec dovecot-mailcow doveadm index -A '*' - + diff --git a/de/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html b/de/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html index ac901ec5b..8d44c5d38 100644 --- a/de/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html +++ b/de/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html @@ -69,6 +69,23 @@Nun laden Sie Dovecot neu:
-docker-compose exec dovecot-mailcow dovecot reload
+docker compose exec dovecot-mailcow dovecot reload
Info
Sie können den Wert dieser Einstellung überprüfen mit
-
docker-compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval"
+docker compose 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.
@@ -2509,7 +2526,7 @@ Wenn Sie den Wert nicht geändert haben, sollte er auf 2m stehen. Wenn Sie ihn g
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2625,7 +2642,7 @@ Wenn Sie den Wert nicht geändert haben, sollte er auf 2m stehen. Wenn Sie ihn g
-
+
diff --git a/de/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html b/de/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html
index 5eed3c7ed..38300cda3 100644
--- a/de/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html
+++ b/de/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html
@@ -64,6 +64,23 @@
Die Mails werden komprimiert (lz4) und verschlüsselt gespeichert. Das Schlüsselpaar ist in crypt-vol-1 zu finden.
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.
Rufen Sie Dovecot auf, indem Sie docker compose exec dovecot-mailcow /bin/bash
im mailcow-dockerisierten Verzeichnis ausführen.
# Entschlüsseln Sie /var/vmail
find /var/vmail/ -type f -regextype egrep -regex '.*S=.*W=.*' | while read -r file; do
if [[ $(head -c7 "$file") == "CRYPTED" ]]; then
@@ -2408,7 +2425,7 @@ done
Letztes Update:
- 2022-07-23 01:17:49
+ 2022-08-31 14:45:46
@@ -2524,7 +2541,7 @@ done
:INDEXPVT=~/public
kann weggelassen werden, wenn die Flags, die pro Benutzer gesehen werden, nicht gewünscht sind.
Die neue Mailbox im öffentlichen Namensraum wird von den Benutzern automatisch abonniert.
Um allen authentifizierten Benutzern vollen Zugriff auf das neue Postfach (nicht auf den gesamten Namespace) zu gewähren, führen Sie aus:
-docker-compose exec dovecot-mailcow doveadm acl set -A "Public/Develcow" "authenticated" lookup read write write-seen write-deleted insert post delete expunge create
+docker compose 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
).
Erlaube authentifizierten Benutzern den Zugriff auf den gesamten öffentlichen Namespace¶
@@ -2452,7 +2469,7 @@
Letztes Update:
- 2022-07-27 11:30:11
+ 2022-08-31 14:45:46
@@ -2568,7 +2585,7 @@
DOVECOT_MASTER_USER=mymasteruser
DOVECOT_MASTER_PASS=mysecretpass
Führen Sie docker-compose up -d
aus, um Ihre Änderungen zu übernehmen.
Führen Sie docker compose up -d
aus, um Ihre Änderungen zu übernehmen.
Der statische Master-Benutzername wird zu DOVECOT_MASTER_USER@mailcow.local
erweitert.
Um sich als test@example.org
anzumelden, würde dies test@example.org*mymasteruser@mailcow.local
mit dem oben angegebenen Passwort entsprechen.
Eine Anmeldung bei SOGo ist mit diesem Benutzernamen nicht möglich. Für Admins steht eine Click-to-Login-Funktion für SOGo zur Verfügung, wie [hier] beschrieben (https://mailcow.github.io/mailcow-dockerized-docs/debug-admin_login_sogo/) @@ -2388,7 +2405,7 @@ Es wird kein Hauptbenutzer benötigt.
Letztes Update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2504,7 +2521,7 @@ Es wird kein Hauptbenutzer benötigt. - + diff --git a/de/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html b/de/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html index 364118142..2ecb7f599 100644 --- a/de/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html +++ b/de/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html @@ -69,6 +69,23 @@Warning
Neuere Docker-Versionen scheinen sich über bestehende Volumes zu beschweren. Man kann dies vorübergehend beheben, indem man das bestehende Volume entfernt und mailcow mit der Override-Datei startet. Aber es scheint nach einem Neustart problematisch zu sein (muss bestätigt werden).
-Ein einfacher, schmutziger, aber stabiler Workaround ist es, mailcow zu stoppen (docker-compose down
), /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
zu entfernen und einen neuen Link zu Ihrem entfernten Dateisystem zu erstellen, zum Beispiel:
Ein einfacher, schmutziger, aber stabiler Workaround ist es, mailcow zu stoppen (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:
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
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:
version: '2.1'
volumes:
vmail-vol-1:
@@ -2502,10 +2519,10 @@ volumes:
Mountpoint
-Ordners an den neuen Speicherort (z.B. /data/mailcow/vmail
) mit cp -a
, rsync -a
oder einem ähnlichen, nicht strikten Kopierbefehldocker-compose down
aus Ihrem mailcow-Stammverzeichnis (z.B. /opt/mailcow-dockerized
)docker-compose.override.yml
, bearbeiten Sie den Gerätepfad entsprechenddocker compose down
aus Ihrem mailcow-Stammverzeichnis (z.B. /opt/mailcow-dockerized
)docker compose.override.yml
, bearbeiten Sie den Gerätepfad entsprechenddocker volume rm mailcowdockerized_vmail-vol-1
docker-compose up -d
aus Ihrem mailcow-Stammverzeichnis (z.B. /opt/mailcow-dockerized
)docker compose up -d
aus Ihrem mailcow-Stammverzeichnis (z.B. /opt/mailcow-dockerized
)Dieser Dateiname muss keine ".conf"-Erweiterung haben, sondern folgt dem Muster site.*.custom
, wobei *
ein eigener Name ist.
Wenn PHP in eine benutzerdefinierte Site eingebunden werden soll, verwenden Sie bitte den PHP-FPM-Listener auf phpfpm:9002 oder erstellen Sie einen neuen Listener in data/conf/phpfpm/php-fpm.d/pools.conf
.
Starten Sie Nginx neu (und PHP-FPM, falls ein neuer Listener erstellt wurde):
-docker-compose restart nginx-mailcow
-docker-compose restart php-fpm-mailcow
+docker compose restart nginx-mailcow
+docker compose restart php-fpm-mailcow
@@ -2560,7 +2577,7 @@ docker-compose restart php-fpm-mailcow
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2676,7 +2693,7 @@ docker-compose restart php-fpm-mailcow
Speichern Sie und starten Sie Nginx neu: docker-compose restart nginx-mailcow
.
Speichern Sie und starten Sie Nginx neu: docker compose restart nginx-mailcow
.
Öffnen Sie nun mailcow.conf
und suchen Sie ADDITIONAL_SAN
.
Fügen Sie webmail.example.org
zu diesem Array hinzu, verwenden Sie keine Anführungszeichen!
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 docker compose up -d
aus. Siehe "acme-mailcow" und "nginx-mailcow" Logs, wenn etwas fehlschlägt.
webmail.example.org
zu diesem Array hinzu, verwenden Sie
Öffnen Sie data/conf/postfix/extra.cf
und setzen Sie das message_size_limit
entsprechend in Bytes. Siehe main.cf
für den Standardwert.
Starten Sie Postfix neu:
-docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
@@ -2380,7 +2397,7 @@
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2496,7 +2513,7 @@
smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_access reject_authenticated_sender_login_mismatch [...]
Postmap auf check_sasl_access ausführen:
-docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
+docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
Starten Sie den Postfix-Container neu.
@@ -2454,7 +2471,7 @@
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2570,7 +2587,7 @@
Postfix wird sich einmal nach dem Start von postfix-mailcow über doppelte Werte beschweren, dies ist beabsichtigt.
Syslog-ng wurde so konfiguriert, dass es diese Warnungen ausblendet, während Postfix läuft, um die Log-Dateien nicht jedes Mal mit unnötigen Informationen zu spammen, wenn ein Dienst benutzt wird.
Starten Sie postfix-mailcow
neu, um Ihre Änderungen zu übernehmen:
docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
@@ -2382,7 +2399,7 @@
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2498,7 +2515,7 @@
Bearbeiten Sie data/conf/postfix/extra.cf
:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 192.168.2.0/24
Führen Sie docker-compose restart postfix-mailcow
aus, um Ihre neuen Einstellungen zu übernehmen.
Führen Sie docker compose restart postfix-mailcow
aus, um Ihre neuen Einstellungen zu übernehmen.
Das Hinzufügen von IPv6-Hosts erfolgt auf die gleiche Weise wie bei IPv4, allerdings muss das Subnetz in eckige Klammern []
gesetzt und die Netzmaske angehängt werden.
Um das Subnetz 2001:db8::/32 zu den vertrauenswürdigen Netzwerken hinzuzufügen, können Sie die folgende Konfiguration verwenden, abhängig von Ihren IPV4_NETWORK- und IPV6_NETWORK-Bereichen:
Bearbeiten Sie data/conf/postfix/extra.cf
:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 [2001:db8::]/32
Führen Sie docker-compose restart postfix-mailcow
aus, um Ihre neuen Einstellungen zu übernehmen.
Führen Sie docker compose restart postfix-mailcow
aus, um Ihre neuen Einstellungen zu übernehmen.
Info
Weitere Informationen über mynetworks finden Sie in der Postfix-Dokumentation.
@@ -2490,7 +2507,7 @@ Letztes Update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2606,7 +2623,7 @@Redis wird als Key-Value-Speicher für die Einstellungen und Daten von rspamd und (einige von) mailcow verwendet. Wenn Sie mit Redis nicht vertraut sind, lesen Sie bitte die Einführung in Redis und besuchen Sie gegebenenfalls diese wunderbare Anleitung, um zu erfahren, wie man Redis benutzt.
Um sich mit dem redis cli zu verbinden, führen Sie aus:
-docker-compose exec redis-mailcow redis-cli
+docker compose exec redis-mailcow redis-cli
Fehlersuche¶
Hier sind einige nützliche Befehle für den redis-cli zur Fehlersuche:
MONITOR¶
Überwacht alle vom Server empfangenen Anfragen in Echtzeit:
-# docker-compose exec redis-mailcow redis-cli
+# 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"
@@ -2529,7 +2546,7 @@ PONG
Letztes Update:
- 2022-08-06 22:10:21
+ 2022-08-31 14:45:46
@@ -2645,7 +2662,7 @@ PONG
-
+
diff --git a/de/manual-guides/Rspamd/u_e-rspamd/index.html b/de/manual-guides/Rspamd/u_e-rspamd/index.html
index 5b21f3fbf..8445bb3e0 100644
--- a/de/manual-guides/Rspamd/u_e-rspamd/index.html
+++ b/de/manual-guides/Rspamd/u_e-rspamd/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2552,11 +2569,11 @@ Dies wird durch die Verwendung des Sieve-Plugins "sieve_imapsieve" und Parser-Sk
Spam oder Ham aus bestehendem Verzeichnis lernen¶
Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen:
# Ham
-for file in /my/folder/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
+for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
# Spam
-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
-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
for file in /data/old_mail/.Junk/cur/*; do rspamc learn_spam < zcat $file; done
### Gelernte Daten zurücksetzen (Bayes, Neural)
@@ -2570,15 +2587,15 @@ Sie müssen die Schlüssel in Redis löschen, um die gelernten Daten zurückzuse
cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
Bayes-Daten zurücksetzen
-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 BAYES_* | xargs redis-cli del'
+docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
Neurale Daten zurücksetzen
-docker-compose 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'
Fuzzy-Daten zurücksetzen
# Wir müssen zuerst das redis-cli eingeben:
-docker-compose exec redis-mailcow redis-cli
+docker compose exec redis-mailcow redis-cli
# In redis-cli:
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
@@ -2589,8 +2606,8 @@ docker-compose exec redis-mailcow redis-cli
...das Schlüsselmuster nicht gefunden wurde und somit keine Daten zum Löschen vorhanden sind - ist es in Ordnung.
CLI-Werkzeuge¶
``bash
-docker-compose exec rspamd-mailcow rspamc --help
-docker-compose exec rspamd-mailcow rspamadm --help
+docker compose exec rspamd-mailcow rspamc --help
+docker compose exec rspamd-mailcow rspamadm --help
## Greylisting deaktivieren
Nur Nachrichten mit einer höheren Punktzahl werden als Greylisting betrachtet (soft rejected). Es ist schlechte Praxis, Greylisting zu deaktivieren.
@@ -2604,26 +2621,26 @@ Fügen Sie die Zeile hinzu:
```cpp
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 restart rspamd-mailcow
Spamfilter-Schwellenwerte (global)¶
Jeder Benutzer kann seine Spam-Bewertung individuell ändern. Um eine neue serverweite Grenze zu definieren, editieren Sie data/conf/rspamd/local.d/actions.conf
:
reject = 15;
add_header = 8;
greylist = 7;
-Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: docker-compose restart rspamd-mailcow
+Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: docker compose restart rspamd-mailcow
Bestehende Einstellungen der Benutzer werden nicht überschrieben!
Um benutzerdefinierte Schwellenwerte zurückzusetzen, führen Sie aus:
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:
-# 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';"
Benutzerdefinierte Ablehnungsnachrichten¶
Die Standard-Spam-Reject-Meldung kann durch Hinzufügen einer neuen Datei data/conf/rspamd/override.d/worker-proxy.custom.inc
mit dem folgenden Inhalt geändert werden:
reject_message = "Meine eigene Ablehnungsnachricht";
-Speichern Sie die Datei und starten Sie Rspamd neu: docker-compose restart rspamd-mailcow
.
+Speichern Sie die Datei und starten Sie Rspamd neu: 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:
-
@@ -2643,27 +2660,27 @@ docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "del
}
-- 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 restart rspamd-mailcow
.
Verwerfen statt zurückweisen¶
Wenn Sie eine Nachricht stillschweigend verwerfen wollen, erstellen oder bearbeiten Sie die Datei data/conf/rspamd/override.d/worker-proxy.custom.inc
und fügen Sie den folgenden Inhalt hinzu:
discard_on_reject = true;
Starten Sie Rspamd neu:
-docker-compose restart rspamd-mailcow
+docker compose restart rspamd-mailcow
Lösche alle Ratelimit-Schlüssel¶
Wenn Sie das UI nicht verwenden wollen und stattdessen alle Schlüssel in der Redis-Datenbank löschen wollen, können Sie redis-cli für diese Aufgabe verwenden:
-docker-compose exec redis-mailcow sh
+docker compose exec redis-mailcow sh
# Unlink (verfügbar in Redis >=4.) löscht im Hintergrund
redis-cli --scan --pattern RL* | xargs redis-cli unlink
Starten Sie Rspamd neu:
-docker-compose restart rspamd-mailcow
+docker compose restart rspamd-mailcow
Erneutes Senden von Quarantäne-Benachrichtigungen auslösen¶
Sollte nur zur Fehlersuche verwendet werden!
-docker-compose exec dovecot-mailcow 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
@@ -2675,14 +2692,14 @@ quarantine_notify.py
Bearbeiten Sie data/conf/rspamd/local.d/history_redis.conf
:
nrows = 1000; # Ändern Sie diesen Wert
-Starten Sie anschließend Rspamd neu: docker-compose restart rspamd-mailcow
+Starten Sie anschließend Rspamd neu: docker compose restart rspamd-mailcow
Letztes Update:
- 2022-08-06 22:09:53
+ 2022-08-31 14:45:46
@@ -2798,7 +2815,7 @@ quarantine_notify.py
-
+
diff --git a/de/manual-guides/SOGo/u_e-sogo/index.html b/de/manual-guides/SOGo/u_e-sogo/index.html
index 1e5283002..3f74673a3 100644
--- a/de/manual-guides/SOGo/u_e-sogo/index.html
+++ b/de/manual-guides/SOGo/u_e-sogo/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2509,7 +2526,7 @@ Bitte schauen Sie sich die AngularJS Material Version: '2.1'
Dienste:
@@ -2532,8 +2549,8 @@ Dienste:
volumes:
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
-- führen Sie
docker-compose up -d
aus
-- Ausführen von
docker-compose restart memcached-mailcow
+- führen Sie
docker compose up -d
aus
+- Ausführen von
docker compose restart memcached-mailcow
Zurücksetzen auf das SOGo Standardthema¶
@@ -2558,20 +2575,20 @@ Dienste:
und ersetzen Sie es durch:
$mdThemingProvider.theme('default');
-- Entfernen Sie aus
docker-compose.override.yml
Volume Mount in sogo-mailcow
:
+ - Entfernen Sie aus
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
-- führen Sie
docker-compose up -d
aus
-- Starten Sie
docker-compose restart memcached-mailcow
.
+- führen Sie
docker compose up -d
aus
+- Starten Sie
docker compose restart memcached-mailcow
.
Favicon ändern¶
mailcow-Builds nach dem 31. Januar 2021 können SOGo's Favicon ändern, indem sie data/conf/sogo/custom-favicon.ico
für SOGo und data/web/favicon.png
für mailcow UI ersetzen.
Anmerkung: Sie können .png
Favicons für SOGo verwenden, indem Sie sie in custom-favicon.ico
umbenennen.
Für beide, SOGo und mailcow UI Favicons, müssen Sie eine der Standardgrößen verwenden: 16x16, 32x32, 64x64, 128x128 und 256x256.
-Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie docker-compose restart memcached-mailcow sogo-mailcow
ausführen.
+Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie docker compose restart memcached-mailcow sogo-mailcow
ausführen.
Logo ändern¶
Mailcow-Builds nach dem 21. Dezember 2018 können das SOGo-Logo ändern, indem sie die Datei data/conf/sogo/sogo-full.svg
ersetzen oder erstellen (falls sie fehlt).
-Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie docker-compose restart memcached-mailcow sogo-mailcow
ausführen.
+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.
Domains verbinden (untereinander sichtbar machen)¶
Domains sind normalerweise voneinander isoliert.
Sie können das ändern, indem Sie data/conf/sogo/sogo.conf
modifizieren:
@@ -2586,19 +2603,19 @@ Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container
(beispiel.org, beispiel.com, beispiel.net)
);
-SOGo neu starten: docker-compose restart sogo-mailcow
+SOGo neu starten: docker compose restart sogo-mailcow
Deaktivieren Sie die Passwortänderung¶
Bearbeiten Sie data/conf/sogo/sogo.conf
und ändern Sie SOGoPasswordChangeEnabled
auf NO
. Bitte fügen Sie keinen neuen Parameter hinzu.
-Führen Sie docker-compose restart memcached-mailcow sogo-mailcow
aus, um die Änderungen zu aktivieren.
+Führen Sie docker compose restart memcached-mailcow sogo-mailcow
aus, um die Änderungen zu aktivieren.
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 docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}'
aus dem mailcow Verzeichnis aus.
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2714,7 +2731,7 @@ Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container
-
+
diff --git a/de/manual-guides/Unbound/u_e-unbound-fwd/index.html b/de/manual-guides/Unbound/u_e-unbound-fwd/index.html
index af4b5839c..463cd73ec 100644
--- a/de/manual-guides/Unbound/u_e-unbound-fwd/index.html
+++ b/de/manual-guides/Unbound/u_e-unbound-fwd/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2447,21 +2464,21 @@
forward-addr: 8.8.4.4 # VERWENDET KEINE ÖFFENTLICHEN DNS-SERVER - NUR EIN BEISPIEL
Unbound neu starten:
-docker-compose restart unbound-mailcow
+docker compose restart unbound-mailcow
Methode B, Überschreiben der Datei¶
cd /opt/mailcow-dockerized
-cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.override.yml .
+cp helper-scripts/docker compose.override.yml.d/EXTERNAL_DNS/docker compose.override.yml .
-Bearbeiten Sie docker-compose.override.yml
und passen Sie die IP an.
-Führen Sie docker-compose down ; docker-compose up -d
aus.
+Bearbeiten Sie docker compose.override.yml
und passen Sie die IP an.
+Führen Sie docker compose down ; docker compose up -d
aus.
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2577,7 +2594,7 @@ cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.over
-
+
diff --git a/de/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html b/de/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html
index be1db541d..d839b55d6 100644
--- a/de/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html
+++ b/de/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2669,7 +2686,7 @@
Thresholds
-Watchdog verwendet Standardwerte für alle in docker-compose.yml
definierten Thresholde.
+Watchdog verwendet Standardwerte für alle in docker compose.yml
definierten Thresholde.
Die Standardwerte sind für die meisten Konfigurationen geeignet.
Beispiel:
- NGINX_THRESHOLD=${NGINX_THRESHOLD:-5}
@@ -2691,7 +2708,7 @@ Beispiel:
- MAILQ_THRESHOLD=${MAILQ_THRESHOLD:-20}
- 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 docker compose up -d
aus.
Threshold Beschreibungen¶
NGINX_THRESHOLD¶
Benachrichtigt Administratoren, wenn Watchdog keine Verbindung zu Nginx auf Port 8081 herstellen kann und startet den Container automatisch neu, wenn Probleme gefunden wurden und der Threshold erreicht wurde.
@@ -2733,7 +2750,7 @@ Beispiel:
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2849,7 +2866,7 @@ Beispiel:
-
+
diff --git a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-bl_wl/index.html b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-bl_wl/index.html
index e837f843d..b179b08aa 100644
--- a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-bl_wl/index.html
+++ b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-bl_wl/index.html
@@ -64,6 +64,23 @@
Zurücksetz
-
+
diff --git a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-pushover/index.html b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-pushover/index.html
index e431a3c47..4d72301e6 100644
--- a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-pushover/index.html
+++ b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-pushover/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2504,7 +2521,7 @@
-
+
diff --git a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-spamalias/index.html b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-spamalias/index.html
index 72446abb0..79a8f33c8 100644
--- a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-spamalias/index.html
+++ b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-spamalias/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2495,7 +2512,7 @@
-
+
diff --git a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter/index.html b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter/index.html
index 65bd801cc..a91cd6847 100644
--- a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter/index.html
+++ b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2499,7 +2516,7 @@ Für eine domainweite Black- und Whitelist lesen Sie bitte unsere Anleitung zu <
-
+
diff --git a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-sub_addressing/index.html b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-sub_addressing/index.html
index b7759bb24..43591e16f 100644
--- a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-sub_addressing/index.html
+++ b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-sub_addressing/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2562,7 +2579,7 @@ index e047136e..933c4137 100644
-
+
diff --git a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-tags/index.html b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-tags/index.html
index 904f0fbb6..c4f3e6834 100644
--- a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-tags/index.html
+++ b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-tags/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2602,7 +2619,7 @@ Um sie zu sehen, klicken Sie einfach auf das kleine Plus-Symbol auf der linken S
-
+
diff --git a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/index.html b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/index.html
index 8a87eaac4..4dd8de194 100644
--- a/de/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/index.html
+++ b/de/manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2627,7 +2644,7 @@ Geben Sie schließlich Ihr aktuelles Kontopasswort ein und berühren Sie nach Au
Deaktivieren inoffizieller unterstützter Fido Security Keys¶
Mit WebAuthn gibt es die Möglichkeit, nur offizielle Fido Security Keys zu verwenden (von den großen Marken wie: Yubico, Apple, Nitro, Google, Huawei, Microsoft, usw.) zu verwenden.
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 docker compose up -d
neu.
Die mailcow wird nun die Vendor-Zertifikate verwenden, die sich in Ihrem mailcow-Verzeichnis unter data/web/inc/lib/WebAuthn/rootCertificates
befinden.
Beispiel:¶
Wenn Sie die offiziellen Hersteller-Geräte nur auf Apple beschränken wollen, brauchen Sie nur das Apple Hersteller-Zertifikat im data/web/inc/lib/WebAuthn/rootCertificates
.
@@ -2660,7 +2677,7 @@ Diese Herstellerzertifikate werden nur zur Überprüfung der Originalhardware ve
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2776,7 +2793,7 @@ Diese Herstellerzertifikate werden nur zur Überprüfung der Originalhardware ve
-
+
diff --git a/de/manual-guides/u_e-80_to_443/index.html b/de/manual-guides/u_e-80_to_443/index.html
index ff98baf33..ca57ab17b 100644
--- a/de/manual-guides/u_e-80_to_443/index.html
+++ b/de/manual-guides/u_e-80_to_443/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2388,10 +2405,10 @@
}
Falls Sie den Parameter HTTP_BIND geändert haben, erstellen Sie den Container neu:
-docker-compose up -d
+docker compose up -d
Andernfalls starten Sie Nginx neu:
-docker-compose restart nginx-mailcow
+docker compose restart nginx-mailcow
@@ -2399,7 +2416,7 @@
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2515,7 +2532,7 @@
-
+
diff --git a/de/manual-guides/u_e-autodiscover_config/index.html b/de/manual-guides/u_e-autodiscover_config/index.html
index 24e983343..1a2ca6fe7 100644
--- a/de/manual-guides/u_e-autodiscover_config/index.html
+++ b/de/manual-guides/u_e-autodiscover_config/index.html
@@ -64,6 +64,23 @@
ssl_min_protocol = TLSv1
Starten Sie die betroffenen Dienste neu:
-docker-compose restart postfix-mailcow dovecot-mailcow
+docker compose restart postfix-mailcow dovecot-mailcow
Tipp: Sie können TLS 1.2 in Windows 7 aktivieren.
@@ -2388,7 +2405,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2504,7 +2521,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
-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 restart sogo-mailcow
Dies wird NUR empfohlen, wenn Sie kein IPv6-fähiges Netzwerk auf Ihrem Host haben!
Wenn Sie es wirklich brauchen, können Sie die Verwendung von IPv6 in der Compose-Datei deaktivieren. Zusätzlich können Sie auch den Start des Containers "ipv6nat-mailcow" deaktivieren, da er nicht benötigt wird, wenn Sie IPv6 nicht verwenden.
-Anstatt die Datei docker-compose.yml direkt zu bearbeiten, ist es besser, eine Override-Datei zu erstellen +
Anstatt die Datei docker compose.yml direkt zu bearbeiten, ist es besser, eine Override-Datei zu erstellen zu erstellen und Ihre Änderungen am Dienst dort zu implementieren. Leider scheint dies im Moment nur für Dienste zu funktionieren, nicht für Netzwerkeinstellungen.
-Um IPv6 im mailcow-Netzwerk zu deaktivieren, öffnen Sie docker-compose.yml mit Ihrem bevorzugten Texteditor und suchen Sie nach dem Netzwerk-Abschnitt (er befindet sich am Ende der Datei).
-1. Ändern Sie docker-compose.yml
+Um IPv6 im mailcow-Netzwerk zu deaktivieren, öffnen Sie docker compose.yml mit Ihrem bevorzugten Texteditor und suchen Sie nach dem Netzwerk-Abschnitt (er befindet sich am Ende der Datei).
+1. Ändern Sie docker compose.yml
Ändern Sie enable_ipv6: true
in enable_ipv6: false
:
networks:
mailcow-network:
@@ -2383,10 +2400,10 @@ zu erstellen und Ihre Änderungen am Dienst dort zu implementieren. Leider schei
[...]
2. ipv6nat-mailcow deaktivieren
-Um den ipv6nat-mailcow Container ebenfalls zu deaktivieren, gehen Sie in Ihr mailcow Verzeichnis und erstellen Sie eine neue Datei namens "docker-compose.override.yml":
+Um den ipv6nat-mailcow Container ebenfalls zu deaktivieren, gehen Sie in Ihr mailcow Verzeichnis und erstellen Sie eine neue Datei namens "docker compose.override.yml":
HINWEIS: Wenn Sie bereits eine Override-Datei haben, erstellen Sie diese natürlich nicht neu, sondern fügen Sie die untenstehenden Zeilen entsprechend in Ihre bestehende Datei ein!
# cd /opt/mailcow-dockerized
-# touch docker-compose.override.yml
+# touch docker compose.override.yml
Öffnen Sie die Datei in Ihrem bevorzugten Texteditor und tragen Sie folgendes ein:
version: '2.1'
@@ -2398,8 +2415,8 @@ services:
entrypoint: ["echo", "ipv6nat disabled in compose.override.yml"]
Damit diese Änderungen wirksam werden, müssen Sie den Stack vollständig stoppen und dann neu starten, damit Container und Netzwerke neu erstellt werden:
-docker-compose down
-docker-compose up -d
+docker compose down
+docker compose up -d
3. Deaktivieren Sie IPv6 in unbound-mailcow
Bearbeiten Sie data/conf/unbound/unbound.conf
und setzen Sie do-ip6
auf "no":
@@ -2409,7 +2426,7 @@ docker-compose up -d
[...]
unbound neu starten:
-docker-compose restart unbound-mailcow
+docker compose restart unbound-mailcow
4. Deaktivieren Sie IPv6 in postfix-mailcow
Erstellen Sie data/conf/postfix/extra.cf
und setzen Sie smtp_address_preference
auf ipv4
:
@@ -2417,7 +2434,7 @@ docker-compose up -d
inet_protocols = ipv4
Starten Sie Postfix neu:
-docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
5. Wenn im Docker Daemon IPv6 komplett deaktiviert ist:
Folgende NGINX, Dovecot und Php-fpm Konfigurationsdateien anpassen
@@ -2433,7 +2450,7 @@ sed -i 's/\[::\]://g' data/conf/phpfpm/php-fpm.d/pools.conf
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2549,7 +2566,7 @@ sed -i 's/\[::\]://g' data/conf/phpfpm/php-fpm.d/pools.conf
Erstellen oder ändern Sie docker-compose.override.yml
im mailcow-dockerized Basisverzeichnis:
Erstellen oder ändern Sie docker compose.override.yml
im mailcow-dockerized Basisverzeichnis:
version: '2.1'
services:
@@ -2525,7 +2542,7 @@ services:
depends_on:
- rspamd-mailcow
Starte docker-compose up -d
Starte docker compose up -d
Um eine versteckte Kopie der von Rspamd erzeugten Berichte zu erhalten, können Sie eine bcc_addrs
Liste im reporting
Konfigurationsabschnitt von data/conf/rspamd/local.d/dmarc.conf
setzen:
reporting {
@@ -2542,20 +2559,20 @@ services:
Fehlersuche¶
Prüfen Sie, wann der Berichtsplan zuletzt ausgeführt wurde:
-docker-compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log
+docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log
Sehen Sie sich die letzte Berichtsausgabe an:
-docker-compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log
+docker compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log
Manuelles Auslösen eines DMARC-Berichts:
-docker-compose exec rspamd-mailcow rspamadm dmarc_report
+docker compose exec rspamd-mailcow rspamadm dmarc_report
Bestätigen Sie, dass Rspamd Daten in Redis aufgezeichnet hat:
Ändern Sie 20220428
in ein anderes interessantes Datum zum schauen.
-docker-compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428"
+docker compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428"
Nehmen Sie eine der Zeilen aus der Ausgabe, die Sie interessiert, und fordern Sie sie an, z. B.:
-docker-compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49
+docker compose 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¶
Im obigen Beispiel werden die Berichte einmal alle 24 Stunden gesendet.
@@ -2563,13 +2580,13 @@ services:
Um den Zeitplan zu ändern:
-
-
Bearbeiten Sie docker-compose.override.yml
und stellen Sie ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"
auf einen gewünschten Wert, zum Beispiel auf "@midnight"
+Bearbeiten Sie docker compose.override.yml
und stellen Sie ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"
auf einen gewünschten Wert, zum Beispiel auf "@midnight"
-
-
Führen Sie docker-compose up -d
aus.
+Führen Sie docker compose up -d
aus.
-
-
Führen Sie docker-compose restart ofelia-mailcow
aus
+Führen Sie docker compose restart ofelia-mailcow
aus
DMARC-Berichterstattung deaktivieren¶
@@ -2579,10 +2596,10 @@ services:
Setzen Sie enabled
auf false
in data/conf/rspamd/local.d/dmarc.conf
.
-
-
Machen Sie Änderungen in docker-compose.override.yml
an rspamd-mailcow
und ofelia-mailcow
rückgängig
+Machen Sie Änderungen in docker compose.override.yml
an rspamd-mailcow
und ofelia-mailcow
rückgängig
-
-
Führen Sie docker-compose up -d
aus
+Führen Sie docker compose up -d
aus
@@ -2591,7 +2608,7 @@ services:
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2707,7 +2724,7 @@ services:
-
+
diff --git a/de/post_installation/firststeps-ip_bindings/index.html b/de/post_installation/firststeps-ip_bindings/index.html
index 54a05cf3d..e1aa8af2d 100644
--- a/de/post_installation/firststeps-ip_bindings/index.html
+++ b/de/post_installation/firststeps-ip_bindings/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2463,11 +2480,11 @@ DOVEADM_PORT=127.0.0.1:19991
SQL_PORT=127.0.0.1:13306
SOLR_PORT=127.0.0.1:18983
-Um Ihre Änderungen zu übernehmen, führen Sie docker-compose down
gefolgt von docker-compose up -d
aus.
+Um Ihre Änderungen zu übernehmen, führen Sie docker compose down
gefolgt von docker compose up -d
aus.
IPv6-Binding¶
Das Ändern von IPv6-Bindings ist anders als bei IPv4. Auch dies hat einen technischen Hintergrund.
-Eine docker-compose.override.yml
Datei wird verwendet, anstatt die docker-compose.yml
Datei direkt zu bearbeiten. Dies geschieht, um die Aktualisierbarkeit zu erhalten, da die Datei docker-compose.yml
regelmäßig aktualisiert wird und Ihre Änderungen höchstwahrscheinlich überschrieben werden.
-Bearbeiten Sie die Datei "docker-compose.override.yml" und erstellen Sie sie mit dem folgenden Inhalt. Ihr Inhalt wird mit der produktiven Datei "docker-compose.yml" zusammengeführt.
+Eine docker compose.override.yml
Datei wird verwendet, anstatt die docker compose.yml
Datei direkt zu bearbeiten. Dies geschieht, um die Aktualisierbarkeit zu erhalten, da die Datei docker compose.yml
regelmäßig aktualisiert wird und Ihre Änderungen höchstwahrscheinlich überschrieben werden.
+Bearbeiten Sie die Datei "docker compose.override.yml" und erstellen Sie sie mit dem folgenden Inhalt. Ihr Inhalt wird mit der produktiven Datei "docker compose.yml" zusammengeführt.
Es wird eine beispielhafte IPv6 2001:db8:dead:beef::123 in [] angegeben. Das erste Suffix :PORT1
definiert den externen Port, während das zweite Suffix :PORT2
zu dem entsprechenden Port innerhalb des Containers führt und nicht verändert werden darf.
version: '2.1'
services:
@@ -2491,14 +2508,14 @@ services:
- '[2001:db8:dead:beef::123]:80:80'
- '[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 docker compose down
gefolgt von docker compose up -d
aus.
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2614,7 +2631,7 @@ services:
-
+
diff --git a/de/post_installation/firststeps-local_mta/index.html b/de/post_installation/firststeps-local_mta/index.html
index 3d33a53b7..c81e25a4c 100644
--- a/de/post_installation/firststeps-local_mta/index.html
+++ b/de/post_installation/firststeps-local_mta/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2505,7 +2522,7 @@ Das Relaying über diese Schnittstelle ist notwendig (anstatt - zum Beispiel - d
-
+
diff --git a/de/post_installation/firststeps-logging/index.html b/de/post_installation/firststeps-logging/index.html
index a4abfdf86..e1c8e1424 100644
--- a/de/post_installation/firststeps-logging/index.html
+++ b/de/post_installation/firststeps-logging/index.html
@@ -69,6 +69,23 @@
Das Logging in mailcow: dockerized besteht aus mehreren Stufen, ist aber immerhin wesentlich flexibler und einfacher in einen Logging-Daemon zu integrieren als bisher.
In Docker schreibt die containerisierte Anwendung (PID 1) ihre Ausgabe auf stdout. Für echte Ein-Anwendungs-Container funktioniert das sehr gut.
-Führen Sie docker-compose logs --help
aus, um mehr zu erfahren.
docker compose logs --help
aus, um mehr zu erfahren.
Einige Container protokollieren oder streamen an mehrere Ziele.
Kein Container wird persistente Logs in sich behalten. Container sind flüchtige Objekte!
Am Ende wird jede Zeile der Logs den Docker-Daemon erreichen - ungefiltert.
@@ -2526,9 +2543,9 @@ Führen Siedocker-compose logs --help
aus, um mehr zu erfahren.
ohne die Fähigkeit zu verlieren, Logs von der UI zu lesen oder verdächtige Clients mit netfilter-mailcow zu sperren.
Redis-Schlüssel enthalten nur Logs von Anwendungen und filtern Systemmeldungen heraus (man denke an Cron etc.).
Hier ist die gute Nachricht: Da Docker einige großartige Logging-Treiber hat, können Sie mailcow: dockerized mit Leichtigkeit in Ihre bestehende Logging-Umgebung integrieren.
-Erstellen Sie eine docker-compose.override.yml
und fügen Sie zum Beispiel diesen Block hinzu, um das "gelf" Logging-Plugin für postfix-mailcow
zu verwenden:
Erstellen Sie eine docker compose.override.yml
und fügen Sie zum Beispiel diesen Block hinzu, um das "gelf" Logging-Plugin für postfix-mailcow
zu verwenden:
version: '2.1'
services:
postfix-mailcow: # oder ein anderer
@@ -2595,7 +2612,7 @@ erstellen Sie die Datei /etc/rsyslog.d/docker.conf
:
...
}
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 docker compose down && docker compose up -d
aus, um die Container mit dem neuen Protokollierungstreiber neu zu erstellen.
Da diese Logs sehr groß werden können, ist es eine gute Idee logrotate zu nutzen, um Logs nach einer gewissen Zeit zu komprimieren und zu löschen.
@@ -2620,7 +2637,7 @@ komprimieren und zu löschen. Letztes Update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2736,7 +2753,7 @@ komprimieren und zu löschen. - + diff --git a/de/post_installation/firststeps-rp/index.html b/de/post_installation/firststeps-rp/index.html index 35bff61df..9e1057f16 100644 --- a/de/post_installation/firststeps-rp/index.html +++ b/de/post_installation/firststeps-rp/index.html @@ -69,6 +69,23 @@Dadurch werden auch die Bindungen innerhalb des Nginx-Containers geändert! Dies ist wichtig, wenn Sie sich entscheiden, einen Proxy innerhalb von Docker zu verwenden.
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 docker compose up -d
ausführen.
Wichtige Informationen, bitte lesen Sie diese sorgfältig durch!
Info
@@ -2648,8 +2665,8 @@ backend mailcowWichtig: Diese Konfiguration deckt nur das "Reverseproxing" des Webpanels (nginx-mailcow) unter Verwendung von Traefik v2 ab. Wenn Sie auch die Mail-Dienste wie dovecot, postfix... reproxen wollen, müssen Sie die folgende Konfiguration an jeden Container anpassen und einen EntryPoint in Ihrer traefik.toml
oder traefik.yml
(je nachdem, welche Konfiguration Sie verwenden) für jeden Port erstellen.
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, falls Sie eine solche Datei benötigen oder einen Hinweis, wie Sie Ihre Konfiguration anpassen können.
Zuallererst werden wir den acme-mailcow-Container deaktivieren, da wir die von traefik bereitgestellten Zertifikate verwenden werden.
-Dazu müssen wir SKIP_LETS_ENCRYPT=y
in unserer mailcow.conf
setzen und docker-compose up -d
ausführen, um die Änderungen zu übernehmen.
Dann erstellen wir eine docker-compose.override.yml
Datei, um die Hauptdatei docker-compose.yml
zu überschreiben, die sich im Mailcow-Stammverzeichnis befindet.
SKIP_LETS_ENCRYPT=y
in unserer mailcow.conf
setzen und docker compose up -d
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.
version: '2.1'
services:
@@ -2681,7 +2698,7 @@ Dazu müssen wir SKIP_LETS_ENCRYPT=y
in unserer mailcow.conf<
network_mode: none
volumes:
# mounten Sie den Ordner, der Traefiks `acme.json' Datei enthält
- # in diesem Fall wird Traefik von seinem eigenen docker-compose in ../traefik gestartet
+ # in diesem Fall wird Traefik von seinem eigenen docker compose in ../traefik gestartet
- ../traefik/data:/traefik:ro
# SSL-Ordner von mailcow einhängen
- ./data/assets/ssl/:/output:rw
@@ -2694,10 +2711,10 @@ Dazu müssen wir SKIP_LETS_ENCRYPT=y
in unserer mailcow.conf<
web:
external: true
Starten Sie die neuen Container mit docker-compose up -d
.
Starten Sie die neuen Container mit docker compose up -d
.
Da Traefik 2 ein acme v2 Format verwendet, um ALLE Lizenzen von allen Domains zu speichern, müssen wir einen Weg finden, die Zertifikate auszulagern. Zum Glück haben wir [diesen kleinen Container] (https://hub.docker.com/r/humenius/traefik-certs-dumper), der die Datei acme.json
über ein Volume und eine Variable DOMAIN=example. org
, und damit wird der Container die cert.pem
und key.pem
Dateien ausgeben, dafür lassen wir einfach den traefik-certs-dumper
Container laufen, binden das /traefik
Volume an den Ordner, in dem unsere acme.json
gespeichert ist, binden das /output
Volume an unseren mailcow data/assets/ssl/
Ordner, und setzen die DOMAIN=example.org
Variable auf die Domain, von der wir die Zertifikate ausgeben wollen.
Dieser Container überwacht die Datei acme.json
auf Änderungen und generiert die Dateien cert.pem
und key.pem
direkt in data/assets/ssl/
, wobei der Pfad mit dem /output
-Pfad des Containers verbunden ist.
Sie können es über die Kommandozeile ausführen oder das [hier] gezeigte docker-compose verwenden (https://hub.docker.com/r/humenius/traefik-certs-dumper).
+Sie können es über die Kommandozeile ausführen oder das [hier] gezeigte docker compose verwenden (https://hub.docker.com/r/humenius/traefik-certs-dumper).
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.
Und das sollte es gewesen sein 😊, Sie können überprüfen, ob der Traefik-Router einwandfrei funktioniert, indem Sie das Dashboard von Traefik / traefik logs / über https auf die eingestellte Domain zugreifen, oder / und HTTPS, SMTP und IMAP mit den Befehlen auf der zuvor verlinkten Seite überprüfen.
Wenn Sie vorhaben, einen Servernamen zu verwenden, der nicht MAILCOW_HOSTNAME
in Ihrem Reverse-Proxy ist, stellen Sie sicher, dass Sie diesen Namen zuerst in mailcow.conf über ADDITIONAL_SERVER_NAMES
einpflegen. Die Namen müssen durch Kommas getrennt werden und dürfen keine Leerzeichen enthalten. Wenn Sie diesen Schritt überspringen, kann es sein, dass mailcow auf Ihren Reverse-Proxy mit einer falschen Seite antwortet.
ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
Führen Sie docker-compose up -d
zum Anwenden aus.
Führen Sie docker compose up -d
zum Anwenden aus.
Führen Sie docker-compose up -d
aus.
Führen Sie docker compose up -d
aus.
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 von docker compose logs --tail=200 netfilter-mailcow
, um sicherzustellen, dass die SNAT-Einstellungen angewendet wurden.
Für jede hinzugefügte Domain wird versucht, autodiscover.ADDED_MAIL_DOMAIN
und autoconfig.ADDED_MAIL_DOMAIN
in die IPv6-Adresse oder - falls IPv6 in der Domain nicht konfiguriert ist - in die IPv4-Adresse aufzulösen. Wenn dies gelingt, wird ein Name als SAN zur Zertifikatsanforderung hinzugefügt.
Nur Namen, die validiert werden können, werden als SAN hinzugefügt.
Für jede Domain, die Sie entfernen, wird das Zertifikat verschoben und ein neues Zertifikat angefordert. Es ist nicht möglich, Domains in einem Zertifikat zu behalten, wenn wir nicht in der Lage sind, die Challenge für diese zu validieren.
-Wenn Sie den ACME-Client neu starten wollen, verwenden Sie docker-compose restart acme-mailcow
und überwachen Sie die Protokolle mit docker-compose logs --tail=200 -f acme-mailcow
.
Wenn Sie den ACME-Client neu starten wollen, verwenden Sie docker compose restart acme-mailcow
und überwachen Sie die Protokolle mit docker compose logs --tail=200 -f acme-mailcow
.
Bearbeiten Sie "mailcow.conf" und fügen Sie einen Parameter ADDITIONAL_SAN
wie folgt hinzu:
Verwenden Sie keine Anführungszeichen ("
) und keine Leerzeichen zwischen den Namen!
Jeder Name wird anhand seiner IPv6-Adresse oder - wenn IPv6 in Ihrer Domäne nicht konfiguriert ist - anhand seiner IPv4-Adresse überprüft.
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 docker compose up -d
aus, um betroffene Container automatisch neu zu erstellen.
Info
Die Verwendung anderer Namen als MAILCOW_HOSTNAME
für den Zugriff auf das mailcow UI kann weitere Konfiguration erfordern.
Wenn Sie planen, einen anderen Servernamen als MAILCOW_HOSTNAME
für den Zugriff auf die mailcow UI zu verwenden (z.B. durch Hinzufügen von mail.*
zu ADDITIONAL_SAN
), stellen Sie sicher, dass Sie diesen Namen in mailcow.conf über ADDITIONAL_SERVER_NAMES
eintragen. Die Namen müssen durch Kommas getrennt sein und dürfen keine Leerzeichen enthalten. Wenn Sie diesen Schritt auslassen, kann mailcow mit einer falschen Seite antworten.
ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
Führen Sie docker-compose up -d
aus, um es anzuwenden.
Führen Sie docker compose up -d
aus, um es anzuwenden.
Um eine Erneuerung zu erzwingen, müssen Sie eine Datei namens force_renew
erstellen und den acme-mailcow
Container neu starten:
cd /opt/mailcow-dockerized
touch data/assets/ssl/force_renew
-docker-compose restart acme-mailcow
+docker compose restart acme-mailcow
# Prüfen Sie nun die Logs auf eine Erneuerung
-docker-compose logs --tail=200 -f acme-mailcow
+docker compose logs --tail=200 -f acme-mailcow
Die Datei wird automatisch gelöscht.
Sie können die IP-Überprüfung überspringen, indem Sie SKIP_IP_CHECK=y
in mailcow.conf setzen (keine Anführungszeichen). Seien Sie gewarnt, dass eine Fehlkonfiguration dazu führt, dass Sie von Let's Encrypt eingeschränkt werden! Dies ist vor allem für Multi-IP-Setups nützlich, bei denen der IP-Check die falsche Quell-IP-Adresse zurückgeben würde. Aufgrund der Verwendung von dynamischen IPs für acme-mailcow ist Source-NAT bei Neustarts nicht konsistent.
Wenn Sie Probleme mit der "HTTP-Validierung" haben, aber Ihre IP-Adressbestätigung erfolgreich ist, verwenden Sie höchstwahrscheinlich firewalld, ufw oder eine andere Firewall, die Verbindungen von br-mailcow
zu Ihrem externen Interface verbietet. Sowohl firewalld als auch ufw lassen dies standardmäßig nicht zu. Es reicht oft nicht aus, diese Firewall-Dienste einfach zu stoppen. Sie müssen mailcow stoppen (docker-compose down
), den Firewall-Dienst stoppen, die Ketten flushen und Docker neu starten.
Wenn Sie Probleme mit der "HTTP-Validierung" haben, aber Ihre IP-Adressbestätigung erfolgreich ist, verwenden Sie höchstwahrscheinlich firewalld, ufw oder eine andere Firewall, die Verbindungen von br-mailcow
zu Ihrem externen Interface verbietet. Sowohl firewalld als auch ufw lassen dies standardmäßig nicht zu. Es reicht oft nicht aus, diese Firewall-Dienste einfach zu stoppen. Sie müssen mailcow stoppen (docker compose down
), den Firewall-Dienst stoppen, die Ketten flushen und Docker neu starten.
Sie können diese Validierungsmethode auch überspringen, indem Sie SKIP_HTTP_VERIFICATION=y
in "mailcow.conf" setzen. Seien Sie gewarnt, dass dies nicht zu empfehlen ist. In den meisten Fällen wird die HTTP-Überprüfung übersprungen, um unbekannte NAT-Reflection-Probleme zu umgehen, die durch das Ignorieren dieser spezifischen Netzwerk-Fehlkonfiguration nicht gelöst werden. Wenn Sie Probleme haben, TLSA-Einträge in der DNS-Übersicht innerhalb von mailcow zu generieren, haben Sie höchstwahrscheinlich Probleme mit NAT-Reflexion, die Sie beheben sollten.
Wenn du einen SKIP_* Parameter geändert hast, führe docker-compose up -d
aus, um deine Änderungen zu übernehmen.
Wenn du einen SKIP_* Parameter geändert hast, führe docker compose up -d
aus, um deine Änderungen zu übernehmen.
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, 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, 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, indem Sie docker compose up -d
ausführen.
Let's Encrypt hat derzeit ein Limit von 100 Domainnamen pro Zertifikat.
Standardmäßig erstellt "acme-mailcow" ein einzelnes SAN-Zertifikat für alle validierten Domains @@ -2653,7 +2670,7 @@ Dies bietet beste Kompatibilität, bedeutet aber, dass das Let's Encrypt-Limit
ADDITIONAL_SAN=test.example.com
wird als SAN zum Hauptzertifikat hinzugefügt. Ein separates Zertifikat/Schlüsselpaar wird für dieses Format nicht erzeugt.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" durch Ausführen von docker compose up -d
.
Warning
Nicht alle Clients unterstützen SNI, siehe Dovecot Dokumentation oder Wikipedia. @@ -2683,15 +2700,15 @@ docker restart $(docker ps -qaf name=dovecot-mailcow)
Siehe Post-Hook-Skript für Nicht-Mailcow-ACME-Clients für ein vollständiges Beispielskript.
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 docker compose up -d
aus, um Ihre Änderungen zu aktivieren.
Editieren Sie mailcow.conf
und fügen Sie die entsprechende Verzeichnis-URL in die neue Variable DIRECTORY_URL
ein:
DIRECTORY_URL=https://acme-custom-v9000.api.letsencrypt.org/directory
Sie können LE_STAGING
nicht mit DIRECTORY_URL
verwenden. Wenn beide gesetzt sind, wird nur LE_STAGING
verwendet.
Führen Sie docker-compose up -d
aus, um Ihre Änderungen zu aktivieren.
Führen Sie docker compose up -d
aus, um Ihre Änderungen zu aktivieren.
Führen Sie docker-compose logs acme-mailcow
aus, um herauszufinden, warum eine Validierung fehlschlägt.
Führen Sie docker compose logs acme-mailcow
aus, um herauszufinden, warum eine Validierung fehlschlägt.
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 das von Postfix, Dovecot und Nginx verwendete Zertifikat zu überprüfen, verwenden wir openssl
:
# Verbindung über SMTP (587)
@@ -2711,7 +2728,7 @@ bash helper-scripts/expiry-dates.sh
Letztes Update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -2827,7 +2844,7 @@ bash helper-scripts/expiry-dates.sh
Starten Sie die Schnittstelle neu, um die Einstellungen zu übernehmen. Sie können außerdem die cloud-init Netzwerkänderungen deaktivieren.
Besonders relevant für OpenStack-Benutzer: Überprüfen Sie Ihre MTU und setzen Sie sie entsprechend in docker-compose.yml. Siehe 4.1 in unseren Installationsanleitungen.
+Besonders relevant für OpenStack-Benutzer: Überprüfen Sie Ihre MTU und setzen Sie sie entsprechend in docker compose.yml. Siehe 4.1 in unseren Installationsanleitungen.
docker-compose.override.yml
¶Im mailcow-dockerized Stammverzeichnis erstellen oder bearbeiten Sie docker-compose.override.yml
und fügen Sie die folgende
+
docker compose.override.yml
¶Im mailcow-dockerized Stammverzeichnis erstellen oder bearbeiten Sie docker compose.override.yml
und fügen Sie die folgende
Konfiguration ein:
version: '2.1'
@@ -2770,7 +2787,7 @@ nach der vollen Stunde auszuführen und am Ende einige nette Statistiken zu prot
oder OpenSSH wird sich weigern, den SSH-Schlüssel zu benutzen.
Den Container hochfahren¶
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:
-docker-compose up -d
+docker compose up -d
Wiederherstellung von einem Backup¶
Das Wiederherstellen eines Backups setzt voraus, dass Sie mit einer neuen Installation von mailcow beginnen, und dass Sie derzeit keine
@@ -2788,10 +2805,10 @@ während der Extraktion des Archivs vorübergehend deaktivieren, da das Mailcow-
ausschließlich. SELinux wird (berechtigterweise) jeden anderen Container, wie z.B. den borgmatic Container, daran hindern, auf
dieses Volume zu schreiben.
-Bevor Sie eine Wiederherstellung durchführen, müssen Sie das vmail-Volume in docker-compose.override.yml
beschreibbar machen, indem Sie das
+
Bevor Sie eine Wiederherstellung durchführen, müssen Sie das vmail-Volume in docker compose.override.yml
beschreibbar machen, indem Sie das
das ro
-Flag aus dem Volume entfernen.
Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup wiederherzustellen:
-docker-compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest
+docker compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest
Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe
Auflistung aller verfügbaren Archive)
@@ -2801,7 +2818,7 @@ Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup
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:
-docker-compose exec borgmatic-mailcow borgmatic restore --archive latest
+docker compose exec borgmatic-mailcow borgmatic restore --archive latest
Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe
Auflistung aller verfügbaren Archive)
@@ -2809,21 +2826,21 @@ Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup
Nach der Wiederherstellung müssen Sie mailcow neu starten. Wenn Sie den SELinux-Erzwingungsmodus deaktiviert haben, wäre jetzt ein guter Zeitpunkt, um
ihn wieder zu aktivieren.
Um mailcow neu zu starten, verwenden Sie den folgenden Befehl:
-docker-compose down && docker-compose up -d
+docker compose down && docker compose up -d
Wenn Sie SELinux verwenden, werden dadurch auch alle Dateien in Ihrem vmail-Volume neu benannt. Seien Sie geduldig, denn dies kann
eine Weile dauern kann, wenn Sie viele Dateien haben.
Nützliche Befehle¶
Manueller Archivierungslauf (mit Debugging-Ausgabe)¶
-docker-compose exec borgmatic-mailcow borgmatic -v 2
+docker compose exec borgmatic-mailcow borgmatic -v 2
Auflistung aller verfügbaren Archive¶
-docker-compose exec borgmatic-mailcow borgmatic list
+docker compose exec borgmatic-mailcow borgmatic list
Sperre aufheben¶
Wenn borg während eines Archivierungslaufs unterbrochen wird, hinterlässt es eine veraltete Sperre, die gelöscht werden muss, bevor
neue Operationen durchgeführt werden können:
-docker-compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow
+docker compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow
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.
@@ -2833,7 +2850,7 @@ Schlüsseldateien werden erzeugt, wenn Sie das Repository initialisieren. Die
Beachten Sie, dass Sie in beiden Fällen auch die Passphrase haben müssen, um die Archive zu entschlüsseln.
Um die keyfile
zu holen, führen Sie aus:
-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
Wobei user@rsync.net:mailcow
die URI zu Ihrem Repository ist.
@@ -2842,7 +2859,7 @@ Repository, so dass eine manuelle Sicherung nicht so wichtig ist.
Letztes Update:
- 2022-07-22 15:01:40
+ 2022-08-31 14:45:46
@@ -2958,7 +2975,7 @@ Repository, so dass eine manuelle Sicherung nicht so wichtig ist.
-
+
diff --git a/de/third_party/checkmk/u_e-checkmk/index.html b/de/third_party/checkmk/u_e-checkmk/index.html
index 51c33ca46..3bbf6d3bd 100644
--- a/de/third_party/checkmk/u_e-checkmk/index.html
+++ b/de/third_party/checkmk/u_e-checkmk/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2627,7 +2644,7 @@ exit
-
+
diff --git a/de/third_party/exchange_onprem/third_party-exchange_onprem/index.html b/de/third_party/exchange_onprem/third_party-exchange_onprem/index.html
index f1e7dc806..ec22f1476 100644
--- a/de/third_party/exchange_onprem/third_party-exchange_onprem/index.html
+++ b/de/third_party/exchange_onprem/third_party-exchange_onprem/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2648,7 +2665,7 @@
-
+
diff --git a/de/third_party/gitea/third_party-gitea/index.html b/de/third_party/gitea/third_party-gitea/index.html
index b4190d84b..b64de695b 100644
--- a/de/third_party/gitea/third_party-gitea/index.html
+++ b/de/third_party/gitea/third_party-gitea/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2369,7 +2386,7 @@
Gitea
Mit der Fähigkeit von Gitea, sich über SMTP zu authentifizieren, ist es trivial, es mit mailcow zu integrieren. Es sind nur wenige Änderungen erforderlich:
-1. Öffnen Sie docker-compose.override.yml
und fügen Sie Gitea hinzu:
+1. Öffnen Sie docker compose.override.yml
und fügen Sie Gitea hinzu:
version: '2.1'
services:
@@ -2392,8 +2409,8 @@ services:
3. Öffne mailcow.conf
und definiere den Port Bind, den Gitea für SSH verwenden soll. Beispiel:
GITEA_SSH_PORT=127.0.0.1:4000
-5. Führen Sie docker-compose up -d
aus, um den Gitea-Container hochzufahren und führen Sie anschließend docker-compose restart nginx-mailcow
aus.
-6. Wenn Sie mailcow zu https gezwungen haben, führen Sie Schritt 9 aus und starten Sie gitea mit docker-compose restart gitea-mailcow
neu. Fahren Sie mit Schritt 7 fort (Denken Sie daran, https anstelle von http zu verwenden, https://mx.example.org/gitea/
+5. Führen Sie docker compose up -d
aus, um den Gitea-Container hochzufahren und führen Sie anschließend docker compose restart nginx-mailcow
aus.
+6. Wenn Sie mailcow zu https gezwungen haben, führen Sie Schritt 9 aus und starten Sie gitea mit docker compose restart gitea-mailcow
neu. Fahren Sie mit Schritt 7 fort (Denken Sie daran, https anstelle von http zu verwenden, https://mx.example.org/gitea/
7. Öffnen Sie http://${MAILCOW_HOSTNAME}/gitea/
, zum Beispiel http://mx.example.org/gitea/
. Für die Datenbankdetails stellen Sie mysql
als Datenbankhost ein. Verwenden Sie den in mailcow.conf gefundenen Wert von DBNAME als Datenbankname, DBUSER als Datenbankbenutzer und DBPASS als Datenbankpasswort.
8. Sobald die Installation abgeschlossen ist, loggen Sie sich als Administrator ein und setzen Sie "Einstellungen" -> "Autorisierung" -> "SMTP aktivieren". SMTP-Host sollte postfix
mit Port 587
sein, setzen Sie Skip TLS Verify
, da wir ein nicht gelistetes SAN verwenden ("postfix" ist höchstwahrscheinlich nicht Teil Ihres Zertifikats).
9. Erstellen Sie data/gitea/gitea/conf/app.ini
und setzen Sie die folgenden Werte. Sie können gitea cheat sheet, leider bisher nur in Englisch verfügbar für deren Bedeutung und andere mögliche Werte konsultieren.
@@ -2405,14 +2422,14 @@ SSH_PORT = 4000
# Für MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (und Standard-Ports für HTTPS), setzen:
ROOT_URL = https://mx.example.org/gitea/
-10. Starten Sie gitea neu mit docker-compose restart gitea-mailcow
. Ihre Nutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten anzumelden.
+10. Starten Sie gitea neu mit docker compose restart gitea-mailcow
. Ihre Nutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten anzumelden.
Letztes Update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -2528,7 +2545,7 @@ ROOT_URL = https://mx.example.org/gitea/
-
+
diff --git a/de/third_party/gogs/third_party-gogs/index.html b/de/third_party/gogs/third_party-gogs/index.html
index 0dae9293b..c1889fada 100644
--- a/de/third_party/gogs/third_party-gogs/index.html
+++ b/de/third_party/gogs/third_party-gogs/index.html
@@ -64,6 +64,23 @@
Mit Gogs' Fähigkeit, sich über SMTP zu authentifizieren, ist es einfach, es mit mailcow zu verbinden. Es sind nur wenige Änderungen erforderlich:
-1. Öffne docker-compose.override.yml
und füge Gogs hinzu:
1. Öffne docker compose.override.yml
und füge Gogs hinzu:
version: '2.1'
services:
@@ -2392,7 +2409,7 @@ services:
3. Öffne mailcow.conf
und definiere die Bindung, die Gogs für SSH verwenden soll. Beispiel:
GOGS_SSH_PORT=127.0.0.1:4000
-5. Führen Sie docker-compose up -d
aus, um den Gogs-Container hochzufahren und führen Sie anschließend docker-compose restart nginx-mailcow
aus.
+5. Führen Sie docker compose up -d
aus, um den Gogs-Container hochzufahren und führen Sie anschließend docker compose restart nginx-mailcow
aus.
6. Öffnen Sie http://${MAILCOW_HOSTNAME}/gogs/
, zum Beispiel http://mx.example.org/gogs/
. Für Datenbank-Details setzen Sie mysql
als Datenbank-Host. Verwenden Sie den in mailcow.conf gefundenen Wert von DBNAME als Datenbankname, DBUSER als Datenbankbenutzer und DBPASS als Datenbankpasswort.
7. Sobald die Installation abgeschlossen ist, loggen Sie sich als Administrator ein und setzen Sie "Einstellungen" -> "Autorisierung" -> "SMTP aktivieren". SMTP-Host sollte postfix
mit Port 587
sein, setzen Sie Skip TLS Verify
, da wir ein nicht gelistetes SAN verwenden ("postfix" ist höchstwahrscheinlich nicht Teil Ihres Zertifikats).
8. Erstellen Sie data/gogs/gogs/conf/app.ini
und setzen Sie die folgenden Werte. Sie können Gogs cheat sheet für ihre Bedeutung und andere mögliche Werte konsultieren.
@@ -2404,14 +2421,14 @@ SSH_PORT = 4000
# Für MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (und Standard-Ports für HTTPS), setzen:
ROOT_URL = https://mx.example.org/gogs/
9. Starten Sie Gogs neu mit docker-compose restart gogs-mailcow
. Ihre Benutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten einzuloggen.
9. Starten Sie Gogs neu mit docker compose restart gogs-mailcow
. Ihre Benutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten einzuloggen.
Folgen Sie der mailcow installation. Schritt 5 auslassen und nicht mit docker-compose
starten!
Folgen Sie der mailcow installation. Schritt 5 auslassen und nicht mit docker compose
starten!
Dies ist auch Schritt 4 in der offiziellen mailcow-Installation (nano mailcow.conf
). Passen Sie also Ihre Bedürfnisse an und ändern Sie die folgenden Variablen:
HTTP_PORT=18080 # verwenden Sie nicht 8080, da mailman es braucht
@@ -2851,7 +2868,7 @@ SNAT_TO_SOURCE=1.2.3.4 # ändern Sie dies in Ihre IPv4
SNAT6_TO_SOURCE=dead:beef # Ändern Sie dies in Ihre globale IPv6
Erstelle die Datei /opt/mailcow-dockerized/docker-compose.override.yml
(z.B. mit nano
) und füge die folgenden Zeilen hinzu:
Erstelle die Datei /opt/mailcow-dockerized/docker compose.override.yml
(z.B. mit nano
) und füge die folgenden Zeilen hinzu:
version: '2.1'
services:
@@ -2921,7 +2938,7 @@ cd docker-mailman
Erstellen Sie einen langen Schlüssel für Hyperkitty, z.B. mit dem Linux-Befehl cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo
. Speichern Sie diesen Schlüssel vorerst als HYPERKITTY_KEY.
Erstellen Sie ein langes Passwort für die Datenbank, z. B. mit dem Linux-Befehl cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo
. Speichern Sie dieses Passwort zunächst als DBPASS.
Erstellen Sie einen langen Schlüssel für Django, z. B. mit dem Linux-Befehl cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo
. Speichern Sie diesen Schlüssel für einen Moment als DJANGO_KEY.
-Erstellen Sie die Datei /opt/docker-mailman/docker-compose.override.yaml
und ersetzen Sie HYPERKITTY_KEY
, DBPASS
und DJANGO_KEY
durch die generierten Werte:
+Erstellen Sie die Datei /opt/docker-mailman/docker compose.override.yaml
und ersetzen Sie HYPERKITTY_KEY
, DBPASS
und DJANGO_KEY
durch die generierten Werte:
version: '2'
services:
@@ -2980,11 +2997,11 @@ a2ensite mailman.conf
systemctl restart apache2
cd /opt/docker-mailman
-docker-compose pull
-docker-compose up -d
+docker compose pull
+docker compose up -d
cd /opt/mailcow-dockerized/
-docker-compose pull
+docker compose pull
./renew-ssl.sh
Warten Sie ein paar Minuten! Die Container müssen ihre Datenbanken und Konfigurationsdateien erstellen. Dies kann bis zu 1 Minute und mehr dauern.
@@ -2992,7 +3009,7 @@ docker-compose pull
Neue Listen werden von Postfix nicht sofort erkannt¶
Wenn man eine neue Liste anlegt und versucht, sofort eine E-Mail zu versenden, antwortet postfix mit Benutzer existiert nicht
, weil postfix die Liste noch nicht an Mailman übergeben hat. Die Konfiguration unter /opt/mailman/core/var/data/postfix_lmtp
wird nicht sofort aktualisiert. Wenn Sie die Liste sofort benötigen, starten Sie postifx manuell neu:
cd /opt/mailcow-dockerized
-docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
Update¶
mailcow hat sein eigenes Update-Skript in /opt/mailcow-dockerized/update.sh
, siehe die Dokumentation.
@@ -3014,7 +3031,7 @@ docker-compose restart postfix-mailcow
Letztes Update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -3130,7 +3147,7 @@ docker-compose restart postfix-mailcow
Nextcloud kann mit dem helper script, das in mailcow enthalten ist, eingerichtet (Parameter -i
) und entfernt (Parameter -p
) werden. Um Nextcloud zu installieren, navigieren Sie einfach zu Ihrem mailcow-dockerized Root-Ordner und führen Sie das Helper-Skript wie folgt aus:
./helper-scripts/nextcloud.sh -i
Für den Fall, dass Sie das Passwort (z.B. für admin) vergessen haben und kein neues anfordern können [über den Passwort-Reset-Link auf dem Login-Bildschirm] (https://docs.nextcloud.com/server/20/admin_manual/configuration_user/reset_admin_password.html?highlight=reset), können Sie durch den Aufruf des Helper-Skripts mit -r
als Parameter ein neues Passwort setzen. Verwenden Sie diese Option nur, wenn Ihre Nextcloud nicht so konfiguriert ist, dass Sie mailcow zur Authentifizierung verwendet, wie im nächsten Abschnitt beschrieben.
Damit mailcow ein Zertifikat für die Nextcloud Domain generieren kann, muss die Domain unter welcher die Nextcloud später erreichbar sein soll als ADDITIONAL_SAN in die mailcow.conf hinzufügt werden und docker-compose up -d
zur Übernahme ausgeführt werden. Für weitere Informationen siehe: Erweitertes SSL.
Damit mailcow ein Zertifikat für die Nextcloud Domain generieren kann, muss die Domain unter welcher die Nextcloud später erreichbar sein soll als ADDITIONAL_SAN in die mailcow.conf hinzufügt werden und docker compose up -d
zur Übernahme ausgeführt werden. Für weitere Informationen siehe: Erweitertes SSL.
Zur Verwendung der empfohlenen Einstellung (Cron) zur Verarbeitung der Hintergrund-Aufgaben müssen in der docker-compose.override.yml
folgende Zeilen
+
Zur Verwendung der empfohlenen Einstellung (Cron) zur Verarbeitung der Hintergrund-Aufgaben müssen in der docker compose.override.yml
folgende Zeilen
hinzugefügt werden:
version: '2.1'
services:
@@ -2489,9 +2506,9 @@ services:
ofelia.job-exec.nextcloud-cron.schedule: "@every 5m"
ofelia.job-exec.nextcloud-cron.command: "su www-data -s /bin/bash -c \"/usr/local/bin/php -f /web/nextcloud/cron.php\""
Nachdem diese Zeilen hinzugefügt wurden muss docker-compose up -d
ausgeführt werden, um das Docker Image mit den entsprechenden Labels zu versehen. Danach muss
- zudem der docker scheduler neu gestartet werden, um den neuen Job zu registrieren. Dazu wird docker-compose restart ofelia-mailcow
ausgeführt. Zur
- Überprüfung, ob die ofelia
Konfiguration korrekt ist geladen wurde, kann mittels docker-compose logs ofelia-mailcow
nach einer Zeile mit dem Inhalt
+
Nachdem diese Zeilen hinzugefügt wurden muss docker compose up -d
ausgeführt werden, um das Docker Image mit den entsprechenden Labels zu versehen. Danach muss
+ zudem der docker scheduler neu gestartet werden, um den neuen Job zu registrieren. Dazu wird docker compose restart ofelia-mailcow
ausgeführt. Zur
+ Überprüfung, ob die ofelia
Konfiguration korrekt ist geladen wurde, kann mittels docker compose logs ofelia-mailcow
nach einer Zeile mit dem Inhalt
New job registered "nextcloud-cron" - ...
gesucht werden.
Hierdurch wird alle 5 Minuten die Hintergrundverarbeitung gestartet. Da die Ausführung selbst keine Ausgabe liefert, kann die korrekte Funktionsweise in den
Grundeinstellungen von Nextcloud überprüft werden. Hier wird automatisch mit der ersten Ausführung die Hintergrund-Aufgaben Verarbeitung auf (X) Cron
gesetzt
@@ -2540,13 +2557,13 @@ services:
Wenn Sie bisher Nextcloud mit mailcow-Authentifizierung über user_external/IMAP verwendet haben, müssen Sie einige zusätzliche Schritte durchführen, um Ihre bestehenden Benutzerkonten mit OAuth2 zu verknüpfen.
1. Klicken Sie auf die Schaltfläche in der oberen rechten Ecke und wählen Sie Apps. Scrollen Sie nach unten zur App Externe Benutzerauthentifizierung und klicken Sie daneben auf Entfernen.
-2. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
ausführen):
+2. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
ausführen):
INSERT INTO nc_users (uid, uid_lower) SELECT DISTINCT uid, LOWER(uid) FROM nc_users_external;
INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users_external;
Wenn Sie Nextcloud bisher ohne mailcow-Authentifizierung, aber mit den gleichen Benutzernamen wie mailcow genutzt haben, können Sie Ihre bestehenden Benutzerkonten auch mit OAuth2 verknüpfen.
-1. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
ausführen):
+
1. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
ausführen):
INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users;
Nachdem die Änderungen vorgenommen wurden, muss der nginx-Container neu gestartet werden.
-docker-compose restart nginx-mailcow
docker compose restart nginx-mailcow
Um Portainer zu aktivieren, müssen die docker-compose.yml und site.conf für Nginx geändert werden.
-1. Erstellen Sie eine neue Datei docker-compose.override.yml
im mailcow-dockerized Stammverzeichnis und fügen Sie die folgende Konfiguration ein
+
Um Portainer zu aktivieren, müssen die docker compose.yml und site.conf für Nginx geändert werden.
+1. Erstellen Sie eine neue Datei docker compose.override.yml
im mailcow-dockerized Stammverzeichnis und fügen Sie die folgende Konfiguration ein
version: '2.1'
services:
portainer-mailcow:
@@ -2418,7 +2435,7 @@ map $http_upgrade $connection_upgrade {
}
3. Übernehmen Sie Ihre Änderungen: -
docker-compose up -d && docker-compose restart nginx-mailcow
+docker compose up -d && docker compose restart nginx-mailcow
Nun können Sie einfach zu https://${MAILCOW_HOSTNAME}/portainer/ navigieren, um Ihre Portainer-Container-Überwachungsseite anzuzeigen. Sie werden dann aufgefordert, ein neues Passwort für den admin Account anzugeben. Nachdem Sie Ihr Passwort eingegeben haben, können Sie sich mit der Portainer UI verbinden.
@@ -2427,7 +2444,7 @@ map $http_upgrade $connection_upgrade {
Letztes Update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -2543,7 +2560,7 @@ map $http_upgrade $connection_upgrade {
Editieren Sie docker-compose.override.yml
und verfassen/erweitern Sie den Abschnitt für php-fpm-mailcow
:
Editieren Sie docker compose.override.yml
und verfassen/erweitern Sie den Abschnitt für php-fpm-mailcow
:
version: '2.1'
services:
php-fpm-mailcow:
@@ -2676,8 +2693,8 @@ services:
data/web/rc-auth.php
Starten Sie schließlich mailcow neu
-docker-compose down
-docker-compose up -d
+docker compose down
+docker compose up -d
@@ -2685,7 +2702,7 @@ docker-compose up -d
Letztes Update:
- 2022-08-02 19:01:54
+ 2022-08-31 14:45:46
@@ -2786,7 +2803,7 @@ docker-compose up -d
-
+
diff --git a/de/troubleshooting/debug-admin_login_sogo/index.html b/de/troubleshooting/debug-admin_login_sogo/index.html
index 7000521d1..c6ea475c1 100644
--- a/de/troubleshooting/debug-admin_login_sogo/index.html
+++ b/de/troubleshooting/debug-admin_login_sogo/index.html
@@ -69,6 +69,23 @@
ALLOW_ADMIN_EMAIL_LOGIN=y
docker-compose up -d
+docker compose up -d
Nachteile bei Aktivierung¶
@@ -2487,7 +2504,7 @@ In den meisten Fällen sollte dies nicht spürbar sein, aber Sie sollten es im H
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2603,7 +2620,7 @@ In den meisten Fällen sollte dies nicht spürbar sein, aber Sie sollten es im H
Um einen Container an Ihre Shell anzuhängen, können Sie einfach folgendes ausführen
-docker-compose exec $Dienst_Name /bin/bash
+docker compose exec $Dienst_Name /bin/bash
Verbindung zu Diensten herstellen¶
Wenn Sie sich direkt mit einem Dienst / einer Anwendung verbinden wollen, ist es immer eine gute Idee, source mailcow.conf
zu benutzen, um alle relevanten Variablen in Ihre Umgebung zu bekommen.
MySQL¶
Quelle mailcow.conf
-docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
+docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
Redis¶
-docker-compose exec redis-mailcow redis-cli
+docker compose exec redis-mailcow redis-cli
Dienstbeschreibungen¶
Hier ist eine kurze Übersicht, welcher Container / Dienst was macht:
@@ -2592,7 +2609,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2708,7 +2725,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
-
+
diff --git a/de/troubleshooting/debug-common_problems/index.html b/de/troubleshooting/debug-common_problems/index.html
index 547b8aa06..fab461692 100644
--- a/de/troubleshooting/debug-common_problems/index.html
+++ b/de/troubleshooting/debug-common_problems/index.html
@@ -69,6 +69,23 @@
Bitte lesen Sie unsere DNS-Konfiguration Anleitung.
-... wie:
ERROR: Ungültiges Interpolationsformat ...
AttributeError: 'NoneType' Objekt hat kein Attribut 'keys'
.Wenn Sie eine oder ähnliche Meldungen erhalten, während Sie versuchen, mailcow: dockerized auszuführen, überprüfen Sie bitte, ob Sie die aktuellste Version von Docker und docker-compose haben.
+Wenn Sie eine oder ähnliche Meldungen erhalten, während Sie versuchen, mailcow: dockerized auszuführen, überprüfen Sie bitte, ob Sie die aktuellste Version von Docker und docker compose haben.
Dieser Fehler versucht Ihnen mitzuteilen, dass eine der (Gesundheits-)Bedingungen für einen bestimmten Container nicht erfüllt ist. Daher kann er nicht gestartet werden. Dies kann verschiedene Gründe haben, der häufigste ist ein aktualisierter Git-Klon, aber ein altes Docker-Image oder umgekehrt.
Auch eine falsch konfigurierte Firewall kann einen solchen Fehler verursachen. Die Container müssen in der Lage sein, über das Netzwerk 172.22.1.1/24 miteinander zu kommunizieren.
@@ -2596,7 +2613,7 @@ key.pem Letztes Update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2712,7 +2729,7 @@ key.pem - + diff --git a/de/troubleshooting/debug-logs/index.html b/de/troubleshooting/debug-logs/index.html index 67980c984..bfb84d4c1 100644 --- a/de/troubleshooting/debug-logs/index.html +++ b/de/troubleshooting/debug-logs/index.html @@ -64,6 +64,23 @@Warning
Dieser Abschnitt gilt nur für Docker's Standard-Logging-Treiber (JSON).
-Um die Logs aller mailcow: dockerized bezogenen Container zu sehen, können Sie docker-compose logs
innerhalb Ihres mailcow-dockerized Ordners verwenden, der Ihre mailcow.conf
enthält. Dies ist normalerweise ein bisschen viel, aber Sie können die Ausgabe mit --tail=100
auf die letzten 100 Zeilen pro Container kürzen, oder ein -f
hinzufügen, um die Live-Ausgabe aller Ihrer Dienste zu verfolgen.
Um die Logs eines bestimmten Dienstes zu sehen, kann man docker-compose logs [options] $service_name
verwenden
Um die Logs aller mailcow: dockerized bezogenen Container zu sehen, können Sie docker compose logs
innerhalb Ihres mailcow-dockerized Ordners verwenden, der Ihre mailcow.conf
enthält. Dies ist normalerweise ein bisschen viel, aber Sie können die Ausgabe mit --tail=100
auf die letzten 100 Zeilen pro Container kürzen, oder ein -f
hinzufügen, um die Live-Ausgabe aller Ihrer Dienste zu verfolgen.
Um die Logs eines bestimmten Dienstes zu sehen, kann man docker compose logs [options] $service_name
verwenden
Info
-Die verfügbaren Optionen für den Befehl docker-compose logs sind:
+Die verfügbaren Optionen für den Befehl docker compose logs sind:
Wenn Ihr Server abgestürzt ist und MariaDB eine Fehlermeldung ähnlich [ERROR] mysqld: Aria recovery failed. Please run aria_chk -r on all Aria tables (*.MAI) and delete all aria_log.######## files
, können Sie Folgendes versuchen, um die Datenbank in einen gesunden Zustand zu bringen:
Starten Sie den Stack und warten Sie, bis mysql-mailcow beginnt, einen Neustart zu melden. Überprüfen Sie dies, indem Sie docker-compose ps
ausführen.
Starten Sie den Stack und warten Sie, bis mysql-mailcow beginnt, einen Neustart zu melden. Überprüfen Sie dies, indem Sie docker compose ps
ausführen.
Führen Sie nun die folgenden Befehle aus:
# Stoppe den Stack, führe nicht "down" aus
-docker-compose stop
+docker compose stop
# Führen Sie eine Bash in dem gestoppten Container als Benutzer mysql aus
-docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql bash"' mysql-mailcow
+docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql bash"' mysql-mailcow
# cd in das SQL-Datenverzeichnis
cd /var/lib/mysql
# aria_chk ausführen
@@ -2432,14 +2449,14 @@ aria_chk --check --force */*.MAI
# Löschen der aria-Logdateien
rm aria_log.*
Führen Sie nun docker-compose down
gefolgt von docker-compose up -d
aus.
Führen Sie nun docker compose down
gefolgt von docker compose up -d
aus.
Dieser Schritt ist normalerweise nicht notwendig.
-docker-compose stop mysql-mailcow watchdog-mailcow
-docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && bash && exit 0"' mysql-mailcow
+docker compose stop mysql-mailcow watchdog-mailcow
+docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && bash && exit 0"' mysql-mailcow
Sobald die SQL-Shell gestartet wurde, führen Sie mysql_upgrade
aus und verlassen den Container:
mysql_upgrade
@@ -2432,7 +2449,7 @@ exit
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2548,7 +2565,7 @@ exit
-
+
diff --git a/de/troubleshooting/debug-reset_pw/index.html b/de/troubleshooting/debug-reset_pw/index.html
index bd01debe9..02fb25119 100644
--- a/de/troubleshooting/debug-reset_pw/index.html
+++ b/de/troubleshooting/debug-reset_pw/index.html
@@ -69,6 +69,23 @@
Stoppen Sie den Stack, indem Sie docker-compose stop
ausführen.
Stoppen Sie den Stack, indem Sie docker compose stop
ausführen.
Wenn die Container heruntergefahren sind, führen Sie diesen Befehl aus:
-docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && mysql -hlocalhost -uroot && exit 0"' mysql-mailcow
+docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && mysql -hlocalhost -uroot && exit 0"' mysql-mailcow
1. Datenbank-Name finden¶
# source mailcow.conf
-# docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
+# docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
MariaDB [(none)]> show databases;
+--------------------+
| Database |
@@ -2626,10 +2643,10 @@ MariaDB [(none)]> FLUSH PRIVILEGES;
Für mailcow WebUI:¶
Dies funktioniert ähnlich wie das Zurücksetzen eines MySQL-Passworts, jetzt machen wir es vom Host aus, ohne uns mit dem MySQL CLI zu verbinden:
Quelle mailcow.conf
-docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='YOUR_USERNAME';"
+docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='YOUR_USERNAME';"
Für SOGo:¶
-docker-compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled '{"SOGoGoogleAuthenticatorEnabled":0}'
+docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled '{"SOGoGoogleAuthenticatorEnabled":0}'
@@ -2637,7 +2654,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e &qu
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2753,7 +2770,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e &qu
-
+
diff --git a/de/troubleshooting/debug-reset_tls/index.html b/de/troubleshooting/debug-reset_tls/index.html
index 4ff5c7c99..96ae6f953 100644
--- a/de/troubleshooting/debug-reset_tls/index.html
+++ b/de/troubleshooting/debug-reset_tls/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2370,12 +2387,12 @@
Sollten Sie Probleme mit Ihrem Zertifikat, Schlüssel oder Let's Encrypt-Konto haben, versuchen Sie bitte, die TLS-Assets zurückzusetzen:
source mailcow.conf
-docker-compose down
+docker compose down
rm -rf data/assets/ssl
mkdir data/assets/ssl
openssl req -x509 -newkey rsa:4096 -keyout data/assets/ssl-example/key.pem -out data/assets/ssl-example/cert.pem -days 365 -subj "/C=DE/ST=NRW/L=Willich/O=mailcow/OU=mailcow/CN=${MAILCOW_HOSTNAME}" -sha256 -nodes
cp -n -d data/assets/ssl-example/*.pem data/assets/ssl/
-docker-compose up -d
+docker compose up -d
Dies wird mailcow stoppen, die benötigten Variablen beschaffen, ein selbstsigniertes Zertifikat erstellen und mailcow starten.
Wenn Sie Let's Encrypt verwenden, sollten Sie vorsichtig sein, da Sie ein neues Konto und einen neuen Satz von Zertifikaten erstellen werden. Sie werden früher oder später auf ein Ratelimit stoßen.
@@ -2386,7 +2403,7 @@ docker-compose up -d
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2502,7 +2519,7 @@ docker-compose up -d
rspamd-vol-1
, um alle Rspamd-Daten zu entfernen.crypt-vol-1
, um alle Crypto-Daten zu entfernen. Dies wird alle Mails unlesbar machen.Alternativ dazu wird die Ausführung von docker-compose down -v
alle mailcow: dockerized volumes zerstören und alle zugehörigen Container und Netzwerke löschen.
Alternativ dazu wird die Ausführung von docker compose down -v
alle mailcow: dockerized volumes zerstören und alle zugehörigen Container und Netzwerke löschen.
Eine kurze Anleitung, um einen schlecht funktionierenden Rspamd tiefgehend zu analysieren.
-docker-compose exec rspamd-mailcow bash
+docker compose exec rspamd-mailcow bash
if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then
sed -i 's/apt-stabil/apt-stabil-asan/i' /etc/apt/sources.list.d/rspamd.list
@@ -2384,17 +2401,17 @@ nano /docker-entrypoint.sh
export G_SLICE=always-malloc
export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0
-Starten Sie Rspamd neu: docker-compose restart rspamd-mailcow
+Starten Sie Rspamd neu: docker compose restart rspamd-mailcow
Ihr Speicherverbrauch wird stark ansteigen, er wird auch stetig wachsen, was nicht mit einem möglichen Memory Leak zusammenhängt, nach dem Sie suchen.
-Lassen Sie den Container für ein paar Minuten, Stunden oder Tage laufen (es sollte die Zeit sein, die Sie normalerweise warten, bis der Memory Leak "passiert") und starten Sie ihn neu: docker-compose restart rspamd-mailcow
.
-Betreten Sie nun den Container, indem Sie docker-compose exec rspamd-mailcow bash
ausführen, wechseln Sie das Verzeichnis zu /tmp und kopieren Sie die asan-Dateien an den gewünschten Ort oder laden Sie sie über termbin.com hoch (cat /tmp/rspamd-asan.* | nc termbin.com 9999
).
+Lassen Sie den Container für ein paar Minuten, Stunden oder Tage laufen (es sollte die Zeit sein, die Sie normalerweise warten, bis der Memory Leak "passiert") und starten Sie ihn neu: docker compose restart rspamd-mailcow
.
+Betreten Sie nun den Container, indem Sie docker compose exec rspamd-mailcow bash
ausführen, wechseln Sie das Verzeichnis zu /tmp und kopieren Sie die asan-Dateien an den gewünschten Ort oder laden Sie sie über termbin.com hoch (cat /tmp/rspamd-asan.* | nc termbin.com 9999
).
Letztes Update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2510,7 +2527,7 @@ export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violati
-
+
diff --git a/de/troubleshooting/debug/index.html b/de/troubleshooting/debug/index.html
index 1e6446073..a0e1ecc10 100644
--- a/de/troubleshooting/debug/index.html
+++ b/de/troubleshooting/debug/index.html
@@ -64,6 +64,23 @@
Make sure the user you want to restore exists in your mailcow. Re-create them if they are missing.
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
2. Run docker-compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org
2. Run docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org
Run sogo-tool
without parameters to check for possible restore options.
3. Delete the copied backup by running rm __MAILCOW_DIRECTORY__/data/conf/sogo
4. Restart SOGo and Memcached: docker-compose restart sogo-mailcow memcached-mailcow
4. Restart SOGo and Memcached: docker compose restart sogo-mailcow memcached-mailcow
In case of an accidental deletion of a mailbox, you will be able to recover for (by default) 5 days. This depends on the MAILDIR_GC_TIME
parameter in mailcow.conf
.
A deleted mailbox is copied in its encrypted form to /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage
.
To restore make sure you are actually restoring to the same mailcow it was deleted from or you use the same encryption keys in crypt-vol-1
.
Make sure the user you want to restore exists in your mailcow. Re-create them if they are missing.
Copy the folders from /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]
back to /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]
and resync the folder and recalc the quota:
docker-compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*'
-docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
+docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*'
+docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
@@ -2460,7 +2477,7 @@ docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2576,7 +2593,7 @@ docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
On the destination (in this case /external_share/backups
) you may want to have snapshot capabilities (ZFS, Btrfs etc.). Snapshot daily and keep for n days for a consistent backup.
Do not rsync to a Samba share, you need to keep the correct permissions!
To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run docker-compose pull
and docker-compose up -d
.
To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run docker compose pull
and docker compose up -d
.
If you are lucky Redis and MariaDB can automatically fix the inconsistent databases (if they are inconsistent). In case of a corrupted database you'd need to use the helper script to restore the inconsistent elements. If a restore fails, try to extract the backups and copy the files back manually. Keep the file permissions!
@@ -2549,7 +2566,7 @@ In case of a corrupted database you'd need to use the helper script to restore t Last update: - 2022-07-11 21:14:01 + 2022-08-31 14:45:46 @@ -2665,7 +2682,7 @@ In case of a corrupted database you'd need to use the helper script to restore t - + diff --git a/en/backup_restore/b_n_r-backup_restore-maildir/index.html b/en/backup_restore/b_n_r-backup_restore-maildir/index.html index 008d88208..4b4806730 100644 --- a/en/backup_restore/b_n_r-backup_restore-maildir/index.html +++ b/en/backup_restore/b_n_r-backup_restore-maildir/index.html @@ -69,6 +69,23 @@This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory:
cd /path/to/mailcow-dockerized
-docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail
+docker 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
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
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:stretch-slim tar xvfz /backup/backup_vmail.tar.gz
cd /path/to/mailcow-dockerized
source mailcow.conf
DATE=$(date +"%Y%m%d_%H%M%S")
-docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql
+docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql
Warning
-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.
cd /path/to/mailcow-dockerized
source mailcow.conf
-docker exec -i $(docker-compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
+docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql
To find the paths of your source volumes we use docker inspect
and read the destination directory of every volume related to your mailcow compose project. This means we will also transfer volumes you may have added in an override file. Local bind mounts may or may not work.
The script uses rsync with the --delete
flag. The destination will be an exact copy of the source.
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 docker compose pull
and remove old image tags from the destination.
Your source will not be changed at any time.
You may want to make sure to use the same /etc/docker/daemon.json
on the remote target.
You should not run disk snapshots (e.g. via ZFS, LVM etc.) on the target at the very same time as this script is run.
@@ -2488,7 +2505,7 @@ export REMOTE_SSH_HOST=mailcow-backup.host.nameThe key must be owned and readable by root only.
Both the source and destination require rsync
>= v3.1.0.
-The destination must have Docker and docker-compose v2 available.
The script will detect errors automatically and exit.
You may want to test the connection by running ssh mailcow-backup.host.name -p22 -i /path/to/keyfile
.
To remove mailcow: dockerized with all it's volumes, images and containers do:
-docker-compose down -v --rmi all --remove-orphans
+docker compose down -v --rmi all --remove-orphans
Info
@@ -2377,7 +2394,7 @@
- -v Remove named volumes declared in the
volumes
section of the Compose file and anonymous volumes attached to containers.
- --rmi
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.
- --remove-orphans Remove containers for services not defined in the compose file.
-- By default
docker-compose down
only removes currently active containers and networks defined in the docker-compose.yml
.
+- By default
docker compose down
only removes currently active containers and networks defined in the docker compose.yml
.
@@ -2386,7 +2403,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2502,7 +2519,7 @@
You need Docker (a version >= 20.10.2
is required) and Docker Compose (a version >= 2.0
is required).
1. Learn how to install Docker and Docker Compose.
+Learn how to install Docker and Docker Compose.
Quick installation for most operation systems:
-Docker +
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
# After the installation process is finished, you may need to enable the service and make sure it is started (e.g. CentOS 7)
systemctl enable --now docker
-
Docker-Compose
-Danger
-mailcow requires the latest version of docker-compose v2. It is highly recommended to use the commands below to install docker-compose
. Package managers (e.g. apt
, yum
) likely won't give you the correct version.
-Note: This command downloads docker-compose from the official Docker Github repository and is a safe method. The snippet will determine the latest supported version by mailcow. In almost all cases this is the latest version available (exceptions are broken releases or major changes not yet supported by mailcow).
mailcow requires the latest version of docker compose v2.
+If Docker was installed using the script above, the Docker Compose plugin is already automatically installed in a version >=2.0.
+Is your mailcow installation older or Docker was installed in a different way, the Compose plugin or the standalone version of Docker must be installed manually.
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
-chmod +x /usr/local/bin/docker-compose
+Installation via Paketmanager (plugin)¶
+
+Info
+This approach with the package sources is only possible if the Docker repository has been included. This can happen either through the instructions above (see Docker) or through a manually integration.
+
+On Debian/Ubuntu systems:
+
apt update
+apt install docker compose-plugin
+
+On Centos 7 systems:
+
yum update
+yum install docker compose-plugin
+
+
+Danger
+The Docker Compose command syntax is docker compose
for the plugin variant of Docker Compose!!!
+
+Installation via Script (standalone)¶
+
+Info
+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
+chmod +x /usr/local/bin/docker compose
+
+Danger
+The Docker Compose command syntax is docker compose
for the standalone variant of Docker Compose!!!
+
Please use the latest Docker engine available and do not use the engine that ships with your distros repository.
-1.1. On SELinux enabled systems, e.g. CentOS 7:
+Check SELinux specifics¶
+On SELinux enabled systems, e.g. CentOS 7:
- Check if "container-selinux" package is present on your system:
@@ -2412,7 +2691,8 @@ chmod +x /usr/local/bin/docker-compose
Restart the docker daemon and verify SELinux is now enabled.
This step is required to make sure mailcows volumes are properly labeled as declared in the compose file.
If you are interested in how this works, you can check out the readme of https://github.com/containers/container-selinux which links to a lot of useful information on that topic.
-2. Clone the master branch of the repository, make sure your umask equals 0022. Please clone the repository as root user and also control the stack as root. We will modify attributes - if necessary - while bootstrapping the containers automatically and make sure everything is secured. The update.sh script must therefore also be run as root. It might be necessary to change ownership and other attributes of files you will otherwise not have access to. We drop permissions for every exposed application and will not run an exposed service as root! Controlling the Docker daemon as non-root user does not give you additional security. The unprivileged user will spawn the containers as root likewise. The behaviour of the stack is identical.
+Install mailcow¶
+Clone the master branch of the repository, make sure your umask equals 0022. Please clone the repository as root user and also control the stack as root. We will modify attributes - if necessary - while bootstrapping the containers automatically and make sure everything is secured. The update.sh script must therefore also be run as root. It might be necessary to change ownership and other attributes of files you will otherwise not have access to. We drop permissions for every exposed application and will not run an exposed service as root! Controlling the Docker daemon as non-root user does not give you additional security. The unprivileged user will spawn the containers as root likewise. The behaviour of the stack is identical.
$ su
# umask
0022 # <- Verify it is 0022
@@ -2420,18 +2700,20 @@ If you are interested in how this works, you can check out the readme of
-3. Generate a configuration file. Use a FQDN (host.domain.tld
) as hostname when asked.
+
Initialize mailcow¶
+Generate a configuration file. Use a FQDN (host.domain.tld
) as hostname when asked.
./generate_config.sh
-4. Change configuration if you want or need to.
+
Change configuration if you want or need to.
nano mailcow.conf
If you plan to use a reverse proxy, you can, for example, bind HTTPS to 127.0.0.1 on port 8443 and HTTP to 127.0.0.1 on port 8080.
You may need to stop an existing pre-installed MTA which blocks port 25/tcp. See this chapter to learn how to reconfigure Postfix to run besides mailcow after a successful installation.
Some updates modify mailcow.conf and add new parameters. It is hard to keep track of them in the documentation. Please check their description and, if unsure, ask at the known channels for advise.
-4.1. Users with a MTU not equal to 1500 (e.g. OpenStack):
+Troubleshooting¶
+Users with a MTU not equal to 1500 (e.g. OpenStack)¶
Whenever you run into trouble and strange phenomena, please check your MTU.
-Edit docker-compose.yml
and change the network settings according to your MTU.
+
Edit docker compose.yml
and change the network settings according to your MTU.
Add the new driver_opts parameter like this:
networks:
mailcow-network:
@@ -2440,12 +2722,13 @@ Add the new driver_opts parameter like this:
com.docker.network.driver.mtu: 1450
...
-4.2. Users without an IPv6 enabled network on their host system:
-Enable IPv6. Finally.
+Users without an IPv6 enabled network on their host system¶
+Please don't turn off IPv6, even if you don't like it. IPv6 is the future and should not be ignored.
If you do not have an IPv6 enabled network on your host and you don't care for a better internet (thehe), it is recommended to disable IPv6 for the mailcow network to prevent unforeseen issues.
-5. Pull the images and run the compose file. The parameter -d
will start mailcow: dockerized detached:
-
docker-compose pull
-docker-compose up -d
+Start mailcow¶
+Pull the images and run the compose file. The parameter -d
will start mailcow: dockerized detached:
+
docker compose pull
+docker compose up -d
Done!
You can now access https://${MAILCOW_HOSTNAME} with the default credentials admin
+ password moohoo
.
@@ -2454,14 +2737,14 @@ docker-compose up -d
If you are not using mailcow behind a reverse proxy, you should redirect all HTTP requests to HTTPS.
The database will be initialized right after a connection to MySQL can be established.
-Your data will persist in multiple Docker volumes, that are not deleted when you recreate or delete containers. Run docker volume ls
to see a list of all volumes. You can safely run docker-compose down
without removing persistent data.
+Your data will persist in multiple Docker volumes, that are not deleted when you recreate or delete containers. Run docker volume ls
to see a list of all volumes. You can safely run docker compose down
without removing persistent data.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2577,7 +2860,7 @@ docker-compose up -d
-
+
diff --git a/en/i_u_m/i_u_m_migration/index.html b/en/i_u_m/i_u_m_migration/index.html
index 491df35dd..ac1ac50e4 100644
--- a/en/i_u_m/i_u_m_migration/index.html
+++ b/en/i_u_m/i_u_m_migration/index.html
@@ -64,6 +64,23 @@
Alternatively, you can use the ./helper-scripts/backup_and_restore.sh
script to create a full backup on the source machine, then install mailcow on the target machine as usual, copy over your mailcow.conf
and use the same script to restore your backup to the target machine.
1. -Install Docker and docker-compose on your new server.
+Install Docker and docker compose on your new server.Quick installation for most operation systems:
docker-compose -
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
-chmod +x /usr/local/bin/docker-compose
+docker compose
+
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
+chmod +x /usr/local/bin/docker compose
@@ -2405,7 +2422,7 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.
4. Shut down mailcow and stop Docker on the source machine.
cd /opt/mailcow-dockerized
-docker-compose down
+docker compose down
systemctl stop docker.service
5. Repeat step 3 with the same commands. This will be much quicker than the first time.
@@ -2414,10 +2431,10 @@ systemctl stop docker.service7. Now pull the mailcow Docker images on the target machine.
cd /opt/mailcow-dockerized
-docker-compose pull
+docker compose pull
8. Start the whole mailcow stack and everything should be done! -
docker-compose up -d
+docker compose up -d
9. Finally, change your DNS settings to point to the target server.
@@ -2426,7 +2443,7 @@ docker-compose pull
Last update:
- 2022-06-24 11:27:36
+ 2022-08-31 14:45:46
@@ -2542,7 +2559,7 @@ docker-compose pull
Yes.
See the topic above, instead of a diff, you run checkout:
-docker-compose down
+docker compose down
# Replace commit ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab by your ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
-docker-compose pull
-docker-compose up -d
+docker compose pull
+docker compose up -d
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 for more details.
@@ -2559,13 +2662,40 @@ docker-compose up -d
- 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.)
+Update variants¶
+stable (stable updates): These updates are suitable for productive usage. They appear in a cycle of at least 1x per month.
+nightly (unstable updates): These updates are NOT suitable for production use and are for testing only. The nightly updates are ahead of the stable updates, since in these updates we test newer and more extensive features before they go live for all users.
+NEW: Get Nightly Updates¶
+Info about the Nightly Updates¶
+Since the 2022-08 update there is the possibility to change the update sources. Until now, the master branch on GitHub served as the only (official) update source. With the August 2022 update, however, there is now the Nightly Branch which contains unstable and major changes for testing and feedback.
+The Nightly Branch always gets new updates when something is finished on the mailcow project that will be included in the new main version.
+Besides the obvious changes that will be included in the next major update anyway, it also contains exclusive features that need a longer testing time (e.g. the UI update to Bootstrap 5).
+How do I get Nightly Updates?¶
+The process is relatively simple. With the 2022-08 update (assuming an update to the version) it is possible to run update.sh
with the parameter --nightly
.
+
+Danger
Please make a backup before or follow the Best Practice Nightly Update section before switching to mailcow nightly builds. We are not responsible for any data loss/corruption, so work with caution!
+
+
+The script will now change the branch with git checkout nightly
, which means it will ask for the IPv6 settings again. But this is normal.
+If everything worked fine (for which we made a backup before) the mailcow UI should now show the current version number and date stamp in the lower right corner:
+
+Best Practice Nightly Update¶
+
+Info
We recommend using the Nightly Update only if you have another machine or VM and NOT use it productively.
+
+
+
+- use the cold standby script to copy the machine before the switch to the nightly builds on another system.
+- run the
update.sh
script on the new machine with the parameter --nightly
and confirm.
+- experience/test the nightly updates on the secondary machine.
+
Last update:
- 2022-06-23 15:19:13
+ 2022-08-31 14:45:46
@@ -2681,7 +2811,7 @@ docker-compose up -d
-
+
diff --git a/en/index.html b/en/index.html
index fa9f4a1ab..7a05a8d21 100644
--- a/en/index.html
+++ b/en/index.html
@@ -69,6 +69,23 @@
docker-compose restart clamd-mailcow
+docker compose restart clamd-mailcow
Please note:
@@ -2538,7 +2555,7 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
docker-compose restart clamd-mailcow
+docker compose restart clamd-mailcow
@@ -2547,7 +2564,7 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2663,7 +2680,7 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
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 logs clamd-mailcow | grep "FOUND"
+docker compose logs clamd-mailcow | grep "FOUND"
This line confirms that such was identified:
clamd-mailcow_1 | Sat Sep 28 07:43:24 2019 -> instream(local): PUA.Pdf.Trojan.EmbeddedJavaScript-1(e887d2ac324ce90750768b86b63d0749:363325) FOUND
@@ -2429,11 +2446,11 @@
To whitelist this particular signature (and enable sending this type of file attached), add it to the ClamAV signature whitelist file:
echo 'PUA.Pdf.Trojan.EmbeddedJavaScript-1' >> data/conf/clamav/whitelist.ign2
-Then restart the clamd-mailcow service container in the mailcow UI or using docker-compose:
-docker-compose restart clamd-mailcow
+Then restart the clamd-mailcow service container in the mailcow UI or using docker compose:
+docker compose restart clamd-mailcow
Cleanup cached ClamAV results in Redis:
-# docker-compose exec redis-mailcow /bin/sh
+# docker compose exec redis-mailcow /bin/sh
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
/data # exit
@@ -2443,7 +2460,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2559,7 +2576,7 @@
-
+
diff --git a/en/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html b/en/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html
index c056cd4d9..906a20a04 100644
--- a/en/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html
+++ b/en/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2371,13 +2388,13 @@
Customize Dockerfiles
You need to copy the override file with corresponding build tags to the mailcow: dockerized root folder (i.e. /opt/mailcow-dockerized
):
-cp helper-scripts/docker-compose.override.yml.d/BUILD_FLAGS/docker-compose.override.yml docker-compose.override.yml
+cp helper-scripts/docker compose.override.yml.d/BUILD_FLAGS/docker compose.override.yml docker compose.override.yml
Make your changes in data/Dockerfiles/$service
and build the image locally:
docker build data/Dockerfiles/service -t mailcow/$service
Now auto-recreate modified containers:
-docker-compose up -d
+docker compose up -d
@@ -2385,7 +2402,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2501,7 +2518,7 @@
-
+
diff --git a/en/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html b/en/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html
index 5d2735155..982b0aa7b 100644
--- a/en/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html
+++ b/en/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2374,14 +2391,14 @@
This function can be re-enabled by setting ACL_ANYONE
to allow
in mailcow.conf:
ACL_ANYONE=allow
-Apply the changes by running docker-compose up -d
.
+Apply the changes by running docker compose up -d
.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2497,7 +2514,7 @@
-
+
diff --git a/en/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html b/en/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html
index dc2cb3081..2472c75f4 100644
--- a/en/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html
+++ b/en/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2494,7 +2511,7 @@
That said, let's dive in:
Delete a user's mails inside the junk folder that are read and older than 4 hours
-docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
+docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
Delete all user's mails in the junk folder that are older than 7 days
-docker-compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
+docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
Delete all mails (of all users) in all folders that are older than 52 weeks (internal date of the mail, not the date it was saved on the system => before
instead of savedbefore
). Useful for deleting very old mails on all users and folders (thus especially useful for GDPR-compliance).
-docker-compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
+docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
Delete mails inside a custom folder inside a user's inbox that are not flagged and older than 2 weeks
-docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w
+docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w
Info
@@ -2499,8 +2516,8 @@
# Path to mailcow-dockerized, e.g. /opt/mailcow-dockerized
cd /path/to/your/mailcow-dockerized
-/usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
-/usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h
+/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
+/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h
[...]
To create a cron job you may execute crontab -e
and insert something like the following to execute a script:
@@ -2508,7 +2525,7 @@ cd /path/to/your/mailcow-dockerized
0 4 * * * /path/to/your/expunge_mailboxes.sh
via Docker job scheduler¶
-To archive this with a docker job scheduler use this docker-compose.override.yml with your mailcow:
+To archive this with a docker job scheduler use this docker compose.override.yml with your mailcow:
version: '2.1'
services:
@@ -2529,7 +2546,7 @@ services:
- "ofelia.job-exec.dovecot-expunge-trash.tty=false"
The job controller just need access to the docker control socket to be able to emulate the behavior of "exec". Then we add a few label to our dovecot-container to activate the job scheduler and tell him in a cron compatible scheduling format when to run. If you struggle with that schedule string you can use crontab guru.
-This docker-compose.override.yml deletes all mails older then 2 weeks from the "Junk" folder every day at 4 am. To see if things ran proper, you can not only see in your mailbox but also check Ofelia's docker log if it looks something like this:
+This docker compose.override.yml deletes all mails older then 2 weeks from the "Junk" folder every day at 4 am. To see if things ran proper, you can not only see in your mailbox but also check Ofelia's docker log if it looks something like this:
common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)] Started - doveadm expunge -A mailbox 'Junk' savedbefore 2w,
common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)] Finished in "285.032291ms", failed: false, skipped: false, error: none,
@@ -2541,7 +2558,7 @@ common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)]
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2657,7 +2674,7 @@ common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)]
-
+
diff --git a/en/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html b/en/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html
index ce0907409..6466c19b8 100644
--- a/en/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html
+++ b/en/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2372,7 +2389,7 @@
Create a file data/conf/dovecot/extra.conf
- if missing - and add your additional content here.
Restart dovecot-mailcow
to apply your changes:
-docker-compose restart dovecot-mailcow
+docker compose restart dovecot-mailcow
@@ -2380,7 +2397,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2496,7 +2513,7 @@
-
+
diff --git a/en/manual-guides/Dovecot/u_e-dovecot-fts/index.html b/en/manual-guides/Dovecot/u_e-dovecot-fts/index.html
index d2a4684d9..fc1c80959 100644
--- a/en/manual-guides/Dovecot/u_e-dovecot-fts/index.html
+++ b/en/manual-guides/Dovecot/u_e-dovecot-fts/index.html
@@ -69,6 +69,23 @@
Since we run in Docker and create our containers with the "restart: always" flag, a oom situation will at least only trigger a restart of the container.
# 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
-docker-compose exec dovecot-mailcow doveadm fts rescan -A
+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)."
This does not re-index a mailbox. It basically repairs a given index.
If you want to re-index data immediately, you can run the followig command, where '*' can also be a mailbox mask like 'Sent'. You do not need to run these commands, but it will speed things up a bit:
# single user
-docker-compose exec dovecot-mailcow doveadm index -u user@domain '*'
+docker compose exec dovecot-mailcow doveadm index -u user@domain '*'
# all users, but obviously slower and more dangerous
-docker-compose exec dovecot-mailcow doveadm index -A '*'
+docker compose exec dovecot-mailcow doveadm index -A '*'
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.
@@ -2489,7 +2506,7 @@ docker-compose exec dovecot-mailcow doveadm index -A '*' Last update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2605,7 +2622,7 @@ docker-compose exec dovecot-mailcow doveadm index -A '*' - + diff --git a/en/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html b/en/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html index 0f639d79f..9206a5b61 100644 --- a/en/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html +++ b/en/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html @@ -69,6 +69,23 @@Now reload Dovecot: -
docker-compose exec dovecot-mailcow dovecot reload
+docker compose exec dovecot-mailcow dovecot reload
Info
You can check the value of this setting with
-
docker-compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval"
+docker compose 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.
@@ -2509,7 +2526,7 @@ If you didn't change it, it should be at 2m. If you did change it, you should se
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2625,7 +2642,7 @@ If you didn't change it, it should be at 2m. If you did change it, you should se
-
+
diff --git a/en/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html b/en/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html
index 8844e4900..58316091a 100644
--- a/en/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html
+++ b/en/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html
@@ -64,6 +64,23 @@
Mails are stored compressed (lz4) and encrypted. The key pair can be found in crypt-vol-1.
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 docker compose exec dovecot-mailcow /bin/bash
in the mailcow-dockerized location.
# Decrypt /var/vmail
find /var/vmail/ -type f -regextype egrep -regex '.*S=.*W=.*' | while read -r file; do
if [[ $(head -c7 "$file") == "CRYPTED" ]]; then
@@ -2407,7 +2424,7 @@ done
Last update:
- 2022-07-23 01:17:49
+ 2022-08-31 14:45:46
@@ -2523,7 +2540,7 @@ done
:INDEXPVT=~/public
can be omitted if per-user seen flags are not wanted.
The new mailbox in the public namespace will be auto-subscribed by users.
To allow all authenticated users access full to that new mailbox (not the whole namespace), run:
-docker-compose exec dovecot-mailcow doveadm acl set -A "Public/Develcow" "authenticated" lookup read write write-seen write-deleted insert post delete expunge create
+docker compose 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).
Allow authenticated users access to the whole public namespace¶
@@ -2452,7 +2469,7 @@
Last update:
- 2022-07-28 08:45:52
+ 2022-08-31 14:45:46
@@ -2568,7 +2585,7 @@
DOVECOT_MASTER_USER=mymasteruser
DOVECOT_MASTER_PASS=mysecretpass
Run docker-compose up -d
to apply your changes.
Run docker compose up -d
to apply your changes.
The static master username will be expanded to DOVECOT_MASTER_USER@mailcow.local
.
To login as test@example.org
this would equal to test@example.org*mymasteruser@mailcow.local
with the specified password above.
A login to SOGo is not possible with this username. A click-to-login function for SOGo is available for admins as described here @@ -2388,7 +2405,7 @@ No master user is required.
Last update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2504,7 +2521,7 @@ No master user is required. - + diff --git a/en/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html b/en/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html index cd60c594f..9e6e7f546 100644 --- a/en/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html +++ b/en/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html @@ -69,6 +69,23 @@Warning
Newer Docker versions seem to complain about existing volumes. You can fix this temporarily by removing the existing volume and start mailcow with the override file. But it seems to be problematic after a reboot (needs to be confirmed).
-An easy, dirty, yet stable workaround is to stop mailcow (docker-compose down
), remove /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
and create a new link to your remote filesystem location, for example:
An easy, dirty, yet stable workaround is to stop mailcow (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:
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
Start mailcow afterwards.
If you want to use another folder for the vmail-volume, you can create a docker-compose.override.yml
file and add the following content:
If you want to use another folder for the vmail-volume, you can create a docker compose.override.yml
file and add the following content:
version: '2.1'
volumes:
vmail-vol-1:
@@ -2502,10 +2519,10 @@ volumes:
Mountpoint
folder to the new location (e.g. /data/mailcow/vmail
) using cp -a
, rsync -a
or a similar non strcuture breaking copy commanddocker-compose down
from within your mailcow root folder (e.g. /opt/mailcow-dockerized
)docker-compose.override.yml
, edit the device path accordinglydocker compose down
from within your mailcow root folder (e.g. /opt/mailcow-dockerized
)docker compose.override.yml
, edit the device path accordinglydocker volume rm mailcowdockerized_vmail-vol-1
docker-compose up -d
from within your mailcow root folder (e.g. /opt/mailcow-dockerized
)docker compose up -d
from within your mailcow root folder (e.g. /opt/mailcow-dockerized
)This filename does not need to have a ".conf" extension but follows the pattern site.*.custom
, where *
is a custom name.
If PHP is to be included in a custom site, please use the PHP-FPM listener on phpfpm:9002 or create a new listener in data/conf/phpfpm/php-fpm.d/pools.conf
.
Restart Nginx (and PHP-FPM, if a new listener was created):
-docker-compose restart nginx-mailcow
-docker-compose restart php-fpm-mailcow
+docker compose restart nginx-mailcow
+docker compose restart php-fpm-mailcow
@@ -2560,7 +2577,7 @@ docker-compose restart php-fpm-mailcow
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2676,7 +2693,7 @@ docker-compose restart php-fpm-mailcow
Save and restart Nginx: docker-compose restart nginx-mailcow
.
Save and restart Nginx: docker compose restart nginx-mailcow
.
Now open mailcow.conf
and find ADDITIONAL_SAN
.
Add webmail.example.org
to this array, don't use quotes!
ADDITIONAL_SAN=webmail.example.org
Run docker-compose up -d
. See "acme-mailcow" and "nginx-mailcow" logs if anything fails.
Run docker compose up -d
. See "acme-mailcow" and "nginx-mailcow" logs if anything fails.
webmail.example.org
to this array, don't use quotes!
Open data/conf/postfix/extra.cf
and set the message_size_limit
accordingly in bytes. See main.cf
for the default value.
Restart Postfix:
-docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
@@ -2380,7 +2397,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2496,7 +2513,7 @@
smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_access reject_authenticated_sender_login_mismatch [...]
Run postmap on check_sasl_access:
-docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
+docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
Restart the Postfix container.
@@ -2454,7 +2471,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2570,7 +2587,7 @@
Postfix will complain about duplicate values once after starting postfix-mailcow, this is intended.
Syslog-ng was configured to hide those warnings while Postfix is running, to not spam the log files with unnecessary information every time a service is used.
Restart postfix-mailcow
to apply your changes:
docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
@@ -2382,7 +2399,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2498,7 +2515,7 @@
Edit data/conf/postfix/extra.cf
:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 192.168.2.0/24
Run docker-compose restart postfix-mailcow
to apply your new settings.
Run docker compose restart postfix-mailcow
to apply your new settings.
Adding IPv6 hosts is done the same as IPv4, however the subnet needs to be placed in brackets []
with the netmask appended.
To add the subnet 2001:db8::/32 to the trusted networks you may use the following configuration, depending on your IPV4_NETWORK and IPV6_NETWORK scopes:
Edit data/conf/postfix/extra.cf
:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 [2001:db8::]/32
Run docker-compose restart postfix-mailcow
to apply your new settings.
Run docker compose restart postfix-mailcow
to apply your new settings.
Info
More information about mynetworks can be found in the Postfix documentation.
@@ -2490,7 +2507,7 @@ Last update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2606,7 +2623,7 @@Redis is used as a key-value store for rspamd's and (some of) mailcow's settings and data. If you are unfamiliar with redis please read the introduction to redis and maybe visit this wonderful guide on how to use it.
To connect to the redis cli execute:
-docker-compose exec redis-mailcow redis-cli
+docker compose exec redis-mailcow redis-cli
Debugging¶
Here are some useful commands for the redis-cli for debugging:
MONITOR¶
Listens for all requests received by the server in real time:
-# docker-compose exec redis-mailcow redis-cli
+# 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"
@@ -2529,7 +2546,7 @@ PONG
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2645,7 +2662,7 @@ PONG
-
+
diff --git a/en/manual-guides/Rspamd/u_e-rspamd/index.html b/en/manual-guides/Rspamd/u_e-rspamd/index.html
index 2b220e386..649b937f2 100644
--- a/en/manual-guides/Rspamd/u_e-rspamd/index.html
+++ b/en/manual-guides/Rspamd/u_e-rspamd/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2580,11 +2597,11 @@ This is achieved by using the Sieve plugin "sieve_imapsieve" and parser scripts.
Learn Spam or Ham from existing directory¶
You can use a one-liner to learn mail in plain-text (uncompressed) format:
# Ham
-for file in /my/folder/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
+for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
# Spam
-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
-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:
for file in /data/old_mail/.Junk/cur/*; do rspamc learn_spam < zcat $file; done
Reset learned data (Bayes, Neural)¶
@@ -2594,15 +2611,15 @@ This is achieved by using the Sieve plugin "sieve_imapsieve" and parser scripts.
cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
Reset Bayes data
-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 BAYES_* | xargs redis-cli del'
+docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
Reset Neural data
-docker-compose 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'
Reset Fuzzy data
# We need to enter the redis-cli first:
-docker-compose exec redis-mailcow redis-cli
+docker compose exec redis-mailcow redis-cli
# In redis-cli:
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
@@ -2612,8 +2629,8 @@ docker-compose exec redis-mailcow redis-cli
...the key pattern was not found and thus no data is available to delete - it is fine.
CLI tools¶
-docker-compose exec rspamd-mailcow rspamc --help
-docker-compose exec rspamd-mailcow rspamadm --help
+docker compose exec rspamd-mailcow rspamc --help
+docker compose exec rspamd-mailcow rspamadm --help
Disable Greylisting¶
Only messages with a higher score will be considered to be greylisted (soft rejected). It is bad practice to disable greylisting.
@@ -2622,26 +2639,26 @@ docker-compose exec rspamd-mailcow rspamadm --help
Add the line:
enabled = false;
-Save the file and restart "rspamd-mailcow": docker-compose restart rspamd-mailcow
+Save the file and restart "rspamd-mailcow": docker compose restart rspamd-mailcow
Spam filter thresholds (global)¶
Each user is able to change their spam rating individually. To define a new server-wide limit, edit data/conf/rspamd/local.d/actions.conf
:
reject = 15;
add_header = 8;
greylist = 7;
-Save the file and restart "rspamd-mailcow": docker-compose restart rspamd-mailcow
+Save the file and restart "rspamd-mailcow": docker compose restart rspamd-mailcow
Existing settings of users will not be overwritten!
To reset custom defined thresholds, run:
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';"
# 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 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';"
Custom reject messages¶
The default spam reject message can be changed by adding a new file data/conf/rspamd/override.d/worker-proxy.custom.inc
with the following content:
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 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:
-
@@ -2661,27 +2678,27 @@ docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "del
}
-- Save the file and restart Rspamd:
docker-compose restart rspamd-mailcow
.
+- Save the file and restart Rspamd:
docker compose restart rspamd-mailcow
.
Discard instead of reject¶
If you want to silently drop a message, create or edit the file data/conf/rspamd/override.d/worker-proxy.custom.inc
and add the following content:
discard_on_reject = true;
Restart Rspamd:
-docker-compose restart rspamd-mailcow
+docker compose restart rspamd-mailcow
Wipe all ratelimit keys¶
If you don't want to use the UI and instead wipe all keys in the Redis database, you can use redis-cli for that task:
-docker-compose exec redis-mailcow sh
+docker compose exec redis-mailcow sh
# Unlink (available in Redis >=4.) will delete in the backgronud
redis-cli --scan --pattern RL* | xargs redis-cli unlink
Restart Rspamd:
-docker-compose restart rspamd-mailcow
+docker compose restart rspamd-mailcow
Trigger a resend of quarantine notifications¶
Should be used for debugging only!
-docker-compose exec dovecot-mailcow 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
@@ -2693,14 +2710,14 @@ quarantine_notify.py
Edit data/conf/rspamd/local.d/history_redis.conf
:
nrows = 1000; # change this value
-Restart Rspamd afterwards: docker-compose restart rspamd-mailcow
+Restart Rspamd afterwards: docker compose restart rspamd-mailcow
Last update:
- 2022-08-06 22:09:53
+ 2022-08-31 14:45:46
@@ -2816,7 +2833,7 @@ quarantine_notify.py
-
+
diff --git a/en/manual-guides/SOGo/u_e-sogo/index.html b/en/manual-guides/SOGo/u_e-sogo/index.html
index 1373725ed..b6f94ed35 100644
--- a/en/manual-guides/SOGo/u_e-sogo/index.html
+++ b/en/manual-guides/SOGo/u_e-sogo/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2509,7 +2526,7 @@ Please check the AngularJS Material version: '2.1'
services:
@@ -2532,8 +2549,8 @@ services:
volumes:
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
-- run
docker-compose up -d
-- run
docker-compose restart memcached-mailcow
+- run
docker compose up -d
+- run
docker compose restart memcached-mailcow
Reset to SOGo default theme¶
@@ -2558,20 +2575,20 @@ services:
and replace it with:
$mdThemingProvider.theme('default');
-- remove from
docker-compose.override.yml
volume mount in sogo-mailcow
:
+ - 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
-- run
docker-compose up -d
-- run
docker-compose restart memcached-mailcow
+- run
docker compose up -d
+- run
docker compose restart memcached-mailcow
Change favicon¶
mailcow builds after 31 January 2021 can change SOGo's favicon by replacing data/conf/sogo/custom-favicon.ico
for SOGo and data/web/favicon.png
for mailcow UI.
Note: You can use .png
favicons for SOGo by renaming them to custom-favicon.ico
.
For both SOGo and mailcow UI favicons you need use one of the standard dimensions: 16x16, 32x32, 64x64, 128x128 and 256x256.
-After you replaced said file you need to restart SOGo and Memcached containers by executing docker-compose restart memcached-mailcow sogo-mailcow
.
+After you replaced said file you need to restart SOGo and Memcached containers by executing docker compose restart memcached-mailcow sogo-mailcow
.
Change logo¶
mailcow builds after 21 December 2018 can change SOGo's logo by replacing or creating (if missing) data/conf/sogo/sogo-full.svg
.
-After you replaced said file you need to restart SOGo and Memcached containers by executing docker-compose restart memcached-mailcow sogo-mailcow
.
+After you replaced said file you need to restart SOGo and Memcached containers by executing docker compose restart memcached-mailcow sogo-mailcow
.
Connect domains¶
Domains are usually isolated from eachother.
You can change that by modifying data/conf/sogo/sogo.conf
:
@@ -2586,19 +2603,19 @@ After you replaced said file you need to restart SOGo and Memcached containers b
(example.org, example.com, example.net)
);
-Restart SOGo: docker-compose restart sogo-mailcow
+Restart SOGo: docker compose restart sogo-mailcow
Disable password changing¶
Edit data/conf/sogo/sogo.conf
and change SOGoPasswordChangeEnabled
to NO
. Please do not add a new parameter.
-Run docker-compose restart memcached-mailcow sogo-mailcow
to activate the changes.
+Run docker compose restart memcached-mailcow sogo-mailcow
to activate the changes.
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 docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}'
from within the mailcow directory.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2714,7 +2731,7 @@ After you replaced said file you need to restart SOGo and Memcached containers b
-
+
diff --git a/en/manual-guides/Unbound/u_e-unbound-fwd/index.html b/en/manual-guides/Unbound/u_e-unbound-fwd/index.html
index daf74d3b9..cec6ee531 100644
--- a/en/manual-guides/Unbound/u_e-unbound-fwd/index.html
+++ b/en/manual-guides/Unbound/u_e-unbound-fwd/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2447,21 +2464,21 @@
forward-addr: 8.8.4.4 # DO NOT USE PUBLIC DNS SERVERS - JUST AN EXAMPLE
Restart Unbound:
-docker-compose restart unbound-mailcow
+docker compose restart unbound-mailcow
Method B, Override file¶
cd /opt/mailcow-dockerized
-cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.override.yml .
+cp helper-scripts/docker compose.override.yml.d/EXTERNAL_DNS/docker compose.override.yml .
-Edit docker-compose.override.yml
and adjust the IP.
-Run docker-compose down ; docker-compose up -d
.
+Edit docker compose.override.yml
and adjust the IP.
+Run docker compose down ; docker compose up -d
.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2577,7 +2594,7 @@ cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.over
-
+
diff --git a/en/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html b/en/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html
index 40048efd1..1e8c3977a 100644
--- a/en/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html
+++ b/en/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2669,7 +2686,7 @@
Thresholds
-Watchdog uses default values for all thresholds defined in docker-compose.yml
.
+Watchdog uses default values for all thresholds defined in docker compose.yml
.
The default values will work for most setups.
Example:
- NGINX_THRESHOLD=${NGINX_THRESHOLD:-5}
@@ -2691,7 +2708,7 @@ Example:
- MAILQ_THRESHOLD=${MAILQ_THRESHOLD:-20}
- 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 docker compose up -d
.
Thresholds descriptions¶
NGINX_THRESHOLD¶
Notifies administrators if watchdog can not establish a connection to Nginx on port 8081 and it will restart the container automatically when issues were found and the threshold has been reached.
@@ -2733,7 +2750,7 @@ Example:
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2849,7 +2866,7 @@ Example:
Touc
Disable unofficial supported Fido Security Keys¶
With WebAuthn there is the possibility to use only official Fido Security Keys (from the big brands like: Yubico, Apple, Nitro, Google, Huawei, Microsoft, etc.).
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 docker compose up -d
.
The mailcow will now use the Vendor Certificates located in your mailcow directory under data/web/inc/lib/WebAuthn/rootCertificates
.
Example:¶
If you want to limit the official Vendor devices to Apple only you only need the Apple Vendor Certificate inside the data/web/inc/lib/WebAuthn/rootCertificates
.
@@ -2661,7 +2678,7 @@ These vendor certificates are only used to verify original hardware, not to secu
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2777,7 +2794,7 @@ These vendor certificates are only used to verify original hardware, not to secu
-
+
diff --git a/en/manual-guides/u_e-80_to_443/index.html b/en/manual-guides/u_e-80_to_443/index.html
index 88f6bede4..6da204411 100644
--- a/en/manual-guides/u_e-80_to_443/index.html
+++ b/en/manual-guides/u_e-80_to_443/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2388,10 +2405,10 @@
}
In case you changed the HTTP_BIND parameter, recreate the container:
-docker-compose up -d
+docker compose up -d
Otherwise restart Nginx:
-docker-compose restart nginx-mailcow
+docker compose restart nginx-mailcow
@@ -2399,7 +2416,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2515,7 +2532,7 @@
-
+
diff --git a/en/manual-guides/u_e-autodiscover_config/index.html b/en/manual-guides/u_e-autodiscover_config/index.html
index 45274c010..4a1bcee43 100644
--- a/en/manual-guides/u_e-autodiscover_config/index.html
+++ b/en/manual-guides/u_e-autodiscover_config/index.html
@@ -64,6 +64,23 @@
ssl_min_protocol = TLSv1
Restart the affected services:
-docker-compose restart postfix-mailcow dovecot-mailcow
+docker compose restart postfix-mailcow dovecot-mailcow
Hint: You can enable TLS 1.2 in Windows 7.
@@ -2388,7 +2405,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2504,7 +2521,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
-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 restart sogo-mailcow
This is ONLY recommended if you do not have an IPv6 enabled network on your host!
If you really need to, you can disable the usage of IPv6 in the compose file. Additionally, you can also disable the startup of container "ipv6nat-mailcow", as it's not needed if you won't use IPv6.
-Instead of editing docker-compose.yml directly, it is preferable to create an override file for it +
Instead of editing docker compose.yml directly, it is preferable to create an override file for it and implement your changes to the service there. Unfortunately, this right now only seems to work for services, not for network settings.
-To disable IPv6 on the mailcow network, open docker-compose.yml with your favourite text editor and search for the network section (it's near the bottom of the file).
-1. Modify docker-compose.yml
+To disable IPv6 on the mailcow network, open docker compose.yml with your favourite text editor and search for the network section (it's near the bottom of the file).
+1. Modify docker compose.yml
Change enable_ipv6: true
to enable_ipv6: false
:
networks:
mailcow-network:
@@ -2383,10 +2400,10 @@ and implement your changes to the service there. Unfortunately, this right now o
[...]
2. Disable ipv6nat-mailcow
-To disable the ipv6nat-mailcow container as well, go to your mailcow directory and create a new file called "docker-compose.override.yml":
+To disable the ipv6nat-mailcow container as well, go to your mailcow directory and create a new file called "docker compose.override.yml":
NOTE: If you already have an override file, of course don't recreate it, but merge the lines below into your existing one accordingly!
# cd /opt/mailcow-dockerized
-# touch docker-compose.override.yml
+# touch docker compose.override.yml
Open the file in your favourite text editor and fill in the following:
version: '2.1'
@@ -2398,8 +2415,8 @@ services:
entrypoint: ["echo", "ipv6nat disabled in compose.override.yml"]
For these changes to be effective, you need to fully stop and then restart the stack, so containers and networks are recreated:
-docker-compose down
-docker-compose up -d
+docker compose down
+docker compose up -d
3. Disable IPv6 in unbound-mailcow
Edit data/conf/unbound/unbound.conf
and set do-ip6
to "no":
@@ -2409,7 +2426,7 @@ docker-compose up -d
[...]
Restart Unbound:
-docker-compose restart unbound-mailcow
+docker compose restart unbound-mailcow
4. Disable IPv6 in postfix-mailcow
Create data/conf/postfix/extra.cf
and set smtp_address_preference
to ipv4
:
@@ -2417,7 +2434,7 @@ docker-compose up -d
inet_protocols = ipv4
Restart Postfix:
-docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
5. If your docker daemon completly disabled IPv6:
Fix the following NGINX, Dovecot and php-fpm config files
@@ -2433,7 +2450,7 @@ sed -i 's/\[::\]://g' data/conf/phpfpm/php-fpm.d/pools.conf
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2549,7 +2566,7 @@ sed -i 's/\[::\]://g' data/conf/phpfpm/php-fpm.d/pools.conf
Create or modify docker-compose.override.yml
in the mailcow-dockerized base directory:
Create or modify docker compose.override.yml
in the mailcow-dockerized base directory:
version: '2.1'
services:
@@ -2525,7 +2542,7 @@ services:
depends_on:
- rspamd-mailcow
Run docker-compose up -d
Run docker compose up -d
To receive a hidden copy of reports generated by Rspamd you can set a bcc_addrs
list in the reporting
config section of data/conf/rspamd/local.d/dmarc.conf
:
reporting {
@@ -2542,20 +2559,20 @@ services:
Troubleshooting¶
Check when the report schedule last ran:
-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
See the latest report output:
-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
Manually trigger a DMARC report:
-docker-compose exec rspamd-mailcow rspamadm dmarc_report
+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 exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428"
+docker compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428"
Take one of the lines from output you interested in and request it, f.e.:
-docker-compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49
+docker compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49
Change DMARC reporting frequency¶
In the example above reports are sent once every 24 hours.
@@ -2563,13 +2580,13 @@ Take one of the lines from output you interested in and request it, f.e.:
To change schedule:
-
-
Edit docker-compose.override.yml
and a djust ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"
to a desired value, for example to "@midnight"
+Edit docker compose.override.yml
and a djust ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"
to a desired value, for example to "@midnight"
-
-
Run docker-compose up -d
+Run docker compose up -d
-
-
Run docker-compose restart ofelia-mailcow
+Run docker compose restart ofelia-mailcow
Disable DMARC Reporting¶
@@ -2579,10 +2596,10 @@ Take one of the lines from output you interested in and request it, f.e.:
Set enabled
to false
in data/conf/rspamd/local.d/dmarc.conf
-
-
Revert changes done in docker-compose.override.yml
to rspamd-mailcow
and ofelia-mailcow
+Revert changes done in docker compose.override.yml
to rspamd-mailcow
and ofelia-mailcow
-
-
Run docker-compose up -d
+Run docker compose up -d
@@ -2591,7 +2608,7 @@ Take one of the lines from output you interested in and request it, f.e.:
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2707,7 +2724,7 @@ Take one of the lines from output you interested in and request it, f.e.:
-
+
diff --git a/en/post_installation/firststeps-ip_bindings/index.html b/en/post_installation/firststeps-ip_bindings/index.html
index 98aab3c8d..834a22426 100644
--- a/en/post_installation/firststeps-ip_bindings/index.html
+++ b/en/post_installation/firststeps-ip_bindings/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2463,11 +2480,11 @@ DOVEADM_PORT=127.0.0.1:19991
SQL_PORT=127.0.0.1:13306
SOLR_PORT=127.0.0.1:18983
-To apply your changes, run docker-compose down
followed by docker-compose up -d
.
+To apply your changes, run docker compose down
followed by docker compose up -d
.
IPv6 binding¶
Changing IPv6 bindings is different from IPv4. Again, this has a technical background.
-A docker-compose.override.yml
file will be used instead of editing the docker-compose.yml
file directly. This is to maintain updatability, as the docker-compose.yml
file gets updated regularly and your changes will most likely be overwritten.
-Edit to create a file docker-compose.override.yml
with the following content. Its content will be merged with the productive docker-compose.yml
file.
+A docker compose.override.yml
file will be used instead of editing the docker compose.yml
file directly. This is to maintain updatability, as the docker compose.yml
file gets updated regularly and your changes will most likely be overwritten.
+Edit to create a file docker compose.override.yml
with the following content. Its content will be merged with the productive docker compose.yml
file.
An example IPv6 2001:db8:dead:beef::123 is given. The first suffix :PORT1
defines the external port, while the second suffix :PORT2
routes to the corresponding port inside the container and must not be changed.
version: '2.1'
services:
@@ -2491,14 +2508,14 @@ services:
- '[2001:db8:dead:beef::123]:80:80'
- '[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 docker compose down
followed by docker compose up -d
.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2614,7 +2631,7 @@ services:
-
+
diff --git a/en/post_installation/firststeps-local_mta/index.html b/en/post_installation/firststeps-local_mta/index.html
index 3b47576f0..3e132e307 100644
--- a/en/post_installation/firststeps-local_mta/index.html
+++ b/en/post_installation/firststeps-local_mta/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2505,7 +2522,7 @@ Relaying over this interface is necessary (instead of - for example - relaying d
-
+
diff --git a/en/post_installation/firststeps-logging/index.html b/en/post_installation/firststeps-logging/index.html
index 5e2036f1f..ec3976aa0 100644
--- a/en/post_installation/firststeps-logging/index.html
+++ b/en/post_installation/firststeps-logging/index.html
@@ -69,6 +69,23 @@
Logging in mailcow: dockerized consists of multiple stages, but is, after all, much more flexible and easier to integrate into a logging daemon than before.
In Docker the containerized application (PID 1) writes its output to stdout. For real one-application containers this works just fine.
-Run docker-compose logs --help
to learn more.
docker compose logs --help
to learn more.
Some containers log or stream to multiple destinations.
No container will keep persistent logs in it. Containers are transient items!
In the end, every line of logs will reach the Docker daemon - unfiltered.
@@ -2526,9 +2543,9 @@ Rundocker-compose logs --help
to learn more.
the ability to read logs from the UI or ban suspicious clients with netfilter-mailcow.
Redis keys will only hold logs from applications and filter out system messages (think of cron etc.).
Here is the good news: Since Docker has some great logging drivers, you can integrate mailcow: dockerized into your existing logging environment with ease.
-Create a docker-compose.override.yml
and add, for example, this block to use the "gelf" logging plugin for postfix-mailcow
:
Create a docker compose.override.yml
and add, for example, this block to use the "gelf" logging plugin for postfix-mailcow
:
version: '2.1'
services:
postfix-mailcow: # or any other
@@ -2594,7 +2611,7 @@ input(type="imudp" port="514")
...
}
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 docker compose down && docker compose up -d
to recreate the containers with the new logging driver.
As those logs can get quite big, it is a good idea to use logrotate to compress and delete them after a certain time period.
Create /etc/logrotate.d/mailcow
with the following content:
This will also change the bindings inside the Nginx container! This is important, if you decide to use a proxy within Docker.
IMPORTANT: Do not use port 8081, 9081 or 65510!
-Recreate affected containers by running docker-compose up -d
.
Recreate affected containers by running docker compose up -d
.
Important information, please read them carefully!
Info
@@ -2648,8 +2665,8 @@ backend mailcowImportant: This config only covers the "reverseproxing" of the webpannel (nginx-mailcow) using Traefik v2, if you also want to reverseproxy the mail services such as dovecot, postfix... you'll just need to adapt the following config to each container and create an EntryPoint on your traefik.toml
or traefik.yml
(depending which config you use) for each port.
For this section we'll assume you have your Traefik 2 [certificatesresolvers]
properly configured on your traefik configuration file, and also using acme, also, the following example uses Lets Encrypt, but feel free to change it to your own cert resolver. You can find a basic Traefik 2 toml config file with all the above implemented which can be used for this example here traefik.toml if you need one, or a hint on how to adapt your config.
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.
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.
SKIP_LETS_ENCRYPT=y
on our mailcow.conf
, and run docker compose up -d
to apply the changes.
+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.
version: '2.1'
services:
@@ -2681,7 +2698,7 @@ For this we'll have to set SKIP_LETS_ENCRYPT=y
on our mailcow
network_mode: none
volumes:
# mount the folder which contains Traefik's `acme.json' file
- # in this case Traefik is started from its own docker-compose in ../traefik
+ # in this case Traefik is started from its own docker compose in ../traefik
- ../traefik/data:/traefik:ro
# mount mailcow's SSL folder
- ./data/assets/ssl/:/output:rw
@@ -2694,10 +2711,10 @@ For this we'll have to set SKIP_LETS_ENCRYPT=y
on our mailcow
web:
external: true
Start the new containers with docker-compose up -d
.
Start the new containers with 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 which grabs the acme.json
file trough a volume, and a variable DOMAIN=example.org
, and with these, the container will output the cert.pem
and key.pem
files, for this we'll simply run the traefik-certs-dumper
container binding the /traefik
volume to the folder where our acme.json
is saved, bind the /output
volume to our mailcow data/assets/ssl/
folder, and set up the DOMAIN=example.org
variable to the domain we want the certs dumped from.
This container will watch over the acme.json
file for any changes, and regenerate the cert.pem
and key.pem
files directly into data/assets/ssl/
being the path binded to the container's /output
path.
You can use the command line to run it, or use the docker-compose shown here.
+You can use the command line to run it, or use the docker compose shown here.
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.
Aaand that should be it 😊, you can check if the Traefik router works fine trough Traefik's dashboard / traefik logs / accessing the setted domain trough https, or / and check HTTPS, SMTP and IMAP trough the commands shown on the page linked before.
If you plan to use a server name that is not MAILCOW_HOSTNAME
in your reverse proxy, make sure to populate that name in mailcow.conf via ADDITIONAL_SERVER_NAMES
first. Names must be separated by commas and must not contain spaces. If you skip this step, mailcow may respond to your reverse proxy with an incorrect site.
ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
Run docker-compose up -d
to apply.
Run docker compose up -d
to apply.
Run docker-compose up -d
.
Run docker compose up -d
.
The values are read by netfilter-mailcow. netfilter-mailcow will make sure, the post-routing rules are on position 1 in the netfilter table. It does automatically delete and re-create them if they are found on another position than 1.
-Check the output of docker-compose logs --tail=200 netfilter-mailcow
to ensure the SNAT settings have been applied.
Check the output of docker compose logs --tail=200 netfilter-mailcow
to ensure the SNAT settings have been applied.
For each domain you add, it will try to resolve autodiscover.ADDED_MAIL_DOMAIN
and autoconfig.ADDED_MAIL_DOMAIN
to its IPv6 address or - if IPv6 is not configured in your domain - IPv4 address. If it succeeds, a name will be added as SAN to the certificate request.
Only names that can be validated, will be added as SAN.
For every domain you remove, the certificate will be moved and a new certificate will be requested. It is not possible to keep domains in a certificate, when we are not able validate the challenge for those.
-If you want to re-run the ACME client, use docker-compose restart acme-mailcow
and monitor its logs with docker-compose logs --tail=200 -f acme-mailcow
.
If you want to re-run the ACME client, use docker compose restart acme-mailcow
and monitor its logs with docker compose logs --tail=200 -f acme-mailcow
.
Edit "mailcow.conf" and add a parameter ADDITIONAL_SAN
like this:
Do not use quotes ("
) and do not use spaces between the names!
Each name will be validated against its IPv6 address or - if IPv6 is not configured in your domain - IPv4 address.
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 docker compose up -d
to recreate affected containers automatically.
Info
Using names other name MAILCOW_HOSTNAME
to access the mailcow UI may need further configuration.
If you plan to use a server name that is not MAILCOW_HOSTNAME
to access the mailcow UI (for example by adding mail.*
to ADDITIONAL_SAN
make sure to populate that name in mailcow.conf via ADDITIONAL_SERVER_NAMES
. Names must be separated by commas and must not contain spaces. If you skip this step, mailcow may respond with an incorrect site.
ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
Run docker-compose up -d
to apply.
Run docker compose up -d
to apply.
To force a renewal, you need to create a file named force_renew
and restart the acme-mailcow
container:
cd /opt/mailcow-dockerized
touch data/assets/ssl/force_renew
-docker-compose restart acme-mailcow
+docker compose restart acme-mailcow
# Now check the logs for a renewal
-docker-compose logs --tail=200 -f acme-mailcow
+docker compose logs --tail=200 -f acme-mailcow
The file will be deleted automatically.
You can skip the IP verification by setting SKIP_IP_CHECK=y
in mailcow.conf (no quotes). Be warned that a misconfiguration will get you ratelimited by Let's Encrypt! This is primarily useful for multi-IP setups where the IP check would return the incorrect source IP address. Due to using dynamic IPs for acme-mailcow, source NAT is not consistent over restarts.
If you encounter problems with "HTTP validation", but your IP address confirmation succeeds, you are most likely using firewalld, ufw or any other firewall, that disallows connections from br-mailcow
to your external interface. Both firewalld and ufw disallow this by default. It is often not enough to just stop these firewall services. You'd need to stop mailcow (docker-compose down
), stop the firewall service, flush the chains and restart Docker.
If you encounter problems with "HTTP validation", but your IP address confirmation succeeds, you are most likely using firewalld, ufw or any other firewall, that disallows connections from br-mailcow
to your external interface. Both firewalld and ufw disallow this by default. It is often not enough to just stop these firewall services. You'd need to stop mailcow (docker compose down
), stop the firewall service, flush the chains and restart Docker.
You can also skip this validation method by setting SKIP_HTTP_VERIFICATION=y
in "mailcow.conf". Be warned that this is discouraged. In most cases, the HTTP verification is skipped to workaround unknown NAT reflection issues, which are not resolved by ignoring this specific network misconfiguration. If you encounter problems generating TLSA records in the DNS overview within mailcow, you are most likely having issues with NAT reflection you should fix.
If you changed a SKIP_* parameter, run docker-compose up -d
to apply your changes.
If you changed a SKIP_* parameter, run docker compose up -d
to apply your changes.
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" by running docker compose up -d
.
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" by running docker compose up -d
.
Let's Encrypt currently has a limit of 100 Domain Names per Certificate.
By default, "acme-mailcow" will create a single SAN certificate for all validated domains @@ -2653,7 +2670,7 @@ This provides best compatibility but means the Let's Encrypt limit exceeds if yo
ADDITIONAL_SAN=test.example.com
will be added as SAN to the main certificate. A separate certificate/key pair will not be generated for this format.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" by running docker compose up -d
.
Warning
Not all clients support SNI, see Dovecot documentation or Wikipedia. @@ -2683,15 +2700,15 @@ docker restart $(docker ps -qaf name=dovecot-mailcow)
See Post-hook script for non-mailcow ACME clients for a full example script.
Edit mailcow.conf
and add LE_STAGING=y
.
Run docker-compose up -d
to activate your changes.
Run docker compose up -d
to activate your changes.
Edit mailcow.conf
and add the corresponding directory URL to the new variable DIRECTORY_URL
:
DIRECTORY_URL=https://acme-custom-v9000.api.letsencrypt.org/directory
You cannot use LE_STAGING
with DIRECTORY_URL
. If both are set, only LE_STAGING
is used.
Run docker-compose up -d
to activate your changes.
Run docker compose up -d
to activate your changes.
Run docker-compose logs acme-mailcow
to find out why a validation fails.
Run docker compose logs acme-mailcow
to find out why a validation fails.
To check if nginx serves the correct certificate, simply use a browser of your choice and check the displayed certificate.
To check the certificate served by Postfix, Dovecot and Nginx we will use openssl
:
# Connect via SMTP (587)
@@ -2711,7 +2728,7 @@ bash helper-scripts/expiry-dates.sh
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2827,7 +2844,7 @@ bash helper-scripts/expiry-dates.sh
Reboot or restart the interface. You may want to disable cloud-init network changes.
Especially relevant for OpenStack users: Check your MTU and set it accordingly in docker-compose.yml. See 4.1 in our installation docs.
+Especially relevant for OpenStack users: Check your MTU and set it accordingly in docker compose.yml. See 4.1 in our installation docs.
docker-compose.override.yml
¶In the mailcow-dockerized root folder create or edit docker-compose.override.yml
and insert the following
+
docker compose.override.yml
¶In the mailcow-dockerized root folder create or edit docker compose.override.yml
and insert the following
configuration:
version: '2.1'
@@ -2798,13 +2815,13 @@ usual id_rsa
, id_ed25519
or similar to be in this dire
or OpenSSH will refuse to use the SSH key.
Bring up the container¶
For the next step we need the container to be up and running in a configured state. To do that run:
-docker-compose up -d
+docker compose up -d
Initialize the repository¶
By now your borgmatic container is up and running, but the backups will currently fail due to the repository not being
initialized.
To initialize the repository run:
-docker-compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2
+docker compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2
You will be asked you to authenticate the SSH host key of your remote repository server. See if it matches and confirm
the prompt by entering yes
. The repository will be initialized with the passphrase you set in the BORG_PASSPHRASE
@@ -2816,7 +2833,7 @@ for how to retrieve the key.
Restart container¶
Now that we finished configuring and initializing the repository restart the container to ensure it is in a defined
state:
-docker-compose restart borgmatic-mailcow
+docker compose restart borgmatic-mailcow
Restoring from a backup¶
Restoring a backup assumes you are starting off with a fresh installation of mailcow, and you currently do not have
@@ -2834,10 +2851,10 @@ extraction of the archive as the mailcow setup labels the vmail volume as privat
exclusively. SELinux will (rightfully) prevent any other container, such as the borgmatic container, from writing to
this volume.
-Before running a restore you must make the vmail volume writeable in docker-compose.override.yml
by removing
+
Before running a restore you must make the vmail volume writeable in docker compose.override.yml
by removing
the ro
flag from the volume.
Then you can use the following command to restore the maildir from a backup:
-docker-compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest
+docker compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest
Alternatively you can specify any archive name from the list of archives (see
Listing all available archives)
@@ -2848,7 +2865,7 @@ Then you can use the following command to restore the maildir from a backup:
intend to recover the mailcow database from a backup.
To restore the MySQL database from the latest archive use this command:
-docker-compose exec borgmatic-mailcow borgmatic restore --archive latest
+docker compose exec borgmatic-mailcow borgmatic restore --archive latest
Alternatively you can specify any archive name from the list of archives (see
Listing all available archives)
@@ -2856,21 +2873,21 @@ intend to recover the mailcow database from a backup.
After restoring you need to restart mailcow. If you disabled SELinux enforcing mode now would be a good time to
re-enable it.
To restart mailcow use the follwing command:
-docker-compose down && docker-compose up -d
+docker compose down && docker compose up -d
If you use SELinux this will also trigger the re-labeling of all files in your vmail volume. Be patient, as this may
take a while if you have lots of files.
Useful commands¶
Manual archiving run (with debugging output)¶
-docker-compose exec borgmatic-mailcow borgmatic -v 2
+docker compose exec borgmatic-mailcow borgmatic -v 2
Listing all available archives¶
-docker-compose exec borgmatic-mailcow borgmatic list
+docker compose exec borgmatic-mailcow borgmatic list
Break lock¶
When borg is interrupted during an archiving run it will leave behind a stale lock that needs to be cleared before any
new operations can be performed:
-docker-compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow
+docker compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow
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.
@@ -2880,7 +2897,7 @@ key files are generated when you initialize the repository. The repokey
Note that in either case you also must have the passphrase to decrypt any archives.
To fetch the keyfile run:
-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
Where user@rsync.net:mailcow
is the URI to your repository.
@@ -2889,7 +2906,7 @@ repository, so a manual backup isn't as essential.
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -3005,7 +3022,7 @@ repository, so a manual backup isn't as essential.
-
+
diff --git a/en/third_party/checkmk/u_e-checkmk/index.html b/en/third_party/checkmk/u_e-checkmk/index.html
index 066537d49..181707c65 100644
--- a/en/third_party/checkmk/u_e-checkmk/index.html
+++ b/en/third_party/checkmk/u_e-checkmk/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2627,7 +2644,7 @@ exit
-
+
diff --git a/en/third_party/exchange_onprem/third_party-exchange_onprem/index.html b/en/third_party/exchange_onprem/third_party-exchange_onprem/index.html
index 26bcbd132..81f49c0f3 100644
--- a/en/third_party/exchange_onprem/third_party-exchange_onprem/index.html
+++ b/en/third_party/exchange_onprem/third_party-exchange_onprem/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2648,7 +2665,7 @@
-
+
diff --git a/en/third_party/gitea/third_party-gitea/index.html b/en/third_party/gitea/third_party-gitea/index.html
index ecb6a8612..226171f5c 100644
--- a/en/third_party/gitea/third_party-gitea/index.html
+++ b/en/third_party/gitea/third_party-gitea/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2369,7 +2386,7 @@
Gitea
With Gitea' ability to authenticate over SMTP it is trivial to integrate it with mailcow. Few changes are needed:
-1. Open docker-compose.override.yml
and add gitea:
+1. Open docker compose.override.yml
and add gitea:
version: '2.1'
services:
@@ -2392,8 +2409,8 @@ services:
3. Open mailcow.conf
and define the binding you want gitea to use for SSH. Example:
GITEA_SSH_PORT=127.0.0.1:4000
-5. Run docker-compose up -d
to bring up the gitea container and run docker-compose restart nginx-mailcow
afterwards.
-6. If you forced mailcow to https, execute step 9 and restart gitea with docker-compose restart gitea-mailcow
. Go head with step 7 (Remember to use https instead of http, https://mx.example.org/gitea/
+5. Run docker compose up -d
to bring up the gitea container and run docker compose restart nginx-mailcow
afterwards.
+6. If you forced mailcow to https, execute step 9 and restart gitea with docker compose restart gitea-mailcow
. Go head with step 7 (Remember to use https instead of http, https://mx.example.org/gitea/
7. Open http://${MAILCOW_HOSTNAME}/gitea/
, for example http://mx.example.org/gitea/
. For database details set mysql
as database host. Use the value of DBNAME found in mailcow.conf as database name, DBUSER as database user and DBPASS as database password.
8. Once the installation is complete, login as admin and set "settings" -> "authorization" -> "enable SMTP". SMTP Host should be postfix
with port 587
, set Skip TLS Verify
as we are using an unlisted SAN ("postfix" is most likely not part of your certificate).
9. Create data/gitea/gitea/conf/app.ini
and set following values. You can consult gitea cheat sheet for their meaning and other possible values.
@@ -2405,14 +2422,14 @@ SSH_PORT = 4000
# For MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (and default ports for HTTPS), set:
ROOT_URL = https://mx.example.org/gitea/
-10. Restart gitea with docker-compose restart gitea-mailcow
. Your users should be able to login with mailcow managed accounts.
+10. Restart gitea with docker compose restart gitea-mailcow
. Your users should be able to login with mailcow managed accounts.
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -2528,7 +2545,7 @@ ROOT_URL = https://mx.example.org/gitea/
-
+
diff --git a/en/third_party/gogs/third_party-gogs/index.html b/en/third_party/gogs/third_party-gogs/index.html
index a5f15bc1a..24b742e96 100644
--- a/en/third_party/gogs/third_party-gogs/index.html
+++ b/en/third_party/gogs/third_party-gogs/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2369,7 +2386,7 @@
Gogs
With Gogs' ability to authenticate over SMTP it is trivial to integrate it with mailcow. Few changes are needed:
-1. Open docker-compose.override.yml
and add Gogs:
+1. Open docker compose.override.yml
and add Gogs:
version: '2.1'
services:
@@ -2392,7 +2409,7 @@ services:
3. Open mailcow.conf
and define the binding you want Gogs to use for SSH. Example:
GOGS_SSH_PORT=127.0.0.1:4000
-5. Run docker-compose up -d
to bring up the Gogs container and run docker-compose restart nginx-mailcow
afterwards.
+5. Run docker compose up -d
to bring up the Gogs container and run docker compose restart nginx-mailcow
afterwards.
6. Open http://${MAILCOW_HOSTNAME}/gogs/
, for example http://mx.example.org/gogs/
. For database details set mysql
as database host. Use the value of DBNAME found in mailcow.conf as database name, DBUSER as database user and DBPASS as database password.
7. Once the installation is complete, login as admin and set "settings" -> "authorization" -> "enable SMTP". SMTP Host should be postfix
with port 587
, set Skip TLS Verify
as we are using an unlisted SAN ("postfix" is most likely not part of your certificate).
8. Create data/gogs/gogs/conf/app.ini
and set following values. You can consult Gogs cheat sheet for their meaning and other possible values.
@@ -2404,14 +2421,14 @@ SSH_PORT = 4000
# For MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (and default ports for HTTPS), set:
ROOT_URL = https://mx.example.org/gogs/
-9. Restart Gogs with docker-compose restart gogs-mailcow
. Your users should be able to login with mailcow managed accounts.
+9. Restart Gogs with docker compose restart gogs-mailcow
. Your users should be able to login with mailcow managed accounts.
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -2527,7 +2544,7 @@ ROOT_URL = https://mx.example.org/gogs/
-
+
diff --git a/en/third_party/mailman3/third_party-mailman3/index.html b/en/third_party/mailman3/third_party-mailman3/index.html
index beae9199c..6502a2d64 100644
--- a/en/third_party/mailman3/third_party-mailman3/index.html
+++ b/en/third_party/mailman3/third_party-mailman3/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2837,7 +2854,7 @@ certbot certonly -d MAILMAN_DOMAIN
Follow the mailcow installation. Omit step 5 and do not pull and up with docker-compose
!
Follow the mailcow installation. Omit step 5 and do not pull and up with docker compose
!
This is also Step 4 in the official mailcow installation (nano mailcow.conf
). So change to your needs and alter the following variables:
HTTP_PORT=18080 # don't use 8080 as mailman needs it
@@ -2851,7 +2868,7 @@ SNAT_TO_SOURCE=1.2.3.4 # change this to your IPv4
SNAT6_TO_SOURCE=dead:beef # change this to your global IPv6
Create the file /opt/mailcow-dockerized/docker-compose.override.yml
(e.g. with nano
) and add the following lines:
Create the file /opt/mailcow-dockerized/docker compose.override.yml
(e.g. with nano
) and add the following lines:
version: '2.1'
services:
@@ -2921,7 +2938,7 @@ cd docker-mailman
Create a long key for Hyperkitty, e.g. with the linux command cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo
. Save this key for a moment as HYPERKITTY_KEY.
Create a long password for the database, e.g. with the linux command cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo
. Save this password for a moment as DBPASS.
Create a long key for Django, e.g. with the linux command cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo
. Save this key for a moment as DJANGO_KEY.
-Create the file /opt/docker-mailman/docker-compose.override.yaml
and replace HYPERKITTY_KEY
, DBPASS
and DJANGO_KEY
with the generated values:
+Create the file /opt/docker-mailman/docker compose.override.yaml
and replace HYPERKITTY_KEY
, DBPASS
and DJANGO_KEY
with the generated values:
version: '2'
services:
@@ -2980,11 +2997,11 @@ a2ensite mailman.conf
systemctl restart apache2
cd /opt/docker-mailman
-docker-compose pull
-docker-compose up -d
+docker compose pull
+docker compose up -d
cd /opt/mailcow-dockerized/
-docker-compose pull
+docker compose pull
./renew-ssl.sh
Wait a few minutes! The containers have to create there databases and config files. This can last up to 1 minute and more.
@@ -2992,7 +3009,7 @@ docker-compose pull
New lists aren't recognized by postfix instantly¶
When you create a new list and try to immediately send an e-mail, postfix responses with User doesn't exist
, because postfix won't deliver it to Mailman yet. The configuration at /opt/mailman/core/var/data/postfix_lmtp
is not instantly updated. If you need the list instantly, restart postifx manually:
cd /opt/mailcow-dockerized
-docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
Update¶
mailcow has it's own update script in /opt/mailcow-dockerized/update.sh
, see the docs.
@@ -3014,7 +3031,7 @@ docker-compose restart postfix-mailcow
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -3130,7 +3147,7 @@ docker-compose restart postfix-mailcow
Nextcloud can be set up (parameter -i
) and removed (parameter -p
) with the helper script included with mailcow. In order to install Nextcloud simply navigate to your mailcow-dockerized root folder and run the helper script as follows:
./helper-scripts/nextcloud.sh -i
In case you have forgotten the password (e.g. for admin) and can't request a new one via the password reset link on the login screen calling the helper script with -r
as parameter allows you to set a new password. Only use this option if your Nextcloud isn't configured to use mailcow for authentication as described in the next section.
In order for mailcow to generate a a certificate for the nextcloud domain you need to add "nextcloud.domain.tld" to ADDITIONAL_SAN in mailcow.conf and run docker-compose up -d
to apply. For more informaton refer to: Advanced SSL.
In order for mailcow to generate a a certificate for the nextcloud domain you need to add "nextcloud.domain.tld" to ADDITIONAL_SAN in mailcow.conf and run docker compose up -d
to apply. For more informaton refer to: Advanced SSL.
To use the recommended setting (cron) to execute the background jobs following lines need to be added to the docker-compose.override.yml
:
To use the recommended setting (cron) to execute the background jobs following lines need to be added to the docker compose.override.yml
:
version: '2.1'
services:
php-fpm-mailcow:
@@ -2488,9 +2505,9 @@ services:
ofelia.job-exec.nextcloud-cron.schedule: "@every 5m"
ofelia.job-exec.nextcloud-cron.command: "su www-data -s /bin/bash -c \"/usr/local/bin/php -f /web/nextcloud/cron.php\""
After adding these lines the docker-compose up -d
command must be executed to update the docker image and also the docker scheduler image must be restarted to
- pick up the new job definition by executing docker-compose restart ofelia-mailcow
. To check if the job was successfully picked up by ofelia
the command
- docker-compose logs ofelia-mailcow
will contain a line similar to New job registered "nextcloud-cron" - ...
.
After adding these lines the docker compose up -d
command must be executed to update the docker image and also the docker scheduler image must be restarted to
+ pick up the new job definition by executing docker compose restart ofelia-mailcow
. To check if the job was successfully picked up by ofelia
the command
+ docker compose logs ofelia-mailcow
will contain a line similar to New job registered "nextcloud-cron" - ...
.
By adding these lines the background jobs will be executed every 5 minutes. To verify that the execution works correctly, the only way is to see it in the basic
settings when logged in as an admin in Nextcloud. If everything is correct the first scheduled execution will change the background jobs processing setting to
(X) Cron
and the timestamp after Last job ran
will be updated every 5 minutes.
If you have previously used Nextcloud with mailcow authentication via user_external/IMAP, you need to perform some additional steps to link your existing user accounts with OAuth2.
1. Click the button in the top right corner and select Apps. Scroll down to the External user authentication app and click Remove next to it.
-2. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
):
+2. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
):
INSERT INTO nc_users (uid, uid_lower) SELECT DISTINCT uid, LOWER(uid) FROM nc_users_external;
INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users_external;
If you have previously used Nextcloud without mailcow authentication, but with the same usernames as mailcow, you can also link your existing user accounts with OAuth2.
-1. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
):
+
1. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
):
INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users;
After the changes have been made, the nginx container must be restarted.
-docker-compose restart nginx-mailcow
docker compose restart nginx-mailcow
In order to enable Portainer, the docker-compose.yml and site.conf for Nginx must be modified.
-1. Create a new file docker-compose.override.yml
in the mailcow-dockerized root folder and insert the following configuration
+
In order to enable Portainer, the docker compose.yml and site.conf for Nginx must be modified.
+1. Create a new file docker compose.override.yml
in the mailcow-dockerized root folder and insert the following configuration
version: '2.1'
services:
portainer-mailcow:
@@ -2418,7 +2435,7 @@ map $http_upgrade $connection_upgrade {
}
3. Apply your changes: -
docker-compose up -d && docker-compose restart nginx-mailcow
+docker compose up -d && docker compose restart nginx-mailcow
Now you can simply navigate to https://${MAILCOW_HOSTNAME}/portainer/ to view your Portainer container monitoring page. You’ll then be prompted to specify a new password for the admin account. After specifying your password, you’ll then be able to connect to the Portainer UI.
@@ -2427,7 +2444,7 @@ map $http_upgrade $connection_upgrade {
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -2543,7 +2560,7 @@ map $http_upgrade $connection_upgrade {
Edit docker-compose.override.yml
and crate/extend the section for php-fpm-mailcow
:
Edit docker compose.override.yml
and crate/extend the section for php-fpm-mailcow
:
version: '2.1'
services:
php-fpm-mailcow:
@@ -2676,8 +2693,8 @@ services:
data/web/rc-auth.php
Finally, restart mailcow
-docker-compose down
-docker-compose up -d
+docker compose down
+docker compose up -d
@@ -2685,7 +2702,7 @@ docker-compose up -d
Last update:
- 2022-08-02 19:01:54
+ 2022-08-31 14:45:46
@@ -2786,7 +2803,7 @@ docker-compose up -d
-
+
diff --git a/en/troubleshooting/debug-admin_login_sogo/index.html b/en/troubleshooting/debug-admin_login_sogo/index.html
index eac300ad4..c0f9c0c2a 100644
--- a/en/troubleshooting/debug-admin_login_sogo/index.html
+++ b/en/troubleshooting/debug-admin_login_sogo/index.html
@@ -69,6 +69,23 @@
ALLOW_ADMIN_EMAIL_LOGIN=y
docker-compose up -d
+docker compose up -d
Drawbacks when enabled¶
@@ -2488,7 +2505,7 @@ In most cases, this should not be noticeable but should be kept in mind if you f
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2604,7 +2621,7 @@ In most cases, this should not be noticeable but should be kept in mind if you f
To attach a container to your shell you can simply run
-docker-compose exec $Service_Name /bin/bash
+docker compose exec $Service_Name /bin/bash
Connecting to Services¶
If you want to connect to a service / application directly it is always a good idea to source mailcow.conf
to get all relevant variables into your environment.
MySQL¶
source mailcow.conf
-docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
+docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
Redis¶
-docker-compose exec redis-mailcow redis-cli
+docker compose exec redis-mailcow redis-cli
Service Descriptions¶
Here is a brief overview of what container / service does what:
@@ -2592,7 +2609,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2708,7 +2725,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
-
+
diff --git a/en/troubleshooting/debug-common_problems/index.html b/en/troubleshooting/debug-common_problems/index.html
index 265b8006e..3bf37591e 100644
--- a/en/troubleshooting/debug-common_problems/index.html
+++ b/en/troubleshooting/debug-common_problems/index.html
@@ -69,6 +69,23 @@
Please read our guide on DNS configuration.
-... like:
ERROR: Invalid interpolation format ...
AttributeError: 'NoneType' object has no attribute 'keys'
.ERROR: In file './docker-compose.yml' service 'version' doesn't have any configuration options
.ERROR: In file './docker compose.yml' service 'version' doesn't have any configuration options
.When you encounter one or similar messages while trying to run mailcow: dockerized please check if you have the latest version of Docker and docker-compose
+When you encounter one or similar messages while trying to run mailcow: dockerized please check if you have the latest version of Docker and docker compose
This error tries to tell you that one of the (health) conditions for a certain container are not met. Therefore it can't be started. This can have several reasons, the most common one is an updated git clone but old docker image or vice versa.
A wrong configured firewall could also cause such a failure. The containers need to be able to talk to each other over the network 172.22.1.1/24.
@@ -2596,7 +2613,7 @@ key.pem Last update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2712,7 +2729,7 @@ key.pem - + diff --git a/en/troubleshooting/debug-logs/index.html b/en/troubleshooting/debug-logs/index.html index 35d9debe1..81f7fa3cc 100644 --- a/en/troubleshooting/debug-logs/index.html +++ b/en/troubleshooting/debug-logs/index.html @@ -64,6 +64,23 @@Warning
This section only applies for Dockers default logging driver (JSON).
-To view the logs of all mailcow: dockerized related containers, you can use docker-compose logs
inside your mailcow-dockerized folder that contains your mailcow.conf
. This is usually a bit much, but you could trim the output with --tail=100
to the last 100 lines per container, or add a -f
to follow the live output of all your services.
To view the logs of a specific service you can use docker-compose logs [options] $service_name
To view the logs of all mailcow: dockerized related containers, you can use docker compose logs
inside your mailcow-dockerized folder that contains your mailcow.conf
. This is usually a bit much, but you could trim the output with --tail=100
to the last 100 lines per container, or add a -f
to follow the live output of all your services.
To view the logs of a specific service you can use docker compose logs [options] $service_name
Info
-The available options for the command docker-compose logs are:
+The available options for the command docker compose logs are:
If your server crashed and MariaDB logs an error similar to [ERROR] mysqld: Aria recovery failed. Please run aria_chk -r on all Aria tables (*.MAI) and delete all aria_log.######## files
you may want to try the following to recover the database to a healthy state:
Start the stack and wait until mysql-mailcow begins to report a restarting state. Check by running docker-compose ps
.
Start the stack and wait until mysql-mailcow begins to report a restarting state. Check by running docker compose ps
.
Now run the following commands:
# Stop the stack, don't run "down"
-docker-compose stop
+docker compose stop
# Run a bash in the stopped container as user mysql
-docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql bash"' mysql-mailcow
+docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql bash"' mysql-mailcow
# cd to the SQL data directory
cd /var/lib/mysql
# Run aria_chk
@@ -2432,14 +2449,14 @@ aria_chk --check --force */*.MAI
# Delete aria log files
rm aria_log.*
Now run docker-compose down
followed by docker-compose up -d
.
Now run docker compose down
followed by docker compose up -d
.
This step is usually not necessary.
-docker-compose stop mysql-mailcow watchdog-mailcow
-docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && bash && exit 0"' mysql-mailcow
+docker compose stop mysql-mailcow watchdog-mailcow
+docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && bash && exit 0"' mysql-mailcow
As soon as the SQL shell spawned, run mysql_upgrade
and exit the container:
mysql_upgrade
@@ -2432,7 +2449,7 @@ exit
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2548,7 +2565,7 @@ exit
-
+
diff --git a/en/troubleshooting/debug-reset_pw/index.html b/en/troubleshooting/debug-reset_pw/index.html
index b19e7d47e..46bf04150 100644
--- a/en/troubleshooting/debug-reset_pw/index.html
+++ b/en/troubleshooting/debug-reset_pw/index.html
@@ -69,6 +69,23 @@
Stop the stack by running docker-compose stop
.
Stop the stack by running docker compose stop
.
When the containers came to a stop, run this command:
-docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && mysql -hlocalhost -uroot && exit 0"' mysql-mailcow
+docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && mysql -hlocalhost -uroot && exit 0"' mysql-mailcow
1. Find database name¶
# source mailcow.conf
-# docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
+# docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
MariaDB [(none)]> show databases;
+--------------------+
| Database |
@@ -2626,10 +2643,10 @@ MariaDB [(none)]> FLUSH PRIVILEGES;
For mailcow WebUI:¶
This works similar to resetting a MySQL password, now we do it from the host without connecting to the MySQL CLI:
source mailcow.conf
-docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='YOUR_USERNAME';"
+docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='YOUR_USERNAME';"
For SOGo:¶
-docker-compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled '{"SOGoGoogleAuthenticatorEnabled":0}'
+docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled '{"SOGoGoogleAuthenticatorEnabled":0}'
@@ -2637,7 +2654,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e &qu
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2753,7 +2770,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e &qu
-
+
diff --git a/en/troubleshooting/debug-reset_tls/index.html b/en/troubleshooting/debug-reset_tls/index.html
index 4efe3e552..649b1d6ec 100644
--- a/en/troubleshooting/debug-reset_tls/index.html
+++ b/en/troubleshooting/debug-reset_tls/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2370,12 +2387,12 @@
In case you encounter problems with your certificate, key or Let's Encrypt account, please try to reset the TLS assets:
source mailcow.conf
-docker-compose down
+docker compose down
rm -rf data/assets/ssl
mkdir data/assets/ssl
openssl req -x509 -newkey rsa:4096 -keyout data/assets/ssl-example/key.pem -out data/assets/ssl-example/cert.pem -days 365 -subj "/C=DE/ST=NRW/L=Willich/O=mailcow/OU=mailcow/CN=${MAILCOW_HOSTNAME}" -sha256 -nodes
cp -n -d data/assets/ssl-example/*.pem data/assets/ssl/
-docker-compose up -d
+docker compose up -d
This will stop mailcow, source the variables we need, create a self-signed certificate and start mailcow.
If you use Let's Encrypt you should be careful as you will create a new account and a new set of certificates. You will run into a ratelimit sooner or later.
@@ -2386,7 +2403,7 @@ docker-compose up -d
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2502,7 +2519,7 @@ docker-compose up -d
rspamd-vol-1
to remove all Rspamd data.crypt-vol-1
to remove all crypto data. This will render all mails unreadable.Alternatively, running docker-compose down -v
will destroy all mailcow: dockerized volumes and delete any related containers and networks.
Alternatively, running docker compose down -v
will destroy all mailcow: dockerized volumes and delete any related containers and networks.
A quick guide to deeply analyze a malfunctioning Rspamd.
-docker-compose exec rspamd-mailcow bash
+docker compose exec rspamd-mailcow bash
if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then
sed -i 's/apt-stable/apt-stable-asan/i' /etc/apt/sources.list.d/rspamd.list
@@ -2384,17 +2401,17 @@ nano /docker-entrypoint.sh
export G_SLICE=always-malloc
export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0
-Restart Rspamd: docker-compose restart rspamd-mailcow
+Restart Rspamd: docker compose restart rspamd-mailcow
Your memory consumption will increase by a lot, it will also steadily grow, which is not related to a possible memory leak you are looking for.
-Leave the container running for a few minutes, hours or days (it should match the time you usually wait for the leak to "happen") and restart it: docker-compose restart rspamd-mailcow
.
-Now enter the container by running docker-compose exec rspamd-mailcow bash
, change the directory to /tmp and copy the asan Files to your desired location or upload them via termbin.com (cat /tmp/rspamd-asan.* | nc termbin.com 9999
).
+Leave the container running for a few minutes, hours or days (it should match the time you usually wait for the leak to "happen") and restart it: docker compose restart rspamd-mailcow
.
+Now enter the container by running docker compose exec rspamd-mailcow bash
, change the directory to /tmp and copy the asan Files to your desired location or upload them via termbin.com (cat /tmp/rspamd-asan.* | nc termbin.com 9999
).
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2510,7 +2527,7 @@ export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violati
-
+
diff --git a/en/troubleshooting/debug/index.html b/en/troubleshooting/debug/index.html
index 9084a04de..7baaf9236 100644
--- a/en/troubleshooting/debug/index.html
+++ b/en/troubleshooting/debug/index.html
@@ -64,6 +64,23 @@
To remove mailcow: dockerized with all it's volumes, images and containers do:
-docker-compose down -v --rmi all --remove-orphans
+docker compose down -v --rmi all --remove-orphans
Info
@@ -2377,7 +2394,7 @@
- -v Remove named volumes declared in the
volumes
section of the Compose file and anonymous volumes attached to containers.
- --rmi
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.
- --remove-orphans Remove containers for services not defined in the compose file.
-- By default
docker-compose down
only removes currently active containers and networks defined in the docker-compose.yml
.
+- By default
docker compose down
only removes currently active containers and networks defined in the docker compose.yml
.
@@ -2386,7 +2403,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2502,7 +2519,7 @@
You need Docker (a version >= 20.10.2
is required) and Docker Compose (a version >= 2.0
is required).
1. Learn how to install Docker and Docker Compose.
+Learn how to install Docker and Docker Compose.
Quick installation for most operation systems:
-Docker +
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
# After the installation process is finished, you may need to enable the service and make sure it is started (e.g. CentOS 7)
systemctl enable --now docker
-
Docker-Compose
-Danger
-mailcow requires the latest version of docker-compose v2. It is highly recommended to use the commands below to install docker-compose
. Package managers (e.g. apt
, yum
) likely won't give you the correct version.
-Note: This command downloads docker-compose from the official Docker Github repository and is a safe method. The snippet will determine the latest supported version by mailcow. In almost all cases this is the latest version available (exceptions are broken releases or major changes not yet supported by mailcow).
mailcow requires the latest version of docker compose v2.
+If Docker was installed using the script above, the Docker Compose plugin is already automatically installed in a version >=2.0.
+Is your mailcow installation older or Docker was installed in a different way, the Compose plugin or the standalone version of Docker must be installed manually.
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
-chmod +x /usr/local/bin/docker-compose
+Installation via Paketmanager (plugin)¶
+
+Info
+This approach with the package sources is only possible if the Docker repository has been included. This can happen either through the instructions above (see Docker) or through a manually integration.
+
+On Debian/Ubuntu systems:
+
apt update
+apt install docker compose-plugin
+
+On Centos 7 systems:
+
yum update
+yum install docker compose-plugin
+
+
+Danger
+The Docker Compose command syntax is docker compose
for the plugin variant of Docker Compose!!!
+
+Installation via Script (standalone)¶
+
+Info
+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
+chmod +x /usr/local/bin/docker compose
+
+Danger
+The Docker Compose command syntax is docker compose
for the standalone variant of Docker Compose!!!
+
Please use the latest Docker engine available and do not use the engine that ships with your distros repository.
-1.1. On SELinux enabled systems, e.g. CentOS 7:
+Check SELinux specifics¶
+On SELinux enabled systems, e.g. CentOS 7:
- Check if "container-selinux" package is present on your system:
@@ -2412,7 +2691,8 @@ chmod +x /usr/local/bin/docker-compose
Restart the docker daemon and verify SELinux is now enabled.
This step is required to make sure mailcows volumes are properly labeled as declared in the compose file.
If you are interested in how this works, you can check out the readme of https://github.com/containers/container-selinux which links to a lot of useful information on that topic.
-2. Clone the master branch of the repository, make sure your umask equals 0022. Please clone the repository as root user and also control the stack as root. We will modify attributes - if necessary - while bootstrapping the containers automatically and make sure everything is secured. The update.sh script must therefore also be run as root. It might be necessary to change ownership and other attributes of files you will otherwise not have access to. We drop permissions for every exposed application and will not run an exposed service as root! Controlling the Docker daemon as non-root user does not give you additional security. The unprivileged user will spawn the containers as root likewise. The behaviour of the stack is identical.
+Install mailcow¶
+Clone the master branch of the repository, make sure your umask equals 0022. Please clone the repository as root user and also control the stack as root. We will modify attributes - if necessary - while bootstrapping the containers automatically and make sure everything is secured. The update.sh script must therefore also be run as root. It might be necessary to change ownership and other attributes of files you will otherwise not have access to. We drop permissions for every exposed application and will not run an exposed service as root! Controlling the Docker daemon as non-root user does not give you additional security. The unprivileged user will spawn the containers as root likewise. The behaviour of the stack is identical.
$ su
# umask
0022 # <- Verify it is 0022
@@ -2420,18 +2700,20 @@ If you are interested in how this works, you can check out the readme of
-3. Generate a configuration file. Use a FQDN (host.domain.tld
) as hostname when asked.
+
Initialize mailcow¶
+Generate a configuration file. Use a FQDN (host.domain.tld
) as hostname when asked.
./generate_config.sh
-4. Change configuration if you want or need to.
+
Change configuration if you want or need to.
nano mailcow.conf
If you plan to use a reverse proxy, you can, for example, bind HTTPS to 127.0.0.1 on port 8443 and HTTP to 127.0.0.1 on port 8080.
You may need to stop an existing pre-installed MTA which blocks port 25/tcp. See this chapter to learn how to reconfigure Postfix to run besides mailcow after a successful installation.
Some updates modify mailcow.conf and add new parameters. It is hard to keep track of them in the documentation. Please check their description and, if unsure, ask at the known channels for advise.
-4.1. Users with a MTU not equal to 1500 (e.g. OpenStack):
+Troubleshooting¶
+Users with a MTU not equal to 1500 (e.g. OpenStack)¶
Whenever you run into trouble and strange phenomena, please check your MTU.
-Edit docker-compose.yml
and change the network settings according to your MTU.
+
Edit docker compose.yml
and change the network settings according to your MTU.
Add the new driver_opts parameter like this:
networks:
mailcow-network:
@@ -2440,12 +2722,13 @@ Add the new driver_opts parameter like this:
com.docker.network.driver.mtu: 1450
...
-4.2. Users without an IPv6 enabled network on their host system:
-Enable IPv6. Finally.
+Users without an IPv6 enabled network on their host system¶
+Please don't turn off IPv6, even if you don't like it. IPv6 is the future and should not be ignored.
If you do not have an IPv6 enabled network on your host and you don't care for a better internet (thehe), it is recommended to disable IPv6 for the mailcow network to prevent unforeseen issues.
-5. Pull the images and run the compose file. The parameter -d
will start mailcow: dockerized detached:
-
docker-compose pull
-docker-compose up -d
+Start mailcow¶
+Pull the images and run the compose file. The parameter -d
will start mailcow: dockerized detached:
+
docker compose pull
+docker compose up -d
Done!
You can now access https://${MAILCOW_HOSTNAME} with the default credentials admin
+ password moohoo
.
@@ -2454,14 +2737,14 @@ docker-compose up -d
If you are not using mailcow behind a reverse proxy, you should redirect all HTTP requests to HTTPS.
The database will be initialized right after a connection to MySQL can be established.
-Your data will persist in multiple Docker volumes, that are not deleted when you recreate or delete containers. Run docker volume ls
to see a list of all volumes. You can safely run docker-compose down
without removing persistent data.
+Your data will persist in multiple Docker volumes, that are not deleted when you recreate or delete containers. Run docker volume ls
to see a list of all volumes. You can safely run docker compose down
without removing persistent data.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2577,7 +2860,7 @@ docker-compose up -d
-
+
diff --git a/i_u_m/i_u_m_migration/index.html b/i_u_m/i_u_m_migration/index.html
index e9869fa9a..307ff867f 100644
--- a/i_u_m/i_u_m_migration/index.html
+++ b/i_u_m/i_u_m_migration/index.html
@@ -64,6 +64,23 @@
Alternatively, you can use the ./helper-scripts/backup_and_restore.sh
script to create a full backup on the source machine, then install mailcow on the target machine as usual, copy over your mailcow.conf
and use the same script to restore your backup to the target machine.
1. -Install Docker and docker-compose on your new server.
+Install Docker and docker compose on your new server.Quick installation for most operation systems:
docker-compose -
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
-chmod +x /usr/local/bin/docker-compose
+docker compose
+
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
+chmod +x /usr/local/bin/docker compose
@@ -2405,7 +2422,7 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.
4. Shut down mailcow and stop Docker on the source machine.
cd /opt/mailcow-dockerized
-docker-compose down
+docker compose down
systemctl stop docker.service
5. Repeat step 3 with the same commands. This will be much quicker than the first time.
@@ -2414,10 +2431,10 @@ systemctl stop docker.service7. Now pull the mailcow Docker images on the target machine.
cd /opt/mailcow-dockerized
-docker-compose pull
+docker compose pull
8. Start the whole mailcow stack and everything should be done! -
docker-compose up -d
+docker compose up -d
9. Finally, change your DNS settings to point to the target server.
@@ -2426,7 +2443,7 @@ docker-compose pull
Last update:
- 2022-06-24 11:27:36
+ 2022-08-31 14:45:46
@@ -2542,7 +2559,7 @@ docker-compose pull
Yes.
See the topic above, instead of a diff, you run checkout:
-docker-compose down
+docker compose down
# Replace commit ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab by your ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
-docker-compose pull
-docker-compose up -d
+docker compose pull
+docker compose up -d
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 for more details.
@@ -2559,13 +2662,40 @@ docker-compose up -d
- 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.)
+Update variants¶
+stable (stable updates): These updates are suitable for productive usage. They appear in a cycle of at least 1x per month.
+nightly (unstable updates): These updates are NOT suitable for production use and are for testing only. The nightly updates are ahead of the stable updates, since in these updates we test newer and more extensive features before they go live for all users.
+NEW: Get Nightly Updates¶
+Info about the Nightly Updates¶
+Since the 2022-08 update there is the possibility to change the update sources. Until now, the master branch on GitHub served as the only (official) update source. With the August 2022 update, however, there is now the Nightly Branch which contains unstable and major changes for testing and feedback.
+The Nightly Branch always gets new updates when something is finished on the mailcow project that will be included in the new main version.
+Besides the obvious changes that will be included in the next major update anyway, it also contains exclusive features that need a longer testing time (e.g. the UI update to Bootstrap 5).
+How do I get Nightly Updates?¶
+The process is relatively simple. With the 2022-08 update (assuming an update to the version) it is possible to run update.sh
with the parameter --nightly
.
+
+Danger
Please make a backup before or follow the Best Practice Nightly Update section before switching to mailcow nightly builds. We are not responsible for any data loss/corruption, so work with caution!
+
+
+The script will now change the branch with git checkout nightly
, which means it will ask for the IPv6 settings again. But this is normal.
+If everything worked fine (for which we made a backup before) the mailcow UI should now show the current version number and date stamp in the lower right corner:
+
+Best Practice Nightly Update¶
+
+Info
We recommend using the Nightly Update only if you have another machine or VM and NOT use it productively.
+
+
+
+- use the cold standby script to copy the machine before the switch to the nightly builds on another system.
+- run the
update.sh
script on the new machine with the parameter --nightly
and confirm.
+- experience/test the nightly updates on the secondary machine.
+
Last update:
- 2022-06-23 15:19:13
+ 2022-08-31 14:45:46
@@ -2681,7 +2811,7 @@ docker-compose up -d
-
+
diff --git a/index.html b/index.html
index e8e6a4b6b..5feeeca2a 100644
--- a/index.html
+++ b/index.html
@@ -69,6 +69,23 @@
docker-compose restart clamd-mailcow
+docker compose restart clamd-mailcow
Please note:
@@ -2538,7 +2555,7 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
docker-compose restart clamd-mailcow
+docker compose restart clamd-mailcow
@@ -2547,7 +2564,7 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2663,7 +2680,7 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
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 logs clamd-mailcow | grep "FOUND"
+docker compose logs clamd-mailcow | grep "FOUND"
This line confirms that such was identified:
clamd-mailcow_1 | Sat Sep 28 07:43:24 2019 -> instream(local): PUA.Pdf.Trojan.EmbeddedJavaScript-1(e887d2ac324ce90750768b86b63d0749:363325) FOUND
@@ -2429,11 +2446,11 @@
To whitelist this particular signature (and enable sending this type of file attached), add it to the ClamAV signature whitelist file:
echo 'PUA.Pdf.Trojan.EmbeddedJavaScript-1' >> data/conf/clamav/whitelist.ign2
-Then restart the clamd-mailcow service container in the mailcow UI or using docker-compose:
-docker-compose restart clamd-mailcow
+Then restart the clamd-mailcow service container in the mailcow UI or using docker compose:
+docker compose restart clamd-mailcow
Cleanup cached ClamAV results in Redis:
-# docker-compose exec redis-mailcow /bin/sh
+# docker compose exec redis-mailcow /bin/sh
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
/data # exit
@@ -2443,7 +2460,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2559,7 +2576,7 @@
-
+
diff --git a/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html b/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html
index caf7b24d0..eb55a0cb3 100644
--- a/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html
+++ b/manual-guides/Docker/u_e-docker-cust_dockerfiles/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2371,13 +2388,13 @@
Customize Dockerfiles
You need to copy the override file with corresponding build tags to the mailcow: dockerized root folder (i.e. /opt/mailcow-dockerized
):
-cp helper-scripts/docker-compose.override.yml.d/BUILD_FLAGS/docker-compose.override.yml docker-compose.override.yml
+cp helper-scripts/docker compose.override.yml.d/BUILD_FLAGS/docker compose.override.yml docker compose.override.yml
Make your changes in data/Dockerfiles/$service
and build the image locally:
docker build data/Dockerfiles/service -t mailcow/$service
Now auto-recreate modified containers:
-docker-compose up -d
+docker compose up -d
@@ -2385,7 +2402,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2501,7 +2518,7 @@
-
+
diff --git a/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html b/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html
index 49b76ed23..23a096f00 100644
--- a/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html
+++ b/manual-guides/Dovecot/u_e-dovecot-any_acl/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2374,14 +2391,14 @@
This function can be re-enabled by setting ACL_ANYONE
to allow
in mailcow.conf:
ACL_ANYONE=allow
-Apply the changes by running docker-compose up -d
.
+Apply the changes by running docker compose up -d
.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2497,7 +2514,7 @@
-
+
diff --git a/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html b/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html
index 559254c1f..bee04ff37 100644
--- a/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html
+++ b/manual-guides/Dovecot/u_e-dovecot-catchall_vacation/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2494,7 +2511,7 @@
That said, let's dive in:
Delete a user's mails inside the junk folder that are read and older than 4 hours
-docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
+docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
Delete all user's mails in the junk folder that are older than 7 days
-docker-compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
+docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
Delete all mails (of all users) in all folders that are older than 52 weeks (internal date of the mail, not the date it was saved on the system => before
instead of savedbefore
). Useful for deleting very old mails on all users and folders (thus especially useful for GDPR-compliance).
-docker-compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
+docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
Delete mails inside a custom folder inside a user's inbox that are not flagged and older than 2 weeks
-docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w
+docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w
Info
@@ -2499,8 +2516,8 @@
# Path to mailcow-dockerized, e.g. /opt/mailcow-dockerized
cd /path/to/your/mailcow-dockerized
-/usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
-/usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h
+/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
+/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h
[...]
To create a cron job you may execute crontab -e
and insert something like the following to execute a script:
@@ -2508,7 +2525,7 @@ cd /path/to/your/mailcow-dockerized
0 4 * * * /path/to/your/expunge_mailboxes.sh
via Docker job scheduler¶
-To archive this with a docker job scheduler use this docker-compose.override.yml with your mailcow:
+To archive this with a docker job scheduler use this docker compose.override.yml with your mailcow:
version: '2.1'
services:
@@ -2529,7 +2546,7 @@ services:
- "ofelia.job-exec.dovecot-expunge-trash.tty=false"
The job controller just need access to the docker control socket to be able to emulate the behavior of "exec". Then we add a few label to our dovecot-container to activate the job scheduler and tell him in a cron compatible scheduling format when to run. If you struggle with that schedule string you can use crontab guru.
-This docker-compose.override.yml deletes all mails older then 2 weeks from the "Junk" folder every day at 4 am. To see if things ran proper, you can not only see in your mailbox but also check Ofelia's docker log if it looks something like this:
+This docker compose.override.yml deletes all mails older then 2 weeks from the "Junk" folder every day at 4 am. To see if things ran proper, you can not only see in your mailbox but also check Ofelia's docker log if it looks something like this:
common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)] Started - doveadm expunge -A mailbox 'Junk' savedbefore 2w,
common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)] Finished in "285.032291ms", failed: false, skipped: false, error: none,
@@ -2541,7 +2558,7 @@ common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)]
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2657,7 +2674,7 @@ common.go:124 ▶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)]
-
+
diff --git a/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html b/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html
index d651e36a6..4bf171e68 100644
--- a/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html
+++ b/manual-guides/Dovecot/u_e-dovecot-extra_conf/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2372,7 +2389,7 @@
Create a file data/conf/dovecot/extra.conf
- if missing - and add your additional content here.
Restart dovecot-mailcow
to apply your changes:
-docker-compose restart dovecot-mailcow
+docker compose restart dovecot-mailcow
@@ -2380,7 +2397,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2496,7 +2513,7 @@
-
+
diff --git a/manual-guides/Dovecot/u_e-dovecot-fts/index.html b/manual-guides/Dovecot/u_e-dovecot-fts/index.html
index 95d801466..17c5f19ec 100644
--- a/manual-guides/Dovecot/u_e-dovecot-fts/index.html
+++ b/manual-guides/Dovecot/u_e-dovecot-fts/index.html
@@ -69,6 +69,23 @@
Since we run in Docker and create our containers with the "restart: always" flag, a oom situation will at least only trigger a restart of the container.
# 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
-docker-compose exec dovecot-mailcow doveadm fts rescan -A
+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)."
This does not re-index a mailbox. It basically repairs a given index.
If you want to re-index data immediately, you can run the followig command, where '*' can also be a mailbox mask like 'Sent'. You do not need to run these commands, but it will speed things up a bit:
# single user
-docker-compose exec dovecot-mailcow doveadm index -u user@domain '*'
+docker compose exec dovecot-mailcow doveadm index -u user@domain '*'
# all users, but obviously slower and more dangerous
-docker-compose exec dovecot-mailcow doveadm index -A '*'
+docker compose exec dovecot-mailcow doveadm index -A '*'
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.
@@ -2489,7 +2506,7 @@ docker-compose exec dovecot-mailcow doveadm index -A '*' Last update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2605,7 +2622,7 @@ docker-compose exec dovecot-mailcow doveadm index -A '*' - + diff --git a/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html b/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html index 1ce7e1c33..9863e04bd 100644 --- a/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html +++ b/manual-guides/Dovecot/u_e-dovecot-idle_interval/index.html @@ -69,6 +69,23 @@Now reload Dovecot: -
docker-compose exec dovecot-mailcow dovecot reload
+docker compose exec dovecot-mailcow dovecot reload
Info
You can check the value of this setting with
-
docker-compose exec dovecot-mailcow dovecot -a | grep "imap_idle_notify_interval"
+docker compose 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.
@@ -2509,7 +2526,7 @@ If you didn't change it, it should be at 2m. If you did change it, you should se
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2625,7 +2642,7 @@ If you didn't change it, it should be at 2m. If you did change it, you should se
-
+
diff --git a/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html b/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html
index 51ceba0c7..36ba6f62c 100644
--- a/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html
+++ b/manual-guides/Dovecot/u_e-dovecot-mail-crypt/index.html
@@ -64,6 +64,23 @@
Mails are stored compressed (lz4) and encrypted. The key pair can be found in crypt-vol-1.
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 docker compose exec dovecot-mailcow /bin/bash
in the mailcow-dockerized location.
# Decrypt /var/vmail
find /var/vmail/ -type f -regextype egrep -regex '.*S=.*W=.*' | while read -r file; do
if [[ $(head -c7 "$file") == "CRYPTED" ]]; then
@@ -2407,7 +2424,7 @@ done
Last update:
- 2022-07-23 01:17:49
+ 2022-08-31 14:45:46
@@ -2523,7 +2540,7 @@ done
:INDEXPVT=~/public
can be omitted if per-user seen flags are not wanted.
The new mailbox in the public namespace will be auto-subscribed by users.
To allow all authenticated users access full to that new mailbox (not the whole namespace), run:
-docker-compose exec dovecot-mailcow doveadm acl set -A "Public/Develcow" "authenticated" lookup read write write-seen write-deleted insert post delete expunge create
+docker compose 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).
Allow authenticated users access to the whole public namespace¶
@@ -2452,7 +2469,7 @@
Last update:
- 2022-07-28 08:45:52
+ 2022-08-31 14:45:46
@@ -2568,7 +2585,7 @@
DOVECOT_MASTER_USER=mymasteruser
DOVECOT_MASTER_PASS=mysecretpass
Run docker-compose up -d
to apply your changes.
Run docker compose up -d
to apply your changes.
The static master username will be expanded to DOVECOT_MASTER_USER@mailcow.local
.
To login as test@example.org
this would equal to test@example.org*mymasteruser@mailcow.local
with the specified password above.
A login to SOGo is not possible with this username. A click-to-login function for SOGo is available for admins as described here @@ -2388,7 +2405,7 @@ No master user is required.
Last update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2504,7 +2521,7 @@ No master user is required. - + diff --git a/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html b/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html index 855ab622c..5fa5bcc41 100644 --- a/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html +++ b/manual-guides/Dovecot/u_e-dovecot-vmail-volume/index.html @@ -69,6 +69,23 @@Warning
Newer Docker versions seem to complain about existing volumes. You can fix this temporarily by removing the existing volume and start mailcow with the override file. But it seems to be problematic after a reboot (needs to be confirmed).
-An easy, dirty, yet stable workaround is to stop mailcow (docker-compose down
), remove /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
and create a new link to your remote filesystem location, for example:
An easy, dirty, yet stable workaround is to stop mailcow (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:
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
Start mailcow afterwards.
If you want to use another folder for the vmail-volume, you can create a docker-compose.override.yml
file and add the following content:
If you want to use another folder for the vmail-volume, you can create a docker compose.override.yml
file and add the following content:
version: '2.1'
volumes:
vmail-vol-1:
@@ -2502,10 +2519,10 @@ volumes:
Mountpoint
folder to the new location (e.g. /data/mailcow/vmail
) using cp -a
, rsync -a
or a similar non strcuture breaking copy commanddocker-compose down
from within your mailcow root folder (e.g. /opt/mailcow-dockerized
)docker-compose.override.yml
, edit the device path accordinglydocker compose down
from within your mailcow root folder (e.g. /opt/mailcow-dockerized
)docker compose.override.yml
, edit the device path accordinglydocker volume rm mailcowdockerized_vmail-vol-1
docker-compose up -d
from within your mailcow root folder (e.g. /opt/mailcow-dockerized
)docker compose up -d
from within your mailcow root folder (e.g. /opt/mailcow-dockerized
)This filename does not need to have a ".conf" extension but follows the pattern site.*.custom
, where *
is a custom name.
If PHP is to be included in a custom site, please use the PHP-FPM listener on phpfpm:9002 or create a new listener in data/conf/phpfpm/php-fpm.d/pools.conf
.
Restart Nginx (and PHP-FPM, if a new listener was created):
-docker-compose restart nginx-mailcow
-docker-compose restart php-fpm-mailcow
+docker compose restart nginx-mailcow
+docker compose restart php-fpm-mailcow
@@ -2560,7 +2577,7 @@ docker-compose restart php-fpm-mailcow
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2676,7 +2693,7 @@ docker-compose restart php-fpm-mailcow
Save and restart Nginx: docker-compose restart nginx-mailcow
.
Save and restart Nginx: docker compose restart nginx-mailcow
.
Now open mailcow.conf
and find ADDITIONAL_SAN
.
Add webmail.example.org
to this array, don't use quotes!
ADDITIONAL_SAN=webmail.example.org
Run docker-compose up -d
. See "acme-mailcow" and "nginx-mailcow" logs if anything fails.
Run docker compose up -d
. See "acme-mailcow" and "nginx-mailcow" logs if anything fails.
webmail.example.org
to this array, don't use quotes!
Open data/conf/postfix/extra.cf
and set the message_size_limit
accordingly in bytes. See main.cf
for the default value.
Restart Postfix:
-docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
@@ -2380,7 +2397,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2496,7 +2513,7 @@
smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_access reject_authenticated_sender_login_mismatch [...]
Run postmap on check_sasl_access:
-docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
+docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
Restart the Postfix container.
@@ -2454,7 +2471,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2570,7 +2587,7 @@
Postfix will complain about duplicate values once after starting postfix-mailcow, this is intended.
Syslog-ng was configured to hide those warnings while Postfix is running, to not spam the log files with unnecessary information every time a service is used.
Restart postfix-mailcow
to apply your changes:
docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
@@ -2382,7 +2399,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2498,7 +2515,7 @@
Edit data/conf/postfix/extra.cf
:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 192.168.2.0/24
Run docker-compose restart postfix-mailcow
to apply your new settings.
Run docker compose restart postfix-mailcow
to apply your new settings.
Adding IPv6 hosts is done the same as IPv4, however the subnet needs to be placed in brackets []
with the netmask appended.
To add the subnet 2001:db8::/32 to the trusted networks you may use the following configuration, depending on your IPV4_NETWORK and IPV6_NETWORK scopes:
Edit data/conf/postfix/extra.cf
:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 [2001:db8::]/32
Run docker-compose restart postfix-mailcow
to apply your new settings.
Run docker compose restart postfix-mailcow
to apply your new settings.
Info
More information about mynetworks can be found in the Postfix documentation.
@@ -2490,7 +2507,7 @@ Last update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2606,7 +2623,7 @@Redis is used as a key-value store for rspamd's and (some of) mailcow's settings and data. If you are unfamiliar with redis please read the introduction to redis and maybe visit this wonderful guide on how to use it.
To connect to the redis cli execute:
-docker-compose exec redis-mailcow redis-cli
+docker compose exec redis-mailcow redis-cli
Debugging¶
Here are some useful commands for the redis-cli for debugging:
MONITOR¶
Listens for all requests received by the server in real time:
-# docker-compose exec redis-mailcow redis-cli
+# 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"
@@ -2529,7 +2546,7 @@ PONG
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2645,7 +2662,7 @@ PONG
-
+
diff --git a/manual-guides/Rspamd/u_e-rspamd/index.html b/manual-guides/Rspamd/u_e-rspamd/index.html
index 68c94bc80..1505f9a98 100644
--- a/manual-guides/Rspamd/u_e-rspamd/index.html
+++ b/manual-guides/Rspamd/u_e-rspamd/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2580,11 +2597,11 @@ This is achieved by using the Sieve plugin "sieve_imapsieve" and parser scripts.
Learn Spam or Ham from existing directory¶
You can use a one-liner to learn mail in plain-text (uncompressed) format:
# Ham
-for file in /my/folder/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
+for file in /my/folder/cur/*; do docker exec -i $(docker compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
# Spam
-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
-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:
for file in /data/old_mail/.Junk/cur/*; do rspamc learn_spam < zcat $file; done
Reset learned data (Bayes, Neural)¶
@@ -2594,15 +2611,15 @@ This is achieved by using the Sieve plugin "sieve_imapsieve" and parser scripts.
cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
Reset Bayes data
-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 BAYES_* | xargs redis-cli del'
+docker compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
Reset Neural data
-docker-compose 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'
Reset Fuzzy data
# We need to enter the redis-cli first:
-docker-compose exec redis-mailcow redis-cli
+docker compose exec redis-mailcow redis-cli
# In redis-cli:
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
@@ -2612,8 +2629,8 @@ docker-compose exec redis-mailcow redis-cli
...the key pattern was not found and thus no data is available to delete - it is fine.
CLI tools¶
-docker-compose exec rspamd-mailcow rspamc --help
-docker-compose exec rspamd-mailcow rspamadm --help
+docker compose exec rspamd-mailcow rspamc --help
+docker compose exec rspamd-mailcow rspamadm --help
Disable Greylisting¶
Only messages with a higher score will be considered to be greylisted (soft rejected). It is bad practice to disable greylisting.
@@ -2622,26 +2639,26 @@ docker-compose exec rspamd-mailcow rspamadm --help
Add the line:
enabled = false;
-Save the file and restart "rspamd-mailcow": docker-compose restart rspamd-mailcow
+Save the file and restart "rspamd-mailcow": docker compose restart rspamd-mailcow
Spam filter thresholds (global)¶
Each user is able to change their spam rating individually. To define a new server-wide limit, edit data/conf/rspamd/local.d/actions.conf
:
reject = 15;
add_header = 8;
greylist = 7;
-Save the file and restart "rspamd-mailcow": docker-compose restart rspamd-mailcow
+Save the file and restart "rspamd-mailcow": docker compose restart rspamd-mailcow
Existing settings of users will not be overwritten!
To reset custom defined thresholds, run:
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';"
# 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 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';"
Custom reject messages¶
The default spam reject message can be changed by adding a new file data/conf/rspamd/override.d/worker-proxy.custom.inc
with the following content:
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 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:
-
@@ -2661,27 +2678,27 @@ docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "del
}
-- Save the file and restart Rspamd:
docker-compose restart rspamd-mailcow
.
+- Save the file and restart Rspamd:
docker compose restart rspamd-mailcow
.
Discard instead of reject¶
If you want to silently drop a message, create or edit the file data/conf/rspamd/override.d/worker-proxy.custom.inc
and add the following content:
discard_on_reject = true;
Restart Rspamd:
-docker-compose restart rspamd-mailcow
+docker compose restart rspamd-mailcow
Wipe all ratelimit keys¶
If you don't want to use the UI and instead wipe all keys in the Redis database, you can use redis-cli for that task:
-docker-compose exec redis-mailcow sh
+docker compose exec redis-mailcow sh
# Unlink (available in Redis >=4.) will delete in the backgronud
redis-cli --scan --pattern RL* | xargs redis-cli unlink
Restart Rspamd:
-docker-compose restart rspamd-mailcow
+docker compose restart rspamd-mailcow
Trigger a resend of quarantine notifications¶
Should be used for debugging only!
-docker-compose exec dovecot-mailcow 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
@@ -2693,14 +2710,14 @@ quarantine_notify.py
Edit data/conf/rspamd/local.d/history_redis.conf
:
nrows = 1000; # change this value
-Restart Rspamd afterwards: docker-compose restart rspamd-mailcow
+Restart Rspamd afterwards: docker compose restart rspamd-mailcow
Last update:
- 2022-08-06 22:09:53
+ 2022-08-31 14:45:46
@@ -2816,7 +2833,7 @@ quarantine_notify.py
-
+
diff --git a/manual-guides/SOGo/u_e-sogo/index.html b/manual-guides/SOGo/u_e-sogo/index.html
index cf56f53c6..5ba112db0 100644
--- a/manual-guides/SOGo/u_e-sogo/index.html
+++ b/manual-guides/SOGo/u_e-sogo/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2509,7 +2526,7 @@ Please check the AngularJS Material version: '2.1'
services:
@@ -2532,8 +2549,8 @@ services:
volumes:
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
-- run
docker-compose up -d
-- run
docker-compose restart memcached-mailcow
+- run
docker compose up -d
+- run
docker compose restart memcached-mailcow
Reset to SOGo default theme¶
@@ -2558,20 +2575,20 @@ services:
and replace it with:
$mdThemingProvider.theme('default');
-- remove from
docker-compose.override.yml
volume mount in sogo-mailcow
:
+ - 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
-- run
docker-compose up -d
-- run
docker-compose restart memcached-mailcow
+- run
docker compose up -d
+- run
docker compose restart memcached-mailcow
Change favicon¶
mailcow builds after 31 January 2021 can change SOGo's favicon by replacing data/conf/sogo/custom-favicon.ico
for SOGo and data/web/favicon.png
for mailcow UI.
Note: You can use .png
favicons for SOGo by renaming them to custom-favicon.ico
.
For both SOGo and mailcow UI favicons you need use one of the standard dimensions: 16x16, 32x32, 64x64, 128x128 and 256x256.
-After you replaced said file you need to restart SOGo and Memcached containers by executing docker-compose restart memcached-mailcow sogo-mailcow
.
+After you replaced said file you need to restart SOGo and Memcached containers by executing docker compose restart memcached-mailcow sogo-mailcow
.
Change logo¶
mailcow builds after 21 December 2018 can change SOGo's logo by replacing or creating (if missing) data/conf/sogo/sogo-full.svg
.
-After you replaced said file you need to restart SOGo and Memcached containers by executing docker-compose restart memcached-mailcow sogo-mailcow
.
+After you replaced said file you need to restart SOGo and Memcached containers by executing docker compose restart memcached-mailcow sogo-mailcow
.
Connect domains¶
Domains are usually isolated from eachother.
You can change that by modifying data/conf/sogo/sogo.conf
:
@@ -2586,19 +2603,19 @@ After you replaced said file you need to restart SOGo and Memcached containers b
(example.org, example.com, example.net)
);
-Restart SOGo: docker-compose restart sogo-mailcow
+Restart SOGo: docker compose restart sogo-mailcow
Disable password changing¶
Edit data/conf/sogo/sogo.conf
and change SOGoPasswordChangeEnabled
to NO
. Please do not add a new parameter.
-Run docker-compose restart memcached-mailcow sogo-mailcow
to activate the changes.
+Run docker compose restart memcached-mailcow sogo-mailcow
to activate the changes.
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 docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}'
from within the mailcow directory.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2714,7 +2731,7 @@ After you replaced said file you need to restart SOGo and Memcached containers b
-
+
diff --git a/manual-guides/Unbound/u_e-unbound-fwd/index.html b/manual-guides/Unbound/u_e-unbound-fwd/index.html
index 147ac4a55..13a801a39 100644
--- a/manual-guides/Unbound/u_e-unbound-fwd/index.html
+++ b/manual-guides/Unbound/u_e-unbound-fwd/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2447,21 +2464,21 @@
forward-addr: 8.8.4.4 # DO NOT USE PUBLIC DNS SERVERS - JUST AN EXAMPLE
Restart Unbound:
-docker-compose restart unbound-mailcow
+docker compose restart unbound-mailcow
Method B, Override file¶
cd /opt/mailcow-dockerized
-cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.override.yml .
+cp helper-scripts/docker compose.override.yml.d/EXTERNAL_DNS/docker compose.override.yml .
-Edit docker-compose.override.yml
and adjust the IP.
-Run docker-compose down ; docker-compose up -d
.
+Edit docker compose.override.yml
and adjust the IP.
+Run docker compose down ; docker compose up -d
.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2577,7 +2594,7 @@ cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.over
-
+
diff --git a/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html b/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html
index aac61d12d..cdc186f7e 100644
--- a/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html
+++ b/manual-guides/Watchdog/u_e-watchdog-thresholds/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2669,7 +2686,7 @@
Thresholds
-Watchdog uses default values for all thresholds defined in docker-compose.yml
.
+Watchdog uses default values for all thresholds defined in docker compose.yml
.
The default values will work for most setups.
Example:
- NGINX_THRESHOLD=${NGINX_THRESHOLD:-5}
@@ -2691,7 +2708,7 @@ Example:
- MAILQ_THRESHOLD=${MAILQ_THRESHOLD:-20}
- 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 docker compose up -d
.
Thresholds descriptions¶
NGINX_THRESHOLD¶
Notifies administrators if watchdog can not establish a connection to Nginx on port 8081 and it will restart the container automatically when issues were found and the threshold has been reached.
@@ -2733,7 +2750,7 @@ Example:
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2849,7 +2866,7 @@ Example:
Touc
Disable unofficial supported Fido Security Keys¶
With WebAuthn there is the possibility to use only official Fido Security Keys (from the big brands like: Yubico, Apple, Nitro, Google, Huawei, Microsoft, etc.).
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 docker compose up -d
.
The mailcow will now use the Vendor Certificates located in your mailcow directory under data/web/inc/lib/WebAuthn/rootCertificates
.
Example:¶
If you want to limit the official Vendor devices to Apple only you only need the Apple Vendor Certificate inside the data/web/inc/lib/WebAuthn/rootCertificates
.
@@ -2661,7 +2678,7 @@ These vendor certificates are only used to verify original hardware, not to secu
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2777,7 +2794,7 @@ These vendor certificates are only used to verify original hardware, not to secu
-
+
diff --git a/manual-guides/u_e-80_to_443/index.html b/manual-guides/u_e-80_to_443/index.html
index da7247649..19a610cbe 100644
--- a/manual-guides/u_e-80_to_443/index.html
+++ b/manual-guides/u_e-80_to_443/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2388,10 +2405,10 @@
}
In case you changed the HTTP_BIND parameter, recreate the container:
-docker-compose up -d
+docker compose up -d
Otherwise restart Nginx:
-docker-compose restart nginx-mailcow
+docker compose restart nginx-mailcow
@@ -2399,7 +2416,7 @@
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2515,7 +2532,7 @@
-
+
diff --git a/manual-guides/u_e-autodiscover_config/index.html b/manual-guides/u_e-autodiscover_config/index.html
index c11b2d2d3..f42925a43 100644
--- a/manual-guides/u_e-autodiscover_config/index.html
+++ b/manual-guides/u_e-autodiscover_config/index.html
@@ -64,6 +64,23 @@
ssl_min_protocol = TLSv1
Restart the affected services:
-docker-compose restart postfix-mailcow dovecot-mailcow
+docker compose restart postfix-mailcow dovecot-mailcow
Hint: You can enable TLS 1.2 in Windows 7.
@@ -2388,7 +2405,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2504,7 +2521,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
-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 restart sogo-mailcow
This is ONLY recommended if you do not have an IPv6 enabled network on your host!
If you really need to, you can disable the usage of IPv6 in the compose file. Additionally, you can also disable the startup of container "ipv6nat-mailcow", as it's not needed if you won't use IPv6.
-Instead of editing docker-compose.yml directly, it is preferable to create an override file for it +
Instead of editing docker compose.yml directly, it is preferable to create an override file for it and implement your changes to the service there. Unfortunately, this right now only seems to work for services, not for network settings.
-To disable IPv6 on the mailcow network, open docker-compose.yml with your favourite text editor and search for the network section (it's near the bottom of the file).
-1. Modify docker-compose.yml
+To disable IPv6 on the mailcow network, open docker compose.yml with your favourite text editor and search for the network section (it's near the bottom of the file).
+1. Modify docker compose.yml
Change enable_ipv6: true
to enable_ipv6: false
:
networks:
mailcow-network:
@@ -2383,10 +2400,10 @@ and implement your changes to the service there. Unfortunately, this right now o
[...]
2. Disable ipv6nat-mailcow
-To disable the ipv6nat-mailcow container as well, go to your mailcow directory and create a new file called "docker-compose.override.yml":
+To disable the ipv6nat-mailcow container as well, go to your mailcow directory and create a new file called "docker compose.override.yml":
NOTE: If you already have an override file, of course don't recreate it, but merge the lines below into your existing one accordingly!
# cd /opt/mailcow-dockerized
-# touch docker-compose.override.yml
+# touch docker compose.override.yml
Open the file in your favourite text editor and fill in the following:
version: '2.1'
@@ -2398,8 +2415,8 @@ services:
entrypoint: ["echo", "ipv6nat disabled in compose.override.yml"]
For these changes to be effective, you need to fully stop and then restart the stack, so containers and networks are recreated:
-docker-compose down
-docker-compose up -d
+docker compose down
+docker compose up -d
3. Disable IPv6 in unbound-mailcow
Edit data/conf/unbound/unbound.conf
and set do-ip6
to "no":
@@ -2409,7 +2426,7 @@ docker-compose up -d
[...]
Restart Unbound:
-docker-compose restart unbound-mailcow
+docker compose restart unbound-mailcow
4. Disable IPv6 in postfix-mailcow
Create data/conf/postfix/extra.cf
and set smtp_address_preference
to ipv4
:
@@ -2417,7 +2434,7 @@ docker-compose up -d
inet_protocols = ipv4
Restart Postfix:
-docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
5. If your docker daemon completly disabled IPv6:
Fix the following NGINX, Dovecot and php-fpm config files
@@ -2433,7 +2450,7 @@ sed -i 's/\[::\]://g' data/conf/phpfpm/php-fpm.d/pools.conf
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2549,7 +2566,7 @@ sed -i 's/\[::\]://g' data/conf/phpfpm/php-fpm.d/pools.conf
Create or modify docker-compose.override.yml
in the mailcow-dockerized base directory:
Create or modify docker compose.override.yml
in the mailcow-dockerized base directory:
version: '2.1'
services:
@@ -2525,7 +2542,7 @@ services:
depends_on:
- rspamd-mailcow
Run docker-compose up -d
Run docker compose up -d
To receive a hidden copy of reports generated by Rspamd you can set a bcc_addrs
list in the reporting
config section of data/conf/rspamd/local.d/dmarc.conf
:
reporting {
@@ -2542,20 +2559,20 @@ services:
Troubleshooting¶
Check when the report schedule last ran:
-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
See the latest report output:
-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
Manually trigger a DMARC report:
-docker-compose exec rspamd-mailcow rspamadm dmarc_report
+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 exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428"
+docker compose exec redis-mailcow redis-cli SMEMBERS "dmarc_idx;20220428"
Take one of the lines from output you interested in and request it, f.e.:
-docker-compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49
+docker compose exec redis-mailcow redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49
Change DMARC reporting frequency¶
In the example above reports are sent once every 24 hours.
@@ -2563,13 +2580,13 @@ Take one of the lines from output you interested in and request it, f.e.:
To change schedule:
-
-
Edit docker-compose.override.yml
and a djust ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"
to a desired value, for example to "@midnight"
+Edit docker compose.override.yml
and a djust ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"
to a desired value, for example to "@midnight"
-
-
Run docker-compose up -d
+Run docker compose up -d
-
-
Run docker-compose restart ofelia-mailcow
+Run docker compose restart ofelia-mailcow
Disable DMARC Reporting¶
@@ -2579,10 +2596,10 @@ Take one of the lines from output you interested in and request it, f.e.:
Set enabled
to false
in data/conf/rspamd/local.d/dmarc.conf
-
-
Revert changes done in docker-compose.override.yml
to rspamd-mailcow
and ofelia-mailcow
+Revert changes done in docker compose.override.yml
to rspamd-mailcow
and ofelia-mailcow
-
-
Run docker-compose up -d
+Run docker compose up -d
@@ -2591,7 +2608,7 @@ Take one of the lines from output you interested in and request it, f.e.:
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2707,7 +2724,7 @@ Take one of the lines from output you interested in and request it, f.e.:
-
+
diff --git a/post_installation/firststeps-ip_bindings/index.html b/post_installation/firststeps-ip_bindings/index.html
index 410960aa8..0ad97d32b 100644
--- a/post_installation/firststeps-ip_bindings/index.html
+++ b/post_installation/firststeps-ip_bindings/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2463,11 +2480,11 @@ DOVEADM_PORT=127.0.0.1:19991
SQL_PORT=127.0.0.1:13306
SOLR_PORT=127.0.0.1:18983
-To apply your changes, run docker-compose down
followed by docker-compose up -d
.
+To apply your changes, run docker compose down
followed by docker compose up -d
.
IPv6 binding¶
Changing IPv6 bindings is different from IPv4. Again, this has a technical background.
-A docker-compose.override.yml
file will be used instead of editing the docker-compose.yml
file directly. This is to maintain updatability, as the docker-compose.yml
file gets updated regularly and your changes will most likely be overwritten.
-Edit to create a file docker-compose.override.yml
with the following content. Its content will be merged with the productive docker-compose.yml
file.
+A docker compose.override.yml
file will be used instead of editing the docker compose.yml
file directly. This is to maintain updatability, as the docker compose.yml
file gets updated regularly and your changes will most likely be overwritten.
+Edit to create a file docker compose.override.yml
with the following content. Its content will be merged with the productive docker compose.yml
file.
An example IPv6 2001:db8:dead:beef::123 is given. The first suffix :PORT1
defines the external port, while the second suffix :PORT2
routes to the corresponding port inside the container and must not be changed.
version: '2.1'
services:
@@ -2491,14 +2508,14 @@ services:
- '[2001:db8:dead:beef::123]:80:80'
- '[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 docker compose down
followed by docker compose up -d
.
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2614,7 +2631,7 @@ services:
-
+
diff --git a/post_installation/firststeps-local_mta/index.html b/post_installation/firststeps-local_mta/index.html
index cbf626b69..999b5d13e 100644
--- a/post_installation/firststeps-local_mta/index.html
+++ b/post_installation/firststeps-local_mta/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2505,7 +2522,7 @@ Relaying over this interface is necessary (instead of - for example - relaying d
-
+
diff --git a/post_installation/firststeps-logging/index.html b/post_installation/firststeps-logging/index.html
index 4daad443b..8c43c9450 100644
--- a/post_installation/firststeps-logging/index.html
+++ b/post_installation/firststeps-logging/index.html
@@ -69,6 +69,23 @@
Logging in mailcow: dockerized consists of multiple stages, but is, after all, much more flexible and easier to integrate into a logging daemon than before.
In Docker the containerized application (PID 1) writes its output to stdout. For real one-application containers this works just fine.
-Run docker-compose logs --help
to learn more.
docker compose logs --help
to learn more.
Some containers log or stream to multiple destinations.
No container will keep persistent logs in it. Containers are transient items!
In the end, every line of logs will reach the Docker daemon - unfiltered.
@@ -2526,9 +2543,9 @@ Rundocker-compose logs --help
to learn more.
the ability to read logs from the UI or ban suspicious clients with netfilter-mailcow.
Redis keys will only hold logs from applications and filter out system messages (think of cron etc.).
Here is the good news: Since Docker has some great logging drivers, you can integrate mailcow: dockerized into your existing logging environment with ease.
-Create a docker-compose.override.yml
and add, for example, this block to use the "gelf" logging plugin for postfix-mailcow
:
Create a docker compose.override.yml
and add, for example, this block to use the "gelf" logging plugin for postfix-mailcow
:
version: '2.1'
services:
postfix-mailcow: # or any other
@@ -2594,7 +2611,7 @@ input(type="imudp" port="514")
...
}
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 docker compose down && docker compose up -d
to recreate the containers with the new logging driver.
As those logs can get quite big, it is a good idea to use logrotate to compress and delete them after a certain time period.
Create /etc/logrotate.d/mailcow
with the following content:
This will also change the bindings inside the Nginx container! This is important, if you decide to use a proxy within Docker.
IMPORTANT: Do not use port 8081, 9081 or 65510!
-Recreate affected containers by running docker-compose up -d
.
Recreate affected containers by running docker compose up -d
.
Important information, please read them carefully!
Info
@@ -2648,8 +2665,8 @@ backend mailcowImportant: This config only covers the "reverseproxing" of the webpannel (nginx-mailcow) using Traefik v2, if you also want to reverseproxy the mail services such as dovecot, postfix... you'll just need to adapt the following config to each container and create an EntryPoint on your traefik.toml
or traefik.yml
(depending which config you use) for each port.
For this section we'll assume you have your Traefik 2 [certificatesresolvers]
properly configured on your traefik configuration file, and also using acme, also, the following example uses Lets Encrypt, but feel free to change it to your own cert resolver. You can find a basic Traefik 2 toml config file with all the above implemented which can be used for this example here traefik.toml if you need one, or a hint on how to adapt your config.
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.
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.
SKIP_LETS_ENCRYPT=y
on our mailcow.conf
, and run docker compose up -d
to apply the changes.
+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.
version: '2.1'
services:
@@ -2681,7 +2698,7 @@ For this we'll have to set SKIP_LETS_ENCRYPT=y
on our mailcow
network_mode: none
volumes:
# mount the folder which contains Traefik's `acme.json' file
- # in this case Traefik is started from its own docker-compose in ../traefik
+ # in this case Traefik is started from its own docker compose in ../traefik
- ../traefik/data:/traefik:ro
# mount mailcow's SSL folder
- ./data/assets/ssl/:/output:rw
@@ -2694,10 +2711,10 @@ For this we'll have to set SKIP_LETS_ENCRYPT=y
on our mailcow
web:
external: true
Start the new containers with docker-compose up -d
.
Start the new containers with 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 which grabs the acme.json
file trough a volume, and a variable DOMAIN=example.org
, and with these, the container will output the cert.pem
and key.pem
files, for this we'll simply run the traefik-certs-dumper
container binding the /traefik
volume to the folder where our acme.json
is saved, bind the /output
volume to our mailcow data/assets/ssl/
folder, and set up the DOMAIN=example.org
variable to the domain we want the certs dumped from.
This container will watch over the acme.json
file for any changes, and regenerate the cert.pem
and key.pem
files directly into data/assets/ssl/
being the path binded to the container's /output
path.
You can use the command line to run it, or use the docker-compose shown here.
+You can use the command line to run it, or use the docker compose shown here.
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.
Aaand that should be it 😊, you can check if the Traefik router works fine trough Traefik's dashboard / traefik logs / accessing the setted domain trough https, or / and check HTTPS, SMTP and IMAP trough the commands shown on the page linked before.
If you plan to use a server name that is not MAILCOW_HOSTNAME
in your reverse proxy, make sure to populate that name in mailcow.conf via ADDITIONAL_SERVER_NAMES
first. Names must be separated by commas and must not contain spaces. If you skip this step, mailcow may respond to your reverse proxy with an incorrect site.
ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
Run docker-compose up -d
to apply.
Run docker compose up -d
to apply.
Run docker-compose up -d
.
Run docker compose up -d
.
The values are read by netfilter-mailcow. netfilter-mailcow will make sure, the post-routing rules are on position 1 in the netfilter table. It does automatically delete and re-create them if they are found on another position than 1.
-Check the output of docker-compose logs --tail=200 netfilter-mailcow
to ensure the SNAT settings have been applied.
Check the output of docker compose logs --tail=200 netfilter-mailcow
to ensure the SNAT settings have been applied.
For each domain you add, it will try to resolve autodiscover.ADDED_MAIL_DOMAIN
and autoconfig.ADDED_MAIL_DOMAIN
to its IPv6 address or - if IPv6 is not configured in your domain - IPv4 address. If it succeeds, a name will be added as SAN to the certificate request.
Only names that can be validated, will be added as SAN.
For every domain you remove, the certificate will be moved and a new certificate will be requested. It is not possible to keep domains in a certificate, when we are not able validate the challenge for those.
-If you want to re-run the ACME client, use docker-compose restart acme-mailcow
and monitor its logs with docker-compose logs --tail=200 -f acme-mailcow
.
If you want to re-run the ACME client, use docker compose restart acme-mailcow
and monitor its logs with docker compose logs --tail=200 -f acme-mailcow
.
Edit "mailcow.conf" and add a parameter ADDITIONAL_SAN
like this:
Do not use quotes ("
) and do not use spaces between the names!
Each name will be validated against its IPv6 address or - if IPv6 is not configured in your domain - IPv4 address.
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 docker compose up -d
to recreate affected containers automatically.
Info
Using names other name MAILCOW_HOSTNAME
to access the mailcow UI may need further configuration.
If you plan to use a server name that is not MAILCOW_HOSTNAME
to access the mailcow UI (for example by adding mail.*
to ADDITIONAL_SAN
make sure to populate that name in mailcow.conf via ADDITIONAL_SERVER_NAMES
. Names must be separated by commas and must not contain spaces. If you skip this step, mailcow may respond with an incorrect site.
ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
Run docker-compose up -d
to apply.
Run docker compose up -d
to apply.
To force a renewal, you need to create a file named force_renew
and restart the acme-mailcow
container:
cd /opt/mailcow-dockerized
touch data/assets/ssl/force_renew
-docker-compose restart acme-mailcow
+docker compose restart acme-mailcow
# Now check the logs for a renewal
-docker-compose logs --tail=200 -f acme-mailcow
+docker compose logs --tail=200 -f acme-mailcow
The file will be deleted automatically.
You can skip the IP verification by setting SKIP_IP_CHECK=y
in mailcow.conf (no quotes). Be warned that a misconfiguration will get you ratelimited by Let's Encrypt! This is primarily useful for multi-IP setups where the IP check would return the incorrect source IP address. Due to using dynamic IPs for acme-mailcow, source NAT is not consistent over restarts.
If you encounter problems with "HTTP validation", but your IP address confirmation succeeds, you are most likely using firewalld, ufw or any other firewall, that disallows connections from br-mailcow
to your external interface. Both firewalld and ufw disallow this by default. It is often not enough to just stop these firewall services. You'd need to stop mailcow (docker-compose down
), stop the firewall service, flush the chains and restart Docker.
If you encounter problems with "HTTP validation", but your IP address confirmation succeeds, you are most likely using firewalld, ufw or any other firewall, that disallows connections from br-mailcow
to your external interface. Both firewalld and ufw disallow this by default. It is often not enough to just stop these firewall services. You'd need to stop mailcow (docker compose down
), stop the firewall service, flush the chains and restart Docker.
You can also skip this validation method by setting SKIP_HTTP_VERIFICATION=y
in "mailcow.conf". Be warned that this is discouraged. In most cases, the HTTP verification is skipped to workaround unknown NAT reflection issues, which are not resolved by ignoring this specific network misconfiguration. If you encounter problems generating TLSA records in the DNS overview within mailcow, you are most likely having issues with NAT reflection you should fix.
If you changed a SKIP_* parameter, run docker-compose up -d
to apply your changes.
If you changed a SKIP_* parameter, run docker compose up -d
to apply your changes.
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" by running docker compose up -d
.
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" by running docker compose up -d
.
Let's Encrypt currently has a limit of 100 Domain Names per Certificate.
By default, "acme-mailcow" will create a single SAN certificate for all validated domains @@ -2653,7 +2670,7 @@ This provides best compatibility but means the Let's Encrypt limit exceeds if yo
ADDITIONAL_SAN=test.example.com
will be added as SAN to the main certificate. A separate certificate/key pair will not be generated for this format.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" by running docker compose up -d
.
Warning
Not all clients support SNI, see Dovecot documentation or Wikipedia. @@ -2683,15 +2700,15 @@ docker restart $(docker ps -qaf name=dovecot-mailcow)
See Post-hook script for non-mailcow ACME clients for a full example script.
Edit mailcow.conf
and add LE_STAGING=y
.
Run docker-compose up -d
to activate your changes.
Run docker compose up -d
to activate your changes.
Edit mailcow.conf
and add the corresponding directory URL to the new variable DIRECTORY_URL
:
DIRECTORY_URL=https://acme-custom-v9000.api.letsencrypt.org/directory
You cannot use LE_STAGING
with DIRECTORY_URL
. If both are set, only LE_STAGING
is used.
Run docker-compose up -d
to activate your changes.
Run docker compose up -d
to activate your changes.
Run docker-compose logs acme-mailcow
to find out why a validation fails.
Run docker compose logs acme-mailcow
to find out why a validation fails.
To check if nginx serves the correct certificate, simply use a browser of your choice and check the displayed certificate.
To check the certificate served by Postfix, Dovecot and Nginx we will use openssl
:
# Connect via SMTP (587)
@@ -2711,7 +2728,7 @@ bash helper-scripts/expiry-dates.sh
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2827,7 +2844,7 @@ bash helper-scripts/expiry-dates.sh
Reboot or restart the interface. You may want to disable cloud-init network changes.
Especially relevant for OpenStack users: Check your MTU and set it accordingly in docker-compose.yml. See 4.1 in our installation docs.
+Especially relevant for OpenStack users: Check your MTU and set it accordingly in docker compose.yml. See 4.1 in our installation docs.
docker-compose.override.yml
¶In the mailcow-dockerized root folder create or edit docker-compose.override.yml
and insert the following
+
docker compose.override.yml
¶In the mailcow-dockerized root folder create or edit docker compose.override.yml
and insert the following
configuration:
version: '2.1'
@@ -2798,13 +2815,13 @@ usual id_rsa
, id_ed25519
or similar to be in this dire
or OpenSSH will refuse to use the SSH key.
Bring up the container¶
For the next step we need the container to be up and running in a configured state. To do that run:
-docker-compose up -d
+docker compose up -d
Initialize the repository¶
By now your borgmatic container is up and running, but the backups will currently fail due to the repository not being
initialized.
To initialize the repository run:
-docker-compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2
+docker compose exec borgmatic-mailcow borgmatic init --encryption repokey-blake2
You will be asked you to authenticate the SSH host key of your remote repository server. See if it matches and confirm
the prompt by entering yes
. The repository will be initialized with the passphrase you set in the BORG_PASSPHRASE
@@ -2816,7 +2833,7 @@ for how to retrieve the key.
Restart container¶
Now that we finished configuring and initializing the repository restart the container to ensure it is in a defined
state:
-docker-compose restart borgmatic-mailcow
+docker compose restart borgmatic-mailcow
Restoring from a backup¶
Restoring a backup assumes you are starting off with a fresh installation of mailcow, and you currently do not have
@@ -2834,10 +2851,10 @@ extraction of the archive as the mailcow setup labels the vmail volume as privat
exclusively. SELinux will (rightfully) prevent any other container, such as the borgmatic container, from writing to
this volume.
-Before running a restore you must make the vmail volume writeable in docker-compose.override.yml
by removing
+
Before running a restore you must make the vmail volume writeable in docker compose.override.yml
by removing
the ro
flag from the volume.
Then you can use the following command to restore the maildir from a backup:
-docker-compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest
+docker compose exec borgmatic-mailcow borgmatic extract --path mnt/source --archive latest
Alternatively you can specify any archive name from the list of archives (see
Listing all available archives)
@@ -2848,7 +2865,7 @@ Then you can use the following command to restore the maildir from a backup:
intend to recover the mailcow database from a backup.
To restore the MySQL database from the latest archive use this command:
-docker-compose exec borgmatic-mailcow borgmatic restore --archive latest
+docker compose exec borgmatic-mailcow borgmatic restore --archive latest
Alternatively you can specify any archive name from the list of archives (see
Listing all available archives)
@@ -2856,21 +2873,21 @@ intend to recover the mailcow database from a backup.
After restoring you need to restart mailcow. If you disabled SELinux enforcing mode now would be a good time to
re-enable it.
To restart mailcow use the follwing command:
-docker-compose down && docker-compose up -d
+docker compose down && docker compose up -d
If you use SELinux this will also trigger the re-labeling of all files in your vmail volume. Be patient, as this may
take a while if you have lots of files.
Useful commands¶
Manual archiving run (with debugging output)¶
-docker-compose exec borgmatic-mailcow borgmatic -v 2
+docker compose exec borgmatic-mailcow borgmatic -v 2
Listing all available archives¶
-docker-compose exec borgmatic-mailcow borgmatic list
+docker compose exec borgmatic-mailcow borgmatic list
Break lock¶
When borg is interrupted during an archiving run it will leave behind a stale lock that needs to be cleared before any
new operations can be performed:
-docker-compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow
+docker compose exec borgmatic-mailcow borg break-lock user@rsync.net:mailcow
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.
@@ -2880,7 +2897,7 @@ key files are generated when you initialize the repository. The repokey
Note that in either case you also must have the passphrase to decrypt any archives.
To fetch the keyfile run:
-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
Where user@rsync.net:mailcow
is the URI to your repository.
@@ -2889,7 +2906,7 @@ repository, so a manual backup isn't as essential.
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -3005,7 +3022,7 @@ repository, so a manual backup isn't as essential.
-
+
diff --git a/third_party/checkmk/u_e-checkmk/index.html b/third_party/checkmk/u_e-checkmk/index.html
index e466d3750..284b3ac5e 100644
--- a/third_party/checkmk/u_e-checkmk/index.html
+++ b/third_party/checkmk/u_e-checkmk/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2627,7 +2644,7 @@ exit
-
+
diff --git a/third_party/exchange_onprem/third_party-exchange_onprem/index.html b/third_party/exchange_onprem/third_party-exchange_onprem/index.html
index 1362bff75..06b82da09 100644
--- a/third_party/exchange_onprem/third_party-exchange_onprem/index.html
+++ b/third_party/exchange_onprem/third_party-exchange_onprem/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2648,7 +2665,7 @@
-
+
diff --git a/third_party/gitea/third_party-gitea/index.html b/third_party/gitea/third_party-gitea/index.html
index bfbc51b61..8245f77a3 100644
--- a/third_party/gitea/third_party-gitea/index.html
+++ b/third_party/gitea/third_party-gitea/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2369,7 +2386,7 @@
Gitea
With Gitea' ability to authenticate over SMTP it is trivial to integrate it with mailcow. Few changes are needed:
-1. Open docker-compose.override.yml
and add gitea:
+1. Open docker compose.override.yml
and add gitea:
version: '2.1'
services:
@@ -2392,8 +2409,8 @@ services:
3. Open mailcow.conf
and define the binding you want gitea to use for SSH. Example:
GITEA_SSH_PORT=127.0.0.1:4000
-5. Run docker-compose up -d
to bring up the gitea container and run docker-compose restart nginx-mailcow
afterwards.
-6. If you forced mailcow to https, execute step 9 and restart gitea with docker-compose restart gitea-mailcow
. Go head with step 7 (Remember to use https instead of http, https://mx.example.org/gitea/
+5. Run docker compose up -d
to bring up the gitea container and run docker compose restart nginx-mailcow
afterwards.
+6. If you forced mailcow to https, execute step 9 and restart gitea with docker compose restart gitea-mailcow
. Go head with step 7 (Remember to use https instead of http, https://mx.example.org/gitea/
7. Open http://${MAILCOW_HOSTNAME}/gitea/
, for example http://mx.example.org/gitea/
. For database details set mysql
as database host. Use the value of DBNAME found in mailcow.conf as database name, DBUSER as database user and DBPASS as database password.
8. Once the installation is complete, login as admin and set "settings" -> "authorization" -> "enable SMTP". SMTP Host should be postfix
with port 587
, set Skip TLS Verify
as we are using an unlisted SAN ("postfix" is most likely not part of your certificate).
9. Create data/gitea/gitea/conf/app.ini
and set following values. You can consult gitea cheat sheet for their meaning and other possible values.
@@ -2405,14 +2422,14 @@ SSH_PORT = 4000
# For MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (and default ports for HTTPS), set:
ROOT_URL = https://mx.example.org/gitea/
-10. Restart gitea with docker-compose restart gitea-mailcow
. Your users should be able to login with mailcow managed accounts.
+10. Restart gitea with docker compose restart gitea-mailcow
. Your users should be able to login with mailcow managed accounts.
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -2528,7 +2545,7 @@ ROOT_URL = https://mx.example.org/gitea/
-
+
diff --git a/third_party/gogs/third_party-gogs/index.html b/third_party/gogs/third_party-gogs/index.html
index 6cf31ebb7..8e2f4c8ca 100644
--- a/third_party/gogs/third_party-gogs/index.html
+++ b/third_party/gogs/third_party-gogs/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2369,7 +2386,7 @@
Gogs
With Gogs' ability to authenticate over SMTP it is trivial to integrate it with mailcow. Few changes are needed:
-1. Open docker-compose.override.yml
and add Gogs:
+1. Open docker compose.override.yml
and add Gogs:
version: '2.1'
services:
@@ -2392,7 +2409,7 @@ services:
3. Open mailcow.conf
and define the binding you want Gogs to use for SSH. Example:
GOGS_SSH_PORT=127.0.0.1:4000
-5. Run docker-compose up -d
to bring up the Gogs container and run docker-compose restart nginx-mailcow
afterwards.
+5. Run docker compose up -d
to bring up the Gogs container and run docker compose restart nginx-mailcow
afterwards.
6. Open http://${MAILCOW_HOSTNAME}/gogs/
, for example http://mx.example.org/gogs/
. For database details set mysql
as database host. Use the value of DBNAME found in mailcow.conf as database name, DBUSER as database user and DBPASS as database password.
7. Once the installation is complete, login as admin and set "settings" -> "authorization" -> "enable SMTP". SMTP Host should be postfix
with port 587
, set Skip TLS Verify
as we are using an unlisted SAN ("postfix" is most likely not part of your certificate).
8. Create data/gogs/gogs/conf/app.ini
and set following values. You can consult Gogs cheat sheet for their meaning and other possible values.
@@ -2404,14 +2421,14 @@ SSH_PORT = 4000
# For MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (and default ports for HTTPS), set:
ROOT_URL = https://mx.example.org/gogs/
-9. Restart Gogs with docker-compose restart gogs-mailcow
. Your users should be able to login with mailcow managed accounts.
+9. Restart Gogs with docker compose restart gogs-mailcow
. Your users should be able to login with mailcow managed accounts.
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -2527,7 +2544,7 @@ ROOT_URL = https://mx.example.org/gogs/
-
+
diff --git a/third_party/mailman3/third_party-mailman3/index.html b/third_party/mailman3/third_party-mailman3/index.html
index 88ca727c3..b6df4ea00 100644
--- a/third_party/mailman3/third_party-mailman3/index.html
+++ b/third_party/mailman3/third_party-mailman3/index.html
@@ -69,6 +69,23 @@
+
+
@@ -2837,7 +2854,7 @@ certbot certonly -d MAILMAN_DOMAIN
Follow the mailcow installation. Omit step 5 and do not pull and up with docker-compose
!
Follow the mailcow installation. Omit step 5 and do not pull and up with docker compose
!
This is also Step 4 in the official mailcow installation (nano mailcow.conf
). So change to your needs and alter the following variables:
HTTP_PORT=18080 # don't use 8080 as mailman needs it
@@ -2851,7 +2868,7 @@ SNAT_TO_SOURCE=1.2.3.4 # change this to your IPv4
SNAT6_TO_SOURCE=dead:beef # change this to your global IPv6
Create the file /opt/mailcow-dockerized/docker-compose.override.yml
(e.g. with nano
) and add the following lines:
Create the file /opt/mailcow-dockerized/docker compose.override.yml
(e.g. with nano
) and add the following lines:
version: '2.1'
services:
@@ -2921,7 +2938,7 @@ cd docker-mailman
Create a long key for Hyperkitty, e.g. with the linux command cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo
. Save this key for a moment as HYPERKITTY_KEY.
Create a long password for the database, e.g. with the linux command cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo
. Save this password for a moment as DBPASS.
Create a long key for Django, e.g. with the linux command cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo
. Save this key for a moment as DJANGO_KEY.
-Create the file /opt/docker-mailman/docker-compose.override.yaml
and replace HYPERKITTY_KEY
, DBPASS
and DJANGO_KEY
with the generated values:
+Create the file /opt/docker-mailman/docker compose.override.yaml
and replace HYPERKITTY_KEY
, DBPASS
and DJANGO_KEY
with the generated values:
version: '2'
services:
@@ -2980,11 +2997,11 @@ a2ensite mailman.conf
systemctl restart apache2
cd /opt/docker-mailman
-docker-compose pull
-docker-compose up -d
+docker compose pull
+docker compose up -d
cd /opt/mailcow-dockerized/
-docker-compose pull
+docker compose pull
./renew-ssl.sh
Wait a few minutes! The containers have to create there databases and config files. This can last up to 1 minute and more.
@@ -2992,7 +3009,7 @@ docker-compose pull
New lists aren't recognized by postfix instantly¶
When you create a new list and try to immediately send an e-mail, postfix responses with User doesn't exist
, because postfix won't deliver it to Mailman yet. The configuration at /opt/mailman/core/var/data/postfix_lmtp
is not instantly updated. If you need the list instantly, restart postifx manually:
cd /opt/mailcow-dockerized
-docker-compose restart postfix-mailcow
+docker compose restart postfix-mailcow
Update¶
mailcow has it's own update script in /opt/mailcow-dockerized/update.sh
, see the docs.
@@ -3014,7 +3031,7 @@ docker-compose restart postfix-mailcow
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -3130,7 +3147,7 @@ docker-compose restart postfix-mailcow
Nextcloud can be set up (parameter -i
) and removed (parameter -p
) with the helper script included with mailcow. In order to install Nextcloud simply navigate to your mailcow-dockerized root folder and run the helper script as follows:
./helper-scripts/nextcloud.sh -i
In case you have forgotten the password (e.g. for admin) and can't request a new one via the password reset link on the login screen calling the helper script with -r
as parameter allows you to set a new password. Only use this option if your Nextcloud isn't configured to use mailcow for authentication as described in the next section.
In order for mailcow to generate a a certificate for the nextcloud domain you need to add "nextcloud.domain.tld" to ADDITIONAL_SAN in mailcow.conf and run docker-compose up -d
to apply. For more informaton refer to: Advanced SSL.
In order for mailcow to generate a a certificate for the nextcloud domain you need to add "nextcloud.domain.tld" to ADDITIONAL_SAN in mailcow.conf and run docker compose up -d
to apply. For more informaton refer to: Advanced SSL.
To use the recommended setting (cron) to execute the background jobs following lines need to be added to the docker-compose.override.yml
:
To use the recommended setting (cron) to execute the background jobs following lines need to be added to the docker compose.override.yml
:
version: '2.1'
services:
php-fpm-mailcow:
@@ -2488,9 +2505,9 @@ services:
ofelia.job-exec.nextcloud-cron.schedule: "@every 5m"
ofelia.job-exec.nextcloud-cron.command: "su www-data -s /bin/bash -c \"/usr/local/bin/php -f /web/nextcloud/cron.php\""
After adding these lines the docker-compose up -d
command must be executed to update the docker image and also the docker scheduler image must be restarted to
- pick up the new job definition by executing docker-compose restart ofelia-mailcow
. To check if the job was successfully picked up by ofelia
the command
- docker-compose logs ofelia-mailcow
will contain a line similar to New job registered "nextcloud-cron" - ...
.
After adding these lines the docker compose up -d
command must be executed to update the docker image and also the docker scheduler image must be restarted to
+ pick up the new job definition by executing docker compose restart ofelia-mailcow
. To check if the job was successfully picked up by ofelia
the command
+ docker compose logs ofelia-mailcow
will contain a line similar to New job registered "nextcloud-cron" - ...
.
By adding these lines the background jobs will be executed every 5 minutes. To verify that the execution works correctly, the only way is to see it in the basic
settings when logged in as an admin in Nextcloud. If everything is correct the first scheduled execution will change the background jobs processing setting to
(X) Cron
and the timestamp after Last job ran
will be updated every 5 minutes.
If you have previously used Nextcloud with mailcow authentication via user_external/IMAP, you need to perform some additional steps to link your existing user accounts with OAuth2.
1. Click the button in the top right corner and select Apps. Scroll down to the External user authentication app and click Remove next to it.
-2. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
):
+2. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
):
INSERT INTO nc_users (uid, uid_lower) SELECT DISTINCT uid, LOWER(uid) FROM nc_users_external;
INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users_external;
If you have previously used Nextcloud without mailcow authentication, but with the same usernames as mailcow, you can also link your existing user accounts with OAuth2.
-1. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run source mailcow.conf && docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
):
+
1. Run the following queries in your Nextcloud database (if you set up Nextcloud using mailcow's script, you can run source mailcow.conf && docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME
):
INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users;
After the changes have been made, the nginx container must be restarted.
-docker-compose restart nginx-mailcow
docker compose restart nginx-mailcow
In order to enable Portainer, the docker-compose.yml and site.conf for Nginx must be modified.
-1. Create a new file docker-compose.override.yml
in the mailcow-dockerized root folder and insert the following configuration
+
In order to enable Portainer, the docker compose.yml and site.conf for Nginx must be modified.
+1. Create a new file docker compose.override.yml
in the mailcow-dockerized root folder and insert the following configuration
version: '2.1'
services:
portainer-mailcow:
@@ -2418,7 +2435,7 @@ map $http_upgrade $connection_upgrade {
}
3. Apply your changes: -
docker-compose up -d && docker-compose restart nginx-mailcow
+docker compose up -d && docker compose restart nginx-mailcow
Now you can simply navigate to https://${MAILCOW_HOSTNAME}/portainer/ to view your Portainer container monitoring page. You’ll then be prompted to specify a new password for the admin account. After specifying your password, you’ll then be able to connect to the Portainer UI.
@@ -2427,7 +2444,7 @@ map $http_upgrade $connection_upgrade {
Last update:
- 2022-07-17 17:01:03
+ 2022-08-31 14:45:46
@@ -2543,7 +2560,7 @@ map $http_upgrade $connection_upgrade {
Edit docker-compose.override.yml
and crate/extend the section for php-fpm-mailcow
:
Edit docker compose.override.yml
and crate/extend the section for php-fpm-mailcow
:
version: '2.1'
services:
php-fpm-mailcow:
@@ -2676,8 +2693,8 @@ services:
data/web/rc-auth.php
Finally, restart mailcow
-docker-compose down
-docker-compose up -d
+docker compose down
+docker compose up -d
@@ -2685,7 +2702,7 @@ docker-compose up -d
Last update:
- 2022-08-02 19:01:54
+ 2022-08-31 14:45:46
@@ -2786,7 +2803,7 @@ docker-compose up -d
-
+
diff --git a/troubleshooting/debug-admin_login_sogo/index.html b/troubleshooting/debug-admin_login_sogo/index.html
index 1ed5a6487..7c3f5630e 100644
--- a/troubleshooting/debug-admin_login_sogo/index.html
+++ b/troubleshooting/debug-admin_login_sogo/index.html
@@ -69,6 +69,23 @@
ALLOW_ADMIN_EMAIL_LOGIN=y
docker-compose up -d
+docker compose up -d
Drawbacks when enabled¶
@@ -2488,7 +2505,7 @@ In most cases, this should not be noticeable but should be kept in mind if you f
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2604,7 +2621,7 @@ In most cases, this should not be noticeable but should be kept in mind if you f
To attach a container to your shell you can simply run
-docker-compose exec $Service_Name /bin/bash
+docker compose exec $Service_Name /bin/bash
Connecting to Services¶
If you want to connect to a service / application directly it is always a good idea to source mailcow.conf
to get all relevant variables into your environment.
MySQL¶
source mailcow.conf
-docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
+docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
Redis¶
-docker-compose exec redis-mailcow redis-cli
+docker compose exec redis-mailcow redis-cli
Service Descriptions¶
Here is a brief overview of what container / service does what:
@@ -2592,7 +2609,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2708,7 +2725,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
-
+
diff --git a/troubleshooting/debug-common_problems/index.html b/troubleshooting/debug-common_problems/index.html
index 4aedc4be9..c3e0cdc30 100644
--- a/troubleshooting/debug-common_problems/index.html
+++ b/troubleshooting/debug-common_problems/index.html
@@ -69,6 +69,23 @@
Please read our guide on DNS configuration.
-... like:
ERROR: Invalid interpolation format ...
AttributeError: 'NoneType' object has no attribute 'keys'
.ERROR: In file './docker-compose.yml' service 'version' doesn't have any configuration options
.ERROR: In file './docker compose.yml' service 'version' doesn't have any configuration options
.When you encounter one or similar messages while trying to run mailcow: dockerized please check if you have the latest version of Docker and docker-compose
+When you encounter one or similar messages while trying to run mailcow: dockerized please check if you have the latest version of Docker and docker compose
This error tries to tell you that one of the (health) conditions for a certain container are not met. Therefore it can't be started. This can have several reasons, the most common one is an updated git clone but old docker image or vice versa.
A wrong configured firewall could also cause such a failure. The containers need to be able to talk to each other over the network 172.22.1.1/24.
@@ -2596,7 +2613,7 @@ key.pem Last update: - 2022-06-23 15:17:00 + 2022-08-31 14:45:46 @@ -2712,7 +2729,7 @@ key.pem - + diff --git a/troubleshooting/debug-logs/index.html b/troubleshooting/debug-logs/index.html index 97a2a4e45..228f13c46 100644 --- a/troubleshooting/debug-logs/index.html +++ b/troubleshooting/debug-logs/index.html @@ -64,6 +64,23 @@Warning
This section only applies for Dockers default logging driver (JSON).
-To view the logs of all mailcow: dockerized related containers, you can use docker-compose logs
inside your mailcow-dockerized folder that contains your mailcow.conf
. This is usually a bit much, but you could trim the output with --tail=100
to the last 100 lines per container, or add a -f
to follow the live output of all your services.
To view the logs of a specific service you can use docker-compose logs [options] $service_name
To view the logs of all mailcow: dockerized related containers, you can use docker compose logs
inside your mailcow-dockerized folder that contains your mailcow.conf
. This is usually a bit much, but you could trim the output with --tail=100
to the last 100 lines per container, or add a -f
to follow the live output of all your services.
To view the logs of a specific service you can use docker compose logs [options] $service_name
Info
-The available options for the command docker-compose logs are:
+The available options for the command docker compose logs are:
If your server crashed and MariaDB logs an error similar to [ERROR] mysqld: Aria recovery failed. Please run aria_chk -r on all Aria tables (*.MAI) and delete all aria_log.######## files
you may want to try the following to recover the database to a healthy state:
Start the stack and wait until mysql-mailcow begins to report a restarting state. Check by running docker-compose ps
.
Start the stack and wait until mysql-mailcow begins to report a restarting state. Check by running docker compose ps
.
Now run the following commands:
# Stop the stack, don't run "down"
-docker-compose stop
+docker compose stop
# Run a bash in the stopped container as user mysql
-docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql bash"' mysql-mailcow
+docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql bash"' mysql-mailcow
# cd to the SQL data directory
cd /var/lib/mysql
# Run aria_chk
@@ -2432,14 +2449,14 @@ aria_chk --check --force */*.MAI
# Delete aria log files
rm aria_log.*
Now run docker-compose down
followed by docker-compose up -d
.
Now run docker compose down
followed by docker compose up -d
.
This step is usually not necessary.
-docker-compose stop mysql-mailcow watchdog-mailcow
-docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && bash && exit 0"' mysql-mailcow
+docker compose stop mysql-mailcow watchdog-mailcow
+docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && bash && exit 0"' mysql-mailcow
As soon as the SQL shell spawned, run mysql_upgrade
and exit the container:
mysql_upgrade
@@ -2432,7 +2449,7 @@ exit
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2548,7 +2565,7 @@ exit
-
+
diff --git a/troubleshooting/debug-reset_pw/index.html b/troubleshooting/debug-reset_pw/index.html
index 2ae57acb2..9f4b92bf4 100644
--- a/troubleshooting/debug-reset_pw/index.html
+++ b/troubleshooting/debug-reset_pw/index.html
@@ -69,6 +69,23 @@
Stop the stack by running docker-compose stop
.
Stop the stack by running docker compose stop
.
When the containers came to a stop, run this command:
-docker-compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && mysql -hlocalhost -uroot && exit 0"' mysql-mailcow
+docker compose run --rm --entrypoint '/bin/sh -c "gosu mysql mysqld --skip-grant-tables & sleep 10 && mysql -hlocalhost -uroot && exit 0"' mysql-mailcow
1. Find database name¶
# source mailcow.conf
-# docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
+# docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
MariaDB [(none)]> show databases;
+--------------------+
| Database |
@@ -2626,10 +2643,10 @@ MariaDB [(none)]> FLUSH PRIVILEGES;
For mailcow WebUI:¶
This works similar to resetting a MySQL password, now we do it from the host without connecting to the MySQL CLI:
source mailcow.conf
-docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='YOUR_USERNAME';"
+docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM tfa WHERE username='YOUR_USERNAME';"
For SOGo:¶
-docker-compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled '{"SOGoGoogleAuthenticatorEnabled":0}'
+docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled '{"SOGoGoogleAuthenticatorEnabled":0}'
@@ -2637,7 +2654,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e &qu
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2753,7 +2770,7 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e &qu
-
+
diff --git a/troubleshooting/debug-reset_tls/index.html b/troubleshooting/debug-reset_tls/index.html
index f6f8d2662..45c4a1116 100644
--- a/troubleshooting/debug-reset_tls/index.html
+++ b/troubleshooting/debug-reset_tls/index.html
@@ -64,6 +64,23 @@
+
+
@@ -2370,12 +2387,12 @@
In case you encounter problems with your certificate, key or Let's Encrypt account, please try to reset the TLS assets:
source mailcow.conf
-docker-compose down
+docker compose down
rm -rf data/assets/ssl
mkdir data/assets/ssl
openssl req -x509 -newkey rsa:4096 -keyout data/assets/ssl-example/key.pem -out data/assets/ssl-example/cert.pem -days 365 -subj "/C=DE/ST=NRW/L=Willich/O=mailcow/OU=mailcow/CN=${MAILCOW_HOSTNAME}" -sha256 -nodes
cp -n -d data/assets/ssl-example/*.pem data/assets/ssl/
-docker-compose up -d
+docker compose up -d
This will stop mailcow, source the variables we need, create a self-signed certificate and start mailcow.
If you use Let's Encrypt you should be careful as you will create a new account and a new set of certificates. You will run into a ratelimit sooner or later.
@@ -2386,7 +2403,7 @@ docker-compose up -d
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2502,7 +2519,7 @@ docker-compose up -d
rspamd-vol-1
to remove all Rspamd data.crypt-vol-1
to remove all crypto data. This will render all mails unreadable.Alternatively, running docker-compose down -v
will destroy all mailcow: dockerized volumes and delete any related containers and networks.
Alternatively, running docker compose down -v
will destroy all mailcow: dockerized volumes and delete any related containers and networks.
A quick guide to deeply analyze a malfunctioning Rspamd.
-docker-compose exec rspamd-mailcow bash
+docker compose exec rspamd-mailcow bash
if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then
sed -i 's/apt-stable/apt-stable-asan/i' /etc/apt/sources.list.d/rspamd.list
@@ -2384,17 +2401,17 @@ nano /docker-entrypoint.sh
export G_SLICE=always-malloc
export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0
-Restart Rspamd: docker-compose restart rspamd-mailcow
+Restart Rspamd: docker compose restart rspamd-mailcow
Your memory consumption will increase by a lot, it will also steadily grow, which is not related to a possible memory leak you are looking for.
-Leave the container running for a few minutes, hours or days (it should match the time you usually wait for the leak to "happen") and restart it: docker-compose restart rspamd-mailcow
.
-Now enter the container by running docker-compose exec rspamd-mailcow bash
, change the directory to /tmp and copy the asan Files to your desired location or upload them via termbin.com (cat /tmp/rspamd-asan.* | nc termbin.com 9999
).
+Leave the container running for a few minutes, hours or days (it should match the time you usually wait for the leak to "happen") and restart it: docker compose restart rspamd-mailcow
.
+Now enter the container by running docker compose exec rspamd-mailcow bash
, change the directory to /tmp and copy the asan Files to your desired location or upload them via termbin.com (cat /tmp/rspamd-asan.* | nc termbin.com 9999
).
Last update:
- 2022-06-23 15:17:00
+ 2022-08-31 14:45:46
@@ -2510,7 +2527,7 @@ export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violati
-
+
diff --git a/troubleshooting/debug/index.html b/troubleshooting/debug/index.html
index b51da4cb8..3eec7a164 100644
--- a/troubleshooting/debug/index.html
+++ b/troubleshooting/debug/index.html
@@ -64,6 +64,23 @@