This commit is contained in:
github-actions[bot] 2023-10-04 10:54:08 +00:00
parent 79cccbf33e
commit 86986a5f75
7 changed files with 110 additions and 107 deletions

View file

@ -1971,12 +1971,12 @@ If any filter in this filtering chain discards an incoming mail, the delivery pr
<div class="highlight"><pre><span></span><code><span class="kn">require</span> <span class="p">[</span><span class="s">&quot;envelope&quot;</span><span class="p">,</span> <span class="s">&quot;fileinto&quot;</span><span class="p">,</span> <span class="s">&quot;mailbox&quot;</span><span class="p">,</span> <span class="s">&quot;subaddress&quot;</span><span class="p">,</span> <span class="s">&quot;variables&quot;</span><span class="p">];</span> <div class="highlight"><pre><span></span><code><span class="kn">require</span> <span class="p">[</span><span class="s">&quot;envelope&quot;</span><span class="p">,</span> <span class="s">&quot;fileinto&quot;</span><span class="p">,</span> <span class="s">&quot;mailbox&quot;</span><span class="p">,</span> <span class="s">&quot;subaddress&quot;</span><span class="p">,</span> <span class="s">&quot;variables&quot;</span><span class="p">];</span>
<span class="nb">if</span> <span class="nb">envelope</span> <span class="nt">:detail</span> <span class="nt">:matches</span> <span class="s">&quot;to&quot;</span> <span class="s">&quot;*&quot;</span> <span class="p">{</span> <span class="nb">if</span> <span class="nb">envelope</span> <span class="nt">:detail</span> <span class="nt">:matches</span> <span class="s">&quot;to&quot;</span> <span class="s">&quot;*&quot;</span> <span class="p">{</span>
<span class="kd">set</span> <span class="nt">:lower</span> <span class="nt">:upperfirst</span> <span class="s">&quot;tag&quot;</span> <span class="s">&quot;${1}&quot;</span><span class="p">;</span> <span class="kd">set</span> <span class="nt">:lower</span> <span class="nt">:upperfirst</span> <span class="s">&quot;tag&quot;</span> <span class="s">&quot;${1}&quot;</span><span class="p">;</span>
<span class="nb">if</span> <span class="err">mailbox</span><span class="nb">exists</span> <span class="s">&quot;INBOX.${1}&quot;</span> <span class="p">{</span> <span class="nb">if</span> <span class="err">mailbox</span><span class="nb">exists</span> <span class="s">&quot;INBOX.${1}&quot;</span> <span class="p">{</span>
<span class="nb">fileinto</span> <span class="s">&quot;INBOX.${1}&quot;</span><span class="p">;</span> <span class="nb">fileinto</span> <span class="s">&quot;INBOX.${1}&quot;</span><span class="p">;</span>
<span class="p">}</span> <span class="nb">else</span> <span class="p">{</span> <span class="p">}</span> <span class="nb">else</span> <span class="p">{</span>
<span class="nb">fileinto</span> <span class="nt">:create</span> <span class="s">&quot;INBOX.${tag}&quot;</span><span class="p">;</span> <span class="nb">fileinto</span> <span class="nt">:create</span> <span class="s">&quot;INBOX.${tag}&quot;</span><span class="p">;</span>
<span class="p">}</span> <span class="p">}</span>
<span class="p">}</span> <span class="p">}</span>
</code></pre></div> </code></pre></div>
<h2 id="manage-sieve"><a class="toclink" href="#manage-sieve">Manage Sieve</a></h2> <h2 id="manage-sieve"><a class="toclink" href="#manage-sieve">Manage Sieve</a></h2>

View file

@ -2291,11 +2291,11 @@ docker<span class="w"> </span>run<span class="w"> </span>--rm<span class="w"> </
<p>Store the <em>API token</em> you received in a file <code>cloudflare.ini</code> with content:</p> <p>Store the <em>API token</em> you received in a file <code>cloudflare.ini</code> with content:</p>
<div class="highlight"><pre><span></span><code><span class="na">dns_cloudflare_api_token</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">YOUR_CLOUDFLARE_TOKEN_HERE</span> <div class="highlight"><pre><span></span><code><span class="na">dns_cloudflare_api_token</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">YOUR_CLOUDFLARE_TOKEN_HERE</span>
</code></pre></div> </code></pre></div>
</li> <ul>
<li> <li>As this is sensitive data, you should restrict access to it with <code>chmod 600</code> and <code>chown 0:0</code>.</li>
<p>As this is sensitive data, you should restrict access to it with <code>chmod 600</code> and <code>chown 0:0</code>.</p>
</li>
<li>Store the file in a folder if you like, such as <code>docker-data/certbot/secrets/</code>.</li> <li>Store the file in a folder if you like, such as <code>docker-data/certbot/secrets/</code>.</li>
</ul>
</li>
<li> <li>
<p>Your <code>compose.yaml</code> should include the following:</p> <p>Your <code>compose.yaml</code> should include the following:</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>
@ -2671,7 +2671,7 @@ docker<span class="w"> </span>run<span class="w"> </span>--detach<span class="w"
<span class="w"> </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mailserver</span> <span class="w"> </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mailserver</span>
<span class="w"> </span><span class="nt">hostname</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mail.example.com</span> <span class="w"> </span><span class="nt">hostname</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mail.example.com</span>
<span class="w"> </span><span class="nt">volumes</span><span class="p">:</span> <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/traefik/acme.json:/etc/letsencrypt/acme.json:ro</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/traefik/acme.json:/etc/letsencrypt/acme.json:ro</span>
<span class="w"> </span><span class="nt">environment</span><span class="p">:</span> <span class="w"> </span><span class="nt">environment</span><span class="p">:</span>
<span class="w"> </span><span class="nt">SSL_TYPE</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">letsencrypt</span> <span class="w"> </span><span class="nt">SSL_TYPE</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">letsencrypt</span>
<span class="w"> </span><span class="nt">SSL_DOMAIN</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mail.example.com</span> <span class="w"> </span><span class="nt">SSL_DOMAIN</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mail.example.com</span>
@ -2682,26 +2682,26 @@ docker<span class="w"> </span>run<span class="w"> </span>--detach<span class="w"
<span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docker.io/traefik:latest</span><span class="w"> </span><span class="c1">#v2.5</span> <span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docker.io/traefik:latest</span><span class="w"> </span><span class="c1">#v2.5</span>
<span class="w"> </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docker-traefik</span> <span class="w"> </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docker-traefik</span>
<span class="w"> </span><span class="nt">ports</span><span class="p">:</span> <span class="w"> </span><span class="nt">ports</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;80:80&quot;</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;80:80&quot;</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;443:443&quot;</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;443:443&quot;</span>
<span class="w"> </span><span class="nt">command</span><span class="p">:</span> <span class="w"> </span><span class="nt">command</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">--providers.docker</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--providers.docker</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.http.address=:80</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.http.address=:80</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.http.http.redirections.entryPoint.to=https</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.http.http.redirections.entryPoint.to=https</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.http.http.redirections.entryPoint.scheme=https</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.http.http.redirections.entryPoint.scheme=https</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.https.address=:443</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.https.address=:443</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.https.http.tls.certResolver=letsencrypt</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--entrypoints.https.http.tls.certResolver=letsencrypt</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--certificatesresolvers.letsencrypt.acme.email=admin@example.com</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--certificatesresolvers.letsencrypt.acme.email=admin@example.com</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--certificatesresolvers.letsencrypt.acme.storage=/acme.json</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--certificatesresolvers.letsencrypt.acme.storage=/acme.json</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=http</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=http</span>
<span class="w"> </span><span class="nt">volumes</span><span class="p">:</span> <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/traefik/acme.json:/acme.json</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/traefik/acme.json:/acme.json</span>
<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="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">whoami</span><span class="p">:</span> <span class="w"> </span><span class="nt">whoami</span><span class="p">:</span>
<span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docker.io/traefik/whoami:latest</span> <span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">docker.io/traefik/whoami:latest</span>
<span class="w"> </span><span class="nt">labels</span><span class="p">:</span> <span class="w"> </span><span class="nt">labels</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;traefik.http.routers.whoami.rule=Host(`mail.example.com`)&quot;</span> <span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;traefik.http.routers.whoami.rule=Host(`mail.example.com`)&quot;</span>
</code></pre></div> </code></pre></div>
</details> </details>
<h3 id="self-signed-certificates"><a class="toclink" href="#self-signed-certificates">Self-Signed Certificates</a></h3> <h3 id="self-signed-certificates"><a class="toclink" href="#self-signed-certificates">Self-Signed Certificates</a></h3>

View file

@ -2092,40 +2092,42 @@
<p>In this example, you've made a change to the Rspamd feature support (<em>or adjusted it's tests</em>). First verify no regressions have been introduced by running it's specific test file:</p> <p>In this example, you've made a change to the Rspamd feature support (<em>or adjusted it's tests</em>). First verify no regressions have been introduced by running it's specific test file:</p>
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>make<span class="w"> </span>clean<span class="w"> </span>generate-accounts<span class="w"> </span>test/rspamd <div class="highlight"><pre><span></span><code><span class="gp">$ </span>make<span class="w"> </span>clean<span class="w"> </span>generate-accounts<span class="w"> </span>test/rspamd
<span class="go">rspamd.bats</span> <span class="go">rspamd.bats</span>
<span class="go"> ✓ [Rspamd] Postfix&#39;s main.cf was adjusted [12]</span> <span class="go"> ✓ [Rspamd] Postfix&#39;s main.cf was adjusted [12]</span>
<span class="go"> ✓ [Rspamd] normal mail passes fine [44]</span> <span class="go"> ✓ [Rspamd] normal mail passes fine [44]</span>
<span class="go"> ✓ [Rspamd] detects and rejects spam [122]</span> <span class="go"> ✓ [Rspamd] detects and rejects spam [122]</span>
<span class="go"> ✓ [Rspamd] detects and rejects virus [189]</span> <span class="go"> ✓ [Rspamd] detects and rejects virus [189]</span>
</code></pre></div> </code></pre></div>
<p>As your feature work progresses your change for Rspamd also affects ClamAV. As your change now spans more than just the Rspamd test file, you could run multiple test files serially:</p> <p>As your feature work progresses your change for Rspamd also affects ClamAV. As your change now spans more than just the Rspamd test file, you could run multiple test files serially:</p>
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>make<span class="w"> </span>clean<span class="w"> </span>generate-accounts<span class="w"> </span>test/rspamd,clamav <div class="highlight"><pre><span></span><code><span class="gp">$ </span>make<span class="w"> </span>clean<span class="w"> </span>generate-accounts<span class="w"> </span>test/rspamd,clamav
<span class="go">rspamd.bats</span> <span class="go">rspamd.bats</span>
<span class="go"> ✓ [Rspamd] Postfix&#39;s main.cf was adjusted [12]</span> <span class="go"> ✓ [Rspamd] Postfix&#39;s main.cf was adjusted [12]</span>
<span class="go"> ✓ [Rspamd] normal mail passes fine [44]</span> <span class="go"> ✓ [Rspamd] normal mail passes fine [44]</span>
<span class="go"> ✓ [Rspamd] detects and rejects spam [122]</span> <span class="go"> ✓ [Rspamd] detects and rejects spam [122]</span>
<span class="go"> ✓ [Rspamd] detects and rejects virus [189]</span> <span class="go"> ✓ [Rspamd] detects and rejects virus [189]</span>
<span class="go">clamav.bats</span> <span class="go">clamav.bats</span>
<span class="go"> ✓ [ClamAV] log files exist at /var/log/mail directory [68]</span> <span class="go"> ✓ [ClamAV] log files exist at /var/log/mail directory [68]</span>
<span class="go"> ✓ [ClamAV] should be identified by Amavis [67]</span> <span class="go"> ✓ [ClamAV] should be identified by Amavis [67]</span>
<span class="go"> ✓ [ClamAV] freshclam cron is enabled [76]</span> <span class="go"> ✓ [ClamAV] freshclam cron is enabled [76]</span>
<span class="go"> ✓ [ClamAV] env CLAMAV_MESSAGE_SIZE_LIMIT is set correctly [63]</span> <span class="go"> ✓ [ClamAV] env CLAMAV_MESSAGE_SIZE_LIMIT is set correctly [63]</span>
<span class="go"> ✓ [ClamAV] rejects virus [60]</span> <span class="go"> ✓ [ClamAV] rejects virus [60]</span>
</code></pre></div> </code></pre></div>
<p>You're almost finished with your change before submitting it as a PR. It's a good idea to run the full parallel set those individual tests belong to (<em>especially if you've modified any tests</em>):</p> <p>You're almost finished with your change before submitting it as a PR. It's a good idea to run the full parallel set those individual tests belong to (<em>especially if you've modified any tests</em>):</p>
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>make<span class="w"> </span>clean<span class="w"> </span>generate-accounts<span class="w"> </span>tests/parallel/set1 <div class="highlight"><pre><span></span><code><span class="gp">$ </span>make<span class="w"> </span>clean<span class="w"> </span>generate-accounts<span class="w"> </span>tests/parallel/set1
<span class="go">default_relay_host.bats</span> <span class="go">default_relay_host.bats</span>
<span class="go"> ✓ [Relay] (ENV) &#39;DEFAULT_RELAY_HOST&#39; should configure &#39;main.cf:relayhost&#39; [88]</span> <span class="go"> ✓ [Relay] (ENV) &#39;DEFAULT_RELAY_HOST&#39; should configure &#39;main.cf:relayhost&#39; [88]</span>
<span class="go">spam_virus/amavis.bats</span> <span class="go">spam_virus/amavis.bats</span>
<span class="go"> ✓ [Amavis] SpamAssassin integration should be active [1165]</span> <span class="go"> ✓ [Amavis] SpamAssassin integration should be active [1165]</span>
<span class="go">spam_virus/clamav.bats</span> <span class="go">spam_virus/clamav.bats</span>
<span class="go"> ✓ [ClamAV] log files exist at /var/log/mail directory [73]</span> <span class="go"> ✓ [ClamAV] log files exist at /var/log/mail directory [73]</span>
<span class="go"> ✓ [ClamAV] should be identified by Amavis [67]</span> <span class="go"> ✓ [ClamAV] should be identified by Amavis [67]</span>
<span class="go"> ✓ [ClamAV] freshclam cron is enabled [76]</span> <span class="go"> ✓ [ClamAV] freshclam cron is enabled [76]</span>
<span class="go">...</span> <span class="go">...</span>
</code></pre></div> </code></pre></div>
<p>Even better, before opening a PR run the full test suite:</p> <p>Even better, before opening a PR run the full test suite:</p>
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>make<span class="w"> </span>clean<span class="w"> </span>tests <div class="highlight"><pre><span></span><code><span class="gp">$ </span>make<span class="w"> </span>clean<span class="w"> </span>tests
<span class="go">...</span>
</code></pre></div> </code></pre></div>

View file

@ -2840,8 +2840,9 @@ chmod<span class="w"> </span><span class="m">0644</span><span class="w"> </span>
<span class="nb">if</span> <span class="nb">header</span> <span class="nt">:contains</span> <span class="s">&quot;X-Spam-Flag&quot;</span> <span class="s">&quot;YES&quot;</span> <span class="p">{</span> <span class="nb">if</span> <span class="nb">header</span> <span class="nt">:contains</span> <span class="s">&quot;X-Spam-Flag&quot;</span> <span class="s">&quot;YES&quot;</span> <span class="p">{</span>
<span class="nb">fileinto</span> <span class="s">&quot;Junk&quot;</span><span class="p">;</span> <span class="nb">fileinto</span> <span class="s">&quot;Junk&quot;</span><span class="p">;</span>
<span class="p">}</span> <span class="nb">elsif</span> <span class="nb">allof</span> <span class="p">(</span> <span class="p">}</span> <span class="nb">elsif</span> <span class="nb">allof</span> <span class="p">(</span>
<span class="nb">not</span> <span class="nb">header</span> <span class="nt">:matches</span> <span class="s">&quot;x-spam-score&quot;</span> <span class="s">&quot;-*&quot;</span><span class="p">,</span> <span class="nb">not</span> <span class="nb">header</span> <span class="nt">:matches</span> <span class="s">&quot;x-spam-score&quot;</span> <span class="s">&quot;-*&quot;</span><span class="p">,</span>
<span class="nb">header</span> <span class="nt">:value</span> <span class="s">&quot;ge&quot;</span> <span class="nt">:comparator</span> <span class="s">&quot;i;ascii-numeric&quot;</span> <span class="s">&quot;x-spam-score&quot;</span> <span class="s">&quot;3.75&quot;</span> <span class="p">)</span> <span class="p">{</span> <span class="nb">header</span> <span class="nt">:value</span> <span class="s">&quot;ge&quot;</span> <span class="nt">:comparator</span> <span class="s">&quot;i;ascii-numeric&quot;</span> <span class="s">&quot;x-spam-score&quot;</span> <span class="s">&quot;3.75&quot;</span>
<span class="p">)</span> <span class="p">{</span>
<span class="nb">fileinto</span> <span class="s">&quot;Junk&quot;</span><span class="p">;</span> <span class="nb">fileinto</span> <span class="s">&quot;Junk&quot;</span><span class="p">;</span>
<span class="p">}</span> <span class="p">}</span>
</code></pre></div> </code></pre></div>

View file

@ -2087,10 +2087,10 @@ Fetching an email: MUA &lt;--------------------------------- MDA
</ul> </ul>
<p>Here's where DMS's toolchain fits within the delivery chain:</p> <p>Here's where DMS's toolchain fits within the delivery chain:</p>
<div class="highlight"><pre><span></span><code> docker-mailserver is here: <div class="highlight"><pre><span></span><code> docker-mailserver is here:
┏━━━━━━━┓ ┏━━━━━━━┓
Sending an email: MUA ---&gt; MTA ---&gt; (MTA relays) ---&gt; ┫ MTA ╮ ┃ Sending an email: MUA ---&gt; MTA ---&gt; (MTA relays) ---&gt; ┫ MTA ╮ ┃
Fetching an email: MUA &lt;------------------------------ ┫ MDA ╯ ┃ Fetching an email: MUA &lt;------------------------------ ┫ MDA ╯ ┃
┗━━━━━━━┛ ┗━━━━━━━┛
</code></pre></div> </code></pre></div>
<details class="example"> <details class="example">
<summary>An Example</summary> <summary>An Example</summary>
@ -2116,18 +2116,18 @@ B) Bob sends an email to <code>alice@gmail.com</code> =&gt; the email is first s
<p>When it comes to the specifics of email exchange, we have to look at protocols and ports enabled to support all the identified purposes. There are several valid options and they've been evolving overtime.</p> <p>When it comes to the specifics of email exchange, we have to look at protocols and ports enabled to support all the identified purposes. There are several valid options and they've been evolving overtime.</p>
<h3 id="overview"><a class="toclink" href="#overview">Overview</a></h3> <h3 id="overview"><a class="toclink" href="#overview">Overview</a></h3>
<p>The following picture gives a visualization of the interplay of all components and their <a href="../config/security/understanding-the-ports/">respective ports</a>:</p> <p>The following picture gives a visualization of the interplay of all components and their <a href="../config/security/understanding-the-ports/">respective ports</a>:</p>
<div class="highlight"><pre><span></span><code> ┏━━━━━━━━━━ Submission ━━━━━━━━━━━━┓┏━━━━━━━━━━━━━ Transfer/Relay ━━━━━━━━━━━┓ <div class="highlight"><pre><span></span><code> ┏━━━━━━━━━━ Submission ━━━━━━━━━━━━┓┏━━━━━━━━━━━━━ Transfer/Relay ━━━━━━━━━━━┓
┌─────────────────────┐ ┌┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┐ ┌─────────────────────┐ ┌┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┐
MUA ----- STARTTLS ------&gt; ┤(587) MTA ╮ (25)├ &lt;-- cleartext ---&gt; ┊ Third-party MTA ┊ MUA ----- STARTTLS -------&gt; ┤(587) MTA ╮ (25)├ &lt;-- cleartext ---&gt; ┊ Third-party MTA ┊
----- implicit TLS --&gt; ┤(465) │ | └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘ ----- implicit TLS ---&gt; ┤(465) │ | └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘
----- cleartext -----&gt; ┤(25) │ | ----- cleartext ------&gt; ┤(25) │ |
|┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄| |┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄|
MUA &lt;---- STARTTLS ------- ┤(143) MDA ╯ | MUA &lt;---- STARTTLS -------- ┤(143) MDA ╯ |
&lt;---- implicit TLS --- ┤(993) | &lt;---- implicit TLS ---- ┤(993) |
└─────────────────────┘ └─────────────────────┘
┗━━━━━━━━━━ Retrieval ━━━━━━━━━━━━━┛ ┗━━━━━━━━━━ Retrieval ━━━━━━━━━━━━━┛
</code></pre></div> </code></pre></div>
<p>If you're new to email infrastructure, both that table and the schema may be confusing. <p>If you're new to email infrastructure, both that table and the schema may be confusing.
Read on to expand your understanding and learn about DMS's configuration, including how you can customize it.</p> Read on to expand your understanding and learn about DMS's configuration, including how you can customize it.</p>
@ -2146,7 +2146,7 @@ Read on to expand your understanding and learn about DMS's configuration, includ
<li>Outbound Submission (self-owned email is submitted directly to the MTA, then is relayed "outside")</li> <li>Outbound Submission (self-owned email is submitted directly to the MTA, then is relayed "outside")</li>
<li>Inbound Submission (third-party email has been submitted &amp; relayed, then is accepted "inside" by the MTA)</li> <li>Inbound Submission (third-party email has been submitted &amp; relayed, then is accepted "inside" by the MTA)</li>
</ul> </ul>
<div class="highlight"><pre><span></span><code>━━━ Outbound Submission ━━━┓ <div class="highlight"><pre><span></span><code> ┏━━━ Outbound Submission ━━━┓
┌────────────────────┐ ┌┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┐ ┌────────────────────┐ ┌┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┐
Me ---------------&gt; ┤ ├ -----------------&gt; ┊ ┊ Me ---------------&gt; ┤ ├ -----------------&gt; ┊ ┊
@ -2154,7 +2154,7 @@ Me ---------------&gt; ┤ ├ -----------------&gt; ┊
│ ├ &lt;----------------- ┊ ┊ │ ├ &lt;----------------- ┊ ┊
└────────────────────┘ └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘ └────────────────────┘ └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘
┗━━━━━━━━━━ Inbound Submission ━━━━━━━━━━┛ ┗━━━━━━━━━━ Inbound Submission ━━━━━━━━━━┛
</code></pre></div> </code></pre></div>
<h4 id="outbound-submission"><a class="toclink" href="#outbound-submission">Outbound Submission</a></h4> <h4 id="outbound-submission"><a class="toclink" href="#outbound-submission">Outbound Submission</a></h4>
<p>When it comes to securing Outbound Submission you should prefer to use <em>Implicit TLS connection via ESMTP on port 465</em> (see <a href="https://tools.ietf.org/html/rfc8314">RFC 8314</a>). Please read our article about <a href="../config/security/understanding-the-ports/"><strong>Understanding the Ports</strong></a> for more details!</p> <p>When it comes to securing Outbound Submission you should prefer to use <em>Implicit TLS connection via ESMTP on port 465</em> (see <a href="https://tools.ietf.org/html/rfc8314">RFC 8314</a>). Please read our article about <a href="../config/security/understanding-the-ports/"><strong>Understanding the Ports</strong></a> for more details!</p>
@ -2183,7 +2183,7 @@ Me ---------------&gt; ┤ ├ -----------------&gt; ┊
<li>One may also secure Inbound Submission using advanced encryption scheme, such as DANE/DNSSEC and/or MTA-STS.</li> <li>One may also secure Inbound Submission using advanced encryption scheme, such as DANE/DNSSEC and/or MTA-STS.</li>
</ul> </ul>
<p>Overall, DMS's default configuration for SMTP looks like this:</p> <p>Overall, DMS's default configuration for SMTP looks like this:</p>
<div class="highlight"><pre><span></span><code>━━━ Outbound Submission ━━━┓ <div class="highlight"><pre><span></span><code> ┏━━━ Outbound Submission ━━━┓
┌────────────────────┐ ┌┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┐ ┌────────────────────┐ ┌┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┐
Me -- cleartext --&gt; ┤(25) (25)├ --- cleartext ---&gt; ┊ ┊ Me -- cleartext --&gt; ┤(25) (25)├ --- cleartext ---&gt; ┊ ┊
@ -2192,7 +2192,7 @@ Me -- STARTTLS ---&gt; ┤(587) │ ┊
│ (25)├ &lt;---cleartext ---- ┊ ┊ │ (25)├ &lt;---cleartext ---- ┊ ┊
└────────────────────┘ └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘ └────────────────────┘ └┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘
┗━━━━━━━━━━ Inbound Submission ━━━━━━━━━━┛ ┗━━━━━━━━━━ Inbound Submission ━━━━━━━━━━┛
</code></pre></div> </code></pre></div>
<h3 id="retrieval-imap"><a class="toclink" href="#retrieval-imap">Retrieval - IMAP</a></h3> <h3 id="retrieval-imap"><a class="toclink" href="#retrieval-imap">Retrieval - IMAP</a></h3>
<p>A MUA willing to fetch an email from a mail server will most likely communicate with its <a href="https://en.wikipedia.org/wiki/IMAP">IMAP</a> server. As with SMTP described earlier, communication will take place in the form of data packets exchanged over a network that both the client and the server are connected to. The IMAP protocol makes the server capable of handling <em>Retrieval</em>.</p> <p>A MUA willing to fetch an email from a mail server will most likely communicate with its <a href="https://en.wikipedia.org/wiki/IMAP">IMAP</a> server. As with SMTP described earlier, communication will take place in the form of data packets exchanged over a network that both the client and the server are connected to. The IMAP protocol makes the server capable of handling <em>Retrieval</em>.</p>

File diff suppressed because one or more lines are too long

View file

@ -2,212 +2,212 @@
<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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-getmail/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/config/advanced/mail-getmail/</loc>
<lastmod>2023-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</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-09-30</lastmod> <lastmod>2023-10-04</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/use-cases/ios-mail-push-support/</loc> <loc>https://docker-mailserver.github.io/docker-mailserver/edge/examples/use-cases/ios-mail-push-support/</loc>
<lastmod>2023-09-30</lastmod> <lastmod>2023-10-04</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
</urlset> </urlset>