Update dist for prod

This commit is contained in:
forgejo-actions[bot] 2026-08-01 23:43:19 +00:00
parent 4cd001bdf3
commit 3759974880
39 changed files with 29 additions and 20 deletions

View file

@ -221,13 +221,22 @@ specified otherwise in a map. Always use a specific selector so that you can lat
into trouble.</p>
<p>Using maps is simple. First we need to change the <em>selector_map</em> setting of the dkim_signing module. Create a new rspamd
configuration file:</p>
<div class="expressive-code"><figure class="frame is-terminal has-title not-content"><figcaption class="header"><span class="title">Run this on your server</span></figcaption><pre data-language="sh"><code><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Tell rspamd to look up selectors in our mapping file</span></div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3B61B0">cat</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#7FDBCA;--1:#096E72">></span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">/etc/rspamd/local.d/dkim_signing.conf</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#7FDBCA;--1:#096E72">&#x3C;&#x3C;</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#D9F5DD;--1:#111111">'EOF'</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#984E4D">path = "/var/lib/rspamd/dkim/$domain.$selector.key";</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#984E4D">selector_map = "/etc/rspamd/dkim_selectors.map";</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">EOF</span></div></div><div class="ec-line"><div class="code">
</div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Restart rspamd</span></div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3B61B0">systemctl</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">restart</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">rspamd</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="# Tell rspamd to look up selectors in our mapping filecat > /etc/rspamd/local.d/dkim_signing.conf << &#x27;EOF&#x27;path = &#x22;/var/lib/rspamd/dkim/$domain.$selector.key&#x22;;selector_map = &#x22;/etc/rspamd/dkim_selectors.map&#x22;;EOF# Restart rspamdsystemctl restart rspamd"><div></div></button></div></figure></div>
<div class="expressive-code"><figure class="frame is-terminal has-title not-content"><figcaption class="header"><span class="title">Run this on your server</span></figcaption><pre data-language="sh"><code><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Tell rspamd to look up selectors in our mapping file</span></div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3B61B0">cat</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#7FDBCA;--1:#096E72">></span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">/etc/rspamd/local.d/dkim_signing.conf</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#7FDBCA;--1:#096E72">&#x3C;&#x3C;</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#D9F5DD;--1:#111111">'EOF'</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#984E4D">path = "/var/lib/rspamd/dkim/$domain.$selector.key";</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#984E4D">selector_map = "/etc/rspamd/dkim_selectors.map";</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#984E4D">allow_username_mismatch = true;</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">EOF</span></div></div><div class="ec-line"><div class="code">
</div></div><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Restart rspamd</span></div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3B61B0">systemctl</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">restart</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">rspamd</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="# Tell rspamd to look up selectors in our mapping filecat > /etc/rspamd/local.d/dkim_signing.conf << &#x27;EOF&#x27;path = &#x22;/var/lib/rspamd/dkim/$domain.$selector.key&#x22;;selector_map = &#x22;/etc/rspamd/dkim_selectors.map&#x22;;allow_username_mismatch = true;EOF# Restart rspamdsystemctl restart rspamd"><div></div></button></div></figure></div>
<p>The configuration is simple. rspamd will look for the domain-to-key mapping in the <code dir="auto">dkim_selectors.map</code> file. Create
that file for your own domain and selector:</p>
<div class="expressive-code"><figure class="frame is-terminal has-title not-content"><figcaption class="header"><span class="title">Run this on your server</span></figcaption><pre data-language="sh"><code><div class="ec-line"><div class="code"><span style="--0:#919F9F;--1:#5F636F"># Add the mapping of domain/selector (use your own domain here)</span></div></div><div class="ec-line"><div class="code"><span style="--0:#C5E478;--1:#3B61B0">echo</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">example.org</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">2025100901</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#7FDBCA;--1:#096E72">></span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">/etc/rspamd/dkim_selectors.map</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="# Add the mapping of domain/selector (use your own domain here)echo example.org 2025100901 > /etc/rspamd/dkim_selectors.map"><div></div></button></div></figure></div>
<p>Thats all. rspamd now knows that whenever it sees an outgoing email from <code dir="auto">anyone@example.org</code> it will get the DKIM
private key from /var/lib/rspamd/dkim/<strong>example.org</strong>.<strong>2025100901</strong>.key and use it to sign the email.</p>
<p>The <code dir="auto">allow_username_mismatch</code> setting makes rspamd sign an email even if the
authenticated user (during relaying) does not match the actual sender address.
Sounds complicated? Well, the use case is <em>aliases</em>. Imagine that
<code dir="auto">john@example.com</code> has an alias address of <code dir="auto">pizza@example.org</code>. If John logs in
as <code dir="auto">john@example.org</code> but chooses to set his sender address to
<code dir="auto">pizza@example.org</code> then rspamd will (by default) not add a DKIM signature due
to a mismatch. Setting <code dir="auto">allow_username_mismatch</code> overrides this behavior and
Johns email will be signed even if he sends on behalf of <code dir="auto">pizza@example.org</code>.
(Thanks, DBL, for the hint.)</p>
<div class="sl-heading-wrapper level-h3"><h3 id="send-a-test-email">Send a test email</h3><a class="sl-anchor-link" href="#send-a-test-email"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 1 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 0 0-1.42-1.42m8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 1 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l3.88-3.89a4.49 4.49 0 0 0 0-6.33M8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1 1 0 1 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42"></path></svg></span><span class="sr-only" data-pagefind-ignore>Section titled “Send a test email”</span></a></div>
<p>You could either just send an email from your mail client (or Roundcube) through your mail server to another email
address. Or you could use swaks. Use your own addresses and password of course:</p>

View file

@ -78,4 +78,4 @@
it helps to get a better understanding of the steps involved in receiving email. We will prepare the necessary
configuration in the next chapters.</p>
<p>Use the arrows to navigate between slides:</p>
<astro-splide data-splideid="astro-splide-7nn4o61mx" data-options="{}"><div id="astro-splide-7nn4o61mx" class="splide"><div class="splide__track"><ul class="splide__list"> <li class="splide__slide" key="1"><img src="/big-picture-receive/01.svg" alt="Slide 1"/></li><li class="splide__slide" key="2"><img src="/big-picture-receive/02.svg" alt="Slide 2"/></li><li class="splide__slide" key="3"><img src="/big-picture-receive/03.svg" alt="Slide 3"/></li><li class="splide__slide" key="4"><img src="/big-picture-receive/04.svg" alt="Slide 4"/></li><li class="splide__slide" key="5"><img src="/big-picture-receive/05.svg" alt="Slide 5"/></li><li class="splide__slide" key="6"><img src="/big-picture-receive/06.svg" alt="Slide 6"/></li><li class="splide__slide" key="7"><img src="/big-picture-receive/07.svg" alt="Slide 7"/></li><li class="splide__slide" key="8"><img src="/big-picture-receive/08.svg" alt="Slide 8"/></li><li class="splide__slide" key="9"><img src="/big-picture-receive/09.svg" alt="Slide 9"/></li><li class="splide__slide" key="10"><img src="/big-picture-receive/10.svg" alt="Slide 10"/></li><li class="splide__slide" key="11"><img src="/big-picture-receive/11.svg" alt="Slide 11"/></li><li class="splide__slide" key="12"><img src="/big-picture-receive/12.svg" alt="Slide 12"/></li><li class="splide__slide" key="13"><img src="/big-picture-receive/13.svg" alt="Slide 13"/></li><li class="splide__slide" key="14"><img src="/big-picture-receive/14.svg" alt="Slide 14"/></li><li class="splide__slide" key="15"><img src="/big-picture-receive/15.svg" alt="Slide 15"/></li><li class="splide__slide" key="16"><img src="/big-picture-receive/16.svg" alt="Slide 16"/></li><li class="splide__slide" key="17"><img src="/big-picture-receive/17.svg" alt="Slide 17"/></li><li class="splide__slide" key="18"><img src="/big-picture-receive/18.svg" alt="Slide 18"/></li><li class="splide__slide" key="19"><img src="/big-picture-receive/19.svg" alt="Slide 19"/></li><li class="splide__slide" key="20"><img src="/big-picture-receive/20.svg" alt="Slide 20"/></li><li class="splide__slide" key="21"><img src="/big-picture-receive/21.svg" alt="Slide 21"/></li><li class="splide__slide" key="22"><img src="/big-picture-receive/22.svg" alt="Slide 22"/></li><li class="splide__slide" key="23"><img src="/big-picture-receive/23.svg" alt="Slide 23"/></li><li class="splide__slide" key="24"><img src="/big-picture-receive/24.svg" alt="Slide 24"/></li> </ul></div></div></astro-splide><script type="module" src="/_astro/Splide.astro_astro_type_script_index_0_lang.DkIk0FXZ.js"></script></div><footer><footer class="sl-flex astro-xhxjzfa7"><div class="meta sl-flex astro-xhxjzfa7"><p>Last updated: <time datetime="2025-11-01T00:00:00.000Z">Nov 1, 2025</time></p></div><div class="pagination-links print:hidden astro-jgq3vlii" dir="ltr"><a href="/ispmail-trixie/database/" rel="prev" class="astro-jgq3vlii"><svg aria-hidden="true" class="astro-jgq3vlii astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17 11H9.41l3.3-3.29a1.004 1.004 0 1 0-1.42-1.42l-5 5a1 1 0 0 0-.21.33 1 1 0 0 0 0 .76 1 1 0 0 0 .21.33l5 5a1.002 1.002 0 0 0 1.639-.325 1 1 0 0 0-.219-1.095L9.41 13H17a1 1 0 0 0 0-2Z"/></svg><span class="astro-jgq3vlii">Previous<br class="astro-jgq3vlii"><span class="link-title astro-jgq3vlii">Database setup</span></span></a><a href="/ispmail-trixie/dns-records/" rel="next" class="astro-jgq3vlii"><svg aria-hidden="true" class="astro-jgq3vlii astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg><span class="astro-jgq3vlii">Next<br class="astro-jgq3vlii"><span class="link-title astro-jgq3vlii">DNS records</span></span></a></div></footer><script defer src="https://comentario.workaround.org/comentario.js"></script><comentario-comments no-fonts="true" id="comments"></comentario-comments><div class="myfooter">This guide is maintained by <a href="mailto:ispmail@christoph-haas.de">Christoph Haas</a> since 2003. All content on workaround.org can be used under the terms of the<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">Creative Commons BY-NC-SA license</a>. Penguin image based on AI art because I suck at drawing.</div></footer></div></div></main></div></div></div></div></body></html>
<astro-splide data-splideid="astro-splide-8cgqrnqln" data-options="{}"><div id="astro-splide-8cgqrnqln" class="splide"><div class="splide__track"><ul class="splide__list"> <li class="splide__slide" key="1"><img src="/big-picture-receive/01.svg" alt="Slide 1"/></li><li class="splide__slide" key="2"><img src="/big-picture-receive/02.svg" alt="Slide 2"/></li><li class="splide__slide" key="3"><img src="/big-picture-receive/03.svg" alt="Slide 3"/></li><li class="splide__slide" key="4"><img src="/big-picture-receive/04.svg" alt="Slide 4"/></li><li class="splide__slide" key="5"><img src="/big-picture-receive/05.svg" alt="Slide 5"/></li><li class="splide__slide" key="6"><img src="/big-picture-receive/06.svg" alt="Slide 6"/></li><li class="splide__slide" key="7"><img src="/big-picture-receive/07.svg" alt="Slide 7"/></li><li class="splide__slide" key="8"><img src="/big-picture-receive/08.svg" alt="Slide 8"/></li><li class="splide__slide" key="9"><img src="/big-picture-receive/09.svg" alt="Slide 9"/></li><li class="splide__slide" key="10"><img src="/big-picture-receive/10.svg" alt="Slide 10"/></li><li class="splide__slide" key="11"><img src="/big-picture-receive/11.svg" alt="Slide 11"/></li><li class="splide__slide" key="12"><img src="/big-picture-receive/12.svg" alt="Slide 12"/></li><li class="splide__slide" key="13"><img src="/big-picture-receive/13.svg" alt="Slide 13"/></li><li class="splide__slide" key="14"><img src="/big-picture-receive/14.svg" alt="Slide 14"/></li><li class="splide__slide" key="15"><img src="/big-picture-receive/15.svg" alt="Slide 15"/></li><li class="splide__slide" key="16"><img src="/big-picture-receive/16.svg" alt="Slide 16"/></li><li class="splide__slide" key="17"><img src="/big-picture-receive/17.svg" alt="Slide 17"/></li><li class="splide__slide" key="18"><img src="/big-picture-receive/18.svg" alt="Slide 18"/></li><li class="splide__slide" key="19"><img src="/big-picture-receive/19.svg" alt="Slide 19"/></li><li class="splide__slide" key="20"><img src="/big-picture-receive/20.svg" alt="Slide 20"/></li><li class="splide__slide" key="21"><img src="/big-picture-receive/21.svg" alt="Slide 21"/></li><li class="splide__slide" key="22"><img src="/big-picture-receive/22.svg" alt="Slide 22"/></li><li class="splide__slide" key="23"><img src="/big-picture-receive/23.svg" alt="Slide 23"/></li><li class="splide__slide" key="24"><img src="/big-picture-receive/24.svg" alt="Slide 24"/></li> </ul></div></div></astro-splide><script type="module" src="/_astro/Splide.astro_astro_type_script_index_0_lang.DkIk0FXZ.js"></script></div><footer><footer class="sl-flex astro-xhxjzfa7"><div class="meta sl-flex astro-xhxjzfa7"><p>Last updated: <time datetime="2025-11-01T00:00:00.000Z">Nov 1, 2025</time></p></div><div class="pagination-links print:hidden astro-jgq3vlii" dir="ltr"><a href="/ispmail-trixie/database/" rel="prev" class="astro-jgq3vlii"><svg aria-hidden="true" class="astro-jgq3vlii astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17 11H9.41l3.3-3.29a1.004 1.004 0 1 0-1.42-1.42l-5 5a1 1 0 0 0-.21.33 1 1 0 0 0 0 .76 1 1 0 0 0 .21.33l5 5a1.002 1.002 0 0 0 1.639-.325 1 1 0 0 0-.219-1.095L9.41 13H17a1 1 0 0 0 0-2Z"/></svg><span class="astro-jgq3vlii">Previous<br class="astro-jgq3vlii"><span class="link-title astro-jgq3vlii">Database setup</span></span></a><a href="/ispmail-trixie/dns-records/" rel="next" class="astro-jgq3vlii"><svg aria-hidden="true" class="astro-jgq3vlii astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg><span class="astro-jgq3vlii">Next<br class="astro-jgq3vlii"><span class="link-title astro-jgq3vlii">DNS records</span></span></a></div></footer><script defer src="https://comentario.workaround.org/comentario.js"></script><comentario-comments no-fonts="true" id="comments"></comentario-comments><div class="myfooter">This guide is maintained by <a href="mailto:ispmail@christoph-haas.de">Christoph Haas</a> since 2003. All content on workaround.org can be used under the terms of the<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">Creative Commons BY-NC-SA license</a>. Penguin image based on AI art because I suck at drawing.</div></footer></div></div></main></div></div></div></div></body></html>