Dieser Commit ist enthalten in:
milkmaker 2022-06-23 13:18:30 +00:00
Ursprung c683b55387
Commit b4fc802df3
183 geänderte Dateien mit 960 neuen und 1397 gelöschten Zeilen

Datei anzeigen

@ -2432,10 +2432,10 @@
<p><strong>Make sure the user you want to restore exists in your mailcow</strong>. Re-create them if they are missing.</p> <p><strong>Make sure the user you want to restore exists in your mailcow</strong>. Re-create them if they are missing.</p>
<p>Copy the file named after the user you want to restore to <code>__MAILCOW_DIRECTORY__/data/conf/sogo</code>.</p> <p>Copy the file named after the user you want to restore to <code>__MAILCOW_DIRECTORY__/data/conf/sogo</code>.</p>
<p>1. Copy the backup: <code>cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo</code></p> <p>1. Copy the backup: <code>cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo</code></p>
<p>2. Run <code>docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org</code></p> <p>2. Run <code>docker-compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org</code></p>
<p>Run <code>sogo-tool</code> without parameters to check for possible restore options.</p> <p>Run <code>sogo-tool</code> without parameters to check for possible restore options.</p>
<p>3. Delete the copied backup by running <code>rm __MAILCOW_DIRECTORY__/data/conf/sogo</code></p> <p>3. Delete the copied backup by running <code>rm __MAILCOW_DIRECTORY__/data/conf/sogo</code></p>
<p>4. Restart SOGo and Memcached: <code>docker compose restart sogo-mailcow memcached-mailcow</code></p> <p>4. Restart SOGo and Memcached: <code>docker-compose restart sogo-mailcow memcached-mailcow</code></p>
<h3 id="mail">Mail<a class="headerlink" href="#mail" title="Permanent link">&para;</a></h3> <h3 id="mail">Mail<a class="headerlink" href="#mail" title="Permanent link">&para;</a></h3>
<p>In case of an accidental deletion of a mailbox, you will be able to recover for (by default) 5 days. This depends on the <code>MAILDIR_GC_TIME</code> parameter in <code>mailcow.conf</code>.</p> <p>In case of an accidental deletion of a mailbox, you will be able to recover for (by default) 5 days. This depends on the <code>MAILDIR_GC_TIME</code> parameter in <code>mailcow.conf</code>.</p>
<p>A deleted mailbox is copied in its encrypted form to <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage</code>.</p> <p>A deleted mailbox is copied in its encrypted form to <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage</code>.</p>
@ -2443,8 +2443,8 @@
<p>To restore make sure you are actually restoring to the same mailcow it was deleted from or you use the same encryption keys in <code>crypt-vol-1</code>.</p> <p>To restore make sure you are actually restoring to the same mailcow it was deleted from or you use the same encryption keys in <code>crypt-vol-1</code>.</p>
<p><strong>Make sure the user you want to restore exists in your mailcow</strong>. Re-create them if they are missing.</p> <p><strong>Make sure the user you want to restore exists in your mailcow</strong>. Re-create them if they are missing.</p>
<p>Copy the folders from <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]</code> back to <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]</code> and resync the folder and recalc the quota:</p> <p>Copy the folders from <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]</code> back to <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]</code> and resync the folder and recalc the quota:</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net &#39;*&#39; <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net &#39;*&#39;
docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2452,7 +2452,7 @@ docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2530,7 +2530,7 @@ fi
</code></pre></div></p> </code></pre></div></p>
<p>On the destination (in this case <code>/external_share/backups</code>) you may want to have snapshot capabilities (ZFS, Btrfs etc.). Snapshot daily and keep for n days for a consistent backup. <p>On the destination (in this case <code>/external_share/backups</code>) you may want to have snapshot capabilities (ZFS, Btrfs etc.). Snapshot daily and keep for n days for a consistent backup.
Do <strong>not</strong> rsync to a Samba share, you need to keep the correct permissions!</p> Do <strong>not</strong> rsync to a Samba share, you need to keep the correct permissions!</p>
<p>To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run <code>docker compose pull</code> and <code>docker compose up -d</code>.</p> <p>To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run <code>docker-compose pull</code> and <code>docker-compose up -d</code>.</p>
<p>If you are lucky Redis and MariaDB can automatically fix the inconsistent databases (if they <em>are</em> inconsistent). <p>If you are lucky Redis and MariaDB can automatically fix the inconsistent databases (if they <em>are</em> inconsistent).
In case of a corrupted database you'd need to use the helper script to restore the inconsistent elements. If a restore fails, try to extract the backups and copy the files back manually. Keep the file permissions!</p> In case of a corrupted database you'd need to use the helper script to restore the inconsistent elements. If a restore fails, try to extract the backups and copy the files back manually. Keep the file permissions!</p>
@ -2539,7 +2539,7 @@ In case of a corrupted database you'd need to use the helper script to restore t
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2428,13 +2428,13 @@
<h3 id="backup">Backup<a class="headerlink" href="#backup" title="Permanent link">&para;</a></h3> <h3 id="backup">Backup<a class="headerlink" href="#backup" title="Permanent link">&para;</a></h3>
<p>This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory: <p>This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory:
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
docker run --rm -i -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail docker run --rm -i -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail
</code></pre></div></p> </code></pre></div></p>
<p>You can change the path by adjusting ${PWD} (which equals to the current directory) to any path you have write-access to. <p>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 <code>backup_vmail.tar.gz</code> to any custom name, but leave the path as it is. Example: <code>[...] tar cvfz /backup/my_own_filename_.tar.gz</code></p> Set the filename <code>backup_vmail.tar.gz</code> to any custom name, but leave the path as it is. Example: <code>[...] tar cvfz /backup/my_own_filename_.tar.gz</code></p>
<h3 id="restore">Restore<a class="headerlink" href="#restore" title="Permanent link">&para;</a></h3> <h3 id="restore">Restore<a class="headerlink" href="#restore" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar xvfz /backup/backup_vmail.tar.gz docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar xvfz /backup/backup_vmail.tar.gz
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2442,7 +2442,7 @@ docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if e
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2429,16 +2429,16 @@
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
source mailcow.conf source mailcow.conf
DATE=$(date +&quot;%Y%m%d_%H%M%S&quot;) DATE=$(date +&quot;%Y%m%d_%H%M%S&quot;)
docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} &gt; backup_${DBNAME}_${DATE}.sql docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} &gt; backup_${DBNAME}_${DATE}.sql
</code></pre></div> </code></pre></div>
<h2 id="restore">Restore<a class="headerlink" href="#restore" title="Permanent link">&para;</a></h2> <h2 id="restore">Restore<a class="headerlink" href="#restore" title="Permanent link">&para;</a></h2>
<div class="admonition warning"> <div class="admonition warning">
<p class="admonition-title">Warning</p> <p class="admonition-title">Warning</p>
<p>You should redirect the SQL dump without <code>docker compose</code> to prevent parsing errors.</p> <p>You should redirect the SQL dump without <code>docker-compose</code> to prevent parsing errors.</p>
</div> </div>
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
source mailcow.conf source mailcow.conf
docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} &lt; backup_file.sql docker exec -i $(docker-compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} &lt; backup_file.sql
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2446,7 +2446,7 @@ docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPAS
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2465,7 +2465,7 @@
<p>To find the pathes of your source volumes we use <code>docker inspect</code> and read the destination directory of every volume related to your mailcow compose project. This means we will also transfer volumes you may have added in a override file. Local bind mounts may or may not work.</p> <p>To find the pathes of your source volumes we use <code>docker inspect</code> and read the destination directory of every volume related to your mailcow compose project. This means we will also transfer volumes you may have added in a override file. Local bind mounts may or may not work.</p>
<p>The use rsync with the <code>--delete</code> flag. The destination will be an exact copy of the source.</p> <p>The use rsync with the <code>--delete</code> flag. The destination will be an exact copy of the source.</p>
<p><code>mariabackup</code> is used to create a consistent copy of the SQL data directory.</p> <p><code>mariabackup</code> is used to create a consistent copy of the SQL data directory.</p>
<p>After rsync'ing the data we will run <code>docker compose pull</code> and remove old image tags from the destination.</p> <p>After rsync'ing the data we will run <code>docker-compose pull</code> and remove old image tags from the destination.</p>
<p>Your source will not be changed at any time.</p> <p>Your source will not be changed at any time.</p>
<p><strong>You may want to make sure to use the same <code>/etc/docker/daemon.json</code> on the remote target.</strong></p> <p><strong>You may want to make sure to use the same <code>/etc/docker/daemon.json</code> on the remote target.</strong></p>
<p>You should not run disk snapshots (e.g. via ZFS, LVM etc.) on the target at the very same time as this script is run.</p> <p>You should not run disk snapshots (e.g. via ZFS, LVM etc.) on the target at the very same time as this script is run.</p>
@ -2480,7 +2480,7 @@ export REMOTE_SSH_HOST=mailcow-backup.host.name
</code></pre></div> </code></pre></div>
<p>The key must be owned and readable by root only.</p> <p>The key must be owned and readable by root only.</p>
<p>Both the source and destination require <code>rsync</code> &gt;= v3.1.0. <p>Both the source and destination require <code>rsync</code> &gt;= v3.1.0.
The destination must have Docker and docker compose <strong>v1</strong> available.</p> The destination must have Docker and docker-compose <strong>v1</strong> available.</p>
<p>The script will detect errors automatically and exit.</p> <p>The script will detect errors automatically and exit.</p>
<p>You may want to test the connection by running <code>ssh mailcow-backup.host.name -p22 -i /path/to/keyfile</code>.</p> <p>You may want to test the connection by running <code>ssh mailcow-backup.host.name -p22 -i /path/to/keyfile</code>.</p>
<h2 id="backup-and-refresh-the-cold-standby">Backup and refresh the cold-standby<a class="headerlink" href="#backup-and-refresh-the-cold-standby" title="Permanent link">&para;</a></h2> <h2 id="backup-and-refresh-the-cold-standby">Backup and refresh the cold-standby<a class="headerlink" href="#backup-and-refresh-the-cold-standby" title="Permanent link">&para;</a></h2>
@ -2513,7 +2513,7 @@ The destination must have Docker and docker compose <strong>v1</strong> availabl
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2432,10 +2432,10 @@
<p><strong>Stellen Sie sicher, dass der Benutzer, den Sie wiederherstellen wollen, in Ihrem Mailcow-Backend</strong> existiert. Legen Sie diesen neu an, falls nicht mehr existent.</p> <p><strong>Stellen Sie sicher, dass der Benutzer, den Sie wiederherstellen wollen, in Ihrem Mailcow-Backend</strong> existiert. Legen Sie diesen neu an, falls nicht mehr existent.</p>
<p>Kopieren Sie die Datei mit dem Namen des Benutzers, den Sie wiederherstellen wollen, nach <code>__MAILCOW_DIRECTORY__/data/conf/sogo</code>.</p> <p>Kopieren Sie die Datei mit dem Namen des Benutzers, den Sie wiederherstellen wollen, nach <code>__MAILCOW_DIRECTORY__/data/conf/sogo</code>.</p>
<p>1. Kopieren Sie die Sicherung: <code>cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo</code></p> <p>1. Kopieren Sie die Sicherung: <code>cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo</code></p>
<p>2. Starten Sie <code>docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org</code>.</p> <p>2. Starten Sie <code>docker-compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org</code>.</p>
<p>Führen Sie <code>sogo-tool</code> ohne Parameter aus, um nach möglichen Wiederherstellungsoptionen zu suchen.</p> <p>Führen Sie <code>sogo-tool</code> ohne Parameter aus, um nach möglichen Wiederherstellungsoptionen zu suchen.</p>
<p>3. Löschen Sie die kopierte Sicherung, indem Sie <code>rm __MAILCOW_DIRECTORY__/data/conf/sogo</code> ausführen</p> <p>3. Löschen Sie die kopierte Sicherung, indem Sie <code>rm __MAILCOW_DIRECTORY__/data/conf/sogo</code> ausführen</p>
<p>4. Starten Sie SOGo und Memcached neu: <code>docker compose restart sogo-mailcow memcached-mailcow</code></p> <p>4. Starten Sie SOGo und Memcached neu: <code>docker-compose restart sogo-mailcow memcached-mailcow</code></p>
<h3 id="mail">Mail<a class="headerlink" href="#mail" title="Permanent link">&para;</a></h3> <h3 id="mail">Mail<a class="headerlink" href="#mail" title="Permanent link">&para;</a></h3>
<p>Im Falle einer versehentlichen Löschung einer Mailbox, können Sie diese (standardmäßig) 5 Tage lang wiederherstellen. Dies hängt von dem <code>MAILDIR_GC_TIME</code> Parameter in <code>mailcow.conf</code> ab.</p> <p>Im Falle einer versehentlichen Löschung einer Mailbox, können Sie diese (standardmäßig) 5 Tage lang wiederherstellen. Dies hängt von dem <code>MAILDIR_GC_TIME</code> Parameter in <code>mailcow.conf</code> ab.</p>
<p>Eine gelöschte Mailbox wird in ihrer verschlüsselten Form nach <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage</code> kopiert.</p> <p>Eine gelöschte Mailbox wird in ihrer verschlüsselten Form nach <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage</code> kopiert.</p>
@ -2443,8 +2443,8 @@
<p>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 <code>crypt-vol-1</code>.</p> <p>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 <code>crypt-vol-1</code>.</p>
<p><strong>Stellen Sie sicher, dass der Benutzer, den Sie wiederherstellen wollen, in Ihrer Mailcow existiert</strong>. Legen Sie diesen neu an, wenn der Benutzer fehlt.</p> <p><strong>Stellen Sie sicher, dass der Benutzer, den Sie wiederherstellen wollen, in Ihrer Mailcow existiert</strong>. Legen Sie diesen neu an, wenn der Benutzer fehlt.</p>
<p>Kopieren Sie die Ordner von <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]</code> zurück nach <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]</code> und synchronisieren Sie die Ordner neu und berechnen Sie die Quota (Speicherplatz) neu:</p> <p>Kopieren Sie die Ordner von <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]</code> zurück nach <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]</code> und synchronisieren Sie die Ordner neu und berechnen Sie die Quota (Speicherplatz) neu:</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net &#39;*&#39; <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net &#39;*&#39;
docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2452,7 +2452,7 @@ docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2549,7 +2549,7 @@ fi
</code></pre></div></p> </code></pre></div></p>
<p>Am Zielort (in diesem Fall <code>/external_share/backups</code>) 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. <p>Am Zielort (in diesem Fall <code>/external_share/backups</code>) 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 <strong>kein</strong> rsync auf eine Samba-Freigabe durch, Sie müssen die richtigen Berechtigungen einhalten!</p> Führen Sie <strong>kein</strong> rsync auf eine Samba-Freigabe durch, Sie müssen die richtigen Berechtigungen einhalten!</p>
<p>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 <code>docker compose pull</code> und <code>docker compose up -d</code> aus.</p> <p>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 <code>docker-compose pull</code> und <code>docker-compose up -d</code> aus.</p>
<p>Wenn Sie Glück haben, können Redis und MariaDB die inkonsistenten Datenbanken automatisch reparieren (wenn sie <em>inkonsistent</em> sind). <p>Wenn Sie Glück haben, können Redis und MariaDB die inkonsistenten Datenbanken automatisch reparieren (wenn sie <em>inkonsistent</em> sind).
Im Falle einer beschädigten Datenbank müssen Sie das Hilfsskript verwenden, um die inkonsistenten Elemente wiederherzustellen. Wenn die Wiederherstellung fehlschlägt, versuchen Sie, die Sicherungen zu extrahieren und die Dateien manuell zurück zu kopieren. Behalten Sie die Dateiberechtigungen bei!</p> Im Falle einer beschädigten Datenbank müssen Sie das Hilfsskript verwenden, um die inkonsistenten Elemente wiederherzustellen. Wenn die Wiederherstellung fehlschlägt, versuchen Sie, die Sicherungen zu extrahieren und die Dateien manuell zurück zu kopieren. Behalten Sie die Dateiberechtigungen bei!</p>
@ -2558,7 +2558,7 @@ Im Falle einer beschädigten Datenbank müssen Sie das Hilfsskript verwenden, um
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2428,13 +2428,13 @@
<h3 id="sicherung">Sicherung<a class="headerlink" href="#sicherung" title="Permanent link">&para;</a></h3> <h3 id="sicherung">Sicherung<a class="headerlink" href="#sicherung" title="Permanent link">&para;</a></h3>
<p>Diese Zeile sichert das vmail-Verzeichnis in eine Datei backup_vmail.tar.gz im mailcow-Root-Verzeichnis: <p>Diese Zeile sichert das vmail-Verzeichnis in eine Datei backup_vmail.tar.gz im mailcow-Root-Verzeichnis:
<div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized
docker run --rm -i -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{{ end }}&#39; $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail docker run --rm -i -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{{ end }}&#39; $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail
</code></pre></div></p> </code></pre></div></p>
<p>Sie können den Pfad ändern, indem Sie ${PWD} (das dem aktuellen Verzeichnis entspricht) an einen beliebigen Pfad anpassen, auf den Sie Schreibzugriff haben. <p>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 <code>backup_vmail.tar.gz</code> auf einen beliebigen Namen, aber lassen Sie den Pfad so wie er ist. Beispiel: <code>[...] tar cvfz /backup/mein_eigener_filename_.tar.gz</code></p> Setzen Sie den Dateinamen <code>backup_vmail.tar.gz</code> auf einen beliebigen Namen, aber lassen Sie den Pfad so wie er ist. Beispiel: <code>[...] tar cvfz /backup/mein_eigener_filename_.tar.gz</code></p>
<h3 id="wiederherstellen">Wiederherstellen<a class="headerlink" href="#wiederherstellen" title="Permanent link">&para;</a></h3> <h3 id="wiederherstellen">Wiederherstellen<a class="headerlink" href="#wiederherstellen" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized
docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar xvfz /backup/backup_vmail.tar.gz docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar xvfz /backup/backup_vmail.tar.gz
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2442,7 +2442,7 @@ docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if e
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2429,16 +2429,16 @@
<div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized
source mailcow.conf source mailcow.conf
DATE=$(Datum +&quot;%Y%m%d_%H%M%S&quot;) DATE=$(Datum +&quot;%Y%m%d_%H%M%S&quot;)
docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} &gt; backup_${DBNAME}_${DATE}.sql docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} &gt; backup_${DBNAME}_${DATE}.sql
</code></pre></div> </code></pre></div>
<h2 id="wiederherstellen">Wiederherstellen<a class="headerlink" href="#wiederherstellen" title="Permanent link">&para;</a></h2> <h2 id="wiederherstellen">Wiederherstellen<a class="headerlink" href="#wiederherstellen" title="Permanent link">&para;</a></h2>
<div class="admonition warning"> <div class="admonition warning">
<p class="admonition-title">Warning</p> <p class="admonition-title">Warning</p>
<p>Sie sollten den SQL-Dump ohne <code>docker compose</code> umleiten, um Parsing-Fehler zu vermeiden.</p> <p>Sie sollten den SQL-Dump ohne <code>docker-compose</code> umleiten, um Parsing-Fehler zu vermeiden.</p>
</div> </div>
<div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized
source mailcow.conf source mailcow.conf
docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} &lt; backup_file.sql docker exec -i $(docker-compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} &lt; backup_file.sql
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2446,7 +2446,7 @@ docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPAS
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2465,7 +2465,7 @@
<p>Um die Pfade Ihrer Quellvolumes zu finden, verwenden wir <code>docker inspect</code> und lesen das Zielverzeichnis jedes Volumes, das mit Ihrem mailcow compose Projekt verbunden ist. Das bedeutet, dass wir auch Volumes übertragen, die Sie in einer Override-Datei hinzugefügt haben. Lokale Bind-Mounts können funktionieren, müssen aber nicht.</p> <p>Um die Pfade Ihrer Quellvolumes zu finden, verwenden wir <code>docker inspect</code> und lesen das Zielverzeichnis jedes Volumes, das mit Ihrem mailcow compose Projekt verbunden ist. Das bedeutet, dass wir auch Volumes übertragen, die Sie in einer Override-Datei hinzugefügt haben. Lokale Bind-Mounts können funktionieren, müssen aber nicht.</p>
<p>Die Verwendung von rsync mit dem <code>--delete</code> Flag. Das Ziel wird eine exakte Kopie der Quelle sein.</p> <p>Die Verwendung von rsync mit dem <code>--delete</code> Flag. Das Ziel wird eine exakte Kopie der Quelle sein.</p>
<p><code>mariabackup</code> wird verwendet, um eine konsistente Kopie des SQL-Datenverzeichnisses zu erstellen.</p> <p><code>mariabackup</code> wird verwendet, um eine konsistente Kopie des SQL-Datenverzeichnisses zu erstellen.</p>
<p>Nach dem Rsync der Daten führen wir <code>docker compose pull</code> aus und entfernen alte Image-Tags aus dem Ziel.</p> <p>Nach dem Rsync der Daten führen wir <code>docker-compose pull</code> aus und entfernen alte Image-Tags aus dem Ziel.</p>
<p>Ihre Quelle wird zu keinem Zeitpunkt verändert.</p> <p>Ihre Quelle wird zu keinem Zeitpunkt verändert.</p>
<p>**Sie sollten sicherstellen, dass Sie die gleiche <code>/etc/docker/daemon.json</code> auf dem entfernten Ziel verwenden.</p> <p>**Sie sollten sicherstellen, dass Sie die gleiche <code>/etc/docker/daemon.json</code> auf dem entfernten Ziel verwenden.</p>
<p>Sie sollten keine Festplatten-Snapshots (z. B. über ZFS, LVM usw.) auf dem Ziel ausführen, während dieses Skript ausgeführt wird.</p> <p>Sie sollten keine Festplatten-Snapshots (z. B. über ZFS, LVM usw.) auf dem Ziel ausführen, während dieses Skript ausgeführt wird.</p>
@ -2480,7 +2480,7 @@ export REMOTE_SSH_HOST=mailcow-backup.host.name
</code></pre></div> </code></pre></div>
<p>Der Schlüssel muss im Besitz von root sein und darf nur von diesem gelesen werden können.</p> <p>Der Schlüssel muss im Besitz von root sein und darf nur von diesem gelesen werden können.</p>
<p>Sowohl die Quelle als auch das Ziel benötigen <code>rsync</code> &gt;= v3.1.0. <p>Sowohl die Quelle als auch das Ziel benötigen <code>rsync</code> &gt;= v3.1.0.
Das Ziel muss über Docker und docker compose <strong>v1</strong> verfügen.</p> Das Ziel muss über Docker und docker-compose <strong>v1</strong> verfügen.</p>
<p>Das Skript wird Fehler automatisch erkennen und sich beenden.</p> <p>Das Skript wird Fehler automatisch erkennen und sich beenden.</p>
<p>Sie können die Verbindung testen, indem Sie <code>ssh mailcow-backup.host.name -p22 -i /path/to/keyfile</code> ausführen.</p> <p>Sie können die Verbindung testen, indem Sie <code>ssh mailcow-backup.host.name -p22 -i /path/to/keyfile</code> ausführen.</p>
<h2 id="backup-und-aktualisierung-des-cold-standby">Backup und Aktualisierung des Cold-Standby<a class="headerlink" href="#backup-und-aktualisierung-des-cold-standby" title="Permanent link">&para;</a></h2> <h2 id="backup-und-aktualisierung-des-cold-standby">Backup und Aktualisierung des Cold-Standby<a class="headerlink" href="#backup-und-aktualisierung-des-cold-standby" title="Permanent link">&para;</a></h2>
@ -2513,7 +2513,7 @@ Das Ziel muss über Docker und docker compose <strong>v1</strong> verfügen.</p>
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2361,7 +2361,7 @@
<h1>Deinstallation</h1> <h1>Deinstallation</h1>
<p>Um mailcow: dockerized mit all seinen Volumes, Images und Containern zu entfernen, tun Sie dies:</p> <p>Um mailcow: dockerized mit all seinen Volumes, Images und Containern zu entfernen, tun Sie dies:</p>
<div class="highlight"><pre><span></span><code>docker compose down -v --rmi all --remove-orphans <div class="highlight"><pre><span></span><code>docker-compose down -v --rmi all --remove-orphans
</code></pre></div> </code></pre></div>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
@ -2369,7 +2369,7 @@
<li><strong>-v</strong> Entfernt benannte Volumes, die im Abschnitt <code>volumes</code> der Compose-Datei deklariert sind, und anonyme Volumes, die an Container angehängt sind.</li> <li><strong>-v</strong> Entfernt benannte Volumes, die im Abschnitt <code>volumes</code> der Compose-Datei deklariert sind, und anonyme Volumes, die an Container angehängt sind.</li>
<li><strong>--rmi <Typ></strong> Images entfernen. Der Typ muss einer der folgenden sein: <code>all</code>: Entfernt alle Images, die von einem beliebigen Dienst verwendet werden. <code>local</code>: Entfernt nur Bilder, die kein benutzerdefiniertes Tag haben, das durch das Feld "image" gesetzt wurde.</li> <li><strong>--rmi <Typ></strong> Images entfernen. Der Typ muss einer der folgenden sein: <code>all</code>: Entfernt alle Images, die von einem beliebigen Dienst verwendet werden. <code>local</code>: Entfernt nur Bilder, die kein benutzerdefiniertes Tag haben, das durch das Feld "image" gesetzt wurde.</li>
<li><strong>--remove-orphans</strong> Entfernt Container für Dienste, die nicht in der Compose-Datei definiert sind.</li> <li><strong>--remove-orphans</strong> Entfernt Container für Dienste, die nicht in der Compose-Datei definiert sind.</li>
<li>Standardmäßig entfernt <code>docker compose down</code> nur derzeit aktive Container und Netzwerke, die in der Datei <code>docker-compose.yml</code> definiert sind.</li> <li>Standardmäßig entfernt <code>docker-compose down</code> nur derzeit aktive Container und Netzwerke, die in der Datei <code>docker-compose.yml</code> definiert sind.</li>
</ul> </ul>
</div> </div>
@ -2378,7 +2378,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -67,11 +67,6 @@
<label class="md-overlay" for="__drawer"></label> <label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip"> <div data-md-component="skip">
<a href="#installation-von-docker" class="md-skip">
Zum Inhalt
</a>
</div> </div>
<div data-md-component="announce"> <div data-md-component="announce">
@ -369,73 +364,10 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
Installation
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active"> <a href="./" class="md-nav__link md-nav__link--active">
Installation Installation
</a> </a>
<nav class="md-nav md-nav--secondary" aria-label="Inhaltsverzeichnis">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Inhaltsverzeichnis
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#installation-von-docker" class="md-nav__link">
Installation von Docker
</a>
</li>
<li class="md-nav__item">
<a href="#installation-von-docker-compose-v2" class="md-nav__link">
Installation von Docker Compose v2
</a>
<nav class="md-nav" aria-label="Installation von Docker Compose v2">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docker-compose-v1-deinstallieren" class="md-nav__link">
Docker Compose v1 deinstallieren
</a>
</li>
<li class="md-nav__item">
<a href="#docker-compose-v2-installieren" class="md-nav__link">
Docker Compose v2 installieren
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#installation-von-mailcow" class="md-nav__link">
Installation von mailcow
</a>
</li>
</ul>
</nav>
</li> </li>
@ -2410,55 +2342,6 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Inhaltsverzeichnis
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#installation-von-docker" class="md-nav__link">
Installation von Docker
</a>
</li>
<li class="md-nav__item">
<a href="#installation-von-docker-compose-v2" class="md-nav__link">
Installation von Docker Compose v2
</a>
<nav class="md-nav" aria-label="Installation von Docker Compose v2">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docker-compose-v1-deinstallieren" class="md-nav__link">
Docker Compose v1 deinstallieren
</a>
</li>
<li class="md-nav__item">
<a href="#docker-compose-v2-installieren" class="md-nav__link">
Docker Compose v2 installieren
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#installation-von-mailcow" class="md-nav__link">
Installation von mailcow
</a>
</li>
</ul>
</nav> </nav>
</div> </div>
</div> </div>
@ -2478,15 +2361,30 @@
<h1>Installation</h1> <h1>Installation</h1>
<p>Sie benötigen Docker (eine Version &gt;= <code>20.10.2</code> ist erforderlich) und Docker Compose (eine Version <code>&gt;= 2.0</code> ist erforderlich).</p> <p>Sie benötigen Docker (eine Version &gt;= <code>20.10.2</code> ist erforderlich) und Docker Compose (eine Version <code>&gt;= 2.0</code> ist erforderlich).</p>
<h2 id="installation-von-docker">Installation von Docker<a class="headerlink" href="#installation-von-docker" title="Permanent link">&para;</a></h2> <p><strong>1.</strong> Erfahren Sie, wie Sie <a href="https://docs.docker.com/install/">Docker</a> und <a href="https://docs.docker.com/compose/install/">Docker Compose</a> installieren.</p>
<p>Erfahren Sie, wie Sie <a href="https://docs.docker.com/install/">Docker</a> allgemein installieren.</p>
<p>Schnelle Installation für die meisten Betriebssysteme:</p> <p>Schnelle Installation für die meisten Betriebssysteme:</p>
<ul>
<li>
<p>Docker
<div class="highlight"><pre><span></span><code>curl -sSL https://get.docker.com/ | CHANNEL=stable sh <div class="highlight"><pre><span></span><code>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) # 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 systemctl enable --now docker
</code></pre></div></p>
</li>
<li>
<p>Docker-Compose</p>
</li>
</ul>
<div class="admonition danger">
<p class="admonition-title">Achtung</p>
<p><strong>mailcow benötigt die neueste Version von docker-compose v2.</strong> Es wird dringend empfohlen, die untenstehenden Befehle zu verwenden, um <code>docker-compose</code> zu installieren. Paket-Manager (z.B. <code>apt</code>, <code>yum</code>) werden <strong>wahrscheinlich</strong> 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).</p>
</div>
<div class="highlight"><pre><span></span><code>curl -L https://github.com/docker/compose/releases/download/v$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) &gt; /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
</code></pre></div> </code></pre></div>
<p><strong>Bitte verwenden Sie die neueste verfügbare Docker-Engine und nicht die Engine, die mit Ihrem Distro-Repository ausgeliefert wird.</strong></p> <p>Bitte verwenden Sie die neueste verfügbare Docker-Engine und nicht die Engine, die mit Ihrem Distros-Repository ausgeliefert wird.</p>
<p><strong>Auf SELinux-aktivierten Systemen, z.B. CentOS 7:</strong></p> <p><strong>1.1.1.</strong> Auf SELinux-aktivierten Systemen, z.B. CentOS 7:</p>
<ul> <ul>
<li>Prüfen Sie, ob das Paket "container-selinux" auf Ihrem System vorhanden ist:</li> <li>Prüfen Sie, ob das Paket "container-selinux" auf Ihrem System vorhanden ist:</li>
</ul> </ul>
@ -2504,53 +2402,9 @@ systemctl enable --now docker
} }
</code></pre></div> </code></pre></div>
<p>Starten Sie den Docker-Daemon neu und überprüfen Sie, ob SELinux nun aktiviert ist.</p> <p>Starten Sie den Docker-Daemon neu und überprüfen Sie, ob SELinux nun aktiviert ist.</p>
<p>Dieser Schritt ist erforderlich, um sicherzustellen, dass die mailcow-Volumes richtig gekennzeichnet werden, wie in der Compose-Datei angegeben. <p>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 dies funktioniert, können Sie sich die Readme-Datei von <a href="https://github.com/containers/container-selinux">https://github.com/containers/container-selinux</a> ansehen, die auf viele nützliche Informationen zu diesem Thema verweist.</p> Wenn Sie daran interessiert sind, wie das funktioniert, können Sie sich die Readme-Datei von <a href="https://github.com/containers/container-selinux">https://github.com/containers/container-selinux</a> ansehen, die auf viele nützliche Informationen zu diesem Thema verweist.</p>
<h2 id="installation-von-docker-compose-v2">Installation von Docker Compose v2<a class="headerlink" href="#installation-von-docker-compose-v2" title="Permanent link">&para;</a></h2> <p><strong>2.</strong> 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. <strong>Wir geben die Berechtigungen für jede exponierte Anwendung</strong> 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.</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
</div>
<p>Version 2 Dateien werden von Compose 1.6.0+ unterstützt und erfordern eine Docker Engine der Version 1.10.0+.</p>
<div class="admonition danger">
<p class="admonition-title">Achtung</p>
<p>Seit Juni 2022 wurde Docker Compose v1 in der mailcow durch Docker Compose v2 abgelöst. <br>
<strong>Docker Compose v1 verliert den offiziellen Support seitens Docker im Oktober 2022.</strong> <br>
<em>mailcow unterstützt bis Dezember 2022 Docker Compose v1. Danach ist die Installation <strong>unumgänglich</strong>, sollten Sie mailcow <strong>weiter betreiben</strong> wollen.</em></p>
</div>
<div class="admonition bug">
<p class="admonition-title">Kompatibilität</p>
<p>Das Webinterface wird im Zeitraum von Juni - Dezember 2022 standardmäßig nur über v4 erreichbar sein.<br>
Der Grund dafür ist die Dual-Kompatibilität zwischen Compose v1 und v2. <br>
Sollten Sie das Webinterface, wie bisher standardmäßig über v6 erreichen wollen, werfen Sie bitte einen Blick auf <a href="../../post_installation/firststeps-ip_bindings/#ipv6-binding">dieses Kapitel</a>. <br>
<strong>Mit dem 2022-12 Update wird die native IPv6 Erreichbarkeit der Weboberfläche wiederhergestellt.</strong></p>
</div>
<p>Sollten Sie mailcow frisch installieren und Docker auf die oben stehende Weise installiert haben, wird Docker Compose v2 schon mit installiert. Sie müssen also nichts weiter tun.</p>
<p>Prüfen lässt sich dies mit <code>docker compose version</code>, wenn die Rückgabe in etwa so aussieht: <code>Docker Compose version v2.5.0</code>, dann ist das neue Docker Compose bereits auf Ihrem System installiert.</p>
<p>Falls es nicht installiert ist oder Sie von Docker-Compose v1 auf v2 Upgraden möchten folgen Sie einfach der Anleitung:</p>
<h4 id="docker-compose-v1-deinstallieren">Docker Compose v1 deinstallieren<a class="headerlink" href="#docker-compose-v1-deinstallieren" title="Permanent link">&para;</a></h4>
<p><strong>Sollten Sie den mailcow Stack bereits mit docker-compose v1 betreiben, stellen Sie sicher, dass Sie den mailcow Stack vor dem Upgrade auf Compose v2 heruntergefahren und das aktuellste Update installiert haben</strong></p>
<p>Um Docker Compose v1 zu deinstallieren geben Sie folgenden Befehl ein:</p>
<div class="highlight"><pre><span></span><code>rm -rf /usr/local/bin/docker-compose
</code></pre></div>
<h4 id="docker-compose-v2-installieren">Docker Compose v2 installieren<a class="headerlink" href="#docker-compose-v2-installieren" title="Permanent link">&para;</a></h4>
<p>Docker Compose v2 kommt (vorausgesetzt Sie haben die Anleitung bei Punkt <a href="#installation-von-docker">Installation von Docker</a> befolgt) mit dem Repository mit.</p>
<p>Dann ist die Installation ganz einfach:</p>
<div class="highlight"><pre><span></span><code>apt install docker-compose-plugin -y
</code></pre></div>
<p>Nun noch einmal <code>docker compose version</code> eingeben und die Rückgabe überprüfen. Ist diese ähnlich zu: <code>Docker Compose version v2.5.0</code>? Dann ist alles korrekt installiert worden!</p>
<div class="admonition warning">
<p class="admonition-title">Hinweis</p>
<p>Sollten Sie ein anderes Betriebssystem als Debian/Ubuntu verwenden, werfen Sie bitte einen Blick in das <a href="https://docs.docker.com/compose/install/#install-compose-on-linux-systems">offizielle Installationshandbuch</a> von Docker selbst, um zu erfahren wie Sie Docker Compose v2 auf anderen Linux Systemen installieren können.</p>
</div>
<h2 id="installation-von-mailcow">Installation von mailcow<a class="headerlink" href="#installation-von-mailcow" title="Permanent link">&para;</a></h2>
<p><strong>1.</strong> 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.
<strong>Wir geben die Berechtigungen für jede exponierte Anwendung</strong> 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.</p>
<div class="highlight"><pre><span></span><code>$ su <div class="highlight"><pre><span></span><code>$ su
# umask # umask
0022 # &lt;- Überprüfen, dass es 0022 ist 0022 # &lt;- Überprüfen, dass es 0022 ist
@ -2558,16 +2412,16 @@ Sollten Sie das Webinterface, wie bisher standardmäßig über v6 erreichen woll
# git clone https://github.com/mailcow/mailcow-dockerized # git clone https://github.com/mailcow/mailcow-dockerized
# cd mailcow-dockerized # cd mailcow-dockerized
</code></pre></div> </code></pre></div>
<p><strong>2.</strong> Erzeugen Sie eine Konfigurationsdatei. Verwenden Sie einen FQDN (<code>host.domain.tld</code>) als Hostname, wenn Sie gefragt werden. <p><strong>3.</strong> Erzeugen Sie eine Konfigurationsdatei. Verwenden Sie einen FQDN (<code>host.domain.tld</code>) als Hostname, wenn Sie gefragt werden.
<div class="highlight"><pre><span></span><code>./generate_config.sh <div class="highlight"><pre><span></span><code>./generate_config.sh
</code></pre></div></p> </code></pre></div></p>
<p><strong>3.</strong> Ändern Sie die Konfiguration, wenn Sie dies möchten: <p><strong>4.</strong> Ändern Sie die Konfiguration, wenn Sie das wollen oder müssen.
<div class="highlight"><pre><span></span><code>nano mailcow.conf <div class="highlight"><pre><span></span><code>nano mailcow.conf
</code></pre></div> </code></pre></div>
Wenn Sie planen, einen Reverse-Proxy zu verwenden, können Sie zum Beispiel HTTPS an 127.0.0.1 auf Port 8443 und HTTP an 127.0.0.1 auf Port 8080 binden.</p> Wenn Sie planen, einen Reverse Proxy zu verwenden, können Sie zum Beispiel HTTPS an 127.0.0.1 auf Port 8443 und HTTP an 127.0.0.1 auf Port 8080 binden.</p>
<p>Möglicherweise müssen Sie einen vorinstallierten MTA stoppen, der Port 25/tcp blockiert. Siehe <a href="../../post_installation/firststeps-local_mta/">dieses Kapitel</a>, um zu erfahren, wie man Postfix rekonfiguriert, um nach einer erfolgreichen Installation neben mailcow laufen zu lassen.</p> <p>Möglicherweise müssen Sie einen vorinstallierten MTA stoppen, der Port 25/tcp blockiert. Siehe <a href="../../post_installation/firststeps-local_mta/">dieses Kapitel</a>, um zu erfahren, wie man Postfix rekonfiguriert, um nach einer erfolgreichen Installation neben mailcow laufen zu lassen.</p>
<p>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.</p> <p>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.</p>
<p><strong>3.1.</strong> Benutzer mit einer MTU ungleich 1500 (z.B. OpenStack):</p> <p><strong>4.1.</strong> Benutzer mit einer MTU ungleich 1500 (z.B. OpenStack):</p>
<p><strong>Wenn Sie auf Probleme und seltsame Phänomene stoßen, überprüfen Sie bitte Ihre MTU.</strong></p> <p><strong>Wenn Sie auf Probleme und seltsame Phänomene stoßen, überprüfen Sie bitte Ihre MTU.</strong></p>
<p>Bearbeiten Sie <code>docker-compose.yml</code> und ändern Sie die Netzwerkeinstellungen entsprechend Ihrer MTU. <p>Bearbeiten Sie <code>docker-compose.yml</code> und ändern Sie die Netzwerkeinstellungen entsprechend Ihrer MTU.
Fügen Sie den neuen Parameter driver_opts wie folgt hinzu: Fügen Sie den neuen Parameter driver_opts wie folgt hinzu:
@ -2578,31 +2432,28 @@ Fügen Sie den neuen Parameter driver_opts wie folgt hinzu:
com.docker.network.driver.mtu: 1450 com.docker.network.driver.mtu: 1450
... ...
</code></pre></div></p> </code></pre></div></p>
<p><strong>3.2.</strong> Benutzer ohne ein IPv6-aktiviertes Netzwerk auf ihrem Hostsystem:</p> <p><strong>4.2.</strong> Benutzer ohne ein IPv6-aktiviertes Netzwerk auf ihrem Hostsystem:</p>
<p><strong>Einschalten von IPv6. Endlich.</strong></p> <p><strong>Einschalten von IPv6. Endlich.</strong></p>
<p>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 <a href="../../post_installation/firststeps-disable_ipv6/">deaktivieren</a>, um unvorhergesehene Probleme zu vermeiden.</p> <p>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 <a href="../../post_installation/firststeps-disable_ipv6/">deaktivieren</a>, um unvorhergesehene Probleme zu vermeiden.</p>
<p><strong>4.</strong> Laden Sie die Docker Images herunter und führen Sie die Compose-Datei aus, um die mailcow-Container zu starten. Der Parameter <code>-d</code> sorgt dafür, dass die Container im Hintergrund ausgeführt werden.</p> <p><strong>5.</strong> LAden Sie die Images herunter und führen Sie die Compose-Datei aus. Der Parameter <code>-d</code> wird mailcow: dockerized starten:
<div class="highlight"><pre><span></span><code>docker compose pull <div class="highlight"><pre><span></span><code>docker-compose pull
docker compose up -d docker-compose up -d
</code></pre></div>
<p>Der Container Status kann mit folgendem Befehl abgefragt werden:
<div class="highlight"><pre><span></span><code>docker compose ps
</code></pre></div></p> </code></pre></div></p>
<p>Fertig!</p> <p>Geschafft!</p>
<p>Sie können nun auf <strong>https://${MAILCOW_HOSTNAME}</strong> mit den Standard-Zugangsdaten <code>admin</code> + Passwort <code>moohoo</code> zugreifen.</p> <p>Sie können nun auf <strong>https://${MAILCOW_HOSTNAME}</strong> mit den Standard-Zugangsdaten <code>admin</code> + Passwort <code>moohoo</code> zugreifen.</p>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
<p>Wenn Sie mailcow nicht hinter einem Reverse-Proxy verwenden, sollten Sie <a href="../../manual-guides/u_e-80_to_443/">alle HTTP-Anfragen auf HTTPS umleiten</a>.</p> <p>Wenn Sie mailcow nicht hinter einem Reverse Proxy verwenden, sollten Sie <a href="../../manual-guides/u_e-80_to_443/">alle HTTP-Anfragen auf HTTPS umleiten</a>.</p>
</div> </div>
<p>Die Datenbank wird sofort initialisiert, nachdem eine Verbindung zur MySQL-Datenbank hergestellt werden kann.</p> <p>Die Datenbank wird sofort initialisiert, nachdem eine Verbindung zu MySQL hergestellt werden kann.</p>
<p>Ihre Daten bleiben in mehreren Docker-Volumes erhalten, die nicht gelöscht werden, wenn Sie Container neu erstellen oder löschen. Führen Sie <code>docker volume ls</code> aus, um eine Liste aller Volumes zu sehen. Sie können <code>docker compose down</code> sicher ausführen, ohne persistente Daten zu entfernen.</p> <p>Ihre Daten bleiben in mehreren Docker-Volumes erhalten, die nicht gelöscht werden, wenn Sie Container neu erstellen oder löschen. Führen Sie <code>docker volume ls</code> aus, um eine Liste aller Volumes zu sehen. Sie können <code>docker-compose down</code> sicher ausführen, ohne persistente Daten zu entfernen.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-09 20:24:38</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2369,7 +2369,7 @@
<p>Alternativ können Sie das Skript <code>./helper-scripts/backup_and_restore.sh</code> verwenden, um ein vollständiges Backup auf der Quellmaschine zu erstellen, dann installieren Sie mailcow auf der Zielmaschine wie gewohnt, kopieren Sie Ihre <code>mailcow.conf</code> und verwenden Sie das gleiche Skript, um Ihr Backup auf der Zielmaschine wiederherzustellen.</p> <p>Alternativ können Sie das Skript <code>./helper-scripts/backup_and_restore.sh</code> verwenden, um ein vollständiges Backup auf der Quellmaschine zu erstellen, dann installieren Sie mailcow auf der Zielmaschine wie gewohnt, kopieren Sie Ihre <code>mailcow.conf</code> und verwenden Sie das gleiche Skript, um Ihr Backup auf der Zielmaschine wiederherzustellen.</p>
</div> </div>
<p><strong>1.</strong> <p><strong>1.</strong>
Installieren Sie <a href="https://docs.docker.com/engine/installation/linux/">Docker</a> und <a href="https://docs.docker.com/compose/install/">Docker Compose</a> auf Ihrem neuen Server.</p> Installieren Sie <a href="https://docs.docker.com/engine/installation/linux/">Docker</a> und <a href="https://docs.docker.com/compose/install/">docker-compose</a> auf Ihrem neuen Server.</p>
<p>Schnelle Installation für die meisten Betriebssysteme:</p> <p>Schnelle Installation für die meisten Betriebssysteme:</p>
<ul> <ul>
<li> <li>
@ -2380,9 +2380,9 @@ systemctl enable docker.service
</code></pre></div></p> </code></pre></div></p>
</li> </li>
<li> <li>
<p>docker compose <p>docker-compose
<div class="highlight"><pre><span></span><code>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) &gt; /usr/local/bin/docker compose <div class="highlight"><pre><span></span><code>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) &gt; /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker compose chmod +x /usr/local/bin/docker-compose
</code></pre></div></p> </code></pre></div></p>
</li> </li>
</ul> </ul>
@ -2397,7 +2397,7 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.
</code></pre></div></p> </code></pre></div></p>
<p><strong>4.</strong> Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner. <p><strong>4.</strong> Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner.
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
docker compose herunterfahren docker-compose herunterfahren
systemctl stop docker.service systemctl stop docker.service
</code></pre></div></p> </code></pre></div></p>
<p>**Wiederholen Sie Schritt 3 mit denselben Befehlen. Dies wird viel schneller gehen als beim ersten Mal.</p> <p>**Wiederholen Sie Schritt 3 mit denselben Befehlen. Dies wird viel schneller gehen als beim ersten Mal.</p>
@ -2406,10 +2406,10 @@ systemctl stop docker.service
</code></pre></div></p> </code></pre></div></p>
<p><strong>7.</strong> Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner. <p><strong>7.</strong> Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner.
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
docker compose pull docker-compose pull
</code></pre></div></p> </code></pre></div></p>
<p><strong>8.</strong> Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein! <p><strong>8.</strong> Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein!
<div class="highlight"><pre><span></span><code>docker compose up -d <div class="highlight"><pre><span></span><code>docker-compose up -d
</code></pre></div></p> </code></pre></div></p>
<p><strong>9.</strong> Zum Schluss ändern Sie Ihre DNS-Einstellungen so, dass sie auf den Zielserver zeigen.</p> <p><strong>9.</strong> Zum Schluss ändern Sie Ihre DNS-Einstellungen so, dass sie auf den Zielserver zeigen.</p>
@ -2418,7 +2418,7 @@ docker compose pull
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2534,11 +2534,11 @@ dacd4fb9b51e9e1c8a37d84485b92ffaf6c59353 Before update on 2020-08-07_13_31_31
<h3 id="kann-ich-ein-rollback-durchfuhren">Kann ich ein Rollback durchführen?<a class="headerlink" href="#kann-ich-ein-rollback-durchfuhren" title="Permanent link">&para;</a></h3> <h3 id="kann-ich-ein-rollback-durchfuhren">Kann ich ein Rollback durchführen?<a class="headerlink" href="#kann-ich-ein-rollback-durchfuhren" title="Permanent link">&para;</a></h3>
<p>Ja.</p> <p>Ja.</p>
<p>Siehe das obige Thema, anstelle eines Diffs führen Sie checkout aus:</p> <p>Siehe das obige Thema, anstelle eines Diffs führen Sie checkout aus:</p>
<div class="highlight"><pre><span></span><code>docker compose down <div class="highlight"><pre><span></span><code>docker-compose down
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID # Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
docker compose pull docker-compose pull
docker compose up -d docker-compose up -d
</code></pre></div> </code></pre></div>
<h3 id="hooks">Hooks<a class="headerlink" href="#hooks" title="Permanent link">&para;</a></h3> <h3 id="hooks">Hooks<a class="headerlink" href="#hooks" title="Permanent link">&para;</a></h3>
<p>Sie können sich in den Update-Mechanismus einklinken, indem Sie Skripte namens <code>pre_commit_hook.sh</code> und <code>post_commit_hook.sh</code> zu Ihrem mailcows-Root-Verzeichnis hinzufügen. Siehe <a href="../../manual-guides/u_e-update-hooks/">hier</a> für weitere Details.</p> <p>Sie können sich in den Update-Mechanismus einklinken, indem Sie Skripte namens <code>pre_commit_hook.sh</code> und <code>post_commit_hook.sh</code> zu Ihrem mailcows-Root-Verzeichnis hinzufügen. Siehe <a href="../../manual-guides/u_e-update-hooks/">hier</a> für weitere Details.</p>
@ -2554,7 +2554,7 @@ docker compose up -d
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:01:22</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2511,7 +2511,7 @@ MaxZipTypeRcg 50M
</code></pre></div></p> </code></pre></div></p>
</li> </li>
<li>Starten Sie den ClamAV Container neu: <li>Starten Sie den ClamAV Container neu:
<div class="highlight"><pre><span></span><code>docker compose restart clamd-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart clamd-mailcow
</code></pre></div></li> </code></pre></div></li>
</ol> </ol>
<p><strong>Bitte beachten Sie</strong>:</p> <p><strong>Bitte beachten Sie</strong>:</p>
@ -2530,7 +2530,7 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
</code></pre></div></li> </code></pre></div></li>
<li>Starten Sie den ClamAV Container neu: <li>Starten Sie den ClamAV Container neu:
<div class="highlight"><pre><span></span><code>docker compose restart clamd-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart clamd-mailcow
</code></pre></div></li> </code></pre></div></li>
</ol> </ol>
@ -2539,7 +2539,7 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2413,7 +2413,7 @@
<h2 id="whitelist-fur-bestimmte-clamav-signaturen">Whitelist für bestimmte ClamAV-Signaturen<a class="headerlink" href="#whitelist-fur-bestimmte-clamav-signaturen" title="Permanent link">&para;</a></h2> <h2 id="whitelist-fur-bestimmte-clamav-signaturen">Whitelist für bestimmte ClamAV-Signaturen<a class="headerlink" href="#whitelist-fur-bestimmte-clamav-signaturen" title="Permanent link">&para;</a></h2>
<p>Es kann vorkommen, dass legitime (saubere) Mails von ClamAV blockiert werden (Rspamd markiert die Mail mit <code>VIRUS_FOUND</code>). 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.:</p> <p>Es kann vorkommen, dass legitime (saubere) Mails von ClamAV blockiert werden (Rspamd markiert die Mail mit <code>VIRUS_FOUND</code>). 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.:</p>
<div class="highlight"><pre><span></span><code>docker compose logs clamd-mailcow <span class="p">|</span> grep <span class="s2">&quot;FOUND&quot;</span> <div class="highlight"><pre><span></span><code>docker-compose logs clamd-mailcow <span class="p">|</span> grep <span class="s2">&quot;FOUND&quot;</span>
</code></pre></div> </code></pre></div>
<p>Diese Zeile bestätigt, dass ein solcher identifiziert wurde:</p> <p>Diese Zeile bestätigt, dass ein solcher identifiziert wurde:</p>
<div class="highlight"><pre><span></span><code>clamd-mailcow_1 | Sat Sep 28 07:43:24 2019 -&gt; instream(local): PUA.Pdf.Trojan.EmbeddedJavaScript-1(e887d2ac324ce90750768b86b63d0749:363325) FOUND <div class="highlight"><pre><span></span><code>clamd-mailcow_1 | Sat Sep 28 07:43:24 2019 -&gt; instream(local): PUA.Pdf.Trojan.EmbeddedJavaScript-1(e887d2ac324ce90750768b86b63d0749:363325) FOUND
@ -2421,11 +2421,11 @@
<p>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:</p> <p>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:</p>
<div class="highlight"><pre><span></span><code><span class="nb">echo</span> <span class="s1">&#39;PUA.Pdf.Trojan.EmbeddedJavaScript-1&#39;</span> &gt;&gt; data/conf/clamav/whitelist.ign2 <div class="highlight"><pre><span></span><code><span class="nb">echo</span> <span class="s1">&#39;PUA.Pdf.Trojan.EmbeddedJavaScript-1&#39;</span> &gt;&gt; data/conf/clamav/whitelist.ign2
</code></pre></div> </code></pre></div>
<p>Dann starten Sie den clamd-mailcow Service Container in der mailcow UI oder mit docker compose neu:</p> <p>Dann starten Sie den clamd-mailcow Service Container in der mailcow UI oder mit docker-compose neu:</p>
<div class="highlight"><pre><span></span><code>docker compose restart clamd-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart clamd-mailcow
</code></pre></div> </code></pre></div>
<p>Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis:</p> <p>Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis:</p>
<div class="highlight"><pre><span></span><code># docker compose exec redis-mailcow /bin/sh <div class="highlight"><pre><span></span><code># docker-compose exec redis-mailcow /bin/sh
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL /data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
/data # exit /data # exit
</code></pre></div> </code></pre></div>
@ -2435,7 +2435,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2369,7 +2369,7 @@
<div class="highlight"><pre><span></span><code>docker build data/Dockerfiles/service -t mailcow/$service <div class="highlight"><pre><span></span><code>docker build data/Dockerfiles/service -t mailcow/$service
</code></pre></div> </code></pre></div>
<p>Nun werden die geänderten Container automatisch neu erstellt:</p> <p>Nun werden die geänderten Container automatisch neu erstellt:</p>
<div class="highlight"><pre><span></span><code>docker compose up -d <div class="highlight"><pre><span></span><code>docker-compose up -d
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2377,7 +2377,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2366,14 +2366,14 @@
<p>Diese Funktion kann wieder aktiviert werden, indem <code>ACL_ANYONE</code> auf <code>allow</code> in mailcow.conf gesetzt wird:</p> <p>Diese Funktion kann wieder aktiviert werden, indem <code>ACL_ANYONE</code> auf <code>allow</code> in mailcow.conf gesetzt wird:</p>
<div class="highlight"><pre><span></span><code>ACL_ANYONE=allow <div class="highlight"><pre><span></span><code>ACL_ANYONE=allow
</code></pre></div> </code></pre></div>
<p>Wenden Sie die Änderungen an, indem Sie <code>docker compose up -d</code> ausführen.</p> <p>Wenden Sie die Änderungen an, indem Sie <code>docker-compose up -d</code> ausführen.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2469,16 +2469,16 @@
<h2 id="der-manuelle-weg">Der manuelle Weg<a class="headerlink" href="#der-manuelle-weg" title="Permanent link">&para;</a></h2> <h2 id="der-manuelle-weg">Der manuelle Weg<a class="headerlink" href="#der-manuelle-weg" title="Permanent link">&para;</a></h2>
<p>Dann wollen wir mal loslegen:</p> <p>Dann wollen wir mal loslegen:</p>
<p>Löschen Sie die Mails eines Benutzers im Junk-Ordner, die <strong>gelesen</strong> und <strong>älter</strong> als 4 Stunden sind</p> <p>Löschen Sie die Mails eines Benutzers im Junk-Ordner, die <strong>gelesen</strong> und <strong>älter</strong> als 4 Stunden sind</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm expunge -u &#39;mailbox@example.com&#39; mailbox &#39;Junk&#39; SEEN not SINCE 4h <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm expunge -u &#39;mailbox@example.com&#39; mailbox &#39;Junk&#39; SEEN not SINCE 4h
</code></pre></div> </code></pre></div>
<p>Lösche <strong>alle</strong> Mails des Benutzers im Junk-Ordner, die <strong>älter</strong> als 7 Tage sind</p> <p>Lösche <strong>alle</strong> Mails des Benutzers im Junk-Ordner, die <strong>älter</strong> als 7 Tage sind</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; savedbefore 7d <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; savedbefore 7d
</code></pre></div> </code></pre></div>
<p>Löscht <strong>alle</strong> Mails (aller Benutzer) in <strong>allen</strong> Ordnern, die <strong>älter</strong> als 52 Wochen sind (internes Datum der Mail, nicht das Datum, an dem sie auf dem System gespeichert wurde =&gt; <code>before</code> statt <code>savedbefore</code>). Nützlich zum Löschen sehr alter Mails in allen Benutzern und Ordnern (daher besonders nützlich für GDPR-Compliance).</p> <p>Löscht <strong>alle</strong> Mails (aller Benutzer) in <strong>allen</strong> Ordnern, die <strong>älter</strong> als 52 Wochen sind (internes Datum der Mail, nicht das Datum, an dem sie auf dem System gespeichert wurde =&gt; <code>before</code> statt <code>savedbefore</code>). Nützlich zum Löschen sehr alter Mails in allen Benutzern und Ordnern (daher besonders nützlich für GDPR-Compliance).</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
</code></pre></div> </code></pre></div>
<p>Löschen von Mails in einem benutzerdefinierten Ordner <strong>innerhalb</strong> des Posteingangs eines Benutzers, die <strong>nicht</strong> gekennzeichnet und <strong>älter</strong> als 2 Wochen sind</p> <p>Löschen von Mails in einem benutzerdefinierten Ordner <strong>innerhalb</strong> des Posteingangs eines Benutzers, die <strong>nicht</strong> gekennzeichnet und <strong>älter</strong> als 2 Wochen sind</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm expunge -u &#39;mailbox@example.com&#39; mailbox &#39;INBOX/custom-folder&#39; not FLAGGED not SINCE 2w <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm expunge -u &#39;mailbox@example.com&#39; mailbox &#39;INBOX/custom-folder&#39; not FLAGGED not SINCE 2w
</code></pre></div> </code></pre></div>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
@ -2491,8 +2491,8 @@
# Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized # Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized
cd /pfad/zu/ihrem/mailcow-dockerized cd /pfad/zu/ihrem/mailcow-dockerized
/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; savedbefore 2w /usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; savedbefore 2w
/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; SEEN not SINCE 12h /usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; SEEN not SINCE 12h
[...] [...]
</code></pre></div> </code></pre></div>
<p>Um einen Cronjob zu erstellen, können Sie <code>crontab -e</code> ausführen und etwas wie das Folgende einfügen, um ein Skript auszuführen:</p> <p>Um einen Cronjob zu erstellen, können Sie <code>crontab -e</code> ausführen und etwas wie das Folgende einfügen, um ein Skript auszuführen:</p>
@ -2533,7 +2533,7 @@ common.go:124 ▶ NOTICE [Job &quot;dovecot-expunge-trash&quot; (8759567efa66)]
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2364,7 +2364,7 @@
<p>Erstellen Sie eine Datei <code>data/conf/dovecot/extra.conf</code> - falls nicht vorhanden - und fügen Sie Ihren zusätzlichen Inhalt hier ein.</p> <p>Erstellen Sie eine Datei <code>data/conf/dovecot/extra.conf</code> - falls nicht vorhanden - und fügen Sie Ihren zusätzlichen Inhalt hier ein.</p>
<p>Starten Sie <code>dovecot-mailcow</code> neu, um Ihre Änderungen zu übernehmen:</p> <p>Starten Sie <code>dovecot-mailcow</code> neu, um Ihre Änderungen zu übernehmen:</p>
<div class="highlight"><pre><span></span><code>docker compose restart dovecot-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart dovecot-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2372,7 +2372,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2459,17 +2459,17 @@
<p>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.</p> <p>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.</p>
<h3 id="fts-bezogene-dovecot-befehle">FTS-bezogene Dovecot-Befehle<a class="headerlink" href="#fts-bezogene-dovecot-befehle" title="Permanent link">&para;</a></h3> <h3 id="fts-bezogene-dovecot-befehle">FTS-bezogene Dovecot-Befehle<a class="headerlink" href="#fts-bezogene-dovecot-befehle" title="Permanent link">&para;</a></h3>
<p><div class="highlight"><pre><span></span><code># Einzelbenutzer <p><div class="highlight"><pre><span></span><code># Einzelbenutzer
docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain docker-compose exec dovecot-mailcow doveadm fts rescan -u user@domain
# alle Benutzer # alle Benutzer
docker compose exec dovecot-mailcow doveadm fts rescan -A docker-compose exec dovecot-mailcow doveadm fts rescan -A
</code></pre></div> </code></pre></div>
Dovecot Wiki: "Scannt, welche Mails im Volltextsuchindex vorhanden sind und vergleicht diese mit den tatsächlich in den Postfächern vorhandenen Mails. Dies entfernt Mails aus dem Index, die bereits gelöscht wurden und stellt sicher, dass der nächste doveadm-Index alle fehlenden Mails (falls vorhanden) indiziert."</p> Dovecot Wiki: "Scannt, welche Mails im Volltextsuchindex vorhanden sind und vergleicht diese mit den tatsächlich in den Postfächern vorhandenen Mails. Dies entfernt Mails aus dem Index, die bereits gelöscht wurden und stellt sicher, dass der nächste doveadm-Index alle fehlenden Mails (falls vorhanden) indiziert."</p>
<p>Dies indiziert <strong>nicht</strong> eine Mailbox neu. Es repariert im Grunde einen gegebenen Index.</p> <p>Dies indiziert <strong>nicht</strong> eine Mailbox neu. Es repariert im Grunde einen gegebenen Index.</p>
<p>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:</p> <p>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:</p>
<div class="highlight"><pre><span></span><code># einzelner Benutzer <div class="highlight"><pre><span></span><code># einzelner Benutzer
docker compose exec dovecot-mailcow doveadm index -u user@domain &#39;*&#39; docker-compose exec dovecot-mailcow doveadm index -u user@domain &#39;*&#39;
# alle Benutzer, aber offensichtlich langsamer und gefährlicher # alle Benutzer, aber offensichtlich langsamer und gefährlicher
docker compose exec dovecot-mailcow doveadm index -A &#39;*&#39; docker-compose exec dovecot-mailcow doveadm index -A &#39;*&#39;
</code></pre></div> </code></pre></div>
<p>Dies <strong>wird</strong> einige Zeit in Anspruch nehmen, abhängig von Ihrer Maschine und Solr kann oom ausführen, überwachen Sie es!</p> <p>Dies <strong>wird</strong> einige Zeit in Anspruch nehmen, abhängig von Ihrer Maschine und Solr kann oom ausführen, überwachen Sie es!</p>
<p>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.</p> <p>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.</p>
@ -2481,7 +2481,7 @@ docker compose exec dovecot-mailcow doveadm index -A &#39;*&#39;
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2486,12 +2486,12 @@ Fügen Sie die Einstellung ein, gefolgt von dem neuen Wert. Um zum Beispiel das
</div> </div>
<h3 id="dovecot-neu-laden">Dovecot neu laden<a class="headerlink" href="#dovecot-neu-laden" title="Permanent link">&para;</a></h3> <h3 id="dovecot-neu-laden">Dovecot neu laden<a class="headerlink" href="#dovecot-neu-laden" title="Permanent link">&para;</a></h3>
<p>Nun laden Sie Dovecot neu:</p> <p>Nun laden Sie Dovecot neu:</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow dovecot reload <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow dovecot reload
</code></pre></div> </code></pre></div>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
<p>Sie können den Wert dieser Einstellung überprüfen mit <p>Sie können den Wert dieser Einstellung überprüfen mit
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow dovecot -a | grep &quot;imap_idle_notify_interval&quot; <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow dovecot -a | grep &quot;imap_idle_notify_interval&quot;
</code></pre></div> </code></pre></div>
Wenn Sie den Wert nicht geändert haben, sollte er auf 2m stehen. Wenn Sie ihn geändert haben, sollten Sie den neuen Wert sehen.</p> Wenn Sie den Wert nicht geändert haben, sollte er auf 2m stehen. Wenn Sie ihn geändert haben, sollten Sie den neuen Wert sehen.</p>
</div> </div>
@ -2501,7 +2501,7 @@ Wenn Sie den Wert nicht geändert haben, sollte er auf 2m stehen. Wenn Sie ihn g
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2364,7 +2364,7 @@
<p>Die Mails werden komprimiert (lz4) und verschlüsselt gespeichert. Das Schlüsselpaar ist in crypt-vol-1 zu finden.</p> <p>Die Mails werden komprimiert (lz4) und verschlüsselt gespeichert. Das Schlüsselpaar ist in crypt-vol-1 zu finden.</p>
<p>Wenn Sie vorhandene maildir-Dateien entschlüsseln/verschlüsseln wollen, können Sie das folgende Skript auf eigene Gefahr verwenden:</p> <p>Wenn Sie vorhandene maildir-Dateien entschlüsseln/verschlüsseln wollen, können Sie das folgende Skript auf eigene Gefahr verwenden:</p>
<p>Rufen Sie Dovecot auf, indem Sie <code>docker compose exec dovecot-mailcow /bin/bash</code> im mailcow-dockerisierten Verzeichnis ausführen.</p> <p>Rufen Sie Dovecot auf, indem Sie <code>docker-compose exec dovecot-mailcow /bin/bash</code> im mailcow-dockerisierten Verzeichnis ausführen.</p>
<div class="highlight"><pre><span></span><code># Entschlüsseln Sie /var/vmail <div class="highlight"><pre><span></span><code># Entschlüsseln Sie /var/vmail
find /var/vmail/ -type f -regextype egrep -regex &#39;.*S=.*W=.*&#39; | while read -r file; do find /var/vmail/ -type f -regextype egrep -regex &#39;.*S=.*W=.*&#39; | while read -r file; do
if [[ $(head -c7 &quot;$file&quot;) == &quot;CRYPTED&quot; ]]; then if [[ $(head -c7 &quot;$file&quot;) == &quot;CRYPTED&quot; ]]; then
@ -2397,7 +2397,7 @@ done
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2427,7 +2427,7 @@
<p><code>:INDEXPVT=~/public</code> kann weggelassen werden, wenn die Flags, die pro Benutzer gesehen werden, nicht gewünscht sind.</p> <p><code>:INDEXPVT=~/public</code> kann weggelassen werden, wenn die Flags, die pro Benutzer gesehen werden, nicht gewünscht sind.</p>
<p>Die neue Mailbox im öffentlichen Namensraum wird von den Benutzern automatisch abonniert.</p> <p>Die neue Mailbox im öffentlichen Namensraum wird von den Benutzern automatisch abonniert.</p>
<p>Um allen authentifizierten Benutzern vollen Zugriff auf das neue Postfach (nicht auf den gesamten Namespace) zu gewähren, führen Sie aus:</p> <p>Um allen authentifizierten Benutzern vollen Zugriff auf das neue Postfach (nicht auf den gesamten Namespace) zu gewähren, führen Sie aus:</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm acl set -A &quot;Public/Develcow&quot; &quot;authenticated&quot; lookup read write write-seen write-deleted insert post delete expunge create <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm acl set -A &quot;Public/Develcow&quot; &quot;authenticated&quot; lookup read write write-seen write-deleted insert post delete expunge create
</code></pre></div> </code></pre></div>
<p>Passen Sie den Befehl an Ihre Bedürfnisse an, wenn Sie detailliertere Rechte pro Benutzer vergeben möchten (verwenden Sie z.B. <code>-u user@domain</code> anstelle von <code>-A</code>).</p> <p>Passen Sie den Befehl an Ihre Bedürfnisse an, wenn Sie detailliertere Rechte pro Benutzer vergeben möchten (verwenden Sie z.B. <code>-u user@domain</code> anstelle von <code>-A</code>).</p>
<h2 id="erlaube-authentifizierten-benutzern-den-zugriff-auf-den-gesamten-offentlichen-namespace">Erlaube authentifizierten Benutzern den Zugriff auf den gesamten öffentlichen Namespace<a class="headerlink" href="#erlaube-authentifizierten-benutzern-den-zugriff-auf-den-gesamten-offentlichen-namespace" title="Permanent link">&para;</a></h2> <h2 id="erlaube-authentifizierten-benutzern-den-zugriff-auf-den-gesamten-offentlichen-namespace">Erlaube authentifizierten Benutzern den Zugriff auf den gesamten öffentlichen Namespace<a class="headerlink" href="#erlaube-authentifizierten-benutzern-den-zugriff-auf-den-gesamten-offentlichen-namespace" title="Permanent link">&para;</a></h2>
@ -2444,7 +2444,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2369,7 +2369,7 @@
<div class="highlight"><pre><span></span><code>DOVECOT_MASTER_USER=mymasteruser <div class="highlight"><pre><span></span><code>DOVECOT_MASTER_USER=mymasteruser
DOVECOT_MASTER_PASS=mysecretpass DOVECOT_MASTER_PASS=mysecretpass
</code></pre></div> </code></pre></div>
<p>Führen Sie <code>docker compose up -d</code> aus, um Ihre Änderungen zu übernehmen.</p> <p>Führen Sie <code>docker-compose up -d</code> aus, um Ihre Änderungen zu übernehmen.</p>
<p>Der statische Master-Benutzername wird zu <code>DOVECOT_MASTER_USER@mailcow.local</code> erweitert.</p> <p>Der statische Master-Benutzername wird zu <code>DOVECOT_MASTER_USER@mailcow.local</code> erweitert.</p>
<p>Um sich als <code>test@example.org</code> anzumelden, würde dies <code>test@example.org*mymasteruser@mailcow.local</code> mit dem oben angegebenen Passwort entsprechen.</p> <p>Um sich als <code>test@example.org</code> anzumelden, würde dies <code>test@example.org*mymasteruser@mailcow.local</code> mit dem oben angegebenen Passwort entsprechen.</p>
<p>Eine Anmeldung bei SOGo ist mit diesem Benutzernamen nicht möglich. Für Admins steht eine Click-to-Login-Funktion für SOGo zur Verfügung, wie [hier] beschrieben (<a href="https://mailcow.github.io/mailcow-dockerized-docs/debug-admin_login_sogo/">https://mailcow.github.io/mailcow-dockerized-docs/debug-admin_login_sogo/</a>) <p>Eine Anmeldung bei SOGo ist mit diesem Benutzernamen nicht möglich. Für Admins steht eine Click-to-Login-Funktion für SOGo zur Verfügung, wie [hier] beschrieben (<a href="https://mailcow.github.io/mailcow-dockerized-docs/debug-admin_login_sogo/">https://mailcow.github.io/mailcow-dockerized-docs/debug-admin_login_sogo/</a>)
@ -2380,7 +2380,7 @@ Es wird kein Hauptbenutzer benötigt.</p>
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2456,7 +2456,7 @@
<p class="admonition-title">Warning</p> <p class="admonition-title">Warning</p>
<p>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).</p> <p>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).</p>
</div> </div>
<p>Ein einfacher, schmutziger, aber stabiler Workaround ist es, mailcow zu stoppen (<code>docker compose down</code>), <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data</code> zu entfernen und einen neuen Link zu Ihrem entfernten Dateisystem zu erstellen, zum Beispiel:</p> <p>Ein einfacher, schmutziger, aber stabiler Workaround ist es, mailcow zu stoppen (<code>docker-compose down</code>), <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data</code> zu entfernen und einen neuen Link zu Ihrem entfernten Dateisystem zu erstellen, zum Beispiel:</p>
<div class="highlight"><pre><span></span><code>mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup <div class="highlight"><pre><span></span><code>mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup
ln -s /mnt/volume-xy/vmail_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data ln -s /mnt/volume-xy/vmail_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
</code></pre></div> </code></pre></div>
@ -2494,10 +2494,10 @@ volumes:
</code></pre></div> </code></pre></div>
<ul> <ul>
<li>Kopieren Sie den Inhalt des <code>Mountpoint</code>-Ordners an den neuen Speicherort (z.B. <code>/data/mailcow/vmail</code>) mit <code>cp -a</code>, <code>rsync -a</code> oder einem ähnlichen, nicht strikten Kopierbefehl</li> <li>Kopieren Sie den Inhalt des <code>Mountpoint</code>-Ordners an den neuen Speicherort (z.B. <code>/data/mailcow/vmail</code>) mit <code>cp -a</code>, <code>rsync -a</code> oder einem ähnlichen, nicht strikten Kopierbefehl</li>
<li>Stoppen Sie mailcow durch Ausführen von <code>docker compose down</code> aus Ihrem mailcow-Stammverzeichnis (z.B. <code>/opt/mailcow-dockerized</code>)</li> <li>Stoppen Sie mailcow durch Ausführen von <code>docker-compose down</code> aus Ihrem mailcow-Stammverzeichnis (z.B. <code>/opt/mailcow-dockerized</code>)</li>
<li>Erstellen Sie die Datei <code>docker-compose.override.yml</code>, bearbeiten Sie den Gerätepfad entsprechend</li> <li>Erstellen Sie die Datei <code>docker-compose.override.yml</code>, bearbeiten Sie den Gerätepfad entsprechend</li>
<li>Löschen Sie den aktuellen vmail-Ordner: <code>docker volume rm mailcowdockerized_vmail-vol-1</code></li> <li>Löschen Sie den aktuellen vmail-Ordner: <code>docker volume rm mailcowdockerized_vmail-vol-1</code></li>
<li>Starten Sie mailcow durch Ausführen von <code>docker compose up -d</code> aus Ihrem mailcow-Stammverzeichnis (z.B. <code>/opt/mailcow-dockerized</code>)</li> <li>Starten Sie mailcow durch Ausführen von <code>docker-compose up -d</code> aus Ihrem mailcow-Stammverzeichnis (z.B. <code>/opt/mailcow-dockerized</code>)</li>
</ul> </ul>
<hr> <hr>
@ -2505,7 +2505,7 @@ volumes:
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2543,8 +2543,8 @@
<p>Dieser Dateiname muss keine ".conf"-Erweiterung haben, sondern folgt dem Muster <code>site.*.custom</code>, wobei <code>*</code> ein eigener Name ist.</p> <p>Dieser Dateiname muss keine ".conf"-Erweiterung haben, sondern folgt dem Muster <code>site.*.custom</code>, wobei <code>*</code> ein eigener Name ist.</p>
<p>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 <code>data/conf/phpfpm/php-fpm.d/pools.conf</code>.</p> <p>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 <code>data/conf/phpfpm/php-fpm.d/pools.conf</code>.</p>
<p>Starten Sie Nginx neu (und PHP-FPM, falls ein neuer Listener erstellt wurde):</p> <p>Starten Sie Nginx neu (und PHP-FPM, falls ein neuer Listener erstellt wurde):</p>
<div class="highlight"><pre><span></span><code>docker compose restart nginx-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart nginx-mailcow
docker compose restart php-fpm-mailcow docker-compose restart php-fpm-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2552,7 +2552,7 @@ docker compose restart php-fpm-mailcow
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2385,19 +2385,19 @@
</span> } </span> }
} }
</code></pre></div> </code></pre></div>
<p>Speichern Sie und starten Sie Nginx neu: <code>docker compose restart nginx-mailcow</code>.</p> <p>Speichern Sie und starten Sie Nginx neu: <code>docker-compose restart nginx-mailcow</code>.</p>
<p>Öffnen Sie nun <code>mailcow.conf</code> und suchen Sie <code>ADDITIONAL_SAN</code>. <p>Öffnen Sie nun <code>mailcow.conf</code> und suchen Sie <code>ADDITIONAL_SAN</code>.
Fügen Sie <code>webmail.example.org</code> zu diesem Array hinzu, verwenden Sie keine Anführungszeichen!</p> Fügen Sie <code>webmail.example.org</code> zu diesem Array hinzu, verwenden Sie keine Anführungszeichen!</p>
<div class="highlight"><pre><span></span><code>ADDITIONAL_SAN=webmail.example.org <div class="highlight"><pre><span></span><code>ADDITIONAL_SAN=webmail.example.org
</code></pre></div> </code></pre></div>
<p>Führen Sie <code>docker compose up -d</code> aus. Siehe "acme-mailcow" und "nginx-mailcow" Logs, wenn etwas fehlschlägt.</p> <p>Führen Sie <code>docker-compose up -d</code> aus. Siehe "acme-mailcow" und "nginx-mailcow" Logs, wenn etwas fehlschlägt.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2364,7 +2364,7 @@
<p>Öffnen Sie <code>data/conf/postfix/extra.cf</code> und setzen Sie das <code>message_size_limit</code> entsprechend in Bytes. Siehe <code>main.cf</code> für den Standardwert.</p> <p>Öffnen Sie <code>data/conf/postfix/extra.cf</code> und setzen Sie das <code>message_size_limit</code> entsprechend in Bytes. Siehe <code>main.cf</code> für den Standardwert.</p>
<p>Starten Sie Postfix neu:</p> <p>Starten Sie Postfix neu:</p>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart postfix-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2372,7 +2372,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2437,7 +2437,7 @@
<div class="highlight"><pre><span></span><code>smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_access reject_authenticated_sender_login_mismatch [...] <div class="highlight"><pre><span></span><code>smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_access reject_authenticated_sender_login_mismatch [...]
</code></pre></div></p> </code></pre></div></p>
<p>Postmap auf check_sasl_access ausführen:</p> <p>Postmap auf check_sasl_access ausführen:</p>
<div class="highlight"><pre><span></span><code>docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access <div class="highlight"><pre><span></span><code>docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
</code></pre></div> </code></pre></div>
<p>Starten Sie den Postfix-Container neu.</p> <p>Starten Sie den Postfix-Container neu.</p>
@ -2446,7 +2446,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2366,7 +2366,7 @@
<p>Postfix wird sich einmal nach dem Start von postfix-mailcow über doppelte Werte beschweren, dies ist beabsichtigt.</p> <p>Postfix wird sich einmal nach dem Start von postfix-mailcow über doppelte Werte beschweren, dies ist beabsichtigt.</p>
<p>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.</p> <p>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.</p>
<p>Starten Sie <code>postfix-mailcow</code> neu, um Ihre Änderungen zu übernehmen:</p> <p>Starten Sie <code>postfix-mailcow</code> neu, um Ihre Änderungen zu übernehmen:</p>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart postfix-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2374,7 +2374,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2464,14 +2464,14 @@
<p>Bearbeiten Sie <code>data/conf/postfix/extra.cf</code>:</p> <p>Bearbeiten Sie <code>data/conf/postfix/extra.cf</code>:</p>
<div class="highlight"><pre><span></span><code>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 <div class="highlight"><pre><span></span><code>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
</code></pre></div> </code></pre></div>
<p>Führen Sie <code>docker compose restart postfix-mailcow</code> aus, um Ihre neuen Einstellungen zu übernehmen.</p> <p>Führen Sie <code>docker-compose restart postfix-mailcow</code> aus, um Ihre neuen Einstellungen zu übernehmen.</p>
<h3 id="ipv6-hostssubnets">IPv6-Hosts/Subnets<a class="headerlink" href="#ipv6-hostssubnets" title="Permanent link">&para;</a></h3> <h3 id="ipv6-hostssubnets">IPv6-Hosts/Subnets<a class="headerlink" href="#ipv6-hostssubnets" title="Permanent link">&para;</a></h3>
<p>Das Hinzufügen von IPv6-Hosts erfolgt auf die gleiche Weise wie bei IPv4, allerdings muss das Subnetz in eckige Klammern <code>[]</code> gesetzt und die Netzmaske angehängt werden.</p> <p>Das Hinzufügen von IPv6-Hosts erfolgt auf die gleiche Weise wie bei IPv4, allerdings muss das Subnetz in eckige Klammern <code>[]</code> gesetzt und die Netzmaske angehängt werden.</p>
<p>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:</p> <p>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:</p>
<p>Bearbeiten Sie <code>data/conf/postfix/extra.cf</code>:</p> <p>Bearbeiten Sie <code>data/conf/postfix/extra.cf</code>:</p>
<div class="highlight"><pre><span></span><code>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 <div class="highlight"><pre><span></span><code>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
</code></pre></div> </code></pre></div>
<p>Führen Sie <code>docker compose restart postfix-mailcow</code> aus, um Ihre neuen Einstellungen zu übernehmen.</p> <p>Führen Sie <code>docker-compose restart postfix-mailcow</code> aus, um Ihre neuen Einstellungen zu übernehmen.</p>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
<p>Weitere Informationen über mynetworks finden Sie in der <a href="http://www.postfix.org/postconf.5.html#mynetworks">Postfix-Dokumentation</a>.</p> <p>Weitere Informationen über mynetworks finden Sie in der <a href="http://www.postfix.org/postconf.5.html#mynetworks">Postfix-Dokumentation</a>.</p>
@ -2482,7 +2482,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2492,13 +2492,13 @@
<p>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 <a href="https://redis.io/topics/introduction">Einführung in Redis</a> und besuchen Sie gegebenenfalls diese <a href="http://try.redis.io/">wunderbare Anleitung</a>, um zu erfahren, wie man Redis benutzt.</p> <p>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 <a href="https://redis.io/topics/introduction">Einführung in Redis</a> und besuchen Sie gegebenenfalls diese <a href="http://try.redis.io/">wunderbare Anleitung</a>, um zu erfahren, wie man Redis benutzt.</p>
<h2 id="client">Client<a class="headerlink" href="#client" title="Permanent link">&para;</a></h2> <h2 id="client">Client<a class="headerlink" href="#client" title="Permanent link">&para;</a></h2>
<p>Um sich mit dem redis cli zu verbinden, führen Sie aus:</p> <p>Um sich mit dem redis cli zu verbinden, führen Sie aus:</p>
<div class="highlight"><pre><span></span><code>docker compose exec redis-mailcow redis-cli <div class="highlight"><pre><span></span><code>docker-compose exec redis-mailcow redis-cli
</code></pre></div> </code></pre></div>
<h3 id="fehlersuche">Fehlersuche<a class="headerlink" href="#fehlersuche" title="Permanent link">&para;</a></h3> <h3 id="fehlersuche">Fehlersuche<a class="headerlink" href="#fehlersuche" title="Permanent link">&para;</a></h3>
<p>Hier sind einige nützliche Befehle für den redis-cli zur Fehlersuche:</p> <p>Hier sind einige nützliche Befehle für den redis-cli zur Fehlersuche:</p>
<h5 id="monitor">MONITOR<a class="headerlink" href="#monitor" title="Permanent link">&para;</a></h5> <h5 id="monitor">MONITOR<a class="headerlink" href="#monitor" title="Permanent link">&para;</a></h5>
<p>Überwacht alle vom Server empfangenen Anfragen in Echtzeit:</p> <p>Überwacht alle vom Server empfangenen Anfragen in Echtzeit:</p>
<div class="highlight"><pre><span></span><code># docker compose exec redis-mailcow redis-cli <div class="highlight"><pre><span></span><code># docker-compose exec redis-mailcow redis-cli
127.0.0.1:6379&gt; überwachen 127.0.0.1:6379&gt; überwachen
OK OK
1494077286.401963 [0 172.22.1.253:41228] &quot;SMEMBERS&quot; &quot;BAYES_SPAM_keys&quot; 1494077286.401963 [0 172.22.1.253:41228] &quot;SMEMBERS&quot; &quot;BAYES_SPAM_keys&quot;
@ -2521,7 +2521,7 @@ PONG
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2544,9 +2544,9 @@ Dies wird durch die Verwendung des Sieve-Plugins "sieve_imapsieve" und Parser-Sk
<h3 id="spam-oder-ham-aus-bestehendem-verzeichnis-lernen">Spam oder Ham aus bestehendem Verzeichnis lernen<a class="headerlink" href="#spam-oder-ham-aus-bestehendem-verzeichnis-lernen" title="Permanent link">&para;</a></h3> <h3 id="spam-oder-ham-aus-bestehendem-verzeichnis-lernen">Spam oder Ham aus bestehendem Verzeichnis lernen<a class="headerlink" href="#spam-oder-ham-aus-bestehendem-verzeichnis-lernen" title="Permanent link">&para;</a></h3>
<p>Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen:</p> <p>Sie können einen Einzeiler verwenden, um Mails im Klartextformat (unkomprimiert) zu lernen:</p>
<div class="highlight"><pre><span></span><code><span class="c1"># Ham</span> <div class="highlight"><pre><span></span><code><span class="c1"># Ham</span>
<span class="k">for</span> file <span class="k">in</span> /my/folder/cur/*<span class="p">;</span> <span class="k">do</span> docker <span class="nb">exec</span> -i <span class="k">$(</span>docker compose ps -q rspamd-mailcow<span class="k">)</span> rspamc learn_ham &lt; <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span> <span class="k">for</span> file <span class="k">in</span> /my/folder/cur/*<span class="p">;</span> <span class="k">do</span> docker <span class="nb">exec</span> -i <span class="k">$(</span>docker-compose ps -q rspamd-mailcow<span class="k">)</span> rspamc learn_ham &lt; <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span>
<span class="c1"># Spam</span> <span class="c1"># Spam</span>
<span class="k">for</span> file <span class="k">in</span> /my/folder/.Junk/cur/*<span class="p">;</span> <span class="k">do</span> docker <span class="nb">exec</span> -i <span class="k">$(</span>docker compose ps -q rspamd-mailcow<span class="k">)</span> rspamc learn_spam &lt; <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span> <span class="k">for</span> file <span class="k">in</span> /my/folder/.Junk/cur/*<span class="p">;</span> <span class="k">do</span> docker <span class="nb">exec</span> -i <span class="k">$(</span>docker-compose ps -q rspamd-mailcow<span class="k">)</span> rspamc learn_spam &lt; <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span>
</code></pre></div> </code></pre></div>
<p>Erwägen Sie, einen lokalen Ordner als neues Volume an <code>rspamd-mailcow</code> in <code>docker-compose.yml</code> 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:</p> <p>Erwägen Sie, einen lokalen Ordner als neues Volume an <code>rspamd-mailcow</code> in <code>docker-compose.yml</code> 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:</p>
<p>``bash <p>``bash
@ -2562,15 +2562,15 @@ Sie müssen die Schlüssel in Redis löschen, um die gelernten Daten zurückzuse
cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
</code></pre></div></p> </code></pre></div></p>
<p><strong>Bayes-Daten zurücksetzen</strong></p> <p><strong>Bayes-Daten zurücksetzen</strong></p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern BAYES_* | xargs redis-cli del&#39;</span> <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern BAYES_* | xargs redis-cli del&#39;</span>
docker compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern RS* | xargs redis-cli del&#39;</span> docker-compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern RS* | xargs redis-cli del&#39;</span>
</code></pre></div> </code></pre></div>
<p><strong>Neurale Daten zurücksetzen</strong></p> <p><strong>Neurale Daten zurücksetzen</strong></p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern rn_* | xargs redis-cli del&#39;</span> <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern rn_* | xargs redis-cli del&#39;</span>
</code></pre></div> </code></pre></div>
<p><strong>Fuzzy-Daten zurücksetzen</strong></p> <p><strong>Fuzzy-Daten zurücksetzen</strong></p>
<div class="highlight"><pre><span></span><code><span class="c1"># Wir müssen zuerst das redis-cli eingeben:</span> <div class="highlight"><pre><span></span><code><span class="c1"># Wir müssen zuerst das redis-cli eingeben:</span>
docker compose <span class="nb">exec</span> redis-mailcow redis-cli docker-compose <span class="nb">exec</span> redis-mailcow redis-cli
<span class="c1"># In redis-cli:</span> <span class="c1"># In redis-cli:</span>
<span class="m">127</span>.0.0.1:6379&gt; EVAL <span class="s2">&quot;for i, name in ipairs(redis.call(&#39;KEYS&#39;, ARGV[1])) do redis.call(&#39;DEL&#39;, name); end&quot;</span> <span class="m">0</span> fuzzy* <span class="m">127</span>.0.0.1:6379&gt; EVAL <span class="s2">&quot;for i, name in ipairs(redis.call(&#39;KEYS&#39;, ARGV[1])) do redis.call(&#39;DEL&#39;, name); end&quot;</span> <span class="m">0</span> fuzzy*
</code></pre></div> </code></pre></div>
@ -2581,8 +2581,8 @@ docker compose <span class="nb">exec</span> redis-mailcow redis-cli
<p>...das Schlüsselmuster nicht gefunden wurde und somit keine Daten zum Löschen vorhanden sind - ist es in Ordnung.</p> <p>...das Schlüsselmuster nicht gefunden wurde und somit keine Daten zum Löschen vorhanden sind - ist es in Ordnung.</p>
<h2 id="cli-werkzeuge">CLI-Werkzeuge<a class="headerlink" href="#cli-werkzeuge" title="Permanent link">&para;</a></h2> <h2 id="cli-werkzeuge">CLI-Werkzeuge<a class="headerlink" href="#cli-werkzeuge" title="Permanent link">&para;</a></h2>
<p>``bash <p>``bash
docker compose exec rspamd-mailcow rspamc --help docker-compose exec rspamd-mailcow rspamc --help
docker compose exec rspamd-mailcow rspamadm --help docker-compose exec rspamd-mailcow rspamadm --help
<div class="highlight"><pre><span></span><code>## Greylisting deaktivieren <div class="highlight"><pre><span></span><code>## Greylisting deaktivieren
Nur Nachrichten mit einer höheren Punktzahl werden als Greylisting betrachtet (soft rejected). Es ist schlechte Praxis, Greylisting zu deaktivieren. Nur Nachrichten mit einer höheren Punktzahl werden als Greylisting betrachtet (soft rejected). Es ist schlechte Praxis, Greylisting zu deaktivieren.
@ -2596,26 +2596,26 @@ Fügen Sie die Zeile hinzu:
```cpp ```cpp
enabled = false; enabled = false;
</code></pre></div></p> </code></pre></div></p>
<p>Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: <code>docker compose restart rspamd-mailcow</code></p> <p>Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: <code>docker-compose restart rspamd-mailcow</code></p>
<h2 id="spamfilter-schwellenwerte-global">Spamfilter-Schwellenwerte (global)<a class="headerlink" href="#spamfilter-schwellenwerte-global" title="Permanent link">&para;</a></h2> <h2 id="spamfilter-schwellenwerte-global">Spamfilter-Schwellenwerte (global)<a class="headerlink" href="#spamfilter-schwellenwerte-global" title="Permanent link">&para;</a></h2>
<p>Jeder Benutzer kann <a href="../../mailcow-UI/u_e-mailcow_ui-spamfilter/">seine Spam-Bewertung</a> individuell ändern. Um eine neue <strong>serverweite</strong> Grenze zu definieren, editieren Sie <code>data/conf/rspamd/local.d/actions.conf</code>:</p> <p>Jeder Benutzer kann <a href="../../mailcow-UI/u_e-mailcow_ui-spamfilter/">seine Spam-Bewertung</a> individuell ändern. Um eine neue <strong>serverweite</strong> Grenze zu definieren, editieren Sie <code>data/conf/rspamd/local.d/actions.conf</code>:</p>
<div class="highlight"><pre><span></span><code><span class="n">reject</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">15</span><span class="p">;</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="n">reject</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">15</span><span class="p">;</span><span class="w"></span>
<span class="n">add_header</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">8</span><span class="p">;</span><span class="w"></span> <span class="n">add_header</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">8</span><span class="p">;</span><span class="w"></span>
<span class="n">greylist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">7</span><span class="p">;</span><span class="w"></span> <span class="n">greylist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">7</span><span class="p">;</span><span class="w"></span>
</code></pre></div> </code></pre></div>
<p>Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: <code>docker compose restart rspamd-mailcow</code></p> <p>Speichern Sie die Datei und starten Sie "rspamd-mailcow" neu: <code>docker-compose restart rspamd-mailcow</code></p>
<p>Bestehende Einstellungen der Benutzer werden nicht überschrieben!</p> <p>Bestehende Einstellungen der Benutzer werden nicht überschrieben!</p>
<p>Um benutzerdefinierte Schwellenwerte zurückzusetzen, führen Sie aus:</p> <p>Um benutzerdefinierte Schwellenwerte zurückzusetzen, führen Sie aus:</p>
<div class="highlight"><pre><span></span><code>source mailcow.conf <div class="highlight"><pre><span></span><code>source mailcow.conf
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39;;&quot; docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39;;&quot;
# oder: # oder:
# docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39; and object = &#39;only-this-mailbox@example.org&#39;;&quot; # docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39; and object = &#39;only-this-mailbox@example.org&#39;;&quot;
</code></pre></div> </code></pre></div>
<h2 id="benutzerdefinierte-ablehnungsnachrichten">Benutzerdefinierte Ablehnungsnachrichten<a class="headerlink" href="#benutzerdefinierte-ablehnungsnachrichten" title="Permanent link">&para;</a></h2> <h2 id="benutzerdefinierte-ablehnungsnachrichten">Benutzerdefinierte Ablehnungsnachrichten<a class="headerlink" href="#benutzerdefinierte-ablehnungsnachrichten" title="Permanent link">&para;</a></h2>
<p>Die Standard-Spam-Reject-Meldung kann durch Hinzufügen einer neuen Datei <code>data/conf/rspamd/override.d/worker-proxy.custom.inc</code> mit dem folgenden Inhalt geändert werden:</p> <p>Die Standard-Spam-Reject-Meldung kann durch Hinzufügen einer neuen Datei <code>data/conf/rspamd/override.d/worker-proxy.custom.inc</code> mit dem folgenden Inhalt geändert werden:</p>
<div class="highlight"><pre><span></span><code>reject_message = &quot;Meine eigene Ablehnungsnachricht&quot;; <div class="highlight"><pre><span></span><code>reject_message = &quot;Meine eigene Ablehnungsnachricht&quot;;
</code></pre></div> </code></pre></div>
<p>Speichern Sie die Datei und starten Sie Rspamd neu: <code>docker compose restart rspamd-mailcow</code>.</p> <p>Speichern Sie die Datei und starten Sie Rspamd neu: <code>docker-compose restart rspamd-mailcow</code>.</p>
<p>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:</p> <p>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:</p>
<ol> <ol>
<li> <li>
@ -2635,27 +2635,27 @@ docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;del
} }
</code></pre></div> </code></pre></div>
<ol> <ol>
<li>Speichern Sie die Datei und starten Sie Rspamd neu: <code>docker compose restart rspamd-mailcow</code>.</li> <li>Speichern Sie die Datei und starten Sie Rspamd neu: <code>docker-compose restart rspamd-mailcow</code>.</li>
</ol> </ol>
<h2 id="verwerfen-statt-zuruckweisen">Verwerfen statt zurückweisen<a class="headerlink" href="#verwerfen-statt-zuruckweisen" title="Permanent link">&para;</a></h2> <h2 id="verwerfen-statt-zuruckweisen">Verwerfen statt zurückweisen<a class="headerlink" href="#verwerfen-statt-zuruckweisen" title="Permanent link">&para;</a></h2>
<p>Wenn Sie eine Nachricht stillschweigend verwerfen wollen, erstellen oder bearbeiten Sie die Datei <code>data/conf/rspamd/override.d/worker-proxy.custom.inc</code> und fügen Sie den folgenden Inhalt hinzu:</p> <p>Wenn Sie eine Nachricht stillschweigend verwerfen wollen, erstellen oder bearbeiten Sie die Datei <code>data/conf/rspamd/override.d/worker-proxy.custom.inc</code> und fügen Sie den folgenden Inhalt hinzu:</p>
<div class="highlight"><pre><span></span><code>discard_on_reject = true; <div class="highlight"><pre><span></span><code>discard_on_reject = true;
</code></pre></div> </code></pre></div>
<p>Starten Sie Rspamd neu:</p> <p>Starten Sie Rspamd neu:</p>
<div class="highlight"><pre><span></span><code>docker compose restart rspamd-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart rspamd-mailcow
</code></pre></div> </code></pre></div>
<h2 id="losche-alle-ratelimit-schlussel">Lösche alle Ratelimit-Schlüssel<a class="headerlink" href="#losche-alle-ratelimit-schlussel" title="Permanent link">&para;</a></h2> <h2 id="losche-alle-ratelimit-schlussel">Lösche alle Ratelimit-Schlüssel<a class="headerlink" href="#losche-alle-ratelimit-schlussel" title="Permanent link">&para;</a></h2>
<p>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:</p> <p>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:</p>
<div class="highlight"><pre><span></span><code>docker compose exec redis-mailcow sh <div class="highlight"><pre><span></span><code>docker-compose exec redis-mailcow sh
# Unlink (verfügbar in Redis &gt;=4.) löscht im Hintergrund # Unlink (verfügbar in Redis &gt;=4.) löscht im Hintergrund
redis-cli --scan --pattern RL* | xargs redis-cli unlink redis-cli --scan --pattern RL* | xargs redis-cli unlink
</code></pre></div> </code></pre></div>
<p>Starten Sie Rspamd neu:</p> <p>Starten Sie Rspamd neu:</p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> redis-mailcow sh <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> redis-mailcow sh
</code></pre></div> </code></pre></div>
<h2 id="erneutes-senden-von-quarantane-benachrichtigungen-auslosen">Erneutes Senden von Quarantäne-Benachrichtigungen auslösen<a class="headerlink" href="#erneutes-senden-von-quarantane-benachrichtigungen-auslosen" title="Permanent link">&para;</a></h2> <h2 id="erneutes-senden-von-quarantane-benachrichtigungen-auslosen">Erneutes Senden von Quarantäne-Benachrichtigungen auslösen<a class="headerlink" href="#erneutes-senden-von-quarantane-benachrichtigungen-auslosen" title="Permanent link">&para;</a></h2>
<p>Sollte nur zur Fehlersuche verwendet werden!</p> <p>Sollte nur zur Fehlersuche verwendet werden!</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow bash <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow bash
mysql -umailcow -p$DBPASS mailcow -e &quot;update quarantine set notified = 0;&quot; mysql -umailcow -p$DBPASS mailcow -e &quot;update quarantine set notified = 0;&quot;
redis-cli -h redis DEL Q_LAST_NOTIFIED redis-cli -h redis DEL Q_LAST_NOTIFIED
quarantine_notify.py quarantine_notify.py
@ -2667,14 +2667,14 @@ quarantine_notify.py
<p>Bearbeiten Sie <code>data/conf/rspamd/local.d/history_redis.conf</code>:</p> <p>Bearbeiten Sie <code>data/conf/rspamd/local.d/history_redis.conf</code>:</p>
<div class="highlight"><pre><span></span><code>nrows = 1000; # Ändern Sie diesen Wert <div class="highlight"><pre><span></span><code>nrows = 1000; # Ändern Sie diesen Wert
</code></pre></div> </code></pre></div>
<p>Starten Sie anschließend Rspamd neu: <code>docker compose restart rspamd-mailcow</code></p> <p>Starten Sie anschließend Rspamd neu: <code>docker-compose restart rspamd-mailcow</code></p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2501,7 +2501,7 @@ Bitte schauen Sie sich die AngularJS Material <a href="https://material.angularj
Nachdem Sie <code>data/conf/sogo/custom-theme.js</code> modifiziert und Änderungen an Ihrem neuen SOGo-Theme vorgenommen haben, müssen Sie </p> Nachdem Sie <code>data/conf/sogo/custom-theme.js</code> modifiziert und Änderungen an Ihrem neuen SOGo-Theme vorgenommen haben, müssen Sie </p>
<ol> <ol>
<li>Bearbeiten Sie <code>data/conf/sogo/sogo.conf</code> und fügen Sie <code>SOGoUIxDebugEnabled = YES;</code> ein.</li> <li>Bearbeiten Sie <code>data/conf/sogo/sogo.conf</code> und fügen Sie <code>SOGoUIxDebugEnabled = YES;</code> ein.</li>
<li>SOGo und Memcached Container neu starten, indem man <code>docker compose restart memcached-mailcow sogo-mailcow</code> ausführt.</li> <li>SOGo und Memcached Container neu starten, indem man <code>docker-compose restart memcached-mailcow sogo-mailcow</code> ausführt.</li>
<li>SOGo im Browser öffnen</li> <li>SOGo im Browser öffnen</li>
<li>öffnen Sie die Entwicklerkonsole des Browsers, normalerweise ist die Tastenkombination F12</li> <li>öffnen Sie die Entwicklerkonsole des Browsers, normalerweise ist die Tastenkombination F12</li>
<li>nur wenn Sie Firefox benutzen: schreiben Sie mit der Hand in die Entwicklerkonsole <code>allow pasting</code> und drücken Sie Enter</li> <li>nur wenn Sie Firefox benutzen: schreiben Sie mit der Hand in die Entwicklerkonsole <code>allow pasting</code> und drücken Sie Enter</li>
@ -2524,8 +2524,8 @@ Dienste:
volumes: volumes:
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z - ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
</code></pre></div></li> </code></pre></div></li>
<li>führen Sie <code>docker compose up -d</code> aus</li> <li>führen Sie <code>docker-compose up -d</code> aus</li>
<li>Ausführen von <code>docker compose restart memcached-mailcow</code></li> <li>Ausführen von <code>docker-compose restart memcached-mailcow</code></li>
</ol> </ol>
<h2 id="zurucksetzen-auf-das-sogo-standardthema">Zurücksetzen auf das SOGo Standardthema<a class="headerlink" href="#zurucksetzen-auf-das-sogo-standardthema" title="Permanent link">&para;</a></h2> <h2 id="zurucksetzen-auf-das-sogo-standardthema">Zurücksetzen auf das SOGo Standardthema<a class="headerlink" href="#zurucksetzen-auf-das-sogo-standardthema" title="Permanent link">&para;</a></h2>
<ol> <ol>
@ -2553,17 +2553,17 @@ und ersetzen Sie es durch:
<li>Entfernen Sie aus <code>docker-compose.override.yml</code> Volume Mount in <code>sogo-mailcow</code>: <li>Entfernen Sie aus <code>docker-compose.override.yml</code> Volume Mount in <code>sogo-mailcow</code>:
<div class="highlight"><pre><span></span><code>- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z <div class="highlight"><pre><span></span><code>- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
</code></pre></div></li> </code></pre></div></li>
<li>führen Sie <code>docker compose up -d</code> aus</li> <li>führen Sie <code>docker-compose up -d</code> aus</li>
<li>Starten Sie <code>docker compose restart memcached-mailcow</code>.</li> <li>Starten Sie <code>docker-compose restart memcached-mailcow</code>.</li>
</ol> </ol>
<h2 id="favicon-andern">Favicon ändern<a class="headerlink" href="#favicon-andern" title="Permanent link">&para;</a></h2> <h2 id="favicon-andern">Favicon ändern<a class="headerlink" href="#favicon-andern" title="Permanent link">&para;</a></h2>
<p>mailcow-Builds nach dem 31. Januar 2021 können SOGo's Favicon ändern, indem sie <code>data/conf/sogo/custom-favicon.ico</code> für SOGo und <code>data/web/favicon.png</code> für mailcow UI ersetzen. <p>mailcow-Builds nach dem 31. Januar 2021 können SOGo's Favicon ändern, indem sie <code>data/conf/sogo/custom-favicon.ico</code> für SOGo und <code>data/web/favicon.png</code> für mailcow UI ersetzen.
<strong>Anmerkung</strong>: Sie können <code>.png</code> Favicons für SOGo verwenden, indem Sie sie in <code>custom-favicon.ico</code> umbenennen. <strong>Anmerkung</strong>: Sie können <code>.png</code> Favicons für SOGo verwenden, indem Sie sie in <code>custom-favicon.ico</code> umbenennen.
Für beide, SOGo und mailcow UI Favicons, müssen Sie eine der Standardgrößen verwenden: 16x16, 32x32, 64x64, 128x128 und 256x256. Für beide, SOGo und mailcow UI Favicons, müssen Sie eine der Standardgrößen verwenden: 16x16, 32x32, 64x64, 128x128 und 256x256.
Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie <code>docker compose restart memcached-mailcow sogo-mailcow</code> ausführen.</p> Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie <code>docker-compose restart memcached-mailcow sogo-mailcow</code> ausführen.</p>
<h2 id="logo-andern">Logo ändern<a class="headerlink" href="#logo-andern" title="Permanent link">&para;</a></h2> <h2 id="logo-andern">Logo ändern<a class="headerlink" href="#logo-andern" title="Permanent link">&para;</a></h2>
<p>Mailcow-Builds nach dem 21. Dezember 2018 können das SOGo-Logo ändern, indem sie die Datei <code>data/conf/sogo/sogo-full.svg</code> ersetzen oder erstellen (falls sie fehlt). <p>Mailcow-Builds nach dem 21. Dezember 2018 können das SOGo-Logo ändern, indem sie die Datei <code>data/conf/sogo/sogo-full.svg</code> ersetzen oder erstellen (falls sie fehlt).
Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie <code>docker compose restart memcached-mailcow sogo-mailcow</code> ausführen.</p> Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container neu starten, indem Sie <code>docker-compose restart memcached-mailcow sogo-mailcow</code> ausführen.</p>
<h2 id="domains-verbinden-untereinander-sichtbar-machen">Domains verbinden (untereinander sichtbar machen)<a class="headerlink" href="#domains-verbinden-untereinander-sichtbar-machen" title="Permanent link">&para;</a></h2> <h2 id="domains-verbinden-untereinander-sichtbar-machen">Domains verbinden (untereinander sichtbar machen)<a class="headerlink" href="#domains-verbinden-untereinander-sichtbar-machen" title="Permanent link">&para;</a></h2>
<p>Domains sind normalerweise voneinander isoliert.</p> <p>Domains sind normalerweise voneinander isoliert.</p>
<p>Sie können das ändern, indem Sie <code>data/conf/sogo/sogo.conf</code> modifizieren:</p> <p>Sie können das ändern, indem Sie <code>data/conf/sogo/sogo.conf</code> modifizieren:</p>
@ -2578,19 +2578,19 @@ Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container
(beispiel.org, beispiel.com, beispiel.net) (beispiel.org, beispiel.com, beispiel.net)
); );
</code></pre></div> </code></pre></div>
<p>SOGo neu starten: <code>docker compose restart sogo-mailcow</code></p> <p>SOGo neu starten: <code>docker-compose restart sogo-mailcow</code></p>
<h2 id="deaktivieren-sie-die-passwortanderung">Deaktivieren Sie die Passwortänderung<a class="headerlink" href="#deaktivieren-sie-die-passwortanderung" title="Permanent link">&para;</a></h2> <h2 id="deaktivieren-sie-die-passwortanderung">Deaktivieren Sie die Passwortänderung<a class="headerlink" href="#deaktivieren-sie-die-passwortanderung" title="Permanent link">&para;</a></h2>
<p>Bearbeiten Sie <code>data/conf/sogo/sogo.conf</code> und <strong>ändern</strong> Sie <code>SOGoPasswordChangeEnabled</code> auf <code>NO</code>. Bitte fügen Sie keinen neuen Parameter hinzu.</p> <p>Bearbeiten Sie <code>data/conf/sogo/sogo.conf</code> und <strong>ändern</strong> Sie <code>SOGoPasswordChangeEnabled</code> auf <code>NO</code>. Bitte fügen Sie keinen neuen Parameter hinzu.</p>
<p>Führen Sie <code>docker compose restart memcached-mailcow sogo-mailcow</code> aus, um die Änderungen zu aktivieren.</p> <p>Führen Sie <code>docker-compose restart memcached-mailcow sogo-mailcow</code> aus, um die Änderungen zu aktivieren.</p>
<h2 id="totp-zurucksetzen-totp-deaktivieren">TOTP zurücksetzen / TOTP deaktivieren<a class="headerlink" href="#totp-zurucksetzen-totp-deaktivieren" title="Permanent link">&para;</a></h2> <h2 id="totp-zurucksetzen-totp-deaktivieren">TOTP zurücksetzen / TOTP deaktivieren<a class="headerlink" href="#totp-zurucksetzen-totp-deaktivieren" title="Permanent link">&para;</a></h2>
<p>Führen Sie <code>docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}'</code> aus dem mailcow Verzeichnis aus.</p> <p>Führen Sie <code>docker-compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}'</code> aus dem mailcow Verzeichnis aus.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2439,21 +2439,21 @@
forward-addr: 8.8.4.4 # VERWENDET KEINE ÖFFENTLICHEN DNS-SERVER - NUR EIN BEISPIEL forward-addr: 8.8.4.4 # VERWENDET KEINE ÖFFENTLICHEN DNS-SERVER - NUR EIN BEISPIEL
</code></pre></div> </code></pre></div>
<p>Unbound neu starten:</p> <p>Unbound neu starten:</p>
<div class="highlight"><pre><span></span><code>docker compose restart unbound-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart unbound-mailcow
</code></pre></div> </code></pre></div>
<h2 id="methode-b-uberschreiben-der-datei">Methode B, Überschreiben der Datei<a class="headerlink" href="#methode-b-uberschreiben-der-datei" title="Permanent link">&para;</a></h2> <h2 id="methode-b-uberschreiben-der-datei">Methode B, Überschreiben der Datei<a class="headerlink" href="#methode-b-uberschreiben-der-datei" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.override.yml . cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.override.yml .
</code></pre></div> </code></pre></div>
<p>Bearbeiten Sie <code>docker-compose.override.yml</code> und passen Sie die IP an.</p> <p>Bearbeiten Sie <code>docker-compose.override.yml</code> und passen Sie die IP an.</p>
<p>Führen Sie <code>docker compose down ; docker compose up -d</code> aus.</p> <p>Führen Sie <code>docker-compose down ; docker-compose up -d</code> aus.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2683,7 +2683,7 @@ Beispiel:
- MAILQ_THRESHOLD=${MAILQ_THRESHOLD:-20} - MAILQ_THRESHOLD=${MAILQ_THRESHOLD:-20}
- MAILQ_CRIT=${MAILQ_CRIT:-30} - MAILQ_CRIT=${MAILQ_CRIT:-30}
</code></pre></div></p> </code></pre></div></p>
<p>Um sie anzupassen, fügen Sie einfach die notwendigen Threshold Variablen (z.B. <code>MAILQ_THRESHOLD=10</code>) zu <code>mailcow.conf</code> hinzu und führen <code>docker compose up -d</code> aus.</p> <p>Um sie anzupassen, fügen Sie einfach die notwendigen Threshold Variablen (z.B. <code>MAILQ_THRESHOLD=10</code>) zu <code>mailcow.conf</code> hinzu und führen <code>docker-compose up -d</code> aus.</p>
<h3 id="threshold-beschreibungen">Threshold Beschreibungen<a class="headerlink" href="#threshold-beschreibungen" title="Permanent link">&para;</a></h3> <h3 id="threshold-beschreibungen">Threshold Beschreibungen<a class="headerlink" href="#threshold-beschreibungen" title="Permanent link">&para;</a></h3>
<h4 id="nginx_threshold">NGINX_THRESHOLD<a class="headerlink" href="#nginx_threshold" title="Permanent link">&para;</a></h4> <h4 id="nginx_threshold">NGINX_THRESHOLD<a class="headerlink" href="#nginx_threshold" title="Permanent link">&para;</a></h4>
<p>Benachrichtigt Administratoren, wenn Watchdog keine Verbindung zu Nginx auf Port 8081 herstellen kann und startet den Container automatisch neu, wenn Probleme gefunden wurden und der Threshold erreicht wurde.</p> <p>Benachrichtigt Administratoren, wenn Watchdog keine Verbindung zu Nginx auf Port 8081 herstellen kann und startet den Container automatisch neu, wenn Probleme gefunden wurden und der Threshold erreicht wurde.</p>
@ -2725,7 +2725,7 @@ Beispiel:
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2619,7 +2619,7 @@ Geben Sie schließlich Ihr aktuelles Kontopasswort ein und berühren Sie nach Au
<h3 id="deaktivieren-inoffizieller-unterstutzter-fido-security-keys">Deaktivieren inoffizieller unterstützter Fido Security Keys<a class="headerlink" href="#deaktivieren-inoffizieller-unterstutzter-fido-security-keys" title="Permanent link">&para;</a></h3> <h3 id="deaktivieren-inoffizieller-unterstutzter-fido-security-keys">Deaktivieren inoffizieller unterstützter Fido Security Keys<a class="headerlink" href="#deaktivieren-inoffizieller-unterstutzter-fido-security-keys" title="Permanent link">&para;</a></h3>
<p>Mit WebAuthn gibt es die Möglichkeit, nur offizielle Fido Security Keys zu verwenden (von den großen Marken wie: Yubico, Apple, Nitro, Google, Huawei, Microsoft, usw.) zu verwenden.</p> <p>Mit WebAuthn gibt es die Möglichkeit, nur offizielle Fido Security Keys zu verwenden (von den großen Marken wie: Yubico, Apple, Nitro, Google, Huawei, Microsoft, usw.) zu verwenden.</p>
<p>Dies dient in erster Linie der Sicherheit, da es Administratoren ermöglicht, sicherzustellen, dass nur offizielle Hardware in ihrer Umgebung verwendet werden kann.</p> <p>Dies dient in erster Linie der Sicherheit, da es Administratoren ermöglicht, sicherzustellen, dass nur offizielle Hardware in ihrer Umgebung verwendet werden kann.</p>
<p>Um diese Funktion zu aktivieren, ändern Sie den Wert <code>WEBAUTHN_ONLY_TRUSTED_VENDORS</code> in mailcow.conf von <code>n</code> auf <code>y</code> und starten Sie die betroffenen Container mit <code>docker compose up -d</code> neu.</p> <p>Um diese Funktion zu aktivieren, ändern Sie den Wert <code>WEBAUTHN_ONLY_TRUSTED_VENDORS</code> in mailcow.conf von <code>n</code> auf <code>y</code> und starten Sie die betroffenen Container mit <code>docker-compose up -d</code> neu.</p>
<p>Die mailcow wird nun die Vendor-Zertifikate verwenden, die sich in Ihrem mailcow-Verzeichnis unter <code>data/web/inc/lib/WebAuthn/rootCertificates</code> befinden. </p> <p>Die mailcow wird nun die Vendor-Zertifikate verwenden, die sich in Ihrem mailcow-Verzeichnis unter <code>data/web/inc/lib/WebAuthn/rootCertificates</code> befinden. </p>
<h5 id="beispiel">Beispiel:<a class="headerlink" href="#beispiel" title="Permanent link">&para;</a></h5> <h5 id="beispiel">Beispiel:<a class="headerlink" href="#beispiel" title="Permanent link">&para;</a></h5>
<p>Wenn Sie die offiziellen Hersteller-Geräte nur auf Apple beschränken wollen, brauchen Sie nur das Apple Hersteller-Zertifikat im <code>data/web/inc/lib/WebAuthn/rootCertificates</code>. <p>Wenn Sie die offiziellen Hersteller-Geräte nur auf Apple beschränken wollen, brauchen Sie nur das Apple Hersteller-Zertifikat im <code>data/web/inc/lib/WebAuthn/rootCertificates</code>.
@ -2652,7 +2652,7 @@ Diese Herstellerzertifikate werden nur zur Überprüfung der Originalhardware ve
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2380,10 +2380,10 @@
} }
</code></pre></div> </code></pre></div>
<p>Falls Sie den Parameter HTTP_BIND geändert haben, erstellen Sie den Container neu:</p> <p>Falls Sie den Parameter HTTP_BIND geändert haben, erstellen Sie den Container neu:</p>
<div class="highlight"><pre><span></span><code>docker compose up -d <div class="highlight"><pre><span></span><code>docker-compose up -d
</code></pre></div> </code></pre></div>
<p>Andernfalls starten Sie Nginx neu:</p> <p>Andernfalls starten Sie Nginx neu:</p>
<div class="highlight"><pre><span></span><code>docker compose restart nginx-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart nginx-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2391,7 +2391,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2371,7 +2371,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
<div class="highlight"><pre><span></span><code>ssl_min_protocol = TLSv1 <div class="highlight"><pre><span></span><code>ssl_min_protocol = TLSv1
</code></pre></div> </code></pre></div>
<p>Starten Sie die betroffenen Dienste neu:</p> <p>Starten Sie die betroffenen Dienste neu:</p>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow dovecot-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart postfix-mailcow dovecot-mailcow
</code></pre></div> </code></pre></div>
<p>Tipp: Sie können TLS 1.2 in Windows 7 aktivieren.</p> <p>Tipp: Sie können TLS 1.2 in Windows 7 aktivieren.</p>
@ -2380,7 +2380,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2466,14 +2466,14 @@ Wenn SOGo deaktiviert ist, können alle unten aufgeführten Hashing-Methoden von
<blockquote> <blockquote>
<p>Ich habe die Passwort-Hashes in der SQL-Tabelle "Mailbox" geändert und kann mich nicht anmelden.</p> <p>Ich habe die Passwort-Hashes in der SQL-Tabelle "Mailbox" geändert und kann mich nicht anmelden.</p>
</blockquote> </blockquote>
<p>Eine "Ansicht" muss aktualisiert werden. Sie können dies durch einen Neustart von sogo-mailcow auslösen: <code>docker compose restart sogo-mailcow</code></p> <p>Eine "Ansicht" muss aktualisiert werden. Sie können dies durch einen Neustart von sogo-mailcow auslösen: <code>docker-compose restart sogo-mailcow</code></p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2390,8 +2390,8 @@ services:
entrypoint: [&quot;echo&quot;, &quot;ipv6nat disabled in compose.override.yml&quot;] entrypoint: [&quot;echo&quot;, &quot;ipv6nat disabled in compose.override.yml&quot;]
</code></pre></div> </code></pre></div>
<p>Damit diese Änderungen wirksam werden, müssen Sie den Stack vollständig stoppen und dann neu starten, damit Container und Netzwerke neu erstellt werden:</p> <p>Damit diese Änderungen wirksam werden, müssen Sie den Stack vollständig stoppen und dann neu starten, damit Container und Netzwerke neu erstellt werden:</p>
<div class="highlight"><pre><span></span><code>docker compose down <div class="highlight"><pre><span></span><code>docker-compose down
docker compose up -d docker-compose up -d
</code></pre></div> </code></pre></div>
<p><strong>3.</strong> Deaktivieren Sie IPv6 in unbound-mailcow</p> <p><strong>3.</strong> Deaktivieren Sie IPv6 in unbound-mailcow</p>
<p>Bearbeiten Sie <code>data/conf/unbound/unbound.conf</code> und setzen Sie <code>do-ip6</code> auf "no":</p> <p>Bearbeiten Sie <code>data/conf/unbound/unbound.conf</code> und setzen Sie <code>do-ip6</code> auf "no":</p>
@ -2401,7 +2401,7 @@ docker compose up -d
[...] [...]
</code></pre></div> </code></pre></div>
<p>unbound neu starten:</p> <p>unbound neu starten:</p>
<div class="highlight"><pre><span></span><code>docker compose restart unbound-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart unbound-mailcow
</code></pre></div> </code></pre></div>
<p><strong>4.</strong> Deaktivieren Sie IPv6 in postfix-mailcow</p> <p><strong>4.</strong> Deaktivieren Sie IPv6 in postfix-mailcow</p>
<p>Erstellen Sie <code>data/conf/postfix/extra.cf</code> und setzen Sie <code>smtp_address_preference</code> auf <code>ipv4</code>:</p> <p>Erstellen Sie <code>data/conf/postfix/extra.cf</code> und setzen Sie <code>smtp_address_preference</code> auf <code>ipv4</code>:</p>
@ -2409,7 +2409,7 @@ docker compose up -d
inet_protocols = ipv4 inet_protocols = ipv4
</code></pre></div> </code></pre></div>
<p>Starten Sie Postfix neu:</p> <p>Starten Sie Postfix neu:</p>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart postfix-mailcow
</code></pre></div> </code></pre></div>
<p><strong>5.</strong> Wenn im Docker Daemon IPv6 komplett deaktiviert ist:</p> <p><strong>5.</strong> Wenn im Docker Daemon IPv6 komplett deaktiviert ist:</p>
<p>Folgende NGINX, Dovecot und Php-fpm Konfigurationsdateien anpassen</p> <p>Folgende NGINX, Dovecot und Php-fpm Konfigurationsdateien anpassen</p>
@ -2425,7 +2425,7 @@ sed -i &#39;s/\[::\]://g&#39; data/conf/phpfpm/php-fpm.d/pools.conf
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-15 23:22:15</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2517,7 +2517,7 @@ services:
depends_on: depends_on:
- rspamd-mailcow - rspamd-mailcow
</code></pre></div> </code></pre></div>
<p>Starte <code>docker compose up -d</code></p> <p>Starte <code>docker-compose up -d</code></p>
<h2 id="senden-sie-eine-kopie-der-berichte-an-sich-selbst">Senden Sie eine Kopie der Berichte an sich selbst<a class="headerlink" href="#senden-sie-eine-kopie-der-berichte-an-sich-selbst" title="Permanent link">&para;</a></h2> <h2 id="senden-sie-eine-kopie-der-berichte-an-sich-selbst">Senden Sie eine Kopie der Berichte an sich selbst<a class="headerlink" href="#senden-sie-eine-kopie-der-berichte-an-sich-selbst" title="Permanent link">&para;</a></h2>
<p>Um eine versteckte Kopie der von Rspamd erzeugten Berichte zu erhalten, können Sie eine <code>bcc_addrs</code> Liste im <code>reporting</code> Konfigurationsabschnitt von <code>data/conf/rspamd/local.d/dmarc.conf</code> setzen:</p> <p>Um eine versteckte Kopie der von Rspamd erzeugten Berichte zu erhalten, können Sie eine <code>bcc_addrs</code> Liste im <code>reporting</code> Konfigurationsabschnitt von <code>data/conf/rspamd/local.d/dmarc.conf</code> setzen:</p>
<div class="highlight"><pre><span></span><code>reporting { <div class="highlight"><pre><span></span><code>reporting {
@ -2534,20 +2534,20 @@ services:
</ul> </ul>
<h2 id="fehlersuche">Fehlersuche<a class="headerlink" href="#fehlersuche" title="Permanent link">&para;</a></h2> <h2 id="fehlersuche">Fehlersuche<a class="headerlink" href="#fehlersuche" title="Permanent link">&para;</a></h2>
<p>Prüfen Sie, wann der Berichtsplan zuletzt ausgeführt wurde:</p> <p>Prüfen Sie, wann der Berichtsplan zuletzt ausgeführt wurde:</p>
<div class="highlight"><pre><span></span><code>docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log <div class="highlight"><pre><span></span><code>docker-compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log
</code></pre></div> </code></pre></div>
<p>Sehen Sie sich die letzte Berichtsausgabe an:</p> <p>Sehen Sie sich die letzte Berichtsausgabe an:</p>
<div class="highlight"><pre><span></span><code>docker compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log <div class="highlight"><pre><span></span><code>docker-compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log
</code></pre></div> </code></pre></div>
<p>Manuelles Auslösen eines DMARC-Berichts:</p> <p>Manuelles Auslösen eines DMARC-Berichts:</p>
<div class="highlight"><pre><span></span><code>docker compose exec rspamd-mailcow rspamadm dmarc_report <div class="highlight"><pre><span></span><code>docker-compose exec rspamd-mailcow rspamadm dmarc_report
</code></pre></div> </code></pre></div>
<p>Bestätigen Sie, dass Rspamd Daten in Redis aufgezeichnet hat: <p>Bestätigen Sie, dass Rspamd Daten in Redis aufgezeichnet hat:
Ändern Sie <code>20220428</code> in ein anderes interessantes Datum zum schauen.</p> Ändern Sie <code>20220428</code> in ein anderes interessantes Datum zum schauen.</p>
<div class="highlight"><pre><span></span><code>docker compose exec redis-mailcow redis-cli SMEMBERS &quot;dmarc_idx;20220428&quot; <div class="highlight"><pre><span></span><code>docker-compose exec redis-mailcow redis-cli SMEMBERS &quot;dmarc_idx;20220428&quot;
</code></pre></div> </code></pre></div>
<p>Nehmen Sie eine der Zeilen aus der Ausgabe, die Sie interessiert, und fordern Sie sie an, z. B.:</p> <p>Nehmen Sie eine der Zeilen aus der Ausgabe, die Sie interessiert, und fordern Sie sie an, z. B.:</p>
<div class="highlight"><pre><span></span><code>docker compose exec redis-mailcow redis-cli ZRANGE &quot;dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428&quot; 0 49 <div class="highlight"><pre><span></span><code>docker-compose exec redis-mailcow redis-cli ZRANGE &quot;dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428&quot; 0 49
</code></pre></div> </code></pre></div>
<h2 id="andern-sie-die-haufigkeit-der-dmarc-berichte">Ändern Sie die Häufigkeit der DMARC-Berichte<a class="headerlink" href="#andern-sie-die-haufigkeit-der-dmarc-berichte" title="Permanent link">&para;</a></h2> <h2 id="andern-sie-die-haufigkeit-der-dmarc-berichte">Ändern Sie die Häufigkeit der DMARC-Berichte<a class="headerlink" href="#andern-sie-die-haufigkeit-der-dmarc-berichte" title="Permanent link">&para;</a></h2>
<p>Im obigen Beispiel werden die Berichte einmal alle 24 Stunden gesendet.</p> <p>Im obigen Beispiel werden die Berichte einmal alle 24 Stunden gesendet.</p>
@ -2558,10 +2558,10 @@ services:
<p>Bearbeiten Sie <code>docker-compose.override.yml</code> und stellen Sie <code>ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"</code> auf einen gewünschten Wert, zum Beispiel auf <code>"@midnight"</code></p> <p>Bearbeiten Sie <code>docker-compose.override.yml</code> und stellen Sie <code>ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"</code> auf einen gewünschten Wert, zum Beispiel auf <code>"@midnight"</code></p>
</li> </li>
<li> <li>
<p>Führen Sie <code>docker compose up -d</code> aus.</p> <p>Führen Sie <code>docker-compose up -d</code> aus.</p>
</li> </li>
<li> <li>
<p>Führen Sie <code>docker compose restart ofelia-mailcow</code> aus</p> <p>Führen Sie <code>docker-compose restart ofelia-mailcow</code> aus</p>
</li> </li>
</ol> </ol>
<h2 id="dmarc-berichterstattung-deaktivieren">DMARC-Berichterstattung deaktivieren<a class="headerlink" href="#dmarc-berichterstattung-deaktivieren" title="Permanent link">&para;</a></h2> <h2 id="dmarc-berichterstattung-deaktivieren">DMARC-Berichterstattung deaktivieren<a class="headerlink" href="#dmarc-berichterstattung-deaktivieren" title="Permanent link">&para;</a></h2>
@ -2574,7 +2574,7 @@ services:
<p>Machen Sie Änderungen in <code>docker-compose.override.yml</code> an <code>rspamd-mailcow</code> und <code>ofelia-mailcow</code> rückgängig</p> <p>Machen Sie Änderungen in <code>docker-compose.override.yml</code> an <code>rspamd-mailcow</code> und <code>ofelia-mailcow</code> rückgängig</p>
</li> </li>
<li> <li>
<p>Führen Sie <code>docker compose up -d</code> aus</p> <p>Führen Sie <code>docker-compose up -d</code> aus</p>
</li> </li>
</ol> </ol>
@ -2583,7 +2583,7 @@ services:
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2455,7 +2455,7 @@ DOVEADM_PORT=127.0.0.1:19991
SQL_PORT=127.0.0.1:13306 SQL_PORT=127.0.0.1:13306
SOLR_PORT=127.0.0.1:18983 SOLR_PORT=127.0.0.1:18983
</code></pre></div> </code></pre></div>
<p>Um Ihre Änderungen zu übernehmen, führen Sie <code>docker compose down</code> gefolgt von <code>docker compose up -d</code> aus.</p> <p>Um Ihre Änderungen zu übernehmen, führen Sie <code>docker-compose down</code> gefolgt von <code>docker-compose up -d</code> aus.</p>
<h2 id="ipv6-binding">IPv6-Binding<a class="headerlink" href="#ipv6-binding" title="Permanent link">&para;</a></h2> <h2 id="ipv6-binding">IPv6-Binding<a class="headerlink" href="#ipv6-binding" title="Permanent link">&para;</a></h2>
<p>Das Ändern von IPv6-Bindings ist anders als bei IPv4. Auch dies hat einen technischen Hintergrund.</p> <p>Das Ändern von IPv6-Bindings ist anders als bei IPv4. Auch dies hat einen technischen Hintergrund.</p>
<p>Eine <code>docker-compose.override.yml</code> Datei wird verwendet, anstatt die <code>docker-compose.yml</code> Datei direkt zu bearbeiten. Dies geschieht, um die Aktualisierbarkeit zu erhalten, da die Datei <code>docker-compose.yml</code> regelmäßig aktualisiert wird und Ihre Änderungen höchstwahrscheinlich überschrieben werden.</p> <p>Eine <code>docker-compose.override.yml</code> Datei wird verwendet, anstatt die <code>docker-compose.yml</code> Datei direkt zu bearbeiten. Dies geschieht, um die Aktualisierbarkeit zu erhalten, da die Datei <code>docker-compose.yml</code> regelmäßig aktualisiert wird und Ihre Änderungen höchstwahrscheinlich überschrieben werden.</p>
@ -2483,18 +2483,14 @@ services:
- &#39;[2001:db8:dead:beef::123]:80:80&#39; - &#39;[2001:db8:dead:beef::123]:80:80&#39;
- &#39;[2001:db8:dead:beef::123]:443:443&#39; - &#39;[2001:db8:dead:beef::123]:443:443&#39;
</code></pre></div> </code></pre></div>
<div class="admonition info"> <p>Um Ihre Änderungen zu übernehmen, führen Sie <code>docker-compose down</code> gefolgt von <code>docker-compose up -d</code> aus.</p>
<p class="admonition-title">Info</p>
<p>Alternativ kann auch die [::] Schreibweise benutzt werden um den jeweiligen Dienst auf allen IPv6 Interfaces lauschen zu lassen.</p>
</div>
<p>Um Ihre Änderungen zu übernehmen, führen Sie <code>docker compose down</code> gefolgt von <code>docker compose up -d</code> aus.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-10 10:46:15</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2505,7 +2505,7 @@
<p>Das Logging in mailcow: dockerized besteht aus mehreren Stufen, ist aber immerhin wesentlich flexibler und einfacher in einen Logging-Daemon zu integrieren als bisher.</p> <p>Das Logging in mailcow: dockerized besteht aus mehreren Stufen, ist aber immerhin wesentlich flexibler und einfacher in einen Logging-Daemon zu integrieren als bisher.</p>
<p>In Docker schreibt die containerisierte Anwendung (PID 1) ihre Ausgabe auf stdout. Für echte Ein-Anwendungs-Container funktioniert das sehr gut. <p>In Docker schreibt die containerisierte Anwendung (PID 1) ihre Ausgabe auf stdout. Für echte Ein-Anwendungs-Container funktioniert das sehr gut.
Führen Sie <code>docker compose logs --help</code> aus, um mehr zu erfahren. </p> Führen Sie <code>docker-compose logs --help</code> aus, um mehr zu erfahren. </p>
<p>Einige Container protokollieren oder streamen an mehrere Ziele.</p> <p>Einige Container protokollieren oder streamen an mehrere Ziele.</p>
<p>Kein Container wird persistente Logs in sich behalten. Container sind flüchtige Objekte!</p> <p>Kein Container wird persistente Logs in sich behalten. Container sind flüchtige Objekte!</p>
<p>Am Ende wird jede Zeile der Logs den Docker-Daemon erreichen - ungefiltert.</p> <p>Am Ende wird jede Zeile der Logs den Docker-Daemon erreichen - ungefiltert.</p>
@ -2587,7 +2587,7 @@ erstellen Sie die Datei <code>/etc/rsyslog.d/docker.conf</code>:</p>
... ...
} }
</code></pre></div> </code></pre></div>
<p>Starten Sie den Docker-Daemon neu und führen Sie <code>docker compose down &amp;&amp; docker compose up -d</code> aus, um die Container mit dem neuen Protokollierungstreiber neu zu erstellen.</p> <p>Starten Sie den Docker-Daemon neu und führen Sie <code>docker-compose down &amp;&amp; docker-compose up -d</code> aus, um die Container mit dem neuen Protokollierungstreiber neu zu erstellen.</p>
<h3 id="log-rotation">Log rotation<a class="headerlink" href="#log-rotation" title="Permanent link">&para;</a></h3> <h3 id="log-rotation">Log rotation<a class="headerlink" href="#log-rotation" title="Permanent link">&para;</a></h3>
<p>Da diese Logs sehr groß werden können, ist es eine gute Idee logrotate zu nutzen, um Logs nach einer gewissen Zeit zu <p>Da diese Logs sehr groß werden können, ist es eine gute Idee logrotate zu nutzen, um Logs nach einer gewissen Zeit zu
komprimieren und zu löschen.</p> komprimieren und zu löschen.</p>
@ -2612,7 +2612,7 @@ komprimieren und zu löschen.</p>
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2489,7 +2489,7 @@ mailcow: dockerized vertraut auf das Standard-Gateway IP 172.22.1.1 als Proxy.</
</code></pre></div></p> </code></pre></div></p>
<p>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.</p> <p>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.</p>
<p><strong>WICHTIG:</strong> Verwenden Sie nicht Port 8081, 9081 oder 65510!</p> <p><strong>WICHTIG:</strong> Verwenden Sie nicht Port 8081, 9081 oder 65510!</p>
<p>Erzeugen Sie die betroffenen Container neu, indem Sie <code>docker compose up -d</code> ausführen.</p> <p>Erzeugen Sie die betroffenen Container neu, indem Sie <code>docker-compose up -d</code> ausführen.</p>
<p><strong>Wichtige Informationen, bitte lesen Sie diese sorgfältig durch!</strong></p> <p><strong>Wichtige Informationen, bitte lesen Sie diese sorgfältig durch!</strong></p>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
@ -2640,7 +2640,7 @@ backend mailcow
<p><strong>Wichtig</strong>: Diese Konfiguration deckt nur das "Reverseproxing" des Webpanels (nginx-mailcow) unter Verwendung von Traefik v2 ab. Wenn Sie auch die Mail-Dienste wie dovecot, postfix... reproxen wollen, müssen Sie die folgende Konfiguration an jeden Container anpassen und einen <a href="https://docs.traefik.io/routing/entrypoints/">EntryPoint</a> in Ihrer <code>traefik.toml</code> oder <code>traefik.yml</code> (je nachdem, welche Konfiguration Sie verwenden) für jeden Port erstellen. </p> <p><strong>Wichtig</strong>: Diese Konfiguration deckt nur das "Reverseproxing" des Webpanels (nginx-mailcow) unter Verwendung von Traefik v2 ab. Wenn Sie auch die Mail-Dienste wie dovecot, postfix... reproxen wollen, müssen Sie die folgende Konfiguration an jeden Container anpassen und einen <a href="https://docs.traefik.io/routing/entrypoints/">EntryPoint</a> in Ihrer <code>traefik.toml</code> oder <code>traefik.yml</code> (je nachdem, welche Konfiguration Sie verwenden) für jeden Port erstellen. </p>
<p>In diesem Abschnitt gehen wir davon aus, dass Sie Ihren Traefik 2 <code>[certificatesresolvers]</code> in Ihrer Traefik-Konfigurationsdatei richtig konfiguriert haben und auch acme verwenden. Das folgende Beispiel verwendet Lets Encrypt, aber Sie können es gerne auf Ihren eigenen Zertifikatsresolver ändern. Eine grundlegende Traefik 2 toml-Konfigurationsdatei mit allen oben genannten Elementen, die für dieses Beispiel verwendet werden kann, finden Sie hier <a href="https://github.com/Frenzoid/TraefikBasicConfig/blob/master/traefik.toml">traefik.toml</a>, falls Sie eine solche Datei benötigen oder einen Hinweis, wie Sie Ihre Konfiguration anpassen können.</p> <p>In diesem Abschnitt gehen wir davon aus, dass Sie Ihren Traefik 2 <code>[certificatesresolvers]</code> in Ihrer Traefik-Konfigurationsdatei richtig konfiguriert haben und auch acme verwenden. Das folgende Beispiel verwendet Lets Encrypt, aber Sie können es gerne auf Ihren eigenen Zertifikatsresolver ändern. Eine grundlegende Traefik 2 toml-Konfigurationsdatei mit allen oben genannten Elementen, die für dieses Beispiel verwendet werden kann, finden Sie hier <a href="https://github.com/Frenzoid/TraefikBasicConfig/blob/master/traefik.toml">traefik.toml</a>, falls Sie eine solche Datei benötigen oder einen Hinweis, wie Sie Ihre Konfiguration anpassen können.</p>
<p>Zuallererst werden wir den acme-mailcow-Container deaktivieren, da wir die von traefik bereitgestellten Zertifikate verwenden werden. <p>Zuallererst werden wir den acme-mailcow-Container deaktivieren, da wir die von traefik bereitgestellten Zertifikate verwenden werden.
Dazu müssen wir <code>SKIP_LETS_ENCRYPT=y</code> in unserer <code>mailcow.conf</code> setzen und <code>docker compose up -d</code> ausführen, um die Änderungen zu übernehmen.</p> Dazu müssen wir <code>SKIP_LETS_ENCRYPT=y</code> in unserer <code>mailcow.conf</code> setzen und <code>docker-compose up -d</code> ausführen, um die Änderungen zu übernehmen.</p>
<p>Dann erstellen wir eine <code>docker-compose.override.yml</code> Datei, um die Hauptdatei <code>docker-compose.yml</code> zu überschreiben, die sich im Mailcow-Stammverzeichnis befindet. </p> <p>Dann erstellen wir eine <code>docker-compose.override.yml</code> Datei, um die Hauptdatei <code>docker-compose.yml</code> zu überschreiben, die sich im Mailcow-Stammverzeichnis befindet. </p>
<div class="highlight"><pre><span></span><code><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s">&#39;2.1&#39;</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s">&#39;2.1&#39;</span><span class="w"></span>
@ -2673,7 +2673,7 @@ Dazu müssen wir <code>SKIP_LETS_ENCRYPT=y</code> in unserer <code>mailcow.conf<
<span class="w"> </span><span class="nt">network_mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">none</span><span class="w"></span> <span class="w"> </span><span class="nt">network_mode</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">none</span><span class="w"></span>
<span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w"></span> <span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="c1"># mounten Sie den Ordner, der Traefiks `acme.json&#39; Datei enthält</span><span class="w"></span> <span class="w"> </span><span class="c1"># mounten Sie den Ordner, der Traefiks `acme.json&#39; Datei enthält</span><span class="w"></span>
<span class="w"> </span><span class="c1"># in diesem Fall wird Traefik von seinem eigenen docker compose in ../traefik gestartet</span><span class="w"></span> <span class="w"> </span><span class="c1"># in diesem Fall wird Traefik von seinem eigenen docker-compose in ../traefik gestartet</span><span class="w"></span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">../traefik/data:/traefik:ro</span><span class="w"></span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">../traefik/data:/traefik:ro</span><span class="w"></span>
<span class="w"> </span><span class="c1"># SSL-Ordner von mailcow einhängen</span><span class="w"></span> <span class="w"> </span><span class="c1"># SSL-Ordner von mailcow einhängen</span><span class="w"></span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">./data/assets/ssl/:/output:rw</span><span class="w"></span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">./data/assets/ssl/:/output:rw</span><span class="w"></span>
@ -2686,10 +2686,10 @@ Dazu müssen wir <code>SKIP_LETS_ENCRYPT=y</code> in unserer <code>mailcow.conf<
<span class="w"> </span><span class="nt">web</span><span class="p">:</span><span class="w"></span> <span class="w"> </span><span class="nt">web</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="nt">external</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"></span> <span class="w"> </span><span class="nt">external</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"></span>
</code></pre></div> </code></pre></div>
<p>Starten Sie die neuen Container mit <code>docker compose up -d</code>.</p> <p>Starten Sie die neuen Container mit <code>docker-compose up -d</code>.</p>
<p>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] (<a href="https://hub.docker.com/r/humenius/traefik-certs-dumper">https://hub.docker.com/r/humenius/traefik-certs-dumper</a>), der die Datei <code>acme.json</code> über ein Volume und eine Variable <code>DOMAIN=example. org</code>, und damit wird der Container die <code>cert.pem</code> und <code>key.pem</code> Dateien ausgeben, dafür lassen wir einfach den <code>traefik-certs-dumper</code> Container laufen, binden das <code>/traefik</code> Volume an den Ordner, in dem unsere <code>acme.json</code> gespeichert ist, binden das <code>/output</code> Volume an unseren mailcow <code>data/assets/ssl/</code> Ordner, und setzen die <code>DOMAIN=example.org</code> Variable auf die Domain, von der wir die Zertifikate ausgeben wollen. </p> <p>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] (<a href="https://hub.docker.com/r/humenius/traefik-certs-dumper">https://hub.docker.com/r/humenius/traefik-certs-dumper</a>), der die Datei <code>acme.json</code> über ein Volume und eine Variable <code>DOMAIN=example. org</code>, und damit wird der Container die <code>cert.pem</code> und <code>key.pem</code> Dateien ausgeben, dafür lassen wir einfach den <code>traefik-certs-dumper</code> Container laufen, binden das <code>/traefik</code> Volume an den Ordner, in dem unsere <code>acme.json</code> gespeichert ist, binden das <code>/output</code> Volume an unseren mailcow <code>data/assets/ssl/</code> Ordner, und setzen die <code>DOMAIN=example.org</code> Variable auf die Domain, von der wir die Zertifikate ausgeben wollen. </p>
<p>Dieser Container überwacht die Datei <code>acme.json</code> auf Änderungen und generiert die Dateien <code>cert.pem</code> und <code>key.pem</code> direkt in <code>data/assets/ssl/</code>, wobei der Pfad mit dem <code>/output</code>-Pfad des Containers verbunden ist.</p> <p>Dieser Container überwacht die Datei <code>acme.json</code> auf Änderungen und generiert die Dateien <code>cert.pem</code> und <code>key.pem</code> direkt in <code>data/assets/ssl/</code>, wobei der Pfad mit dem <code>/output</code>-Pfad des Containers verbunden ist.</p>
<p>Sie können es über die Kommandozeile ausführen oder das [hier] gezeigte docker compose verwenden (<a href="https://hub.docker.com/r/humenius/traefik-certs-dumper">https://hub.docker.com/r/humenius/traefik-certs-dumper</a>).</p> <p>Sie können es über die Kommandozeile ausführen oder das [hier] gezeigte docker-compose verwenden (<a href="https://hub.docker.com/r/humenius/traefik-certs-dumper">https://hub.docker.com/r/humenius/traefik-certs-dumper</a>).</p>
<p>Nachdem wir die Zertifikate übertragen haben, müssen wir die Konfigurationen aus unseren Postfix- und Dovecot-Containern neu laden und die Zertifikate überprüfen. Wie das geht, sehen Sie <a href="https://mailcow.github.io/mailcow-dockerized-docs/de/post_installation/firststeps-ssl/#ein-eigenes-zertifikat-verwenden">hier</a>.</p> <p>Nachdem wir die Zertifikate übertragen haben, müssen wir die Konfigurationen aus unseren Postfix- und Dovecot-Containern neu laden und die Zertifikate überprüfen. Wie das geht, sehen Sie <a href="https://mailcow.github.io/mailcow-dockerized-docs/de/post_installation/firststeps-ssl/#ein-eigenes-zertifikat-verwenden">hier</a>.</p>
<p>Und das sollte es gewesen sein 😊, Sie können überprüfen, ob der Traefik-Router einwandfrei funktioniert, indem Sie das Dashboard von Traefik / traefik logs / über https auf die eingestellte Domain zugreifen, oder / und HTTPS, SMTP und IMAP mit den Befehlen auf der zuvor verlinkten Seite überprüfen.</p> <p>Und das sollte es gewesen sein 😊, Sie können überprüfen, ob der Traefik-Router einwandfrei funktioniert, indem Sie das Dashboard von Traefik / traefik logs / über https auf die eingestellte Domain zugreifen, oder / und HTTPS, SMTP und IMAP mit den Befehlen auf der zuvor verlinkten Seite überprüfen.</p>
<h3 id="optional-post-hook-skript-fur-nicht-mailcow-acme-clients">Optional: Post-Hook-Skript für nicht-mailcow ACME-Clients<a class="headerlink" href="#optional-post-hook-skript-fur-nicht-mailcow-acme-clients" title="Permanent link">&para;</a></h3> <h3 id="optional-post-hook-skript-fur-nicht-mailcow-acme-clients">Optional: Post-Hook-Skript für nicht-mailcow ACME-Clients<a class="headerlink" href="#optional-post-hook-skript-fur-nicht-mailcow-acme-clients" title="Permanent link">&para;</a></h3>
@ -2707,14 +2707,14 @@ docker restart ${postfix_c} ${dovecot_c} ${nginx_c}
<p>Wenn Sie vorhaben, einen Servernamen zu verwenden, der nicht <code>MAILCOW_HOSTNAME</code> in Ihrem Reverse-Proxy ist, stellen Sie sicher, dass Sie diesen Namen zuerst in mailcow.conf über <code>ADDITIONAL_SERVER_NAMES</code> einpflegen. Die Namen müssen durch Kommas getrennt werden und <strong>dürfen</strong> keine Leerzeichen enthalten. Wenn Sie diesen Schritt überspringen, kann es sein, dass mailcow auf Ihren Reverse-Proxy mit einer falschen Seite antwortet.</p> <p>Wenn Sie vorhaben, einen Servernamen zu verwenden, der nicht <code>MAILCOW_HOSTNAME</code> in Ihrem Reverse-Proxy ist, stellen Sie sicher, dass Sie diesen Namen zuerst in mailcow.conf über <code>ADDITIONAL_SERVER_NAMES</code> einpflegen. Die Namen müssen durch Kommas getrennt werden und <strong>dürfen</strong> keine Leerzeichen enthalten. Wenn Sie diesen Schritt überspringen, kann es sein, dass mailcow auf Ihren Reverse-Proxy mit einer falschen Seite antwortet.</p>
<div class="highlight"><pre><span></span><code>ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld <div class="highlight"><pre><span></span><code>ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
</code></pre></div> </code></pre></div>
<p>Führen Sie <code>docker compose up -d</code> zum Anwenden aus.</p> <p>Führen Sie <code>docker-compose up -d</code> zum Anwenden aus.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2369,16 +2369,16 @@ SNAT_TO_SOURCE=1.2.3.4
# Benutze dieses IPv6 für ausgehende Verbindungen (SNAT) # Benutze dieses IPv6 für ausgehende Verbindungen (SNAT)
SNAT6_TO_SOURCE=dead:beef SNAT6_TO_SOURCE=dead:beef
</code></pre></div> </code></pre></div>
<p>Führen Sie <code>docker compose up -d</code> aus.</p> <p>Führen Sie <code>docker-compose up -d</code> aus.</p>
<p>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.</p> <p>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.</p>
<p>Überprüfen Sie die Ausgabe von <code>docker compose logs --tail=200 netfilter-mailcow</code>, um sicherzustellen, dass die SNAT-Einstellungen angewendet wurden.</p> <p>Überprüfen Sie die Ausgabe von <code>docker-compose logs --tail=200 netfilter-mailcow</code>, um sicherzustellen, dass die SNAT-Einstellungen angewendet wurden.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2597,7 +2597,7 @@
<p>Für jede hinzugefügte Domain wird versucht, <code>autodiscover.ADDED_MAIL_DOMAIN</code> und <code>autoconfig.ADDED_MAIL_DOMAIN</code> in die IPv6-Adresse oder - falls IPv6 in der Domain nicht konfiguriert ist - in die IPv4-Adresse aufzulösen. Wenn dies gelingt, wird ein Name als SAN zur Zertifikatsanforderung hinzugefügt.</p> <p>Für jede hinzugefügte Domain wird versucht, <code>autodiscover.ADDED_MAIL_DOMAIN</code> und <code>autoconfig.ADDED_MAIL_DOMAIN</code> in die IPv6-Adresse oder - falls IPv6 in der Domain nicht konfiguriert ist - in die IPv4-Adresse aufzulösen. Wenn dies gelingt, wird ein Name als SAN zur Zertifikatsanforderung hinzugefügt.</p>
<p>Nur Namen, die validiert werden können, werden als SAN hinzugefügt.</p> <p>Nur Namen, die validiert werden können, werden als SAN hinzugefügt.</p>
<p>Für jede Domain, die Sie entfernen, wird das Zertifikat verschoben und ein neues Zertifikat angefordert. Es ist nicht möglich, Domains in einem Zertifikat zu behalten, wenn wir nicht in der Lage sind, die Challenge für diese zu validieren.</p> <p>Für jede Domain, die Sie entfernen, wird das Zertifikat verschoben und ein neues Zertifikat angefordert. Es ist nicht möglich, Domains in einem Zertifikat zu behalten, wenn wir nicht in der Lage sind, die Challenge für diese zu validieren.</p>
<p>Wenn Sie den ACME-Client neu starten wollen, verwenden Sie <code>docker compose restart acme-mailcow</code> und überwachen Sie die Protokolle mit <code>docker compose logs --tail=200 -f acme-mailcow</code>.</p> <p>Wenn Sie den ACME-Client neu starten wollen, verwenden Sie <code>docker-compose restart acme-mailcow</code> und überwachen Sie die Protokolle mit <code>docker-compose logs --tail=200 -f acme-mailcow</code>.</p>
<h3 id="zusatzliche-domain-namen">Zusätzliche Domain-Namen<a class="headerlink" href="#zusatzliche-domain-namen" title="Permanent link">&para;</a></h3> <h3 id="zusatzliche-domain-namen">Zusätzliche Domain-Namen<a class="headerlink" href="#zusatzliche-domain-namen" title="Permanent link">&para;</a></h3>
<p>Bearbeiten Sie "mailcow.conf" und fügen Sie einen Parameter <code>ADDITIONAL_SAN</code> wie folgt hinzu:</p> <p>Bearbeiten Sie "mailcow.conf" und fügen Sie einen Parameter <code>ADDITIONAL_SAN</code> wie folgt hinzu:</p>
<p>Verwenden Sie keine Anführungszeichen (<code>"</code>) und keine Leerzeichen zwischen den Namen!</p> <p>Verwenden Sie keine Anführungszeichen (<code>"</code>) und keine Leerzeichen zwischen den Namen!</p>
@ -2605,7 +2605,7 @@
</code></pre></div> </code></pre></div>
<p>Jeder Name wird anhand seiner IPv6-Adresse oder - wenn IPv6 in Ihrer Domäne nicht konfiguriert ist - anhand seiner IPv4-Adresse überprüft.</p> <p>Jeder Name wird anhand seiner IPv6-Adresse oder - wenn IPv6 in Ihrer Domäne nicht konfiguriert ist - anhand seiner IPv4-Adresse überprüft.</p>
<p>Ein Wildcard-Name wie <code>smtp.*</code> wird versuchen, ein smtp.DOMAIN_NAME SAN für jede zu mailcow hinzugefügte Domain zu erhalten.</p> <p>Ein Wildcard-Name wie <code>smtp.*</code> wird versuchen, ein smtp.DOMAIN_NAME SAN für jede zu mailcow hinzugefügte Domain zu erhalten.</p>
<p>Führen Sie <code>docker compose up -d</code> aus, um betroffene Container automatisch neu zu erstellen.</p> <p>Führen Sie <code>docker-compose up -d</code> aus, um betroffene Container automatisch neu zu erstellen.</p>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
<p>Die Verwendung anderer Namen als <code>MAILCOW_HOSTNAME</code> für den Zugriff auf das mailcow UI kann weitere Konfiguration erfordern.</p> <p>Die Verwendung anderer Namen als <code>MAILCOW_HOSTNAME</code> für den Zugriff auf das mailcow UI kann weitere Konfiguration erfordern.</p>
@ -2613,26 +2613,26 @@
<p>Wenn Sie planen, einen anderen Servernamen als <code>MAILCOW_HOSTNAME</code> für den Zugriff auf die mailcow UI zu verwenden (z.B. durch Hinzufügen von <code>mail.*</code> zu <code>ADDITIONAL_SAN</code>), stellen Sie sicher, dass Sie diesen Namen in mailcow.conf über <code>ADDITIONAL_SERVER_NAMES</code> eintragen. Die Namen müssen durch Kommas getrennt sein und <strong>dürfen</strong> keine Leerzeichen enthalten. Wenn Sie diesen Schritt auslassen, kann mailcow mit einer falschen Seite antworten.</p> <p>Wenn Sie planen, einen anderen Servernamen als <code>MAILCOW_HOSTNAME</code> für den Zugriff auf die mailcow UI zu verwenden (z.B. durch Hinzufügen von <code>mail.*</code> zu <code>ADDITIONAL_SAN</code>), stellen Sie sicher, dass Sie diesen Namen in mailcow.conf über <code>ADDITIONAL_SERVER_NAMES</code> eintragen. Die Namen müssen durch Kommas getrennt sein und <strong>dürfen</strong> keine Leerzeichen enthalten. Wenn Sie diesen Schritt auslassen, kann mailcow mit einer falschen Seite antworten.</p>
<div class="highlight"><pre><span></span><code>ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld <div class="highlight"><pre><span></span><code>ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
</code></pre></div> </code></pre></div>
<p>Führen Sie <code>docker compose up -d</code> aus, um es anzuwenden.</p> <p>Führen Sie <code>docker-compose up -d</code> aus, um es anzuwenden.</p>
<h3 id="erneuerung-erzwingen">Erneuerung erzwingen<a class="headerlink" href="#erneuerung-erzwingen" title="Permanent link">&para;</a></h3> <h3 id="erneuerung-erzwingen">Erneuerung erzwingen<a class="headerlink" href="#erneuerung-erzwingen" title="Permanent link">&para;</a></h3>
<p>Um eine Erneuerung zu erzwingen, müssen Sie eine Datei namens <code>force_renew</code> erstellen und den <code>acme-mailcow</code> Container neu starten:</p> <p>Um eine Erneuerung zu erzwingen, müssen Sie eine Datei namens <code>force_renew</code> erstellen und den <code>acme-mailcow</code> Container neu starten:</p>
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
touch data/assets/ssl/force_renew touch data/assets/ssl/force_renew
docker compose restart acme-mailcow docker-compose restart acme-mailcow
# Prüfen Sie nun die Logs auf eine Erneuerung # Prüfen Sie nun die Logs auf eine Erneuerung
docker compose logs --tail=200 -f acme-mailcow docker-compose logs --tail=200 -f acme-mailcow
</code></pre></div> </code></pre></div>
<p>Die Datei wird automatisch gelöscht.</p> <p>Die Datei wird automatisch gelöscht.</p>
<h3 id="validierungsfehler-und-wie-man-die-validierung-uberspringt">Validierungsfehler und wie man die Validierung überspringt<a class="headerlink" href="#validierungsfehler-und-wie-man-die-validierung-uberspringt" title="Permanent link">&para;</a></h3> <h3 id="validierungsfehler-und-wie-man-die-validierung-uberspringt">Validierungsfehler und wie man die Validierung überspringt<a class="headerlink" href="#validierungsfehler-und-wie-man-die-validierung-uberspringt" title="Permanent link">&para;</a></h3>
<p>Sie können die <strong>IP-Überprüfung</strong> überspringen, indem Sie <code>SKIP_IP_CHECK=y</code> 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.</p> <p>Sie können die <strong>IP-Überprüfung</strong> überspringen, indem Sie <code>SKIP_IP_CHECK=y</code> 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.</p>
<p>Wenn Sie Probleme mit der "HTTP-Validierung" haben, aber Ihre IP-Adressbestätigung erfolgreich ist, verwenden Sie höchstwahrscheinlich firewalld, ufw oder eine andere Firewall, die Verbindungen von <code>br-mailcow</code> zu Ihrem externen Interface verbietet. Sowohl firewalld als auch ufw lassen dies standardmäßig nicht zu. Es reicht oft nicht aus, diese Firewall-Dienste einfach zu stoppen. Sie müssen mailcow stoppen (<code>docker compose down</code>), den Firewall-Dienst stoppen, die Ketten flushen und Docker neu starten.</p> <p>Wenn Sie Probleme mit der "HTTP-Validierung" haben, aber Ihre IP-Adressbestätigung erfolgreich ist, verwenden Sie höchstwahrscheinlich firewalld, ufw oder eine andere Firewall, die Verbindungen von <code>br-mailcow</code> zu Ihrem externen Interface verbietet. Sowohl firewalld als auch ufw lassen dies standardmäßig nicht zu. Es reicht oft nicht aus, diese Firewall-Dienste einfach zu stoppen. Sie müssen mailcow stoppen (<code>docker-compose down</code>), den Firewall-Dienst stoppen, die Ketten flushen und Docker neu starten.</p>
<p>Sie können diese Validierungsmethode auch überspringen, indem Sie <code>SKIP_HTTP_VERIFICATION=y</code> in "mailcow.conf" setzen. Seien Sie gewarnt, dass dies nicht zu empfehlen ist. In den meisten Fällen wird die HTTP-Überprüfung übersprungen, um unbekannte NAT-Reflection-Probleme zu umgehen, die durch das Ignorieren dieser spezifischen Netzwerk-Fehlkonfiguration nicht gelöst werden. Wenn Sie Probleme haben, TLSA-Einträge in der DNS-Übersicht innerhalb von mailcow zu generieren, haben Sie höchstwahrscheinlich Probleme mit NAT-Reflexion, die Sie beheben sollten.</p> <p>Sie können diese Validierungsmethode auch überspringen, indem Sie <code>SKIP_HTTP_VERIFICATION=y</code> in "mailcow.conf" setzen. Seien Sie gewarnt, dass dies nicht zu empfehlen ist. In den meisten Fällen wird die HTTP-Überprüfung übersprungen, um unbekannte NAT-Reflection-Probleme zu umgehen, die durch das Ignorieren dieser spezifischen Netzwerk-Fehlkonfiguration nicht gelöst werden. Wenn Sie Probleme haben, TLSA-Einträge in der DNS-Übersicht innerhalb von mailcow zu generieren, haben Sie höchstwahrscheinlich Probleme mit NAT-Reflexion, die Sie beheben sollten.</p>
<p>Wenn du einen SKIP_* Parameter geändert hast, führe <code>docker compose up -d</code> aus, um deine Änderungen zu übernehmen.</p> <p>Wenn du einen SKIP_* Parameter geändert hast, führe <code>docker-compose up -d</code> aus, um deine Änderungen zu übernehmen.</p>
<h3 id="deaktivieren-sie-lets-encrypt">Deaktivieren Sie Let's Encrypt<a class="headerlink" href="#deaktivieren-sie-lets-encrypt" title="Permanent link">&para;</a></h3> <h3 id="deaktivieren-sie-lets-encrypt">Deaktivieren Sie Let's Encrypt<a class="headerlink" href="#deaktivieren-sie-lets-encrypt" title="Permanent link">&para;</a></h3>
<h4 id="deaktivieren-sie-lets-encrypt-vollstandig">Deaktivieren Sie Let's Encrypt vollständig<a class="headerlink" href="#deaktivieren-sie-lets-encrypt-vollstandig" title="Permanent link">&para;</a></h4> <h4 id="deaktivieren-sie-lets-encrypt-vollstandig">Deaktivieren Sie Let's Encrypt vollständig<a class="headerlink" href="#deaktivieren-sie-lets-encrypt-vollstandig" title="Permanent link">&para;</a></h4>
<p>Setzen Sie <code>SKIP_LETS_ENCRYPT=y</code> in "mailcow.conf" und erstellen Sie "acme-mailcow" neu, indem Sie <code>docker compose up -d</code> ausführen.</p> <p>Setzen Sie <code>SKIP_LETS_ENCRYPT=y</code> in "mailcow.conf" und erstellen Sie "acme-mailcow" neu, indem Sie <code>docker-compose up -d</code> ausführen.</p>
<h4 id="alle-namen-auer-mailcow_hostname-uberspringen">Alle Namen außer ${MAILCOW_HOSTNAME} überspringen<a class="headerlink" href="#alle-namen-auer-mailcow_hostname-uberspringen" title="Permanent link">&para;</a></h4> <h4 id="alle-namen-auer-mailcow_hostname-uberspringen">Alle Namen außer ${MAILCOW_HOSTNAME} überspringen<a class="headerlink" href="#alle-namen-auer-mailcow_hostname-uberspringen" title="Permanent link">&para;</a></h4>
<p>Fügen Sie <code>ONLY_MAILCOW_HOSTNAME=y</code> zu "mailcow.conf" hinzu und erstellen Sie "acme-mailcow" neu, indem Sie <code>docker compose up -d</code> ausführen.</p> <p>Fügen Sie <code>ONLY_MAILCOW_HOSTNAME=y</code> zu "mailcow.conf" hinzu und erstellen Sie "acme-mailcow" neu, indem Sie <code>docker-compose up -d</code> ausführen.</p>
<h3 id="das-lets-encrypt-subjectaltname-limit-von-100-domains">Das Let's Encrypt subjectAltName-Limit von 100 Domains<a class="headerlink" href="#das-lets-encrypt-subjectaltname-limit-von-100-domains" title="Permanent link">&para;</a></h3> <h3 id="das-lets-encrypt-subjectaltname-limit-von-100-domains">Das Let's Encrypt subjectAltName-Limit von 100 Domains<a class="headerlink" href="#das-lets-encrypt-subjectaltname-limit-von-100-domains" title="Permanent link">&para;</a></h3>
<p>Let's Encrypt hat derzeit <a href="https://letsencrypt.org/docs/rate-limits/">ein Limit von 100 Domainnamen pro Zertifikat</a>.</p> <p>Let's Encrypt hat derzeit <a href="https://letsencrypt.org/docs/rate-limits/">ein Limit von 100 Domainnamen pro Zertifikat</a>.</p>
<p>Standardmäßig erstellt "acme-mailcow" ein einzelnes SAN-Zertifikat für alle validierten Domains <p>Standardmäßig erstellt "acme-mailcow" ein einzelnes SAN-Zertifikat für alle validierten Domains
@ -2645,7 +2645,7 @@ Dies bietet beste Kompatibilität, bedeutet aber, dass das Let's Encrypt-Limit
<li>Begrenzungen: Ein Zertifikatsname <code>ADDITIONAL_SAN=test.example.com</code> wird als SAN zum Hauptzertifikat hinzugefügt. Ein separates Zertifikat/Schlüsselpaar wird für dieses Format <strong>nicht</strong> erzeugt.</li> <li>Begrenzungen: Ein Zertifikatsname <code>ADDITIONAL_SAN=test.example.com</code> wird als SAN zum Hauptzertifikat hinzugefügt. Ein separates Zertifikat/Schlüsselpaar wird für dieses Format <strong>nicht</strong> erzeugt.</li>
</ul> </ul>
<p>Postfix, Dovecot und Nginx werden dann diese Zertifikate mit SNI bedienen.</p> <p>Postfix, Dovecot und Nginx werden dann diese Zertifikate mit SNI bedienen.</p>
<p>Setzen Sie <code>ENABLE_SSL_SNI=y</code> in "mailcow.conf" und erstellen Sie "acme-mailcow" durch Ausführen von <code>docker compose up -d</code>.</p> <p>Setzen Sie <code>ENABLE_SSL_SNI=y</code> in "mailcow.conf" und erstellen Sie "acme-mailcow" durch Ausführen von <code>docker-compose up -d</code>.</p>
<div class="admonition warning"> <div class="admonition warning">
<p class="admonition-title">Warning</p> <p class="admonition-title">Warning</p>
<p>Nicht alle Clients unterstützen SNI, <a href="https://wiki.dovecot.org/SSL/SNIClientSupport">siehe Dovecot Dokumentation</a> oder <a href="https://en.wikipedia.org/wiki/Server_Name_Indication#Support">Wikipedia</a>. <p>Nicht alle Clients unterstützen SNI, <a href="https://wiki.dovecot.org/SSL/SNIClientSupport">siehe Dovecot Dokumentation</a> oder <a href="https://en.wikipedia.org/wiki/Server_Name_Indication#Support">Wikipedia</a>.
@ -2675,15 +2675,15 @@ docker restart $(docker ps -qaf name=dovecot-mailcow)
<p>Siehe <a href="../firststeps-rp#optional-post-hook-skript-fur-nicht-mailcow-acme-clients">Post-Hook-Skript für Nicht-Mailcow-ACME-Clients</a> für ein vollständiges Beispielskript.</p> <p>Siehe <a href="../firststeps-rp#optional-post-hook-skript-fur-nicht-mailcow-acme-clients">Post-Hook-Skript für Nicht-Mailcow-ACME-Clients</a> für ein vollständiges Beispielskript.</p>
<h3 id="test-gegen-das-acme-verzeichnis">Test gegen das ACME-Verzeichnis<a class="headerlink" href="#test-gegen-das-acme-verzeichnis" title="Permanent link">&para;</a></h3> <h3 id="test-gegen-das-acme-verzeichnis">Test gegen das ACME-Verzeichnis<a class="headerlink" href="#test-gegen-das-acme-verzeichnis" title="Permanent link">&para;</a></h3>
<p>Bearbeiten Sie <code>mailcow.conf</code> und fügen Sie <code>LE_STAGING=y</code> hinzu.</p> <p>Bearbeiten Sie <code>mailcow.conf</code> und fügen Sie <code>LE_STAGING=y</code> hinzu.</p>
<p>Führen Sie <code>docker compose up -d</code> aus, um Ihre Änderungen zu aktivieren.</p> <p>Führen Sie <code>docker-compose up -d</code> aus, um Ihre Änderungen zu aktivieren.</p>
<h3 id="benutzerdefinierte-verzeichnis-url">Benutzerdefinierte Verzeichnis-URL<a class="headerlink" href="#benutzerdefinierte-verzeichnis-url" title="Permanent link">&para;</a></h3> <h3 id="benutzerdefinierte-verzeichnis-url">Benutzerdefinierte Verzeichnis-URL<a class="headerlink" href="#benutzerdefinierte-verzeichnis-url" title="Permanent link">&para;</a></h3>
<p>Editieren Sie <code>mailcow.conf</code> und fügen Sie die entsprechende Verzeichnis-URL in die neue Variable <code>DIRECTORY_URL</code> ein:</p> <p>Editieren Sie <code>mailcow.conf</code> und fügen Sie die entsprechende Verzeichnis-URL in die neue Variable <code>DIRECTORY_URL</code> ein:</p>
<div class="highlight"><pre><span></span><code>DIRECTORY_URL=https://acme-custom-v9000.api.letsencrypt.org/directory <div class="highlight"><pre><span></span><code>DIRECTORY_URL=https://acme-custom-v9000.api.letsencrypt.org/directory
</code></pre></div> </code></pre></div>
<p>Sie können <code>LE_STAGING</code> nicht mit <code>DIRECTORY_URL</code> verwenden. Wenn beide gesetzt sind, wird nur <code>LE_STAGING</code> verwendet.</p> <p>Sie können <code>LE_STAGING</code> nicht mit <code>DIRECTORY_URL</code> verwenden. Wenn beide gesetzt sind, wird nur <code>LE_STAGING</code> verwendet.</p>
<p>Führen Sie <code>docker compose up -d</code> aus, um Ihre Änderungen zu aktivieren.</p> <p>Führen Sie <code>docker-compose up -d</code> aus, um Ihre Änderungen zu aktivieren.</p>
<h3 id="uberprufen-sie-ihre-konfiguration">Überprüfen Sie Ihre Konfiguration<a class="headerlink" href="#uberprufen-sie-ihre-konfiguration" title="Permanent link">&para;</a></h3> <h3 id="uberprufen-sie-ihre-konfiguration">Überprüfen Sie Ihre Konfiguration<a class="headerlink" href="#uberprufen-sie-ihre-konfiguration" title="Permanent link">&para;</a></h3>
<p>Führen Sie <code>docker compose logs acme-mailcow</code> aus, um herauszufinden, warum eine Validierung fehlschlägt.</p> <p>Führen Sie <code>docker-compose logs acme-mailcow</code> aus, um herauszufinden, warum eine Validierung fehlschlägt.</p>
<p>Um zu überprüfen, ob nginx das richtige Zertifikat verwendet, benutzen Sie einfach einen Browser Ihrer Wahl und überprüfen Sie das angezeigte Zertifikat.</p> <p>Um zu überprüfen, ob nginx das richtige Zertifikat verwendet, benutzen Sie einfach einen Browser Ihrer Wahl und überprüfen Sie das angezeigte Zertifikat.</p>
<p>Um das von Postfix, Dovecot und Nginx verwendete Zertifikat zu überprüfen, verwenden wir <code>openssl</code>:</p> <p>Um das von Postfix, Dovecot und Nginx verwendete Zertifikat zu überprüfen, verwenden wir <code>openssl</code>:</p>
<div class="highlight"><pre><span></span><code># Verbindung über SMTP (587) <div class="highlight"><pre><span></span><code># Verbindung über SMTP (587)
@ -2703,7 +2703,7 @@ bash helper-scripts/expiry-dates.sh
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2762,7 +2762,7 @@ nach der vollen Stunde auszuführen und am Ende einige nette Statistiken zu prot
oder OpenSSH wird sich weigern, den SSH-Schlüssel zu benutzen.</p> oder OpenSSH wird sich weigern, den SSH-Schlüssel zu benutzen.</p>
<h3 id="den-container-hochfahren">Den Container hochfahren<a class="headerlink" href="#den-container-hochfahren" title="Permanent link">&para;</a></h3> <h3 id="den-container-hochfahren">Den Container hochfahren<a class="headerlink" href="#den-container-hochfahren" title="Permanent link">&para;</a></h3>
<p>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:</p> <p>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:</p>
<div class="highlight"><pre><span></span><code>docker compose up -d <div class="highlight"><pre><span></span><code>docker-compose up -d
</code></pre></div> </code></pre></div>
<h2 id="wiederherstellung-von-einem-backup">Wiederherstellung von einem Backup<a class="headerlink" href="#wiederherstellung-von-einem-backup" title="Permanent link">&para;</a></h2> <h2 id="wiederherstellung-von-einem-backup">Wiederherstellung von einem Backup<a class="headerlink" href="#wiederherstellung-von-einem-backup" title="Permanent link">&para;</a></h2>
<p>Das Wiederherstellen eines Backups setzt voraus, dass Sie mit einer neuen Installation von mailcow beginnen, und dass Sie derzeit keine <p>Das Wiederherstellen eines Backups setzt voraus, dass Sie mit einer neuen Installation von mailcow beginnen, und dass Sie derzeit keine
@ -2783,7 +2783,7 @@ dieses Volume zu schreiben.</p>
<p>Bevor Sie eine Wiederherstellung durchführen, müssen Sie das vmail-Volume in <code>docker-compose.override.yml</code> beschreibbar machen, indem Sie das <p>Bevor Sie eine Wiederherstellung durchführen, müssen Sie das vmail-Volume in <code>docker-compose.override.yml</code> beschreibbar machen, indem Sie das
das <code>ro</code>-Flag aus dem Volume entfernen. das <code>ro</code>-Flag aus dem Volume entfernen.
Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup wiederherzustellen:</p> Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup wiederherzustellen:</p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> borgmatic-mailcow borgmatic extract --path mnt/source --archive latest <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> borgmatic-mailcow borgmatic extract --path mnt/source --archive latest
</code></pre></div> </code></pre></div>
<p>Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe <p>Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe
<a href="#auflistung-aller-verfugbaren-archive">Auflistung aller verfügbaren Archive</a>)</p> <a href="#auflistung-aller-verfugbaren-archive">Auflistung aller verfügbaren Archive</a>)</p>
@ -2793,7 +2793,7 @@ Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup
<p>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.</p> <p>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.</p>
</div> </div>
<p>Um die MySQL-Datenbank aus dem letzten Archiv wiederherzustellen, verwenden Sie diesen Befehl:</p> <p>Um die MySQL-Datenbank aus dem letzten Archiv wiederherzustellen, verwenden Sie diesen Befehl:</p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> borgmatic-mailcow borgmatic restore --archive latest <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> borgmatic-mailcow borgmatic restore --archive latest
</code></pre></div> </code></pre></div>
<p>Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe <p>Alternativ können Sie auch einen beliebigen Archivnamen aus der Liste der Archive angeben (siehe
<a href="#auflistung-aller-verfugbaren-archive">Auflistung aller verfügbaren Archive</a>)</p> <a href="#auflistung-aller-verfugbaren-archive">Auflistung aller verfügbaren Archive</a>)</p>
@ -2801,21 +2801,21 @@ Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup
<p>Nach der Wiederherstellung müssen Sie mailcow neu starten. Wenn Sie den SELinux-Erzwingungsmodus deaktiviert haben, wäre jetzt ein guter Zeitpunkt, um <p>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.</p> ihn wieder zu aktivieren.</p>
<p>Um mailcow neu zu starten, verwenden Sie den folgenden Befehl:</p> <p>Um mailcow neu zu starten, verwenden Sie den folgenden Befehl:</p>
<div class="highlight"><pre><span></span><code>docker compose down <span class="o">&amp;&amp;</span> docker compose up -d <div class="highlight"><pre><span></span><code>docker-compose down <span class="o">&amp;&amp;</span> docker-compose up -d
</code></pre></div> </code></pre></div>
<p>Wenn Sie SELinux verwenden, werden dadurch auch alle Dateien in Ihrem vmail-Volume neu benannt. Seien Sie geduldig, denn dies kann <p>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.</p> eine Weile dauern kann, wenn Sie viele Dateien haben.</p>
<h2 id="nutzliche-befehle">Nützliche Befehle<a class="headerlink" href="#nutzliche-befehle" title="Permanent link">&para;</a></h2> <h2 id="nutzliche-befehle">Nützliche Befehle<a class="headerlink" href="#nutzliche-befehle" title="Permanent link">&para;</a></h2>
<h3 id="manueller-archivierungslauf-mit-debugging-ausgabe">Manueller Archivierungslauf (mit Debugging-Ausgabe)<a class="headerlink" href="#manueller-archivierungslauf-mit-debugging-ausgabe" title="Permanent link">&para;</a></h3> <h3 id="manueller-archivierungslauf-mit-debugging-ausgabe">Manueller Archivierungslauf (mit Debugging-Ausgabe)<a class="headerlink" href="#manueller-archivierungslauf-mit-debugging-ausgabe" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> borgmatic-mailcow borgmatic -v <span class="m">2</span> <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> borgmatic-mailcow borgmatic -v <span class="m">2</span>
</code></pre></div> </code></pre></div>
<h3 id="auflistung-aller-verfugbaren-archive">Auflistung aller verfügbaren Archive<a class="headerlink" href="#auflistung-aller-verfugbaren-archive" title="Permanent link">&para;</a></h3> <h3 id="auflistung-aller-verfugbaren-archive">Auflistung aller verfügbaren Archive<a class="headerlink" href="#auflistung-aller-verfugbaren-archive" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> borgmatic-mailcow borgmatic list <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> borgmatic-mailcow borgmatic list
</code></pre></div> </code></pre></div>
<h3 id="sperre-aufheben">Sperre aufheben<a class="headerlink" href="#sperre-aufheben" title="Permanent link">&para;</a></h3> <h3 id="sperre-aufheben">Sperre aufheben<a class="headerlink" href="#sperre-aufheben" title="Permanent link">&para;</a></h3>
<p>Wenn borg während eines Archivierungslaufs unterbrochen wird, hinterlässt es eine veraltete Sperre, die gelöscht werden muss, bevor <p>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:</p> neue Operationen durchgeführt werden können:</p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> borgmatic-mailcow borg break-lock user@rsync.net:mailcow <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> borgmatic-mailcow borg break-lock user@rsync.net:mailcow
</code></pre></div> </code></pre></div>
<p>Wobei <code>user@rsync.net:mailcow</code> die URI zu Ihrem Repository ist.</p> <p>Wobei <code>user@rsync.net:mailcow</code> die URI zu Ihrem Repository ist.</p>
<p>Jetzt wäre ein guter Zeitpunkt, einen manuellen Archivierungslauf durchzuführen, um sicherzustellen, dass er erfolgreich durchgeführt werden kann.</p> <p>Jetzt wäre ein guter Zeitpunkt, einen manuellen Archivierungslauf durchzuführen, um sicherzustellen, dass er erfolgreich durchgeführt werden kann.</p>
@ -2825,7 +2825,7 @@ Schlüsseldateien werden erzeugt, wenn Sie das Repository initialisieren. Die <c
Repository, so dass eine manuelle Sicherung nicht so wichtig ist.</p> Repository, so dass eine manuelle Sicherung nicht so wichtig ist.</p>
<p>Beachten Sie, dass Sie in beiden Fällen auch die Passphrase haben müssen, um die Archive zu entschlüsseln.</p> <p>Beachten Sie, dass Sie in beiden Fällen auch die Passphrase haben müssen, um die Archive zu entschlüsseln.</p>
<p>Um die <code>keyfile</code> zu holen, führen Sie aus:</p> <p>Um die <code>keyfile</code> zu holen, führen Sie aus:</p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> borgmatic-mailcow borg key <span class="nb">export</span> --paper user@rsync.net:mailcow <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> borgmatic-mailcow borg key <span class="nb">export</span> --paper user@rsync.net:mailcow
</code></pre></div> </code></pre></div>
<p>Wobei <code>user@rsync.net:mailcow</code> die URI zu Ihrem Repository ist.</p> <p>Wobei <code>user@rsync.net:mailcow</code> die URI zu Ihrem Repository ist.</p>
@ -2834,7 +2834,7 @@ Repository, so dass eine manuelle Sicherung nicht so wichtig ist.</p>
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2384,8 +2384,8 @@ services:
<p>3. Öffne <code>mailcow.conf</code> und definiere den Port Bind, den Gitea für SSH verwenden soll. Beispiel:</p> <p>3. Öffne <code>mailcow.conf</code> und definiere den Port Bind, den Gitea für SSH verwenden soll. Beispiel:</p>
<div class="highlight"><pre><span></span><code>GITEA_SSH_PORT=127.0.0.1:4000 <div class="highlight"><pre><span></span><code>GITEA_SSH_PORT=127.0.0.1:4000
</code></pre></div> </code></pre></div>
<p>5. Führen Sie <code>docker compose up -d</code> aus, um den Gitea-Container hochzufahren und führen Sie anschließend <code>docker compose restart nginx-mailcow</code> aus.</p> <p>5. Führen Sie <code>docker-compose up -d</code> aus, um den Gitea-Container hochzufahren und führen Sie anschließend <code>docker-compose restart nginx-mailcow</code> aus.</p>
<p>6. Wenn Sie mailcow zu https gezwungen haben, führen Sie Schritt 9 aus und starten Sie gitea mit <code>docker compose restart gitea-mailcow</code> neu. Fahren Sie mit Schritt 7 fort (Denken Sie daran, https anstelle von http zu verwenden, <code>https://mx.example.org/gitea/</code> </p> <p>6. Wenn Sie mailcow zu https gezwungen haben, führen Sie Schritt 9 aus und starten Sie gitea mit <code>docker-compose restart gitea-mailcow</code> neu. Fahren Sie mit Schritt 7 fort (Denken Sie daran, https anstelle von http zu verwenden, <code>https://mx.example.org/gitea/</code> </p>
<p>7. Öffnen Sie <code>http://${MAILCOW_HOSTNAME}/gitea/</code>, zum Beispiel <code>http://mx.example.org/gitea/</code>. Für die Datenbankdetails stellen Sie <code>mysql</code> als Datenbankhost ein. Verwenden Sie den in mailcow.conf gefundenen Wert von DBNAME als Datenbankname, DBUSER als Datenbankbenutzer und DBPASS als Datenbankpasswort.</p> <p>7. Öffnen Sie <code>http://${MAILCOW_HOSTNAME}/gitea/</code>, zum Beispiel <code>http://mx.example.org/gitea/</code>. Für die Datenbankdetails stellen Sie <code>mysql</code> als Datenbankhost ein. Verwenden Sie den in mailcow.conf gefundenen Wert von DBNAME als Datenbankname, DBUSER als Datenbankbenutzer und DBPASS als Datenbankpasswort.</p>
<p>8. Sobald die Installation abgeschlossen ist, loggen Sie sich als Administrator ein und setzen Sie "Einstellungen" -&gt; "Autorisierung" -&gt; "SMTP aktivieren". SMTP-Host sollte <code>postfix</code> mit Port <code>587</code> sein, setzen Sie <code>Skip TLS Verify</code>, da wir ein nicht gelistetes SAN verwenden ("postfix" ist höchstwahrscheinlich nicht Teil Ihres Zertifikats).</p> <p>8. Sobald die Installation abgeschlossen ist, loggen Sie sich als Administrator ein und setzen Sie "Einstellungen" -&gt; "Autorisierung" -&gt; "SMTP aktivieren". SMTP-Host sollte <code>postfix</code> mit Port <code>587</code> sein, setzen Sie <code>Skip TLS Verify</code>, da wir ein nicht gelistetes SAN verwenden ("postfix" ist höchstwahrscheinlich nicht Teil Ihres Zertifikats).</p>
<p>9. Erstellen Sie <code>data/gitea/gitea/conf/app.ini</code> und setzen Sie die folgenden Werte. Sie können <a href="https://docs.gitea.io/en-us/config-cheat-sheet/">gitea cheat sheet, leider bisher nur in Englisch verfügbar</a> für deren Bedeutung und andere mögliche Werte konsultieren.</p> <p>9. Erstellen Sie <code>data/gitea/gitea/conf/app.ini</code> und setzen Sie die folgenden Werte. Sie können <a href="https://docs.gitea.io/en-us/config-cheat-sheet/">gitea cheat sheet, leider bisher nur in Englisch verfügbar</a> für deren Bedeutung und andere mögliche Werte konsultieren.</p>
@ -2397,14 +2397,14 @@ SSH_PORT = 4000
# Für MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (und Standard-Ports für HTTPS), setzen: # Für MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (und Standard-Ports für HTTPS), setzen:
ROOT_URL = https://mx.example.org/gitea/ ROOT_URL = https://mx.example.org/gitea/
</code></pre></div> </code></pre></div>
<p>10. Starten Sie gitea neu mit <code>docker compose restart gitea-mailcow</code>. Ihre Nutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten anzumelden.</p> <p>10. Starten Sie gitea neu mit <code>docker-compose restart gitea-mailcow</code>. Ihre Nutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten anzumelden.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2384,7 +2384,7 @@ services:
<p>3. Öffne <code>mailcow.conf</code> und definiere die Bindung, die Gogs für SSH verwenden soll. Beispiel:</p> <p>3. Öffne <code>mailcow.conf</code> und definiere die Bindung, die Gogs für SSH verwenden soll. Beispiel:</p>
<div class="highlight"><pre><span></span><code>GOGS_SSH_PORT=127.0.0.1:4000 <div class="highlight"><pre><span></span><code>GOGS_SSH_PORT=127.0.0.1:4000
</code></pre></div> </code></pre></div>
<p>5. Führen Sie <code>docker compose up -d</code> aus, um den Gogs-Container hochzufahren und führen Sie anschließend <code>docker compose restart nginx-mailcow</code> aus.</p> <p>5. Führen Sie <code>docker-compose up -d</code> aus, um den Gogs-Container hochzufahren und führen Sie anschließend <code>docker-compose restart nginx-mailcow</code> aus.</p>
<p>6. Öffnen Sie <code>http://${MAILCOW_HOSTNAME}/gogs/</code>, zum Beispiel <code>http://mx.example.org/gogs/</code>. Für Datenbank-Details setzen Sie <code>mysql</code> als Datenbank-Host. Verwenden Sie den in mailcow.conf gefundenen Wert von DBNAME als Datenbankname, DBUSER als Datenbankbenutzer und DBPASS als Datenbankpasswort.</p> <p>6. Öffnen Sie <code>http://${MAILCOW_HOSTNAME}/gogs/</code>, zum Beispiel <code>http://mx.example.org/gogs/</code>. Für Datenbank-Details setzen Sie <code>mysql</code> als Datenbank-Host. Verwenden Sie den in mailcow.conf gefundenen Wert von DBNAME als Datenbankname, DBUSER als Datenbankbenutzer und DBPASS als Datenbankpasswort.</p>
<p>7. Sobald die Installation abgeschlossen ist, loggen Sie sich als Administrator ein und setzen Sie "Einstellungen" -&gt; "Autorisierung" -&gt; "SMTP aktivieren". SMTP-Host sollte <code>postfix</code> mit Port <code>587</code> sein, setzen Sie <code>Skip TLS Verify</code>, da wir ein nicht gelistetes SAN verwenden ("postfix" ist höchstwahrscheinlich nicht Teil Ihres Zertifikats).</p> <p>7. Sobald die Installation abgeschlossen ist, loggen Sie sich als Administrator ein und setzen Sie "Einstellungen" -&gt; "Autorisierung" -&gt; "SMTP aktivieren". SMTP-Host sollte <code>postfix</code> mit Port <code>587</code> sein, setzen Sie <code>Skip TLS Verify</code>, da wir ein nicht gelistetes SAN verwenden ("postfix" ist höchstwahrscheinlich nicht Teil Ihres Zertifikats).</p>
<p>8. Erstellen Sie <code>data/gogs/gogs/conf/app.ini</code> und setzen Sie die folgenden Werte. Sie können <a href="https://gogs.io/docs/advanced/configuration_cheat_sheet">Gogs cheat sheet</a> für ihre Bedeutung und andere mögliche Werte konsultieren.</p> <p>8. Erstellen Sie <code>data/gogs/gogs/conf/app.ini</code> und setzen Sie die folgenden Werte. Sie können <a href="https://gogs.io/docs/advanced/configuration_cheat_sheet">Gogs cheat sheet</a> für ihre Bedeutung und andere mögliche Werte konsultieren.</p>
@ -2396,14 +2396,14 @@ SSH_PORT = 4000
# Für MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (und Standard-Ports für HTTPS), setzen: # Für MAILCOW_HOSTNAME=mx.example.org in mailcow.conf (und Standard-Ports für HTTPS), setzen:
ROOT_URL = https://mx.example.org/gogs/ ROOT_URL = https://mx.example.org/gogs/
</code></pre></div> </code></pre></div>
<p>9. Starten Sie Gogs neu mit <code>docker compose restart gogs-mailcow</code>. Ihre Benutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten einzuloggen.</p> <p>9. Starten Sie Gogs neu mit <code>docker-compose restart gogs-mailcow</code>. Ihre Benutzer sollten in der Lage sein, sich mit von mailcow verwalteten Konten einzuloggen.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2829,7 +2829,7 @@ certbot certonly -d MAILMAN_DOMAIN
</code></pre></div> </code></pre></div>
<h3 id="installieren-sie-mailcow-mit-mailman-integration">Installieren Sie <em>mailcow</em> mit <em>Mailman</em> Integration<a class="headerlink" href="#installieren-sie-mailcow-mit-mailman-integration" title="Permanent link">&para;</a></h3> <h3 id="installieren-sie-mailcow-mit-mailman-integration">Installieren Sie <em>mailcow</em> mit <em>Mailman</em> Integration<a class="headerlink" href="#installieren-sie-mailcow-mit-mailman-integration" title="Permanent link">&para;</a></h3>
<h4 id="installieren-sie-mailcow">Installieren Sie mailcow<a class="headerlink" href="#installieren-sie-mailcow" title="Permanent link">&para;</a></h4> <h4 id="installieren-sie-mailcow">Installieren Sie mailcow<a class="headerlink" href="#installieren-sie-mailcow" title="Permanent link">&para;</a></h4>
<p>Folgen Sie der <a href="../../i_u_m/i_u_m_install/">mailcow installation</a>. <strong>Schritt 5 auslassen und nicht mit <code>docker compose</code> starten!</strong></p> <p>Folgen Sie der <a href="../../i_u_m/i_u_m_install/">mailcow installation</a>. <strong>Schritt 5 auslassen und nicht mit <code>docker-compose</code> starten!</strong></p>
<h4 id="mailcow-konfigurieren">Mailcow konfigurieren<a class="headerlink" href="#mailcow-konfigurieren" title="Permanent link">&para;</a></h4> <h4 id="mailcow-konfigurieren">Mailcow konfigurieren<a class="headerlink" href="#mailcow-konfigurieren" title="Permanent link">&para;</a></h4>
<p>Dies ist auch <strong>Schritt 4</strong> in der offiziellen <em>mailcow-Installation</em> (<code>nano mailcow.conf</code>). Passen Sie also Ihre Bedürfnisse an und ändern Sie die folgenden Variablen:</p> <p>Dies ist auch <strong>Schritt 4</strong> in der offiziellen <em>mailcow-Installation</em> (<code>nano mailcow.conf</code>). Passen Sie also Ihre Bedürfnisse an und ändern Sie die folgenden Variablen:</p>
<div class="highlight"><pre><span></span><code>HTTP_PORT=18080 # verwenden Sie nicht 8080, da mailman es braucht <div class="highlight"><pre><span></span><code>HTTP_PORT=18080 # verwenden Sie nicht 8080, da mailman es braucht
@ -2913,7 +2913,7 @@ cd docker-mailman
<p>Erstellen Sie einen langen Schlüssel für <em>Hyperkitty</em>, z.B. mit dem Linux-Befehl <code>cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo</code>. Speichern Sie diesen Schlüssel vorerst als HYPERKITTY_KEY.</p> <p>Erstellen Sie einen langen Schlüssel für <em>Hyperkitty</em>, z.B. mit dem Linux-Befehl <code>cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo</code>. Speichern Sie diesen Schlüssel vorerst als HYPERKITTY_KEY.</p>
<p>Erstellen Sie ein langes Passwort für die Datenbank, z. B. mit dem Linux-Befehl <code>cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo</code>. Speichern Sie dieses Passwort zunächst als DBPASS.</p> <p>Erstellen Sie ein langes Passwort für die Datenbank, z. B. mit dem Linux-Befehl <code>cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo</code>. Speichern Sie dieses Passwort zunächst als DBPASS.</p>
<p>Erstellen Sie einen langen Schlüssel für <em>Django</em>, z. B. mit dem Linux-Befehl <code>cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo</code>. Speichern Sie diesen Schlüssel für einen Moment als DJANGO_KEY.</p> <p>Erstellen Sie einen langen Schlüssel für <em>Django</em>, z. B. mit dem Linux-Befehl <code>cat /dev/urandom | tr -dc a-zA-Z0-9 | head -c30; echo</code>. Speichern Sie diesen Schlüssel für einen Moment als DJANGO_KEY.</p>
<p>Erstellen Sie die Datei <code>/opt/docker-mailman/docker compose.override.yaml</code> und ersetzen Sie <code>HYPERKITTY_KEY</code>, <code>DBPASS</code> und <code>DJANGO_KEY</code> durch die generierten Werte:</p> <p>Erstellen Sie die Datei <code>/opt/docker-mailman/docker-compose.override.yaml</code> und ersetzen Sie <code>HYPERKITTY_KEY</code>, <code>DBPASS</code> und <code>DJANGO_KEY</code> durch die generierten Werte:</p>
<div class="highlight"><pre><span></span><code>version: &#39;2&#39; <div class="highlight"><pre><span></span><code>version: &#39;2&#39;
services: services:
@ -2972,11 +2972,11 @@ a2ensite mailman.conf
systemctl restart apache2 systemctl restart apache2
cd /opt/docker-mailman cd /opt/docker-mailman
docker compose pull docker-compose pull
docker compose up -d docker-compose up -d
cd /opt/mailcow-dockerized/ cd /opt/mailcow-dockerized/
docker compose pull docker-compose pull
./renew-ssl.sh ./renew-ssl.sh
</code></pre></div> </code></pre></div>
<p><strong>Warten Sie ein paar Minuten!</strong> Die Container müssen ihre Datenbanken und Konfigurationsdateien erstellen. Dies kann bis zu 1 Minute und mehr dauern.</p> <p><strong>Warten Sie ein paar Minuten!</strong> Die Container müssen ihre Datenbanken und Konfigurationsdateien erstellen. Dies kann bis zu 1 Minute und mehr dauern.</p>
@ -2984,7 +2984,7 @@ docker compose pull
<h3 id="neue-listen-werden-von-postfix-nicht-sofort-erkannt">Neue Listen werden von Postfix nicht sofort erkannt<a class="headerlink" href="#neue-listen-werden-von-postfix-nicht-sofort-erkannt" title="Permanent link">&para;</a></h3> <h3 id="neue-listen-werden-von-postfix-nicht-sofort-erkannt">Neue Listen werden von Postfix nicht sofort erkannt<a class="headerlink" href="#neue-listen-werden-von-postfix-nicht-sofort-erkannt" title="Permanent link">&para;</a></h3>
<p>Wenn man eine neue Liste anlegt und versucht, sofort eine E-Mail zu versenden, antwortet <em>postfix</em> mit <code>Benutzer existiert nicht</code>, weil <em>postfix</em> die Liste noch nicht an <em>Mailman</em> übergeben hat. Die Konfiguration unter <code>/opt/mailman/core/var/data/postfix_lmtp</code> wird nicht sofort aktualisiert. Wenn Sie die Liste sofort benötigen, starten Sie <em>postifx</em> manuell neu:</p> <p>Wenn man eine neue Liste anlegt und versucht, sofort eine E-Mail zu versenden, antwortet <em>postfix</em> mit <code>Benutzer existiert nicht</code>, weil <em>postfix</em> die Liste noch nicht an <em>Mailman</em> übergeben hat. Die Konfiguration unter <code>/opt/mailman/core/var/data/postfix_lmtp</code> wird nicht sofort aktualisiert. Wenn Sie die Liste sofort benötigen, starten Sie <em>postifx</em> manuell neu:</p>
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
docker compose restart postfix-mailcow docker-compose restart postfix-mailcow
</code></pre></div> </code></pre></div>
<h2 id="update">Update<a class="headerlink" href="#update" title="Permanent link">&para;</a></h2> <h2 id="update">Update<a class="headerlink" href="#update" title="Permanent link">&para;</a></h2>
<p><strong>mailcow</strong> hat sein eigenes Update-Skript in <code>/opt/mailcow-dockerized/update.sh</code>, <a href="../../i_u_m/i_u_m_update/">siehe die Dokumentation</a>.</p> <p><strong>mailcow</strong> hat sein eigenes Update-Skript in <code>/opt/mailcow-dockerized/update.sh</code>, <a href="../../i_u_m/i_u_m_update/">siehe die Dokumentation</a>.</p>
@ -3006,7 +3006,7 @@ docker compose restart postfix-mailcow
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2469,7 +2469,7 @@
<p>Nextcloud kann mit dem <a href="https://github.com/mailcow/mailcow-dockerized/raw/master/helper-scripts/nextcloud.sh">helper script</a>, das in mailcow enthalten ist, eingerichtet (Parameter <code>-i</code>) und entfernt (Parameter <code>-p</code>) werden. Um Nextcloud zu installieren, navigieren Sie einfach zu Ihrem mailcow-dockerized Root-Ordner und führen Sie das Helper-Skript wie folgt aus:</p> <p>Nextcloud kann mit dem <a href="https://github.com/mailcow/mailcow-dockerized/raw/master/helper-scripts/nextcloud.sh">helper script</a>, das in mailcow enthalten ist, eingerichtet (Parameter <code>-i</code>) und entfernt (Parameter <code>-p</code>) werden. Um Nextcloud zu installieren, navigieren Sie einfach zu Ihrem mailcow-dockerized Root-Ordner und führen Sie das Helper-Skript wie folgt aus:</p>
<p><code>./helper-scripts/nextcloud.sh -i</code></p> <p><code>./helper-scripts/nextcloud.sh -i</code></p>
<p>Für den Fall, dass Sie das Passwort (z.B. für admin) vergessen haben und kein neues anfordern können [über den Passwort-Reset-Link auf dem Login-Bildschirm] (<a href="https://docs.nextcloud.com/server/20/admin_manual/configuration_user/reset_admin_password.html?highlight=reset">https://docs.nextcloud.com/server/20/admin_manual/configuration_user/reset_admin_password.html?highlight=reset</a>), können Sie durch den Aufruf des Helper-Skripts mit <code>-r</code> als Parameter ein neues Passwort setzen. Verwenden Sie diese Option nur, wenn Ihre Nextcloud nicht so konfiguriert ist, dass Sie mailcow zur Authentifizierung verwendet, wie im nächsten Abschnitt beschrieben.</p> <p>Für den Fall, dass Sie das Passwort (z.B. für admin) vergessen haben und kein neues anfordern können [über den Passwort-Reset-Link auf dem Login-Bildschirm] (<a href="https://docs.nextcloud.com/server/20/admin_manual/configuration_user/reset_admin_password.html?highlight=reset">https://docs.nextcloud.com/server/20/admin_manual/configuration_user/reset_admin_password.html?highlight=reset</a>), können Sie durch den Aufruf des Helper-Skripts mit <code>-r</code> als Parameter ein neues Passwort setzen. Verwenden Sie diese Option nur, wenn Ihre Nextcloud nicht so konfiguriert ist, dass Sie mailcow zur Authentifizierung verwendet, wie im nächsten Abschnitt beschrieben.</p>
<p>Damit mailcow ein Zertifikat für die Nextcloud Domain generieren kann, muss die Domain unter welcher die Nextcloud später erreichbar sein soll als ADDITIONAL_SAN in die mailcow.conf hinzufügt werden und <code>docker compose up -d</code> zur Übernahme ausgeführt werden. Für weitere Informationen siehe: <a href="../../post_installation/firststeps-ssl/">Erweitertes SSL</a>.</p> <p>Damit mailcow ein Zertifikat für die Nextcloud Domain generieren kann, muss die Domain unter welcher die Nextcloud später erreichbar sein soll als ADDITIONAL_SAN in die mailcow.conf hinzufügt werden und <code>docker-compose up -d</code> zur Übernahme ausgeführt werden. Für weitere Informationen siehe: <a href="../../post_installation/firststeps-ssl/">Erweitertes SSL</a>.</p>
<h2 id="hintergrund-aufgaben">Hintergrund-Aufgaben<a class="headerlink" href="#hintergrund-aufgaben" title="Permanent link">&para;</a></h2> <h2 id="hintergrund-aufgaben">Hintergrund-Aufgaben<a class="headerlink" href="#hintergrund-aufgaben" title="Permanent link">&para;</a></h2>
<p>Zur Verwendung der empfohlenen Einstellung (Cron) zur Verarbeitung der Hintergrund-Aufgaben müssen in der <code>docker-compose.override.yml</code> folgende Zeilen <p>Zur Verwendung der empfohlenen Einstellung (Cron) zur Verarbeitung der Hintergrund-Aufgaben müssen in der <code>docker-compose.override.yml</code> folgende Zeilen
hinzugefügt werden:</p> hinzugefügt werden:</p>
@ -2481,9 +2481,9 @@ services:
ofelia.job-exec.nextcloud-cron.schedule: &quot;@every 5m&quot; ofelia.job-exec.nextcloud-cron.schedule: &quot;@every 5m&quot;
ofelia.job-exec.nextcloud-cron.command: &quot;su www-data -s /bin/bash -c \&quot;/usr/local/bin/php -f /web/nextcloud/cron.php\&quot;&quot; ofelia.job-exec.nextcloud-cron.command: &quot;su www-data -s /bin/bash -c \&quot;/usr/local/bin/php -f /web/nextcloud/cron.php\&quot;&quot;
</code></pre></div> </code></pre></div>
<p>Nachdem diese Zeilen hinzugefügt wurden muss <code>docker compose up -d</code> ausgeführt werden, um das Docker Image mit den entsprechenden Labels zu versehen. Danach muss <p>Nachdem diese Zeilen hinzugefügt wurden muss <code>docker-compose up -d</code> 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 <code>docker compose restart ofelia-mailcow</code> ausgeführt. Zur zudem der docker scheduler neu gestartet werden, um den neuen Job zu registrieren. Dazu wird <code>docker-compose restart ofelia-mailcow</code> ausgeführt. Zur
Überprüfung, ob die <code>ofelia</code> Konfiguration korrekt ist geladen wurde, kann mittels <code>docker compose logs ofelia-mailcow</code> nach einer Zeile mit dem Inhalt Überprüfung, ob die <code>ofelia</code> Konfiguration korrekt ist geladen wurde, kann mittels <code>docker-compose logs ofelia-mailcow</code> nach einer Zeile mit dem Inhalt
<code>New job registered "nextcloud-cron" - ...</code> gesucht werden.</p> <code>New job registered "nextcloud-cron" - ...</code> gesucht werden.</p>
<p>Hierdurch wird alle 5 Minuten die Hintergrundverarbeitung gestartet. Da die Ausführung selbst keine Ausgabe liefert, kann die korrekte Funktionsweise in den <p>Hierdurch wird alle 5 Minuten die Hintergrundverarbeitung gestartet. Da die Ausführung selbst keine Ausgabe liefert, kann die korrekte Funktionsweise in den
Grundeinstellungen von Nextcloud überprüft werden. Hier wird automatisch mit der ersten Ausführung die Hintergrund-Aufgaben Verarbeitung auf <code>(X) Cron</code> gesetzt Grundeinstellungen von Nextcloud überprüft werden. Hier wird automatisch mit der ersten Ausführung die Hintergrund-Aufgaben Verarbeitung auf <code>(X) Cron</code> gesetzt
@ -2532,13 +2532,13 @@ services:
<hr /> <hr />
<p>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.</p> <p>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.</p>
<p>1. Klicken Sie auf die Schaltfläche in der oberen rechten Ecke und wählen Sie <em>Apps</em>. Scrollen Sie nach unten zur App <em>Externe Benutzerauthentifizierung</em> und klicken Sie daneben auf <em>Entfernen</em>. <p>1. Klicken Sie auf die Schaltfläche in der oberen rechten Ecke und wählen Sie <em>Apps</em>. Scrollen Sie nach unten zur App <em>Externe Benutzerauthentifizierung</em> und klicken Sie daneben auf <em>Entfernen</em>.
2. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie <code>source mailcow.conf &amp;&amp; docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME</code> ausführen): 2. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie <code>source mailcow.conf &amp;&amp; docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME</code> ausführen):
<div class="highlight"><pre><span></span><code>INSERT INTO nc_users (uid, uid_lower) SELECT DISTINCT uid, LOWER(uid) FROM nc_users_external; <div class="highlight"><pre><span></span><code>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(&quot;Mailcow-&quot;, uid) FROM nc_users_external; INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT(&quot;Mailcow-&quot;, uid) FROM nc_users_external;
</code></pre></div></p> </code></pre></div></p>
<hr /> <hr />
<p>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.</p> <p>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.</p>
<p>1. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie <code>source mailcow.conf &amp;&amp; docker compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME</code> ausführen): <p>1. Führen Sie die folgenden Abfragen in Ihrer Nextcloud-Datenbank aus (wenn Sie Nextcloud mit dem Skript von mailcow einrichten, können Sie <code>source mailcow.conf &amp;&amp; docker-compose exec mysql-mailcow mysql -u$DBUSER -p$DBPASS $DBNAME</code> ausführen):
<div class="highlight"><pre><span></span><code>INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT(&quot;Mailcow-&quot;, uid) FROM nc_users; <div class="highlight"><pre><span></span><code>INSERT INTO nc_sociallogin_connect (uid, identifier) SELECT DISTINCT uid, CONCAT(&quot;Mailcow-&quot;, uid) FROM nc_users;
</code></pre></div></p> </code></pre></div></p>
<hr /> <hr />
@ -2558,14 +2558,14 @@ Es wird angezeigt, welche Befehle ausgeführt werden müssen, diese müssen im p
), ),
</code></pre></div> </code></pre></div>
<p>Nachdem die Änderungen vorgenommen wurden, muss der nginx-Container neu gestartet werden. <p>Nachdem die Änderungen vorgenommen wurden, muss der nginx-Container neu gestartet werden.
<code>docker compose restart nginx-mailcow</code></p> <code>docker-compose restart nginx-mailcow</code></p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2410,7 +2410,7 @@ map $http_upgrade $connection_upgrade {
} }
</code></pre></div></p> </code></pre></div></p>
<p>3. Übernehmen Sie Ihre Änderungen: <p>3. Übernehmen Sie Ihre Änderungen:
<div class="highlight"><pre><span></span><code>docker compose up -d &amp;&amp; docker compose restart nginx-mailcow <div class="highlight"><pre><span></span><code>docker-compose up -d &amp;&amp; docker-compose restart nginx-mailcow
</code></pre></div></p> </code></pre></div></p>
<p>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 <strong>admin</strong> Account anzugeben. Nachdem Sie Ihr Passwort eingegeben haben, können Sie sich mit der Portainer UI verbinden.</p> <p>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 <strong>admin</strong> Account anzugeben. Nachdem Sie Ihr Passwort eingegeben haben, können Sie sich mit der Portainer UI verbinden.</p>
@ -2419,7 +2419,7 @@ map $http_upgrade $connection_upgrade {
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2668,8 +2668,8 @@ services:
<li><code>data/web/rc-auth.php</code></li> <li><code>data/web/rc-auth.php</code></li>
</ul> </ul>
<p>Starten Sie schließlich mailcow neu</p> <p>Starten Sie schließlich mailcow neu</p>
<div class="highlight"><pre><span></span><code>docker compose down <div class="highlight"><pre><span></span><code>docker-compose down
docker compose up -d docker-compose up -d
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2677,7 +2677,7 @@ docker compose up -d
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2445,7 +2445,7 @@ Dazu wird ein zusätzlicher Link zu SOGo in der Mailbox-Liste (mailcow UI) angez
<div class="highlight"><pre><span></span><code>ALLOW_ADMIN_EMAIL_LOGIN=y <div class="highlight"><pre><span></span><code>ALLOW_ADMIN_EMAIL_LOGIN=y
</code></pre></div> </code></pre></div>
und die betroffenen Container neu erstellen mit und die betroffenen Container neu erstellen mit
<div class="highlight"><pre><span></span><code>docker compose up -d <div class="highlight"><pre><span></span><code>docker-compose up -d
</code></pre></div></p> </code></pre></div></p>
<h2 id="nachteile-bei-aktivierung">Nachteile bei Aktivierung<a class="headerlink" href="#nachteile-bei-aktivierung" title="Permanent link">&para;</a></h2> <h2 id="nachteile-bei-aktivierung">Nachteile bei Aktivierung<a class="headerlink" href="#nachteile-bei-aktivierung" title="Permanent link">&para;</a></h2>
<ul> <ul>
@ -2479,7 +2479,7 @@ In den meisten Fällen sollte dies nicht spürbar sein, aber Sie sollten es im H
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2491,16 +2491,16 @@
<h2 id="anhangen-eines-containers-an-ihre-shell">Anhängen eines Containers an Ihre Shell<a class="headerlink" href="#anhangen-eines-containers-an-ihre-shell" title="Permanent link">&para;</a></h2> <h2 id="anhangen-eines-containers-an-ihre-shell">Anhängen eines Containers an Ihre Shell<a class="headerlink" href="#anhangen-eines-containers-an-ihre-shell" title="Permanent link">&para;</a></h2>
<p>Um einen Container an Ihre Shell anzuhängen, können Sie einfach folgendes ausführen</p> <p>Um einen Container an Ihre Shell anzuhängen, können Sie einfach folgendes ausführen</p>
<div class="highlight"><pre><span></span><code>docker compose exec $Dienst_Name /bin/bash <div class="highlight"><pre><span></span><code>docker-compose exec $Dienst_Name /bin/bash
</code></pre></div> </code></pre></div>
<h3 id="verbindung-zu-diensten-herstellen">Verbindung zu Diensten herstellen<a class="headerlink" href="#verbindung-zu-diensten-herstellen" title="Permanent link">&para;</a></h3> <h3 id="verbindung-zu-diensten-herstellen">Verbindung zu Diensten herstellen<a class="headerlink" href="#verbindung-zu-diensten-herstellen" title="Permanent link">&para;</a></h3>
<p>Wenn Sie sich direkt mit einem Dienst / einer Anwendung verbinden wollen, ist es immer eine gute Idee, <code>source mailcow.conf</code> zu benutzen, um alle relevanten Variablen in Ihre Umgebung zu bekommen.</p> <p>Wenn Sie sich direkt mit einem Dienst / einer Anwendung verbinden wollen, ist es immer eine gute Idee, <code>source mailcow.conf</code> zu benutzen, um alle relevanten Variablen in Ihre Umgebung zu bekommen.</p>
<h4 id="mysql">MySQL<a class="headerlink" href="#mysql" title="Permanent link">&para;</a></h4> <h4 id="mysql">MySQL<a class="headerlink" href="#mysql" title="Permanent link">&para;</a></h4>
<div class="highlight"><pre><span></span><code>Quelle mailcow.conf <div class="highlight"><pre><span></span><code>Quelle mailcow.conf
docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
</code></pre></div> </code></pre></div>
<h4 id="redis">Redis<a class="headerlink" href="#redis" title="Permanent link">&para;</a></h4> <h4 id="redis">Redis<a class="headerlink" href="#redis" title="Permanent link">&para;</a></h4>
<div class="highlight"><pre><span></span><code>docker compose exec redis-mailcow redis-cli <div class="highlight"><pre><span></span><code>docker-compose exec redis-mailcow redis-cli
</code></pre></div> </code></pre></div>
<h2 id="dienstbeschreibungen">Dienstbeschreibungen<a class="headerlink" href="#dienstbeschreibungen" title="Permanent link">&para;</a></h2> <h2 id="dienstbeschreibungen">Dienstbeschreibungen<a class="headerlink" href="#dienstbeschreibungen" title="Permanent link">&para;</a></h2>
<p>Hier ist eine kurze Übersicht, welcher Container / Dienst was macht:</p> <p>Hier ist eine kurze Übersicht, welcher Container / Dienst was macht:</p>
@ -2584,7 +2584,7 @@ docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -810,7 +810,7 @@
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#docker-compose-wirft-seltsame-fehler-aus" class="md-nav__link"> <a href="#docker-compose-wirft-seltsame-fehler-aus" class="md-nav__link">
docker compose wirft seltsame Fehler aus. docker-compose wirft seltsame Fehler aus.
</a> </a>
</li> </li>
@ -2461,7 +2461,7 @@
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#docker-compose-wirft-seltsame-fehler-aus" class="md-nav__link"> <a href="#docker-compose-wirft-seltsame-fehler-aus" class="md-nav__link">
docker compose wirft seltsame Fehler aus. docker-compose wirft seltsame Fehler aus.
</a> </a>
</li> </li>
@ -2538,14 +2538,14 @@ Escape-Zeichen ist &#39;^]&#39;.
</code></pre></div> </code></pre></div>
<h2 id="meine-mails-werden-als-spam-identifiziert">Meine Mails werden als Spam identifiziert<a class="headerlink" href="#meine-mails-werden-als-spam-identifiziert" title="Permanent link">&para;</a></h2> <h2 id="meine-mails-werden-als-spam-identifiziert">Meine Mails werden als Spam identifiziert<a class="headerlink" href="#meine-mails-werden-als-spam-identifiziert" title="Permanent link">&para;</a></h2>
<p>Bitte lesen Sie unsere <a href="../../prerequisite/prerequisite-dns/">DNS-Konfiguration</a> Anleitung.</p> <p>Bitte lesen Sie unsere <a href="../../prerequisite/prerequisite-dns/">DNS-Konfiguration</a> Anleitung.</p>
<h2 id="docker-compose-wirft-seltsame-fehler-aus">docker compose wirft seltsame Fehler aus.<a class="headerlink" href="#docker-compose-wirft-seltsame-fehler-aus" title="Permanent link">&para;</a></h2> <h2 id="docker-compose-wirft-seltsame-fehler-aus">docker-compose wirft seltsame Fehler aus.<a class="headerlink" href="#docker-compose-wirft-seltsame-fehler-aus" title="Permanent link">&para;</a></h2>
<p>... wie:</p> <p>... wie:</p>
<ul> <ul>
<li><code>ERROR: Ungültiges Interpolationsformat ...</code></li> <li><code>ERROR: Ungültiges Interpolationsformat ...</code></li>
<li><code>AttributeError: 'NoneType' Objekt hat kein Attribut 'keys'</code>.</li> <li><code>AttributeError: 'NoneType' Objekt hat kein Attribut 'keys'</code>.</li>
<li>ERROR: In der Datei './docker-compose.yml' hat der Dienst 'version' keine Konfigurationsoptionen.</li> <li>ERROR: In der Datei './docker-compose.yml' hat der Dienst 'version' keine Konfigurationsoptionen.</li>
</ul> </ul>
<p>Wenn Sie eine oder ähnliche Meldungen erhalten, während Sie versuchen, mailcow: dockerized auszuführen, überprüfen Sie bitte, ob Sie die <strong>aktuellste</strong> Version von <strong>Docker</strong> und <strong>docker compose</strong> haben.</p> <p>Wenn Sie eine oder ähnliche Meldungen erhalten, während Sie versuchen, mailcow: dockerized auszuführen, überprüfen Sie bitte, ob Sie die <strong>aktuellste</strong> Version von <strong>Docker</strong> und <strong>docker-compose</strong> haben.</p>
<h2 id="container-xy-ist-ungesund">Container XY ist ungesund<a class="headerlink" href="#container-xy-ist-ungesund" title="Permanent link">&para;</a></h2> <h2 id="container-xy-ist-ungesund">Container XY ist ungesund<a class="headerlink" href="#container-xy-ist-ungesund" title="Permanent link">&para;</a></h2>
<p>Dieser Fehler versucht Ihnen mitzuteilen, dass eine der (Gesundheits-)Bedingungen für einen bestimmten Container nicht erfüllt ist. Daher kann er nicht gestartet werden. Dies kann verschiedene Gründe haben, der häufigste ist ein aktualisierter Git-Klon, aber ein altes Docker-Image oder umgekehrt.</p> <p>Dieser Fehler versucht Ihnen mitzuteilen, dass eine der (Gesundheits-)Bedingungen für einen bestimmten Container nicht erfüllt ist. Daher kann er nicht gestartet werden. Dies kann verschiedene Gründe haben, der häufigste ist ein aktualisierter Git-Klon, aber ein altes Docker-Image oder umgekehrt.</p>
<p>Auch eine falsch konfigurierte Firewall kann einen solchen Fehler verursachen. Die Container müssen in der Lage sein, über das Netzwerk 172.22.1.1/24 miteinander zu kommunizieren.</p> <p>Auch eine falsch konfigurierte Firewall kann einen solchen Fehler verursachen. Die Container müssen in der Lage sein, über das Netzwerk 172.22.1.1/24 miteinander zu kommunizieren.</p>
@ -2588,7 +2588,7 @@ key.pem
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2364,11 +2364,11 @@
<p class="admonition-title">Warning</p> <p class="admonition-title">Warning</p>
<p>Dieser Abschnitt gilt nur für Docker's Standard-Logging-Treiber (JSON).</p> <p>Dieser Abschnitt gilt nur für Docker's Standard-Logging-Treiber (JSON).</p>
</div> </div>
<p>Um die Logs aller mailcow: dockerized bezogenen Container zu sehen, können Sie <code>docker compose logs</code> innerhalb Ihres mailcow-dockerized Ordners verwenden, der Ihre <code>mailcow.conf</code> enthält. Dies ist normalerweise ein bisschen viel, aber Sie können die Ausgabe mit <code>--tail=100</code> auf die letzten 100 Zeilen pro Container kürzen, oder ein <code>-f</code> hinzufügen, um die Live-Ausgabe aller Ihrer Dienste zu verfolgen.</p> <p>Um die Logs aller mailcow: dockerized bezogenen Container zu sehen, können Sie <code>docker-compose logs</code> innerhalb Ihres mailcow-dockerized Ordners verwenden, der Ihre <code>mailcow.conf</code> enthält. Dies ist normalerweise ein bisschen viel, aber Sie können die Ausgabe mit <code>--tail=100</code> auf die letzten 100 Zeilen pro Container kürzen, oder ein <code>-f</code> hinzufügen, um die Live-Ausgabe aller Ihrer Dienste zu verfolgen.</p>
<p>Um die Logs eines bestimmten Dienstes zu sehen, kann man <code>docker compose logs [options] $service_name</code> verwenden</p> <p>Um die Logs eines bestimmten Dienstes zu sehen, kann man <code>docker-compose logs [options] $service_name</code> verwenden</p>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
<p>Die verfügbaren Optionen für den Befehl <strong>docker compose logs</strong> sind:</p> <p>Die verfügbaren Optionen für den Befehl <strong>docker-compose logs</strong> sind:</p>
<ul> <ul>
<li><strong>-no-color</strong>: Erzeugt eine einfarbige Ausgabe.</li> <li><strong>-no-color</strong>: Erzeugt eine einfarbige Ausgabe.</li>
<li><strong>-f</strong>: Der Log-Ausgabe folgen.</li> <li><strong>-f</strong>: Der Log-Ausgabe folgen.</li>
@ -2382,7 +2382,7 @@
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2411,12 +2411,12 @@
<h2 id="mariadb-aria-wiederherstellung-nach-absturz">MariaDB: Aria-Wiederherstellung nach Absturz<a class="headerlink" href="#mariadb-aria-wiederherstellung-nach-absturz" title="Permanent link">&para;</a></h2> <h2 id="mariadb-aria-wiederherstellung-nach-absturz">MariaDB: Aria-Wiederherstellung nach Absturz<a class="headerlink" href="#mariadb-aria-wiederherstellung-nach-absturz" title="Permanent link">&para;</a></h2>
<p>Wenn Ihr Server abgestürzt ist und MariaDB eine Fehlermeldung ähnlich <code>[ERROR] mysqld: Aria recovery failed. Please run aria_chk -r on all Aria tables (*.MAI) and delete all aria_log.######## files</code>, können Sie Folgendes versuchen, um die Datenbank in einen gesunden Zustand zu bringen:</p> <p>Wenn Ihr Server abgestürzt ist und MariaDB eine Fehlermeldung ähnlich <code>[ERROR] mysqld: Aria recovery failed. Please run aria_chk -r on all Aria tables (*.MAI) and delete all aria_log.######## files</code>, können Sie Folgendes versuchen, um die Datenbank in einen gesunden Zustand zu bringen:</p>
<p>Starten Sie den Stack und warten Sie, bis mysql-mailcow beginnt, einen Neustart zu melden. Überprüfen Sie dies, indem Sie <code>docker compose ps</code> ausführen.</p> <p>Starten Sie den Stack und warten Sie, bis mysql-mailcow beginnt, einen Neustart zu melden. Überprüfen Sie dies, indem Sie <code>docker-compose ps</code> ausführen.</p>
<p>Führen Sie nun die folgenden Befehle aus:</p> <p>Führen Sie nun die folgenden Befehle aus:</p>
<div class="highlight"><pre><span></span><code># Stoppe den Stack, führe nicht &quot;down&quot; aus <div class="highlight"><pre><span></span><code># Stoppe den Stack, führe nicht &quot;down&quot; aus
docker compose stop docker-compose stop
# Führen Sie eine Bash in dem gestoppten Container als Benutzer mysql aus # Führen Sie eine Bash in dem gestoppten Container als Benutzer mysql aus
docker compose run --rm --entrypoint &#39;/bin/sh -c &quot;gosu mysql bash&quot;&#39; mysql-mailcow docker-compose run --rm --entrypoint &#39;/bin/sh -c &quot;gosu mysql bash&quot;&#39; mysql-mailcow
# cd in das SQL-Datenverzeichnis # cd in das SQL-Datenverzeichnis
cd /var/lib/mysql cd /var/lib/mysql
# aria_chk ausführen # aria_chk ausführen
@ -2424,14 +2424,14 @@ aria_chk --check --force */*.MAI
# Löschen der aria-Logdateien # Löschen der aria-Logdateien
rm aria_log.* rm aria_log.*
</code></pre></div> </code></pre></div>
<p>Führen Sie nun <code>docker compose down</code> gefolgt von <code>docker compose up -d</code> aus.</p> <p>Führen Sie nun <code>docker-compose down</code> gefolgt von <code>docker-compose up -d</code> aus.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2411,8 +2411,8 @@
<h2 id="fuhren-sie-ein-manuelles-mysql_upgrade-durch">Führen Sie ein manuelles mysql_upgrade durch.<a class="headerlink" href="#fuhren-sie-ein-manuelles-mysql_upgrade-durch" title="Permanent link">&para;</a></h2> <h2 id="fuhren-sie-ein-manuelles-mysql_upgrade-durch">Führen Sie ein manuelles mysql_upgrade durch.<a class="headerlink" href="#fuhren-sie-ein-manuelles-mysql_upgrade-durch" title="Permanent link">&para;</a></h2>
<p>Dieser Schritt ist normalerweise nicht notwendig. </p> <p>Dieser Schritt ist normalerweise nicht notwendig. </p>
<div class="highlight"><pre><span></span><code>docker compose stop mysql-mailcow watchdog-mailcow <div class="highlight"><pre><span></span><code>docker-compose stop mysql-mailcow watchdog-mailcow
docker compose run --rm --entrypoint &#39;/bin/sh -c &quot;gosu mysql mysqld --skip-grant-tables &amp; sleep 10 &amp;&amp; bash &amp;&amp; exit 0&quot;&#39; mysql-mailcow docker-compose run --rm --entrypoint &#39;/bin/sh -c &quot;gosu mysql mysqld --skip-grant-tables &amp; sleep 10 &amp;&amp; bash &amp;&amp; exit 0&quot;&#39; mysql-mailcow
</code></pre></div> </code></pre></div>
<p>Sobald die SQL-Shell gestartet wurde, führen Sie <code>mysql_upgrade</code> aus und verlassen den Container:</p> <p>Sobald die SQL-Shell gestartet wurde, führen Sie <code>mysql_upgrade</code> aus und verlassen den Container:</p>
<div class="highlight"><pre><span></span><code>mysql_upgrade <div class="highlight"><pre><span></span><code>mysql_upgrade
@ -2424,7 +2424,7 @@ exit
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2563,13 +2563,13 @@
./helper-scripts/mailcow-reset-admin.sh ./helper-scripts/mailcow-reset-admin.sh
</code></pre></div> </code></pre></div>
<h2 id="mysql-passworter-zurucksetzen">MySQL-Passwörter zurücksetzen<a class="headerlink" href="#mysql-passworter-zurucksetzen" title="Permanent link">&para;</a></h2> <h2 id="mysql-passworter-zurucksetzen">MySQL-Passwörter zurücksetzen<a class="headerlink" href="#mysql-passworter-zurucksetzen" title="Permanent link">&para;</a></h2>
<p>Stoppen Sie den Stack, indem Sie <code>docker compose stop</code> ausführen.</p> <p>Stoppen Sie den Stack, indem Sie <code>docker-compose stop</code> ausführen.</p>
<p>Wenn die Container heruntergefahren sind, führen Sie diesen Befehl aus:</p> <p>Wenn die Container heruntergefahren sind, führen Sie diesen Befehl aus:</p>
<div class="highlight"><pre><span></span><code>docker compose run --rm --entrypoint &#39;/bin/sh -c &quot;gosu mysql mysqld --skip-grant-tables &amp; sleep 10 &amp;&amp; mysql -hlocalhost -uroot &amp;&amp; exit 0&quot;&#39; mysql-mailcow <div class="highlight"><pre><span></span><code>docker-compose run --rm --entrypoint &#39;/bin/sh -c &quot;gosu mysql mysqld --skip-grant-tables &amp; sleep 10 &amp;&amp; mysql -hlocalhost -uroot &amp;&amp; exit 0&quot;&#39; mysql-mailcow
</code></pre></div> </code></pre></div>
<h3 id="1-datenbank-name-finden">1. Datenbank-Name finden<a class="headerlink" href="#1-datenbank-name-finden" title="Permanent link">&para;</a></h3> <h3 id="1-datenbank-name-finden">1. Datenbank-Name finden<a class="headerlink" href="#1-datenbank-name-finden" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code># source mailcow.conf <div class="highlight"><pre><span></span><code># source mailcow.conf
# docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} # docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
MariaDB [(none)]&gt; show databases; MariaDB [(none)]&gt; show databases;
+--------------------+ +--------------------+
| Database | | Database |
@ -2618,10 +2618,10 @@ MariaDB [(none)]&gt; FLUSH PRIVILEGES;
<h3 id="fur-mailcow-webui">Für mailcow WebUI:<a class="headerlink" href="#fur-mailcow-webui" title="Permanent link">&para;</a></h3> <h3 id="fur-mailcow-webui">Für mailcow WebUI:<a class="headerlink" href="#fur-mailcow-webui" title="Permanent link">&para;</a></h3>
<p>Dies funktioniert ähnlich wie das Zurücksetzen eines MySQL-Passworts, jetzt machen wir es vom Host aus, ohne uns mit dem MySQL CLI zu verbinden:</p> <p>Dies funktioniert ähnlich wie das Zurücksetzen eines MySQL-Passworts, jetzt machen wir es vom Host aus, ohne uns mit dem MySQL CLI zu verbinden:</p>
<div class="highlight"><pre><span></span><code>Quelle mailcow.conf <div class="highlight"><pre><span></span><code>Quelle mailcow.conf
docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e &quot;DELETE FROM tfa WHERE username=&#39;YOUR_USERNAME&#39;;&quot; docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e &quot;DELETE FROM tfa WHERE username=&#39;YOUR_USERNAME&#39;;&quot;
</code></pre></div> </code></pre></div>
<h3 id="fur-sogo">Für SOGo:<a class="headerlink" href="#fur-sogo" title="Permanent link">&para;</a></h3> <h3 id="fur-sogo">Für SOGo:<a class="headerlink" href="#fur-sogo" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code>docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled &#39;{&quot;SOGoGoogleAuthenticatorEnabled&quot;:0}&#39; <div class="highlight"><pre><span></span><code>docker-compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoGoogleAuthenticatorEnabled &#39;{&quot;SOGoGoogleAuthenticatorEnabled&quot;:0}&#39;
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2629,7 +2629,7 @@ docker compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e &qu
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2362,12 +2362,12 @@
<p>Sollten Sie Probleme mit Ihrem Zertifikat, Schlüssel oder Let's Encrypt-Konto haben, versuchen Sie bitte, die TLS-Assets zurückzusetzen:</p> <p>Sollten Sie Probleme mit Ihrem Zertifikat, Schlüssel oder Let's Encrypt-Konto haben, versuchen Sie bitte, die TLS-Assets zurückzusetzen:</p>
<div class="highlight"><pre><span></span><code>source mailcow.conf <div class="highlight"><pre><span></span><code>source mailcow.conf
docker compose down docker-compose down
rm -rf data/assets/ssl rm -rf data/assets/ssl
mkdir data/assets/ssl mkdir data/assets/ssl
openssl req -x509 -newkey rsa:4096 -keyout data/assets/ssl-example/key.pem -out data/assets/ssl-example/cert.pem -days 365 -subj &quot;/C=DE/ST=NRW/L=Willich/O=mailcow/OU=mailcow/CN=${MAILCOW_HOSTNAME}&quot; -sha256 -nodes openssl req -x509 -newkey rsa:4096 -keyout data/assets/ssl-example/key.pem -out data/assets/ssl-example/cert.pem -days 365 -subj &quot;/C=DE/ST=NRW/L=Willich/O=mailcow/OU=mailcow/CN=${MAILCOW_HOSTNAME}&quot; -sha256 -nodes
cp -n -d data/assets/ssl-example/*.pem data/assets/ssl/ cp -n -d data/assets/ssl-example/*.pem data/assets/ssl/
docker compose up -d docker-compose up -d
</code></pre></div> </code></pre></div>
<p>Dies wird mailcow stoppen, die benötigten Variablen beschaffen, ein selbstsigniertes Zertifikat erstellen und mailcow starten.</p> <p>Dies wird mailcow stoppen, die benötigten Variablen beschaffen, ein selbstsigniertes Zertifikat erstellen und mailcow starten.</p>
<p>Wenn Sie Let's Encrypt verwenden, sollten Sie vorsichtig sein, da Sie ein neues Konto und einen neuen Satz von Zertifikaten erstellen werden. Sie werden früher oder später auf ein Ratelimit stoßen.</p> <p>Wenn Sie Let's Encrypt verwenden, sollten Sie vorsichtig sein, da Sie ein neues Konto und einen neuen Satz von Zertifikaten erstellen werden. Sie werden früher oder später auf ein Ratelimit stoßen.</p>
@ -2378,7 +2378,7 @@ docker compose up -d
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2372,14 +2372,14 @@
<li>Entfernen Sie das Volume <code>rspamd-vol-1</code>, um alle Rspamd-Daten zu entfernen.</li> <li>Entfernen Sie das Volume <code>rspamd-vol-1</code>, um alle Rspamd-Daten zu entfernen.</li>
<li>Entfernen Sie Volume <code>crypt-vol-1</code>, um alle Crypto-Daten zu entfernen. Dies wird <strong>alle Mails</strong> unlesbar machen.</li> <li>Entfernen Sie Volume <code>crypt-vol-1</code>, um alle Crypto-Daten zu entfernen. Dies wird <strong>alle Mails</strong> unlesbar machen.</li>
</ul> </ul>
<p>Alternativ dazu wird die Ausführung von <code>docker compose down -v</code> <strong>alle mailcow: dockerized volumes</strong> zerstören und alle zugehörigen Container und Netzwerke löschen.</p> <p>Alternativ dazu wird die Ausführung von <code>docker-compose down -v</code> <strong>alle mailcow: dockerized volumes</strong> zerstören und alle zugehörigen Container und Netzwerke löschen.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2361,7 +2361,7 @@
<h1>Fortgeschritten: Memory-Leaks in Rspamd finden</h1> <h1>Fortgeschritten: Memory-Leaks in Rspamd finden</h1>
<p>Eine kurze Anleitung, um einen schlecht funktionierenden Rspamd tiefgehend zu analysieren.</p> <p>Eine kurze Anleitung, um einen schlecht funktionierenden Rspamd tiefgehend zu analysieren.</p>
<div class="highlight"><pre><span></span><code>docker compose exec rspamd-mailcow bash <div class="highlight"><pre><span></span><code>docker-compose exec rspamd-mailcow bash
if ! grep -qi &#39;apt-stable-asan&#39; /etc/apt/sources.list.d/rspamd.list; then if ! grep -qi &#39;apt-stable-asan&#39; /etc/apt/sources.list.d/rspamd.list; then
sed -i &#39;s/apt-stabil/apt-stabil-asan/i&#39; /etc/apt/sources.list.d/rspamd.list sed -i &#39;s/apt-stabil/apt-stabil-asan/i&#39; /etc/apt/sources.list.d/rspamd.list
@ -2376,17 +2376,17 @@ nano /docker-entrypoint.sh
export G_SLICE=always-malloc export G_SLICE=always-malloc
export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0 export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0
</code></pre></div> </code></pre></div>
<p>Starten Sie Rspamd neu: <code>docker compose restart rspamd-mailcow</code></p> <p>Starten Sie Rspamd neu: <code>docker-compose restart rspamd-mailcow</code></p>
<p>Ihr Speicherverbrauch wird stark ansteigen, er wird auch stetig wachsen, was nicht mit einem möglichen Memory Leak zusammenhängt, nach dem Sie suchen.</p> <p>Ihr Speicherverbrauch wird stark ansteigen, er wird auch stetig wachsen, was nicht mit einem möglichen Memory Leak zusammenhängt, nach dem Sie suchen.</p>
<p>Lassen Sie den Container für ein paar Minuten, Stunden oder Tage laufen (es sollte die Zeit sein, die Sie normalerweise warten, bis der Memory Leak "passiert") und starten Sie ihn neu: <code>docker compose restart rspamd-mailcow</code>.</p> <p>Lassen Sie den Container für ein paar Minuten, Stunden oder Tage laufen (es sollte die Zeit sein, die Sie normalerweise warten, bis der Memory Leak "passiert") und starten Sie ihn neu: <code>docker-compose restart rspamd-mailcow</code>.</p>
<p>Betreten Sie nun den Container, indem Sie <code>docker compose exec rspamd-mailcow bash</code> ausführen, wechseln Sie das Verzeichnis zu /tmp und kopieren Sie die asan-Dateien an den gewünschten Ort oder laden Sie sie über termbin.com hoch (<code>cat /tmp/rspamd-asan.* | nc termbin.com 9999</code>).</p> <p>Betreten Sie nun den Container, indem Sie <code>docker-compose exec rspamd-mailcow bash</code> ausführen, wechseln Sie das Verzeichnis zu /tmp und kopieren Sie die asan-Dateien an den gewünschten Ort oder laden Sie sie über termbin.com hoch (<code>cat /tmp/rspamd-asan.* | nc termbin.com 9999</code>).</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Letztes Update: Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2432,10 +2432,10 @@
<p><strong>Make sure the user you want to restore exists in your mailcow</strong>. Re-create them if they are missing.</p> <p><strong>Make sure the user you want to restore exists in your mailcow</strong>. Re-create them if they are missing.</p>
<p>Copy the file named after the user you want to restore to <code>__MAILCOW_DIRECTORY__/data/conf/sogo</code>.</p> <p>Copy the file named after the user you want to restore to <code>__MAILCOW_DIRECTORY__/data/conf/sogo</code>.</p>
<p>1. Copy the backup: <code>cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo</code></p> <p>1. Copy the backup: <code>cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo</code></p>
<p>2. Run <code>docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org</code></p> <p>2. Run <code>docker-compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org</code></p>
<p>Run <code>sogo-tool</code> without parameters to check for possible restore options.</p> <p>Run <code>sogo-tool</code> without parameters to check for possible restore options.</p>
<p>3. Delete the copied backup by running <code>rm __MAILCOW_DIRECTORY__/data/conf/sogo</code></p> <p>3. Delete the copied backup by running <code>rm __MAILCOW_DIRECTORY__/data/conf/sogo</code></p>
<p>4. Restart SOGo and Memcached: <code>docker compose restart sogo-mailcow memcached-mailcow</code></p> <p>4. Restart SOGo and Memcached: <code>docker-compose restart sogo-mailcow memcached-mailcow</code></p>
<h3 id="mail">Mail<a class="headerlink" href="#mail" title="Permanent link">&para;</a></h3> <h3 id="mail">Mail<a class="headerlink" href="#mail" title="Permanent link">&para;</a></h3>
<p>In case of an accidental deletion of a mailbox, you will be able to recover for (by default) 5 days. This depends on the <code>MAILDIR_GC_TIME</code> parameter in <code>mailcow.conf</code>.</p> <p>In case of an accidental deletion of a mailbox, you will be able to recover for (by default) 5 days. This depends on the <code>MAILDIR_GC_TIME</code> parameter in <code>mailcow.conf</code>.</p>
<p>A deleted mailbox is copied in its encrypted form to <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage</code>.</p> <p>A deleted mailbox is copied in its encrypted form to <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage</code>.</p>
@ -2443,8 +2443,8 @@
<p>To restore make sure you are actually restoring to the same mailcow it was deleted from or you use the same encryption keys in <code>crypt-vol-1</code>.</p> <p>To restore make sure you are actually restoring to the same mailcow it was deleted from or you use the same encryption keys in <code>crypt-vol-1</code>.</p>
<p><strong>Make sure the user you want to restore exists in your mailcow</strong>. Re-create them if they are missing.</p> <p><strong>Make sure the user you want to restore exists in your mailcow</strong>. Re-create them if they are missing.</p>
<p>Copy the folders from <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]</code> back to <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]</code> and resync the folder and recalc the quota:</p> <p>Copy the folders from <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]</code> back to <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]</code> and resync the folder and recalc the quota:</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net &#39;*&#39; <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net &#39;*&#39;
docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2452,7 +2452,7 @@ docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2530,7 +2530,7 @@ fi
</code></pre></div></p> </code></pre></div></p>
<p>On the destination (in this case <code>/external_share/backups</code>) you may want to have snapshot capabilities (ZFS, Btrfs etc.). Snapshot daily and keep for n days for a consistent backup. <p>On the destination (in this case <code>/external_share/backups</code>) you may want to have snapshot capabilities (ZFS, Btrfs etc.). Snapshot daily and keep for n days for a consistent backup.
Do <strong>not</strong> rsync to a Samba share, you need to keep the correct permissions!</p> Do <strong>not</strong> rsync to a Samba share, you need to keep the correct permissions!</p>
<p>To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run <code>docker compose pull</code> and <code>docker compose up -d</code>.</p> <p>To restore you'd simply need to run rsync the other way round and restart Docker to re-read the volumes. Run <code>docker-compose pull</code> and <code>docker-compose up -d</code>.</p>
<p>If you are lucky Redis and MariaDB can automatically fix the inconsistent databases (if they <em>are</em> inconsistent). <p>If you are lucky Redis and MariaDB can automatically fix the inconsistent databases (if they <em>are</em> inconsistent).
In case of a corrupted database you'd need to use the helper script to restore the inconsistent elements. If a restore fails, try to extract the backups and copy the files back manually. Keep the file permissions!</p> In case of a corrupted database you'd need to use the helper script to restore the inconsistent elements. If a restore fails, try to extract the backups and copy the files back manually. Keep the file permissions!</p>
@ -2539,7 +2539,7 @@ In case of a corrupted database you'd need to use the helper script to restore t
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2428,13 +2428,13 @@
<h3 id="backup">Backup<a class="headerlink" href="#backup" title="Permanent link">&para;</a></h3> <h3 id="backup">Backup<a class="headerlink" href="#backup" title="Permanent link">&para;</a></h3>
<p>This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory: <p>This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory:
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
docker run --rm -i -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail docker run --rm -i -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar cvfz /backup/backup_vmail.tar.gz /vmail
</code></pre></div></p> </code></pre></div></p>
<p>You can change the path by adjusting ${PWD} (which equals to the current directory) to any path you have write-access to. <p>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 <code>backup_vmail.tar.gz</code> to any custom name, but leave the path as it is. Example: <code>[...] tar cvfz /backup/my_own_filename_.tar.gz</code></p> Set the filename <code>backup_vmail.tar.gz</code> to any custom name, but leave the path as it is. Example: <code>[...] tar cvfz /backup/my_own_filename_.tar.gz</code></p>
<h3 id="restore">Restore<a class="headerlink" href="#restore" title="Permanent link">&para;</a></h3> <h3 id="restore">Restore<a class="headerlink" href="#restore" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar xvfz /backup/backup_vmail.tar.gz docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39; $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:stretch-slim tar xvfz /backup/backup_vmail.tar.gz
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2442,7 +2442,7 @@ docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if e
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2429,16 +2429,16 @@
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
source mailcow.conf source mailcow.conf
DATE=$(date +&quot;%Y%m%d_%H%M%S&quot;) DATE=$(date +&quot;%Y%m%d_%H%M%S&quot;)
docker compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} &gt; backup_${DBNAME}_${DATE}.sql docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} &gt; backup_${DBNAME}_${DATE}.sql
</code></pre></div> </code></pre></div>
<h2 id="restore">Restore<a class="headerlink" href="#restore" title="Permanent link">&para;</a></h2> <h2 id="restore">Restore<a class="headerlink" href="#restore" title="Permanent link">&para;</a></h2>
<div class="admonition warning"> <div class="admonition warning">
<p class="admonition-title">Warning</p> <p class="admonition-title">Warning</p>
<p>You should redirect the SQL dump without <code>docker compose</code> to prevent parsing errors.</p> <p>You should redirect the SQL dump without <code>docker-compose</code> to prevent parsing errors.</p>
</div> </div>
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
source mailcow.conf source mailcow.conf
docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} &lt; backup_file.sql docker exec -i $(docker-compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} &lt; backup_file.sql
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2446,7 +2446,7 @@ docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPAS
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2465,7 +2465,7 @@
<p>To find the pathes of your source volumes we use <code>docker inspect</code> and read the destination directory of every volume related to your mailcow compose project. This means we will also transfer volumes you may have added in a override file. Local bind mounts may or may not work.</p> <p>To find the pathes of your source volumes we use <code>docker inspect</code> and read the destination directory of every volume related to your mailcow compose project. This means we will also transfer volumes you may have added in a override file. Local bind mounts may or may not work.</p>
<p>The use rsync with the <code>--delete</code> flag. The destination will be an exact copy of the source.</p> <p>The use rsync with the <code>--delete</code> flag. The destination will be an exact copy of the source.</p>
<p><code>mariabackup</code> is used to create a consistent copy of the SQL data directory.</p> <p><code>mariabackup</code> is used to create a consistent copy of the SQL data directory.</p>
<p>After rsync'ing the data we will run <code>docker compose pull</code> and remove old image tags from the destination.</p> <p>After rsync'ing the data we will run <code>docker-compose pull</code> and remove old image tags from the destination.</p>
<p>Your source will not be changed at any time.</p> <p>Your source will not be changed at any time.</p>
<p><strong>You may want to make sure to use the same <code>/etc/docker/daemon.json</code> on the remote target.</strong></p> <p><strong>You may want to make sure to use the same <code>/etc/docker/daemon.json</code> on the remote target.</strong></p>
<p>You should not run disk snapshots (e.g. via ZFS, LVM etc.) on the target at the very same time as this script is run.</p> <p>You should not run disk snapshots (e.g. via ZFS, LVM etc.) on the target at the very same time as this script is run.</p>
@ -2480,7 +2480,7 @@ export REMOTE_SSH_HOST=mailcow-backup.host.name
</code></pre></div> </code></pre></div>
<p>The key must be owned and readable by root only.</p> <p>The key must be owned and readable by root only.</p>
<p>Both the source and destination require <code>rsync</code> &gt;= v3.1.0. <p>Both the source and destination require <code>rsync</code> &gt;= v3.1.0.
The destination must have Docker and docker compose <strong>v1</strong> available.</p> The destination must have Docker and docker-compose <strong>v1</strong> available.</p>
<p>The script will detect errors automatically and exit.</p> <p>The script will detect errors automatically and exit.</p>
<p>You may want to test the connection by running <code>ssh mailcow-backup.host.name -p22 -i /path/to/keyfile</code>.</p> <p>You may want to test the connection by running <code>ssh mailcow-backup.host.name -p22 -i /path/to/keyfile</code>.</p>
<h2 id="backup-and-refresh-the-cold-standby">Backup and refresh the cold-standby<a class="headerlink" href="#backup-and-refresh-the-cold-standby" title="Permanent link">&para;</a></h2> <h2 id="backup-and-refresh-the-cold-standby">Backup and refresh the cold-standby<a class="headerlink" href="#backup-and-refresh-the-cold-standby" title="Permanent link">&para;</a></h2>
@ -2513,7 +2513,7 @@ The destination must have Docker and docker compose <strong>v1</strong> availabl
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2361,7 +2361,7 @@
<h1>Deinstallation</h1> <h1>Deinstallation</h1>
<p>To remove mailcow: dockerized with all it's volumes, images and containers do:</p> <p>To remove mailcow: dockerized with all it's volumes, images and containers do:</p>
<div class="highlight"><pre><span></span><code>docker compose down -v --rmi all --remove-orphans <div class="highlight"><pre><span></span><code>docker-compose down -v --rmi all --remove-orphans
</code></pre></div> </code></pre></div>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
@ -2369,7 +2369,7 @@
<li><strong>-v</strong> Remove named volumes declared in the <code>volumes</code> section of the Compose file and anonymous volumes attached to containers.</li> <li><strong>-v</strong> Remove named volumes declared in the <code>volumes</code> section of the Compose file and anonymous volumes attached to containers.</li>
<li><strong>--rmi <type></strong> Remove images. Type must be one of: <code>all</code>: Remove all images used by any service. <code>local</code>: Remove only images that don't have a custom tag set by the <code>image</code> field.</li> <li><strong>--rmi <type></strong> Remove images. Type must be one of: <code>all</code>: Remove all images used by any service. <code>local</code>: Remove only images that don't have a custom tag set by the <code>image</code> field.</li>
<li><strong>--remove-orphans</strong> Remove containers for services not defined in the compose file.</li> <li><strong>--remove-orphans</strong> Remove containers for services not defined in the compose file.</li>
<li>By default <code>docker compose down</code> only removes currently active containers and networks defined in the <code>docker-compose.yml</code>.</li> <li>By default <code>docker-compose down</code> only removes currently active containers and networks defined in the <code>docker-compose.yml</code>.</li>
</ul> </ul>
</div> </div>
@ -2378,7 +2378,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -67,11 +67,6 @@
<label class="md-overlay" for="__drawer"></label> <label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip"> <div data-md-component="skip">
<a href="#installing-docker" class="md-skip">
Skip to content
</a>
</div> </div>
<div data-md-component="announce"> <div data-md-component="announce">
@ -369,73 +364,10 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
Installation
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active"> <a href="./" class="md-nav__link md-nav__link--active">
Installation Installation
</a> </a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#installing-docker" class="md-nav__link">
Installing Docker
</a>
</li>
<li class="md-nav__item">
<a href="#install-docker-compose-v2" class="md-nav__link">
Install Docker Compose v2
</a>
<nav class="md-nav" aria-label="Install Docker Compose v2">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#uninstall-docker-compose-v1" class="md-nav__link">
Uninstall Docker Compose v1
</a>
</li>
<li class="md-nav__item">
<a href="#install-docker-compose-v2_1" class="md-nav__link">
Install Docker Compose v2
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#install-mailcow" class="md-nav__link">
Install mailcow
</a>
</li>
</ul>
</nav>
</li> </li>
@ -2410,55 +2342,6 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#installing-docker" class="md-nav__link">
Installing Docker
</a>
</li>
<li class="md-nav__item">
<a href="#install-docker-compose-v2" class="md-nav__link">
Install Docker Compose v2
</a>
<nav class="md-nav" aria-label="Install Docker Compose v2">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#uninstall-docker-compose-v1" class="md-nav__link">
Uninstall Docker Compose v1
</a>
</li>
<li class="md-nav__item">
<a href="#install-docker-compose-v2_1" class="md-nav__link">
Install Docker Compose v2
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#install-mailcow" class="md-nav__link">
Install mailcow
</a>
</li>
</ul>
</nav> </nav>
</div> </div>
</div> </div>
@ -2478,18 +2361,30 @@
<h1>Installation</h1> <h1>Installation</h1>
<p>You need Docker (a version &gt;= <code>20.10.2</code> is required) and Docker Compose (a version <code>&gt;= 2.0</code> is required).</p> <p>You need Docker (a version &gt;= <code>20.10.2</code> is required) and Docker Compose (a version <code>&gt;= 2.0</code> is required).</p>
<h2 id="installing-docker">Installing Docker<a class="headerlink" href="#installing-docker" title="Permanent link">&para;</a></h2> <p><strong>1.</strong> Learn how to install <a href="https://docs.docker.com/install/">Docker</a> and <a href="https://docs.docker.com/compose/install/">Docker Compose</a>.</p>
<p>Learn how to install <a href="https://docs.docker.com/install/">Docker</a> in general.</p> <p>Quick installation for most operation systems:</p>
<p>Quick installation for most operating systems:</p>
<ul> <ul>
<li>Docker <li>
<p>Docker
<div class="highlight"><pre><span></span><code>curl -sSL https://get.docker.com/ | CHANNEL=stable sh <div class="highlight"><pre><span></span><code>curl -sSL https://get.docker.com/ | CHANNEL=stable sh
# After the installation process is finished, you may need to enable the service and make sure it is started (e.g. CentOS 7) # After the installation process is finished, you may need to enable the service and make sure it is started (e.g. CentOS 7)
systemctl enable --now docker systemctl enable --now docker
</code></pre></div></li> </code></pre></div></p>
</li>
<li>
<p>Docker-Compose</p>
</li>
</ul> </ul>
<p><strong>Please use the latest available Docker engine and not the engine that ships with your distro repository.</strong></p> <div class="admonition danger">
<p><strong>On SELinux-enabled systems, e.g. CentOS 7:</strong></p> <p class="admonition-title">Danger</p>
<p><strong>mailcow requires the latest version of docker-compose v2.</strong> It is highly recommended to use the commands below to install <code>docker-compose</code>. Package managers (e.g. <code>apt</code>, <code>yum</code>) <strong>likely won't</strong> give you the correct version.
<em>Note: This command downloads docker-compose from the official Docker Github repository and is a safe method. The snippet will determine the latest supported version by mailcow. In almost all cases this is the latest version available (exceptions are broken releases or major changes not yet supported by mailcow).</em></p>
</div>
<div class="highlight"><pre><span></span><code>curl -L https://github.com/docker/compose/releases/download/v$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) &gt; /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
</code></pre></div>
<p>Please use the latest Docker engine available and do not use the engine that ships with your distros repository.</p>
<p><strong>1.1.</strong> On SELinux enabled systems, e.g. CentOS 7:</p>
<ul> <ul>
<li>Check if "container-selinux" package is present on your system:</li> <li>Check if "container-selinux" package is present on your system:</li>
</ul> </ul>
@ -2509,40 +2404,7 @@ systemctl enable --now docker
<p>Restart the docker daemon and verify SELinux is now enabled.</p> <p>Restart the docker daemon and verify SELinux is now enabled.</p>
<p>This step is required to make sure mailcows volumes are properly labeled as declared in the compose file. <p>This step is required to make sure mailcows volumes are properly labeled as declared in the compose file.
If you are interested in how this works, you can check out the readme of <a href="https://github.com/containers/container-selinux">https://github.com/containers/container-selinux</a> which links to a lot of useful information on that topic.</p> If you are interested in how this works, you can check out the readme of <a href="https://github.com/containers/container-selinux">https://github.com/containers/container-selinux</a> which links to a lot of useful information on that topic.</p>
<h2 id="install-docker-compose-v2">Install Docker Compose v2<a class="headerlink" href="#install-docker-compose-v2" title="Permanent link">&para;</a></h2> <p><strong>2.</strong> Clone the master branch of the repository, make sure your umask equals 0022. Please clone the repository as root user and also control the stack as root. We will modify attributes - if necessary - while bootstrapping the containers automatically and make sure everything is secured. The update.sh script must therefore also be run as root. It might be necessary to change ownership and other attributes of files you will otherwise not have access to. <strong>We drop permissions for every exposed application</strong> and will not run an exposed service as root! Controlling the Docker daemon as non-root user does not give you additional security. The unprivileged user will spawn the containers as root likewise. The behaviour of the stack is identical.</p>
<div class="admonition danger">
<p class="admonition-title">Danger</p>
<p>As of June 2022, Docker Compose v1 has been replaced in mailcow by Docker Compose v2. <br>
<strong>Docker Compose v1 will lose official support from Docker in October 2022.</strong> <br>
<em>mailcow supports Docker Compose v1 until December 2022, after which installation is <strong>imperative</strong> should you wish to <strong>continue</strong> running mailcow.</em></p>
</div>
<div class="admonition bug">
<p class="admonition-title">Compatibility</p>
<p>The web interface will only be accessible via v4 by default in the period from June - December 2022.<br>
The reason for this is the dual compatibility between Compose v1 and v2. <br>
Should you wish to access the web interface, as before by default via v6, please take a look at <a href="../../post_installation/firststeps-ip_bindings/#ipv6-binding">this chapter</a>. <br>
<strong>The 2022-12 update will restore the native IPv6 reachability from the UI.</strong></p>
</div>
<p>If you are freshly installing mailcow and have installed Docker in the above way, Docker Compose v2 will already be installed with it. So you don't need to do anything else.</p>
<p>You can check this with <code>docker compose version</code>, if the return looks something like <code>Docker Compose version v2.5.0</code>, then the new Docker Compose is already installed on your system.</p>
<p>If it is not installed or you want to upgrade from Docker Compose v1 to v2 just follow the instructions: </p>
<h4 id="uninstall-docker-compose-v1">Uninstall Docker Compose v1<a class="headerlink" href="#uninstall-docker-compose-v1" title="Permanent link">&para;</a></h4>
<p><strong>If you are already running the mailcow stack with docker-compose v1, make sure you have shut down the mailcow stack and installed the latest update before upgrading to Compose v2</strong>.</p>
<p>To uninstall Docker Compose v1 enter the following command:</p>
<div class="highlight"><pre><span></span><code>rm -rf /usr/local/bin/docker-compose
</code></pre></div>
<h4 id="install-docker-compose-v2_1">Install Docker Compose v2<a class="headerlink" href="#install-docker-compose-v2_1" title="Permanent link">&para;</a></h4>
<p>Docker Compose v2 comes with the repository (assuming you followed the instructions at point <a href="#installing-docker">installing Docker</a>).</p>
<p>Then the installation is quite simple:</p>
<div class="highlight"><pre><span></span><code>apt install docker-compose-plugin -y
</code></pre></div>
<p>Now type <code>docker compose version</code> again and check the return. Is it similar to: <code>Docker Compose version v2.5.0</code>? Then everything has been installed correctly!</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>If you are using an operating system other than Debian/Ubuntu, please take a look at the <a href="https://docs.docker.com/compose/install/#install-compose-on-linux-systems">official installation manual</a> of Docker itself to learn how to install Docker Compose v2 on other Linux systems.</p>
</div>
<h2 id="install-mailcow">Install mailcow<a class="headerlink" href="#install-mailcow" title="Permanent link">&para;</a></h2>
<p><strong>1.</strong> Clone the master branch of the repository, make sure your umask equals 0022. Please clone the repository as root user and also control the stack as root. We will modify attributes - if necessary - while bootstrapping the containers automatically and make sure everything is secured. The update.sh script must therefore also be run as root. It might be necessary to change ownership and other attributes of files you will otherwise not have access to. <strong>We drop permissions for every exposed application</strong> and will not run an exposed service as root! Controlling the Docker daemon as non-root user does not give you additional security. The unprivileged user will spawn the containers as root likewise. The behaviour of the stack is identical.</p>
<div class="highlight"><pre><span></span><code>$ su <div class="highlight"><pre><span></span><code>$ su
# umask # umask
0022 # &lt;- Verify it is 0022 0022 # &lt;- Verify it is 0022
@ -2550,16 +2412,16 @@ Should you wish to access the web interface, as before by default via v6, please
# git clone https://github.com/mailcow/mailcow-dockerized # git clone https://github.com/mailcow/mailcow-dockerized
# cd mailcow-dockerized # cd mailcow-dockerized
</code></pre></div> </code></pre></div>
<p><strong>2.</strong> Generate a configuration file. Use a FQDN (<code>host.domain.tld</code>) as hostname when asked. <p><strong>3.</strong> Generate a configuration file. Use a FQDN (<code>host.domain.tld</code>) as hostname when asked.
<div class="highlight"><pre><span></span><code>./generate_config.sh <div class="highlight"><pre><span></span><code>./generate_config.sh
</code></pre></div></p> </code></pre></div></p>
<p><strong>3.</strong> Change configuration if you want or need to. <p><strong>4.</strong> Change configuration if you want or need to.
<div class="highlight"><pre><span></span><code>nano mailcow.conf <div class="highlight"><pre><span></span><code>nano mailcow.conf
</code></pre></div> </code></pre></div>
If you plan to use a reverse proxy, you can, for example, bind HTTPS to 127.0.0.1 on port 8443 and HTTP to 127.0.0.1 on port 8080.</p> If you plan to use a reverse proxy, you can, for example, bind HTTPS to 127.0.0.1 on port 8443 and HTTP to 127.0.0.1 on port 8080.</p>
<p>You may need to stop an existing pre-installed MTA which blocks port 25/tcp. See <a href="../../post_installation/firststeps-local_mta/">this chapter</a> to learn how to reconfigure Postfix to run besides mailcow after a successful installation.</p> <p>You may need to stop an existing pre-installed MTA which blocks port 25/tcp. See <a href="../../post_installation/firststeps-local_mta/">this chapter</a> to learn how to reconfigure Postfix to run besides mailcow after a successful installation.</p>
<p>Some updates modify mailcow.conf and add new parameters. It is hard to keep track of them in the documentation. Please check their description and, if unsure, ask at the known channels for advise.</p> <p>Some updates modify mailcow.conf and add new parameters. It is hard to keep track of them in the documentation. Please check their description and, if unsure, ask at the known channels for advise.</p>
<p><strong>3.1.</strong> Users with a MTU not equal to 1500 (e.g. OpenStack):</p> <p><strong>4.1.</strong> Users with a MTU not equal to 1500 (e.g. OpenStack):</p>
<p><strong>Whenever you run into trouble and strange phenomena, please check your MTU.</strong></p> <p><strong>Whenever you run into trouble and strange phenomena, please check your MTU.</strong></p>
<p>Edit <code>docker-compose.yml</code> and change the network settings according to your MTU. <p>Edit <code>docker-compose.yml</code> and change the network settings according to your MTU.
Add the new driver_opts parameter like this: Add the new driver_opts parameter like this:
@ -2570,12 +2432,12 @@ Add the new driver_opts parameter like this:
com.docker.network.driver.mtu: 1450 com.docker.network.driver.mtu: 1450
... ...
</code></pre></div></p> </code></pre></div></p>
<p><strong>3.2.</strong> Users without an IPv6 enabled network on their host system:</p> <p><strong>4.2.</strong> Users without an IPv6 enabled network on their host system:</p>
<p><strong>Enable IPv6. Finally.</strong></p> <p><strong>Enable IPv6. Finally.</strong></p>
<p>If you do not have an IPv6 enabled network on your host and you don't care for a better internet (thehe), it is recommended to <a href="../../post_installation/firststeps-disable_ipv6/">disable IPv6</a> for the mailcow network to prevent unforeseen issues.</p> <p>If you do not have an IPv6 enabled network on your host and you don't care for a better internet (thehe), it is recommended to <a href="../../post_installation/firststeps-disable_ipv6/">disable IPv6</a> for the mailcow network to prevent unforeseen issues.</p>
<p><strong>4.</strong> Pull the images and run the compose file. The parameter <code>-d</code> will start mailcow: dockerized detached: <p><strong>5.</strong> Pull the images and run the compose file. The parameter <code>-d</code> will start mailcow: dockerized detached:
<div class="highlight"><pre><span></span><code>docker compose pull <div class="highlight"><pre><span></span><code>docker-compose pull
docker compose up -d docker-compose up -d
</code></pre></div></p> </code></pre></div></p>
<p>Done!</p> <p>Done!</p>
<p>You can now access <strong>https://${MAILCOW_HOSTNAME}</strong> with the default credentials <code>admin</code> + password <code>moohoo</code>.</p> <p>You can now access <strong>https://${MAILCOW_HOSTNAME}</strong> with the default credentials <code>admin</code> + password <code>moohoo</code>.</p>
@ -2584,14 +2446,14 @@ docker compose up -d
<p>If you are not using mailcow behind a reverse proxy, you should <a href="../../manual-guides/u_e-80_to_443/">redirect all HTTP requests to HTTPS</a>.</p> <p>If you are not using mailcow behind a reverse proxy, you should <a href="../../manual-guides/u_e-80_to_443/">redirect all HTTP requests to HTTPS</a>.</p>
</div> </div>
<p>The database will be initialized right after a connection to MySQL can be established.</p> <p>The database will be initialized right after a connection to MySQL can be established.</p>
<p>Your data will persist in multiple Docker volumes, that are not deleted when you recreate or delete containers. Run <code>docker volume ls</code> to see a list of all volumes. You can safely run <code>docker compose down</code> without removing persistent data.</p> <p>Your data will persist in multiple Docker volumes, that are not deleted when you recreate or delete containers. Run <code>docker volume ls</code> to see a list of all volumes. You can safely run <code>docker-compose down</code> without removing persistent data.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-07 16:44:34</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2369,7 +2369,7 @@
<p>Alternatively, you can use the <code>./helper-scripts/backup_and_restore.sh</code> script to create a full backup on the source machine, then install mailcow on the target machine as usual, copy over your <code>mailcow.conf</code> and use the same script to restore your backup to the target machine.</p> <p>Alternatively, you can use the <code>./helper-scripts/backup_and_restore.sh</code> script to create a full backup on the source machine, then install mailcow on the target machine as usual, copy over your <code>mailcow.conf</code> and use the same script to restore your backup to the target machine.</p>
</div> </div>
<p><strong>1.</strong> <p><strong>1.</strong>
Install <a href="https://docs.docker.com/engine/installation/linux/">Docker</a> and <a href="https://docs.docker.com/compose/install/">Docker Compose</a> on your new server.</p> Install <a href="https://docs.docker.com/engine/installation/linux/">Docker</a> and <a href="https://docs.docker.com/compose/install/">docker-compose</a> on your new server.</p>
<p>Quick installation for most operation systems:</p> <p>Quick installation for most operation systems:</p>
<ul> <ul>
<li> <li>
@ -2380,9 +2380,9 @@ systemctl enable docker.service
</code></pre></div></p> </code></pre></div></p>
</li> </li>
<li> <li>
<p>docker compose <p>docker-compose
<div class="highlight"><pre><span></span><code>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) &gt; /usr/local/bin/docker compose <div class="highlight"><pre><span></span><code>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) &gt; /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker compose chmod +x /usr/local/bin/docker-compose
</code></pre></div></p> </code></pre></div></p>
</li> </li>
</ul> </ul>
@ -2397,7 +2397,7 @@ rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.
</code></pre></div></p> </code></pre></div></p>
<p><strong>4.</strong> Shut down mailcow and stop Docker on the source machine. <p><strong>4.</strong> Shut down mailcow and stop Docker on the source machine.
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
docker compose down docker-compose down
systemctl stop docker.service systemctl stop docker.service
</code></pre></div></p> </code></pre></div></p>
<p><strong>5.</strong> Repeat step 3 with the same commands. This will be much quicker than the first time.</p> <p><strong>5.</strong> Repeat step 3 with the same commands. This will be much quicker than the first time.</p>
@ -2406,10 +2406,10 @@ systemctl stop docker.service
</code></pre></div></p> </code></pre></div></p>
<p><strong>7.</strong> Now pull the mailcow Docker images on the target machine. <p><strong>7.</strong> Now pull the mailcow Docker images on the target machine.
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
docker compose pull docker-compose pull
</code></pre></div></p> </code></pre></div></p>
<p><strong>8.</strong> Start the whole mailcow stack and everything should be done! <p><strong>8.</strong> Start the whole mailcow stack and everything should be done!
<div class="highlight"><pre><span></span><code>docker compose up -d <div class="highlight"><pre><span></span><code>docker-compose up -d
</code></pre></div></p> </code></pre></div></p>
<p><strong>9.</strong> Finally, change your DNS settings to point to the target server.</p> <p><strong>9.</strong> Finally, change your DNS settings to point to the target server.</p>
@ -2418,7 +2418,7 @@ docker compose pull
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2534,11 +2534,11 @@ dacd4fb9b51e9e1c8a37d84485b92ffaf6c59353 Before update on 2020-08-07_13_31_31
<h3 id="can-i-roll-back">Can I roll back?<a class="headerlink" href="#can-i-roll-back" title="Permanent link">&para;</a></h3> <h3 id="can-i-roll-back">Can I roll back?<a class="headerlink" href="#can-i-roll-back" title="Permanent link">&para;</a></h3>
<p>Yes.</p> <p>Yes.</p>
<p>See the topic above, instead of a diff, you run checkout:</p> <p>See the topic above, instead of a diff, you run checkout:</p>
<div class="highlight"><pre><span></span><code>docker compose down <div class="highlight"><pre><span></span><code>docker-compose down
# Replace commit ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab by your ID # Replace commit ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab by your ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
docker compose pull docker-compose pull
docker compose up -d docker-compose up -d
</code></pre></div> </code></pre></div>
<h3 id="hooks">Hooks<a class="headerlink" href="#hooks" title="Permanent link">&para;</a></h3> <h3 id="hooks">Hooks<a class="headerlink" href="#hooks" title="Permanent link">&para;</a></h3>
<p>You can hook into the update mechanism by adding scripts called <code>pre_commit_hook.sh</code> and <code>post_commit_hook.sh</code> to your mailcows root directory. See <a href="../../manual-guides/u_e-update-hooks/">this</a> for more details.</p> <p>You can hook into the update mechanism by adding scripts called <code>pre_commit_hook.sh</code> and <code>post_commit_hook.sh</code> to your mailcows root directory. See <a href="../../manual-guides/u_e-update-hooks/">this</a> for more details.</p>
@ -2554,7 +2554,7 @@ docker compose up -d
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:01:22</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2511,7 +2511,7 @@ MaxZipTypeRcg 50M
</code></pre></div></p> </code></pre></div></p>
</li> </li>
<li>Restart ClamAV container: <li>Restart ClamAV container:
<div class="highlight"><pre><span></span><code>docker compose restart clamd-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart clamd-mailcow
</code></pre></div></li> </code></pre></div></li>
</ol> </ol>
<p>Please note:</p> <p>Please note:</p>
@ -2530,7 +2530,7 @@ DatabaseCustomURL http://sigs.interserver.net/shell.ldb
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
</code></pre></div></li> </code></pre></div></li>
<li>Restart ClamAV container: <li>Restart ClamAV container:
<div class="highlight"><pre><span></span><code>docker compose restart clamd-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart clamd-mailcow
</code></pre></div></li> </code></pre></div></li>
</ol> </ol>
@ -2539,7 +2539,7 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2413,7 +2413,7 @@
<h2 id="whitelist-specific-clamav-signatures">Whitelist specific ClamAV signatures<a class="headerlink" href="#whitelist-specific-clamav-signatures" title="Permanent link">&para;</a></h2> <h2 id="whitelist-specific-clamav-signatures">Whitelist specific ClamAV signatures<a class="headerlink" href="#whitelist-specific-clamav-signatures" title="Permanent link">&para;</a></h2>
<p>You may find that legitimate (clean) mail is being blocked by ClamAV (Rspamd will flag the mail with <code>VIRUS_FOUND</code>). For instance, interactive PDF form attachments are blocked by default because the embedded Javascript code may be used for nefarious purposes. Confirm by looking at the clamd logs, e.g.:</p> <p>You may find that legitimate (clean) mail is being blocked by ClamAV (Rspamd will flag the mail with <code>VIRUS_FOUND</code>). For instance, interactive PDF form attachments are blocked by default because the embedded Javascript code may be used for nefarious purposes. Confirm by looking at the clamd logs, e.g.:</p>
<div class="highlight"><pre><span></span><code>docker compose logs clamd-mailcow <span class="p">|</span> grep <span class="s2">&quot;FOUND&quot;</span> <div class="highlight"><pre><span></span><code>docker-compose logs clamd-mailcow <span class="p">|</span> grep <span class="s2">&quot;FOUND&quot;</span>
</code></pre></div> </code></pre></div>
<p>This line confirms that such was identified:</p> <p>This line confirms that such was identified:</p>
<div class="highlight"><pre><span></span><code>clamd-mailcow_1 | Sat Sep 28 07:43:24 2019 -&gt; instream(local): PUA.Pdf.Trojan.EmbeddedJavaScript-1(e887d2ac324ce90750768b86b63d0749:363325) FOUND <div class="highlight"><pre><span></span><code>clamd-mailcow_1 | Sat Sep 28 07:43:24 2019 -&gt; instream(local): PUA.Pdf.Trojan.EmbeddedJavaScript-1(e887d2ac324ce90750768b86b63d0749:363325) FOUND
@ -2421,11 +2421,11 @@
<p>To whitelist this particular signature (and enable sending this type of file attached), add it to the ClamAV signature whitelist file:</p> <p>To whitelist this particular signature (and enable sending this type of file attached), add it to the ClamAV signature whitelist file:</p>
<div class="highlight"><pre><span></span><code><span class="nb">echo</span> <span class="s1">&#39;PUA.Pdf.Trojan.EmbeddedJavaScript-1&#39;</span> &gt;&gt; data/conf/clamav/whitelist.ign2 <div class="highlight"><pre><span></span><code><span class="nb">echo</span> <span class="s1">&#39;PUA.Pdf.Trojan.EmbeddedJavaScript-1&#39;</span> &gt;&gt; data/conf/clamav/whitelist.ign2
</code></pre></div> </code></pre></div>
<p>Then restart the clamd-mailcow service container in the mailcow UI or using docker compose:</p> <p>Then restart the clamd-mailcow service container in the mailcow UI or using docker-compose:</p>
<div class="highlight"><pre><span></span><code>docker compose restart clamd-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart clamd-mailcow
</code></pre></div> </code></pre></div>
<p>Cleanup cached ClamAV results in Redis:</p> <p>Cleanup cached ClamAV results in Redis:</p>
<div class="highlight"><pre><span></span><code># docker compose exec redis-mailcow /bin/sh <div class="highlight"><pre><span></span><code># docker-compose exec redis-mailcow /bin/sh
/data # redis-cli KEYS rs_cl* | xargs redis-cli DEL /data # redis-cli KEYS rs_cl* | xargs redis-cli DEL
/data # exit /data # exit
</code></pre></div> </code></pre></div>
@ -2435,7 +2435,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2369,7 +2369,7 @@
<div class="highlight"><pre><span></span><code>docker build data/Dockerfiles/service -t mailcow/$service <div class="highlight"><pre><span></span><code>docker build data/Dockerfiles/service -t mailcow/$service
</code></pre></div> </code></pre></div>
<p>Now auto-recreate modified containers:</p> <p>Now auto-recreate modified containers:</p>
<div class="highlight"><pre><span></span><code>docker compose up -d <div class="highlight"><pre><span></span><code>docker-compose up -d
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2377,7 +2377,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2366,14 +2366,14 @@
<p>This function can be re-enabled by setting <code>ACL_ANYONE</code> to <code>allow</code> in mailcow.conf:</p> <p>This function can be re-enabled by setting <code>ACL_ANYONE</code> to <code>allow</code> in mailcow.conf:</p>
<div class="highlight"><pre><span></span><code>ACL_ANYONE=allow <div class="highlight"><pre><span></span><code>ACL_ANYONE=allow
</code></pre></div> </code></pre></div>
<p>Apply the changes by running <code>docker compose up -d</code>.</p> <p>Apply the changes by running <code>docker-compose up -d</code>.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2469,16 +2469,16 @@
<h2 id="the-manual-way">The manual way<a class="headerlink" href="#the-manual-way" title="Permanent link">&para;</a></h2> <h2 id="the-manual-way">The manual way<a class="headerlink" href="#the-manual-way" title="Permanent link">&para;</a></h2>
<p>That said, let's dive in:</p> <p>That said, let's dive in:</p>
<p>Delete a user's mails inside the junk folder that <strong>are read</strong> and <strong>older</strong> than 4 hours</p> <p>Delete a user's mails inside the junk folder that <strong>are read</strong> and <strong>older</strong> than 4 hours</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm expunge -u &#39;mailbox@example.com&#39; mailbox &#39;Junk&#39; SEEN not SINCE 4h <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm expunge -u &#39;mailbox@example.com&#39; mailbox &#39;Junk&#39; SEEN not SINCE 4h
</code></pre></div> </code></pre></div>
<p>Delete <strong>all</strong> user's mails in the junk folder that are <strong>older</strong> than 7 days</p> <p>Delete <strong>all</strong> user's mails in the junk folder that are <strong>older</strong> than 7 days</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; savedbefore 7d <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; savedbefore 7d
</code></pre></div> </code></pre></div>
<p>Delete <strong>all</strong> mails (of all users) in <strong>all</strong> folders that are <strong>older</strong> than 52 weeks (internal date of the mail, not the date it was saved on the system =&gt; <code>before</code> instead of <code>savedbefore</code>). Useful for deleting very old mails on all users and folders (thus especially useful for GDPR-compliance).</p> <p>Delete <strong>all</strong> mails (of all users) in <strong>all</strong> folders that are <strong>older</strong> than 52 weeks (internal date of the mail, not the date it was saved on the system =&gt; <code>before</code> instead of <code>savedbefore</code>). Useful for deleting very old mails on all users and folders (thus especially useful for GDPR-compliance).</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
</code></pre></div> </code></pre></div>
<p>Delete mails inside a custom folder <strong>inside</strong> a user's inbox that are <strong>not</strong> flagged and <strong>older</strong> than 2 weeks</p> <p>Delete mails inside a custom folder <strong>inside</strong> a user's inbox that are <strong>not</strong> flagged and <strong>older</strong> than 2 weeks</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm expunge -u &#39;mailbox@example.com&#39; mailbox &#39;INBOX/custom-folder&#39; not FLAGGED not SINCE 2w <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm expunge -u &#39;mailbox@example.com&#39; mailbox &#39;INBOX/custom-folder&#39; not FLAGGED not SINCE 2w
</code></pre></div> </code></pre></div>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
@ -2491,8 +2491,8 @@
# Path to mailcow-dockerized, e.g. /opt/mailcow-dockerized # Path to mailcow-dockerized, e.g. /opt/mailcow-dockerized
cd /path/to/your/mailcow-dockerized cd /path/to/your/mailcow-dockerized
/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; savedbefore 2w /usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; savedbefore 2w
/usr/local/bin/docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; SEEN not SINCE 12h /usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox &#39;Junk&#39; SEEN not SINCE 12h
[...] [...]
</code></pre></div> </code></pre></div>
<p>To create a cron job you may execute <code>crontab -e</code> and insert something like the following to execute a script:</p> <p>To create a cron job you may execute <code>crontab -e</code> and insert something like the following to execute a script:</p>
@ -2533,7 +2533,7 @@ common.go:124 ▶ NOTICE [Job &quot;dovecot-expunge-trash&quot; (8759567efa66)]
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2364,7 +2364,7 @@
<p>Create a file <code>data/conf/dovecot/extra.conf</code> - if missing - and add your additional content here.</p> <p>Create a file <code>data/conf/dovecot/extra.conf</code> - if missing - and add your additional content here.</p>
<p>Restart <code>dovecot-mailcow</code> to apply your changes:</p> <p>Restart <code>dovecot-mailcow</code> to apply your changes:</p>
<div class="highlight"><pre><span></span><code>docker compose restart dovecot-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart dovecot-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2372,7 +2372,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2459,17 +2459,17 @@
<p>Since we run in Docker and create our containers with the "restart: always" flag, a oom situation will at least only trigger a restart of the container.</p> <p>Since we run in Docker and create our containers with the "restart: always" flag, a oom situation will at least only trigger a restart of the container.</p>
<h3 id="fts-related-dovecot-commands">FTS related Dovecot commands<a class="headerlink" href="#fts-related-dovecot-commands" title="Permanent link">&para;</a></h3> <h3 id="fts-related-dovecot-commands">FTS related Dovecot commands<a class="headerlink" href="#fts-related-dovecot-commands" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code># single user <div class="highlight"><pre><span></span><code># single user
docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain docker-compose exec dovecot-mailcow doveadm fts rescan -u user@domain
# all users # all users
docker compose exec dovecot-mailcow doveadm fts rescan -A docker-compose exec dovecot-mailcow doveadm fts rescan -A
</code></pre></div> </code></pre></div>
<p>Dovecot Wiki: "Scan what mails exist in the full text search index and compare those to what actually exist in mailboxes. This removes mails from the index that have already been expunged and makes sure that the next doveadm index will index all the missing mails (if any)."</p> <p>Dovecot Wiki: "Scan what mails exist in the full text search index and compare those to what actually exist in mailboxes. This removes mails from the index that have already been expunged and makes sure that the next doveadm index will index all the missing mails (if any)."</p>
<p>This does <strong>not</strong> re-index a mailbox. It basically repairs a given index.</p> <p>This does <strong>not</strong> re-index a mailbox. It basically repairs a given index.</p>
<p>If you want to re-index data immediately, you can run the followig command, where '*' can also be a mailbox mask like 'Sent'. You do not need to run these commands, but it will speed things up a bit:</p> <p>If you want to re-index data immediately, you can run the followig command, where '*' can also be a mailbox mask like 'Sent'. You do not need to run these commands, but it will speed things up a bit:</p>
<div class="highlight"><pre><span></span><code># single user <div class="highlight"><pre><span></span><code># single user
docker compose exec dovecot-mailcow doveadm index -u user@domain &#39;*&#39; docker-compose exec dovecot-mailcow doveadm index -u user@domain &#39;*&#39;
# all users, but obviously slower and more dangerous # all users, but obviously slower and more dangerous
docker compose exec dovecot-mailcow doveadm index -A &#39;*&#39; docker-compose exec dovecot-mailcow doveadm index -A &#39;*&#39;
</code></pre></div> </code></pre></div>
<p>This <strong>will</strong> take some time depending on your machine and Solr can run oom, monitor it!</p> <p>This <strong>will</strong> take some time depending on your machine and Solr can run oom, monitor it!</p>
<p>Because re-indexing is very sensible, we did not include it to mailcow UI. You will need to take care of any errors while re-indexing a mailbox.</p> <p>Because re-indexing is very sensible, we did not include it to mailcow UI. You will need to take care of any errors while re-indexing a mailbox.</p>
@ -2481,7 +2481,7 @@ docker compose exec dovecot-mailcow doveadm index -A &#39;*&#39;
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2486,12 +2486,12 @@ Insert the setting followed by the new value. For example, to set the interval t
</div> </div>
<h3 id="reload-dovecot">Reload Dovecot<a class="headerlink" href="#reload-dovecot" title="Permanent link">&para;</a></h3> <h3 id="reload-dovecot">Reload Dovecot<a class="headerlink" href="#reload-dovecot" title="Permanent link">&para;</a></h3>
<p>Now reload Dovecot: <p>Now reload Dovecot:
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow dovecot reload <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow dovecot reload
</code></pre></div></p> </code></pre></div></p>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
<p>You can check the value of this setting with <p>You can check the value of this setting with
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow dovecot -a | grep &quot;imap_idle_notify_interval&quot; <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow dovecot -a | grep &quot;imap_idle_notify_interval&quot;
</code></pre></div> </code></pre></div>
If you didn't change it, it should be at 2m. If you did change it, you should see your new value.</p> If you didn't change it, it should be at 2m. If you did change it, you should see your new value.</p>
</div> </div>
@ -2501,7 +2501,7 @@ If you didn't change it, it should be at 2m. If you did change it, you should se
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2364,7 +2364,7 @@
<p>Mails are stored compressed (lz4) and encrypted. The key pair can be found in crypt-vol-1.</p> <p>Mails are stored compressed (lz4) and encrypted. The key pair can be found in crypt-vol-1.</p>
<p>If you want to decode/encode existing maildir files, you can use the following script at your own risk:</p> <p>If you want to decode/encode existing maildir files, you can use the following script at your own risk:</p>
<p>Enter Dovecot by running <code>docker compose exec dovecot-mailcow /bin/bash</code> in the mailcow-dockerized location.</p> <p>Enter Dovecot by running <code>docker-compose exec dovecot-mailcow /bin/bash</code> in the mailcow-dockerized location.</p>
<div class="highlight"><pre><span></span><code># Decrypt /var/vmail <div class="highlight"><pre><span></span><code># Decrypt /var/vmail
find /var/vmail/ -type f -regextype egrep -regex &#39;.*S=.*W=.*&#39; | while read -r file; do find /var/vmail/ -type f -regextype egrep -regex &#39;.*S=.*W=.*&#39; | while read -r file; do
if [[ $(head -c7 &quot;$file&quot;) == &quot;CRYPTED&quot; ]]; then if [[ $(head -c7 &quot;$file&quot;) == &quot;CRYPTED&quot; ]]; then
@ -2396,7 +2396,7 @@ done
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2427,7 +2427,7 @@
<p><code>:INDEXPVT=~/public</code> can be omitted if per-user seen flags are not wanted.</p> <p><code>:INDEXPVT=~/public</code> can be omitted if per-user seen flags are not wanted.</p>
<p>The new mailbox in the public namespace will be auto-subscribed by users.</p> <p>The new mailbox in the public namespace will be auto-subscribed by users.</p>
<p>To allow all authenticated users access full to that new mailbox (not the whole namespace), run:</p> <p>To allow all authenticated users access full to that new mailbox (not the whole namespace), run:</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm acl set -A &quot;Public/Develcow&quot; &quot;authenticated&quot; lookup read write write-seen write-deleted insert post delete expunge create <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow doveadm acl set -A &quot;Public/Develcow&quot; &quot;authenticated&quot; lookup read write write-seen write-deleted insert post delete expunge create
</code></pre></div> </code></pre></div>
<p>Adjust the command to your needs if you like to assign more granular rights per user (use <code>-u user@domain</code> instead of <code>-A</code> for example).</p> <p>Adjust the command to your needs if you like to assign more granular rights per user (use <code>-u user@domain</code> instead of <code>-A</code> for example).</p>
<h2 id="allow-authenticated-users-access-to-the-whole-public-namespace">Allow authenticated users access to the whole public namespace<a class="headerlink" href="#allow-authenticated-users-access-to-the-whole-public-namespace" title="Permanent link">&para;</a></h2> <h2 id="allow-authenticated-users-access-to-the-whole-public-namespace">Allow authenticated users access to the whole public namespace<a class="headerlink" href="#allow-authenticated-users-access-to-the-whole-public-namespace" title="Permanent link">&para;</a></h2>
@ -2444,7 +2444,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2369,7 +2369,7 @@
<div class="highlight"><pre><span></span><code>DOVECOT_MASTER_USER=mymasteruser <div class="highlight"><pre><span></span><code>DOVECOT_MASTER_USER=mymasteruser
DOVECOT_MASTER_PASS=mysecretpass DOVECOT_MASTER_PASS=mysecretpass
</code></pre></div> </code></pre></div>
<p>Run <code>docker compose up -d</code> to apply your changes.</p> <p>Run <code>docker-compose up -d</code> to apply your changes.</p>
<p>The static master username will be expanded to <code>DOVECOT_MASTER_USER@mailcow.local</code>.</p> <p>The static master username will be expanded to <code>DOVECOT_MASTER_USER@mailcow.local</code>.</p>
<p>To login as <code>test@example.org</code> this would equal to <code>test@example.org*mymasteruser@mailcow.local</code> with the specified password above.</p> <p>To login as <code>test@example.org</code> this would equal to <code>test@example.org*mymasteruser@mailcow.local</code> with the specified password above.</p>
<p>A login to SOGo is not possible with this username. A click-to-login function for SOGo is available for admins as described <a href="https://mailcow.github.io/mailcow-dockerized-docs/debug-admin_login_sogo/">here</a> <p>A login to SOGo is not possible with this username. A click-to-login function for SOGo is available for admins as described <a href="https://mailcow.github.io/mailcow-dockerized-docs/debug-admin_login_sogo/">here</a>
@ -2380,7 +2380,7 @@ No master user is required.</p>
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2456,7 +2456,7 @@
<p class="admonition-title">Warning</p> <p class="admonition-title">Warning</p>
<p>Newer Docker versions seem to complain about existing volumes. You can fix this temporarily by removing the existing volume and start mailcow with the override file. But it seems to be problematic after a reboot (needs to be confirmed).</p> <p>Newer Docker versions seem to complain about existing volumes. You can fix this temporarily by removing the existing volume and start mailcow with the override file. But it seems to be problematic after a reboot (needs to be confirmed).</p>
</div> </div>
<p>An easy, dirty, yet stable workaround is to stop mailcow (<code>docker compose down</code>), remove <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data</code> and create a new link to your remote filesystem location, for example:</p> <p>An easy, dirty, yet stable workaround is to stop mailcow (<code>docker-compose down</code>), remove <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data</code> and create a new link to your remote filesystem location, for example:</p>
<div class="highlight"><pre><span></span><code>mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup <div class="highlight"><pre><span></span><code>mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup
ln -s /mnt/volume-xy/vmail_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data ln -s /mnt/volume-xy/vmail_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
</code></pre></div> </code></pre></div>
@ -2494,10 +2494,10 @@ volumes:
</code></pre></div> </code></pre></div>
<ul> <ul>
<li>Copy the content of the <code>Mountpoint</code> folder to the new location (e.g. <code>/data/mailcow/vmail</code>) using <code>cp -a</code>, <code>rsync -a</code> or a similar non strcuture breaking copy command</li> <li>Copy the content of the <code>Mountpoint</code> folder to the new location (e.g. <code>/data/mailcow/vmail</code>) using <code>cp -a</code>, <code>rsync -a</code> or a similar non strcuture breaking copy command</li>
<li>Stop mailcow by executing <code>docker compose down</code> from within your mailcow root folder (e.g. <code>/opt/mailcow-dockerized</code>)</li> <li>Stop mailcow by executing <code>docker-compose down</code> from within your mailcow root folder (e.g. <code>/opt/mailcow-dockerized</code>)</li>
<li>Create the file <code>docker-compose.override.yml</code>, edit the device path accordingly</li> <li>Create the file <code>docker-compose.override.yml</code>, edit the device path accordingly</li>
<li>Delete the current vmail folder: <code>docker volume rm mailcowdockerized_vmail-vol-1</code></li> <li>Delete the current vmail folder: <code>docker volume rm mailcowdockerized_vmail-vol-1</code></li>
<li>Start mailcow by executing <code>docker compose up -d</code> from within your mailcow root folder (e.g. <code>/opt/mailcow-dockerized</code>)</li> <li>Start mailcow by executing <code>docker-compose up -d</code> from within your mailcow root folder (e.g. <code>/opt/mailcow-dockerized</code>)</li>
</ul> </ul>
<hr> <hr>
@ -2505,7 +2505,7 @@ volumes:
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2543,8 +2543,8 @@
<p>This filename does not need to have a ".conf" extension but follows the pattern <code>site.*.custom</code>, where <code>*</code> is a custom name.</p> <p>This filename does not need to have a ".conf" extension but follows the pattern <code>site.*.custom</code>, where <code>*</code> is a custom name.</p>
<p>If PHP is to be included in a custom site, please use the PHP-FPM listener on phpfpm:9002 or create a new listener in <code>data/conf/phpfpm/php-fpm.d/pools.conf</code>.</p> <p>If PHP is to be included in a custom site, please use the PHP-FPM listener on phpfpm:9002 or create a new listener in <code>data/conf/phpfpm/php-fpm.d/pools.conf</code>.</p>
<p>Restart Nginx (and PHP-FPM, if a new listener was created):</p> <p>Restart Nginx (and PHP-FPM, if a new listener was created):</p>
<div class="highlight"><pre><span></span><code>docker compose restart nginx-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart nginx-mailcow
docker compose restart php-fpm-mailcow docker-compose restart php-fpm-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2552,7 +2552,7 @@ docker compose restart php-fpm-mailcow
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2385,19 +2385,19 @@
</span> } </span> }
} }
</code></pre></div> </code></pre></div>
<p>Save and restart Nginx: <code>docker compose restart nginx-mailcow</code>.</p> <p>Save and restart Nginx: <code>docker-compose restart nginx-mailcow</code>.</p>
<p>Now open <code>mailcow.conf</code> and find <code>ADDITIONAL_SAN</code>. <p>Now open <code>mailcow.conf</code> and find <code>ADDITIONAL_SAN</code>.
Add <code>webmail.example.org</code> to this array, don't use quotes!</p> Add <code>webmail.example.org</code> to this array, don't use quotes!</p>
<div class="highlight"><pre><span></span><code>ADDITIONAL_SAN=webmail.example.org <div class="highlight"><pre><span></span><code>ADDITIONAL_SAN=webmail.example.org
</code></pre></div> </code></pre></div>
<p>Run <code>docker compose up -d</code>. See "acme-mailcow" and "nginx-mailcow" logs if anything fails.</p> <p>Run <code>docker-compose up -d</code>. See "acme-mailcow" and "nginx-mailcow" logs if anything fails.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2364,7 +2364,7 @@
<p>Open <code>data/conf/postfix/extra.cf</code> and set the <code>message_size_limit</code> accordingly in bytes. See <code>main.cf</code> for the default value.</p> <p>Open <code>data/conf/postfix/extra.cf</code> and set the <code>message_size_limit</code> accordingly in bytes. See <code>main.cf</code> for the default value.</p>
<p>Restart Postfix:</p> <p>Restart Postfix:</p>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart postfix-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2372,7 +2372,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2437,7 +2437,7 @@
<div class="highlight"><pre><span></span><code>smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_access reject_authenticated_sender_login_mismatch [...] <div class="highlight"><pre><span></span><code>smtpd_sender_restrictions = check_sasl_access hash:/opt/postfix/conf/check_sasl_access reject_authenticated_sender_login_mismatch [...]
</code></pre></div></p> </code></pre></div></p>
<p>Run postmap on check_sasl_access:</p> <p>Run postmap on check_sasl_access:</p>
<div class="highlight"><pre><span></span><code>docker compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access <div class="highlight"><pre><span></span><code>docker-compose exec postfix-mailcow postmap /opt/postfix/conf/check_sasl_access
</code></pre></div> </code></pre></div>
<p>Restart the Postfix container.</p> <p>Restart the Postfix container.</p>
@ -2446,7 +2446,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2366,7 +2366,7 @@
<p>Postfix will complain about duplicate values once after starting postfix-mailcow, this is intended.</p> <p>Postfix will complain about duplicate values once after starting postfix-mailcow, this is intended.</p>
<p>Syslog-ng was configured to hide those warnings while Postfix is running, to not spam the log files with unnecessary information every time a service is used.</p> <p>Syslog-ng was configured to hide those warnings while Postfix is running, to not spam the log files with unnecessary information every time a service is used.</p>
<p>Restart <code>postfix-mailcow</code> to apply your changes:</p> <p>Restart <code>postfix-mailcow</code> to apply your changes:</p>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart postfix-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2374,7 +2374,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2464,14 +2464,14 @@
<p>Edit <code>data/conf/postfix/extra.cf</code>:</p> <p>Edit <code>data/conf/postfix/extra.cf</code>:</p>
<div class="highlight"><pre><span></span><code>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 <div class="highlight"><pre><span></span><code>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
</code></pre></div> </code></pre></div>
<p>Run <code>docker compose restart postfix-mailcow</code> to apply your new settings.</p> <p>Run <code>docker-compose restart postfix-mailcow</code> to apply your new settings.</p>
<h3 id="ipv6-hostssubnets">IPv6 hosts/subnets<a class="headerlink" href="#ipv6-hostssubnets" title="Permanent link">&para;</a></h3> <h3 id="ipv6-hostssubnets">IPv6 hosts/subnets<a class="headerlink" href="#ipv6-hostssubnets" title="Permanent link">&para;</a></h3>
<p>Adding IPv6 hosts is done the same as IPv4, however the subnet needs to be placed in brackets <code>[]</code> with the netmask appended.</p> <p>Adding IPv6 hosts is done the same as IPv4, however the subnet needs to be placed in brackets <code>[]</code> with the netmask appended.</p>
<p>To add the subnet 2001:db8::/32 to the trusted networks you may use the following configuration, depending on your IPV4_NETWORK and IPV6_NETWORK scopes:</p> <p>To add the subnet 2001:db8::/32 to the trusted networks you may use the following configuration, depending on your IPV4_NETWORK and IPV6_NETWORK scopes:</p>
<p>Edit <code>data/conf/postfix/extra.cf</code>:</p> <p>Edit <code>data/conf/postfix/extra.cf</code>:</p>
<div class="highlight"><pre><span></span><code>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 <div class="highlight"><pre><span></span><code>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
</code></pre></div> </code></pre></div>
<p>Run <code>docker compose restart postfix-mailcow</code> to apply your new settings.</p> <p>Run <code>docker-compose restart postfix-mailcow</code> to apply your new settings.</p>
<div class="admonition info"> <div class="admonition info">
<p class="admonition-title">Info</p> <p class="admonition-title">Info</p>
<p>More information about mynetworks can be found in the <a href="http://www.postfix.org/postconf.5.html#mynetworks">Postfix documentation</a>.</p> <p>More information about mynetworks can be found in the <a href="http://www.postfix.org/postconf.5.html#mynetworks">Postfix documentation</a>.</p>
@ -2482,7 +2482,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2492,13 +2492,13 @@
<p>Redis is used as a key-value store for rspamd's and (some of) mailcow's settings and data. If you are unfamiliar with redis please read the <a href="https://redis.io/topics/introduction">introduction to redis</a> and maybe visit this <a href="http://try.redis.io/">wonderful guide</a> on how to use it.</p> <p>Redis is used as a key-value store for rspamd's and (some of) mailcow's settings and data. If you are unfamiliar with redis please read the <a href="https://redis.io/topics/introduction">introduction to redis</a> and maybe visit this <a href="http://try.redis.io/">wonderful guide</a> on how to use it.</p>
<h2 id="client">Client<a class="headerlink" href="#client" title="Permanent link">&para;</a></h2> <h2 id="client">Client<a class="headerlink" href="#client" title="Permanent link">&para;</a></h2>
<p>To connect to the redis cli execute:</p> <p>To connect to the redis cli execute:</p>
<div class="highlight"><pre><span></span><code>docker compose exec redis-mailcow redis-cli <div class="highlight"><pre><span></span><code>docker-compose exec redis-mailcow redis-cli
</code></pre></div> </code></pre></div>
<h3 id="debugging">Debugging<a class="headerlink" href="#debugging" title="Permanent link">&para;</a></h3> <h3 id="debugging">Debugging<a class="headerlink" href="#debugging" title="Permanent link">&para;</a></h3>
<p>Here are some useful commands for the redis-cli for debugging:</p> <p>Here are some useful commands for the redis-cli for debugging:</p>
<h5 id="monitor">MONITOR<a class="headerlink" href="#monitor" title="Permanent link">&para;</a></h5> <h5 id="monitor">MONITOR<a class="headerlink" href="#monitor" title="Permanent link">&para;</a></h5>
<p>Listens for all requests received by the server in real time:</p> <p>Listens for all requests received by the server in real time:</p>
<div class="highlight"><pre><span></span><code># docker compose exec redis-mailcow redis-cli <div class="highlight"><pre><span></span><code># docker-compose exec redis-mailcow redis-cli
127.0.0.1:6379&gt; monitor 127.0.0.1:6379&gt; monitor
OK OK
1494077286.401963 [0 172.22.1.253:41228] &quot;SMEMBERS&quot; &quot;BAYES_SPAM_keys&quot; 1494077286.401963 [0 172.22.1.253:41228] &quot;SMEMBERS&quot; &quot;BAYES_SPAM_keys&quot;
@ -2521,7 +2521,7 @@ PONG
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2572,9 +2572,9 @@ This is achieved by using the Sieve plugin "sieve_imapsieve" and parser scripts.
<h3 id="learn-spam-or-ham-from-existing-directory">Learn Spam or Ham from existing directory<a class="headerlink" href="#learn-spam-or-ham-from-existing-directory" title="Permanent link">&para;</a></h3> <h3 id="learn-spam-or-ham-from-existing-directory">Learn Spam or Ham from existing directory<a class="headerlink" href="#learn-spam-or-ham-from-existing-directory" title="Permanent link">&para;</a></h3>
<p>You can use a one-liner to learn mail in plain-text (uncompressed) format:</p> <p>You can use a one-liner to learn mail in plain-text (uncompressed) format:</p>
<div class="highlight"><pre><span></span><code><span class="c1"># Ham</span> <div class="highlight"><pre><span></span><code><span class="c1"># Ham</span>
<span class="k">for</span> file <span class="k">in</span> /my/folder/cur/*<span class="p">;</span> <span class="k">do</span> docker <span class="nb">exec</span> -i <span class="k">$(</span>docker compose ps -q rspamd-mailcow<span class="k">)</span> rspamc learn_ham &lt; <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span> <span class="k">for</span> file <span class="k">in</span> /my/folder/cur/*<span class="p">;</span> <span class="k">do</span> docker <span class="nb">exec</span> -i <span class="k">$(</span>docker-compose ps -q rspamd-mailcow<span class="k">)</span> rspamc learn_ham &lt; <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span>
<span class="c1"># Spam</span> <span class="c1"># Spam</span>
<span class="k">for</span> file <span class="k">in</span> /my/folder/.Junk/cur/*<span class="p">;</span> <span class="k">do</span> docker <span class="nb">exec</span> -i <span class="k">$(</span>docker compose ps -q rspamd-mailcow<span class="k">)</span> rspamc learn_spam &lt; <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span> <span class="k">for</span> file <span class="k">in</span> /my/folder/.Junk/cur/*<span class="p">;</span> <span class="k">do</span> docker <span class="nb">exec</span> -i <span class="k">$(</span>docker-compose ps -q rspamd-mailcow<span class="k">)</span> rspamc learn_spam &lt; <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span>
</code></pre></div> </code></pre></div>
<p>Consider attaching a local folder as new volume to <code>rspamd-mailcow</code> in <code>docker-compose.yml</code> and learn given files inside the container. This can be used as workaround to parse compressed data with zcat. Example:</p> <p>Consider attaching a local folder as new volume to <code>rspamd-mailcow</code> in <code>docker-compose.yml</code> and learn given files inside the container. This can be used as workaround to parse compressed data with zcat. Example:</p>
<div class="highlight"><pre><span></span><code><span class="k">for</span> file <span class="k">in</span> /data/old_mail/.Junk/cur/*<span class="p">;</span> <span class="k">do</span> rspamc learn_spam &lt; zcat <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span> <div class="highlight"><pre><span></span><code><span class="k">for</span> file <span class="k">in</span> /data/old_mail/.Junk/cur/*<span class="p">;</span> <span class="k">do</span> rspamc learn_spam &lt; zcat <span class="nv">$file</span><span class="p">;</span> <span class="k">done</span>
@ -2586,15 +2586,15 @@ This is achieved by using the Sieve plugin "sieve_imapsieve" and parser scripts.
cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/ cp /var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb /root/
</code></pre></div> </code></pre></div>
<p><strong>Reset Bayes data</strong></p> <p><strong>Reset Bayes data</strong></p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern BAYES_* | xargs redis-cli del&#39;</span> <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern BAYES_* | xargs redis-cli del&#39;</span>
docker compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern RS* | xargs redis-cli del&#39;</span> docker-compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern RS* | xargs redis-cli del&#39;</span>
</code></pre></div> </code></pre></div>
<p><strong>Reset Neural data</strong></p> <p><strong>Reset Neural data</strong></p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern rn_* | xargs redis-cli del&#39;</span> <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> redis-mailcow sh -c <span class="s1">&#39;redis-cli --scan --pattern rn_* | xargs redis-cli del&#39;</span>
</code></pre></div> </code></pre></div>
<p><strong>Reset Fuzzy data</strong></p> <p><strong>Reset Fuzzy data</strong></p>
<div class="highlight"><pre><span></span><code><span class="c1"># We need to enter the redis-cli first:</span> <div class="highlight"><pre><span></span><code><span class="c1"># We need to enter the redis-cli first:</span>
docker compose <span class="nb">exec</span> redis-mailcow redis-cli docker-compose <span class="nb">exec</span> redis-mailcow redis-cli
<span class="c1"># In redis-cli:</span> <span class="c1"># In redis-cli:</span>
<span class="m">127</span>.0.0.1:6379&gt; EVAL <span class="s2">&quot;for i, name in ipairs(redis.call(&#39;KEYS&#39;, ARGV[1])) do redis.call(&#39;DEL&#39;, name); end&quot;</span> <span class="m">0</span> fuzzy* <span class="m">127</span>.0.0.1:6379&gt; EVAL <span class="s2">&quot;for i, name in ipairs(redis.call(&#39;KEYS&#39;, ARGV[1])) do redis.call(&#39;DEL&#39;, name); end&quot;</span> <span class="m">0</span> fuzzy*
</code></pre></div> </code></pre></div>
@ -2604,8 +2604,8 @@ docker compose <span class="nb">exec</span> redis-mailcow redis-cli
</code></pre></div> </code></pre></div>
<p>...the key pattern was not found and thus no data is available to delete - it is fine.</p> <p>...the key pattern was not found and thus no data is available to delete - it is fine.</p>
<h2 id="cli-tools">CLI tools<a class="headerlink" href="#cli-tools" title="Permanent link">&para;</a></h2> <h2 id="cli-tools">CLI tools<a class="headerlink" href="#cli-tools" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> rspamd-mailcow rspamc --help <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> rspamd-mailcow rspamc --help
docker compose <span class="nb">exec</span> rspamd-mailcow rspamadm --help docker-compose <span class="nb">exec</span> rspamd-mailcow rspamadm --help
</code></pre></div> </code></pre></div>
<h2 id="disable-greylisting">Disable Greylisting<a class="headerlink" href="#disable-greylisting" title="Permanent link">&para;</a></h2> <h2 id="disable-greylisting">Disable Greylisting<a class="headerlink" href="#disable-greylisting" title="Permanent link">&para;</a></h2>
<p>Only messages with a higher score will be considered to be greylisted (soft rejected). It is bad practice to disable greylisting.</p> <p>Only messages with a higher score will be considered to be greylisted (soft rejected). It is bad practice to disable greylisting.</p>
@ -2614,26 +2614,26 @@ docker compose <span class="nb">exec</span> rspamd-mailcow rspamadm --help
<p>Add the line:</p> <p>Add the line:</p>
<div class="highlight"><pre><span></span><code><span class="n">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="n">enabled</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span><span class="w"></span>
</code></pre></div> </code></pre></div>
<p>Save the file and restart "rspamd-mailcow": <code>docker compose restart rspamd-mailcow</code></p> <p>Save the file and restart "rspamd-mailcow": <code>docker-compose restart rspamd-mailcow</code></p>
<h2 id="spam-filter-thresholds-global">Spam filter thresholds (global)<a class="headerlink" href="#spam-filter-thresholds-global" title="Permanent link">&para;</a></h2> <h2 id="spam-filter-thresholds-global">Spam filter thresholds (global)<a class="headerlink" href="#spam-filter-thresholds-global" title="Permanent link">&para;</a></h2>
<p>Each user is able to change <a href="../../mailcow-UI/u_e-mailcow_ui-spamfilter/">their spam rating individually</a>. To define a new <strong>server-wide</strong> limit, edit <code>data/conf/rspamd/local.d/actions.conf</code>:</p> <p>Each user is able to change <a href="../../mailcow-UI/u_e-mailcow_ui-spamfilter/">their spam rating individually</a>. To define a new <strong>server-wide</strong> limit, edit <code>data/conf/rspamd/local.d/actions.conf</code>:</p>
<div class="highlight"><pre><span></span><code><span class="n">reject</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">15</span><span class="p">;</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="n">reject</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">15</span><span class="p">;</span><span class="w"></span>
<span class="n">add_header</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">8</span><span class="p">;</span><span class="w"></span> <span class="n">add_header</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">8</span><span class="p">;</span><span class="w"></span>
<span class="n">greylist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">7</span><span class="p">;</span><span class="w"></span> <span class="n">greylist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">7</span><span class="p">;</span><span class="w"></span>
</code></pre></div> </code></pre></div>
<p>Save the file and restart "rspamd-mailcow": <code>docker compose restart rspamd-mailcow</code></p> <p>Save the file and restart "rspamd-mailcow": <code>docker-compose restart rspamd-mailcow</code></p>
<p>Existing settings of users will not be overwritten!</p> <p>Existing settings of users will not be overwritten!</p>
<p>To reset custom defined thresholds, run:</p> <p>To reset custom defined thresholds, run:</p>
<div class="highlight"><pre><span></span><code>source mailcow.conf <div class="highlight"><pre><span></span><code>source mailcow.conf
docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39;;&quot; docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39;;&quot;
# or: # or:
# docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39; and object = &#39;only-this-mailbox@example.org&#39;;&quot; # docker-compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39; and object = &#39;only-this-mailbox@example.org&#39;;&quot;
</code></pre></div> </code></pre></div>
<h2 id="custom-reject-messages">Custom reject messages<a class="headerlink" href="#custom-reject-messages" title="Permanent link">&para;</a></h2> <h2 id="custom-reject-messages">Custom reject messages<a class="headerlink" href="#custom-reject-messages" title="Permanent link">&para;</a></h2>
<p>The default spam reject message can be changed by adding a new file <code>data/conf/rspamd/override.d/worker-proxy.custom.inc</code> with the following content:</p> <p>The default spam reject message can be changed by adding a new file <code>data/conf/rspamd/override.d/worker-proxy.custom.inc</code> with the following content:</p>
<div class="highlight"><pre><span></span><code>reject_message = &quot;My custom reject message&quot;; <div class="highlight"><pre><span></span><code>reject_message = &quot;My custom reject message&quot;;
</code></pre></div> </code></pre></div>
<p>Save the file and restart Rspamd: <code>docker compose restart rspamd-mailcow</code>.</p> <p>Save the file and restart Rspamd: <code>docker-compose restart rspamd-mailcow</code>.</p>
<p>While the above works for rejected mails with a high spam score, prefilter reject actions will ignore this setting. For these maps, the multimap module in Rspamd needs to be adjusted:</p> <p>While the above works for rejected mails with a high spam score, prefilter reject actions will ignore this setting. For these maps, the multimap module in Rspamd needs to be adjusted:</p>
<ol> <ol>
<li> <li>
@ -2653,27 +2653,27 @@ docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;del
} }
</code></pre></div> </code></pre></div>
<ol> <ol>
<li>Save the file and restart Rspamd: <code>docker compose restart rspamd-mailcow</code>.</li> <li>Save the file and restart Rspamd: <code>docker-compose restart rspamd-mailcow</code>.</li>
</ol> </ol>
<h2 id="discard-instead-of-reject">Discard instead of reject<a class="headerlink" href="#discard-instead-of-reject" title="Permanent link">&para;</a></h2> <h2 id="discard-instead-of-reject">Discard instead of reject<a class="headerlink" href="#discard-instead-of-reject" title="Permanent link">&para;</a></h2>
<p>If you want to silently drop a message, create or edit the file <code>data/conf/rspamd/override.d/worker-proxy.custom.inc</code> and add the following content:</p> <p>If you want to silently drop a message, create or edit the file <code>data/conf/rspamd/override.d/worker-proxy.custom.inc</code> and add the following content:</p>
<div class="highlight"><pre><span></span><code>discard_on_reject = true; <div class="highlight"><pre><span></span><code>discard_on_reject = true;
</code></pre></div> </code></pre></div>
<p>Restart Rspamd:</p> <p>Restart Rspamd:</p>
<div class="highlight"><pre><span></span><code>docker compose restart rspamd-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart rspamd-mailcow
</code></pre></div> </code></pre></div>
<h2 id="wipe-all-ratelimit-keys">Wipe all ratelimit keys<a class="headerlink" href="#wipe-all-ratelimit-keys" title="Permanent link">&para;</a></h2> <h2 id="wipe-all-ratelimit-keys">Wipe all ratelimit keys<a class="headerlink" href="#wipe-all-ratelimit-keys" title="Permanent link">&para;</a></h2>
<p>If you don't want to use the UI and instead wipe all keys in the Redis database, you can use redis-cli for that task:</p> <p>If you don't want to use the UI and instead wipe all keys in the Redis database, you can use redis-cli for that task:</p>
<div class="highlight"><pre><span></span><code>docker compose exec redis-mailcow sh <div class="highlight"><pre><span></span><code>docker-compose exec redis-mailcow sh
# Unlink (available in Redis &gt;=4.) will delete in the backgronud # Unlink (available in Redis &gt;=4.) will delete in the backgronud
redis-cli --scan --pattern RL* | xargs redis-cli unlink redis-cli --scan --pattern RL* | xargs redis-cli unlink
</code></pre></div> </code></pre></div>
<p>Restart Rspamd:</p> <p>Restart Rspamd:</p>
<div class="highlight"><pre><span></span><code>docker compose <span class="nb">exec</span> redis-mailcow sh <div class="highlight"><pre><span></span><code>docker-compose <span class="nb">exec</span> redis-mailcow sh
</code></pre></div> </code></pre></div>
<h2 id="trigger-a-resend-of-quarantine-notifications">Trigger a resend of quarantine notifications<a class="headerlink" href="#trigger-a-resend-of-quarantine-notifications" title="Permanent link">&para;</a></h2> <h2 id="trigger-a-resend-of-quarantine-notifications">Trigger a resend of quarantine notifications<a class="headerlink" href="#trigger-a-resend-of-quarantine-notifications" title="Permanent link">&para;</a></h2>
<p>Should be used for debugging only!</p> <p>Should be used for debugging only!</p>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow bash <div class="highlight"><pre><span></span><code>docker-compose exec dovecot-mailcow bash
mysql -umailcow -p$DBPASS mailcow -e &quot;update quarantine set notified = 0;&quot; mysql -umailcow -p$DBPASS mailcow -e &quot;update quarantine set notified = 0;&quot;
redis-cli -h redis DEL Q_LAST_NOTIFIED redis-cli -h redis DEL Q_LAST_NOTIFIED
quarantine_notify.py quarantine_notify.py
@ -2685,14 +2685,14 @@ quarantine_notify.py
<p>Edit <code>data/conf/rspamd/local.d/history_redis.conf</code>:</p> <p>Edit <code>data/conf/rspamd/local.d/history_redis.conf</code>:</p>
<div class="highlight"><pre><span></span><code>nrows = 1000; # change this value <div class="highlight"><pre><span></span><code>nrows = 1000; # change this value
</code></pre></div> </code></pre></div>
<p>Restart Rspamd afterwards: <code>docker compose restart rspamd-mailcow</code></p> <p>Restart Rspamd afterwards: <code>docker-compose restart rspamd-mailcow</code></p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2501,7 +2501,7 @@ Please check the AngularJS Material <a href="https://material.angularjs.org/late
After you modified <code>data/conf/sogo/custom-theme.js</code> and made changes to your new SOGo theme you need to </p> After you modified <code>data/conf/sogo/custom-theme.js</code> and made changes to your new SOGo theme you need to </p>
<ol> <ol>
<li>edit <code>data/conf/sogo/sogo.conf</code> and append/set <code>SOGoUIxDebugEnabled = YES;</code></li> <li>edit <code>data/conf/sogo/sogo.conf</code> and append/set <code>SOGoUIxDebugEnabled = YES;</code></li>
<li>restart SOGo and Memcached containers by executing <code>docker compose restart memcached-mailcow sogo-mailcow</code>.</li> <li>restart SOGo and Memcached containers by executing <code>docker-compose restart memcached-mailcow sogo-mailcow</code>.</li>
<li>open SOGo in browser</li> <li>open SOGo in browser</li>
<li>open browser developer console, usually shortcut is F12</li> <li>open browser developer console, usually shortcut is F12</li>
<li>only if you use Firefox: write by hands in dev console <code>allow pasting</code> and press enter</li> <li>only if you use Firefox: write by hands in dev console <code>allow pasting</code> and press enter</li>
@ -2524,8 +2524,8 @@ services:
volumes: volumes:
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z - ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
</code></pre></div></li> </code></pre></div></li>
<li>run <code>docker compose up -d</code></li> <li>run <code>docker-compose up -d</code></li>
<li>run <code>docker compose restart memcached-mailcow</code></li> <li>run <code>docker-compose restart memcached-mailcow</code></li>
</ol> </ol>
<h2 id="reset-to-sogo-default-theme">Reset to SOGo default theme<a class="headerlink" href="#reset-to-sogo-default-theme" title="Permanent link">&para;</a></h2> <h2 id="reset-to-sogo-default-theme">Reset to SOGo default theme<a class="headerlink" href="#reset-to-sogo-default-theme" title="Permanent link">&para;</a></h2>
<ol> <ol>
@ -2553,17 +2553,17 @@ and replace it with:
<li>remove from <code>docker-compose.override.yml</code> volume mount in <code>sogo-mailcow</code>: <li>remove from <code>docker-compose.override.yml</code> volume mount in <code>sogo-mailcow</code>:
<div class="highlight"><pre><span></span><code>- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z <div class="highlight"><pre><span></span><code>- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
</code></pre></div></li> </code></pre></div></li>
<li>run <code>docker compose up -d</code></li> <li>run <code>docker-compose up -d</code></li>
<li>run <code>docker compose restart memcached-mailcow</code></li> <li>run <code>docker-compose restart memcached-mailcow</code></li>
</ol> </ol>
<h2 id="change-favicon">Change favicon<a class="headerlink" href="#change-favicon" title="Permanent link">&para;</a></h2> <h2 id="change-favicon">Change favicon<a class="headerlink" href="#change-favicon" title="Permanent link">&para;</a></h2>
<p>mailcow builds after 31 January 2021 can change SOGo's favicon by replacing <code>data/conf/sogo/custom-favicon.ico</code> for SOGo and <code>data/web/favicon.png</code> for mailcow UI. <p>mailcow builds after 31 January 2021 can change SOGo's favicon by replacing <code>data/conf/sogo/custom-favicon.ico</code> for SOGo and <code>data/web/favicon.png</code> for mailcow UI.
<strong>Note</strong>: You can use <code>.png</code> favicons for SOGo by renaming them to <code>custom-favicon.ico</code>. <strong>Note</strong>: You can use <code>.png</code> favicons for SOGo by renaming them to <code>custom-favicon.ico</code>.
For both SOGo and mailcow UI favicons you need use one of the standard dimensions: 16x16, 32x32, 64x64, 128x128 and 256x256. For both SOGo and mailcow UI favicons you need use one of the standard dimensions: 16x16, 32x32, 64x64, 128x128 and 256x256.
After you replaced said file you need to restart SOGo and Memcached containers by executing <code>docker compose restart memcached-mailcow sogo-mailcow</code>.</p> After you replaced said file you need to restart SOGo and Memcached containers by executing <code>docker-compose restart memcached-mailcow sogo-mailcow</code>.</p>
<h2 id="change-logo">Change logo<a class="headerlink" href="#change-logo" title="Permanent link">&para;</a></h2> <h2 id="change-logo">Change logo<a class="headerlink" href="#change-logo" title="Permanent link">&para;</a></h2>
<p>mailcow builds after 21 December 2018 can change SOGo's logo by replacing or creating (if missing) <code>data/conf/sogo/sogo-full.svg</code>. <p>mailcow builds after 21 December 2018 can change SOGo's logo by replacing or creating (if missing) <code>data/conf/sogo/sogo-full.svg</code>.
After you replaced said file you need to restart SOGo and Memcached containers by executing <code>docker compose restart memcached-mailcow sogo-mailcow</code>.</p> After you replaced said file you need to restart SOGo and Memcached containers by executing <code>docker-compose restart memcached-mailcow sogo-mailcow</code>.</p>
<h2 id="connect-domains">Connect domains<a class="headerlink" href="#connect-domains" title="Permanent link">&para;</a></h2> <h2 id="connect-domains">Connect domains<a class="headerlink" href="#connect-domains" title="Permanent link">&para;</a></h2>
<p>Domains are usually isolated from eachother.</p> <p>Domains are usually isolated from eachother.</p>
<p>You can change that by modifying <code>data/conf/sogo/sogo.conf</code>:</p> <p>You can change that by modifying <code>data/conf/sogo/sogo.conf</code>:</p>
@ -2578,19 +2578,19 @@ After you replaced said file you need to restart SOGo and Memcached containers b
(example.org, example.com, example.net) (example.org, example.com, example.net)
); );
</code></pre></div> </code></pre></div>
<p>Restart SOGo: <code>docker compose restart sogo-mailcow</code></p> <p>Restart SOGo: <code>docker-compose restart sogo-mailcow</code></p>
<h2 id="disable-password-changing">Disable password changing<a class="headerlink" href="#disable-password-changing" title="Permanent link">&para;</a></h2> <h2 id="disable-password-changing">Disable password changing<a class="headerlink" href="#disable-password-changing" title="Permanent link">&para;</a></h2>
<p>Edit <code>data/conf/sogo/sogo.conf</code> and <strong>change</strong> <code>SOGoPasswordChangeEnabled</code> to <code>NO</code>. Please do not add a new parameter.</p> <p>Edit <code>data/conf/sogo/sogo.conf</code> and <strong>change</strong> <code>SOGoPasswordChangeEnabled</code> to <code>NO</code>. Please do not add a new parameter.</p>
<p>Run <code>docker compose restart memcached-mailcow sogo-mailcow</code> to activate the changes.</p> <p>Run <code>docker-compose restart memcached-mailcow sogo-mailcow</code> to activate the changes.</p>
<h2 id="reset-totp-disable-totp">Reset TOTP / Disable TOTP<a class="headerlink" href="#reset-totp-disable-totp" title="Permanent link">&para;</a></h2> <h2 id="reset-totp-disable-totp">Reset TOTP / Disable TOTP<a class="headerlink" href="#reset-totp-disable-totp" title="Permanent link">&para;</a></h2>
<p>Run <code>docker compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}'</code> from within the mailcow directory.</p> <p>Run <code>docker-compose exec -u sogo sogo-mailcow sogo-tool user-preferences set defaults user@example.com SOGoTOTPEnabled '{"SOGoTOTPEnabled":0}'</code> from within the mailcow directory.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2439,21 +2439,21 @@
forward-addr: 8.8.4.4 # DO NOT USE PUBLIC DNS SERVERS - JUST AN EXAMPLE forward-addr: 8.8.4.4 # DO NOT USE PUBLIC DNS SERVERS - JUST AN EXAMPLE
</code></pre></div> </code></pre></div>
<p>Restart Unbound:</p> <p>Restart Unbound:</p>
<div class="highlight"><pre><span></span><code>docker compose restart unbound-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart unbound-mailcow
</code></pre></div> </code></pre></div>
<h2 id="method-b-override-file">Method B, Override file<a class="headerlink" href="#method-b-override-file" title="Permanent link">&para;</a></h2> <h2 id="method-b-override-file">Method B, Override file<a class="headerlink" href="#method-b-override-file" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized <div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.override.yml . cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.override.yml .
</code></pre></div> </code></pre></div>
<p>Edit <code>docker-compose.override.yml</code> and adjust the IP.</p> <p>Edit <code>docker-compose.override.yml</code> and adjust the IP.</p>
<p>Run <code>docker compose down ; docker compose up -d</code>.</p> <p>Run <code>docker-compose down ; docker-compose up -d</code>.</p>
<hr> <hr>
<div class="md-source-file"> <div class="md-source-file">
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2683,7 +2683,7 @@ Example:
- MAILQ_THRESHOLD=${MAILQ_THRESHOLD:-20} - MAILQ_THRESHOLD=${MAILQ_THRESHOLD:-20}
- MAILQ_CRIT=${MAILQ_CRIT:-30} - MAILQ_CRIT=${MAILQ_CRIT:-30}
</code></pre></div></p> </code></pre></div></p>
<p>To adjust them just add necessary threshold variables (e.g. <code>MAILQ_THRESHOLD=10</code>) to <code>mailcow.conf</code> and run <code>docker compose up -d</code>.</p> <p>To adjust them just add necessary threshold variables (e.g. <code>MAILQ_THRESHOLD=10</code>) to <code>mailcow.conf</code> and run <code>docker-compose up -d</code>.</p>
<h3 id="thresholds-descriptions">Thresholds descriptions<a class="headerlink" href="#thresholds-descriptions" title="Permanent link">&para;</a></h3> <h3 id="thresholds-descriptions">Thresholds descriptions<a class="headerlink" href="#thresholds-descriptions" title="Permanent link">&para;</a></h3>
<h4 id="nginx_threshold">NGINX_THRESHOLD<a class="headerlink" href="#nginx_threshold" title="Permanent link">&para;</a></h4> <h4 id="nginx_threshold">NGINX_THRESHOLD<a class="headerlink" href="#nginx_threshold" title="Permanent link">&para;</a></h4>
<p>Notifies administrators if watchdog can not establish a connection to Nginx on port 8081 and it will restart the container automatically when issues were found and the threshold has been reached.</p> <p>Notifies administrators if watchdog can not establish a connection to Nginx on port 8081 and it will restart the container automatically when issues were found and the threshold has been reached.</p>
@ -2725,7 +2725,7 @@ Example:
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 15:19:55</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2620,7 +2620,7 @@ Finally, enter your current account password and, after selecting the <code>Touc
<h3 id="disable-unofficial-supported-fido-security-keys">Disable unofficial supported Fido Security Keys<a class="headerlink" href="#disable-unofficial-supported-fido-security-keys" title="Permanent link">&para;</a></h3> <h3 id="disable-unofficial-supported-fido-security-keys">Disable unofficial supported Fido Security Keys<a class="headerlink" href="#disable-unofficial-supported-fido-security-keys" title="Permanent link">&para;</a></h3>
<p>With WebAuthn there is the possibility to use only official Fido Security Keys (from the big brands like: Yubico, Apple, Nitro, Google, Huawei, Microsoft, etc.).</p> <p>With WebAuthn there is the possibility to use only official Fido Security Keys (from the big brands like: Yubico, Apple, Nitro, Google, Huawei, Microsoft, etc.).</p>
<p>This is primarily for security purposes, as it allows administrators to ensure that only official hardware can be used in their environment.</p> <p>This is primarily for security purposes, as it allows administrators to ensure that only official hardware can be used in their environment.</p>
<p>To enable this feature, change the value <code>WEBAUTHN_ONLY_TRUSTED_VENDORS</code> in mailcow.conf from <code>n</code> to <code>y</code> and restart the affected containers with <code>docker compose up -d</code>.</p> <p>To enable this feature, change the value <code>WEBAUTHN_ONLY_TRUSTED_VENDORS</code> in mailcow.conf from <code>n</code> to <code>y</code> and restart the affected containers with <code>docker-compose up -d</code>.</p>
<p>The mailcow will now use the Vendor Certificates located in your mailcow directory under <code>data/web/inc/lib/WebAuthn/rootCertificates</code>. </p> <p>The mailcow will now use the Vendor Certificates located in your mailcow directory under <code>data/web/inc/lib/WebAuthn/rootCertificates</code>. </p>
<h5 id="example">Example:<a class="headerlink" href="#example" title="Permanent link">&para;</a></h5> <h5 id="example">Example:<a class="headerlink" href="#example" title="Permanent link">&para;</a></h5>
<p>If you want to limit the official Vendor devices to Apple only you only need the Apple Vendor Certificate inside the <code>data/web/inc/lib/WebAuthn/rootCertificates</code>. <p>If you want to limit the official Vendor devices to Apple only you only need the Apple Vendor Certificate inside the <code>data/web/inc/lib/WebAuthn/rootCertificates</code>.
@ -2653,7 +2653,7 @@ These vendor certificates are only used to verify original hardware, not to secu
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2380,10 +2380,10 @@
} }
</code></pre></div> </code></pre></div>
<p>In case you changed the HTTP_BIND parameter, recreate the container:</p> <p>In case you changed the HTTP_BIND parameter, recreate the container:</p>
<div class="highlight"><pre><span></span><code>docker compose up -d <div class="highlight"><pre><span></span><code>docker-compose up -d
</code></pre></div> </code></pre></div>
<p>Otherwise restart Nginx:</p> <p>Otherwise restart Nginx:</p>
<div class="highlight"><pre><span></span><code>docker compose restart nginx-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart nginx-mailcow
</code></pre></div> </code></pre></div>
<hr> <hr>
@ -2391,7 +2391,7 @@
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Datei anzeigen

@ -2371,7 +2371,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
<div class="highlight"><pre><span></span><code>ssl_min_protocol = TLSv1 <div class="highlight"><pre><span></span><code>ssl_min_protocol = TLSv1
</code></pre></div> </code></pre></div>
<p>Restart the affected services:</p> <p>Restart the affected services:</p>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow dovecot-mailcow <div class="highlight"><pre><span></span><code>docker-compose restart postfix-mailcow dovecot-mailcow
</code></pre></div> </code></pre></div>
<p>Hint: You can enable TLS 1.2 in Windows 7.</p> <p>Hint: You can enable TLS 1.2 in Windows 7.</p>
@ -2380,7 +2380,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
<small> <small>
Last update: Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-02 14:32:36</span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-06-23 15:17:00</span>
</small> </small>

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden Mehr anzeigen