Dieser Commit ist enthalten in:
milkmaker 2023-01-13 17:35:18 +00:00
Ursprung dada86d326
Commit c87c840442
310 geänderte Dateien mit 9525 neuen und 2998 gelöschten Zeilen

Datei anzeigen

@ -73,8 +73,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2392,6 +2393,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2459,7 +2462,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "/", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "/assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "/", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "/assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="/assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -60,3 +60,8 @@ code {
:root {
--md-code-font: "Source Code Pro";
}
[data-md-color-scheme="slate"] {
--md-typeset-a-color: #6390e5;
}

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2482,11 +2483,45 @@
<p>We automatically create daily backups (24h interval starting from running up -d) in <code>/var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/</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>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>2. Run <code>docker compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org</code></p>
<ol>
<li>
<p>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>
</li>
<li>
<p>Run the following command:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-u<span class="w"> </span>sogo<span class="w"> </span>sogo-mailcow<span class="w"> </span>sogo-tool<span class="w"> </span>restore<span class="w"> </span>-F<span class="w"> </span>ALL<span class="w"> </span>/etc/sogo<span class="w"> </span>restoreme@example.org
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-u<span class="w"> </span>sogo<span class="w"> </span>sogo-mailcow<span class="w"> </span>sogo-tool<span class="w"> </span>restore<span class="w"> </span>-F<span class="w"> </span>ALL<span class="w"> </span>/etc/sogo<span class="w"> </span>restoreme@example.org
</code></pre></div>
</div>
</div>
</div>
<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>4. Restart SOGo and Memcached: <code>docker compose restart sogo-mailcow memcached-mailcow</code></p>
</li>
<li>
<p>Delete the copied backup by running <code>rm __MAILCOW_DIRECTORY__/data/conf/sogo</code></p>
</li>
<li>
<p>Restart SOGo and Memcached: </p>
</li>
</ol>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>sogo-mailcow<span class="w"> </span>memcached-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>sogo-mailcow<span class="w"> </span>memcached-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>A deleted mailbox is copied in its encrypted form to <code>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage</code>.</p>
@ -2494,16 +2529,27 @@
<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>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;
docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>force-resync<span class="w"> </span>-u<span class="w"> </span>restoreme@example.net<span class="w"> </span><span class="s1">&#39;*&#39;</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>quota<span class="w"> </span>recalc<span class="w"> </span>-u<span class="w"> </span>restoreme@example.net
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>force-resync<span class="w"> </span>-u<span class="w"> </span>restoreme@example.net<span class="w"> </span><span class="s1">&#39;*&#39;</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>quota<span class="w"> </span>recalc<span class="w"> </span>-u<span class="w"> </span>restoreme@example.net
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-10 12:08:32</span>
</small>
@ -2518,6 +2564,8 @@ docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2585,7 +2633,7 @@ docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2653,7 +2654,21 @@ fi
</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.
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:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>pull
docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>pull
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
@ -2662,7 +2677,7 @@ In case of a corrupted database you'd need to use the helper script to restore t
<small>
Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-10-25 14:46:12</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-10 12:08:32</span>
</small>
@ -2677,6 +2692,8 @@ In case of a corrupted database you'd need to use the helper script to restore t
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2744,7 +2761,7 @@ In case of a corrupted database you'd need to use the helper script to restore t
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2477,23 +2478,45 @@
<h1>Maildir</h1>
<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:
<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
</code></pre></div></p>
<p>This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/path/to/mailcow-dockerized
docker<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>-i<span class="w"> </span>-v<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>inspect<span class="w"> </span>--format<span class="w"> </span><span class="s1">&#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39;</span><span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>dovecot-mailcow<span class="k">))</span>:/vmail<span class="w"> </span>-v<span class="w"> </span><span class="si">${</span><span class="nv">PWD</span><span class="si">}</span>:/backup<span class="w"> </span>debian:bullseye-slim<span class="w"> </span>tar<span class="w"> </span>cvfz<span class="w"> </span>/backup/backup_vmail.tar.gz<span class="w"> </span>/vmail
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/path/to/mailcow-dockerized
docker<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>-i<span class="w"> </span>-v<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>inspect<span class="w"> </span>--format<span class="w"> </span><span class="s1">&#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39;</span><span class="w"> </span><span class="k">$(</span>docker-compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>dovecot-mailcow<span class="k">))</span>:/vmail<span class="w"> </span>-v<span class="w"> </span><span class="si">${</span><span class="nv">PWD</span><span class="si">}</span>:/backup<span class="w"> </span>debian:bullseye-slim<span class="w"> </span>tar<span class="w"> </span>cvfz<span class="w"> </span>/backup/backup_vmail.tar.gz<span class="w"> </span>/vmail
</code></pre></div>
</div>
</div>
</div>
<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>
<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
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
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/path/to/mailcow-dockerized
docker<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>-it<span class="w"> </span>-v<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>inspect<span class="w"> </span>--format<span class="w"> </span><span class="s1">&#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39;</span><span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>dovecot-mailcow<span class="k">))</span>:/vmail<span class="w"> </span>-v<span class="w"> </span><span class="si">${</span><span class="nv">PWD</span><span class="si">}</span>:/backup<span class="w"> </span>debian:bullseye-slim<span class="w"> </span>tar<span class="w"> </span>xvfz<span class="w"> </span>/backup/backup_vmail.tar.gz
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/path/to/mailcow-dockerized
docker<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>-it<span class="w"> </span>-v<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>inspect<span class="w"> </span>--format<span class="w"> </span><span class="s1">&#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39;</span><span class="w"> </span><span class="k">$(</span>docker-compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>dovecot-mailcow<span class="k">))</span>:/vmail<span class="w"> </span>-v<span class="w"> </span><span class="si">${</span><span class="nv">PWD</span><span class="si">}</span>:/backup<span class="w"> </span>debian:bullseye-slim<span class="w"> </span>tar<span class="w"> </span>xvfz<span class="w"> </span>/backup/backup_vmail.tar.gz
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-10 12:08:32</span>
</small>
@ -2508,6 +2531,8 @@ docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if e
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2575,7 +2600,7 @@ docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if e
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2477,19 +2478,41 @@
<h1>MySQL (mysqldump)</h1>
<h2 id="backup">Backup<a class="headerlink" href="#backup" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
source mailcow.conf
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
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/path/to/mailcow-dockerized
<span class="nb">source</span><span class="w"> </span>mailcow.conf
<span class="nv">DATE</span><span class="o">=</span><span class="k">$(</span>date<span class="w"> </span>+<span class="s2">&quot;%Y%m%d_%H%M%S&quot;</span><span class="k">)</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>mysql-mailcow<span class="w"> </span>mysqldump<span class="w"> </span>--default-character-set<span class="o">=</span>utf8mb4<span class="w"> </span>-u<span class="si">${</span><span class="nv">DBUSER</span><span class="si">}</span><span class="w"> </span>-p<span class="si">${</span><span class="nv">DBPASS</span><span class="si">}</span><span class="w"> </span><span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span><span class="w"> </span>&gt;<span class="w"> </span>backup_<span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span>_<span class="si">${</span><span class="nv">DATE</span><span class="si">}</span>.sql
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/path/to/mailcow-dockerized
<span class="nb">source</span><span class="w"> </span>mailcow.conf
<span class="nv">DATE</span><span class="o">=</span><span class="k">$(</span>date<span class="w"> </span>+<span class="s2">&quot;%Y%m%d_%H%M%S&quot;</span><span class="k">)</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>mysql-mailcow<span class="w"> </span>mysqldump<span class="w"> </span>--default-character-set<span class="o">=</span>utf8mb4<span class="w"> </span>-u<span class="si">${</span><span class="nv">DBUSER</span><span class="si">}</span><span class="w"> </span>-p<span class="si">${</span><span class="nv">DBPASS</span><span class="si">}</span><span class="w"> </span><span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span><span class="w"> </span>&gt;<span class="w"> </span>backup_<span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span>_<span class="si">${</span><span class="nv">DATE</span><span class="si">}</span>.sql
</code></pre></div>
</div>
</div>
</div>
<h2 id="restore">Restore<a class="headerlink" href="#restore" title="Permanent link">&para;</a></h2>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p>You should redirect the SQL dump without <code>docker compose</code> to prevent parsing errors.</p>
</div>
<div class="highlight"><pre><span></span><code>cd /path/to/mailcow-dockerized
source mailcow.conf
docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} &lt; backup_file.sql
<div class="tabbed-block">
<p>You should redirect the SQL dump without <code>docker-compose</code> to prevent parsing errors.</p>
</div>
</div>
</div>
</div>
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/path/to/mailcow-dockerized
<span class="nb">source</span><span class="w"> </span>mailcow.conf
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-i<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>mysql-mailcow<span class="k">)</span><span class="w"> </span>mysql<span class="w"> </span>-u<span class="si">${</span><span class="nv">DBUSER</span><span class="si">}</span><span class="w"> </span>-p<span class="si">${</span><span class="nv">DBPASS</span><span class="si">}</span><span class="w"> </span><span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span><span class="w"> </span>&lt;<span class="w"> </span>backup_file.sql
</code></pre></div>
<hr>
@ -2497,7 +2520,7 @@ docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPAS
<small>
Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-10 12:08:32</span>
</small>
@ -2512,6 +2535,8 @@ docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPAS
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2579,7 +2604,7 @@ docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPAS
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2516,7 +2517,19 @@
<p>To find the paths 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 an override file. Local bind mounts may or may not work.</p>
<p>The script uses 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>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 the command below (depending on your set docker compose type in mailcow.conf) and remove old image tags from the destination:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>pull
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>pull
</code></pre></div>
</div>
</div>
</div>
<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>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>
@ -2564,7 +2577,7 @@ The destination must have Docker and docker compose <strong>v2</strong> availabl
<small>
Last update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-10 12:08:32</span>
</small>
@ -2579,6 +2592,8 @@ The destination must have Docker and docker compose <strong>v2</strong> availabl
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2646,7 +2661,7 @@ The destination must have Docker and docker compose <strong>v2</strong> availabl
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2490,6 +2491,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2557,7 +2560,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2437,6 +2438,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2504,7 +2507,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2547,6 +2548,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2614,7 +2617,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2439,6 +2440,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2506,7 +2509,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2447,6 +2448,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2514,7 +2517,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2557,6 +2558,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2624,7 +2627,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2579,6 +2580,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2646,7 +2649,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2456,6 +2457,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2523,7 +2526,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2440,6 +2441,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2507,7 +2510,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>All Commands are available according to the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> and the <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Version</a> syntax</h4></center>
</div>
@ -2454,6 +2455,8 @@ Since you accessed this page after logging into your mailcow server, all of the
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2521,7 +2524,7 @@ Since you accessed this page after logging into your mailcow server, all of the
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -60,3 +60,8 @@ code {
:root {
--md-code-font: "Source Code Pro";
}
[data-md-color-scheme="slate"] {
--md-typeset-a-color: #6390e5;
}

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1333,7 +1334,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2480,30 +2481,75 @@
<p>Wenn Sie Ihren Fehler innerhalb von ein paar Stunden bemerken, können Sie die Daten des Benutzers wahrscheinlich wiederherstellen.</p>
<h3 id="sogo">SOGo<a class="headerlink" href="#sogo" title="Permanent link">&para;</a></h3>
<p>Wir erstellen automatisch tägliche Backups (24 Stunden Intervall ab dem Hochfahren -d) in <code>/var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/</code>.</p>
<p><strong>Stellen Sie sicher, dass der Benutzer, den Sie wiederherstellen wollen, in Ihrem Mailcow-Backend existiert</strong>. 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 existiert</strong>. 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>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>
<ol>
<li>
<p>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>
</li>
<li>
<p>Führen Sie folgenden Befehl aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-u<span class="w"> </span>sogo<span class="w"> </span>sogo-mailcow<span class="w"> </span>sogo-tool<span class="w"> </span>restore<span class="w"> </span>-F<span class="w"> </span>ALL<span class="w"> </span>/etc/sogo<span class="w"> </span>restoreme@example.org
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-u<span class="w"> </span>sogo<span class="w"> </span>sogo-mailcow<span class="w"> </span>sogo-tool<span class="w"> </span>restore<span class="w"> </span>-F<span class="w"> </span>ALL<span class="w"> </span>/etc/sogo<span class="w"> </span>restoreme@example.org
</code></pre></div>
</div>
</div>
</div>
<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>4. Starten Sie SOGo und Memcached neu: <code>docker compose restart sogo-mailcow memcached-mailcow</code></p>
</li>
<li>
<p>Löschen Sie die kopierte Sicherung, indem Sie <code>rm __MAILCOW_DIRECTORY__/data/conf/sogo</code> ausführen</p>
</li>
<li>
<p>Starten Sie SOGo und Memcached neu: </p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>sogo-mailcow<span class="w"> </span>memcached-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>sogo-mailcow<span class="w"> </span>memcached-mailcow
</code></pre></div>
</div>
</div>
</div>
</li>
</ol>
<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>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>Der Ordner innerhalb von <code>_garbage</code> folgt der Struktur <code>[timestamp]_[domain_sanitized][user_sanitized]</code>, zum Beispiel <code>1629109708_exampleorgtest</code> im Falle von <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#116;&#101;&#115;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#111;&#114;&#103;">&#116;&#101;&#115;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#111;&#114;&#103;</a>, das am 1629109708 gelöscht wurde.</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 die gleichen Verschlüsselungsschlüssel in <code>crypt-vol-1</code> verwenden.</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>Um die Mailbox wiederherzustellen, stellen Sie sicher, dass Sie tatsächlich auf die gleiche mailcow wiederherstellen, von der sie gelöscht wurde, oder Sie die gleichen Verschlüsselungsschlüssel in <code>crypt-vol-1</code> verwenden.</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>
<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
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>force-resync<span class="w"> </span>-u<span class="w"> </span>restoreme@example.net<span class="w"> </span><span class="s1">&#39;*&#39;</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>quota<span class="w"> </span>recalc<span class="w"> </span>-u<span class="w"> </span>restoreme@example.net
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>force-resync<span class="w"> </span>-u<span class="w"> </span>restoreme@example.net<span class="w"> </span><span class="s1">&#39;*&#39;</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>quota<span class="w"> </span>recalc<span class="w"> </span>-u<span class="w"> </span>restoreme@example.net
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2518,6 +2564,8 @@ docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2585,7 +2633,7 @@ docker compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.ne
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1380,7 +1381,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2653,7 +2654,21 @@ fi
</code></pre></div></p>
<p>Am Zielort (in diesem Fall <code>/external_share/backups</code>) möchten Sie vielleicht Snapshot-Möglichkeiten haben (ZFS, Btrfs usw.). Machen Sie täglich einen Snapshot und bewahren Sie ihn für n Tage auf, um ein konsistentes Backup zu erhalten.
Führen Sie <strong>kein</strong> rsync auf eine Samba-Freigabe durch, Sie müssen die richtigen Berechtigungen behalten!</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 folgende Befehle aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>pull
docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>pull
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<p>Wenn Sie Glück haben, können Redis und MariaDB die inkonsistenten Datenbanken automatisch reparieren (wenn sie inkonsistent <em>sind</em>).
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>
@ -2662,7 +2677,7 @@ Im Falle einer beschädigten Datenbank müssen Sie das Hilfsskript verwenden, um
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-10-25 14:46:12</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-10 12:08:32</span>
</small>
@ -2677,6 +2692,8 @@ Im Falle einer beschädigten Datenbank müssen Sie das Hilfsskript verwenden, um
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2744,7 +2761,7 @@ Im Falle einer beschädigten Datenbank müssen Sie das Hilfsskript verwenden, um
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1333,7 +1334,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2477,23 +2478,45 @@
<h1>Mail-Verzeichnis</h1>
<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:
<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
</code></pre></div></p>
<p>Diese Zeile sichert das vmail-Verzeichnis in eine Datei backup_vmail.tar.gz im mailcow-Root-Verzeichnis:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/pfad/zu/mailcow-dockerized
docker<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>-i<span class="w"> </span>-v<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>inspect<span class="w"> </span>--format<span class="w"> </span><span class="s1">&#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39;</span><span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>dovecot-mailcow<span class="k">))</span>:/vmail<span class="w"> </span>-v<span class="w"> </span><span class="si">${</span><span class="nv">PWD</span><span class="si">}</span>:/backup<span class="w"> </span>debian:bullseye-slim<span class="w"> </span>tar<span class="w"> </span>cvfz<span class="w"> </span>/backup/backup_vmail.tar.gz<span class="w"> </span>/vmail
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/pfad/zu/mailcow-dockerized
docker<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>-i<span class="w"> </span>-v<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>inspect<span class="w"> </span>--format<span class="w"> </span><span class="s1">&#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39;</span><span class="w"> </span><span class="k">$(</span>docker-compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>dovecot-mailcow<span class="k">))</span>:/vmail<span class="w"> </span>-v<span class="w"> </span><span class="si">${</span><span class="nv">PWD</span><span class="si">}</span>:/backup<span class="w"> </span>debian:bullseye-slim<span class="w"> </span>tar<span class="w"> </span>cvfz<span class="w"> </span>/backup/backup_vmail.tar.gz<span class="w"> </span>/vmail
</code></pre></div>
</div>
</div>
</div>
<p>Sie können den Pfad ändern, indem Sie ${PWD} (das dem aktuellen Verzeichnis entspricht) zu einem beliebigen Pfad ändern, auf den Sie Schreibzugriff haben.
Setzen Sie den Dateinamen <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_dateiname_.tar.gz</code></p>
<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
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
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/pfad/zu/mailcow-dockerized
docker<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>-it<span class="w"> </span>-v<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>inspect<span class="w"> </span>--format<span class="w"> </span><span class="s1">&#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39;</span><span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>dovecot-mailcow<span class="k">))</span>:/vmail<span class="w"> </span>-v<span class="w"> </span><span class="si">${</span><span class="nv">PWD</span><span class="si">}</span>:/backup<span class="w"> </span>debian:bullseye-slim<span class="w"> </span>tar<span class="w"> </span>xvfz<span class="w"> </span>/backup/backup_vmail.tar.gz
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/pfad/zu/mailcow-dockerized
docker<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </span>-it<span class="w"> </span>-v<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>inspect<span class="w"> </span>--format<span class="w"> </span><span class="s1">&#39;{{ range .Mounts }}{{ if eq .Destination &quot;/var/vmail&quot; }}{{ .Name }}{{ end }}{{ end }}&#39;</span><span class="w"> </span><span class="k">$(</span>docker-compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>dovecot-mailcow<span class="k">))</span>:/vmail<span class="w"> </span>-v<span class="w"> </span><span class="si">${</span><span class="nv">PWD</span><span class="si">}</span>:/backup<span class="w"> </span>debian:bullseye-slim<span class="w"> </span>tar<span class="w"> </span>xvfz<span class="w"> </span>/backup/backup_vmail.tar.gz
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-10 12:08:32</span>
</small>
@ -2508,6 +2531,8 @@ docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if e
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2575,7 +2600,7 @@ docker run --rm -it -v $(docker inspect --format &#39;{{ range .Mounts }}{{ if e
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1333,7 +1334,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2477,19 +2478,41 @@
<h1>MySQL (mysqldump)</h1>
<h2 id="sicherung">Sicherung<a class="headerlink" href="#sicherung" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized
source mailcow.conf
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
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/pfad/zu/mailcow-dockerized
<span class="nb">source</span><span class="w"> </span>mailcow.conf
<span class="nv">DATE</span><span class="o">=</span><span class="k">$(</span>date<span class="w"> </span>+<span class="s2">&quot;%Y%m%d_%H%M%S&quot;</span><span class="k">)</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>mysql-mailcow<span class="w"> </span>mysqldump<span class="w"> </span>--default-character-set<span class="o">=</span>utf8mb4<span class="w"> </span>-u<span class="si">${</span><span class="nv">DBUSER</span><span class="si">}</span><span class="w"> </span>-p<span class="si">${</span><span class="nv">DBPASS</span><span class="si">}</span><span class="w"> </span><span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span><span class="w"> </span>&gt;<span class="w"> </span>backup_<span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span>_<span class="si">${</span><span class="nv">DATE</span><span class="si">}</span>.sql
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/pfad/zu/mailcow-dockerized
<span class="nb">source</span><span class="w"> </span>mailcow.conf
<span class="nv">DATE</span><span class="o">=</span><span class="k">$(</span>date<span class="w"> </span>+<span class="s2">&quot;%Y%m%d_%H%M%S&quot;</span><span class="k">)</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>mysql-mailcow<span class="w"> </span>mysqldump<span class="w"> </span>--default-character-set<span class="o">=</span>utf8mb4<span class="w"> </span>-u<span class="si">${</span><span class="nv">DBUSER</span><span class="si">}</span><span class="w"> </span>-p<span class="si">${</span><span class="nv">DBPASS</span><span class="si">}</span><span class="w"> </span><span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span><span class="w"> </span>&gt;<span class="w"> </span>backup_<span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span>_<span class="si">${</span><span class="nv">DATE</span><span class="si">}</span>.sql
</code></pre></div>
</div>
</div>
</div>
<h2 id="wiederherstellen">Wiederherstellen<a class="headerlink" href="#wiederherstellen" title="Permanent link">&para;</a></h2>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p>Sie sollten den SQL-Dump ohne <code>docker compose</code> umleiten, um Parsing-Fehler zu vermeiden.</p>
</div>
<div class="highlight"><pre><span></span><code>cd /pfad/zu/mailcow-dockerized
source mailcow.conf
docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPASS} ${DBNAME} &lt; backup_file.sql
<div class="tabbed-block">
<p>Sie sollten den SQL-Dump ohne <code>docker-compose</code> umleiten, um Parsing-Fehler zu vermeiden.</p>
</div>
</div>
</div>
</div>
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/pfad/zu/mailcow-dockerized
<span class="nb">source</span><span class="w"> </span>mailcow.conf
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-i<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>mysql-mailcow<span class="k">)</span><span class="w"> </span>mysql<span class="w"> </span>-u<span class="si">${</span><span class="nv">DBUSER</span><span class="si">}</span><span class="w"> </span>-p<span class="si">${</span><span class="nv">DBPASS</span><span class="si">}</span><span class="w"> </span><span class="si">${</span><span class="nv">DBNAME</span><span class="si">}</span><span class="w"> </span>&lt;<span class="w"> </span>backup_file.sql
</code></pre></div>
<hr>
@ -2497,7 +2520,7 @@ docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPAS
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-10 12:08:32</span>
</small>
@ -2512,6 +2535,8 @@ docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPAS
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2579,7 +2604,7 @@ docker exec -i $(docker compose ps -q mysql-mailcow) mysql -u${DBUSER} -p${DBPAS
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1349,7 +1350,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2512,11 +2513,23 @@
<h2 id="das-sollten-sie-wissen">Das sollten Sie wissen<a class="headerlink" href="#das-sollten-sie-wissen" title="Permanent link">&para;</a></h2>
<p>Das bereitgestellte Skript funktioniert auf Standardinstallationen.</p>
<p>Es kann versagen, wenn Sie nicht unterstützte Volume Overrides verwenden. Wir unterstützen das nicht und wir werden keine Hacks einbauen, die das unterstützen. Bitte erstellen und pflegen Sie einen Fork, wenn Sie Ihre Änderungen beibehalten wollen.</p>
<p>Das Skript wird <strong>die gleichen Pfade</strong> wie Ihre Standard-Mailcow-Installation verwenden. Das ist das mailcow-Basisverzeichnis - für die meisten Nutzer <code>/opt/mailcow-dockerized</code> - sowie die Mountpoints.</p>
<p>Das Skript wird <strong>die gleichen Pfade</strong> wie Ihre Standard-mailcow-Installation verwenden. Das ist das mailcow-Basisverzeichnis - für die meisten Nutzer <code>/opt/mailcow-dockerized</code> - sowie die Mountpoints.</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>Das Skript verwendet 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>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 folgenden Befehl aus (anhand der gesetzten docker compose Version in der mailcow.conf) und entfernen alte Image-Tags aus dem Ziel:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>pull
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>pull
</code></pre></div>
</div>
</div>
</div>
<p>Ihre Quelle wird zu keinem Zeitpunkt verändert.</p>
<p><strong>Sie sollten sicherstellen, dass Sie die gleiche <code>/etc/docker/daemon.json</code> auf dem entfernten Ziel verwenden.</strong></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>
@ -2564,7 +2577,7 @@ Das Ziel muss über Docker und docker compose <strong>v2</strong> verfügen.</p>
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2579,6 +2592,8 @@ Das Ziel muss über Docker und docker compose <strong>v2</strong> verfügen.</p>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2646,7 +2661,7 @@ Das Ziel muss über Docker und docker compose <strong>v2</strong> verfügen.</p>
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1326,7 +1327,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2490,6 +2491,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2557,7 +2560,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1280,7 +1281,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2437,6 +2438,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2504,7 +2507,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1285,7 +1286,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2547,6 +2548,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2614,7 +2617,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1280,7 +1281,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2439,6 +2440,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2506,7 +2509,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1280,7 +1281,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2447,6 +2448,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2514,7 +2517,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1285,7 +1286,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2557,6 +2558,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2624,7 +2627,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1285,7 +1286,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2562,6 +2563,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2629,7 +2632,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1280,7 +1281,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2456,6 +2457,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2523,7 +2526,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1280,7 +1281,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2440,6 +2441,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2507,7 +2510,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1280,7 +1281,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2420,7 +2421,7 @@ Wenn Sie auf diese Seite zugreifen, indem Sie sich bei Ihrem mailcow-Server anme
<div class="client_variables_available">
<div class="admonition success">
<p class="admonition-title">Erfolgreich</p>
Da Sie diese Seite aufgerufen haben, nachdem Sie sich in Ihren Mailcow-Server eingeloggt haben, wurden alle Anleitungen mit Ihrer E-Mail-Adresse und Ihrem Servernamen personalisiert.
Da Sie diese Seite aufgerufen haben, nachdem Sie sich in Ihren mailcow-Server eingeloggt haben, wurden alle Anleitungen mit Ihrer E-Mail-Adresse und Ihrem Servernamen personalisiert.
</div>
</div>
<ul>
@ -2439,7 +2440,7 @@ Da Sie diese Seite aufgerufen haben, nachdem Sie sich in Ihren Mailcow-Server ei
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-02-02 16:31:51</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2454,6 +2455,8 @@ Da Sie diese Seite aufgerufen haben, nachdem Sie sich in Ihren Mailcow-Server ei
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2521,7 +2524,7 @@ Da Sie diese Seite aufgerufen haben, nachdem Sie sich in Ihren Mailcow-Server ei
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -601,7 +602,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1290,7 +1291,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2410,8 +2411,18 @@
<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="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>down<span class="w"> </span>-v<span class="w"> </span>--rmi<span class="w"> </span>all<span class="w"> </span>--remove-orphans
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>down<span class="w"> </span>-v<span class="w"> </span>--rmi<span class="w"> </span>all<span class="w"> </span>--remove-orphans
</code></pre></div>
</div>
</div>
</div>
<div class="admonition info">
<p class="admonition-title">Info</p>
<ul>
@ -2427,7 +2438,7 @@
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-01 09:33:47</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2442,6 +2453,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2509,7 +2522,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -730,7 +731,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1419,7 +1420,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2690,7 +2691,7 @@ yum install docker-compose-plugin
<p class="admonition-title">Hinweis</p>
<p>Diese Installation ist die alt bekannte Weise. Sie installiert Docker Compose als Standalone Programm und ist nicht auf die Art und weise der Docker Installation angewiesen.</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
<div class="highlight"><pre><span></span><code>LATEST=$(curl -Ls -w %{url_effective} -o /dev/null https://github.com/docker/compose/releases/latest) &amp;&amp; LATEST=${LATEST##*/} &amp;&amp; curl -L https://github.com/docker/compose/releases/download/$LATEST/docker-compose-$(uname -s)-$(uname -m) &gt; /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
</code></pre></div>
<div class="admonition danger">
@ -2753,10 +2754,21 @@ Fügen Sie den neuen Parameter driver_opts wie folgt hinzu:
<p><strong>Schalten Sie IPv6 bitte nicht ab, auch wenn es Ihnen nicht gefällt. IPv6 ist die Zukunft und sollte nicht ignoriert werden.</strong></p>
<p>Sollten Sie jedoch kein IPv6-fähiges Netzwerk auf Ihrem Host haben und Sie sich nicht um ein besseres Internet kümmern wollen (hehe), ist es empfehlenswert, IPv6 für das mailcow-Netzwerk zu <a href="../../post_installation/firststeps-disable_ipv6/">deaktivieren</a>, um unvorhergesehene Probleme zu vermeiden.</p>
<h2 id="mailcow-starten">mailcow starten<a class="headerlink" href="#mailcow-starten" title="Permanent link">&para;</a></h2>
<p>Laden Sie die Images herunter und führen Sie die Compose-Datei aus. Der Parameter <code>-d</code> wird ihre mailcow dann im Hintergrund starten:
<div class="highlight"><pre><span></span><code>docker compose pull
docker compose up -d
</code></pre></div></p>
<p>Laden Sie die Images herunter und führen Sie die Compose-Datei aus. Der Parameter <code>-d</code> wird ihre mailcow dann im Hintergrund starten:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>pull
docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>pull
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="admonition info">
@ -2771,7 +2783,7 @@ docker compose up -d
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-01 20:06:59</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-16 19:22:13</span>
</small>
@ -2786,6 +2798,8 @@ docker compose up -d
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2853,7 +2867,7 @@ docker compose up -d
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -601,7 +602,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1290,7 +1291,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2410,8 +2411,8 @@
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Diese Anleitung geht davon aus, dass Sie beabsichtigen, einen bestehenden Mailcow-Server (Quelle) auf einen brandneuen, leeren Server (Ziel) zu migrieren. Sie kümmert sich nicht um die Erhaltung bestehender Daten auf dem Zielserver und löscht alles innerhalb von <code>/var/lib/docker/volumes</code> und somit alle Docker-Volumes, die Sie bereits eingerichtet haben.</p>
<p class="admonition-title">Warnung</p>
<p>Diese Anleitung geht davon aus, dass Sie beabsichtigen, einen bestehenden mailcow-Server (Quelle) auf einen brandneuen, leeren Server (Ziel) zu migrieren. Sie kümmert sich nicht um die Erhaltung bestehender Daten auf dem Zielserver und löscht alles innerhalb von <code>/var/lib/docker/volumes</code> und somit alle Docker-Volumes, die Sie bereits eingerichtet haben.</p>
</div>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
@ -2427,22 +2428,55 @@ systemctl status docker.service
<div class="highlight"><pre><span></span><code>rsync -aHhP --numeric-ids --delete /opt/mailcow-dockerized/ root@target-machine.example.com:/opt/mailcow-dockerized
rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@target-machine.example.com:/var/lib/docker/volumes
</code></pre></div></p>
<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
docker compose down
systemctl stop docker.service
</code></pre></div></p>
<p><strong>4.</strong> Schalten Sie mailcow ab und stoppen Sie Docker auf dem Quellrechner.</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/opt/mailcow-dockerized
docker<span class="w"> </span>compose<span class="w"> </span>down
systemctl<span class="w"> </span>stop<span class="w"> </span>docker.service
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/opt/mailcow-dockerized
docker-compose<span class="w"> </span>down
systemctl<span class="w"> </span>stop<span class="w"> </span>docker.service
</code></pre></div>
</div>
</div>
</div>
<p>**Wiederholen Sie Schritt 3 mit denselben Befehlen. Dies wird viel schneller gehen als beim ersten Mal.</p>
<p><strong>6.</strong> Wechseln Sie auf den Zielrechner und starten Sie Docker.
<div class="highlight"><pre><span></span><code>systemctl start docker.service
</code></pre></div></p>
<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
docker compose pull
</code></pre></div></p>
<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
</code></pre></div></p>
<p><strong>7.</strong> Ziehen Sie nun die mailcow Docker-Images auf den Zielrechner.</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/opt/mailcow-dockerized
docker<span class="w"> </span>compose<span class="w"> </span>pull
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/opt/mailcow-dockerized
docker-compose<span class="w"> </span>pull
</code></pre></div>
</div>
</div>
</div>
<p><strong>8.</strong> Starten Sie den gesamten mailcow-Stack und alles sollte fertig sein!</p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<p><strong>9.</strong> Zum Schluss ändern Sie Ihre DNS-Einstellungen so, dass sie auf den Zielserver zeigen. Prüfen und ändern Sie gegebenenfalls die <code>SNAT_TO_SOURCE</code> Variable in der <code>mailcow.conf</code> im mailcow-dockerized Ordner, da andernfalls SOGo nicht richtig funktioniert, wenn die ausgehende IP eine andere ist.</p>
<hr>
@ -2450,7 +2484,7 @@ docker compose pull
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-31 11:22:09</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:34:22</span>
</small>
@ -2465,6 +2499,8 @@ docker compose pull
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2532,7 +2568,7 @@ docker compose pull
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -717,7 +718,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1406,7 +1407,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2674,17 +2675,31 @@ 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>
<p>Ja.</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
# Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID
git checkout 22cd00b5e28893ef9ddef3c2b5436453cc5223ab
docker compose pull
docker compose up -d
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>down
<span class="c1"># Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID</span>
git<span class="w"> </span>checkout<span class="w"> </span>22cd00b5e28893ef9ddef3c2b5436453cc5223ab
docker<span class="w"> </span>compose<span class="w"> </span>pull
docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>down
<span class="c1"># Ersetzen Sie die Commit-ID 22cd00b5e28893ef9ddef3c2b5436453cc5223ab durch Ihre ID</span>
git<span class="w"> </span>checkout<span class="w"> </span>22cd00b5e28893ef9ddef3c2b5436453cc5223ab
docker-compose<span class="w"> </span>pull
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<h2 id="update-zyklus">Update-Zyklus<a class="headerlink" href="#update-zyklus" title="Permanent link">&para;</a></h2>
<ul>
<li>Wir planen an jedem ersten Dienstag eines Monats ein neues Hauptupdate zu veröffentlichen.</li>
<li>Wir planen in jedem Monat ein neues Hauptupdate zu veröffentlichen.</li>
<li>Die Updates sind wie folgt nummeriert: <code>JJJJ-MM</code> (Beispiel: <code>2022-05</code>).</li>
<li>Fehlerkorrekturen eines Hauptupdates werden bei uns als "Revisionen" wie a,b,c (Beispiele: <code>2022-05a</code>, <code>2022-05b</code> usw.) erscheinen.</li>
</ul>
@ -2721,7 +2736,7 @@ docker compose up -d
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:17:09</span>
</small>
@ -2736,6 +2751,8 @@ docker compose up -d
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2803,7 +2820,7 @@ docker compose up -d
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -82,8 +82,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -676,7 +677,7 @@
<li class="md-nav__item">
<a href="post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1365,7 +1366,7 @@
<li class="md-nav__item">
<a href="manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2668,6 +2669,8 @@ Jeder Container repräsentiert eine einzelne Anwendung.</p>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2735,7 +2738,7 @@ Jeder Container repräsentiert eine einzelne Anwendung.</p>
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2561,10 +2562,20 @@ MaxScriptNormalize 50M
MaxZipTypeRcg 50M
</code></pre></div></p>
</li>
<li>Starten Sie den ClamAV Container neu:
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>clamd-mailcow
</code></pre></div></li>
<li>Starten Sie den ClamAV Container neu:</li>
</ol>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>clamd-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>clamd-mailcow
</code></pre></div>
</div>
</div>
</div>
<p><strong>Bitte beachten Sie</strong>:</p>
<ul>
<li>Sie können <code>ExcludePUA</code> und <code>IncludePUA</code> in der <code>clamd.conf</code> nicht gleichzeitig nutzen! Kommentieren Sie bitte <code>IncludePUA</code> aus, sollte es nicht auskommentiert sein.</li>
@ -2580,17 +2591,27 @@ DatabaseCustomURL http://sigs.interserver.net/interservertopline.db
DatabaseCustomURL http://sigs.interserver.net/shell.ldb
DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
</code></pre></div></li>
<li>Starten Sie den ClamAV Container neu:
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>clamd-mailcow
</code></pre></div></li>
<li>Starten Sie den ClamAV Container neu:</li>
</ol>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>clamd-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>clamd-mailcow
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2605,6 +2626,8 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2672,7 +2695,7 @@ DatabaseCustomURL http://sigs.interserver.net/whitelist.fp
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2464,8 +2465,18 @@
<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>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>clamd-mailcow<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span><span class="s2">&quot;FOUND&quot;</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>logs<span class="w"> </span>clamd-mailcow<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span><span class="s2">&quot;FOUND&quot;</span>
</code></pre></div>
</div>
</div>
</div>
<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
</code></pre></div>
@ -2473,20 +2484,42 @@
<div class="highlight"><pre><span></span><code><span class="nb">echo</span><span class="w"> </span><span class="s1">&#39;PUA.Pdf.Trojan.EmbeddedJavaScript-1&#39;</span><span class="w"> </span>&gt;&gt;<span class="w"> </span>data/conf/clamav/whitelist.ign2
</code></pre></div>
<p>Dann starten Sie den clamd-mailcow Service Container in der mailcow UI oder mit docker compose neu:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>clamd-mailcow
</code></pre></div>
<p>Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis:</p>
<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 # exit
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>clamd-mailcow
</code></pre></div>
</div>
</div>
</div>
<p>Bereinigen Sie zwischengespeicherte ClamAV-Ergebnisse in Redis:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>/bin/sh
/data<span class="w"> </span><span class="c1"># redis-cli KEYS rs_cl* | xargs redis-cli DEL</span>
/data<span class="w"> </span><span class="c1"># exit</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>/bin/sh
/data<span class="w"> </span><span class="c1"># redis-cli KEYS rs_cl* | xargs redis-cli DEL</span>
/data<span class="w"> </span><span class="c1"># exit</span>
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2501,6 +2534,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2568,7 +2603,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2423,16 +2424,26 @@
build: ./data/Dockerfiles/$service
image: mailcow/$service:$tag
</code></pre></div></p>
<p>Abschliessend müssen die geänderten Container automatisch neu erstellt werden:
<div class="highlight"><pre><span></span><code>docker compose up -d
</code></pre></div></p>
<p>Abschliessend müssen die geänderten Container automatisch neu erstellt werden:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-10-19 17:34:14</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2447,6 +2458,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2514,7 +2527,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2415,14 +2416,26 @@
<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
</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 den Docker Stack neustarten mit:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2437,6 +2450,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2504,7 +2519,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2412,14 +2413,14 @@
<p>Der Dovecot-Parameter <code>sieve_vacation_dont_check_recipient</code> - der in mailcow-Konfigurationen vor dem 21. Juli 2021 standardmäßig auf <code>yes</code> gesetzt war - erlaubt Urlaubsantworten auch dann, wenn eine Mail an nicht existierende Mailboxen wie Catch-All-Adressen gesendet wird.</p>
<p>Wir haben uns entschlossen, diesen Parameter wieder auf <code>nein</code> zu setzen und dem Benutzer zu erlauben, die Empfängeradresse zu spezifizieren, die eine Urlaubsantwort auslöst. Die auslösenden Empfänger können auch in SOGos Autoresponder-Funktion konfiguriert werden.</p>
<p>Wir haben uns entschlossen, diesen Parameter wieder auf <code>no</code> zu setzen und dem Benutzer zu erlauben, die Empfängeradresse zu spezifizieren, die eine Urlaubsantwort auslöst. Die auslösenden Empfänger können auch in SOGos Autoresponder-Funktion konfiguriert werden.</p>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-02-02 11:37:12</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2434,6 +2435,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2501,7 +2504,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2520,17 +2521,57 @@
<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>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="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-u<span class="w"> </span><span class="s1">&#39;mailbox@example.com&#39;</span><span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;Junk&#39;</span><span class="w"> </span>SEEN<span class="w"> </span>not<span class="w"> </span>SINCE<span class="w"> </span>4h
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-u<span class="w"> </span><span class="s1">&#39;mailbox@example.com&#39;</span><span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;Junk&#39;</span><span class="w"> </span>SEEN<span class="w"> </span>not<span class="w"> </span>SINCE<span class="w"> </span>4h
</code></pre></div>
</div>
</div>
</div>
<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="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-A<span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;Junk&#39;</span><span class="w"> </span>savedbefore<span class="w"> </span>7d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-A<span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;Junk&#39;</span><span class="w"> </span>savedbefore<span class="w"> </span>7d
</code></pre></div>
</div>
</div>
</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>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-A<span class="w"> </span>mailbox<span class="w"> </span>%<span class="w"> </span>before<span class="w"> </span>52w
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-A<span class="w"> </span>mailbox<span class="w"> </span>%<span class="w"> </span>before<span class="w"> </span>52w
</code></pre></div>
</div>
</div>
</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>
<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="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">docker compose (Plugin)</label><label for="__tabbed_4_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-u<span class="w"> </span><span class="s1">&#39;mailbox@example.com&#39;</span><span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;INBOX/custom-folder&#39;</span><span class="w"> </span>not<span class="w"> </span>FLAGGED<span class="w"> </span>not<span class="w"> </span>SINCE<span class="w"> </span>2w
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-u<span class="w"> </span><span class="s1">&#39;mailbox@example.com&#39;</span><span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;INBOX/custom-folder&#39;</span><span class="w"> </span>not<span class="w"> </span>FLAGGED<span class="w"> </span>not<span class="w"> </span>SINCE<span class="w"> </span>2w
</code></pre></div>
</div>
</div>
</div>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>Für mögliche <a href="https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_date_specification">Zeitspannen</a> oder <a href="https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_search_keys">SearchQuery</a> schauen Sie bitte in <a href="https://wiki.dovecot.org/Tools/Doveadm/SearchQuery">man doveadm-search-query</a></p>
@ -2538,20 +2579,36 @@
<h2 id="job-scheduler">Job-Scheduler<a class="headerlink" href="#job-scheduler" title="Permanent link">&para;</a></h2>
<h3 id="uber-das-host-system-cron">über das Host-System cron<a class="headerlink" href="#uber-das-host-system-cron" title="Permanent link">&para;</a></h3>
<p>Wenn Sie eine solche Aufgabe automatisieren wollen, können Sie einen Cron-Job auf Ihrem Rechner erstellen, der ein Skript wie das folgende aufruft:</p>
<div class="highlight"><pre><span></span><code>#!/bin/bash
# Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized
cd /pfad/zu/ihrem/mailcow-dockerized
<div class="tabbed-set tabbed-alternate" data-tabs="5:2"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><div class="tabbed-labels"><label for="__tabbed_5_1">docker compose (Plugin)</label><label for="__tabbed_5_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
<span class="c1"># Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized</span>
<span class="nb">cd</span><span class="w"> </span>/pfad/zu/ihrer/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; SEEN not SINCE 12h
[...]
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-A<span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;Junk&#39;</span><span class="w"> </span>savedbefore<span class="w"> </span>2w
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-A<span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;Junk&#39;</span><span class="w"> </span>SEEN<span class="w"> </span>not<span class="w"> </span>SINCE<span class="w"> </span>12h
<span class="o">[</span>...<span class="o">]</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
<span class="c1"># Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized</span>
<span class="nb">cd</span><span class="w"> </span>/pfad/zu/ihrer/mailcow-dockerized
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-A<span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;Junk&#39;</span><span class="w"> </span>savedbefore<span class="w"> </span>2w
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>expunge<span class="w"> </span>-A<span class="w"> </span>mailbox<span class="w"> </span><span class="s1">&#39;Junk&#39;</span><span class="w"> </span>SEEN<span class="w"> </span>not<span class="w"> </span>SINCE<span class="w"> </span>12h
<span class="o">[</span>...<span class="o">]</span>
</code></pre></div>
</div>
</div>
</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>
<div class="highlight"><pre><span></span><code># Jeden Tag um 04:00 Uhr morgens ausführen.
0 4 * * * /pfad/zu/ihr/expunge_mailboxes.sh
</code></pre></div>
<h3 id="uber-docker-job-scheduler">über Docker Job Scheduler<a class="headerlink" href="#uber-docker-job-scheduler" title="Permanent link">&para;</a></h3>
<p>Um dies mit einem Docker-Job-Scheduler zu archivieren, verwenden Sie diese docker-compose.override.yml mit Ihrer Mailcow: </p>
<p>Um dies mit einem Docker-Job-Scheduler zu archivieren, verwenden Sie diese docker-compose.override.yml mit Ihrer mailcow: </p>
<div class="highlight"><pre><span></span><code>version: &#39;2.1&#39;
services:
@ -2584,7 +2641,7 @@ common.go:124 ▶ NOTICE [Job &quot;dovecot-expunge-trash&quot; (8759567efa66)]
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-01 09:33:47</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2599,6 +2656,8 @@ common.go:124 ▶ NOTICE [Job &quot;dovecot-expunge-trash&quot; (8759567efa66)]
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2666,7 +2725,7 @@ common.go:124 ▶ NOTICE [Job &quot;dovecot-expunge-trash&quot; (8759567efa66)]
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2413,15 +2414,25 @@
<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>
<div class="highlight"><pre><span></span><code>docker compose restart dovecot-mailcow
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>dovecot-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>dovecot-mailcow
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2436,6 +2447,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2503,7 +2516,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2509,19 +2510,45 @@
<p>Die Standard-Heap-Größe (1024 M) ist in mailcow.conf definiert.</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>
<p><div class="highlight"><pre><span></span><code># Einzelbenutzer
docker compose exec dovecot-mailcow doveadm fts rescan -u user@domain
# alle Benutzer
docker compose exec dovecot-mailcow doveadm fts rescan -A
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1"># Einzelbenutzer</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>fts<span class="w"> </span>rescan<span class="w"> </span>-u<span class="w"> </span>user@domain
<span class="c1"># alle Benutzer</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>fts<span class="w"> </span>rescan<span class="w"> </span>-A
</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>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1"># Einzelbenutzer</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>fts<span class="w"> </span>rescan<span class="w"> </span>-u<span class="w"> </span>user@domain
<span class="c1"># alle Benutzer</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>fts<span class="w"> </span>rescan<span class="w"> </span>-A
</code></pre></div>
</div>
</div>
</div>
<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>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
docker compose exec dovecot-mailcow doveadm index -u user@domain &#39;*&#39;
# alle Benutzer, aber offensichtlich langsamer und gefährlicher
docker compose exec dovecot-mailcow doveadm index -A &#39;*&#39;
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1"># einzelner Benutzer</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>index<span class="w"> </span>-u<span class="w"> </span>user@domain<span class="w"> </span><span class="s1">&#39;*&#39;</span>
<span class="c1"># alle Benutzer, aber offensichtlich langsamer und gefährlicher</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>index<span class="w"> </span>-A<span class="w"> </span><span class="s1">&#39;*&#39;</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1"># einzelner Benutzer</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>index<span class="w"> </span>-u<span class="w"> </span>user@domain<span class="w"> </span><span class="s1">&#39;*&#39;</span>
<span class="c1"># alle Benutzer, aber offensichtlich langsamer und gefährlicher</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>index<span class="w"> </span>-A<span class="w"> </span><span class="s1">&#39;*&#39;</span>
</code></pre></div>
</div>
</div>
</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>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>
<h3 id="loschen-der-mailbox-daten">Löschen der Mailbox-Daten<a class="headerlink" href="#loschen-der-mailbox-daten" title="Permanent link">&para;</a></h3>
@ -2532,7 +2559,7 @@ docker compose exec dovecot-mailcow doveadm index -A &#39;*&#39;
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2547,6 +2574,8 @@ docker compose exec dovecot-mailcow doveadm index -A &#39;*&#39;
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2614,7 +2643,7 @@ docker compose exec dovecot-mailcow doveadm index -A &#39;*&#39;
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2532,19 +2533,39 @@ Fügen Sie die Einstellung ein, gefolgt von dem neuen Wert. Um zum Beispiel das
</code></pre></div>
<p>29 Minuten ist der maximale Wert, den der <a href="https://tools.ietf.org/html/rfc2177">entsprechende RFC</a> erlaubt.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</p>
<p>Dies ist keine Standardeinstellung in mailcow, da wir nicht wissen, wie diese Einstellung das Verhalten anderer Clients verändert. Seien Sie vorsichtig, wenn Sie dies ändern und ein anderes Verhalten beobachten.</p>
</div>
<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>
<div class="highlight"><pre><span></span><code>docker compose exec dovecot-mailcow dovecot reload
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>dovecot<span class="w"> </span>reload
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>dovecot<span class="w"> </span>reload
</code></pre></div>
</div>
</div>
</div>
<div class="admonition info">
<p class="admonition-title">Info</p>
<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;
<p>Sie können den Wert dieser Einstellung überprüfen mit </p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>dovecot<span class="w"> </span>-a<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span><span class="s2">&quot;imap_idle_notify_interval&quot;</span>
</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>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>dovecot<span class="w"> </span>-a<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span><span class="s2">&quot;imap_idle_notify_interval&quot;</span>
</code></pre></div>
</div>
</div>
</div>
<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>
<hr>
@ -2552,7 +2573,7 @@ Wenn Sie den Wert nicht geändert haben, sollte er auf 2m stehen. Wenn Sie ihn g
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2567,6 +2588,8 @@ Wenn Sie den Wert nicht geändert haben, sollte er auf 2m stehen. Wenn Sie ihn g
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2634,7 +2657,7 @@ Wenn Sie den Wert nicht geändert haben, sollte er auf 2m stehen. Wenn Sie ihn g
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2416,7 +2417,19 @@
<p>Die Mails werden komprimiert (lz4) und verschlüsselt gespeichert. Das Schlüsselpaar ist in crypt-vol-1 zu finden.</p>
</div>
<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>Wechseln Sie in den Dovecot Container, indem Sie folgenden Befehl im mailcow-dockerized Verzeichnis ausführen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>/bin/bash
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>/bin/bash
</code></pre></div>
</div>
</div>
</div>
<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
if [[ $(head -c7 &quot;$file&quot;) == &quot;CRYPTED&quot; ]]; then
@ -2449,7 +2462,7 @@ done
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-12 01:05:23</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2464,6 +2477,8 @@ done
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2531,7 +2546,7 @@ done
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2531,6 +2532,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2598,7 +2601,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2478,8 +2479,18 @@
<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>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="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>acl<span class="w"> </span><span class="nb">set</span><span class="w"> </span>-A<span class="w"> </span><span class="s2">&quot;Public/Develcow&quot;</span><span class="w"> </span><span class="s2">&quot;authenticated&quot;</span><span class="w"> </span>lookup<span class="w"> </span><span class="nb">read</span><span class="w"> </span>write<span class="w"> </span>write-seen<span class="w"> </span>write-deleted<span class="w"> </span>insert<span class="w"> </span>post<span class="w"> </span>delete<span class="w"> </span>expunge<span class="w"> </span>create
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>doveadm<span class="w"> </span>acl<span class="w"> </span><span class="nb">set</span><span class="w"> </span>-A<span class="w"> </span><span class="s2">&quot;Public/Develcow&quot;</span><span class="w"> </span><span class="s2">&quot;authenticated&quot;</span><span class="w"> </span>lookup<span class="w"> </span><span class="nb">read</span><span class="w"> </span>write<span class="w"> </span>write-seen<span class="w"> </span>write-deleted<span class="w"> </span>insert<span class="w"> </span>post<span class="w"> </span>delete<span class="w"> </span>expunge<span class="w"> </span>create
</code></pre></div>
</div>
</div>
</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>
<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>
<p>Um allen authentifizierten Benutzern vollen Zugriff auf den gesamten öffentlichen Namespace und seine Unterordner zu gewähren, erstellen Sie eine neue Datei <code>dovecot-acl</code> im Namespace-Stammverzeichnis:</p>
@ -2495,7 +2506,7 @@
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2510,6 +2521,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2577,7 +2590,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2418,7 +2419,19 @@
<div class="highlight"><pre><span></span><code>DOVECOT_MASTER_USER=mymasteruser
DOVECOT_MASTER_PASS=mysecretpass
</code></pre></div>
<p>Führen Sie <code>docker compose up -d</code> aus, um Ihre Änderungen zu übernehmen.</p>
<p>Führen Sie folgenden Befehl aus, um Ihre Änderungen zu übernehmen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>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>)
@ -2429,7 +2442,7 @@ Es wird kein Hauptbenutzer benötigt.</p>
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2444,6 +2457,8 @@ Es wird kein Hauptbenutzer benötigt.</p>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2511,7 +2526,7 @@ Es wird kein Hauptbenutzer benötigt.</p>
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2504,24 +2505,24 @@
<h2 id="der-neue-weg">Der "neue" Weg<a class="headerlink" href="#der-neue-weg" title="Permanent link">&para;</a></h2>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</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>
<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
ln -s /mnt/volume-xy/vmail_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
<p>Ein einfacher, schmutziger, aber stabiler Workaround ist es, mailcow zu stoppen, <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<span class="w"> </span>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data<span class="w"> </span>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup
ln<span class="w"> </span>-s<span class="w"> </span>/mnt/volume-xy/vmail_data<span class="w"> </span>/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
</code></pre></div>
<p>Starten Sie anschließend mailcow.</p>
<hr />
<h2 id="der-alte-weg">Der "alte" Weg<a class="headerlink" href="#der-alte-weg" title="Permanent link">&para;</a></h2>
<p>Wenn man einen anderen Ordner für das vmail-Volume verwenden möchte, kann man eine <code>docker-compose.override.yml</code> Datei erstellen und den folgenden Inhalt hinzufügen:</p>
<div class="highlight"><pre><span></span><code>version: &#39;2.1&#39;
volumes:
vmail-vol-1:
driver_opts:
type: none
device: /data/mailcow/vmail
o: bind
<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="nt">volumes</span><span class="p">:</span>
<span class="w"> </span><span class="nt">vmail-vol-1</span><span class="p">:</span>
<span class="w"> </span><span class="nt">driver_opts</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</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="nt">device</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/data/mailcow/vmail</span><span class="w"> </span>
<span class="w"> </span><span class="nt">o</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">bind</span>
</code></pre></div>
<h3 id="verschieben-eines-bestehenden-vmail-ordners">Verschieben eines bestehenden vmail-Ordners:<a class="headerlink" href="#verschieben-eines-bestehenden-vmail-ordners" title="Permanent link">&para;</a></h3>
<ul>
@ -2545,18 +2546,44 @@ volumes:
</code></pre></div>
<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>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 des kommenden Befehls aus Ihrem mailcow-Stammverzeichnis (z.B. <code>/opt/mailcow-dockerized</code>):</li>
</ul>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>down
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>down<span class="w"> </span>
</code></pre></div>
</div>
</div>
</div>
<ul>
<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>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 des folgenden Befehls aus Ihrem mailcow-Stammverzeichnis (z.B. <code>/opt/mailcow-dockerized</code>):</li>
</ul>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-01 09:33:47</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2571,6 +2598,8 @@ volumes:
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2638,7 +2667,7 @@ volumes:
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2594,16 +2595,27 @@
<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>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
docker compose restart php-fpm-mailcow
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>nginx-mailcow
docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>php-fpm-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>nginx-mailcow
docker-compose<span class="w"> </span>restart<span class="w"> </span>php-fpm-mailcow
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2618,6 +2630,8 @@ docker compose restart php-fpm-mailcow
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2685,7 +2699,7 @@ docker compose restart php-fpm-mailcow
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2434,19 +2435,44 @@
</span> }
}
</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: </p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>nginx-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>nginx-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="highlight"><pre><span></span><code>ADDITIONAL_SAN=webmail.example.org
</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 den Befehl aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<p>Siehe "acme-mailcow" und "nginx-mailcow" Logs, wenn etwas fehlschlägt</p>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:38:44</span>
</small>
@ -2461,6 +2487,8 @@ Fügen Sie <code>webmail.example.org</code> zu diesem Array hinzu, verwenden Sie
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2528,7 +2556,7 @@ Fügen Sie <code>webmail.example.org</code> zu diesem Array hinzu, verwenden Sie
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2413,15 +2414,25 @@
<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>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2436,6 +2447,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2503,7 +2516,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2435,6 +2436,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2502,7 +2505,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2488,8 +2489,18 @@
<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>
<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="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>postfix-mailcow<span class="w"> </span>postmap<span class="w"> </span>/opt/postfix/conf/check_sasl_access
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>postfix-mailcow<span class="w"> </span>postmap<span class="w"> </span>/opt/postfix/conf/check_sasl_access
</code></pre></div>
</div>
</div>
</div>
<p>Starten Sie den Postfix-Container neu.</p>
<hr>
@ -2497,7 +2508,7 @@
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2512,6 +2523,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2579,7 +2592,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2415,15 +2416,25 @@
<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>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="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2438,6 +2449,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2505,7 +2518,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2420,7 +2421,10 @@
59 23 * * * root docker logs --since 24h $(docker ps -qf name=postfix-mailcow) | /usr/sbin/pflogsumm -d today | mail -s &quot;Postfix Report of $(date)&quot; postmaster@example.net
</code></pre></div>
<p>Um zu funktionieren muss ein lokaler Postfix auf dem Server installiert werden, welcher an den Postfix der mailcow relayed.</p>
<p>Genauere Informationen lassen sich unter Sektion <a href="https://mailcow.github.io/mailcow-dockerized-docs/de/post_installation/firststeps-local_mta/">Post-Installationsaufgaben -&gt; Lokaler MTA auf Dockerhost</a> finden.</p>
<div class="admonition question">
<p class="admonition-title">Frage</p>
<p>Genauere Informationen lassen sich unter Sektion <a href="../../../post_installation/firststeps-local_mta/">Post-Installationsaufgaben -&gt; Lokaler MTA auf Dockerhost</a> finden.</p>
</div>
<p>Basierend auf den Postfix-Logs der letzten 24 Stunden sendet dieses Beispiel dann jeden Tag um 23:59:00 Uhr einen pflogsumm-Bericht an <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#112;&#111;&#115;&#116;&#109;&#97;&#115;&#116;&#101;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#110;&#101;&#116;">&#112;&#111;&#115;&#116;&#109;&#97;&#115;&#116;&#101;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#110;&#101;&#116;</a>.</p>
<hr>
@ -2428,7 +2432,7 @@
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-03-24 11:27:51</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2443,6 +2447,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2510,7 +2516,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2412,13 +2413,13 @@
<p>IPs können in der Datei <code>data/conf/postfix/custom_postscreen_whitelist.cidr</code> aus dem Postscreen und damit <em>auch</em> aus den RBL-Prüfungen entfernt werden.</p>
<p>Postscreen führt mehrere Prüfungen durch, um bösartige Absender zu identifizieren. In den meisten Fällen möchten Sie eine IP-Adresse auf die Whitelist setzen, um sie von der Suche nach einer schwarzen Liste auszuschließen.</p>
<p>Postscreen führt mehrere Prüfungen durch, um bösartige Absender zu identifizieren. In den meisten Fällen möchten Sie eine IP-Adresse auf die Whitelist setzen, um sie von der Suche nach einer Blacklist auszuschließen.</p>
<p>Das Format der Datei ist wie folgt</p>
<p><code>CIDR ACTION</code></p>
<p>Dabei steht CIDR für eine einzelne IP-Adresse oder einen IP-Bereich in CIDR-Notation und action entweder für "permit" oder "reject".</p>
<p>Beispiel:</p>
<div class="highlight"><pre><span></span><code># Regeln werden in der angegebenen Reihenfolge ausgewertet.
# Schwarze Liste 192.168.* außer 192.168.0.1.
# Blacklist 192.168.* außer 192.168.0.1.
192.168.0.1 permit
192.168.0.0/16 reject
</code></pre></div>
@ -2429,7 +2430,7 @@
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-02-02 10:57:04</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2444,6 +2445,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2511,7 +2514,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2546,6 +2547,8 @@ Beachten Sie, dass die Anmeldedaten im Klartext gespeichert werden.</p>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2613,7 +2616,7 @@ Beachten Sie, dass die Anmeldedaten im Klartext gespeichert werden.</p>
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2507,7 +2508,7 @@
<p>Wenn Sie sich entscheiden, <code>mynetworks</code> zu setzen, ignoriert Postfix die mynetworks_style Einstellung. Das bedeutet, dass Sie die Bereiche IPV4_NETWORK und IPV6_NETWORK sowie die Loopback-Subnetze manuell hinzufügen müssen!</p>
<h2 id="unauthentifiziertes-relaying">Unauthentifiziertes Relaying<a class="headerlink" href="#unauthentifiziertes-relaying" title="Permanent link">&para;</a></h2>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</p>
<p>Eine falsche Einstellung von <code>mynetworks</code> erlaubt es Ihrem Server, als offenes Relay verwendet zu werden. Wenn dies missbraucht wird, <strong>beeinträchtigt</strong> dies Ihre Fähigkeit, E-Mails zu versenden, und es kann einige Zeit dauern, bis dies behoben ist.</p>
</div>
<h3 id="ipv4-hostssubnetze">IPv4-Hosts/Subnetze<a class="headerlink" href="#ipv4-hostssubnetze" title="Permanent link">&para;</a></h3>
@ -2515,14 +2516,38 @@
<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
</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 folgenden Befehl aus aus, um Ihre neuen Einstellungen zu übernehmen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>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>
<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>
<p>Führen Sie <code>docker compose restart postfix-mailcow</code> aus, um Ihre neuen Einstellungen zu übernehmen.</p>
<p>Führen Sie folgenden Befehl aus, um Ihre neuen Einstellungen zu übernehmen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
</div>
</div>
<div class="admonition info">
<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>
@ -2533,7 +2558,7 @@
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2548,6 +2573,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2615,7 +2642,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2543,19 +2544,44 @@
<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>
<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="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>redis-cli
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>redis-cli
</code></pre></div>
</div>
</div>
</div>
<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>
<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>
<div class="highlight"><pre><span></span><code># docker compose exec redis-mailcow redis-cli
127.0.0.1:6379&gt; monitor
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1">#docker compose exec redis-mailcow redis-cli</span>
<span class="m">127</span>.0.0.1:6379&gt;<span class="w"> </span>monitor
OK
1494077286.401963 [0 172.22.1.253:41228] &quot;SMEMBERS&quot; &quot;BAYES_SPAM_keys&quot;
1494077288.292970 [0 172.22.1.253:41229] &quot;SMEMBERS&quot; &quot;BAYES_SPAM_keys&quot;
[...]
<span class="m">1494077286</span>.401963<span class="w"> </span><span class="o">[</span><span class="m">0</span><span class="w"> </span><span class="m">172</span>.22.1.253:41228<span class="o">]</span><span class="w"> </span><span class="s2">&quot;SMEMBERS&quot;</span><span class="w"> </span><span class="s2">&quot;BAYES_SPAM_keys&quot;</span>
<span class="m">1494077288</span>.292970<span class="w"> </span><span class="o">[</span><span class="m">0</span><span class="w"> </span><span class="m">172</span>.22.1.253:41229<span class="o">]</span><span class="w"> </span><span class="s2">&quot;SMEMBERS&quot;</span><span class="w"> </span><span class="s2">&quot;BAYES_SPAM_keys&quot;</span>
<span class="o">[</span>...<span class="o">]</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1">#docker-compose exec redis-mailcow redis-cli</span>
<span class="m">127</span>.0.0.1:6379&gt;<span class="w"> </span>monitor
OK
<span class="m">1494077286</span>.401963<span class="w"> </span><span class="o">[</span><span class="m">0</span><span class="w"> </span><span class="m">172</span>.22.1.253:41228<span class="o">]</span><span class="w"> </span><span class="s2">&quot;SMEMBERS&quot;</span><span class="w"> </span><span class="s2">&quot;BAYES_SPAM_keys&quot;</span>
<span class="m">1494077288</span>.292970<span class="w"> </span><span class="o">[</span><span class="m">0</span><span class="w"> </span><span class="m">172</span>.22.1.253:41229<span class="o">]</span><span class="w"> </span><span class="s2">&quot;SMEMBERS&quot;</span><span class="w"> </span><span class="s2">&quot;BAYES_SPAM_keys&quot;</span>
<span class="o">[</span>...<span class="o">]</span>
</code></pre></div>
</div>
</div>
</div>
<h5 id="schlussel-keys">SCHLÜSSEL (Keys)<a class="headerlink" href="#schlussel-keys" title="Permanent link">&para;</a></h5>
<p>Ermittelt alle Schlüssel, die dem Muster entsprechen:</p>
<div class="highlight"><pre><span></span><code>KEYS *
@ -2572,7 +2598,7 @@ PONG
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-15 15:31:09</span>
</small>
@ -2587,6 +2613,8 @@ PONG
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2654,7 +2682,7 @@ PONG
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2622,11 +2623,24 @@ Dies wird durch die Verwendung des Sieve-Plugins "sieve_imapsieve" und Parser-Sk
<p>Sie können auch die Web-UI von Rspamd verwenden, um Ham und/oder Spam zu lernen oder bestimmte Einstellungen von Rspamd anzupassen.</p>
<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>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1"># Ham</span>
<span class="k">for</span><span class="w"> </span>file<span class="w"> </span><span class="k">in</span><span class="w"> </span>/my/folder/cur/*<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-i<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>rspamd-mailcow<span class="k">)</span><span class="w"> </span>rspamc<span class="w"> </span>learn_ham<span class="w"> </span>&lt;<span class="w"> </span><span class="nv">$file</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
<span class="c1"># Spam</span>
<span class="k">for</span><span class="w"> </span>file<span class="w"> </span><span class="k">in</span><span class="w"> </span>/my/folder/.Junk/cur/*<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-i<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>rspamd-mailcow<span class="k">)</span><span class="w"> </span>rspamc<span class="w"> </span>learn_spam<span class="w"> </span>&lt;<span class="w"> </span><span class="nv">$file</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1"># Ham</span>
<span class="k">for</span><span class="w"> </span>file<span class="w"> </span><span class="k">in</span><span class="w"> </span>/my/folder/cur/*<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-i<span class="w"> </span><span class="k">$(</span>docker-compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>rspamd-mailcow<span class="k">)</span><span class="w"> </span>rspamc<span class="w"> </span>learn_ham<span class="w"> </span>&lt;<span class="w"> </span><span class="nv">$file</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
<span class="c1"># Spam</span>
<span class="k">for</span><span class="w"> </span>file<span class="w"> </span><span class="k">in</span><span class="w"> </span>/my/folder/.Junk/cur/*<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-i<span class="w"> </span><span class="k">$(</span>docker-compose<span class="w"> </span>ps<span class="w"> </span>-q<span class="w"> </span>rspamd-mailcow<span class="k">)</span><span class="w"> </span>rspamc<span class="w"> </span>learn_spam<span class="w"> </span>&lt;<span class="w"> </span><span class="nv">$file</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
</code></pre></div>
</div>
</div>
</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>
<div class="highlight"><pre><span></span><code><span class="k">for</span><span class="w"> </span>file<span class="w"> </span><span class="k">in</span><span class="w"> </span>/data/old_mail/.Junk/cur/*<span class="p">;</span><span class="w"> </span><span class="k">do</span><span class="w"> </span>rspamc<span class="w"> </span>learn_spam<span class="w"> </span>&lt;<span class="w"> </span>zcat<span class="w"> </span><span class="nv">$file</span><span class="p">;</span><span class="w"> </span><span class="k">done</span>
</code></pre></div>
@ -2637,27 +2651,72 @@ Dies wird durch die Verwendung des Sieve-Plugins "sieve_imapsieve" und Parser-Sk
cp<span class="w"> </span>/var/lib/docker/volumes/mailcowdockerized_redis-vol-1/_data/dump.rdb<span class="w"> </span>/root/
</code></pre></div>
<p><strong>Bayes-Daten zurücksetzen</strong></p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">&#39;redis-cli --scan --pattern BAYES_* | xargs redis-cli del&#39;</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">&#39;redis-cli --scan --pattern RS* | xargs redis-cli del&#39;</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">&#39;redis-cli --scan --pattern BAYES_* | xargs redis-cli del&#39;</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">&#39;redis-cli --scan --pattern RS* | xargs redis-cli del&#39;</span>
</code></pre></div>
</div>
</div>
</div>
<p><strong>Neurale Daten zurücksetzen</strong></p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">&#39;redis-cli --scan --pattern rn_* | xargs redis-cli del&#39;</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">&#39;redis-cli --scan --pattern rn_* | xargs redis-cli del&#39;</span>
</code></pre></div>
</div>
</div>
</div>
<p><strong>Fuzzy-Daten zurücksetzen</strong></p>
<div class="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">docker compose (Plugin)</label><label for="__tabbed_4_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1"># Wir müssen zuerst das redis-cli eingeben:</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>redis-cli
<span class="c1"># In redis-cli:</span>
<span class="m">127</span>.0.0.1:6379&gt;<span class="w"> </span>EVAL<span class="w"> </span><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="w"> </span><span class="m">0</span><span class="w"> </span>fuzzy*
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="c1"># Wir müssen zuerst das redis-cli eingeben:</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>redis-cli
<span class="c1"># In redis-cli:</span>
<span class="m">127</span>.0.0.1:6379&gt;<span class="w"> </span>EVAL<span class="w"> </span><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="w"> </span><span class="m">0</span><span class="w"> </span>fuzzy*
</code></pre></div>
</div>
</div>
</div>
<p><strong>Info</strong></p>
<p>Wenn redis-cli sich beschwert über...</p>
<div class="highlight"><pre><span></span><code>(error) ERR wrong number of arguments for &#39;del&#39; command
</code></pre></div>
<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>
<div class="tabbed-set tabbed-alternate" data-tabs="5:2"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><div class="tabbed-labels"><label for="__tabbed_5_1">docker compose (Plugin)</label><label for="__tabbed_5_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>rspamc<span class="w"> </span>--help
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>rspamadm<span class="w"> </span>--help
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>rspamc<span class="w"> </span>--help
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>rspamadm<span class="w"> </span>--help
</code></pre></div>
</div>
</div>
</div>
<h2 id="greylisting-deaktivieren">Greylisting deaktivieren<a class="headerlink" href="#greylisting-deaktivieren" title="Permanent link">&para;</a></h2>
<p>Nur Nachrichten mit einer höheren Punktzahl werden als Greylisting betrachtet (soft rejected). Es ist schlechte Praxis, Greylisting zu deaktivieren.</p>
<p>Sie können Greylisting serverweit durch Editieren deaktivieren:</p>
@ -2665,26 +2724,75 @@ docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">ex
<p>Fügen Sie die Zeile hinzu:</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>
</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:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="6:2"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">docker compose (Plugin)</label><label for="__tabbed_6_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>
<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="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="n">greylist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">7</span><span class="p">;</span>
</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:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="7:2"><input checked="checked" id="__tabbed_7_1" name="__tabbed_7" type="radio" /><input id="__tabbed_7_2" name="__tabbed_7" type="radio" /><div class="tabbed-labels"><label for="__tabbed_7_1">docker compose (Plugin)</label><label for="__tabbed_7_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
</div>
</div>
<p>Bestehende Einstellungen der Benutzer werden nicht überschrieben!</p>
<p>Um benutzerdefinierte Schwellenwerte zurückzusetzen, führen Sie aus:</p>
<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;
# 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;
<div class="tabbed-set tabbed-alternate" data-tabs="8:2"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio" /><input id="__tabbed_8_2" name="__tabbed_8" type="radio" /><div class="tabbed-labels"><label for="__tabbed_8_1">docker compose (Plugin)</label><label for="__tabbed_8_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">source</span><span class="w"> </span>mailcow.conf
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>mysql-mailcow<span class="w"> </span>mysql<span class="w"> </span>-umailcow<span class="w"> </span>-p<span class="nv">$DBPASS</span><span class="w"> </span>mailcow<span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39;;&quot;</span>
<span class="c1"># oder:</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>mysql-mailcow<span class="w"> </span>mysql<span class="w"> </span>-umailcow<span class="w"> </span>-p<span class="nv">$DBPASS</span><span class="w"> </span>mailcow<span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39; and object = &#39;only-this-mailbox@example.org&#39;;&quot;</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">source</span><span class="w"> </span>mailcow.conf
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>mysql-mailcow<span class="w"> </span>mysql<span class="w"> </span>-umailcow<span class="w"> </span>-p<span class="nv">$DBPASS</span><span class="w"> </span>mailcow<span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39;;&quot;</span>
<span class="c1"># oder:</span>
docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>mysql-mailcow<span class="w"> </span>mysql<span class="w"> </span>-umailcow<span class="w"> </span>-p<span class="nv">$DBPASS</span><span class="w"> </span>mailcow<span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;delete from filterconf where option = &#39;highspamlevel&#39; or option = &#39;lowspamlevel&#39; and object = &#39;only-this-mailbox@example.org&#39;;&quot;</span>
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="highlight"><pre><span></span><code>reject_message = &quot;Meine eigene Ablehnungsnachricht&quot;;
</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:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="9:2"><input checked="checked" id="__tabbed_9_1" name="__tabbed_9" type="radio" /><input id="__tabbed_9_2" name="__tabbed_9" type="radio" /><div class="tabbed-labels"><label for="__tabbed_9_1">docker compose (Plugin)</label><label for="__tabbed_9_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>
<li>
@ -2704,31 +2812,88 @@ docker compose exec mysql-mailcow mysql -umailcow -p$DBPASS mailcow -e &quot;del
}
</code></pre></div>
<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:</li>
</ol>
<div class="tabbed-set tabbed-alternate" data-tabs="10:2"><input checked="checked" id="__tabbed_10_1" name="__tabbed_10" type="radio" /><input id="__tabbed_10_2" name="__tabbed_10" type="radio" /><div class="tabbed-labels"><label for="__tabbed_10_1">docker compose (Plugin)</label><label for="__tabbed_10_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="highlight"><pre><span></span><code>discard_on_reject = true;
</code></pre></div>
<p>Starten Sie Rspamd neu:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="11:2"><input checked="checked" id="__tabbed_11_1" name="__tabbed_11" type="radio" /><input id="__tabbed_11_2" name="__tabbed_11" type="radio" /><div class="tabbed-labels"><label for="__tabbed_11_1">docker compose (Plugin)</label><label for="__tabbed_11_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
</div>
</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>
<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
# Unlink (verfügbar in Redis &gt;=4.) löscht im Hintergrund
redis-cli --scan --pattern RL* | xargs redis-cli unlink
<div class="tabbed-set tabbed-alternate" data-tabs="12:2"><input checked="checked" id="__tabbed_12_1" name="__tabbed_12" type="radio" /><input id="__tabbed_12_2" name="__tabbed_12" type="radio" /><div class="tabbed-labels"><label for="__tabbed_12_1">docker compose (Plugin)</label><label for="__tabbed_12_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>sh
<span class="c1"># Unlink (verfügbar in Redis &gt;=4.) löscht im Hintergrund</span>
redis-cli<span class="w"> </span>--scan<span class="w"> </span>--pattern<span class="w"> </span>RL*<span class="w"> </span><span class="p">|</span><span class="w"> </span>xargs<span class="w"> </span>redis-cli<span class="w"> </span>unlink
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>sh
<span class="c1"># Unlink (verfügbar in Redis &gt;=4.) löscht im Hintergrund</span>
redis-cli<span class="w"> </span>--scan<span class="w"> </span>--pattern<span class="w"> </span>RL*<span class="w"> </span><span class="p">|</span><span class="w"> </span>xargs<span class="w"> </span>redis-cli<span class="w"> </span>unlink
</code></pre></div>
</div>
</div>
</div>
<p>Starten Sie Rspamd neu:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="13:2"><input checked="checked" id="__tabbed_13_1" name="__tabbed_13" type="radio" /><input id="__tabbed_13_2" name="__tabbed_13" type="radio" /><div class="tabbed-labels"><label for="__tabbed_13_1">docker compose (Plugin)</label><label for="__tabbed_13_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
</div>
</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>
<p>Sollte nur zur Fehlersuche verwendet werden!</p>
<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;
redis-cli -h redis DEL Q_LAST_NOTIFIED
<div class="tabbed-set tabbed-alternate" data-tabs="14:2"><input checked="checked" id="__tabbed_14_1" name="__tabbed_14" type="radio" /><input id="__tabbed_14_2" name="__tabbed_14" type="radio" /><div class="tabbed-labels"><label for="__tabbed_14_1">docker compose (Plugin)</label><label for="__tabbed_14_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>bash
mysql<span class="w"> </span>-umailcow<span class="w"> </span>-p<span class="nv">$DBPASS</span><span class="w"> </span>mailcow<span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;update quarantine set notified = 0;&quot;</span>
redis-cli<span class="w"> </span>-h<span class="w"> </span>redis<span class="w"> </span>DEL<span class="w"> </span>Q_LAST_NOTIFIED
quarantine_notify.py
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>dovecot-mailcow<span class="w"> </span>bash
mysql<span class="w"> </span>-umailcow<span class="w"> </span>-p<span class="nv">$DBPASS</span><span class="w"> </span>mailcow<span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;update quarantine set notified = 0;&quot;</span>
redis-cli<span class="w"> </span>-h<span class="w"> </span>redis<span class="w"> </span>DEL<span class="w"> </span>Q_LAST_NOTIFIED
quarantine_notify.py
</code></pre></div>
</div>
</div>
</div>
<h2 id="speicherung-der-historie-erhohen">Speicherung der Historie erhöhen<a class="headerlink" href="#speicherung-der-historie-erhohen" title="Permanent link">&para;</a></h2>
<p>Standardmäßig speichert Rspamd 1000 Elemente in der Historie.</p>
<p>Die Historie wird komprimiert gespeichert.</p>
@ -2736,14 +2901,26 @@ quarantine_notify.py
<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
</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:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="15:2"><input checked="checked" id="__tabbed_15_1" name="__tabbed_15" type="radio" /><input id="__tabbed_15_2" name="__tabbed_15" type="radio" /><div class="tabbed-labels"><label for="__tabbed_15_1">docker compose (Plugin)</label><label for="__tabbed_15_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>rspamd-mailcow
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-27 17:00:52</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:34:22</span>
</small>
@ -2758,6 +2935,8 @@ quarantine_notify.py
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2825,7 +3004,7 @@ quarantine_notify.py
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2544,40 +2545,74 @@
<h1>SOGo</h1>
<p>SOGo wird verwendet, um über einen Webbrowser auf Ihre Mails zuzugreifen und Ihre Kontakte oder Kalender hinzuzufügen und zu teilen. Für eine ausführlichere Dokumentation zu SOGo besuchen Sie bitte die [eigene Dokumentation] (<a href="http://wiki.sogo.nu/">http://wiki.sogo.nu/</a>).</p>
<p>SOGo wird verwendet, um über einen Webbrowser auf Ihre Mails zuzugreifen und Ihre Kontakte oder Kalender hinzuzufügen und zu teilen. Für eine ausführlichere Dokumentation zu SOGo besuchen Sie bitte die <a href="http://wiki.sogo.nu/">Dokumentation von SOGo</a>.</p>
<h2 id="benutzerdefiniertes-sogo-thema-css-anwenden">Benutzerdefiniertes SOGo-Thema (CSS) anwenden<a class="headerlink" href="#benutzerdefiniertes-sogo-thema-css-anwenden" title="Permanent link">&para;</a></h2>
<p>mailcow-Builds nach dem 28. Januar 2021 können das CSS-Thema von SOGo ändern, indem sie <code>data/conf/sogo/custom-theme.js</code> bearbeiten.
Bitte schauen Sie sich die AngularJS Material <a href="https://material.angularjs.org/latest/Theming/01_introduction">intro</a> und <a href="https://material.angularjs.org/latest/Theming/03_configuring_a_theme">documentation</a> sowie die <a href="https://material.io/archive/guidelines/style/color.html#color-color-palette">material style guideline</a> an, um zu erfahren, wie das funktioniert. </p>
<p>Sie können die mitgelieferte <code>custom-theme.js</code> als Beispiel verwenden, indem Sie die Kommentare entfernen.
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>
<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 im Browser öffnen</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>fügen Sie den Java-Script-Schnipsel in die Entwicklungskonsole ein:
<p>1. Bearbeiten Sie <code>data/conf/sogo/sogo.conf</code> und fügen Sie <code>SOGoUIxDebugEnabled = YES;</code> ein.</p>
<p>2. SOGo und Memcached Container neu starten, indem man folgenden Befehl ausführt:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
</div>
</div>
<p>3. SOGo im Browser öffnen</p>
<p>4. öffnen Sie die Entwicklerkonsole des Browsers, normalerweise ist die Tastenkombination F12</p>
<p>5. nur wenn Sie Firefox benutzen: schreiben Sie mit der Hand in die Entwicklerkonsole <code>allow pasting</code> und drücken Sie Enter</p>
<p>6. fügen Sie den Java-Script-Schnipsel in die Entwicklungskonsole ein:
<div class="highlight"><pre><span></span><code>copy([].slice.call(document.styleSheets)
.map(e =&gt; e.ownerNode)
.filter(e =&gt; e.hasAttribute(&#39;md-theme-style&#39;))
.map(e =&gt; e.textInhalt)
.join(&#39;\n&#39;)
)
</code></pre></div></li>
<li>Öffnen Sie den Texteditor und fügen Sie die Daten aus der Zwischenablage ein (Strg+V), Sie sollten ein minimiertes CSS erhalten, speichern Sie es</li>
<li>kopieren Sie die CSS-Datei auf den Mailcow-Server <code>data/conf/sogo/custom-theme.css</code></li>
<li>editiere <code>data/conf/sogo/sogo.conf</code> und setze <code>SOGoUIxDebugEnabled = NO;</code></li>
<li>Anhängen/Erstellen von <code>docker-compose.override.yml</code> mit:
</code></pre></div>
7. Öffnen Sie den Texteditor und fügen Sie die Daten aus der Zwischenablage ein (Strg+V), Sie sollten ein minimiertes CSS erhalten, speichern Sie es</p>
<p>8. kopieren Sie die CSS-Datei auf den mailcow-Server <code>data/conf/sogo/custom-theme.css</code></p>
<p>9. editiere <code>data/conf/sogo/sogo.conf</code> und setze <code>SOGoUIxDebugEnabled = NO;</code></p>
<p>10. Anhängen/Erstellen von <code>docker-compose.override.yml</code> mit:
<div class="highlight"><pre><span></span><code>Version: &#39;2.1&#39;
Dienste:
sogo-mailcow:
volumes:
- ./data/conf/sogo/custom-theme.css:/usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css:z
</code></pre></div></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>
</ol>
</code></pre></div>
11. Führen Sie folgenden Befehl aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<p>12. Neustarten des memcached Containers mit:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>
<li>checken Sie <code>data/conf/sogo/custom-theme.js</code> aus, indem Sie <code>git fetch ; git checkout origin/master data/conf/sogo/custom-theme.js data/conf/sogo/custom-theme.js</code> ausführen</li>
@ -2604,17 +2639,67 @@ und ersetzen Sie es durch:
<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
</code></pre></div></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>Führen Sie folgenden Befehl aus:</li>
</ol>
<div class="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">docker compose (Plugin)</label><label for="__tabbed_4_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<ol>
<li>Starten Sie memcached neu mit:</li>
</ol>
<div class="tabbed-set tabbed-alternate" data-tabs="5:2"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><div class="tabbed-labels"><label for="__tabbed_5_1">docker compose (Plugin)</label><label for="__tabbed_5_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow
</code></pre></div>
</div>
</div>
</div>
<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.
<strong>Anmerkung</strong>: Sie können <code>.png</code> Favicons für SOGo verwenden, indem Sie sie in <code>custom-favicon.ico</code> umbenennen.
<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>
<p><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.
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 folgenden Befehl ausführen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="6:2"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">docker compose (Plugin)</label><label for="__tabbed_6_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
</div>
</div>
<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).
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>
<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 folgendes ausführen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="7:2"><input checked="checked" id="__tabbed_7_1" name="__tabbed_7" type="radio" /><input id="__tabbed_7_2" name="__tabbed_7" type="radio" /><div class="tabbed-labels"><label for="__tabbed_7_1">docker compose (Plugin)</label><label for="__tabbed_7_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>Sie können das ändern, indem Sie <code>data/conf/sogo/sogo.conf</code> modifizieren:</p>
@ -2629,19 +2714,55 @@ Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container
(beispiel.org, beispiel.com, beispiel.net)
);
</code></pre></div>
<p>SOGo neu starten: <code>docker compose restart sogo-mailcow</code></p>
<p>SOGo neu starten:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="8:2"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio" /><input id="__tabbed_8_2" name="__tabbed_8" type="radio" /><div class="tabbed-labels"><label for="__tabbed_8_1">docker compose (Plugin)</label><label for="__tabbed_8_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>Führen Sie <code>docker compose restart memcached-mailcow sogo-mailcow</code> aus, um die Änderungen zu aktivieren.</p>
<p>Führen Sie folgenden Befehl aus, um die Änderungen zu aktivieren:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="9:2"><input checked="checked" id="__tabbed_9_1" name="__tabbed_9" type="radio" /><input id="__tabbed_9_2" name="__tabbed_9" type="radio" /><div class="tabbed-labels"><label for="__tabbed_9_1">docker compose (Plugin)</label><label for="__tabbed_9_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>memcached-mailcow<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
</div>
</div>
<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 folgenden Befehl aus dem mailcow Verzeichnis aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="10:2"><input checked="checked" id="__tabbed_10_1" name="__tabbed_10" type="radio" /><input id="__tabbed_10_2" name="__tabbed_10" type="radio" /><div class="tabbed-labels"><label for="__tabbed_10_1">docker compose (Plugin)</label><label for="__tabbed_10_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-u<span class="w"> </span>sogo<span class="w"> </span>sogo-mailcow<span class="w"> </span>sogo-tool<span class="w"> </span>user-preferences<span class="w"> </span><span class="nb">set</span><span class="w"> </span>defaults<span class="w"> </span>user@example.com<span class="w"> </span>SOGoTOTPEnabled<span class="w"> </span><span class="s1">&#39;{&quot;SOGoTOTPEnabled&quot;:0}&#39;</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-u<span class="w"> </span>sogo<span class="w"> </span>sogo-mailcow<span class="w"> </span>sogo-tool<span class="w"> </span>user-preferences<span class="w"> </span><span class="nb">set</span><span class="w"> </span>defaults<span class="w"> </span>user@example.com<span class="w"> </span>SOGoTOTPEnabled<span class="w"> </span><span class="s1">&#39;{&quot;SOGoTOTPEnabled&quot;:0}&#39;</span>
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-01 09:33:47</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2656,6 +2777,8 @@ Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2723,7 +2846,7 @@ Nachdem Sie diese Datei ersetzt haben, müssen Sie SOGo und Memcached Container
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2490,21 +2491,45 @@
forward-addr: 8.8.4.4 # VERWENDET KEINE ÖFFENTLICHEN DNS-SERVER - NUR EIN BEISPIEL
</code></pre></div>
<p>Unbound neu starten:</p>
<div class="highlight"><pre><span></span><code>docker compose restart unbound-mailcow
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="w"> </span>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>unbound-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="w"> </span>docker-compose<span class="w"> </span>restart<span class="w"> </span>unbound-mailcow
</code></pre></div>
</div>
</div>
</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>
<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 .
</code></pre></div>
<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>Stoppen und starten Sie bitte im Anschluss noch den Docker Stack:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="w"> </span>docker<span class="w"> </span>compose<span class="w"> </span>down
<span class="w"> </span>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="w"> </span>docker-compose<span class="w"> </span>down
<span class="w"> </span>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-01 09:33:47</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-12-31 11:42:41</span>
</small>
@ -2519,6 +2544,8 @@ cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.over
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2586,7 +2613,7 @@ cp helper-scripts/docker-compose.override.yml.d/EXTERNAL_DNS/docker-compose.over
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1287,7 +1288,7 @@
<li class="md-nav__item">
<a href="../../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2734,7 +2735,19 @@ Beispiel:
- MAILQ_THRESHOLD=${MAILQ_THRESHOLD:-20}
- MAILQ_CRIT=${MAILQ_CRIT:-30}
</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 Sie den folgenden Befehl aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<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>
@ -2776,7 +2789,7 @@ Beispiel:
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-01 09:33:47</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2791,6 +2804,8 @@ Beispiel:
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2858,7 +2873,7 @@ Beispiel:
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1292,7 +1293,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2440,6 +2441,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2507,7 +2510,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1292,7 +1293,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2456,6 +2457,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2523,7 +2526,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1292,7 +1293,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2434,6 +2435,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2501,7 +2504,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1289,7 +1290,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2494,7 +2495,7 @@
<p>Das UV-Flag (wie in "user verification") erzwingt, dass WebAuthn den Benutzer verifiziert, bevor es den Zugriff auf den Schlüssel erlaubt (denken Sie an eine PIN). Wir erzwingen keine UV, um Logins über iOS und NFC (YubiKey) zu ermöglichen.</p>
<h2 id="login-und-schlussel-verarbeitung">Login und Schlüssel-Verarbeitung<a class="headerlink" href="#login-und-schlussel-verarbeitung" title="Permanent link">&para;</a></h2>
<p>mailcow verwendet <strong>Client-seitige Schlüsselverarbeitung</strong>. Wir bitten den Authentifikator (d.h. YubiKey), die Registrierung in seinem Speicher zu speichern.</p>
<p>Ein Benutzer muss keinen Benutzernamen eingeben. Die verfügbaren Anmeldedaten - falls vorhanden - werden dem Nutzer angezeigt, wenn er den "Schlüssel-Login" über das Mailcow UI Login auswählt.</p>
<p>Ein Benutzer muss keinen Benutzernamen eingeben. Die verfügbaren Anmeldedaten - falls vorhanden - werden dem Nutzer angezeigt, wenn er den "Schlüssel-Login" über das mailcow UI Login auswählt.</p>
<p>Beim Aufruf des Login-Prozesses werden dem Authentifikator keine Credential-IDs übergeben. Dies wird ihn dazu zwingen, die Anmeldeinformationen in seinem eigenen Speicher zu suchen.</p>
<h2 id="wer-kann-webauthn-benutzen-um-sich-bei-mailcow-anzumelden">Wer kann WebAuthn benutzen, um sich bei mailcow anzumelden?<a class="headerlink" href="#wer-kann-webauthn-benutzen-um-sich-bei-mailcow-anzumelden" title="Permanent link">&para;</a></h2>
<p>Ab heute sind nur Administratoren und Domain-Administratoren in der Lage, WebAuthn/FIDO2 einzurichten.</p>
@ -2506,7 +2507,7 @@
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-01-31 11:08:49</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2521,6 +2522,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2588,7 +2591,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1333,7 +1334,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2518,6 +2519,8 @@ Sollte das der Fall sein empfiehlt es sich mit einem Klick auf <code>Zurücksetz
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2585,7 +2588,7 @@ Sollte das der Fall sein empfiehlt es sich mit einem Klick auf <code>Zurücksetz
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1292,7 +1293,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2444,6 +2445,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2511,7 +2514,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1292,7 +1293,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2435,6 +2436,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2502,7 +2505,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1292,7 +1293,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2411,7 +2412,7 @@
<p>Ein Mailbox-Nutzer kann den Spam-Filter und die Black-/Whitelist-Einstellungen für seine Mailbox individuell anpassen, indem er zum Reiter <strong>Spam-Filter</strong> in der Mailcow-Benutzeroberfläche navigiert.</p>
<p>Ein Mailbox-Nutzer kann den Spam-Filter und die Black-/Whitelist-Einstellungen für seine Mailbox individuell anpassen, indem er zum Reiter <strong>Spam-Filter</strong> in der mailcow-Benutzeroberfläche navigiert.</p>
<p><img alt="Wo man die Spam-, Black- und Whitelist-Einstellungen des Benutzers anpasst" src="../../../assets/images/manual-guides/mailcow-spamfilter.png" /></p>
<div class="admonition info">
<p class="admonition-title">Info</p>
@ -2424,7 +2425,7 @@ Für eine domainweite Black- und Whitelist lesen Sie bitte unsere Anleitung zu <
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-02-02 10:57:04</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2439,6 +2440,8 @@ Für eine domainweite Black- und Whitelist lesen Sie bitte unsere Anleitung zu <
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2506,7 +2509,7 @@ Für eine domainweite Black- und Whitelist lesen Sie bitte unsere Anleitung zu <
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1326,7 +1327,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2504,6 +2505,8 @@ index e047136e..933c4137 100644
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2571,7 +2574,7 @@ index e047136e..933c4137 100644
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1347,7 +1348,7 @@
<li class="md-nav__item">
<a href="../u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2544,6 +2545,8 @@ Um sie zu sehen, klicken Sie einfach auf das kleine Plus-Symbol auf der linken S
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2611,7 +2614,7 @@ Um sie zu sehen, klicken Sie einfach auf das kleine Plus-Symbol auf der linken S
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -21,7 +21,7 @@
<title>Zwei-Faktoren-Authentifizierung - mailcow: dockerized documentation</title>
<title>Zwei-Faktor Authentifizierung - mailcow: dockerized documentation</title>
@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -118,7 +119,7 @@
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</span>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1296,12 +1297,12 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
@ -1357,14 +1358,6 @@
Deaktivieren inoffizieller unterstützter Fido Security Keys
</a>
<nav class="md-nav" aria-label="Deaktivieren inoffizieller unterstützter Fido Security Keys">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#beispiel" class="md-nav__link">
Beispiel:
</a>
</li>
<li class="md-nav__item">
@ -1384,11 +1377,6 @@
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
@ -2548,14 +2536,6 @@
Deaktivieren inoffizieller unterstützter Fido Security Keys
</a>
<nav class="md-nav" aria-label="Deaktivieren inoffizieller unterstützter Fido Security Keys">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#beispiel" class="md-nav__link">
Beispiel:
</a>
</li>
<li class="md-nav__item">
@ -2575,11 +2555,6 @@
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
@ -2608,7 +2583,7 @@
<h1>Zwei-Faktoren-Authentifizierung</h1>
<h1>Zwei-Faktor Authentifizierung</h1>
<p>Bislang sind drei Methoden für die <em>Zwei-Faktor-Authentifizierung</em> implementiert: WebAuthn (ersetzt seit Februar 2022 U2F), Yubi OTP und TOTP</p>
<ul>
@ -2639,7 +2614,7 @@ Geben Sie schließlich Ihr aktuelles Kontopasswort ein und berühren Sie nach Au
<hr />
<h2 id="webauthn-u2f-ersatz">WebAuthn (U2F, Ersatz)<a class="headerlink" href="#webauthn-u2f-ersatz" title="Permanent link">&para;</a></h2>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</p>
<p><strong>Seit Februar 2022 hat Google Chrome die Unterstützung für U2F aufgegeben und die Verwendung von WebAuthn standardisiert.<br></strong>
<em>Die WebAuthn API (der Ersatz für U2F) ist seit dem 21. Januar 2022 Teil von mailcow, wenn Sie also den Key über Februar 2022 hinaus nutzen wollen, sollten Sie ein Update mit der <code>update.sh</code></em> in Betracht ziehen. </p>
</div>
@ -2662,7 +2637,7 @@ Geben Sie schließlich Ihr aktuelles Kontopasswort ein und berühren Sie nach Au
<p>WebAuthn funktioniert auch ohne Internetverbindung.</p>
<h3 id="was-passiert-mit-meinem-registrierten-fido-security-key-nach-dem-update-von-u2f-auf-webauthn">Was passiert mit meinem registrierten Fido Security Key nach dem Update von U2F auf WebAuthn?<a class="headerlink" href="#was-passiert-mit-meinem-registrierten-fido-security-key-nach-dem-update-von-u2f-auf-webauthn" title="Permanent link">&para;</a></h3>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</p>
<p>Mit dem neuen U2F-Ersatz (WebAuthn) müssen Sie Ihren Fido Security Key neu registrieren, zum Glück ist WebAuthn abwärtskompatibel und unterstützt das U2F-Protokoll.</p>
</div>
<p>Im Idealfall sollten Sie beim nächsten Einloggen (mit dem Schlüssel) ein Textfeld erhalten, das besagt, dass Ihr Fido Security Key aufgrund des Updates auf WebAuthn entfernt und als 2-Faktor-Authentifikator gelöscht wurde.</p>
@ -2670,23 +2645,39 @@ 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>
<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>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 dem folgenden Befehl neu: </p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="admonition abstract">
<p class="admonition-title">Beispiel</p>
<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>.
Nachdem Sie alle anderen Zertifikate gelöscht haben, können Sie WebAuthn 2FA nur noch mit Apple-Geräten aktivieren.</p>
<p>Das ist für jeden Hersteller gleich, also wählen Sie aus, was Ihnen gefällt (wenn Sie es wollen).</p>
<h4 id="eigene-zertifikate-fur-webauthn-verwenden">Eigene Zertifikate für WebAuthn verwenden<a class="headerlink" href="#eigene-zertifikate-fur-webauthn-verwenden" title="Permanent link">&para;</a></h4>
<p>Wenn du ein gültiges Zertifikat vom Hersteller deines Schlüssels hast, kannst du es auch zu deiner Mailcow hinzufügen!</p>
<p>Kopieren Sie einfach das Zertifikat in den <code>data/web/inc/lib/WebAuthn/rootCertificates</code> Ordner und starten Sie Ihre Mailcow neu.</p>
<p>Das ist für jeden Hersteller gleich, also wählen Sie aus, was Ihnen gefällt (wenn Sie wollen).</p>
</div>
<h3 id="eigene-zertifikate-fur-webauthn-verwenden">Eigene Zertifikate für WebAuthn verwenden<a class="headerlink" href="#eigene-zertifikate-fur-webauthn-verwenden" title="Permanent link">&para;</a></h3>
<p>Wenn Sie ein gültiges Zertifikat vom Hersteller eines Schlüssels haben, können Sie es auch zu ihrer mailcow hinzufügen!</p>
<p>Kopieren Sie einfach das Zertifikat in den <code>data/web/inc/lib/WebAuthn/rootCertificates</code> Ordner und starten Sie Ihre mailcow neu.</p>
<p>Nun sollten Sie in der Lage sein, auch dieses Gerät zu registrieren, obwohl die Überprüfung für die Herstellerzertifikate aktiviert ist, da Sie das Zertifikat manuell hinzugefügt haben. </p>
<h4 id="ist-es-gefahrlich-den-vendor-check-deaktiviert-zu-lassen">Ist es gefährlich, den Vendor Check deaktiviert zu lassen?<a class="headerlink" href="#ist-es-gefahrlich-den-vendor-check-deaktiviert-zu-lassen" title="Permanent link">&para;</a></h4>
<h3 id="ist-es-gefahrlich-den-vendor-check-deaktiviert-zu-lassen">Ist es gefährlich, den Vendor Check deaktiviert zu lassen?<a class="headerlink" href="#ist-es-gefahrlich-den-vendor-check-deaktiviert-zu-lassen" title="Permanent link">&para;</a></h3>
<p>Nein, das ist es nicht!
Diese Herstellerzertifikate werden nur zur Überprüfung der Originalhardware verwendet, nicht zur Absicherung des Registrierungsprozesses.</p>
<p>Wie Sie in diesen Artikeln lesen können, hat die Deaktivierung nichts mit der Software-Sicherheit zu tun:
- <a href="https://developers.yubico.com/U2F/Attestation_and_Metadata/">https://developers.yubico.com/U2F/Attestation_and_Metadata/</a>
- <a href="https://medium.com/webauthnworks/webauthn-fido2-demystifying-attestation-and-mds-efc3b3cb3651">https://medium.com/webauthnworks/webauthn-fido2-demystifying-attestation-and-mds-efc3b3cb3651</a>
- <a href="https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01">https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01</a></p>
<p>Wie Sie in diesen Artikeln lesen können, hat die Deaktivierung nichts mit der Software-Sicherheit zu tun:</p>
<ul>
<li><a href="https://developers.yubico.com/U2F/Attestation_and_Metadata/">https://developers.yubico.com/U2F/Attestation_and_Metadata/</a></li>
<li><a href="https://medium.com/webauthnworks/webauthn-fido2-demystifying-attestation-and-mds-efc3b3cb3651">https://medium.com/webauthnworks/webauthn-fido2-demystifying-attestation-and-mds-efc3b3cb3651</a></li>
<li><a href="https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01">https://medium.com/webauthnworks/sorting-fido-ctap-webauthn-terminology-7d32067c0b01</a></li>
</ul>
<p>Letztendlich ist es aber natürlich Ihre Entscheidung, ob Sie dieses Häkchen deaktiviert oder aktiviert lassen. </p>
<hr />
<h2 id="totp">TOTP<a class="headerlink" href="#totp" title="Permanent link">&para;</a></h2>
@ -2703,7 +2694,7 @@ Diese Herstellerzertifikate werden nur zur Überprüfung der Originalhardware ve
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2718,6 +2709,8 @@ Diese Herstellerzertifikate werden nur zur Überprüfung der Originalhardware ve
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2785,7 +2778,7 @@ Diese Herstellerzertifikate werden nur zur Überprüfung der Originalhardware ve
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2429,18 +2430,38 @@
}
</code></pre></div>
<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="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<p>Andernfalls starten Sie Nginx neu:</p>
<div class="highlight"><pre><span></span><code>docker compose restart nginx-mailcow
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2455,6 +2476,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2522,7 +2545,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2476,6 +2477,8 @@ $autodiscover_config = array(
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2543,7 +2546,7 @@ $autodiscover_config = array(
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2420,8 +2421,18 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
<div class="highlight"><pre><span></span><code>ssl_min_protocol = TLSv1
</code></pre></div>
<p>Starten Sie die betroffenen Dienste neu:</p>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow dovecot-mailcow
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow<span class="w"> </span>dovecot-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow<span class="w"> </span>dovecot-mailcow
</code></pre></div>
</div>
</div>
</div>
<p>Tipp: Sie können TLS 1.2 in Windows 7 aktivieren.</p>
<hr>
@ -2429,7 +2440,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2444,6 +2455,8 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2511,7 +2524,7 @@ smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2410,7 +2411,7 @@
<p>Es ist möglich, Pre- und Post-Update-Hooks zum <code>update.sh</code> Skript hinzuzufügen, das Ihre gesamte mailcow-Installation aktualisiert.</p>
<p>Um dies zu tun, fügen Sie einfach das entsprechende Bash-Skript in Ihr Mailcow-Root-Verzeichnis ein: </p>
<p>Um dies zu tun, fügen Sie einfach das entsprechende Bash-Skript in Ihr mailcow-Root-Verzeichnis ein: </p>
<ul>
<li><code>pre_update_hook.sh</code> für Befehle, die vor dem Update laufen sollen</li>
<li><code>post_update_hook.sh</code> für Befehle, die nach dem Update ausgeführt werden sollen</li>
@ -2423,7 +2424,7 @@
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-02-02 12:23:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2438,6 +2439,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2505,7 +2508,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1282,7 +1283,7 @@
<li class="md-nav__item">
<a href="../mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2435,6 +2436,8 @@ Wenn Sie einen öffentlichen Resolver wie Google 4x8, OpenDNS oder einen anderen
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2502,7 +2505,7 @@ Wenn Sie einen öffentlichen Resolver wie Google 4x8, OpenDNS oder einen anderen
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -591,7 +592,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1290,7 +1291,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2449,6 +2450,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2516,7 +2519,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1331,7 +1332,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2517,14 +2518,26 @@ Wenn SOGo deaktiviert ist, können alle unten aufgeführten Hashing-Methoden von
<blockquote>
<p>Ich habe die Passwort-Hashes in der SQL-Tabelle "Mailbox" geändert und kann mich nicht anmelden.</p>
</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: </p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>sogo-mailcow
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-09 15:44:30</span>
</small>
@ -2539,6 +2552,8 @@ Wenn SOGo deaktiviert ist, können alle unten aufgeführten Hashing-Methoden von
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2606,7 +2621,7 @@ Wenn SOGo deaktiviert ist, können alle unten aufgeführten Hashing-Methoden von
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1324,7 +1325,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2513,6 +2514,8 @@ Ihnen den Zugang wie oben beschrieben gewähren.</p>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2580,7 +2583,7 @@ Ihnen den Zugang wie oben beschrieben gewähren.</p>
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -601,7 +602,7 @@
<li class="md-nav__item">
<a href="../firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1290,7 +1291,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2439,9 +2440,20 @@ services:
entrypoint: [&quot;echo&quot;, &quot;ipv6nat disabled in compose.override.yml&quot;]
</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>
<div class="highlight"><pre><span></span><code>docker compose down
docker compose up -d
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>down
docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>down
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="highlight"><pre><span></span><code>Server:
@ -2450,16 +2462,36 @@ docker compose up -d
[...]
</code></pre></div>
<p>unbound neu starten:</p>
<div class="highlight"><pre><span></span><code>docker compose restart unbound-mailcow
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>unbound-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>unbound-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="highlight"><pre><span></span><code>smtp_address_preference = ipv4
inet_protocols = ipv4
</code></pre></div>
<p>Starten Sie Postfix neu:</p>
<div class="highlight"><pre><span></span><code>docker compose restart postfix-mailcow
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>postfix-mailcow
</code></pre></div>
</div>
</div>
</div>
<p><strong>5.</strong> Wenn im Docker Daemon IPv6 komplett deaktiviert ist:</p>
<p>Folgende NGINX, Dovecot und Php-fpm Konfigurationsdateien anpassen</p>
<div class="highlight"><pre><span></span><code>sed -i &#39;/::/d&#39; data/conf/nginx/listen_*
@ -2474,7 +2506,7 @@ sed -i &#39;s/\[::\]://g&#39; data/conf/phpfpm/php-fpm.d/pools.conf
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-10-19 15:29:13</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-09 15:44:30</span>
</small>
@ -2489,6 +2521,8 @@ sed -i &#39;s/\[::\]://g&#39; data/conf/phpfpm/php-fpm.d/pools.conf
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2556,7 +2590,7 @@ sed -i &#39;s/\[::\]://g&#39; data/conf/phpfpm/php-fpm.d/pools.conf
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -663,7 +664,7 @@
<li class="md-nav__item">
<a href="../firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1352,7 +1353,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2568,7 +2569,19 @@ services:
depends_on:
- rspamd-mailcow
</code></pre></div>
<p>Starte <code>docker compose up -d</code></p>
<p>Starten Sie den mailcow Stack mit:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="highlight"><pre><span></span><code>reporting {
@ -2585,29 +2598,79 @@ services:
</ul>
<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>
<div class="highlight"><pre><span></span><code>docker compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>date<span class="w"> </span>-r<span class="w"> </span>/var/lib/rspamd/dmarc_reports_last_log
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>date<span class="w"> </span>-r<span class="w"> </span>/var/lib/rspamd/dmarc_reports_last_log
</code></pre></div>
</div>
</div>
</div>
<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="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>cat<span class="w"> </span>/var/lib/rspamd/dmarc_reports_last_log
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>cat<span class="w"> </span>/var/lib/rspamd/dmarc_reports_last_log
</code></pre></div>
</div>
</div>
</div>
<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="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">docker compose (Plugin)</label><label for="__tabbed_4_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>rspamadm<span class="w"> </span>dmarc_report
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>rspamd-mailcow<span class="w"> </span>rspamadm<span class="w"> </span>dmarc_report
</code></pre></div>
</div>
</div>
</div>
<p>Bestätigen Sie, dass Rspamd Daten in Redis aufgezeichnet hat:
Ä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;
Ändern Sie <code>20220428</code> in Ihr gewünschtes Datum zum überprüfen.</p>
<div class="tabbed-set tabbed-alternate" data-tabs="5:2"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><div class="tabbed-labels"><label for="__tabbed_5_1">docker compose (Plugin)</label><label for="__tabbed_5_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>redis-cli<span class="w"> </span>SMEMBERS<span class="w"> </span><span class="s2">&quot;dmarc_idx;20220428&quot;</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>redis-cli<span class="w"> </span>SMEMBERS<span class="w"> </span><span class="s2">&quot;dmarc_idx;20220428&quot;</span>
</code></pre></div>
</div>
</div>
</div>
<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="tabbed-set tabbed-alternate" data-tabs="6:2"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">docker compose (Plugin)</label><label for="__tabbed_6_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>redis-cli<span class="w"> </span>ZRANGE<span class="w"> </span><span class="s2">&quot;dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428&quot;</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="m">49</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>redis-mailcow<span class="w"> </span>redis-cli<span class="w"> </span>ZRANGE<span class="w"> </span><span class="s2">&quot;dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428&quot;</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="m">49</span>
</code></pre></div>
</div>
</div>
</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>
<p>Im obigen Beispiel werden die Berichte einmal alle 24 Stunden sowie für den gestrigen Tag versendet. Dies ist für die meisten Konfigurationen ausreichend.</p>
<p>Wenn Sie ein großes E-Mail-Aufkommen haben und die DMARC-Berichterstattung mehr als einmal am Tag durchführen wollen, müssen Sie einen zweiten Zeitplan erstellen und ihn mit <code>dmarc_report $(date '+%Y%m%d')</code> ausführen, um den aktuellen Tag zu verarbeiten. Sie müssen sicherstellen, dass der erste Lauf an jedem Tag auch den letzten Bericht vom Vortag verarbeitet, also muss er zweimal gestartet werden, einmal mit <code>$(date --date yesterday '+%Y%m%d')</code> um <code>0 5 0 * * *</code> (00:05 AM) und dann mit <code>$(date '+%Y%m%d')</code> mit dem gewünschten Intervall.</p>
<p>Der Ofelia-Zeitplan hat die gleiche Implementierung wie <code>cron</code> in Go, die unterstützte Syntax ist beschrieben in <a href="https://pkg.go.dev/github.com/robfig/cron">cron Documentation</a></p>
<p>Um den Zeitplan zu ändern:</p>
<ol>
<li><code>docker-compose.override.yml</code> bearbeiten:</li>
</ol>
<li>
<p><code>docker-compose.override.yml</code> bearbeiten:
<div class="highlight"><pre><span></span><code>version: &#39;2.1&#39;
services:
@ -2623,13 +2686,37 @@ services:
ofelia-mailcow:
depends_on:
- rspamd-mailcow
</code></pre></div>
<ol>
<li>
<p>Führen Sie <code>docker compose up -d</code> aus.</p>
</code></pre></div></p>
</li>
<li>
<p>Führen Sie <code>docker compose restart ofelia-mailcow</code> aus</p>
<p>Starten Sie die betroffenen Container neu:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="7:2"><input checked="checked" id="__tabbed_7_1" name="__tabbed_7" type="radio" /><input id="__tabbed_7_2" name="__tabbed_7" type="radio" /><div class="tabbed-labels"><label for="__tabbed_7_1">docker compose (Plugin)</label><label for="__tabbed_7_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
</li>
<li>
<p>Führen Sie einen Neustart nur von Ofelia aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="8:2"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio" /><input id="__tabbed_8_2" name="__tabbed_8" type="radio" /><div class="tabbed-labels"><label for="__tabbed_8_1">docker compose (Plugin)</label><label for="__tabbed_8_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>ofelia-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>ofelia-mailcow
</code></pre></div>
</div>
</div>
</div>
</li>
</ol>
<h2 id="dmarc-berichterstattung-deaktivieren">DMARC-Berichterstattung deaktivieren<a class="headerlink" href="#dmarc-berichterstattung-deaktivieren" title="Permanent link">&para;</a></h2>
@ -2642,7 +2729,19 @@ 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>
</li>
<li>
<p>Führen Sie <code>docker compose up -d</code> aus</p>
<p>Starten Sie die betroffenen Container neu:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="9:2"><input checked="checked" id="__tabbed_9_1" name="__tabbed_9" type="radio" /><input id="__tabbed_9_2" name="__tabbed_9" type="radio" /><div class="tabbed-labels"><label for="__tabbed_9_1">docker compose (Plugin)</label><label for="__tabbed_9_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
</li>
</ol>
@ -2651,7 +2750,7 @@ services:
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-11-09 01:03:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-09 15:44:30</span>
</small>
@ -2666,6 +2765,8 @@ services:
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2733,7 +2834,7 @@ services:
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -642,7 +643,7 @@
<li class="md-nav__item">
<a href="../firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1331,7 +1332,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2506,7 +2507,21 @@ DOVEADM_PORT=127.0.0.1:19991
SQL_PORT=127.0.0.1:13306
SOLR_PORT=127.0.0.1:18983
</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 folgende Befehle aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>down
docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>down
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>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>
@ -2534,14 +2549,28 @@ services:
- &#39;[2001:db8:dead:beef::123]:80:80&#39;
- &#39;[2001:db8:dead:beef::123]:443:443&#39;
</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 folgendes aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>down
docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>down
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-01 09:33:47</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-09 15:44:30</span>
</small>
@ -2556,6 +2585,8 @@ services:
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2623,7 +2654,7 @@ services:
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -601,7 +602,7 @@
<li class="md-nav__item">
<a href="../firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1290,7 +1291,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2445,6 +2446,8 @@ Das Relaying über diese Schnittstelle ist notwendig (anstatt - zum Beispiel - d
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2512,7 +2515,7 @@ Das Relaying über diese Schnittstelle ist notwendig (anstatt - zum Beispiel - d
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -682,7 +683,7 @@
<li class="md-nav__item">
<a href="../firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1371,7 +1372,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2556,7 +2557,19 @@
<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.
Führen Sie <code>docker compose logs --help</code> aus, um mehr zu erfahren. </p>
Führen Sie folgenden Befehl aus, um mehr zu erfahren:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>--help
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>logs<span class="w"> </span>--help
</code></pre></div>
</div>
</div>
</div>
<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>Am Ende wird jede Zeile der Logs den Docker-Daemon erreichen - ungefiltert.</p>
@ -2620,25 +2633,39 @@ erstellen Sie die Datei <code>/etc/rsyslog.d/docker.conf</code>:</p>
<h4 id="uber-daemonjson-global">Über daemon.json (global)<a class="headerlink" href="#uber-daemonjson-global" title="Permanent link">&para;</a></h4>
<p>Wenn Sie den Logging-Treiber <strong>global</strong> ändern wollen, editieren Sie die Konfigurationsdatei des Docker-Daemons <code>/etc/docker/daemon.json</code> und starten Sie den Docker-Dienst neu:</p>
<div class="highlight"><pre><span></span><code>{
...
[...]
&quot;log-driver&quot;: &quot;gelf&quot;,
&quot;log-opts&quot;: {
&quot;gelf-address&quot;: &quot;udp://graylog:12201&quot;
}
...
[...]
}
</code></pre></div>
<p>Für Syslog:</p>
<div class="highlight"><pre><span></span><code>{
...
[...]
&quot;log-driver&quot;: &quot;syslog&quot;,
&quot;log-opts&quot;: {
&quot;syslog-address&quot;: &quot;udp://1.2.3.4:514&quot;
}
...
[...]
}
</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 die folgenden Befehle aus, um die Container mit dem neuen Protokollierungstreiber neu zu erstellen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>down
docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>down
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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
komprimieren und zu löschen.</p>
@ -2663,7 +2690,7 @@ komprimieren und zu löschen.</p>
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-09-01 09:33:47</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-09 15:44:30</span>
</small>
@ -2678,6 +2705,8 @@ komprimieren und zu löschen.</p>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2745,7 +2774,7 @@ komprimieren und zu löschen.</p>
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -677,7 +678,7 @@
<li class="md-nav__item">
<a href="../firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1366,7 +1367,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2554,19 +2555,31 @@ mailcow: dockerized vertraut auf das Standard-Gateway IP 172.22.1.1 als Proxy.</
</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><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 den folgenden Befehl ausführen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<p><strong>Wichtige Informationen, bitte lesen Sie diese sorgfältig durch!</strong></p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>Wenn Sie planen, einen Reverse-Proxy zu verwenden und einen anderen Servernamen als <strong>MAILCOW_HOSTNAME</strong> verwenden wollen, müssen Sie <strong>Zusätzliche Servernamen für mailcow UI</strong> am Ende dieser Seite hinzufügen.</p>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</p>
<p>Stellen Sie sicher, dass Sie <code>generate_config.sh</code> ausführen, bevor Sie die untenstehenden Konfigurationsbeispiele aktivieren.
Das Skript <code>generate_config.sh</code> kopiert die Snake-oil Zertifikate an den richtigen Ort, so dass die Dienste nicht aufgrund fehlender Dateien nicht starten können.</p>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</p>
<p>Wenn Sie TLS SNI aktivieren (<code>ENABLE_TLS_SNI</code> in mailcow.conf), <strong>müssen</strong> die Zertifikatspfade in Ihrem Reverse-Proxy mit den korrekten Pfaden in data/assets/ssl/{hostname} übereinstimmen. Die Zertifikate werden in <code>data/assets/ssl/{hostname1,hostname2,etc}</code> aufgeteilt und werden daher nicht funktionieren, wenn Sie die Beispiele von unten kopieren, die auf <code>data/assets/ssl/cert.pem</code> etc. zeigen.</p>
</div>
<div class="admonition info">
@ -2705,8 +2718,20 @@ 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>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.
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>
Dazu müssen wir <code>SKIP_LETS_ENCRYPT=y</code> in unserer <code>mailcow.conf</code> setzen und den folgenden Befehl ausführen, um die Änderungen zu übernehmen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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="nt">services</span><span class="p">:</span>
@ -2745,7 +2770,7 @@ Dazu müssen wir <code>SKIP_LETS_ENCRYPT=y</code> in unserer <code>mailcow.conf<
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/var/run/docker.sock:/var/run/docker.sock:ro</span>
<span class="w"> </span><span class="nt">restart</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">always</span>
<span class="w"> </span><span class="nt">environment</span><span class="p">:</span>
<span class="w"> </span><span class="c1"># Ändern Sie dies nur, wenn Sie eine andere Domain für Mailcows Web-Frontend verwenden als in der Standard-Konfiguration</span>
<span class="w"> </span><span class="c1"># Ändern Sie dies nur, wenn Sie eine andere Domain für mailcows Web-Frontend verwenden als in der Standard-Konfiguration</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">DOMAIN=${MAILCOW_HOSTNAME}</span>
<span class="nt">networks</span><span class="p">:</span>
@ -2760,10 +2785,22 @@ Dazu müssen wir <code>SKIP_LETS_ENCRYPT=y</code> in unserer <code>mailcow.conf<
<span class="w"> </span><span class="c1"># Name des externen Docker Volumes, welches Traefiks `acme.json&#39; Datei enthält</span>
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">traefik_acme</span>
</code></pre></div>
<p>Starten Sie die neuen Container mit <code>docker compose up -d</code>.</p>
<p>Starten Sie die neuen Container mit:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<p>Da Traefik 2 ein acme v2 Format verwendet, um ALLE Zertifikaten von allen Domains zu speichern, müssen wir einen Weg finden, die Zertifikate auszulagern. Zum Glück haben wir [diesen kleinen Container] (<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>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 <a href="https://hub.docker.com/r/humenius/traefik-certs-dumper">hier</a> gezeigte docker-compose.yml verwenden.</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>
<h3 id="caddy-v2-von-der-community-unterstutzt">Caddy v2 (von der Community unterstützt)<a class="headerlink" href="#caddy-v2-von-der-community-unterstutzt" title="Permanent link">&para;</a></h3>
@ -2833,14 +2870,26 @@ 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>
<div class="highlight"><pre><span></span><code>ADDITIONAL_SERVER_NAMES=webmail.domain.tld,other.example.tld
</code></pre></div>
<p>Führen Sie <code>docker compose up -d</code> zum Anwenden aus.</p>
<p>Führen Sie zum Anwenden folgendes aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">docker compose (Plugin)</label><label for="__tabbed_4_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-11-03 16:35:20</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2855,6 +2904,8 @@ docker restart ${postfix_c} ${dovecot_c} ${nginx_c}
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2922,7 +2973,7 @@ docker restart ${postfix_c} ${dovecot_c} ${nginx_c}
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -601,7 +602,7 @@
<li class="md-nav__item">
<a href="../firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1290,7 +1291,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2438,6 +2439,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2505,7 +2508,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -79,8 +79,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -601,7 +602,7 @@
<li class="md-nav__item">
<a href="../firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1290,7 +1291,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2418,16 +2419,40 @@ SNAT_TO_SOURCE=1.2.3.4
# Benutze dieses IPv6 für ausgehende Verbindungen (SNAT)
SNAT6_TO_SOURCE=dead:beef
</code></pre></div>
<p>Führen Sie <code>docker compose up -d</code> aus.</p>
<p>Führen Sie folgendes aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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 mit hilfe des folgendem Befehles um sicherzustellen, dass die SNAT-Einstellungen angewendet wurden:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="o">=</span><span class="m">200</span><span class="w"> </span>netfilter-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="o">=</span><span class="m">200</span><span class="w"> </span>netfilter-mailcow
</code></pre></div>
</div>
</div>
</div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-08-31 14:45:46</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2442,6 +2467,8 @@ SNAT6_TO_SOURCE=dead:beef
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2509,7 +2536,7 @@ SNAT6_TO_SOURCE=dead:beef
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -724,7 +725,7 @@
<li class="md-nav__item">
<a href="../firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1413,7 +1414,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2641,14 +2642,39 @@
<h2 id="lets-encrypt-wird-mitgeliefert">Let's Encrypt (wird mitgeliefert)<a class="headerlink" href="#lets-encrypt-wird-mitgeliefert" title="Permanent link">&para;</a></h2>
<p>Der "acme-mailcow" Container wird versuchen, ein LE-Zertifikat für <code>${MAILCOW_HOSTNAME}</code>, <code>autodiscover.ADDED_MAIL_DOMAIN</code> und <code>autoconfig.ADDED_MAIL_DOMAIN</code> zu erhalten.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</p>
<p>mailcow <strong>muss</strong> auf Port 80 verfügbar sein, damit der acme-Client funktioniert. Unsere Reverse Proxy Beispielkonfigurationen decken das ab. Sie können auch jeden externen ACME-Client (z.B. certbot) verwenden, um Zertifikate zu erhalten, aber Sie müssen sicherstellen, dass sie an den richtigen Ort kopiert werden und ein Post-Hook die betroffenen Container neu lädt. Weitere Informationen finden Sie in der Reverse Proxy-Dokumentation.</p>
</div>
<p>Standardmäßig, d.h. <strong>0 Domains</strong> sind zu mailcow hinzugefügt, wird es versuchen, ein Zertifikat für <code>${MAILCOW_HOSTNAME}</code> zu erhalten.</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>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 den folgenden Befehl:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>acme-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>acme-mailcow
</code></pre></div>
</div>
</div>
</div>
<p>Überwachen Sie die Logs mit:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="o">=</span><span class="m">200</span><span class="w"> </span>-f<span class="w"> </span>acme-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="o">=</span><span class="m">200</span><span class="w"> </span>-f<span class="w"> </span>acme-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>Verwenden Sie keine Anführungszeichen (<code>"</code>) und keine Leerzeichen zwischen den Namen!</p>
@ -2656,7 +2682,19 @@
</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>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 den folgenden Befehl aus, um betroffene Container automatisch neu zu erstellen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<div class="admonition info">
<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>
@ -2664,31 +2702,93 @@
<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
</code></pre></div>
<p>Führen Sie <code>docker compose up -d</code> aus, um es anzuwenden.</p>
<p>Führen Sie den folgenden Befehl aus, um es anzuwenden:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">docker compose (Plugin)</label><label for="__tabbed_4_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
touch data/assets/ssl/force_renew
docker compose restart acme-mailcow
# Prüfen Sie nun die Logs auf eine Erneuerung
docker compose logs --tail=200 -f acme-mailcow
<div class="tabbed-set tabbed-alternate" data-tabs="5:2"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><div class="tabbed-labels"><label for="__tabbed_5_1">docker compose (Plugin)</label><label for="__tabbed_5_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/opt/mailcow-dockerized
touch<span class="w"> </span>data/assets/ssl/force_renew
docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>acme-mailcow
<span class="c1"># Prüfen Sie nun die Logs auf eine Erneuerung</span>
docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="o">=</span><span class="m">200</span><span class="w"> </span>-f<span class="w"> </span>acme-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/opt/mailcow-dockerized
touch<span class="w"> </span>data/assets/ssl/force_renew
docker-compose<span class="w"> </span>restart<span class="w"> </span>acme-mailcow
<span class="c1"># Prüfen Sie nun die Logs auf eine Erneuerung</span>
docker-compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="o">=</span><span class="m">200</span><span class="w"> </span>-f<span class="w"> </span>acme-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>
<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, den Firewall-Dienst stoppen, die Chains 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>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 Sie einen SKIP_* Parameter geändert haben, führen Sie den folgenden Befehl aus, um die Änderungen zu übernehmen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="6:2"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">docker compose (Plugin)</label><label for="__tabbed_6_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<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, mit dem folgenden Befehl:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="7:2"><input checked="checked" id="__tabbed_7_1" name="__tabbed_7" type="radio" /><input id="__tabbed_7_2" name="__tabbed_7" type="radio" /><div class="tabbed-labels"><label for="__tabbed_7_1">docker compose (Plugin)</label><label for="__tabbed_7_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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, mit dem folgenden Befehl:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="8:2"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio" /><input id="__tabbed_8_2" name="__tabbed_8" type="radio" /><div class="tabbed-labels"><label for="__tabbed_8_1">docker compose (Plugin)</label><label for="__tabbed_8_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>Standardmäßig erstellt "acme-mailcow" ein einzelnes SAN-Zertifikat für alle validierten Domains
(siehe den <a href="#lets-encrypt-wird-mitgeliefert">ersten Abschnitt</a> und <a href="#zusatzliche-domain-namen">Zusätzliche Domainnamen</a>).
Dies bietet beste Kompatibilität, bedeutet aber, dass das Let's Encrypt-Limit überschritten wird, wenn Sie zu viele Domains zu einer einzelnen Mailcow-Installation hinzufügen.</p>
Dies bietet beste Kompatibilität, bedeutet aber, dass das Let's Encrypt-Limit überschritten wird, wenn Sie zu viele Domains zu einer einzelnen mailcow-Installation hinzufügen.</p>
<p>Um dies zu lösen, können Sie <code>ENABLE_SSL_SNI</code> so konfigurieren, dass es generiert wird:</p>
<ul>
<li>Ein Hauptserver-Zertifikat mit <code>MAILCOW_HOSTNAME</code> und allen voll qualifizierten Domainnamen in der <code>ADDITIONAL_SAN</code> Konfiguration</li>
@ -2696,9 +2796,21 @@ 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>
</ul>
<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" mit dem folgenden Befehl neu:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="9:2"><input checked="checked" id="__tabbed_9_1" name="__tabbed_9" type="radio" /><input id="__tabbed_9_2" name="__tabbed_9" type="radio" /><div class="tabbed-labels"><label for="__tabbed_9_1">docker compose (Plugin)</label><label for="__tabbed_9_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</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>.
Sie sollten sicherstellen, dass diese Clients den <code>MAILCOW_HOSTNAME</code> für sichere Verbindungen verwenden, wenn Sie diese Funktion aktivieren.</p>
</div>
@ -2706,7 +2818,7 @@ Sie sollten sicherstellen, dass diese Clients den <code>MAILCOW_HOSTNAME</code>
<ul>
<li><code>MAILCOW_HOSTNAME=server.email.tld</code></li>
<li><code>ADDITIONAL_SAN=webmail.email.tld,mail.*</code></li>
<li>Mailcow E-Mail-Domänen: "domain1.tld" und "domain2.tld"</li>
<li>mailcow E-Mail-Domänen: "domain1.tld" und "domain2.tld"</li>
</ul>
<p>Die folgenden Zertifikate werden generiert:</p>
<ul>
@ -2723,18 +2835,54 @@ Sie sollten sicherstellen, dass diese Clients den <code>MAILCOW_HOSTNAME</code>
docker restart $(docker ps -qaf name=nginx-mailcow)
docker restart $(docker ps -qaf name=dovecot-mailcow)
</code></pre></div>
<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>
<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 den folgenden Befehl aus, um Ihre Änderungen zu aktivieren:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="10:2"><input checked="checked" id="__tabbed_10_1" name="__tabbed_10" type="radio" /><input id="__tabbed_10_2" name="__tabbed_10" type="radio" /><div class="tabbed-labels"><label for="__tabbed_10_1">docker compose (Plugin)</label><label for="__tabbed_10_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="highlight"><pre><span></span><code>DIRECTORY_URL=https://acme-custom-v9000.api.letsencrypt.org/directory
</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>Führen Sie <code>docker compose up -d</code> aus, um Ihre Änderungen zu aktivieren.</p>
<p>Führen Sie den folgenden Befehl aus, um Ihre Änderungen zu aktivieren:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="11:2"><input checked="checked" id="__tabbed_11_1" name="__tabbed_11" type="radio" /><input id="__tabbed_11_2" name="__tabbed_11" type="radio" /><div class="tabbed-labels"><label for="__tabbed_11_1">docker compose (Plugin)</label><label for="__tabbed_11_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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 den folgenden Befehl aus, um herauszufinden, warum eine Validierung fehlschlägt:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="12:2"><input checked="checked" id="__tabbed_12_1" name="__tabbed_12" type="radio" /><input id="__tabbed_12_2" name="__tabbed_12" type="radio" /><div class="tabbed-labels"><label for="__tabbed_12_1">docker compose (Plugin)</label><label for="__tabbed_12_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="o">=</span><span class="m">200</span><span class="w"> </span>acme-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="o">=</span><span class="m">200</span><span class="w"> </span>acme-mailcow
</code></pre></div>
</div>
</div>
</div>
<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>
<div class="highlight"><pre><span></span><code># Verbindung über SMTP STARTTLS (587)
@ -2751,8 +2899,8 @@ openssl s_client -connect MAILCOW_HOSTNAME:993 | openssl x509 -noout -text
openssl s_client -connect MAILCOW_HOSTNAME:443 | openssl x509 -noout -text
</code></pre></div>
<p>Um die von openssl zurückgegebenen Verfallsdaten gegen MAILCOW_HOSTNAME zu validieren, können Sie unser Hilfsskript verwenden:</p>
<div class="highlight"><pre><span></span><code>cd /opt/mailcow-dockerized
bash helper-scripts/expiry-dates.sh
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/opt/mailcow-dockerized
bash<span class="w"> </span>helper-scripts/expiry-dates.sh
</code></pre></div>
<hr>
@ -2760,7 +2908,7 @@ bash helper-scripts/expiry-dates.sh
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-07 13:22:32</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:34:22</span>
</small>
@ -2775,6 +2923,8 @@ bash helper-scripts/expiry-dates.sh
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2842,7 +2992,7 @@ bash helper-scripts/expiry-dates.sh
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -21,7 +21,7 @@
<title>Migration von Sync-Jobs - mailcow: dockerized documentation</title>
<title>Migration mit Sync Jobs - mailcow: dockerized documentation</title>
@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -118,7 +119,7 @@
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Migration von Sync-Jobs
Migration mit Sync Jobs
</span>
</div>
@ -605,12 +606,12 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
Migration von Sync-Jobs
Migration mit Sync Jobs
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
@ -1324,7 +1325,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2458,7 +2459,7 @@
<h1>Migration von Sync-Jobs</h1>
<h1>Migration mit Sync Jobs</h1>
<p>Sync-Aufträge werden verwendet, um bestehende E-Mails von einem externen IMAP-Server oder innerhalb von mailcow's bestehenden Mailboxen zu kopieren oder zu verschieben.</p>
<div class="admonition info">
@ -2514,6 +2515,8 @@
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2581,7 +2584,7 @@
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -704,7 +705,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1393,7 +1394,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2725,6 +2726,8 @@ Einzelheiten:
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2792,7 +2795,7 @@ Einzelheiten:
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -703,7 +704,7 @@
<li class="md-nav__item">
<a href="../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1392,7 +1393,7 @@
<li class="md-nav__item">
<a href="../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2880,6 +2881,8 @@ Sie können außerdem die <a href="https://wiki.hetzner.de/index.php/Cloud_IP_st
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2947,7 +2950,7 @@ Sie können außerdem die <a href="https://wiki.hetzner.de/index.php/Cloud_IP_st
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1285,7 +1286,7 @@
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2312,6 +2313,20 @@
Den Container hochfahren
</a>
</li>
<li class="md-nav__item">
<a href="#das-backup-repository-initialisieren" class="md-nav__link">
Das Backup Repository initialisieren
</a>
</li>
<li class="md-nav__item">
<a href="#container-neustarten" class="md-nav__link">
Container neustarten
</a>
</li>
</ul>
@ -2609,6 +2624,20 @@
Den Container hochfahren
</a>
</li>
<li class="md-nav__item">
<a href="#das-backup-repository-initialisieren" class="md-nav__link">
Das Backup Repository initialisieren
</a>
</li>
<li class="md-nav__item">
<a href="#container-neustarten" class="md-nav__link">
Container neustarten
</a>
</li>
</ul>
@ -2712,7 +2741,7 @@
<h1 id="borgmatic-backup">Borgmatic Backup<a class="headerlink" href="#borgmatic-backup" title="Permanent link">&para;</a></h1>
<h2 id="einfuhrung">Einführung<a class="headerlink" href="#einfuhrung" title="Permanent link">&para;</a></h2>
<p>Borgmatic ist ein großartiger Weg, um Backups auf Ihrem Mailcow-Setup durchzuführen, da es Ihre Daten sicher verschlüsselt und extrem einfach zu
<p>Borgmatic ist ein großartiger Weg, um Backups auf Ihrem mailcow-Setup durchzuführen, da es Ihre Daten sicher verschlüsselt und extrem einfach zu
einzurichten.</p>
<p>Aufgrund seiner Deduplizierungsfähigkeiten können Sie eine große Anzahl von Backups speichern, ohne große Mengen an Speicherplatz zu verschwenden.
So können Sie Backups in sehr kurzen Abständen durchführen, um einen minimalen Datenverlust zu gewährleisten, wenn die Notwendigkeit besteht
@ -2813,61 +2842,168 @@ 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>
<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>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<h3 id="das-backup-repository-initialisieren">Das Backup Repository initialisieren<a class="headerlink" href="#das-backup-repository-initialisieren" title="Permanent link">&para;</a></h3>
<p>Zwar ist Ihr borgmatic-Container jetzt betriebsbereit, aber die Backups schlagen derzeit fehl, da das Repository nicht
initialisiert wurde.</p>
<p>Um das Repository zu initialisieren, führen Sie folgenden Befehl aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">docker compose (Plugin)</label><label for="__tabbed_2_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>init<span class="w"> </span>--encryption<span class="w"> </span>repokey-blake2
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>init<span class="w"> </span>--encryption<span class="w"> </span>repokey-blake2
</code></pre></div>
</div>
</div>
</div>
<p>Sie werden aufgefordert, den SSH-Hostschlüssel Ihres entfernten Repository-Servers zu authentifizieren. Prüfen Sie, ob er übereinstimmt und bestätigen
und bestätigen Sie die Aufforderung mit <code>yes</code>. Das Repository wird mit der Passphrase initialisiert, die Sie zuvor in der Umgebungsvariable <code>BORG_PASSPHRASE</code> gesetzt haben.</p>
<p>Bei Verwendung einer der <code>repokey</code>-Verschlüsselungsmethoden wird der Verschlüsselungsschlüssel im Repository selbst gespeichert und nicht auf dem
dem Client, so dass in dieser Hinsicht keine weiteren Maßnahmen erforderlich sind. Wenn Sie sich für die Verwendung einer <code>keyfile</code> anstelle von
<code>repokey</code> entscheiden, stellen Sie sicher, dass Sie den Schlüssel exportieren und separat sichern. Lesen Sie den Abschnitt <a href="#exportieren-von-schlusseln">Exportieren von Schlüsseln</a>
um zu erfahren, wie Sie den Schlüssel abrufen können.</p>
<h3 id="container-neustarten">Container neustarten<a class="headerlink" href="#container-neustarten" title="Permanent link">&para;</a></h3>
<p>Nachdem wir nun die Konfiguration und Initialisierung des Repositorys abgeschlossen haben, starten wir den Container neu, um sicherzustellen, dass er sich in einem definierten
Zustand befindet:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">docker compose (Plugin)</label><label for="__tabbed_3_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>borgmatic-mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>restart<span class="w"> </span>borgmatic-mailcow
</code></pre></div>
</div>
</div>
</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>
<p>Das Wiederherstellen eines Backups setzt voraus, dass Sie mit einer neuen Installation von mailcow beginnen, und dass Sie derzeit keine
keine benutzerdefinierten Daten in ihrem maildir oder ihrer mailcow Datenbank.</p>
<h3 id="wiederherstellen-von-maildir">Wiederherstellen von maildir<a class="headerlink" href="#wiederherstellen-von-maildir" title="Permanent link">&para;</a></h3>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</p>
<p>Dies wird Dateien in Ihrem maildir überschreiben! Führen Sie dies nicht aus, es sei denn, Sie beabsichtigen tatsächlich, Mail
Dateien von einem Backup wiederherzustellen.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Wenn Sie SELinux im Erzwingungsmodus verwenden</p>
<p>Wenn Sie mailcow auf einem Host mit SELinux im Enforcing-Modus verwenden, müssen Sie es vorübergehend deaktivieren während
während der Extraktion des Archivs vorübergehend deaktivieren, da das Mailcow-Setup das vmail-Volumen als privat kennzeichnet, das ausschließlich dem Dovecot-Container
während der Extraktion des Archivs vorübergehend deaktivieren, da das mailcow-Setup das vmail-Volumen als privat kennzeichnet, das ausschließlich dem Dovecot-Container
ausschließlich. SELinux wird (berechtigterweise) jeden anderen Container, wie z.B. den borgmatic Container, daran hindern, auf
dieses Volume zu schreiben.</p>
</div>
<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.
Dann können Sie den folgenden Befehl verwenden, um das Maildir aus einem Backup wiederherzustellen:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">docker compose (Plugin)</label><label for="__tabbed_4_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>extract<span class="w"> </span>--path<span class="w"> </span>mnt/source<span class="w"> </span>--archive<span class="w"> </span>latest
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>extract<span class="w"> </span>--path<span class="w"> </span>mnt/source<span class="w"> </span>--archive<span class="w"> </span>latest
</code></pre></div>
</div>
</div>
</div>
<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>
<h3 id="mysql-wiederherstellen">MySQL wiederherstellen<a class="headerlink" href="#mysql-wiederherstellen" title="Permanent link">&para;</a></h3>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p class="admonition-title">Warnung</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>
<p>Um die MySQL-Datenbank aus dem letzten Archiv wiederherzustellen, verwenden Sie diesen Befehl:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="5:2"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><div class="tabbed-labels"><label for="__tabbed_5_1">docker compose (Plugin)</label><label for="__tabbed_5_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>restore<span class="w"> </span>--archive<span class="w"> </span>latest
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>restore<span class="w"> </span>--archive<span class="w"> </span>latest
</code></pre></div>
</div>
</div>
</div>
<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>
<h3 id="nach-der-wiederherstellung">Nach der Wiederherstellung<a class="headerlink" href="#nach-der-wiederherstellung" title="Permanent link">&para;</a></h3>
<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 SELinux "Erzwingen" deaktiviert haben, wäre jetzt ein guter Zeitpunkt, um
ihn wieder zu aktivieren.</p>
<p>Um mailcow neu zu starten, verwenden Sie den folgenden Befehl:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="6:2"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">docker compose (Plugin)</label><label for="__tabbed_6_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>down<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>down<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<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>
<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>
<div class="tabbed-set tabbed-alternate" data-tabs="7:2"><input checked="checked" id="__tabbed_7_1" name="__tabbed_7" type="radio" /><input id="__tabbed_7_2" name="__tabbed_7" type="radio" /><div class="tabbed-labels"><label for="__tabbed_7_1">docker compose (Plugin)</label><label for="__tabbed_7_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>-v<span class="w"> </span><span class="m">2</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>-v<span class="w"> </span><span class="m">2</span>
</code></pre></div>
</div>
</div>
</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>
<div class="tabbed-set tabbed-alternate" data-tabs="8:2"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio" /><input id="__tabbed_8_2" name="__tabbed_8" type="radio" /><div class="tabbed-labels"><label for="__tabbed_8_1">docker compose (Plugin)</label><label for="__tabbed_8_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>list
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borgmatic<span class="w"> </span>list
</code></pre></div>
</div>
</div>
</div>
<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
neue Operationen durchgeführt werden können:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="9:2"><input checked="checked" id="__tabbed_9_1" name="__tabbed_9" type="radio" /><input id="__tabbed_9_2" name="__tabbed_9" type="radio" /><div class="tabbed-labels"><label for="__tabbed_9_1">docker compose (Plugin)</label><label for="__tabbed_9_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borg<span class="w"> </span>break-lock<span class="w"> </span>user@rsync.net:mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borg<span class="w"> </span>break-lock<span class="w"> </span>user@rsync.net:mailcow
</code></pre></div>
</div>
</div>
</div>
<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>
<h3 id="exportieren-von-schlusseln">Exportieren von Schlüsseln<a class="headerlink" href="#exportieren-von-schlusseln" title="Permanent link">&para;</a></h3>
@ -2876,8 +3012,18 @@ Schlüsseldateien werden erzeugt, wenn Sie das Repository initialisieren. Die <c
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>Um die <code>keyfile</code> zu holen, führen Sie aus:</p>
<div class="tabbed-set tabbed-alternate" data-tabs="10:2"><input checked="checked" id="__tabbed_10_1" name="__tabbed_10" type="radio" /><input id="__tabbed_10_2" name="__tabbed_10" type="radio" /><div class="tabbed-labels"><label for="__tabbed_10_1">docker compose (Plugin)</label><label for="__tabbed_10_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borg<span class="w"> </span>key<span class="w"> </span><span class="nb">export</span><span class="w"> </span>--paper<span class="w"> </span>user@rsync.net:mailcow
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>borgmatic-mailcow<span class="w"> </span>borg<span class="w"> </span>key<span class="w"> </span><span class="nb">export</span><span class="w"> </span>--paper<span class="w"> </span>user@rsync.net:mailcow
</code></pre></div>
</div>
</div>
</div>
<p>Wobei <code>user@rsync.net:mailcow</code> die URI zu Ihrem Repository ist.</p>
<hr>
@ -2885,7 +3031,7 @@ Repository, so dass eine manuelle Sicherung nicht so wichtig ist.</p>
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-02 16:08:29</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:34:22</span>
</small>
@ -2900,6 +3046,8 @@ Repository, so dass eine manuelle Sicherung nicht so wichtig ist.</p>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2967,7 +3115,7 @@ Repository, so dass eine manuelle Sicherung nicht so wichtig ist.</p>
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

Datei anzeigen

@ -84,8 +84,9 @@
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugins</a> beschrieben.<br>
All commands are written according to the <a href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> syntax.</h4></center>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
@ -596,7 +597,7 @@
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration von Sync-Jobs
Migration mit Sync Jobs
</a>
</li>
@ -1285,7 +1286,7 @@
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktoren-Authentifizierung
Zwei-Faktor Authentifizierung
</a>
</li>
@ -2514,7 +2515,7 @@
<h1>CheckMK</h1>
<p>Mailcow bietet mittels dem eigenen Update-Script die Möglichkeit zu prüfen ob Updates vorhanden sind.</p>
<p>mailcow bietet mittels dem eigenen Update-Script die Möglichkeit zu prüfen ob Updates vorhanden sind.</p>
<p>Sofern mailcow-Updates mittels checkmk abgefragt werden soll, kann man im <code>local</code>-Verzeichnis des checkmk-Agents (normalerweise <code>/usr/lib/check_mk_agent/local/</code>) eine ausführbare Datei mit dem Namen <code>mailcow_update</code> und nachfolgendem Inhalt erstellen:</p>
<div class="highlight"><pre><span></span><code>#!/bin/bash
cd /opt/mailcow-dockerized/ &amp;&amp; ./update.sh -c &gt;/dev/null
@ -2556,7 +2557,7 @@ exit
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2022-11-08 12:01:39</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-01-13 18:16:08</span>
</small>
@ -2571,6 +2572,8 @@ exit
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
@ -2638,7 +2641,7 @@ exit
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.ba449ae6.min.js"></script>

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