Update dist for prod

This commit is contained in:
forgejo-actions[bot] 2026-08-01 18:09:17 +00:00
parent 15ccc2715d
commit 4f376f1dce
39 changed files with 26 additions and 21 deletions

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-yy7gm99nl" data-options="{}"><div id="astro-splide-yy7gm99nl" 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-y6fqup6du" data-options="{}"><div id="astro-splide-y6fqup6du" 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>

View file

@ -263,9 +263,14 @@ sides. Lets create it:</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:#82AAFF;--1:#3B61B0">swaks</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#82AAFF;--1:#3B61B0">--server</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">localhost:587</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--from</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">john@example.org</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--to</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">list@example.com</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--tls</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--auth-user</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">john@example.org</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#F78C6C;--1:#AA0982">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#82AAFF;--1:#3B61B0">--auth-password</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">summersun</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="swaks --server localhost:587 \ --from john@example.org \ --to list@example.com \ --tls \ --auth-user john@example.org \ --auth-password summersun"><div></div></button></div></figure></div>
<p>That will work:</p>
<div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="plaintext"><code><div class="ec-line"><div class="code"><span style="--0:#d6deeb;--1:#403f53">&#x3C;~ 250 2.0.0 Ok: queued as AFFF12292A</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="<~ 250 2.0.0 Ok: queued as AFFF12292A"><div></div></button></div></figure></div>
<aside aria-label="Allow aliases?" class="starlight-aside starlight-aside--tip"><p class="starlight-aside__title" aria-hidden="true"><svg aria-hidden="true" class="starlight-aside__icon astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path fill-rule="evenodd" d="M1.44 8.855v-.001l3.527-3.516c.34-.344.802-.541 1.285-.548h6.649l.947-.947c3.07-3.07 6.207-3.072 7.62-2.868a1.821 1.821 0 0 1 1.557 1.557c.204 1.413.203 4.55-2.868 7.62l-.946.946v6.649a1.845 1.845 0 0 1-.549 1.286l-3.516 3.528a1.844 1.844 0 0 1-3.11-.944l-.858-4.275-4.52-4.52-2.31-.463-1.964-.394A1.847 1.847 0 0 1 .98 10.693a1.843 1.843 0 0 1 .46-1.838Zm5.379 2.017-3.873-.776L6.32 6.733h4.638l-4.14 4.14Zm8.403-5.655c2.459-2.46 4.856-2.463 5.89-2.33.134 1.035.13 3.432-2.329 5.891l-6.71 6.71-3.561-3.56 6.71-6.711Zm-1.318 15.837-.776-3.873 4.14-4.14v4.639l-3.364 3.374Z" clip-rule="evenodd"/><path d="M9.318 18.345a.972.972 0 0 0-1.86-.561c-.482 1.435-1.687 2.204-2.934 2.619a8.22 8.22 0 0 1-1.23.302c.062-.365.157-.79.303-1.229.415-1.247 1.184-2.452 2.62-2.935a.971.971 0 1 0-.62-1.842c-.12.04-.236.084-.35.13-2.02.828-3.012 2.588-3.493 4.033a10.383 10.383 0 0 0-.51 2.845l-.001.016v.063c0 .536.434.972.97.972H2.24a7.21 7.21 0 0 0 .878-.065c.527-.063 1.248-.19 2.02-.447 1.445-.48 3.205-1.472 4.033-3.494a5.828 5.828 0 0 0 .147-.407Z"/></svg>Allow aliases?</p><div class="starlight-aside__content"><p>The setup so far works for personal mails from John. But if John would be a member of a distribution list
<code dir="auto">pizza@example.org</code> then would not be able to use <code dir="auto">pizza@example.org</code> as a sender address.</p><p>If you want to allow that, create a new *.cf file with a mapping query like this:
<code dir="auto">SELECT email FROM virtual_users WHERE email='%s' UNION SELECT destination FROM virtual_aliases WHERE source='%s'</code>.</p></div></aside>
<aside aria-label="Allow sending from an alias address?" class="starlight-aside starlight-aside--tip"><p class="starlight-aside__title" aria-hidden="true"><svg aria-hidden="true" class="starlight-aside__icon astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path fill-rule="evenodd" d="M1.44 8.855v-.001l3.527-3.516c.34-.344.802-.541 1.285-.548h6.649l.947-.947c3.07-3.07 6.207-3.072 7.62-2.868a1.821 1.821 0 0 1 1.557 1.557c.204 1.413.203 4.55-2.868 7.62l-.946.946v6.649a1.845 1.845 0 0 1-.549 1.286l-3.516 3.528a1.844 1.844 0 0 1-3.11-.944l-.858-4.275-4.52-4.52-2.31-.463-1.964-.394A1.847 1.847 0 0 1 .98 10.693a1.843 1.843 0 0 1 .46-1.838Zm5.379 2.017-3.873-.776L6.32 6.733h4.638l-4.14 4.14Zm8.403-5.655c2.459-2.46 4.856-2.463 5.89-2.33.134 1.035.13 3.432-2.329 5.891l-6.71 6.71-3.561-3.56 6.71-6.711Zm-1.318 15.837-.776-3.873 4.14-4.14v4.639l-3.364 3.374Z" clip-rule="evenodd"/><path d="M9.318 18.345a.972.972 0 0 0-1.86-.561c-.482 1.435-1.687 2.204-2.934 2.619a8.22 8.22 0 0 1-1.23.302c.062-.365.157-.79.303-1.229.415-1.247 1.184-2.452 2.62-2.935a.971.971 0 1 0-.62-1.842c-.12.04-.236.084-.35.13-2.02.828-3.012 2.588-3.493 4.033a10.383 10.383 0 0 0-.51 2.845l-.001.016v.063c0 .536.434.972.97.972H2.24a7.21 7.21 0 0 0 .878-.065c.527-.063 1.248-.19 2.02-.447 1.445-.48 3.205-1.472 4.033-3.494a5.828 5.828 0 0 0 .147-.407Z"/></svg>Allow sending from an alias address?</p><div class="starlight-aside__content"><p>The setup so far works for personal mails from John. But if John was a member
of a distribution list <code dir="auto">pizza@example.org</code> then he would not be able to use
<code dir="auto">pizza@example.org</code> as a sender address.</p><p>If you want to allow that, add an SQL mapping for the <code dir="auto">smtpd_sender_login_maps</code>
as follows:</p><div class="expressive-code"><figure class="frame is-terminal has-title not-content"><figcaption class="header"><span class="title">Add an SQL mapping file</span></figcaption><pre data-language="sh"><code><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/postfix/mariadb-sender-login-maps.cf</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#7FDBCA;--1:#096E72">&#x3C;&#x3C;</span><span style="--0:#D9F5DD;--1:#111111">EOF</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#3B61B0">user = mailserver</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#3B61B0">password = MAILSERVER-PASSWORD-HERE</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#3B61B0">hosts = 127.0.0.1</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#3B61B0">dbname = mailserver</span></div></div><div class="ec-line"><div class="code"><span style="--0:#ECC48D;--1:#3B61B0">query = SELECT email FROM virtual_users WHERE email='%s' UNION SELECT source FROM virtual_aliases WHERE destination='%s';</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:#82AAFF;--1:#3B61B0">postconf</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3B61B0">smtpd_sender_login_maps=mysql:/etc/postfix/mariadb-sender-login-maps.cf</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copy to clipboard" data-copied="Copied!" data-code="cat > /etc/postfix/mariadb-sender-login-maps.cf <<EOFuser = mailserverpassword = MAILSERVER-PASSWORD-HEREhosts = 127.0.0.1dbname = mailserverquery = SELECT email FROM virtual_users WHERE email=&#x27;%s&#x27; UNION SELECT source FROM virtual_aliases WHERE destination=&#x27;%s&#x27;;EOFpostconf smtpd_sender_login_maps=mysql:/etc/postfix/mariadb-sender-login-maps.cf"><div></div></button></div></figure></div><p>This SQL query will return…</p><ul>
<li>the email address of the current user</li>
<li>all alias addresses that point to the current user</li>
</ul></div></aside>
<aside aria-label="Check your $mydestination" class="starlight-aside starlight-aside--danger"><p class="starlight-aside__title" aria-hidden="true"><svg aria-hidden="true" class="starlight-aside__icon astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 7a1 1 0 0 0-1 1v4a1 1 0 0 0 2 0V8a1 1 0 0 0-1-1Zm0 8a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm9.71-7.44-5.27-5.27a1.05 1.05 0 0 0-.71-.29H8.27a1.05 1.05 0 0 0-.71.29L2.29 7.56a1.05 1.05 0 0 0-.29.71v7.46c.004.265.107.518.29.71l5.27 5.27c.192.183.445.286.71.29h7.46a1.05 1.05 0 0 0 .71-.29l5.27-5.27a1.05 1.05 0 0 0 .29-.71V8.27a1.05 1.05 0 0 0-.29-.71ZM20 15.31 15.31 20H8.69L4 15.31V8.69L8.69 4h6.62L20 8.69v6.62Z"/></svg>Check your $mydestination</p><div class="starlight-aside__content"><p>Please check the <code dir="auto">mydestination</code> setting in your <code dir="auto">main.cf</code> file. Make sure that it does not contain any domain name that
you also use as one of your <em>virtual domains</em>. If in doubt just set it to <code dir="auto">localhost</code>.</p></div></aside>
<div class="sl-heading-wrapper level-h2"><h2 id="test-it">Test it</h2><a class="sl-anchor-link" href="#test-it"><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 “Test it”</span></a></div>