diff --git a/backup_restore/b_n_r-accidental_deletion/index.html b/backup_restore/b_n_r-accidental_deletion/index.html index 735d82829..da596ef93 100644 --- a/backup_restore/b_n_r-accidental_deletion/index.html +++ b/backup_restore/b_n_r-accidental_deletion/index.html @@ -2428,9 +2428,9 @@
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 force-resync -u restoreme@example.net '*'
docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
-
+
Please do not copy this script to another location.
To run a backup, write "backup" as first parameter and either one or more components to backup as following parameters.
You can also use "all" as second parameter to backup all components. Append --delete-days n
to delete backups older than n days.
# Syntax:
+# Syntax:
# ./helper-scripts/backup_and_restore.sh backup (vmail|crypt|redis|rspamd|postfix|mysql|all|--delete-days)
# Backup all, delete backups older than 3 days
@@ -2465,19 +2465,19 @@ You can also use "all" as second parameter to backup all components. Append
+
The script will ask you for a backup location. Inside of this location it will create folders in the format "mailcow_DATE". You should not rename those folders to not break the restore process.
To run a backup unattended, define MAILCOW_BACKUP_LOCATION as environment variable before starting the script:
-MAILCOW_BACKUP_LOCATION=/opt/backup /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all
-
MAILCOW_BACKUP_LOCATION=/opt/backup /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all
+
You can run the backup script regularly via cronjob. Make sure BACKUP_LOCATION
exists:
5 4 * * * cd /opt/mailcow-dockerized/; MAILCOW_BACKUP_LOCATION=/mnt/mailcow_backups /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup mysql crypt redis --delete-days 3
-
5 4 * * * cd /opt/mailcow-dockerized/; MAILCOW_BACKUP_LOCATION=/mnt/mailcow_backups /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup mysql crypt redis --delete-days 3
+
Per default cron sends the full result of each backup operation by email. If you want cron to only mail on error (non-zero exit code) you may want to use the following snippet. Pathes need to be modified according to your setup (this script is a user contribution).
This following script may be placed in /etc/cron.daily/mailcow-backup
- do not forget to mark it as executable via chmod +x
:
#!/bin/sh
+#!/bin/sh
# Backup mailcow data
# https://mailcow.github.io/mailcow-dockerized-docs/backup_restore/b_n_r-backup/
@@ -2502,17 +2502,17 @@ if [ $RESULT -ne 0 ]
echo "STDOUT / STDERR:"
cat "$OUT"
fi
-
+
Create the destination directory for mailcows helper script: -
mkdir -p /external_share/backups/backup_script
-
mkdir -p /external_share/backups/backup_script
+
Create cronjobs: -
25 1 * * * rsync -aH --delete /opt/mailcow-dockerized /external_share/backups/mailcow-dockerized
+25 1 * * * rsync -aH --delete /opt/mailcow-dockerized /external_share/backups/mailcow-dockerized
40 2 * * * rsync -aH --delete /var/lib/docker/volumes /external_share/backups/var_lib_docker_volumes
5 4 * * * cd /opt/mailcow-dockerized/; BACKUP_LOCATION=/external_share/backups/backup_script /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup mysql crypt redis --delete-days 3
# If you want to, use the acl util to backup permissions of some/all folders/files: getfacl -Rn /path
-
+
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
.
This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory: -
cd /path/to/mailcow-dockerized
+cd /path/to/mailcow-dockerized
docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail
-
+
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
+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
-
+
cd /path/to/mailcow-dockerized
+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
-
+
Warning
You should redirect the SQL dump without docker-compose
to prevent parsing errors.
cd /path/to/mailcow-dockerized
+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
-
+
You will need a SSH-enabled destination and a keyfile to connect to said destination. The key should not be protected by a password for the script to work unattended.
In your mailcow base directory, e.g. /opt/mailcow-dockerized
you will find a file create_cold_standby.sh
.
Edit this file and change the exported variables:
-export REMOTE_SSH_KEY=/path/to/keyfile
+export REMOTE_SSH_KEY=/path/to/keyfile
export REMOTE_SSH_PORT=22
export REMOTE_SSH_HOST=mailcow-backup.host.name
-
+
The 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 v1 available.
You may want to test the connection by running ssh mailcow-backup.host.name -p22 -i /path/to/keyfile
.
Run the first backup, this may take a while depending on the connection:
-bash /opt/mailcow-dockerized/create_cold_standby.sh
-
bash /opt/mailcow-dockerized/create_cold_standby.sh
+
That was easy, wasn't it?
Updating your cold-standby is just as easy:
-bash /opt/mailcow-dockerized/create_cold_standby.sh
-
bash /opt/mailcow-dockerized/create_cold_standby.sh
+
It's the same command.
First make sure that the cron
service is enabled and running:
systemctl enable cron.service && systemctl start cron.service
-
systemctl enable cron.service && systemctl start cron.service
+
To automate the backups to the cold-standby server you can use a cron job. To edit the cron jobs for the root user run:
-crontab -e
-
crontab -e
+
Add the following lines to synchronize the cold standby server daily at 03:00. In this example errors of the last execution are logged into a file.
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 3 * * * bash /opt/mailcow-dockerized/create_cold_standby.sh 2> /var/log/mailcow-coldstandby-sync.log
-
+
If saved correctly, the cron job should be shown by typing:
-crontab -l
-
crontab -l
+
Please do not copy this script to another location.
To run a restore, start mailcow, use the script with "restore" as first parameter.
-# Syntax:
+# Syntax:
# ./helper-scripts/backup_and_restore.sh restore
-
+
The script will ask you for a backup location containing the mailcow_DATE folders.
Um die Mailbox wiederherzustellen, stellen Sie sicher, dass Sie tatsächlich auf die gleiche Mailcow wiederherstellen, von der sie gelöscht wurde, oder Sie verwenden die gleichen Verschlüsselungsschlüssel in crypt-vol-1
.
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 force-resync -u restoreme@example.net '*'
docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
-
+
Bitte kopieren Sie dieses Skript nicht an einen anderen Ort.
Um ein Backup zu starten, geben Sie "backup" als ersten Parameter an und entweder eine oder mehrere zu sichernde Komponenten als folgende Parameter.
Sie können auch "all" als zweiten Parameter verwenden, um alle Komponenten zu sichern. Fügen Sie --delete-days n
an, um Sicherungen zu löschen, die älter als n Tage sind.
# Syntax:
+# Syntax:
# ./helper-scripts/backup_and_restore.sh backup (vmail|crypt|redis|rspamd|postfix|mysql|all|--delete-days)
# Alles sichern, Sicherungen älter als 3 Tage löschen
@@ -2465,19 +2465,19 @@ Sie können auch "all" als zweiten Parameter verwenden, um alle Komponenten zu s
# vmail sichern
./helper-scripts/backup_and_restore.sh backup vmail
-
+
Das Skript wird Sie nach einem Speicherort für die Sicherung fragen. Innerhalb dieses Speicherortes wird es Ordner im Format "mailcow_DATE" erstellen. Sie sollten diese Ordner nicht umbenennen, um den Wiederherstellungsprozess nicht zu unterbrechen.
Um ein Backup unbeaufsichtigt durchzuführen, definieren Sie MAILCOW_BACKUP_LOCATION als Umgebungsvariable bevor Sie das Skript starten:
-MAILCOW_BACKUP_LOCATION=/opt/backup /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all
-
MAILCOW_BACKUP_LOCATION=/opt/backup /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all
+
Sie können das Backup-Skript regelmäßig über einen Cronjob laufen lassen. Stellen Sie sicher, dass BACKUP_LOCATION
existiert:
5 4 * * * cd /opt/mailcow-dockerized/; MAILCOW_BACKUP_LOCATION=/mnt/mailcow_backups /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup mysql crypt redis --delete-days 3
-
5 4 * * * cd /opt/mailcow-dockerized/; MAILCOW_BACKUP_LOCATION=/mnt/mailcow_backups /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup mysql crypt redis --delete-days 3
+
Standardmäßig sendet Cron das komplette Ergebnis jeder Backup-Operation per E-Mail. Wenn Sie möchten, dass cron nur im Fehlerfall (Exit-Code ungleich Null) eine E-Mail sendet, können Sie den folgenden Ausschnitt verwenden. Die Pfade müssen entsprechend Ihrer Einrichtung angepasst werden (dieses Skript ist ein Beitrag des Benutzers).
Das folgende Skript kann in /etc/cron.daily/mailcow-backup
platziert werden - vergessen Sie nicht, es mit chmod +x
als ausführbar zu markieren:
#!/bin/sh
+#!/bin/sh
# Backup mailcow data
# https://mailcow.github.io/mailcow-dockerized-docs/b_n_r_backup/
@@ -2521,17 +2521,17 @@ if [ $RESULT -ne 0 ]
echo "STDOUT / STDERR:"
cat "$OUT"
fi
-
+
Erstellen Sie das Zielverzeichnis für mailcows Hilfsskript: -
mkdir -p /external_share/backups/backup_script
-
mkdir -p /external_share/backups/backup_script
+
Cronjobs erstellen: -
25 1 * * * rsync -aH --delete /opt/mailcow-dockerized /external_share/backups/mailcow-dockerized
+25 1 * * * rsync -aH --delete /opt/mailcow-dockerized /external_share/backups/mailcow-dockerized
40 2 * * * rsync -aH --delete /var/lib/docker/volumes /external_share/backups/var_lib_docker_volumes
5 4 * * * cd /opt/mailcow-dockerized/; BACKUP_LOCATION=/external_share/backups/backup_script /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup mysql crypt redis --delete-days 3
# Wenn Sie wollen, benutzen Sie acl util, um die Berechtigungen einiger/aller Ordner/Dateien zu sichern: getfacl -Rn /path
-
+
Am Zielort (in diesem Fall /external_share/backups
) möchten Sie vielleicht Snapshot-Fähigkeiten 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 einhalten!
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.
Diese Zeile sichert das vmail-Verzeichnis in eine Datei backup_vmail.tar.gz im mailcow-Root-Verzeichnis: -
cd /pfad/zu/mailcow-dockerized
+cd /pfad/zu/mailcow-dockerized
docker run --rm -i -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail
-
+
Sie können den Pfad ändern, indem Sie ${PWD} (das dem aktuellen Verzeichnis entspricht) an einen beliebigen Pfad anpassen, 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_filename_.tar.gz
cd /pfad/zu/mailcow-dockerized
+cd /pfad/zu/mailcow-dockerized
docker run --rm -it -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar xvfz /backup/backup_vmail.tar.gz
-
+
cd /pfad/zu/mailcow-dockerized
+cd /pfad/zu/mailcow-dockerized
source mailcow.conf
DATE=$(Datum +"%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
-
+
Warning
Sie sollten den SQL-Dump ohne docker-compose
umleiten, um Parsing-Fehler zu vermeiden.
cd /pfad/zu/mailcow-dockerized
+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
-
+
Sie benötigen ein SSH-fähiges Ziel und eine Schlüsseldatei, um sich mit diesem Ziel zu verbinden. Der Schlüssel sollte nicht durch ein Passwort geschützt sein, damit das Skript unbeaufsichtigt arbeiten kann.
In Ihrem mailcow-Basisverzeichnis, z.B. /opt/mailcow-dockerized
, finden Sie eine Datei create_cold_standby.sh
.
Bearbeiten Sie diese Datei und ändern Sie die exportierten Variablen:
-export REMOTE_SSH_KEY=/pfad/zur/keyfile
+export REMOTE_SSH_KEY=/pfad/zur/keyfile
export REMOTE_SSH_PORT=22
export REMOTE_SSH_HOST=mailcow-backup.host.name
-
+
Der 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 v1 verfügen.
Sie können die Verbindung testen, indem Sie ssh mailcow-backup.host.name -p22 -i /path/to/keyfile
ausführen.
Starten Sie das erste Backup, dies kann je nach Verbindung eine Weile dauern:
-bash /opt/mailcow-dockerized/create_cold_standby.sh
-
bash /opt/mailcow-dockerized/create_cold_standby.sh
+
Das war einfach, nicht wahr?
Das Aktualisieren des Cold-Standby ist genauso einfach:
-bash /opt/mailcow-dockerized/create_cold_standby.sh
-
bash /opt/mailcow-dockerized/create_cold_standby.sh
+
Es ist derselbe Befehl.
Stellen Sie zunächst sicher, dass der cron
Dienst aktiviert ist und läuft:
systemctl enable cron.service && systemctl start cron.service
-
systemctl enable cron.service && systemctl start cron.service
+
Um die Backups auf dem Cold-Standby-Server zu automatisieren, können Sie einen Cron-Job verwenden. Um die Cron-Jobs für den Root-Benutzer zu bearbeiten, führen Sie aus:
-crontab -e
-
crontab -e
+
Fügen Sie die folgenden Zeilen hinzu, um den Cold-Standby-Server täglich um 03:00 Uhr zu synchronisieren. In diesem Beispiel werden Fehler der letzten Ausführung in einer Datei protokolliert.
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 3 * * * bash /opt/mailcow-dockerized/create_cold_standby.sh 2> /var/log/mailcow-coldstandby-sync.log
-
+
Wenn korrekt gespeichert, sollte der Cron-Job durch Eingabe angezeigt werden:
-crontab -l
-
crontab -l
+
Bitte kopieren Sie dieses Skript nicht an einen anderen Ort.
Um eine Wiederherstellung durchzuführen, starten Sie mailcow, verwenden Sie das Skript mit "restore" als ersten Parameter.
-# Syntax:
+# Syntax:
# ./helper-scripts/backup_and_restore.sh restore
-
+
Das Skript wird Sie nach einem Speicherort für die Sicherung der mailcow_DATE-Ordner fragen.
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
Docker -
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
+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
@@ -2365,44 +2365,44 @@ systemctl enable --now dockermailcow benötigt die neueste Version von docker-compose v1. 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).
curl -L https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
+curl -L https://github.com/docker/compose/releases/download/$(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:
rpm -qa | grep container-selinux
-
rpm -qa | grep container-selinux
+
Wenn der obige Befehl eine leere oder keine Ausgabe liefert, sollten Sie es über Ihren Paketmanager installieren.
docker info | grep selinux
-
docker info | grep selinux
+
Wenn der obige Befehl eine leere oder keine Ausgabe liefert, erstellen oder bearbeiten Sie /etc/docker/daemon.json
und fügen Sie "selinux-enabled": true
hinzu. Beispielhafter Inhalt der Datei:
{
+{
"selinux-enabled": true
}
-
+
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.
-$ su
+$ su
# umask
0022 # <- Überprüfen, dass es 0022 ist
# cd /opt
# 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.
-
./generate_config.sh
-
./generate_config.sh
+
4. Ändern Sie die Konfiguration, wenn Sie das wollen oder müssen. -
nano mailcow.conf
-
nano mailcow.conf
+
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.
@@ -2410,20 +2410,20 @@ Wenn Sie planen, einen Reverse Proxy zu verwenden, können Sie zum Beispiel HTTPWenn 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.
Fügen Sie den neuen Parameter driver_opts wie folgt hinzu:
-
networks:
+networks:
mailcow-network:
...
driver_opts:
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 pull
docker-compose up -d
-
+
Geschafft!
Sie können nun auf https://${MAILCOW_HOSTNAME} mit den Standard-Zugangsdaten admin
+ Passwort moohoo
zugreifen.
Docker -
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
+curl -sSL https://get.docker.com/ | CHANNEL=stable sh
# Nachdem der Installationsprozess abgeschlossen ist, müssen Sie den Dienst aktivieren und sicherstellen, dass er gestartet ist (z. B. CentOS 7)
systemctl enable docker.service
-
+
docker-compose -
curl -L https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
+curl -L https://github.com/docker/compose/releases/download/$(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.
2. Stoppen Sie Docker und stellen Sie sicher, dass Docker gestoppt wurde: -
systemctl stop docker.service
+systemctl stop docker.service
systemctl status docker.service
-
+
3. Führen Sie die folgenden Befehle auf dem Quellcomputer aus (achten Sie darauf, die abschließenden Schrägstriche im ersten Pfadparameter wie unten gezeigt hinzuzufügen!) - WARNUNG: Dieser Befehl löscht alles, was bereits unter /var/lib/docker/volumes
auf dem Zielrechner existiert:
-
rsync -aHhP --numeric-ids --delete /opt/mailcow-dockerized/ root@target-machine.example.com:/opt/mailcow-dockerized
+rsync -aHhP --numeric-ids --delete /opt/mailcow-dockerized/ root@target-machine.example.com:/opt/mailcow-dockerized
rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.example.com:/var/lib/docker/volumes
-
+
4. Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner. -
cd /opt/mailcow-dockerized
+cd /opt/mailcow-dockerized
docker-compose herunterfahren
systemctl stop docker.service
-
+
**Wiederholen Sie Schritt 3 mit denselben Befehlen. Dies wird viel schneller gehen als beim ersten Mal.
6. Wechseln Sie auf den Zielrechner und starten Sie Docker. -
systemctl start docker.service
-
systemctl start docker.service
+
7. Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner. -
cd /opt/mailcow-dockerized
+cd /opt/mailcow-dockerized
docker-compose pull
-
+
8. Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein! -
docker-compose up -d
-
docker-compose up -d
+
9. Zum Schluss ändern Sie Ihre DNS-Einstellungen so, dass sie auf den Zielserver zeigen.
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: -
./update.sh
-
./update.sh
+
Wenn es nötig ist, wird es Sie fragen, wie Sie fortfahren möchten. Merge-Fehler werden gemeldet. Einige kleinere Konflikte werden automatisch korrigiert (zugunsten des mailcow: dockerized repository code).
# Optionen können kombiniert werden
+# Optionen können kombiniert werden
# - Prüft auf Updates und zeigt Änderungen an
./update.sh --check
@@ -2509,22 +2509,22 @@ Einige kleinere Konflikte werden automatisch korrigiert (zugunsten des mailcow:
# - Nicht aktualisieren, nur holen von Docker Images
./update.sh --prefetch
-
+
Siehe git log --pretty=oneline | grep -i "before update"
, Sie werden eine Ausgabe ähnlich dieser haben:
22cd00b5e28893ef9ddef3c2b5436453cc5223ab Before update on 2020-09-28_19_25_45
+22cd00b5e28893ef9ddef3c2b5436453cc5223ab Before update on 2020-09-28_19_25_45
dacd4fb9b51e9e1c8a37d84485b92ffaf6c59353 Before update on 2020-08-07_13_31_31
-
+
Führen Sie git diff 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
aus, um zu sehen, was sich geändert hat.
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
-
+
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.
your_id
von den Downloadlinks. Diese sind pro User individuell.Fügen Sie diese wie folgt in die data/conf/clamav/freshclam.conf
ein und ersetzen Sie den your_id
Teil mit Ihrer ID:
-
DatabaseCustomURL https://www.securiteinfo.com/get/signatures/your_id/securiteinfo.hdb
+DatabaseCustomURL https://www.securiteinfo.com/get/signatures/your_id/securiteinfo.hdb
DatabaseCustomURL https://www.securiteinfo.com/get/signatures/your_id/securiteinfo.ign2
DatabaseCustomURL https://www.securiteinfo.com/get/signatures/your_id/javascript.ndb
DatabaseCustomURL https://www.securiteinfo.com/get/signatures/your_id/spam_marketing.ndb
DatabaseCustomURL https://www.securiteinfo.com/get/signatures/your_id/securiteinfohtml.hdb
DatabaseCustomURL https://www.securiteinfo.com/get/signatures/your_id/securiteinfoascii.hdb
DatabaseCustomURL https://www.securiteinfo.com/get/signatures/your_id/securiteinfopdf.hdb
-
+
Bei den kostenlosen SecuriteInfo Datenbanken ist die Download-Geschwindigkeit auf 300 kB/s begrenzt. Ändern Sie in data/conf/clamav/freshclam.conf
den Standardwert ReceiveTimeout 20
auf ReceiveTimeout 90
(Zeitangabe in Sekunden), da ansonsten einige der Datenbank-Downloads aufgrund ihrer Größe abbrechen können.
Passen Sie data/conf/clamav/clamd.conf
mit den folgenden Einstellungen an:
-
DetectPUA yes
+DetectPUA yes
ExcludePUA PUA.Win.Packer
ExcludePUA PUA.Win.Trojan.Packed
ExcludePUA PUA.Win.Trojan.Molebox
@@ -2493,11 +2493,11 @@ MaxEmbeddedPE 100M
MaxHTMLNormalize 50M
MaxScriptNormalize 50M
MaxZipTypeRcg 50M
-
+
docker-compose restart clamd-mailcow
-
docker-compose restart clamd-mailcow
+
Bitte beachten Sie:
data/conf/clamav/freshclam.conf
ein:
-DatabaseCustomURL http://sigs.interserver.net/interserver256.hdb
+DatabaseCustomURL http://sigs.interserver.net/interserver256.hdb
DatabaseCustomURL http://sigs.interserver.net/interservertopline.db
DatabaseCustomURL http://sigs.interserver.net/shell.ldb
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
-
+
docker-compose restart clamd-mailcow
-
docker-compose restart clamd-mailcow
+
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
-
clamd-mailcow_1 | Sat Sep 28 07:43:24 2019 -> instream(local): PUA.Pdf.Trojan.EmbeddedJavaScript-1(e887d2ac324ce90750768b86b63d0749:363325) FOUND
+
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
-
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
-
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
-
+
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
-
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
+
Um eine schöne Bash-Vervollständigung in Ihren Containern zu erhalten, führen Sie einfach das Folgende aus:
-curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
-
curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
+
Am 17. August haben wir die Möglichkeit, mit "jedem" oder "allen authentifizierten Benutzern" zu teilen, standardmäßig deaktiviert.
Diese Funktion kann wieder aktiviert werden, indem ACL_ANYONE
auf allow
in mailcow.conf gesetzt wird:
ACL_ANYONE=allow
-
ACL_ANYONE=allow
+
Wenden Sie die Änderungen an, indem Sie docker-compose up -d
ausführen.
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
Für mögliche Zeitspannen oder SearchQuery schauen Sie bitte in man doveadm-search-query
@@ -2472,21 +2472,21 @@Wenn Sie eine solche Aufgabe automatisieren wollen, können Sie einen Cron-Job auf Ihrem Rechner erstellen, der ein Skript wie das folgende aufruft:
-#!/bin/bash
+#!/bin/bash
# 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
[...]
-
+
Um einen Cronjob zu erstellen, können Sie crontab -e
ausführen und etwas wie das Folgende einfügen, um ein Skript auszuführen:
# Jeden Tag um 04:00 Uhr morgens ausführen.
+# Jeden Tag um 04:00 Uhr morgens ausführen.
0 4 * * * /pfad/zu/ihr/expunge_mailboxes.sh
-
+
Um dies mit einem Docker-Job-Scheduler zu archivieren, verwenden Sie diese docker-compose.override.yml mit Ihrer Mailcow:
-version: '2.1'
+version: '2.1'
services:
@@ -2504,12 +2504,12 @@ services:
- "ofelia.job-exec.dovecot-expunge-trash.schedule=0 4 * * *"
- "ofelia.job-exec.dovecot-expunge-trash.command=doveadm expunge -A mailbox 'Junk' savedbefore 2w"
- "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:
-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)] 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,
-
+
Wenn der Vorgang fehlgeschlagen ist, wird dies angegeben und die Ausgabe von doveadm im Protokoll aufgeführt, um Ihnen die Fehlersuche zu erleichtern.
Falls Sie weitere Jobs hinzufügen wollen, stellen Sie sicher, dass Sie den "dovecot-expunge-trash"-Teil nach "ofelia.job-exec." in etwas anderes ändern, er definiert den Namen des Jobs. Die Syntax der Labels finden Sie unter mcuadros/ofelia.
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 e4b4e3b7f..0912e3f41 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 @@ -2349,8 +2349,8 @@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
+
Die Standard-Heap-Größe (1024 M) ist in mailcow.conf definiert.
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
+# Einzelbenutzer
docker-compose exec dovecot-mailcow doveadm fts rescan -u user@domain
# alle Benutzer
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
+# einzelner Benutzer
docker-compose exec dovecot-mailcow doveadm index -u user@domain '*'
# alle Benutzer, aber offensichtlich langsamer und gefährlicher
docker-compose exec dovecot-mailcow doveadm index -A '*'
-
+
Dies wird einige Zeit in Anspruch nehmen, abhängig von Ihrer Maschine und Solr kann oom ausführen, überwachen Sie es!
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.
Erstellen Sie eine neue Datei data/conf/dovecot/extra.conf
(oder bearbeiten Sie sie, falls sie bereits existiert).
Fügen Sie die Einstellung ein, gefolgt von dem neuen Wert. Um zum Beispiel das Intervall auf 5 Minuten zu setzen, können Sie Folgendes eingeben:
imap_idle_notify_interval = 5 mins
-
imap_idle_notify_interval = 5 mins
+
29 Minuten ist der maximale Wert, den der entsprechende RFC erlaubt.
Warning
@@ -2471,13 +2471,13 @@ Fügen Sie die Einstellung ein, gefolgt von dem neuen Wert. Um zum Beispiel dasNun 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"
+
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.
# Entschlüsseln Sie /var/vmail
+# 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
doveadm fs get compress lz4:0:crypt:private_key_path=/mail_crypt/ecprivkey.pem:public_key_path=/mail_crypt/ecpubkey.pem:posix:prefix=/ \
@@ -2375,7 +2375,7 @@ doveadm fs put crypt private_key_path=/mail_crypt/ecprivkey.pem:public_key_path=
chown 5000:5000 "$file"
fi
done
-
+
Die Befehle quota get
und quota recalc
1 werden verwendet, um die Quota-Nutzung des aktuellen Benutzers anzuzeigen oder neu zu berechnen. Die angezeigten Werte sind in Kilobytes.
Um den aktuellen Quota-Status für einen Benutzer / eine Mailbox aufzulisten, tun Sie folgendes:
-doveadm quota get -u 'mailbox@example.org'
-
doveadm quota get -u 'mailbox@example.org'
+
Um den Quota-Speicherwert für alle Benutzer aufzulisten, tun Sie folgendes:
-doveadm quota get -A |grep "STORAGE"
-
doveadm quota get -A |grep "STORAGE"
+
Berechnen Sie die Quota-Nutzung eines einzelnen Benutzers neu:
-doveadm quota recalc -u 'mailbox@example.org'
-
doveadm quota recalc -u 'mailbox@example.org'
+
Der Befehl doveadm search
2 wird verwendet, um Nachrichten zu finden, die Ihrer Anfrage entsprechen. Er kann den Benutzernamen, die Mailbox-GUID / -UID und die Nachrichten-GUIDs / -UIDs zurückgeben.
Um die Anzahl der Nachrichten im .Trash Ordner eines Benutzers zu sehen:
-doveadm search -A mailbox 'Trash' | awk '{print $1}' | sort | uniq -c
-
doveadm search -A mailbox 'Trash' | awk '{print $1}' | sort | uniq -c
+
Alle Nachrichten im Postfach eines Benutzers anzeigen, die älter als 90 Tage sind:
-doveadm search -u 'mailbox@example.org' mailbox 'INBOX' savedbefore 90d
-
doveadm search -u 'mailbox@example.org' mailbox 'INBOX' savedbefore 90d
+
Zeige alle Nachrichten in beliebigen Ordnern, die älter sind als 30 Tage für mailbox@example.org
:
doveadm search -u 'mailbox@example.org' mailbox "*" savedbefore 30d
-
doveadm search -u 'mailbox@example.org' mailbox "*" savedbefore 30d
+
Erstellen Sie einen neuen öffentlichen Namespace "Public" und eine Mailbox "Develcow" innerhalb dieses Namespaces:
Bearbeiten oder erstellen Sie data/conf/dovecot/extra.conf
, fügen Sie hinzu:
namespace {
+namespace {
type = public
separator = /
prefix = Public/
@@ -2408,18 +2408,18 @@
auto = subscribe
}
}
-
+
: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
).
Um allen authentifizierten Benutzern vollen Zugriff auf den gesamten öffentlichen Namespace und seine Unterordner zu gewähren, erstellen Sie eine neue Datei dovecot-acl
im Namespace-Stammverzeichnis:
Öffnen/bearbeiten/erstellen Sie /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/public/dovecot-acl
(passen Sie den Pfad entsprechend an), um die globale ACL-Datei mit dem folgenden Inhalt zu erstellen:
authenticated kxeilprwts
-
authenticated kxeilprwts
+
kxeilprwts" ist gleichbedeutend mit "lookup read write write-seen write-deleted insert post delete expunge create".
Sie können doveadm acl set -u user@domain "Public/Develcow" user=user@domain lookup read
verwenden, um den Zugriff für einen einzelnen Benutzer zu beschränken. Sie können es auch umdrehen und den Zugriff für alle Benutzer auf "lr" beschränken und nur einigen Benutzern vollen Zugriff gewähren.
Siehe Dovecot ACL für weitere Informationen über ACL.
diff --git a/de/manual-guides/Dovecot/u_e-dovecot-static_master/index.html b/de/manual-guides/Dovecot/u_e-dovecot-static_master/index.html index 2865c3f92..a206e24ac 100644 --- a/de/manual-guides/Dovecot/u_e-dovecot-static_master/index.html +++ b/de/manual-guides/Dovecot/u_e-dovecot-static_master/index.html @@ -2351,9 +2351,9 @@Das wird empfohlen und sollte nicht geändert werden.
Wenn der Benutzer trotzdem statisch sein soll, geben Sie bitte zwei Variablen in mailcow.conf
an.
Beide Parameter dürfen nicht leer sein!
-DOVECOT_MASTER_USER=mymasteruser
+DOVECOT_MASTER_USER=mymasteruser
DOVECOT_MASTER_PASS=mysecretpass
-
+
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.
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:
mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup
+mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup
ln -s /mnt/volume-xy/vmail_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
-
+
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:
version: '2.1'
+version: '2.1'
volumes:
vmail-vol-1:
driver_opts:
type: none
device: /data/mailcow/vmail
o: bind
-
+
docker volume inspect mailcowdockerized_vmail-vol-1
[
+[
{
"CreatedAt": "2019-06-16T22:08:34+02:00",
"Driver": "local",
@@ -2476,7 +2476,7 @@ volumes:
"Scope": "local"
}
]
-
+
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
)Um persistente (über Updates) Sites zu erstellen, die von mailcow: dockerized gehostet werden, muss eine neue Site-Konfiguration in data/conf/nginx/
platziert werden:
Eine gute Vorlage, um damit zu beginnen:
-nano data/conf/nginx/my_custom_site.conf
-
server {
+nano data/conf/nginx/my_custom_site.conf
+
+server {
ssl_certificate /etc/ssl/mail/cert.pem;
ssl_certificate_key /etc/ssl/mail/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
@@ -2478,12 +2478,12 @@
return 301 https://$server_name$request_uri;
}
}
-
+
Ein weiteres Beispiel mit einer Reverse-Proxy-Konfiguration:
-nano data/conf/nginx/my_custom_site.conf
-
server {
+nano data/conf/nginx/my_custom_site.conf
+
+server {
ssl_certificate /etc/ssl/mail/cert.pem;
ssl_certificate_key /etc/ssl/mail/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
@@ -2519,18 +2519,18 @@
client_max_body_size 0;
}
}
-
+
Der Dateiname, der für eine neue Site verwendet wird, ist nicht wichtig, solange der Dateiname eine .conf-Erweiterung trägt.
Es ist auch möglich, die Konfiguration der Standarddatei site.conf
Datei zu erweitern:
nano data/conf/nginx/site.my_content.custom
-
nano data/conf/nginx/site.my_content.custom
+
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 nginx-mailcow
docker-compose restart php-fpm-mailcow
-
+
WICHTIG: Diese Anleitung gilt nur für Konfigurationen, bei denen SNI nicht aktiviert ist. Wenn SNI aktiviert ist, muss der Zertifikatspfad angepasst werden. Etwas wie ssl_certificate,key /etc/ssl/mail/webmail.example.org/cert.pem,key.pem;
wird genügen. Aber: Das Zertifikat sollte zuerst bezogen werden und erst wenn das Zertifikat existiert, sollte eine Site Config erstellt werden. Nginx wird nicht starten, wenn es das Zertifikat und den Schlüssel nicht finden kann.
Um eine Subdomain webmail.example.org
zu erstellen und sie auf SOGo umzuleiten, müssen Sie eine neue Nginx-Site erstellen. Achten Sie dabei auf "CHANGE_TO_MAILCOW_HOSTNAME"!
nano data/conf/nginx/webmail.conf
-server {
+server {
ssl_certificate /etc/ssl/mail/cert.pem;
ssl_certificate_key /etc/ssl/mail/key.pem;
index index.php index.html;
@@ -2369,12 +2369,12 @@
return 301 https://CHANGE_TO_MAILCOW_HOSTNAME/SOGo;
}
}
-
+
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
-
ADDITIONAL_SAN=webmail.example.org
+
Führen Sie docker-compose up -d
aus. Siehe "acme-mailcow" und "nginx-mailcow" Logs, wenn etwas fehlschlägt.
Ö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
+
Diese Option ist keine Best-Practice und sollte nur verwendet werden, wenn es keine andere Möglichkeit gibt, das zu erreichen, was Sie erreichen wollen.
Erstellen Sie einfach eine Datei data/conf/postfix/check_sasl_access
und tragen Sie den folgenden Inhalt ein. Dieser Benutzer muss in Ihrer Installation existieren und muss sich vor dem Versenden von Mails authentifizieren.
-
user-to-allow-everything@example.com OK
-
user-to-allow-everything@example.com OK
+
Öffnen Sie data/conf/postfix/main.cf
und suchen Sie smtpd_sender_restrictions
. Fügen Sie check_sasl_access hash:/opt/postfix/conf/check_sasl_access
wie folgt ein:
-
smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_access reject_authenticated_sender_login_mismatch [...]
-
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.
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
+
Um pflogsumm mit dem Standard-Logging-Treiber zu verwenden, müssen wir postfix-mailcow über docker logs abfragen und die Ausgabe zu pflogsumm leiten:
-docker logs --since 24h $(docker ps -qf name=postfix-mailcow) | pflogsumm
-
docker logs --since 24h $(docker ps -qf name=postfix-mailcow) | pflogsumm
+
Die obige Log-Ausgabe ist auf die letzten 24 Stunden beschränkt.
Es ist auch möglich, einen täglichen pflogsumm-Bericht über cron zu erstellen. Erstellen Sie die Datei /etc/cron.d/pflogsumm mit dem folgenden Inhalt:
-SHELL=/bin/bash
+SHELL=/bin/bash
59 23 * * * root docker logs --since 24h $(docker ps -qf name=postfix-mailcow) | /usr/sbin/pflogsumm -d today | mail -s "Postfix Report of $(date)" postmaster@example.net
-
+
Um zu funktionieren muss ein lokaler Postfix auf dem Server installiert werden, welcher an den Postfix der mailcow relayed.
Genauere Informationen lassen sich unter Sektion Post-Installationsaufgaben -> Lokaler MTA auf Dockerhost finden.
Basierend auf den Postfix-Logs der letzten 24 Stunden sendet dieses Beispiel dann jeden Tag um 23:59:00 Uhr einen pflogsumm-Bericht an postmaster@example.net.
diff --git a/de/manual-guides/Postfix/u_e-postfix-postscreen_whitelist/index.html b/de/manual-guides/Postfix/u_e-postfix-postscreen_whitelist/index.html index fe581f7b3..baba64a7f 100644 --- a/de/manual-guides/Postfix/u_e-postfix-postscreen_whitelist/index.html +++ b/de/manual-guides/Postfix/u_e-postfix-postscreen_whitelist/index.html @@ -2353,11 +2353,11 @@CIDR ACTION
Dabei steht CIDR für eine einzelne IP-Adresse oder einen IP-Bereich in CIDR-Notation und action entweder für "permit" oder "reject".
Beispiel:
-# Regeln werden in der angegebenen Reihenfolge ausgewertet.
+# Regeln werden in der angegebenen Reihenfolge ausgewertet.
# Schwarze Liste 192.168.* außer 192.168.0.1.
192.168.0.1 permit
192.168.0.0/16 reject
-
+
Die Datei wird spontan neu geladen, ein Neustart von Postfix ist nicht erforderlich.
Um das Subnetz 192.168.2.0/24
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 192.168.2.0/24
-
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [fe80::]/10 172.22.1.0/24 [fd4d:6169:6c63:6f77::]/64 192.168.2.0/24
+
Führen Sie docker-compose restart postfix-mailcow
aus, um Ihre neuen Einstellungen zu übernehmen.
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
-
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.
Info
diff --git a/de/manual-guides/Redis/u_e-redis/index.html b/de/manual-guides/Redis/u_e-redis/index.html index 48729a65a..9909f2b5a 100644 --- a/de/manual-guides/Redis/u_e-redis/index.html +++ b/de/manual-guides/Redis/u_e-redis/index.html @@ -2477,28 +2477,28 @@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
+
Hier sind einige nützliche Befehle für den redis-cli zur Fehlersuche:
Ü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> überwachen
OK
1494077286.401963 [0 172.22.1.253:41228] "SMEMBERS" "BAYES_SPAM_keys"
1494077288.292970 [0 172.22.1.253:41229] "SMEMBERS" "BAYES_SPAM_keys"
[...]
-
+
Ermittelt alle Schlüssel, die dem Muster entsprechen:
-KEYS *
-
KEYS *
+
Testen Sie eine Verbindung:
-127.0.0.1:6379> PING
+127.0.0.1:6379> PING
PONG
-
+
Wenn Sie mehr wissen wollen, hier ist ein Cheat-Sheet.
Sie können auch die Web-UI von Rspamd verwenden, um Ham und/oder Spam zu lernen oder bestimmte Einstellungen von Rspamd anzupassen.
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
+# Ham
+for file in /my/folder/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_ham < $file; done
# Spam
-for file in /my/folder/.Junk/cur/*; do docker exec -i $(docker-compose ps -q rspamd-mailcow) rspamc learn_spam < $file; done
-
+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:
``bash for file in /data/old_mail/.Junk/cur/*; do rspamc learn_spam < zcat $file; done -
### Gelernte Daten zurücksetzen (Bayes, Neural)
+### Gelernte Daten zurücksetzen (Bayes, Neural)
Sie müssen die Schlüssel in Redis löschen, um die gelernten Daten zurückzusetzen, also erstellen Sie jetzt eine Kopie Ihrer Redis-Datenbank:
@@ -2545,30 +2545,30 @@ Sie müssen die Schlüssel in Redis löschen, um die gelernten Daten zurückzuse
```bash
# Es ist besser, Redis zu stoppen, bevor Sie die Datei kopieren.
cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
-
+
Bayes-Daten zurücksetzen
-docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
+docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern BAYES_* | xargs redis-cli del'
docker-compose exec redis-mailcow sh -c 'redis-cli --scan --pattern RS* | xargs redis-cli del'
-
+
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:
+# Wir müssen zuerst das redis-cli eingeben:
docker-compose exec redis-mailcow redis-cli
# In redis-cli:
127.0.0.1:6379> EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 fuzzy*
-
+
Info
Wenn redis-cli sich beschwert über...
-(error) ERR wrong number of arguments for 'del' command
-
(error) ERR wrong number of arguments for 'del' command
+
...das Schlüsselmuster nicht gefunden wurde und somit keine Daten zum Löschen vorhanden sind - ist es in Ordnung.
``bash docker-compose exec rspamd-mailcow rspamc --help docker-compose exec rspamd-mailcow rspamadm --help -
## Greylisting deaktivieren
+## Greylisting deaktivieren
Nur Nachrichten mit einer höheren Punktzahl werden als Greylisting betrachtet (soft rejected). Es ist schlechte Praxis, Greylisting zu deaktivieren.
@@ -2580,26 +2580,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
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;
-
reject = 15;
+add_header = 8;
+greylist = 7;
+
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
+source mailcow.conf
docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel';"
# oder:
# docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "delete from filterconf where option = 'highspamlevel' or option = 'lowspamlevel' and object = 'only-this-mailbox@example.org';"
-
+
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";
-
reject_message = "Meine eigene Ablehnungsnachricht";
+
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:
Fügen Sie Ihre eigene Nachricht als neue Zeile hinzu:
GLOBAL_RCPT_BL {
+GLOBAL_RCPT_BL {
Typ = "rcpt";
map = "${LOCAL_CONFDIR}/custom/global_rcpt_blacklist.map";
regexp = true;
@@ -2618,40 +2618,40 @@ docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e "del
action = "reject";
message = "Der Versand von E-Mails an diesen Empfänger ist durch postmaster@your.domain verboten";
}
-
+
docker-compose restart rspamd-mailcow
.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;
-
discard_on_reject = true;
+
Starten Sie Rspamd neu:
-docker-compose restart rspamd-mailcow
-
docker-compose restart rspamd-mailcow
+
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 exec redis-mailcow sh
-
docker-compose exec redis-mailcow sh
+
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
-
+
Standardmäßig speichert Rspamd 1000 Elemente in der Historie.
Die Historie wird komprimiert gespeichert.
Es wird empfohlen, hier keinen unverhältnismäßig hohen Wert zu verwenden, probieren Sie etwas in der Größenordnung von 5000 oder 10000 und sehen Sie, wie Ihr Server damit umgeht:
Bearbeiten Sie data/conf/rspamd/local.d/history_redis.conf
:
nrows = 1000; # Ändern Sie diesen Wert
-
nrows = 1000; # Ändern Sie diesen Wert
+
Starten Sie anschließend Rspamd neu: docker-compose restart rspamd-mailcow
data/conf/sogo/custom-theme.js
modifiziert und Änderun
allow pasting
und drücken Sie Entercopy([].slice.call(document.styleSheets)
+copy([].slice.call(document.styleSheets)
.map(e => e.ownerNode)
.filter(e => e.hasAttribute('md-theme-style'))
.map(e => e.textInhalt)
.join('\n')
)
-
+
data/conf/sogo/custom-theme.css
data/conf/sogo/sogo.conf
und setze SOGoUIxDebugEnabled = NO;
docker-compose.override.yml
mit:
-Version: '2.1'
+Version: '2.1'
Dienste:
sogo-mailcow:
volumes:
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
-
+
docker-compose up -d
ausdocker-compose restart memcached-mailcow
data/conf/sogo/custom-theme.js
aus, indem Sie git fetch ; git checkout origin/master data/conf/sogo/custom-theme.js data/conf/sogo/custom-theme.js
ausführendata/conf/sogo/custom-theme.js
:
-// Neue Paletten auf das Standardthema anwenden, einige Farbtöne neu zuordnen
+// Neue Paletten auf das Standardthema anwenden, einige Farbtöne neu zuordnen
$mdThemingProvider.theme('default')
.primaryPalette('green-cow', {
'default': '400', // Hintergrundfarbe der oberen Symbolleisten
@@ -2531,13 +2531,13 @@ Dienste:
hue-3': 'A700'
})
.backgroundPalette('frost-grey');
-
+
$mdThemingProvider.theme('default');
-
$mdThemingProvider.theme('default');
+
docker-compose.override.yml
Volume Mount in sogo-mailcow
:
-- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
-
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
+
docker-compose up -d
ausdocker-compose restart memcached-mailcow
.Domains sind normalerweise voneinander isoliert.
Sie können das ändern, indem Sie data/conf/sogo/sogo.conf
modifizieren:
Suche... -
// SOGoDomainsVisibility = (
+ // SOGoDomainsVisibility = (
// (domain1.tld, domain5.tld),
// (domain3.tld, domain2.tld)
// );
-
+
SOGoDomainsVisibility = (
+ SOGoDomainsVisibility = (
(beispiel.org, beispiel.com, beispiel.net)
);
-
+
SOGo neu starten: docker-compose restart sogo-mailcow
Bearbeiten Sie data/conf/sogo/sogo.conf
und ändern Sie SOGoPasswordChangeEnabled
auf NO
. Bitte fügen Sie keinen neuen Parameter hinzu.
Bearbeiten Sie data/conf/unbound/unbound.conf
und fügen Sie die folgenden Parameter hinzu:
forward-zone:
+forward-zone:
name: "."
forward-addr: 8.8.8.8 # VERWENDEN SIE KEINE ÖFFENTLICHEN DNS-SERVER - NUR EIN BEISPIEL
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
+
cd /opt/mailcow-dockerized
+cd /opt/mailcow-dockerized
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.
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}
+- NGINX_THRESHOLD=${NGINX_THRESHOLD:-5}
- UNBOUND_THRESHOLD=${UNBOUND_THRESHOLD:-5}
- REDIS_THRESHOLD=${REDIS_THRESHOLD:-5}
- MYSQL_THRESHOLD=${MYSQL_THRESHOLD:-5}
@@ -2667,7 +2667,7 @@ Beispiel:
- OLEFY_THRESHOLD=${OLEFY_THRESHOLD:-5}
- 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.
1. Diese Nachricht in einen Unterordner "facebook" verschieben (wird in Kleinbuchstaben erstellt, falls nicht vorhanden)
2. Den Tag dem Betreff voranstellen: "[facebook] Betreff"
Bitte beachten Sie: Großgeschriebene Tags werden in Kleinbuchstaben umgewandelt, mit Ausnahme des ersten Buchstabens. Wenn Sie den Tag so lassen wollen, wie er ist, wenden Sie bitte den folgenden Diff an und starten Sie mailcow neu: -
diff --git a/data/conf/dovecot/global_sieve_after b/data/conf/dovecot/global_sieve_after
+diff --git a/data/conf/dovecot/global_sieve_after b/data/conf/dovecot/global_sieve_after
index e047136e..933c4137 100644
--- a/data/conf/dovecot/global_sieve_after
+++ b/data/conf/dovecot/global_sieve_after
@@ -2416,7 +2416,7 @@ index e047136e..933c4137 100644
if mailboxexists "INBOX/${1}" {
fileinto "INBOX/${1}";
} else {
-
+
Verwenden Sie die untenstehende Konfiguration nicht für Reverse-Proxy-Setups, bitte lesen Sie dazu unsere Reverse-Proxy-Anleitung, die einen Redirect von HTTP zu HTTPS beinhaltet.
Öffne mailcow.conf
und setze HTTP_BIND=
- falls nicht bereits gesetzt.
Erstellen Sie eine neue Datei data/conf/nginx/redirect.conf
und fügen Sie die folgende Serverkonfiguration in die Datei ein:
server {
+server {
root /web;
listen 80 default_server;
listen [::]:80 default_server;
@@ -2363,13 +2363,13 @@
return 301 https://$host$uri$is_args$args;
}
}
-
+
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
+
Öffnen/erstellen Sie data/web/inc/vars.local.inc.php
und fügen Sie Ihre Änderungen in das Konfigurationsfeld ein.
Die Änderungen werden mit "$autodiscover_config" in data/web/inc/vars.inc.php
zusammengeführt):
<?php
+<?php
$autodiscover_config = array(
// General autodiscover service type: "activesync" or "imap"
// emClient uses autodiscover, but does not support ActiveSync. mailcow excludes emClient from ActiveSync.
@@ -2388,7 +2388,7 @@ $autodiscover_config = array(
'port' => $https_port,
),
);
-
+
Um immer IMAP und SMTP anstelle von EAS zu verwenden, setzen Sie 'autodiscoverType' => 'imap'
.
Deaktivieren Sie ActiveSync für Outlook-Desktop-Clients, indem Sie "useEASforOutlook" auf "no" setzen.
diff --git a/de/manual-guides/u_e-reeanble-weak-protocols/index.html b/de/manual-guides/u_e-reeanble-weak-protocols/index.html index 7254a5495..21e2d731b 100644 --- a/de/manual-guides/u_e-reeanble-weak-protocols/index.html +++ b/de/manual-guides/u_e-reeanble-weak-protocols/index.html @@ -2349,15 +2349,15 @@Unauthentifizierte Mails über SMTP an Port 25/tcp akzeptieren weiterhin >= TLS 1.0 . Es ist besser, eine schwache Verschlüsselung zu akzeptieren als gar keine.
Wie kann man schwache Protokolle wieder aktivieren?
Bearbeiten Sie data/conf/postfix/extra.cf
:
submission_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
+submission_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
-
+
Bearbeiten Sie data/conf/dovecot/extra.conf
:
ssl_min_protocol = TLSv1
-
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.
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:
+networks:
mailcow-network:
[...]
enable_ipv6: true # <<< auf false setzen
[...]
-
+
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":
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
+# cd /opt/mailcow-dockerized
# touch docker-compose.override.yml
-
+
Öffnen Sie die Datei in Ihrem bevorzugten Texteditor und tragen Sie folgendes ein:
-version: '2.1'
+version: '2.1'
services:
ipv6nat-mailcow:
image: bash:latest
restart: "no"
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 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":
Server:
+Server:
[...]
do-ip6: no
[...]
-
+
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
:
smtp_address_preference = ipv4
+smtp_address_preference = ipv4
inet_protocols = ipv4
-
+
Starten Sie Postfix neu:
-docker-compose restart postfix-mailcow
-
docker-compose restart postfix-mailcow
+
Erstellen Sie die Datei data/conf/rspamd/local.d/dmarc.conf
und setzen Sie den folgenden Inhalt:
reporting {
+reporting {
enabled = true;
email = 'noreply-dmarc@example.com';
domain = 'example.com';
@@ -2486,9 +2486,9 @@
max_entries = 2k;
keys_expire = 2d;
}
-
+
Erstellen oder ändern Sie docker-compose.override.yml
im mailcow-dockerized Basisverzeichnis:
version: '2.1'
+version: '2.1'
services:
rspamd-mailcow:
@@ -2501,16 +2501,16 @@ services:
ofelia-mailcow:
depends_on:
- rspamd-mailcow
-
+
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 {
+reporting {
enabled = true;
email = 'noreply-dmarc@example.com';
bcc_addrs = ["noreply-dmarc@example.com", "parsedmarc@example.com"];
[...]
-
+
Rspamd lädt Änderungen in Echtzeit, so dass Sie den Container zu diesem Zeitpunkt nicht neu starten müssen.
Dies kann nützlich sein, wenn Sie...
Prüfen Sie, wann der Berichtsplan zuletzt ausgeführt wurde:
-docker-compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log
-
docker-compose 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
+
Im obigen Beispiel werden die Berichte einmal alle 24 Stunden gesendet.
Der Olefia-Zeitplan hat die gleiche Implementierung wie cron
in Go, die unterstützte Syntax ist beschrieben in cron Documentation
Um eine oder mehrere IPv4-Bind(ings) anzupassen, öffne mailcow.conf
und editiere eine, mehrere oder alle Variablen nach deinen Bedürfnissen:
# Aus technischen Gründen unterscheiden sich die http-Bindungen ein wenig von anderen Service-Bindungen.
+# Aus technischen Gründen unterscheiden sich die http-Bindungen ein wenig von anderen Service-Bindungen.
# Sie werden die folgenden Variablen finden, getrennt durch eine Bindungsadresse und deren Port:
# Beispiel: HTTP_BIND=1.2.3.4
@@ -2439,14 +2439,14 @@ SIEVE_PORT=4190
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.
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.
Es wird eine imaginäre IPv6 2a00:dead:beef::abc 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'
+version: '2.1'
services:
dovecot-mailcow:
@@ -2467,7 +2467,7 @@ services:
ports:
- '2a00:dead:beef::abc:80:80'
- '2a00:dead:beef::abc:443:443'
-
+
Um Ihre Änderungen zu übernehmen, führen Sie docker-compose down
gefolgt von docker-compose up -d
aus.
Die einfachste Möglichkeit wäre, den Listener an Port 25/tcp zu deaktivieren.
Postfix-Benutzer deaktivieren den Listener, indem sie die folgende Zeile (beginnend mit smtp
oder 25
) in /etc/postfix/master.cf
auskommentieren:
-
#smtp inet n - - - - smtpd
-
#smtp inet n - - - - smtpd
+
Außerdem, um über eine Dockerized mailcow weiterzuleiten, sollten Sie 172.22.1.1
als Relayhost hinzufügen und das Docker-Interface aus "inet_interfaces" entfernen:
postconf -e 'relayhost = 172.22.1.1'
+postconf -e 'relayhost = 172.22.1.1'
postconf -e "mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128"
postconf -e "inet_interfaces = loopback-only"
postconf -e "relay_transport = relay"
postconf -e "default_transport = smtp"
-
+
Jetzt ist es wichtig, dass Sie nicht denselben FQDN in myhostname
haben, den Sie für Ihre mailcow verwenden. Prüfen Sie Ihre lokale (nicht-Docker) Postfix' main.cf auf myhostname
und setzen Sie ihn auf etwas anderes, zum Beispiel local.my.fqdn.tld
.
"172.22.1.1" ist das von mailcow erstellte Netzwerk-Gateway in Docker. Das Relaying über diese Schnittstelle ist notwendig (anstatt - zum Beispiel - direkt über ${MAILCOW_HOSTNAME}), um über ein bekanntes internes Netzwerk weiterzuleiten.
diff --git a/de/post_installation/firststeps-logging/index.html b/de/post_installation/firststeps-logging/index.html index cd2953ddb..196ff6378 100644 --- a/de/post_installation/firststeps-logging/index.html +++ b/de/post_installation/firststeps-logging/index.html @@ -2466,16 +2466,16 @@ ohne die Fähigkeit zu verlieren, Logs von der UI zu lesen oder verdächtige CliHier 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:
version: '2.1'
+version: '2.1'
services:
postfix-mailcow: # oder ein anderer
logging:
driver: "gelf"
options:
gelf-address: "udp://graylog:12201"
-
+
Ein weiteres Beispiel für Syslog:
-version: '2.1'
+version: '2.1'
services:
postfix-mailcow: # oder ein anderer
@@ -2506,10 +2506,10 @@ local3.* /var/log/mailcow.logs
& ~
# Danach rsyslog neu starten.
-
+
Wenn Sie den Logging-Treiber global ändern wollen, editieren Sie die Konfigurationsdatei des Docker-Daemons /etc/docker/daemon.json
und starten Sie den Docker-Dienst neu:
{
+{
...
"log-driver": "gelf",
"log-opts": {
@@ -2517,9 +2517,9 @@ local3.* /var/log/mailcow.logs
}
...
}
-
+
Für Syslog:
-{
+{
...
"log-driver": "syslog",
"log-opts": {
@@ -2527,7 +2527,7 @@ local3.* /var/log/mailcow.logs
}
...
}
-
+
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.
Sie müssen die Nginx-Seite, die mit mailcow: dockerized geliefert wird, nicht ändern. mailcow: dockerized vertraut auf das Standard-Gateway IP 172.22.1.1 als Proxy.
1. Stellen Sie sicher, dass Sie HTTP_BIND und HTTPS_BIND in mailcow.conf
auf eine lokale Adresse ändern und die Ports entsprechend einstellen, zum Beispiel:
-
HTTP_BIND=127.0.0.1
+HTTP_BIND=127.0.0.1
HTTP_PORT=8080
HTTPS_BIND=127.0.0.1
HTTPS_PORT=8443
-
+
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.
2. Konfigurieren Sie Ihren lokalen Webserver als Reverse Proxy:
Erforderliche Module: -
a2enmod rewrite proxy proxy_http headers ssl
-
a2enmod rewrite proxy proxy_http headers ssl
+
Let's Encrypt wird unserem Rewrite folgen, Zertifikatsanfragen in mailcow werden problemlos funktionieren.
Die hervorgehobenen Zeilen müssen beachtet werden.
-<VirtualHost *:80>
- ServerName ZU MAILCOW HOSTNAMEN ÄNDERN
- ServerAlias autodiscover.*
- ServerAlias autoconfig.*
- RewriteEngine on
+<VirtualHost *:80>
+ ServerName ZU MAILCOW HOSTNAMEN ÄNDERN
+ ServerAlias autodiscover.*
+ ServerAlias autoconfig.*
+ RewriteEngine on
- RewriteCond %{HTTPS} off
- RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=301,L]
+ RewriteCond %{HTTPS} off
+ RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=301,L]
- ProxyPass / http://127.0.0.1:8080/
- ProxyPassReverse / http://127.0.0.1:8080/
- ProxyPreserveHost On
- ProxyAddHeaders On
- RequestHeader set X-Forwarded-Proto "http"
-</VirtualHost>
-<VirtualHost *:443>
- ServerName ZU MAILCOW HOSTNAMEN ÄNDERN
- ServerAlias autodiscover.*
- ServerAlias autoconfig.*
+ ProxyPass / http://127.0.0.1:8080/
+ ProxyPassReverse / http://127.0.0.1:8080/
+ ProxyPreserveHost On
+ ProxyAddHeaders On
+ RequestHeader set X-Forwarded-Proto "http"
+</VirtualHost>
+<VirtualHost *:443>
+ ServerName ZU MAILCOW HOSTNAMEN ÄNDERN
+ ServerAlias autodiscover.*
+ ServerAlias autoconfig.*
- # You should proxy to a plain HTTP session to offload SSL processing
- ProxyPass /Microsoft-Server-ActiveSync http://127.0.0.1:8080/Microsoft-Server-ActiveSync connectiontimeout=4000
- ProxyPassReverse /Microsoft-Server-ActiveSync http://127.0.0.1:8080/Microsoft-Server-ActiveSync
- ProxyPass / http://127.0.0.1:8080/
- ProxyPassReverse / http://127.0.0.1:8080/
- ProxyPreserveHost On
- ProxyAddHeaders On
- RequestHeader set X-Forwarded-Proto "https"
+ # You should proxy to a plain HTTP session to offload SSL processing
+ ProxyPass /Microsoft-Server-ActiveSync http://127.0.0.1:8080/Microsoft-Server-ActiveSync connectiontimeout=4000
+ ProxyPassReverse /Microsoft-Server-ActiveSync http://127.0.0.1:8080/Microsoft-Server-ActiveSync
+ ProxyPass / http://127.0.0.1:8080/
+ ProxyPassReverse / http://127.0.0.1:8080/
+ ProxyPreserveHost On
+ ProxyAddHeaders On
+ RequestHeader set X-Forwarded-Proto "https"
- SSLCertificateFile MAILCOW_ORDNER/data/assets/ssl/cert.pem
- SSLCertificateKeyFile MAILCOW_ORDNER/data/assets/ssl/key.pem
+ SSLCertificateFile MAILCOW_ORDNER/data/assets/ssl/cert.pem
+ SSLCertificateKeyFile MAILCOW_ORDNER/data/assets/ssl/key.pem
- # Wenn Sie einen HTTPS-Host als Proxy verwenden möchten:
- #SSLProxyEngine On
+ # Wenn Sie einen HTTPS-Host als Proxy verwenden möchten:
+ #SSLProxyEngine On
- # Wenn Sie einen Proxy für einen nicht vertrauenswürdigen HTTPS-Host einrichten wollen:
- #SSLProxyVerify none
- #SSLProxyCheckPeerCN off
- #SSLProxyCheckPeerName off
- #SSLProxyCheckPeerExpire off
-</VirtualHost>
-
+ # Wenn Sie einen Proxy für einen nicht vertrauenswürdigen HTTPS-Host einrichten wollen:
+ #SSLProxyVerify none
+ #SSLProxyCheckPeerCN off
+ #SSLProxyCheckPeerName off
+ #SSLProxyCheckPeerExpire off
+</VirtualHost>
+
Let's Encrypt folgt unserem Rewrite, Zertifikatsanfragen funktionieren problemlos.
Achten Sie auf die hervorgehobenen Zeilen.
-server {
+server {
listen 80 default_server;
listen [::]:80 default_server;
server_name ZU MAILCOW HOSTNAMEN ÄNDERN autodiscover.* autoconfig.*;
@@ -2600,14 +2600,14 @@ server {
proxy_busy_buffers_size 512k;
}
}
-
+
Warning
Dies ist ein nicht unterstützter Community Beitrag. Sie können gerne Korrekturen bereitstellen.
Wichtig/Fix erwünscht: Dieses Beispiel leitet nur HTTPS-Verkehr weiter und benutzt nicht den in mailcow eingebauten ACME-Client.
-frontend https-in
+frontend https-in
bind :::443 v4v6 ssl crt mailcow.pem
default_backend mailcow
@@ -2616,7 +2616,7 @@ backend mailcow
http-request set-header X-Forwarded-Proto https if { ssl_fc }
http-request set-header X-Forwarded-Proto http if !{ ssl_fc }
server mailcow 127.0.0.1:8080 check
-
+
Warning
@@ -2627,50 +2627,50 @@ backend mailcowZuallererst 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.
version: '2.1'
+version: '2.1'
-services:
- nginx-mailcow:
- networks:
- # Traefiks Netzwerk hinzufügen
- web:
- labels:
- - traefik.enable=true
- # Erstellt einen Router namens "moo" für den Container und richtet eine Regel ein, um den Container mit einer bestimmten Regel zu verknüpfen,
- # in diesem Fall eine Host-Regel mit unserer MAILCOW_HOSTNAME-Variable.
- - traefik.http.routers.moo.rule=Host(`${MAILCOW_HOSTNAME}`)
- # Aktiviert tls über den zuvor erstellten Router.
- - traefik.http.routers.moo.tls=true
- # Gibt an, welche Art von Cert-Resolver wir verwenden werden, in diesem Fall le (Lets Encrypt).
- - traefik.http.routers.moo.tls.certresolver=le
- # Erzeugt einen Dienst namens "moo" für den Container und gibt an, welchen internen Port des Containers
- # Traefik die eingehenden Daten weiterleiten soll.
- - traefik.http.services.moo.loadbalancer.server.port=${HTTP_PORT}
- # Gibt an, welchen Eingangspunkt (externer Port) traefik für diesen Container abhören soll.
- # Websecure ist Port 443, siehe die Datei traefik.toml wie oben.
- - traefik.http.routers.moo.entrypoints=websecure
- # Stellen Sie sicher, dass traefik das Web-Netzwerk verwendet, nicht das mailcowdockerized_mailcow-network
- - traefik.docker.network=web
+services:
+ nginx-mailcow:
+ networks:
+ # Traefiks Netzwerk hinzufügen
+ web:
+ labels:
+ - traefik.enable=true
+ # Erstellt einen Router namens "moo" für den Container und richtet eine Regel ein, um den Container mit einer bestimmten Regel zu verknüpfen,
+ # in diesem Fall eine Host-Regel mit unserer MAILCOW_HOSTNAME-Variable.
+ - traefik.http.routers.moo.rule=Host(`${MAILCOW_HOSTNAME}`)
+ # Aktiviert tls über den zuvor erstellten Router.
+ - traefik.http.routers.moo.tls=true
+ # Gibt an, welche Art von Cert-Resolver wir verwenden werden, in diesem Fall le (Lets Encrypt).
+ - traefik.http.routers.moo.tls.certresolver=le
+ # Erzeugt einen Dienst namens "moo" für den Container und gibt an, welchen internen Port des Containers
+ # Traefik die eingehenden Daten weiterleiten soll.
+ - traefik.http.services.moo.loadbalancer.server.port=${HTTP_PORT}
+ # Gibt an, welchen Eingangspunkt (externer Port) traefik für diesen Container abhören soll.
+ # Websecure ist Port 443, siehe die Datei traefik.toml wie oben.
+ - traefik.http.routers.moo.entrypoints=websecure
+ # Stellen Sie sicher, dass traefik das Web-Netzwerk verwendet, nicht das mailcowdockerized_mailcow-network
+ - traefik.docker.network=web
- certdumper:
- image: humenius/traefik-certs-dumper
- container_name: traefik_certdumper
- 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
- - ../traefik/data:/traefik:ro
- # SSL-Ordner von mailcow einhängen
- - ./data/assets/ssl/:/output:rw
- restart: always
- environment:
- # Ändern Sie dies nur, wenn Sie eine andere Domain für Mailcows Web-Frontend verwenden als in der Standard-Konfiguration
- - DOMAIN=${MAILCOW_HOSTNAME}
+ certdumper:
+ image: humenius/traefik-certs-dumper
+ container_name: traefik_certdumper
+ 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
+ - ../traefik/data:/traefik:ro
+ # SSL-Ordner von mailcow einhängen
+ - ./data/assets/ssl/:/output:rw
+ restart: always
+ environment:
+ # Ändern Sie dies nur, wenn Sie eine andere Domain für Mailcows Web-Frontend verwenden als in der Standard-Konfiguration
+ - DOMAIN=${MAILCOW_HOSTNAME}
-networks:
- web:
- external: true
-
+networks:
+ web:
+ external: true
+
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.
SKIP_LETS_ENCRYPT=y
in unserer mailcow.conf<
Optional: Post-Hook-Skript für nicht-mailcow ACME-Clients¶
Die Verwendung eines lokalen Certbots (oder eines anderen ACME-Clients) erfordert den Neustart einiger Container, was Sie mit einem Post-Hook-Skript erledigen können.
Stellen Sie sicher, dass Sie die Pfade entsprechend ändern:
-
#!/bin/bash
+#!/bin/bash
cp /etc/letsencrypt/live/my.domain.tld/fullchain.pem /opt/mailcow-dockerized/data/assets/ssl/cert.pem
cp /etc/letsencrypt/live/my.domain.tld/privkey.pem /opt/mailcow-dockerized/data/assets/ssl/key.pem
postfix_c=$(docker ps -qaf name=postfix-mailcow)
dovecot_c=$(docker ps -qaf name=dovecot-mailcow)
nginx_c=$(docker ps -qaf name=nginx-mailcow)
docker restart ${postfix_c} ${dovecot_c} ${nginx_c}
-
+
Hinzufügen weiterer Servernamen für mailcow UI¶
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
-
+ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
+
Führen Sie docker-compose up -d
zum Anwenden aus.
diff --git a/de/post_installation/firststeps-snat/index.html b/de/post_installation/firststeps-snat/index.html
index d3a58d591..eca569007 100644
--- a/de/post_installation/firststeps-snat/index.html
+++ b/de/post_installation/firststeps-snat/index.html
@@ -2348,12 +2348,12 @@
SNAT wird verwendet, um die Quelladresse der von mailcow gesendeten Pakete zu ändern.
Es kann verwendet werden, um die ausgehende IP-Adresse auf Systemen mit mehreren IP-Adressen zu ändern.
Öffnen Sie mailcow.conf
, setzen Sie einen oder beide der folgenden Parameter:
-# Benutze diese IPv4 für ausgehende Verbindungen (SNAT)
+# Benutze diese IPv4 für ausgehende Verbindungen (SNAT)
SNAT_TO_SOURCE=1.2.3.4
# Benutze dieses IPv6 für ausgehende Verbindungen (SNAT)
SNAT6_TO_SOURCE=dead:beef
-
+
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.
diff --git a/de/post_installation/firststeps-ssl/index.html b/de/post_installation/firststeps-ssl/index.html
index 4fce209bf..dddd36c0d 100644
--- a/de/post_installation/firststeps-ssl/index.html
+++ b/de/post_installation/firststeps-ssl/index.html
@@ -2586,8 +2586,8 @@
Zusätzliche Domain-Namen¶
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!
-ADDITIONAL_SAN=smtp.*,cert1.example.com,cert2.example.org,whatever.*
-
+ADDITIONAL_SAN=smtp.*,cert1.example.com,cert2.example.org,whatever.*
+
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.
@@ -2596,17 +2596,17 @@
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
-
ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
+
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
+cd /opt/mailcow-dockerized
touch data/assets/ssl/force_renew
docker-compose restart acme-mailcow
# Prüfen Sie nun die Logs auf eine Erneuerung
docker-compose logs --tail=200 -f acme-mailcow
-
+
Die Datei wird automatisch gelöscht.
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.
MAILCOW_HOSTNAME
Um Ihre eigenen Zertifikate zu verwenden, speichern Sie einfach das kombinierte Zertifikat (mit dem Zertifikat und der zwischengeschalteten CA/CA, falls vorhanden) unter data/assets/ssl/cert.pem
und den entsprechenden Schlüssel unter data/assets/ssl/key.pem
.
WICHTIG: Verwenden Sie keine symbolischen Links! Stellen Sie sicher, dass Sie die Zertifikate kopieren und sie nicht mit data/assets/ssl
verknüpfen.
Starten Sie die betroffenen Dienste anschließend neu:
-docker restart $(docker ps -qaf name=postfix-mailcow)
+docker restart $(docker ps -qaf name=postfix-mailcow)
docker neu starten $(docker ps -qaf name=nginx-mailcow)
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.
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
-
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 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)
+# Verbindung über SMTP (587)
echo "Q" | openssl s_client -starttls smtp -crlf -connect mx.mailcow.email:587
# Verbindung über IMAP (143)
echo "Q" | openssl s_client -starttls imap -showcerts -connect mx.mailcow.email:143
# Verbindung über HTTPS (443)
echo "Q" | openssl s_client -connect mx.mailcow.email:443
-
+
Um die von openssl zurückgegebenen Verfallsdaten gegen MAILCOW_HOSTNAME zu validieren, können Sie unser Hilfsskript verwenden:
-cd /opt/mailcow-dockerized
+cd /opt/mailcow-dockerized
bash helper-scripts/expiry-dates.sh
-
+
Stellen Sie sicher, dass der PTR-Eintrag Ihrer IP-Adresse mit dem FQDN Ihres mailcow-Hosts übereinstimmt: ${MAILCOW_HOSTNAME}
1. Dieser Eintrag wird normalerweise bei dem Provider gesetzt, von dem Sie die IP-Adresse (Server) gemietet haben.
Dieses Beispiel zeigt Ihnen eine Reihe von Einträgen für eine von mailcow verwaltete Domain. Jede Domain, die zu mailcow hinzugefügt wird, benötigt mindestens diesen Satz an Einträgen, um korrekt zu funktionieren.
-# Name Typ Wert
+# Name Typ Wert
mail IN A 1.2.3.4
autodiscover IN CNAME mail.example.org. (Ihr ${MAILCOW_HOSTNAME})
autoconfig IN CNAME mail.example.org. (Ihr ${MAILCOW_HOSTNAME})
@ IN MX 10 mail.example.org. (Ihr ${MAILCOW_HOSTNAME})
-
+
Im folgenden Beispiel für eine DNS-Zonendatei wird ein einfacher SPF TXT-Eintrag verwendet, um nur DIESEM Server (dem MX) zu erlauben, E-Mails für Ihre Domäne zu senden. Jeder andere Server ist nicht zugelassen, kann es aber tun ("~all
"). Weitere Informationen finden Sie im SPF-Projekt.
# Name Typ Wert
+# Name Typ Wert
@ IN TXT "v=spf1 mx a -all"
-
+
Es wird dringend empfohlen, einen DKIM TXT-Eintrag in Ihrer mailcow UI zu erstellen und den entsprechenden TXT-Eintrag in Ihren DNS-Einträgen zu setzen. Bitte lesen Sie OpenDKIM für weitere Informationen.
-# Name Typ Wert
+# Name Typ Wert
dkim._domainkey IN TXT "v=DKIM1; k=rsa; t=s; s=email; p=..."
-
+
Der letzte Schritt, um sich selbst und andere zu schützen, ist die Implementierung eines DMARC TXT-Datensatzes, zum Beispiel mit Hilfe des DMARC-Assistenten (check).
-# Name Typ Wert
+# Name Typ Wert
_dmarc IN TXT "v=DMARC1; p=reject; rua=mailto:mailauth-reports@example.org"
-
+
SRV-Einträge geben den/die Server für ein bestimmtes Protokoll in Ihrer Domäne an. Wenn Sie einen Dienst explizit als nicht bereitgestellt ankündigen wollen, geben Sie "." als Zieladresse an (statt "mail.example.org."). Bitte beachten Sie RFC 2782.
-# Name Typ Priorität Gewicht Port Wert
+# Name Typ Priorität Gewicht Port Wert
_autodiscover._tcp IN SRV 0 1 443 mail.example.org. (Ihr ${MAILCOW_HOSTNAME})
_caldavs._tcp IN SRV 0 1 443 mail.example.org. (Ihr ${MAILCOW_HOSTNAME})
_caldavs._tcp IN TXT "path=/SOGo/dav/"
@@ -2582,7 +2582,7 @@ _pop3s._tcp IN SRV 0 1 995 mail.example.org. (Ihr ${MAILCOW_HOSTNAME})
_sieve._tcp IN SRV 0 1 4190 mail.example.org. (Ihr ${MAILCOW_HOSTNAME})
_smtps._tcp IN SRV 0 1 465 mail.example.org. (Ihr ${MAILCOW_HOSTNAME})
_submission._tcp IN SRV 0 1 587 mail.example.org. (Ihr ${MAILCOW_HOSTNAME})
-
+
Hier finden Sie einige Tools, mit denen Sie Ihre DNS-Konfiguration überprüfen können:
Diese Dienste stellen Ihnen möglicherweise einen TXT-Eintrag zur Verfügung, den Sie in Ihre DNS-Einträge einfügen müssen, so wie es der Anbieter vorschreibt. Bitte stellen Sie sicher, dass Sie die Dokumentation des Anbieters des von Ihnen gewählten Dienstes lesen, da dieser Prozess variieren kann.
Um eine rudimentäre E-Mail-Authentifizierungsprüfung durchzuführen, senden Sie eine E-Mail an check-auth at verifier.port25.com
und warten Sie auf eine Antwort. Sie werden einen Bericht ähnlich dem folgenden finden:
==========================================================
+==========================================================
Zusammenfassung der Ergebnisse
==========================================================
SPF-Prüfung: bestanden
@@ -2626,7 +2626,7 @@ SpamAssassin-Prüfung: ham
Einzelheiten:
==========================================================
....
-
+
Der vollständige Bericht enthält weitere technische Details.
Andere (nicht genannte Betriebssysteme) können auch funktionieren, sind jedoch nicht offiziell getestet worden.
Bitte überprüfen Sie, ob alle Standard-Ports von mailcow offen sind und nicht von anderen Anwendungen genutzt werden:
-ss -tlpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'
+ss -tlpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'
# oder:
netstat -tulpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'
-
+
Vorsicht
Es gibt einige Probleme mit dem Betrieb von mailcow auf einem Firewalld/ufw aktivierten System.
@@ -2715,34 +2715,34 @@ Verwenden Sie stattdessen die FORWARD-Kette.
Port 53 ist in diesem Fall für die Firewall-Konfiguration unwichtig. Laut Dokumentation verwendet unbound den Portbereich 1024-65535 für ausgehende Anfragen. Da es sich bei der Hetzner Robot Firewall um eine statische Firewall handelt (jedes eingehende Paket wird isoliert geprüft) - müssen die folgenden Regeln angewendet werden:
Für TCP -
SRC-IP: ---
+SRC-IP: ---
DST-IP: ---
SRC-Port: ---
DST-Port: 1024-65535
Protokoll: tcp
TCP-Flags: ack
Aktion: Akzeptieren
-
+
Für UDP -
SRC-IP: ---
+SRC-IP: ---
DST-IP: ---
SRC-Port: ---
DST-Port: 1024-65535
Protokoll: udp
Aktion: Akzeptieren
-
+
Wenn man einen restriktiveren Portbereich anwenden will, muss man zuerst die Konfiguration von unbound ändern (nach der Installation):
{mailcow-dockerized}/data/conf/unbound/unbound.conf: -
ausgehender-Port-vermeiden: 0-32767
-
ausgehender-Port-vermeiden: 0-32767
+
Nun können die Firewall-Regeln wie folgt angepasst werden:
-[...]
+[...]
DST Port: 32768-65535
[...]
-
+
Um sicherzustellen, dass Sie das richtige Datum und die richtige Zeit auf Ihrem System eingestellt haben, überprüfen Sie bitte die Ausgabe von timedatectl status
:
$ timedatectl status
+$ timedatectl status
Lokale Zeit: Sat 2017-05-06 02:12:33 CEST
Weltzeit: Sa 2017-05-06 00:12:33 UTC
RTC-Zeit: Sa 2017-05-06 00:12:32
@@ -2757,22 +2757,22 @@ NTP synchronisiert: ja
Nächste Sommerzeitänderung: Die Sommerzeit endet (die Uhr springt eine Stunde rückwärts) am
Sun 2017-10-29 02:59:59 MESZ
Sun 2017-10-29 02:00:00 MEZ
-
+
Die Zeilen NTP aktiviert: ja
und NTP synchronisiert: ja
zeigen an, ob Sie NTP aktiviert haben und ob es synchronisiert ist.
Um NTP zu aktivieren, müssen Sie den Befehl timedatectl set-ntp true
ausführen. Sie müssen auch Ihre /etc/systemd/timesyncd.conf
bearbeiten:
# vim /etc/systemd/timesyncd.conf
+# vim /etc/systemd/timesyncd.conf
[Zeit]
NTP=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org
-
+
Prüfen Sie /etc/network/interfaces.d/50-cloud-init.cfg
und ändern Sie die IPv6-Schnittstelle von eth0:0 auf eth0:
# Falsch:
+# Falsch:
auto eth0:0
iface eth0:0 inet6 static
# Richtig:
auto eth0
iface eth0 inet6 static
-
+
Starten Sie die Schnittstelle neu, um die Einstellungen zu übernehmen. Sie können außerdem die cloud-init Netzwerkänderungen deaktivieren.
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'
+version: '2.1'
-services:
- borgmatic-mailcow:
- image: b3vis/borgmatic
- hostname: mailcow
- restart: always
- dns: ${IPV4_NETWORK:-172.22.1}.254
- volumes:
- - vmail-vol-1:/mnt/source/vmail:ro
- - crypt-vol-1:/mnt/source/crypt:ro
- - redis-vol-1:/mnt/source/redis:ro,z
- - rspamd-vol-1:/mnt/source/rspamd:ro,z
- - postfix-vol-1:/mnt/source/postfix:ro,z
- - mysql-socket-vol-1:/var/run/mysqld/:z
- - borg-config-vol-1:/root/.config/borg:Z
- - borg-cache-vol-1:/root/.cache/borg:Z
- - ./data/conf/borgmatic/etc:/etc/borgmatic.d:Z
- - ./data/conf/borgmatic/ssh:/root/.ssh:Z
- environment:
- - TZ=${TZ}
- - BORG_PASSPHRASE=YouBetterPutSomethingRealGoodHere
- networks:
- mailcow-network:
- aliases:
- - borgmatic
+services:
+ borgmatic-mailcow:
+ image: b3vis/borgmatic
+ hostname: mailcow
+ restart: always
+ dns: ${IPV4_NETWORK:-172.22.1}.254
+ volumes:
+ - vmail-vol-1:/mnt/source/vmail:ro
+ - crypt-vol-1:/mnt/source/crypt:ro
+ - redis-vol-1:/mnt/source/redis:ro,z
+ - rspamd-vol-1:/mnt/source/rspamd:ro,z
+ - postfix-vol-1:/mnt/source/postfix:ro,z
+ - mysql-socket-vol-1:/var/run/mysqld/:z
+ - borg-config-vol-1:/root/.config/borg:Z
+ - borg-cache-vol-1:/root/.cache/borg:Z
+ - ./data/conf/borgmatic/etc:/etc/borgmatic.d:Z
+ - ./data/conf/borgmatic/ssh:/root/.ssh:Z
+ environment:
+ - TZ=${TZ}
+ - BORG_PASSPHRASE=YouBetterPutSomethingRealGoodHere
+ networks:
+ mailcow-network:
+ aliases:
+ - borgmatic
-volumes:
- borg-cache-vol-1:
- borg-config-vol-1:
-
+volumes:
+ borg-cache-vol-1:
+ borg-config-vol-1:
+
Stellen Sie sicher, dass Sie die BORG_PASSPHRASE
in eine sichere Passphrase Ihrer Wahl ändern.
Aus Sicherheitsgründen mounten wir das maildir als schreibgeschützt. Wenn Sie später Daten wiederherstellen wollen, müssen Sie das
müssen Sie das ro
-Flag entfernen, bevor Sie die Daten wiederherstellen. Dies wird im Abschnitt über die Wiederherstellung von Backups beschrieben.
data/conf/borgmatic/etc/config.yaml
¶Als nächstes müssen wir die borgmatic-Konfiguration erstellen.
-source mailcow.conf
+source mailcow.conf
cat <<EOF > data/conf/borgmatic/etc/config.yaml
location:
source_directories:
@@ -2721,7 +2721,7 @@ cat <<EOF > data/conf/borgmatic/etc/config.yaml
password: ${DBPASS}
options: --default-character-set=utf8mb4
EOF
-
+
Das Erstellen der Datei auf diese Weise stellt sicher, dass die korrekten MySQL-Zugangsdaten aus mailcow.conf
übernommen werden.
Diese Datei ist ein minimales Beispiel für die Verwendung von borgmatic mit einem Konto user
beim Cloud-Speicheranbieter rsync.net
für
ein Repository namens mailcow
(siehe repositories
Einstellung). Es wird sowohl das maildir als auch die MySQL-Datenbank sichern, was alles ist
@@ -2737,8 +2737,8 @@ Container einbinden. Der Container definiert zu diesem Zweck ein Volume namens <
Erstellen Sie eine neue Textdatei in data/conf/borgmatic/etc/crontab.txt
mit folgendem Inhalt:
14 * * * * PATH=$PATH:/usr/bin /usr/bin/borgmatic --stats -v 0 2>&1
-
14 * * * * PATH=$PATH:/usr/bin /usr/bin/borgmatic --stats -v 0 2>&1
+
Diese Datei erwartet eine crontab-Syntax. Das hier gezeigte Beispiel veranlasst das Backup, jede Stunde um 14 Minuten nach nach der vollen Stunde auszuführen und am Ende einige nette Statistiken zu protokollieren.
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
+
Das Wiederherstellen eines Backups setzt voraus, dass Sie mit einer neuen Installation von mailcow beginnen, und dass Sie derzeit keine keine benutzerdefinierten Daten in ihrem maildir oder ihrer mailcow Datenbank.
@@ -2768,8 +2768,8 @@ 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
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)
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)
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.
docker-compose exec borgmatic-mailcow borgmatic -v 2
-
docker-compose exec borgmatic-mailcow borgmatic -v 2
+
docker-compose exec borgmatic-mailcow borgmatic list
-
docker-compose exec borgmatic-mailcow borgmatic list
+
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.
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.
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:
version: '2.1'
+version: '2.1'
services:
gitea-mailcow:
@@ -2360,28 +2360,28 @@ services:
- gitea
ports:
- "${GITEA_SSH_PORT:-127.0.0.1:4000}:22"
-
+
2. Erstellen Sie data/conf/nginx/site.gitea.custom
, fügen Sie folgendes hinzu:
-
location /gitea/ {
+location /gitea/ {
proxy_pass http://gitea:3000/;
}
-
+
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
-
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/
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.
[server]
+[server]
SSH_LISTEN_PORT = 22
# Für GITEA_SSH_PORT=127.0.0.1:4000 in mailcow.conf, setzen:
SSH_DOMAIN = 127.0.0.1
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.
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:
version: '2.1'
+version: '2.1'
services:
gogs-mailcow:
@@ -2360,27 +2360,27 @@ services:
- gogs
ports:
- "${GOGS_SSH_PORT:-127.0.0.1:4000}:22"
-
+
2. Erstelle data/conf/nginx/site.gogs.custom
, füge hinzu:
-
location /gogs/ {
+location /gogs/ {
proxy_pass http://gogs:3000/;
}
-
+
3. Öffne mailcow.conf
und definiere die Bindung, die Gogs für SSH verwenden soll. Beispiel:
GOGS_SSH_PORT=127.0.0.1:4000
-
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.
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.
[server]
+[server]
SSH_LISTEN_PORT = 22
# Für GOGS_SSH_PORT=127.0.0.1:4000 in mailcow.conf, setzen:
SSH_DOMAIN = 127.0.0.1
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.
Der größte Teil der Konfiguration ist in mailcows DNS Konfiguration enthalten. Nachdem diese Einrichtung abgeschlossen ist, fügen Sie eine weitere Subdomain für Mailman hinzu, z.B. lists.example.org
, die auf denselben Server zeigt:
# Name Typ Wert
+# Name Typ Wert
lists IN A 1.2.3.4
lists IN AAAA dead:beef
-
+
Installieren Sie Apache, z.B. mit dieser Anleitung von Digital Ocean: How To Install the Apache Web Server on Ubuntu 20.04 (Englisch).
Aktivieren Sie bestimmte Apache Module (als root oder sudo):
-a2enmod rewrite proxy proxy_http headers ssl wsgi proxy_uwsgi http2
-
a2enmod rewrite proxy proxy_http headers ssl wsgi proxy_uwsgi http2
+
Möglicherweise müssen Sie weitere Pakete installieren, um diese Module zu erhalten. Dieses PPA von Ondřej Surý könnte Ihnen helfen.
Kopieren Sie die mailcow.conf und die mailman.conf in den Apache conf Ordner sites-available
(z.B. unter /etc/apache2/sites-available
).
Installieren Sie certbot (als root oder sudo):
-apt install certbot
-
apt install certbot
+
Holen Sie sich die gewünschten Zertifikate (als root oder sudo):
-certbot certonly -d mailcow_HOSTNAME
+certbot certonly -d mailcow_HOSTNAME
certbot certonly -d MAILMAN_DOMAIN
-
+
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
+HTTP_PORT=18080 # verwenden Sie nicht 8080, da mailman es braucht
HTTP_BIND=127.0.0.1 #
HTTPS_PORT=18443 # Sie können 8443 verwenden
HTTPS_BIND=127.0.0.1 # # HTTPS_BIND=127.0.0.1
@@ -2826,10 +2826,10 @@ SKIP_LETS_ENCRYPT=y # Der Reverse Proxy wird die SSL-Verifizierung durchführen
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:
version: '2.1'
+version: '2.1'
services:
postfix-mailcow:
@@ -2841,10 +2841,10 @@ services:
networks:
docker-mailman_mailman:
external: true
-
+
Das zusätzliche Volume wird von Mailman verwendet, um zusätzliche Konfigurationsdateien für mailcow postfix zu generieren. Das externe Netzwerk wird von Mailman erstellt und verwendet. mailcow benötigt es, um eingehende Listenmails an Mailman zu liefern.
Erstellen Sie die Datei /opt/mailcow-dockerized/data/conf/postfix/extra.cf
(z.B. mit nano
) und fügen Sie die folgenden Zeilen hinzu:
# mailman
+# mailman
recipient_delimiter = +
unknown_local_recipient_reject_code = 550
@@ -2869,7 +2869,7 @@ relay_domains =
relay_recipient_maps =
proxy:mysql:/opt/postfix/conf/sql/mysql_relay_recipient_maps.cf,
regexp:/opt/mailman/core/var/data/postfix_lmtp
-
+
Da wir hier die mailcow postfix Konfiguration überschreiben, kann dieser Schritt Ihre normalen Mailtransporte unterbrechen. Überprüfen Sie die originalen Konfigurationsdateien, wenn sich etwas geändert hat.
Da wir mailcow als Proxy verwenden, müssen wir die SSL-Zertifikate in die mailcow-Dateistruktur kopieren. Diese Aufgabe wird das Skript renew-ssl.sh für uns erledigen:
@@ -2880,26 +2880,26 @@ relay_recipient_maps =Sie müssen einen cronjob erstellen, so dass neue Zertifikate kopiert werden. Führen Sie ihn als root oder sudo aus:
-crontab -e
-
crontab -e
+
Um das Skript jeden Tag um 5 Uhr morgens laufen zu lassen, fügen Sie hinzu:
-0 5 * * * /opt/mailcow-dockerized/renew-ssl.sh
-
0 5 * * * /opt/mailcow-dockerized/renew-ssl.sh
+
Befolgen Sie im Wesentlichen die Anweisungen unter docker-mailman. Da sie sehr umfangreich sind, ist hier in aller Kürze beschrieben, was zu tun ist:
Als root oder sudo:
-cd /opt
+cd /opt
mkdir -p mailman/core
mkdir -p mailman/web
git clone https://github.com/maxking/docker-mailman
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:
version: '2'
+version: '2'
services:
mailman-core:
@@ -2928,17 +2928,17 @@ services:
environment:
- POSTGRES_PASSWORD=DBPASS
restart: always
-
+
Bei mailman-web
geben Sie die korrekten Werte für SERVE_FROM_DOMAIN
(z.B. lists.example.org
), MAILMAN_ADMIN_USER
und MAILMAN_ADMIN_EMAIL
ein. Sie benötigen die Admin-Zugangsdaten, um sich in der Web-Oberfläche (Pistorius) anzumelden. Um das Passwort zum ersten Mal zu setzen, verwenden Sie die Funktion Passwort vergessen im Webinterface.
Über andere Konfigurationsoptionen lesen Sie die Dokumentationen Mailman-web und Mailman-core.
Erstellen Sie die Datei /opt/mailman/core/mailman-extra.cfg
mit dem folgenden Inhalt. mailman@example.org
sollte auf ein gültiges Postfach oder eine Umleitung verweisen.
[mailman]
+[mailman]
default_language: de
site_owner: mailman@example.org
-
+
Erstellen Sie die Datei /opt/mailman/web/settings_local.py
mit dem folgenden Inhalt. mailman@example.org
sollte auf ein gültiges Postfach oder eine Umleitung verweisen.
# Gebietsschema
+# Gebietsschema
LANGUAGE_CODE = 'de-de'
# soziale Authentifizierung deaktivieren
@@ -2948,11 +2948,11 @@ SOCIALACCOUNT_PROVIDERS = {}
DEFAULT_FROM_EMAIL = 'mailman@example.org'
DEBUG = False
-
+
LANGUAGE_CODE
und SOCIALACCOUNT_PROVIDERS
an Ihre Bedürfnisse anpassen. Im Moment hat SOCIALACCOUNT_PROVIDERS
keinen Effekt, siehe issue #2.
Ausführen (als root oder sudo)
-a2ensite mailcow.conf
+a2ensite mailcow.conf
a2ensite mailman.conf
systemctl restart apache2
@@ -2963,14 +2963,14 @@ docker-compose up -d
cd /opt/mailcow-dockerized/
docker-compose pull
./renew-ssl.sh
-
+
Warten Sie ein paar Minuten! Die Container müssen ihre Datenbanken und Konfigurationsdateien erstellen. Dies kann bis zu 1 Minute und mehr dauern.
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
+cd /opt/mailcow-dockerized
docker-compose restart postfix-mailcow
-
+
mailcow hat sein eigenes Update-Skript in /opt/mailcow-dockerized/update.sh
, siehe die Dokumentation.
Für Mailman holen Sie sich einfach die neueste Version aus dem github repository.
diff --git a/de/third_party/third_party-mailpiler_integration/index.html b/de/third_party/third_party-mailpiler_integration/index.html index d73416a27..725738995 100644 --- a/de/third_party/third_party-mailpiler_integration/index.html +++ b/de/third_party/third_party-mailpiler_integration/index.html @@ -2456,11 +2456,11 @@mailpiler bietet die Authentifizierung auf Basis von IMAP an, zum Beispiel:
-$config['ENABLE_IMAP_AUTH'] = 1;
+$config['ENABLE_IMAP_AUTH'] = 1;
$config['IMAP_HOST'] = 'mail.example.com';
$config['IMAP_PORT'] = 993;
$config['IMAP_SSL'] = true;
-
+
patrik@example.com
anmelden, sehen Sie nur zugestellte E-Mails, die von oder an diese spezielle E-Mail-Adresse gesendet wurden.team@example.com
, werden Sie keine Emails sehen, die an oder von dieser Email-Adresse gesendet wurden, auch wenn Sie ein Empfänger von Emails sind, die an diese Alias-Adresse gesendet wurden.Setzen Sie die benutzerdefinierte Abfragefunktion von mailpiler und fügen Sie diese an /usr/local/etc/piler/config-site.php
an:
$config['MAILCOW_API_KEY'] = 'YOUR_READONLY_API_KEY';
+$config['MAILCOW_API_KEY'] = 'YOUR_READONLY_API_KEY';
$config['MAILCOW_SET_REALNAME'] = true; // wenn nicht angegeben, dann ist der Standardwert false
$config['CUSTOM_EMAIL_QUERY_FUNCTION'] = 'query_mailcow_for_email_access';
include('auth-mailcow.php');
-
+
Sie können auch den mailcow-Hostnamen ändern, falls erforderlich: -
$config['MAILCOW_HOST'] = 'mail.domain.tld'; // standardmäßig $config['IMAP_HOST']
-
$config['MAILCOW_HOST'] = 'mail.domain.tld'; // standardmäßig $config['IMAP_HOST']
+
Laden Sie die PHP-Datei mit den Funktionen aus dem GitHub Repo herunter:
-curl -o /usr/local/etc/piler/auth-mailcow.php https://raw.githubusercontent.com/patschi/mailpiler-mailcow-integration/master/auth-mailcow.php
-
curl -o /usr/local/etc/piler/auth-mailcow.php https://raw.githubusercontent.com/patschi/mailpiler-mailcow-integration/master/auth-mailcow.php
+
Erledigt!
diff --git a/de/third_party/third_party-nextcloud/index.html b/de/third_party/third_party-nextcloud/index.html index 90196bb07..92067b397 100644 --- a/de/third_party/third_party-nextcloud/index.html +++ b/de/third_party/third_party-nextcloud/index.html @@ -2458,14 +2458,14 @@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'
+version: '2.1'
services:
php-fpm-mailcow:
labels:
ofelia.enabled: "true"
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
@@ -2518,14 +2518,14 @@ 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):
-
INSERT INTO nc_users (uid, uid_lower) SELECT DISTINCT uid, LOWER(uid) FROM nc_users_external;
+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):
-
INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users;
-
INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT("Mailcow-", uid) FROM nc_users;
+
Die Nextcloud-Instanz kann einfach mit dem Web-Update-Mechanismus aktualisiert werden. Bei größeren Updates können nach dem Update weitere Änderungen vorgenommen werden. Nachdem die Nextcloud-Instanz geprüft wurde, werden Probleme angezeigt. Dies können z.B. fehlende Indizes in der DB oder ähnliches sein. @@ -2535,13 +2535,13 @@ Es wird angezeigt, welche Befehle ausgeführt werden müssen, diese müssen im p
Es kann vorkommen, dass Sie die Nextcloud-Instanz von Ihrem Netzwerk aus nicht erreichen können. Dies kann daran liegen, dass der Eintrag Ihres Subnetzes im Array 'trusted_proxies' fehlt. Sie können Änderungen in der Nextcloud config.php in data/web/nextcloud/config/*
vornehmen.
'trusted_proxies' =>
+'trusted_proxies' =>
array (
0 => 'fd4d:6169:6c63:6f77::/64',
1 => '172.22.1.0/24',
2 => 'NewSubnet/24',
),
-
+
Nachdem die Änderungen vorgenommen wurden, muss der nginx-Container neu gestartet werden.
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
-
version: '2.1'
+version: '2.1'
services:
portainer-mailcow:
image: portainer/portainer-ce
@@ -2362,9 +2362,9 @@ services:
mailcow-network:
aliases:
- portainer
-
+
data/conf/nginx/portainer.conf
:
-upstream portainer {
+upstream portainer {
server portainer-mailcow:9000;
}
@@ -2372,9 +2372,9 @@ map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
-
+
2b. Fügen Sie einen neuen Standort für die Standard-Mailcow-Site ein, indem Sie die Datei data/conf/nginx/site.portainer.custom
erstellen:
-
location /portainer/ {
+ location /portainer/ {
proxy_http_version 1.1;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
@@ -2393,10 +2393,10 @@ map $http_upgrade $connection_upgrade {
proxy_set_header Connection $connection_upgrade;
proxy_pass http://portainer/api/websocket/;
}
-
+
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.
Laden Sie Roundcube 1.5.x in das Web htdocs Verzeichnis herunter und entpacken Sie es (hier rc/
):
-
# Prüfen Sie, ob eine neuere Version vorliegt!
+# Prüfen Sie, ob eine neuere Version vorliegt!
cd daten/web
wget -O - https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz | tar xfvz -
@@ -2478,17 +2478,17 @@ chown -R root: rc/
# Fix Allow remote resources (https://github.com/roundcube/roundcubemail/issues/8170) sollte in 1.6 nicht erforderlich sein
sed -i "s/\$prefix = '\.\/';/\$prefix = preg_replace\('\/\[\?\&]\.\*\$\/', '', \$_SERVER\['REQUEST_URI'] \?\? ''\) \?: '\.\/';/g" rc/program/include/rcmail.php
-
+
Wenn Sie eine Rechtschreibprüfung benötigen, erstellen Sie eine Datei data/hooks/phpfpm/aspell.sh
mit folgendem Inhalt und geben Sie dann chmod +x data/hooks/phpfpm/aspell.sh
ein. Dadurch wird eine lokale Rechtschreibprüfung installiert. Beachten Sie, dass die meisten modernen Webbrowser eine eingebaute Rechtschreibprüfung haben, so dass Sie diese vielleicht nicht benötigen.
-
#!/bin/bash
+#!/bin/bash
apk update
apk add aspell-de # oder jede andere Sprache
-
+
Erstellen Sie eine Datei data/web/rc/config/config.inc.php
mit dem folgenden Inhalt.
- Ändern Sie den Parameter des_key
auf einen Zufallswert. Er wird verwendet, um Ihr IMAP-Passwort vorübergehend zu speichern.
- Der db_prefix
ist optional, wird aber empfohlen.
- Wenn Sie die Rechtschreibprüfung im obigen Schritt nicht installiert haben, entfernen Sie den Parameter spellcheck_engine
und ersetzen ihn durch $config['enable_spellcheck'] = false;
.
-
<?php
+<?php
error_reporting(0);
if (!file_exists('/tmp/mime.types')) {
file_put_contents("/tmp/mime.types", fopen("http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types", 'r'));
@@ -2520,13 +2520,13 @@ $config['smtp_conn_options'] = array(
'ssl' => array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true)
);
$config['db_prefix'] = 'mailcow_rc1';
-
+
Richten Sie Ihren Browser auf https://myserver/rc/installer
und folgen Sie den Anweisungen.
Initialisiere die Datenbank und verlasse das Installationsprogramm.
**Löschen Sie das Verzeichnis data/web/rc/installer
nach einer erfolgreichen Installation!
Öffnen Sie data/web/rc/plugins/managesieve/config.inc.php
und ändern Sie die folgenden Parameter (oder fügen Sie sie am Ende der Datei hinzu):
-
$config['managesieve_port'] = 4190;
+$config['managesieve_port'] = 4190;
$config['managesieve_host'] = 'tls://dovecot';
$config['managesieve_conn_options'] = array(
ssl' => array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true)
@@ -2536,37 +2536,37 @@ $config['managesieve_conn_options'] = array(
// 1 - Abschnitt "Urlaub" hinzufügen,
// 2 - Abschnitt "Urlaub" hinzufügen, aber Abschnitt "Filter" ausblenden
$config['managesieve_vacation'] = 1;
-
+
Öffnen Sie data/web/rc/config/config.inc.php
und aktivieren Sie das Passwort-Plugin:
[...]
+[...]
$config['plugins'] = array(
'archive',
'password',
);
[...]
-
+
Öffnen Sie data/web/rc/plugins/password/password.php
, suchen Sie nach case 'ssha':
und fügen Sie oben hinzu:
case 'ssha256':
+ case 'ssha256':
$salt = rcube_utils::random_bytes(8);
$crypted = base64_encode( hash('sha256', $password . $salt, TRUE ) . $salt );
$prefix = '{SSHA256}';
break;
-
+
Öffnen Sie data/web/rc/plugins/password/config.inc.php
und ändern Sie die folgenden Parameter (oder fügen Sie sie am Ende der Datei hinzu):
$config['password_driver'] = 'sql';
+$config['password_driver'] = 'sql';
$config['password_algorithm'] = 'ssha256';
$config['password_algorithm_prefix'] = '{SSHA256}';
$config['password_query'] = "UPDATE mailbox SET password = %P WHERE username = %u";
-
+
Laden Sie die neueste Version von RCMCardDAV in das Roundcube Plugin Verzeichnis und entpacken Sie es (hier rc/plugins
):
-
cd data/web/rc/plugins
+cd data/web/rc/plugins
wget -O - https://github.com/mstilkerich/rcmcarddav/releases/download/v4.3.0/carddav-v4.3.0.tar.gz | tar xfvz -
chown -R root: carddav/
-
+
Kopieren Sie die Datei config.inc.php.dist
nach config.inc.php
(hier in rc/plugins/carddav
) und fügen Sie die folgende Voreinstellung an das Ende der Datei an - vergessen Sie nicht, mx.example.org
durch Ihren eigenen Hostnamen zu ersetzen:
-
$prefs['SOGo'] = array(
+$prefs['SOGo'] = array(
'name' => 'SOGo',
'username' => '%u',
'password' => '%p',
@@ -2579,7 +2579,7 @@ chown -R root: carddav/
'fixed' => array( 'active', 'name', 'username', 'password', 'refresh_time' ),
'hide' => false,
);
-
+
Aktivieren Sie das Plugin, indem Sie carddav
zu $config['plugins']
in rc/config/config.inc.php
hinzufügen.
Wenn Sie die Standard-Adressbücher (die in der Roundcube-Datenbank gespeichert sind) entfernen möchten, so dass nur die CardDAV-Adressbücher zugänglich sind, fügen Sie $config['address_book_type'] = '';
in die Konfigurationsdatei data/web/rc/config/config.inc.php
ein.
Optional können Sie Roundcube's Link zu der mailcow Apps Liste hinzufügen.
Um dies zu tun, öffnen oder erstellen Sie data/web/inc/vars.local.inc.php
und fügen Sie den folgenden Code-Block hinzu:
HINWEIS: Vergessen Sie nicht, das <?php
Trennzeichen in der ersten Zeile einzufügen
...
+...
$MAILCOW_APPS = array(
array(
'name' => 'SOGo',
@@ -2599,10 +2599,10 @@ $MAILCOW_APPS = array(
)
);
...
-
+
Ein Upgrade von Roundcube ist recht einfach: Gehen Sie auf die Github releases Seite für Roundcube und holen Sie sich den Link für die "complete.tar.gz" Datei für die gewünschte Version. Dann folgen Sie den untenstehenden Befehlen und ändern Sie die URL und den Namen des Roundcube-Ordners, falls nötig.
-# Starten Sie eine Bash-Sitzung des mailcow PHP-Containers
+# Starten Sie eine Bash-Sitzung des mailcow PHP-Containers
docker exec -it mailcowdockerized_php-fpm-mailcow_1 bash
# Installieren Sie die erforderliche Upgrade-Abhängigkeit, dann aktualisieren Sie Roundcube auf die gewünschte Version
@@ -2620,42 +2620,42 @@ rm -rf roundcube*
# Fix Allow remote resources (https://github.com/roundcube/roundcubemail/issues/8170) sollte in 1.6 nicht benötigt werden
sed -i "s/\$prefix = '\.\/';/\$prefix = preg_replace\('\/\[\?\&]\.\*\$\/', '', \$_SERVER\['REQUEST_URI'] \?\? ''\) \?: '\.\/';/g" /web/rc/program/include/rcmail.php
-
+
Installieren Sie zunächst das Plugin [dovecot_impersonate] (https://github.com/corbosman/dovecot_impersonate/) und fügen Sie Roundcube als App hinzu (siehe oben).
Editieren Sie mailcow.conf
und fügen Sie folgendes hinzu:
# Erlaube Admins, sich in Roundcube als Email-Benutzer einzuloggen (ohne Passwort)
+# Erlaube Admins, sich in Roundcube als Email-Benutzer einzuloggen (ohne Passwort)
# Roundcube mit Plugin dovecot_impersonate muss zuerst installiert werden
ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE=y
-
+
Editieren Sie docker-compose.override.yml
und verfassen/erweitern Sie den Abschnitt für php-fpm-mailcow
:
version: '2.1'
+version: '2.1'
services:
php-fpm-mailcow:
environment:
- ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE=${ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE:-n}
-
+
Bearbeiten Sie data/web/js/site/mailbox.js
und den folgenden Code nach if (ALLOW_ADMIN_EMAIL_LOGIN) { ... }
if (ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE) {
+if (ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE) {
item.action += '<a href="/rc-auth.php?login=' + encodeURIComponent(item.username) + '" class="login_as btn btn-xs ' + btnSize + ' btn-primary" target="_blank"><i class="bi bi-envelope-fill"></i> Roundcube</a>';
}
-
+
Bearbeiten Sie data/web/mailbox.php
und fügen Sie diese Zeile zum Array $template_data
hinzu:
'allow_admin_email_login_roundcube' => (preg_match("/^(yes|y)+$/i", $_ENV["ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE"])) ? 'true' : 'false',
-
'allow_admin_email_login_roundcube' => (preg_match("/^(yes|y)+$/i", $_ENV["ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE"])) ? 'true' : 'false',
+
Bearbeiten Sie data/web/templates/mailbox.twig
und fügen Sie diesen Code am Ende des [javascript-Abschnitts] ein (https://github.com/mailcow/mailcow-dockerized/blob/2f9da5ae93d93bf62a8c2b7a5a6ae50a41170c48/data/web/templates/mailbox.twig#L49-L57):
var ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE = {{ allow_admin_email_login_roundcube }};
-
var ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE = {{ allow_admin_email_login_roundcube }};
+
Kopieren Sie den Inhalt der folgenden Dateien aus diesem Snippet:
data/web/inc/lib/RoundcubeAutoLogin.php
data/web/rc-auth.php
Starten Sie schließlich mailcow neu
-docker-compose down
+docker-compose down
docker-compose up -d
-
+
Auch mehrere gleichzeitige Admin-Logins auf verschiedene Postfächer sind mit dieser Funktion möglich.
Die Funktion ist standardmäßig deaktiviert. Es kann in der mailcow.conf
durch Setzen aktiviert werden:
-
ALLOW_ADMIN_EMAIL_LOGIN=y
-
ALLOW_ADMIN_EMAIL_LOGIN=y
+
docker-compose up -d
-
docker-compose up -d
+
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
+
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.
Quelle mailcow.conf
+Quelle mailcow.conf
docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
-
+
docker-compose exec redis-mailcow redis-cli
-
docker-compose exec redis-mailcow redis-cli
+
Hier ist eine kurze Übersicht, welcher Container / Dienst was macht: