This commit is contained in:
github-actions[bot] 2023-04-26 08:06:07 +00:00
parent c182e83894
commit ddcd862172
6 changed files with 158 additions and 198 deletions

View file

@ -79,7 +79,7 @@
<div data-md-component="skip"> <div data-md-component="skip">
<a href="#configuration-files" class="md-skip"> <a href="#configuration" class="md-skip">
Skip to content Skip to content
</a> </a>
@ -639,16 +639,30 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#configuration-files" class="md-nav__link"> <a href="#configuration" class="md-nav__link">
Configuration files Configuration
</a> </a>
<nav class="md-nav" aria-label="Configuration files"> <nav class="md-nav" aria-label="Configuration">
<ul class="md-nav__list"> <ul class="md-nav__list">
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#docker-compose-config" class="md-nav__link"> <a href="#dms-defaults" class="md-nav__link">
Docker-compose config DMS Defaults
</a>
</li>
<li class="md-nav__item">
<a href="#custom-files" class="md-nav__link">
Custom Files
</a>
</li>
<li class="md-nav__item">
<a href="#managing-bans" class="md-nav__link">
Managing Bans
</a> </a>
</li> </li>
@ -659,57 +673,10 @@
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#running-fail2ban-in-a-rootless-container" class="md-nav__link"> <a href="#running-inside-a-rootless-container" class="md-nav__link">
Running fail2ban in a rootless container Running Inside A Rootless Container
</a> </a>
<nav class="md-nav" aria-label="Running fail2ban in a rootless container">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docker-with-slirp4netns-port-driver" class="md-nav__link">
Docker with slirp4netns port driver
</a>
</li>
<li class="md-nav__item">
<a href="#podman-with-slirp4netns-port-driver" class="md-nav__link">
Podman with slirp4netns port driver
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#manage-bans" class="md-nav__link">
Manage bans
</a>
<nav class="md-nav" aria-label="Manage bans">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#list-bans" class="md-nav__link">
List bans
</a>
</li>
<li class="md-nav__item">
<a href="#un-ban" class="md-nav__link">
Un-ban
</a>
</li>
</ul>
</nav>
</li> </li>
</ul> </ul>
@ -1502,16 +1469,30 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#configuration-files" class="md-nav__link"> <a href="#configuration" class="md-nav__link">
Configuration files Configuration
</a> </a>
<nav class="md-nav" aria-label="Configuration files"> <nav class="md-nav" aria-label="Configuration">
<ul class="md-nav__list"> <ul class="md-nav__list">
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#docker-compose-config" class="md-nav__link"> <a href="#dms-defaults" class="md-nav__link">
Docker-compose config DMS Defaults
</a>
</li>
<li class="md-nav__item">
<a href="#custom-files" class="md-nav__link">
Custom Files
</a>
</li>
<li class="md-nav__item">
<a href="#managing-bans" class="md-nav__link">
Managing Bans
</a> </a>
</li> </li>
@ -1522,57 +1503,10 @@
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#running-fail2ban-in-a-rootless-container" class="md-nav__link"> <a href="#running-inside-a-rootless-container" class="md-nav__link">
Running fail2ban in a rootless container Running Inside A Rootless Container
</a> </a>
<nav class="md-nav" aria-label="Running fail2ban in a rootless container">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docker-with-slirp4netns-port-driver" class="md-nav__link">
Docker with slirp4netns port driver
</a>
</li>
<li class="md-nav__item">
<a href="#podman-with-slirp4netns-port-driver" class="md-nav__link">
Podman with slirp4netns port driver
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#manage-bans" class="md-nav__link">
Manage bans
</a>
<nav class="md-nav" aria-label="Manage bans">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#list-bans" class="md-nav__link">
List bans
</a>
</li>
<li class="md-nav__item">
<a href="#un-ban" class="md-nav__link">
Un-ban
</a>
</li>
</ul>
</nav>
</li> </li>
</ul> </ul>
@ -1595,49 +1529,68 @@
<h1>Fail2Ban</h1> <h1>Fail2Ban</h1>
<p>Fail2Ban is installed automatically and bans IP addresses for 1 week after 2 failed attempts in a time frame of 1 week by default.</p> <div class="admonition quote">
<h2 id="configuration-files"><a class="toclink" href="#configuration-files">Configuration files</a></h2> <p class="admonition-title">What is Fail2Ban (F2B)?</p>
<p>If you want to change this, you can easily edit our github example file: <a href="https://github.com/docker-mailserver/docker-mailserver/blob/master/config-examples/fail2ban-jail.cf"><code>config-examples/fail2ban-jail.cf</code></a>.</p> <p>Fail2ban is an intrusion prevention software framework. Written in the Python programming language, it is designed to prevent against brute-force attacks. It is able to run on POSIX systems that have an interface to a packet-control system or firewall installed locally, such as [NFTables] or TCP Wrapper.</p>
<p>You can do the same with the values from <code>fail2ban.conf</code>, e.g <code>dbpurgeage</code>. In that case you need to edit: <a href="https://github.com/docker-mailserver/docker-mailserver/blob/master/config-examples/fail2ban-fail2ban.cf"><code>config-examples/fail2ban-fail2ban.cf</code></a>.</p> <p><a href="https://en.wikipedia.org/wiki/Fail2ban">Source</a></p>
<p>The configuration files need to be located at the root of the <code>/tmp/docker-mailserver/</code> volume bind (usually <code>./docker-data/dms/config/:/tmp/docker-mailserver/</code>).</p> </div>
<p>This following configuration files from <code>/tmp/docker-mailserver/</code> will be copied during container startup.</p> <h2 id="configuration"><a class="toclink" href="#configuration">Configuration</a></h2>
<ul> <div class="admonition warning">
<li><code>fail2ban-jail.cf</code> -&gt; <code>/etc/fail2ban/jail.d/user-jail.local</code></li> <p class="admonition-title">Warning</p>
<li><code>fail2ban-fail2ban.cf</code> -&gt; <code>/etc/fail2ban/fail2ban.local</code></li> <p>DMS must be launched with the <code>NET_ADMIN</code> capability in order to be able to install the NFTables rules that actually ban IP addresses. Thus, either include <code>--cap-add=NET_ADMIN</code> in the <code>docker run</code> command, or the equivalent in the <code>compose.yml</code>:</p>
</ul>
<h3 id="docker-compose-config"><a class="toclink" href="#docker-compose-config">Docker-compose config</a></h3>
<p>Example configuration volume bind:</p>
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">./docker-data/dms/config/:/tmp/docker-mailserver/</span>
</code></pre></div>
<div class="admonition attention">
<p class="admonition-title">Attention</p>
<p>DMS must be launched with the <code>NET_ADMIN</code> capability in order to be able to install the nftables rules that actually ban IP addresses.</p>
<p>Thus either include <code>--cap-add=NET_ADMIN</code> in the <code>docker run</code> command, or the equivalent in <code>docker-compose.yml</code>:</p>
<div class="highlight"><pre><span></span><code><span class="nt">cap_add</span><span class="p">:</span> <div class="highlight"><pre><span></span><code><span class="nt">cap_add</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">NET_ADMIN</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">NET_ADMIN</span>
</code></pre></div> </code></pre></div>
</div> </div>
<h2 id="running-fail2ban-in-a-rootless-container"><a class="toclink" href="#running-fail2ban-in-a-rootless-container">Running fail2ban in a rootless container</a></h2> <div class="admonition bug">
<p><a href="https://github.com/rootless-containers/rootlesskit"><code>RootlessKit</code></a> is the <em>fakeroot</em> implementation for supporting <em>rootless mode</em> in Docker and Podman. By default RootlessKit uses the <a href="https://github.com/rootless-containers/rootlesskit/blob/v0.14.5/docs/port.md#port-drivers"><code>builtin</code> port forwarding driver</a>, which does not propagate source IP addresses.</p> <p class="admonition-title">Running Fail2Ban on Older Kernels</p>
<p>It is necessary for <code>fail2ban</code> to have access to the real source IP addresses in order to correctly identify clients. This is achieved by changing the port forwarding driver to <a href="https://github.com/rootless-containers/slirp4netns"><code>slirp4netns</code></a>, which is slower than <code>builtin</code> but does preserve the real source IPs.</p> <p>DMS configures F2B to use NFTables, not IPTables (legacy). We have observed that older systems, for example NAS systems, do not support the modern NFTables rules. You will need to configure F2B to use legacy IPTables again, for example with the <a href="https://github.com/docker-mailserver/docker-mailserver/blob/master/config-examples/fail2ban-jail.cf"><code>fail2ban-jail.cf</code></a>, see the <a href="#custom-files">section on configuration further down below</a>.</p>
<h3 id="docker-with-slirp4netns-port-driver"><a class="toclink" href="#docker-with-slirp4netns-port-driver">Docker with <code>slirp4netns</code> port driver</a></h3> </div>
<h3 id="dms-defaults"><a class="toclink" href="#dms-defaults">DMS Defaults</a></h3>
<p>DMS will automatically ban IP addresses of hosts that have generated 2 failed attempts over the course of the last week. The bans themselves last for one week.</p>
<h3 id="custom-files"><a class="toclink" href="#custom-files">Custom Files</a></h3>
<div class="admonition question">
<p class="admonition-title">What is <a href="../../../faq/#what-about-the-docker-datadmsconfig-directory"><code>docker-data/dms/config/</code></a>?</p>
</div>
<p>This following configuration files inside the <code>docker-data/dms/config/</code> volume will be copied inside the container during startup</p>
<ol>
<li><code>fail2ban-jail.cf</code> is copied to <code>/etc/fail2ban/jail.d/user-jail.local</code><ul>
<li>with this file, you can adjust the configuration of individual jails and their defaults</li>
<li>the is an example provided <a href="https://github.com/docker-mailserver/docker-mailserver/blob/master/config-examples/fail2ban-jail.cf">in our repository on GitHub</a></li>
</ul>
</li>
<li><code>fail2ban-fail2ban.cf</code> is copied to <code>/etc/fail2ban/fail2ban.local</code><ul>
<li>with this file, you can adjust F2B behavior in general</li>
<li>the is an example provided <a href="https://github.com/docker-mailserver/docker-mailserver/blob/master/config-examples/fail2ban-fail2ban.cf">in our repository on GitHub</a></li>
</ul>
</li>
</ol>
<h3 id="managing-bans"><a class="toclink" href="#managing-bans">Managing Bans</a></h3>
<p>You can manage F2B with the <code>setup</code> script. The usage looks like this:</p>
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>&lt;CONTAINER<span class="w"> </span>NAME&gt;<span class="w"> </span>setup<span class="w"> </span>fail2ban<span class="w"> </span><span class="o">[</span>&lt;ban<span class="p">|</span>unban&gt;<span class="w"> </span>&lt;IP&gt;<span class="o">]</span>
</code></pre></div>
<p>When just running <code>setup fail2ban</code>, the script will show all banned IP addresses.</p>
<h2 id="running-inside-a-rootless-container"><a class="toclink" href="#running-inside-a-rootless-container">Running Inside A Rootless Container</a></h2>
<p><a href="https://github.com/rootless-containers/rootlesskit"><code>RootlessKit</code></a> is the <em>fakeroot</em> implementation for supporting <em>rootless mode</em> in Docker and Podman. By default, RootlessKit uses the <a href="https://github.com/rootless-containers/rootlesskit/blob/v0.14.5/docs/port.md#port-drivers"><code>builtin</code> port forwarding driver</a>, which does not propagate source IP addresses.</p>
<p>It is necessary for F2B to have access to the real source IP addresses in order to correctly identify clients. This is achieved by changing the port forwarding driver to <a href="https://github.com/rootless-containers/slirp4netns"><code>slirp4netns</code></a>, which is slower than the builtin driver but does preserve the real source IPs.</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</label><label for="__tabbed_1_2">Podman</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p>For <a href="https://docs.docker.com/engine/security/rootless">rootless mode</a> in Docker, create <code>~/.config/systemd/user/docker.service.d/override.conf</code> with the following content:</p> <p>For <a href="https://docs.docker.com/engine/security/rootless">rootless mode</a> in Docker, create <code>~/.config/systemd/user/docker.service.d/override.conf</code> with the following content:</p>
<div class="highlight"><pre><span></span><code>[Service] <div class="admonition danger inline end">
Environment=&quot;DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns&quot; <p class="admonition-title">Danger</p>
<p>This changes the port driver for all rootless containers managed by Docker. Per container configuration is not supported, if you need that consider Podman instead.</p>
</div>
<div class="highlight"><pre><span></span><code><span class="k">[Service]</span>
<span class="na">Environment</span><span class="o">=</span><span class="s">&quot;DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns&quot;</span>
</code></pre></div> </code></pre></div>
<p>And then restart the daemon:</p> <p>And then restart the daemon:</p>
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>systemctl<span class="w"> </span>--user<span class="w"> </span>daemon-reload <div class="highlight"><pre><span></span><code><span class="gp">$ </span>systemctl<span class="w"> </span>--user<span class="w"> </span>daemon-reload
<span class="gp">$ </span>systemctl<span class="w"> </span>--user<span class="w"> </span>restart<span class="w"> </span>docker <span class="gp">$ </span>systemctl<span class="w"> </span>--user<span class="w"> </span>restart<span class="w"> </span>docker
</code></pre></div> </code></pre></div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This changes the port driver for all rootless containers managed by Docker.</p>
<p>Per container configuration is not supported, if you need that consider Podman instead.</p>
</div> </div>
<h3 id="podman-with-slirp4netns-port-driver"><a class="toclink" href="#podman-with-slirp4netns-port-driver">Podman with <code>slirp4netns</code> port driver</a></h3> <div class="tabbed-block">
<p><a href="https://github.com/containers/podman/blob/v3.4.1/docs/source/markdown/podman-run.1.md#--networkmode---net">Rootless Podman</a> requires adding the value <code>slirp4netns:port_handler=slirp4netns</code> to the <code>--network</code> CLI option, or <code>network_mode</code> setting in your <code>docker-compose.yml</code>.</p> <p><a href="https://github.com/containers/podman/blob/v3.4.1/docs/source/markdown/podman-run.1.md#--networkmode---net">Rootless Podman</a> requires adding the value <code>slirp4netns:port_handler=slirp4netns</code> to the <code>--network</code> CLI option, or <code>network_mode</code> setting in your <code>compose.yml</code>:</p>
<p>You must also add the ENV <code>NETWORK_INTERFACE=tap0</code>, because Podman uses a <a href="https://github.com/containers/podman/blob/v3.4.1/libpod/networking_slirp4netns.go#L264">hard-coded interface name</a> for <code>slirp4netns</code>.</p>
<div class="admonition example"> <div class="admonition example">
<p class="admonition-title">Example</p> <p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="nt">services</span><span class="p">:</span> <div class="highlight"><pre><span></span><code><span class="nt">services</span><span class="p">:</span>
@ -1649,19 +1602,10 @@ Environment=&quot;DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns&quot;
<span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span> <span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">...</span>
</code></pre></div> </code></pre></div>
</div> </div>
<div class="admonition note"> <p>You must also add the ENV <code>NETWORK_INTERFACE=tap0</code>, because Podman uses a <a href="https://github.com/containers/podman/blob/v3.4.1/libpod/networking_slirp4netns.go#L264">hard-coded interface name</a> for <code>slirp4netns</code>. <code>slirp4netns</code> is not compatible with user-defined networks!</p>
<p class="admonition-title">Note</p> </div>
<p><code>slirp4netns</code> is not compatible with user-defined networks.</p> </div>
</div> </div>
<h2 id="manage-bans"><a class="toclink" href="#manage-bans">Manage bans</a></h2>
<p>You can also manage and list the banned IPs with the <a href="../../setup.sh/"><code>setup.sh</code></a> script.</p>
<h3 id="list-bans"><a class="toclink" href="#list-bans">List bans</a></h3>
<div class="highlight"><pre><span></span><code>./setup.sh<span class="w"> </span>fail2ban
</code></pre></div>
<h3 id="un-ban"><a class="toclink" href="#un-ban">Un-ban</a></h3>
<p>Here <code>192.168.1.15</code> is our banned IP.</p>
<div class="highlight"><pre><span></span><code>./setup.sh<span class="w"> </span>fail2ban<span class="w"> </span>unban<span class="w"> </span><span class="m">192</span>.168.1.15
</code></pre></div>

View file

@ -1813,10 +1813,10 @@
<h2 id="providing-custom-settings-overriding-settings"><a class="toclink" href="#providing-custom-settings-overriding-settings">Providing Custom Settings &amp; Overriding Settings</a></h2> <h2 id="providing-custom-settings-overriding-settings"><a class="toclink" href="#providing-custom-settings-overriding-settings">Providing Custom Settings &amp; Overriding Settings</a></h2>
<p>DMS brings sane default settings for Rspamd. They are located at <code>/etc/rspamd/local.d/</code> inside the container (or <code>target/rspamd/local.d/</code> in the repository).</p> <p>DMS brings sane default settings for Rspamd. They are located at <code>/etc/rspamd/local.d/</code> inside the container (or <code>target/rspamd/local.d/</code> in the repository).</p>
<h3 id="manually"><a class="toclink" href="#manually">Manually</a></h3> <h3 id="manually"><a class="toclink" href="#manually">Manually</a></h3>
<p>If you want to overwrite the default settings and / or provide your own settings, you can place files at <code>docker-data/dms/config/rspamd/override.d/</code> (a directory that is linked to <code>/etc/rspamd/override.d/</code>, if it exists) to override Rspamd and DMS default settings.</p> <div class="admonition question">
<div class="admonition note"> <p class="admonition-title">What is <a href="../../../faq/#what-about-the-docker-datadmsconfig-directory"><code>docker-data/dms/config/</code></a>?</p>
<p class="admonition-title">What is <a href="../../../faq/#what-about-the-docker-datadmsmail-state-folder"><code>docker-data/dms/config/</code></a>?</p>
</div> </div>
<p>If you want to overwrite the default settings and / or provide your own settings, you can place files at <code>docker-data/dms/config/rspamd/override.d/</code> (a directory that is linked to <code>/etc/rspamd/override.d/</code>, if it exists) to override Rspamd and DMS default settings.</p>
<div class="admonition warning"> <div class="admonition warning">
<p class="admonition-title">Clashing Overrides</p> <p class="admonition-title">Clashing Overrides</p>
<p>Note that when also <a href="#with-the-help-of-a-custom-file">using the <code>rspamd-commands</code> file</a>, files in <code>override.d</code> may be overwritten in case you adjust them manually and with the help of the file.</p> <p>Note that when also <a href="#with-the-help-of-a-custom-file">using the <code>rspamd-commands</code> file</a>, files in <code>override.d</code> may be overwritten in case you adjust them manually and with the help of the file.</p>

View file

@ -1294,6 +1294,13 @@
Where are emails stored? Where are emails stored?
</a> </a>
</li>
<li class="md-nav__item">
<a href="#what-about-the-docker-datadmsconfig-directory" class="md-nav__link">
What About the docker-data/dms/config/ Directory?
</a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
@ -1719,6 +1726,13 @@
Where are emails stored? Where are emails stored?
</a> </a>
</li>
<li class="md-nav__item">
<a href="#what-about-the-docker-datadmsconfig-directory" class="md-nav__link">
What About the docker-data/dms/config/ Directory?
</a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
@ -2015,6 +2029,8 @@
<p>None! No database is required. The filesystem is the database. This image is based on config files that can be persisted using bind mounts (default) or Docker volumes, and as such versioned, backed up and so forth.</p> <p>None! No database is required. The filesystem is the database. This image is based on config files that can be persisted using bind mounts (default) or Docker volumes, and as such versioned, backed up and so forth.</p>
<h3 id="where-are-emails-stored"><a class="toclink" href="#where-are-emails-stored">Where are emails stored?</a></h3> <h3 id="where-are-emails-stored"><a class="toclink" href="#where-are-emails-stored">Where are emails stored?</a></h3>
<p>Mails are stored in <code>/var/mail/${domain}/${username}</code>. Since <code>v9.0.0</code> it is possible to add custom <code>user_attributes</code> for each accounts to have a different mailbox configuration (See <a href="https://github.com/docker-mailserver/docker-mailserver/pull/1792">#1792</a>).</p> <p>Mails are stored in <code>/var/mail/${domain}/${username}</code>. Since <code>v9.0.0</code> it is possible to add custom <code>user_attributes</code> for each accounts to have a different mailbox configuration (See <a href="https://github.com/docker-mailserver/docker-mailserver/pull/1792">#1792</a>).</p>
<h3 id="what-about-the-docker-datadmsconfig-directory"><a class="toclink" href="#what-about-the-docker-datadmsconfig-directory">What About the <code>docker-data/dms/config/</code> Directory?</a></h3>
<p>This documentation and all example configuration files in the GitHub repository use <code>docker-data/dms/config/</code> to refer to the directory in the host that is mounted (e.g. via a bind mount) to <code>/tmp/docker-mailserver/</code> inside the container,.</p>
<h3 id="how-are-imap-mailboxes-aka-imap-folders-set-up"><a class="toclink" href="#how-are-imap-mailboxes-aka-imap-folders-set-up">How are IMAP mailboxes (<em>aka IMAP Folders</em>) set up?</a></h3> <h3 id="how-are-imap-mailboxes-aka-imap-folders-set-up"><a class="toclink" href="#how-are-imap-mailboxes-aka-imap-folders-set-up">How are IMAP mailboxes (<em>aka IMAP Folders</em>) set up?</a></h3>
<p><code>INBOX</code> is setup by default with the special IMAP folders <code>Drafts</code>, <code>Sent</code>, <code>Junk</code> and <code>Trash</code>. You can learn how to modify or add your own folders (<em>including additional special folders like <code>Archive</code></em>) by visiting our docs page <a href="../examples/use-cases/imap-folders"><em>Customizing IMAP Folders</em></a> for more information.</p> <p><code>INBOX</code> is setup by default with the special IMAP folders <code>Drafts</code>, <code>Sent</code>, <code>Junk</code> and <code>Trash</code>. You can learn how to modify or add your own folders (<em>including additional special folders like <code>Archive</code></em>) by visiting our docs page <a href="../examples/use-cases/imap-folders"><em>Customizing IMAP Folders</em></a> for more information.</p>
<h3 id="how-do-i-update-dms"><a class="toclink" href="#how-do-i-update-dms">How do I update DMS?</a></h3> <h3 id="how-do-i-update-dms"><a class="toclink" href="#how-do-i-update-dms">How do I update DMS?</a></h3>

File diff suppressed because one or more lines are too long

View file

@ -2,202 +2,202 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/faq/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/faq/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/introduction/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/introduction/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/usage/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/usage/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/debugging/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/debugging/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/environment/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/environment/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/pop3/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/pop3/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/setup.sh/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/setup.sh/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/user-management/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/user-management/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/auth-ldap/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/auth-ldap/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/dovecot-master-accounts/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/dovecot-master-accounts/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/full-text-search/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/full-text-search/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/ipv6/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/ipv6/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/kubernetes/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/kubernetes/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-fetchmail/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-fetchmail/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-sieve/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-sieve/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/optional-config/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/optional-config/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/podman/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/podman/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-forwarding/aws-ses/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-forwarding/aws-ses/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-forwarding/relay-hosts/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-forwarding/relay-hosts/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/maintenance/update-and-cleanup/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/maintenance/update-and-cleanup/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/override-defaults/dovecot/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/override-defaults/dovecot/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/override-defaults/postfix/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/override-defaults/postfix/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/override-defaults/user-patches/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/override-defaults/user-patches/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/best-practices/autodiscover/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/best-practices/autodiscover/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/best-practices/dkim_dmarc_spf/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/best-practices/dkim_dmarc_spf/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/fail2ban/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/fail2ban/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/mail_crypt/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/mail_crypt/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/rspamd/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/rspamd/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/ssl/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/ssl/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/understanding-the-ports/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/security/understanding-the-ports/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/contributing/general/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/contributing/general/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/contributing/issues-and-pull-requests/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/contributing/issues-and-pull-requests/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/contributing/tests/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/contributing/tests/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/tutorials/basic-installation/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/tutorials/basic-installation/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/tutorials/blog-posts/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/tutorials/blog-posts/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/tutorials/docker-build/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/tutorials/docker-build/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/tutorials/mailserver-behind-proxy/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/tutorials/mailserver-behind-proxy/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/use-cases/forward-only-mailserver-with-ldap-authentication/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/use-cases/forward-only-mailserver-with-ldap-authentication/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/use-cases/imap-folders/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/use-cases/imap-folders/</loc>
<lastmod>2023-04-23</lastmod> <lastmod>2023-04-26</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
</urlset> </urlset>

View file

@ -1675,7 +1675,7 @@
<h1>Usage</h1> <h1>Usage</h1>
<p>This pages explains how to get started with DMS. The guide uses Docker Compose as a reference. In our examples, a volume mounts the host location <a href="../config/advanced/optional-config/"><code>docker-data/dms/config/</code></a> to <code>/tmp/docker-mailserver/</code> inside the container.</p> <p>This pages explains how to get started with DMS. The guide uses Docker Compose as a reference. In our examples, a volume mounts the host location <a href="../faq/#what-about-the-docker-datadmsconfig-directory"><code>docker-data/dms/config/</code></a> to <code>/tmp/docker-mailserver/</code> inside the container.</p>
<h2 id="preliminary-steps"><a class="toclink" href="#preliminary-steps">Preliminary Steps</a></h2> <h2 id="preliminary-steps"><a class="toclink" href="#preliminary-steps">Preliminary Steps</a></h2>
<p>Before you can get started with deploying your own mail server, there are some requirements to be met:</p> <p>Before you can get started with deploying your own mail server, there are some requirements to be met:</p>
<ol> <ol>