mirror of
https://github.com/domainaware/parsedmarc.git
synced 2026-03-04 05:46:25 +00:00
359 lines
15 KiB
HTML
359 lines
15 KiB
HTML
|
||
|
||
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" data-content_root="./">
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>What about mailing lists? — parsedmarc 9.1.1 documentation</title>
|
||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
|
||
|
||
|
||
<script src="_static/jquery.js?v=5d32c60e"></script>
|
||
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||
<script src="_static/documentation_options.js?v=debe1a4c"></script>
|
||
<script src="_static/doctools.js?v=9bcbadda"></script>
|
||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||
<script src="_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
|
||
|
||
|
||
<a href="index.html" class="icon icon-home">
|
||
parsedmarc
|
||
</a>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<p class="caption" role="heading"><span class="caption-text">Contents</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="usage.html">Using parsedmarc</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="output.html">Sample outputs</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="elasticsearch.html">Elasticsearch and Kibana</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="opensearch.html">OpenSearch and Grafana</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="kibana.html">Using the Kibana dashboards</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="splunk.html">Splunk</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="davmail.html">Accessing an inbox using OWA/EWS</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dmarc.html">Understanding DMARC</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing to parsedmarc</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="index.html">parsedmarc</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||
<li class="breadcrumb-item active">What about mailing lists?</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="_sources/mailing-lists.md.txt" rel="nofollow"> View page source</a>
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="what-about-mailing-lists">
|
||
<h1>What about mailing lists?<a class="headerlink" href="#what-about-mailing-lists" title="Link to this heading"></a></h1>
|
||
<p>When you deploy DMARC on your domain, you might find that messages
|
||
relayed by mailing lists are failing DMARC, most likely because the mailing
|
||
list is spoofing your from address, and modifying the subject,
|
||
footer, or other part of the message, thereby breaking the
|
||
DKIM signature.</p>
|
||
<section id="mailing-list-best-practices">
|
||
<h2>Mailing list best practices<a class="headerlink" href="#mailing-list-best-practices" title="Link to this heading"></a></h2>
|
||
<p>Ideally, a mailing list should forward messages without altering the
|
||
headers or body content at all. <a class="reference external" href="https://begriffs.com/posts/2018-09-18-dmarc-mailing-list.html">Joe Nelson</a> does a fantastic job of
|
||
explaining exactly what mailing lists should and shouldn’t do to be
|
||
fully DMARC compliant. Rather than repeat his fine work, here’s a
|
||
summary:</p>
|
||
<section id="do">
|
||
<h3>Do<a class="headerlink" href="#do" title="Link to this heading"></a></h3>
|
||
<ul class="simple">
|
||
<li><p>Retain headers from the original message</p></li>
|
||
<li><p>Add <a class="reference external" href="https://tools.ietf.org/html/rfc2369">RFC 2369</a> List-Unsubscribe headers to outgoing messages, instead of
|
||
adding unsubscribe links to the body</p></li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><p>List-Unsubscribe: <a class="reference external" href="https://list.example.com/unsubscribe-link">https://list.example.com/unsubscribe-link</a></p>
|
||
</div></blockquote>
|
||
<ul>
|
||
<li><p>Add <a class="reference external" href="https://tools.ietf.org/html/rfc2919">RFC 2919</a> List-Id headers instead of modifying the subject</p>
|
||
<blockquote>
|
||
<div><p>List-Id: Example Mailing List <<a class="reference external" href="http://list.example.com">list.example.com</a>></p>
|
||
</div></blockquote>
|
||
</li>
|
||
</ul>
|
||
<p>Modern mail clients and webmail services generate unsubscribe buttons based on
|
||
these headers.</p>
|
||
</section>
|
||
<section id="do-not">
|
||
<h3>Do not<a class="headerlink" href="#do-not" title="Link to this heading"></a></h3>
|
||
<ul class="simple">
|
||
<li><p>Remove or modify any existing headers from the original message, including
|
||
From, Date, Subject, etc.</p></li>
|
||
<li><p>Add to or remove content from the message body, <strong>including traditional
|
||
disclaimers and unsubscribe footers</strong></p></li>
|
||
</ul>
|
||
<p>In addition to complying with DMARC, this configuration ensures that Reply
|
||
and Reply All actions work like they would with any email message. Reply
|
||
replies to the message sender, and Reply All replies to the sender and the
|
||
list.</p>
|
||
<p>Even without a subject prefix or body footer, mailing list users can still
|
||
tell that a message came from the mailing list, because the message was sent
|
||
to the mailing list post address, and not their email address.</p>
|
||
<p>Configuration steps for common mailing list platforms are listed below.</p>
|
||
</section>
|
||
<section id="mailman-2">
|
||
<h3>Mailman 2<a class="headerlink" href="#mailman-2" title="Link to this heading"></a></h3>
|
||
<p>Navigate to General Settings, and configure the settings below</p>
|
||
<table class="docutils align-default">
|
||
<tbody>
|
||
<tr class="row-odd"><td><p><strong>Setting</strong></p></td>
|
||
<td><p><strong>Value</strong></p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>subject_prefix</strong></p></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>from_is_list</strong></p></td>
|
||
<td><p>No</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>first_strip_reply_to</strong></p></td>
|
||
<td><p>No</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>reply_goes_to_list</strong></p></td>
|
||
<td><p>Poster</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>include_rfc2369_headers</strong></p></td>
|
||
<td><p>Yes</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>include_list_post_header</strong></p></td>
|
||
<td><p>Yes</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>include_sender_header</strong></p></td>
|
||
<td><p>No</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Navigate to Non-digest options, and configure the settings below</p>
|
||
<table class="docutils align-default">
|
||
<tbody>
|
||
<tr class="row-odd"><td><p><strong>Setting</strong></p></td>
|
||
<td><p><strong>Value</strong></p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>msg_header</strong></p></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>msg_footer</strong></p></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>scrub_nondigest</strong></p></td>
|
||
<td><p>No</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Navigate to Privacy Options> Sending Filters, and configure the settings below</p>
|
||
<table class="docutils align-default">
|
||
<tbody>
|
||
<tr class="row-odd"><td><p><strong>Setting</strong></p></td>
|
||
<td><p><strong>Value</strong></p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>dmarc_moderation_action</strong></p></td>
|
||
<td><p>Accept</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>dmarc_quarantine_moderation_action</strong></p></td>
|
||
<td><p>Yes</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>dmarc_none_moderation_action</strong></p></td>
|
||
<td><p>Yes</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
<section id="mailman-3">
|
||
<h3>Mailman 3<a class="headerlink" href="#mailman-3" title="Link to this heading"></a></h3>
|
||
<p>Navigate to Settings> List Identity</p>
|
||
<p>Make Subject prefix blank.</p>
|
||
<p>Navigate to Settings> Alter Messages</p>
|
||
<p>Configure the settings below</p>
|
||
<table class="docutils align-default">
|
||
<tbody>
|
||
<tr class="row-odd"><td><p><strong>Setting</strong></p></td>
|
||
<td><p><strong>Value</strong></p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>Convert html to plaintext</strong></p></td>
|
||
<td><p>No</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>Include RFC2369 headers</strong></p></td>
|
||
<td><p>Yes</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>Include the list post header</strong></p></td>
|
||
<td><p>Yes</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>Explicit reply-to address</strong></p></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>First strip replyto</strong></p></td>
|
||
<td><p>No</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>Reply goes to list</strong></p></td>
|
||
<td><p>No munging</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Navigate to Settings> DMARC Mitigation</p>
|
||
<p>Configure the settings below</p>
|
||
<table class="docutils align-default">
|
||
<tbody>
|
||
<tr class="row-odd"><td><p><strong>Setting</strong></p></td>
|
||
<td><p><strong>Value</strong></p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>DMARC mitigation action</strong></p></td>
|
||
<td><p>No DMARC mitigations</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>DMARC mitigate unconditionally</strong></p></td>
|
||
<td><p>No</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Create a blank footer template for your mailing list to remove the message
|
||
footer. Unfortunately, the Postorius mailing list admin UI will not allow you
|
||
to create an empty template, so you’ll have to create one using the system’s
|
||
command line instead, for example:</p>
|
||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>touch<span class="w"> </span>var/templates/lists/list.example.com/en/list:member:regular:footer
|
||
</pre></div>
|
||
</div>
|
||
<p>Where <code class="docutils literal notranslate"><span class="pre">list.example.com</span></code> the list ID, and <code class="docutils literal notranslate"><span class="pre">en</span></code> is the language.</p>
|
||
<p>Then restart mailman core.</p>
|
||
</section>
|
||
<section id="listserv">
|
||
<h3>LISTSERV<a class="headerlink" href="#listserv" title="Link to this heading"></a></h3>
|
||
<p><a class="reference external" href="https://www.lsoft.com/news/dmarc-issue1-2018.asp">LISTSERV 16.0-2017a</a> and higher will rewrite the From header for domains
|
||
that enforce with a DMARC quarantine or reject policy.</p>
|
||
<p>Some additional steps are needed for Linux hosts.</p>
|
||
</section>
|
||
<section id="workarounds">
|
||
<h3>Workarounds<a class="headerlink" href="#workarounds" title="Link to this heading"></a></h3>
|
||
<p>If a mailing list must go <strong>against</strong> best practices and
|
||
modify the message (e.g. to add a required legal footer), the mailing
|
||
list administrator must configure the list to replace the From address of the
|
||
message (also known as munging) with the address of the mailing list, so they
|
||
no longer spoof email addresses with domains protected by DMARC.</p>
|
||
<p>Configuration steps for common mailing list platforms are listed below.</p>
|
||
<section id="id1">
|
||
<h4>Mailman 2<a class="headerlink" href="#id1" title="Link to this heading"></a></h4>
|
||
<p>Navigate to Privacy Options> Sending Filters, and configure the settings below</p>
|
||
<table class="docutils align-default">
|
||
<tbody>
|
||
<tr class="row-odd"><td><p><strong>Setting</strong></p></td>
|
||
<td><p><strong>Value</strong></p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>dmarc_moderation_action</strong></p></td>
|
||
<td><p>Munge From</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>dmarc_quarantine_moderation_action</strong></p></td>
|
||
<td><p>Yes</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>dmarc_none_moderation_action</strong></p></td>
|
||
<td><p>Yes</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Message wrapping could be used as the DMARC mitigation action instead. In
|
||
that case, the original message is added as an attachment to the mailing
|
||
list message, but that could interfere with inbox searching, or mobile
|
||
clients.</p>
|
||
<p>On the other hand, replacing the From address might cause users to
|
||
accidentally reply to the entire list, when they only intended to reply to
|
||
the original sender.</p>
|
||
<p>Choose the option that best fits your community.</p>
|
||
</div>
|
||
</section>
|
||
<section id="id2">
|
||
<h4>Mailman 3<a class="headerlink" href="#id2" title="Link to this heading"></a></h4>
|
||
<p>In the DMARC Mitigations tab of the Settings page, configure the settings below</p>
|
||
<table class="docutils align-default">
|
||
<tbody>
|
||
<tr class="row-odd"><td><p><strong>Setting</strong></p></td>
|
||
<td><p><strong>Value</strong></p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><strong>DMARC mitigation action</strong></p></td>
|
||
<td><p>Replace From: with list address</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><strong>DMARC mitigate unconditionally</strong></p></td>
|
||
<td><p>No</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Message wrapping could be used as the DMARC mitigation action instead. In
|
||
that case, the original message is added as an attachment to the mailing
|
||
list message, but that could interfere with inbox searching, or mobile
|
||
clients.</p>
|
||
<p>On the other hand, replacing the From address might cause users to
|
||
accidentally reply to the entire list, when they only intended to reply to
|
||
the original sender.</p>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2018 - 2025, Sean Whalen and contributors.</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |