← RFC Reference

RFC 6377: DKIM and Mailing Lists

Mailing Lists & Header Fields Published September 2011 Informational (BCP 167)
ELI5: When you send a DKIM-signed email to a mailing list, the list software often changes your message — adding footers, modifying Subject, rewriting the From address. These changes break your DKIM signature like opening a tamper-evident seal. RFC 6377 documents this problem and advises both list operators and senders on how to minimize the damage.

Why This Exists

DKIM (RFC 6376) signs email headers and body content with a cryptographic hash. Any modification after signing invalidates the signature. Mailing lists, by design, modify messages in transit. This creates a fundamental tension:

When DMARC entered the picture (requiring DKIM or SPF alignment), this tension became a deliverability crisis. Messages sent to mailing lists by domains with p=reject DMARC policies started bouncing for all list subscribers. RFC 6377 was published to document the problem and recommend mitigation strategies.

How It Works

What Mailing Lists Do to Messages

A typical mailing list manager (Mailman, Sympa, LISTSERV, Google Groups) may perform any combination of:

Modification Breaks DKIM? Details
Add List-* headers Only if h= covers them List-Unsubscribe, List-Id, List-Post, etc.
Add/modify Subject prefix Yes, if Subject is signed e.g., [list-name] Original subject
Add footer to body Yes Appends unsubscribe instructions or disclaimers
Rewrite From header Yes Changes From to the list address (DMARC mitigation)
Change Reply-To Only if Reply-To is signed Sets Reply-To to the list address
Change envelope sender No (DKIM signs headers, not envelope) Changes MAIL FROM for bounce handling
MIME restructuring Yes Wrapping in multipart to add text footer

The Signature Verification Flow

; Step 1: Author sends DKIM-signed message to list
From: alice@example.com
To: dev-list@lists.example.org
Subject: Proposed API change
DKIM-Signature: d=example.com; h=from:to:subject; ...

; Step 2: List software modifies the message
From: alice@example.com            ← unchanged (or rewritten)
To: dev-list@lists.example.org
Subject: [dev] Proposed API change  ← modified: prefix added
List-Id: <dev-list.lists.example.org>  ← added
DKIM-Signature: d=example.com; h=from:to:subject; ...

; Original body + appended footer
The body text here...

--
To unsubscribe, visit https://lists.example.org/unsub  ← added

; Step 3: Recipient's server verifies DKIM
; Result: FAIL (Subject and body were modified after signing)

Recommended Practices for List Operators

RFC 6377 recommends that mailing lists minimize modifications to preserve DKIM signatures:

  1. Do not modify the Subject header. Avoid prepending [list-name]. Use the List-Id header instead — mail clients can filter on it.
  2. Do not add body footers. Use MIME encapsulation if footer content is required, or add the footer as a separate MIME part rather than appending to the existing body.
  3. Add a new DKIM signature. The list should sign the modified message with its own DKIM key (d=lists.example.org). This does not repair the original signature, but it provides a valid signature from the list domain.
  4. Consider From-rewriting for DMARC. When the original sender's domain publishes p=reject, rewrite the From header to the list domain and put the original sender in Reply-To. This is widely implemented as "From munging."

Recommended Practices for Senders

  1. Use relaxed canonicalization. Sign with c=relaxed/relaxed rather than c=simple/simple. Relaxed canonicalization tolerates minor whitespace changes that some list software introduces.
  2. Sign only essential headers. The h= tag should cover headers you care about (From, Subject, Date, To, Message-ID) but not headers that lists commonly add (List-Id, List-Unsubscribe).
  3. Use l= body length tag cautiously. The l= tag limits how much of the body is signed, so appended footers don't break the signature. However, this has security implications — an attacker could append malicious content below the signed portion.

Key Technical Details

The DMARC Complication

RFC 6377 predates DMARC (RFC 7489), but the problems it describes became far more severe once DMARC was deployed. With DMARC p=reject:

; Author's domain publishes strict DMARC
_dmarc.example.com TXT "v=DMARC1; p=reject; ..."

; Message goes through mailing list, DKIM breaks
; Recipient's server checks DMARC:
;   - SPF: FAIL (envelope sender is list, not example.com)
;   - DKIM: FAIL (signature broken by list modifications)
;   - DMARC: FAIL → REJECT
; Result: message bounces for all list subscribers

This is why ARC (RFC 8617) was developed — to preserve authentication results across intermediaries like mailing lists.

ARC as the Modern Solution

The Authenticated Received Chain (ARC) protocol lets intermediaries like mailing lists record the original authentication results before modifying the message. The recipient's server can then use the ARC chain to recover the original DKIM/SPF pass, even after the list has broken the original signature.

From-Rewriting Strategies

The most common DMARC mitigation for mailing lists is From-rewriting:

; Original message
From: Alice Smith <alice@strict-dmarc.com>

; After list From-rewriting
From: Alice Smith via Dev List <dev-list@lists.example.org>
Reply-To: Alice Smith <alice@strict-dmarc.com>

This preserves the original sender's identity in the display text and Reply-To while making the From domain match the list's DKIM signature.

Common Mistakes

Deliverability Impact

Related RFCs