Suped

How to configure Mailman with DMARC and handle Gmail deliverability issues?

Published 26 Apr 2025
Updated 9 Aug 2026
12 min read
Summarize with
Mailman DMARC configuration and Gmail deliverability thumbnail
Updated on 9 Aug 2026: We updated this guide for current Mailman controls, Gmail's indirect-mail guidance, ARC, and DMARC enforcement without pct.
Configure Mailman for DMARC by making the list domain the authenticated visible sender when message changes break the author's authentication. That means using Mailman's From rewrite option, signing the final outbound list message with DKIM, publishing SPF and DMARC for the list domain, and testing real list traffic at Gmail before tightening policy. ARC can preserve the incoming authentication assessment when the original From must remain.
The short version is this: Mailman works with DMARC when the final message gives Gmail trustworthy evidence for the identity it displays. Suped's DMARC monitoring can separate passing list traffic from sources that still fail and show whether receivers apply quarantine or reject handling.

Direct answer

The safest Mailman setup for Gmail-heavy lists is to rewrite the Header From to the list address, DKIM-sign the message after Mailman has made all subject, footer, and header changes, and keep the list domain's DNS clean. For most discussion lists, start with Munge From instead of Wrap Message because replies stay more natural and recipients see a normal message instead of an attached message wrapper.
  1. Mailman: set DMARC mitigation to Munge From, then choose unconditional rewriting or targeted dmarc_addresses patterns based on test results.
  2. Outbound MTA: sign after Mailman has finished altering the message, not before the list footer or subject tag gets added.
  3. DNS: publish SPF, DKIM, and DMARC for the list domain or list subdomain that appears in Header From.
  4. Gmail: test with real subscribers, because authenticated list mail can still enter spam with poor reputation or high complaint rates.
  5. Reporting: track aggregate reports by source IP, list domain, DKIM selector, and receiver so Gmail problems do not hide inside total pass rates.
The default starting point
Use Munge From first. It replaces the author address in Header From with the list address, then keeps the original author visible in the display name and Reply-To or Cc, depending on reply settings. Use Wrap Message only when subscribers accept an attached original message and the list's content changes make regular DKIM survival unrealistic.

Need

Action

Tradeoff

Normal list mail
Munge From
Balanced behavior
Strict author identity
Wrap Message
Awkward replies
Repeated Gmail failures
Target or rewrite all
More From changes
No list changes
Preserve From
Authentication is fragile
Pick the Mailman action based on the failure mode, not on preference alone.
Flowchart showing Mailman rewriting and signing list mail before Gmail delivery
Flowchart showing Mailman rewriting and signing list mail before Gmail delivery

Why Mailman breaks DMARC

DMARC checks whether the domain in Header From has a matching authenticated result through SPF or DKIM. A mailing list breaks that model easily. The list receives a message from the original author, changes headers or body content, then sends the changed message through the list server. SPF now points at the list server, not the original sender's mail system. DKIM often fails because the list changed the signed content.
That is why a list message can look legitimate to people but fail a normal DMARC evaluation. The original author did not send the final message to the Gmail subscriber. Mailman did. If Header From still names the author's domain, no matching authenticated domain remains after a broken DKIM signature. Gmail treats mailing lists as indirect mail and can consider ARC and List-ID, but those signals need correct configuration. A Mailman users thread shows the same pattern: list mail that looks ordinary can still run into Gmail delivery failures after list handling.
Without rewriting
  1. Header From: still shows the original author's domain.
  2. SPF: passes for the list server only.
  3. DKIM: fails when list changes alter signed content.
  4. DMARC: fails when no matching authenticated domain remains.
With rewriting
  1. Header From: uses the list address or list subdomain.
  2. SPF: can pass for the list's envelope domain.
  3. DKIM: passes when the final message is signed.
  4. DMARC: passes because the visible sender is now the list.
A common Gmail failure patterntext
Authentication-Results: mx.google.com; spf=pass smtp.mailfrom=lists.example.net; dkim=fail header.d=author.example; dmarc=fail header.from=author.example

Mailman settings that matter

The exact labels differ between Mailman 2.1 and Mailman 3, but the intent is the same. The list should take ownership of the visible sender identity before delivery when it rewrites From. The outbound mail system should then authenticate that final message as the list domain.
Mailman 3 target settingstext
dmarc_mitigate_action: munge_from dmarc_mitigate_unconditionally: True reply_goes_to_list: no_munging list address: list@l.example.com
Current Mailman 3 releases also support dmarc_addresses, a list of addresses or regular expressions that receive mitigation regardless of the author's published DMARC policy. Use patterns such as ^.*@gmail\.com$ and ^.*@googlemail\.com$ with dmarc_mitigate_unconditionally set to False when tests show a sender-specific problem. Use unconditional mitigation when consistent From behavior matters more than preserving every author's address.
Mailman 2.1 target settingstext
dmarc_moderation_action: Munge From dmarc_quarantine_moderation_action: Yes from_is_list: Munge From, when needed for all list mail anonymous_list: No, unless the list must hide authors
After rewriting, sign with a DKIM selector for the list domain. If Mailman adds a footer after DKIM signing, the signature fails. The DKIM signer must sit after Mailman in the outbound path, or Mailman must avoid changes that break the author's original signature.
DNS records for a list subdomaindns
l.example.com. IN TXT "v=spf1 ip4:192.0.2.10 -all" s1._domainkey.l.example.com. IN TXT "v=DKIM1; k=rsa; p=..." _dmarc.l.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:d@ex.co"
Do not damage replies
Header rewriting can break user expectations if Reply-To gets stripped or forced to the list. Keep replies predictable: announce the change to list owners, preserve the poster when the list is discussion-based, and only force replies back to the list when that is the list's known behavior.
If DNS access is slow or split across teams, Hosted DMARC helps stage policy changes without repeated TXT record edits. Suped's hosted setup keeps policy, reporting, and change history together for this list workflow.

Gmail delivery checks

Gmail treats mailing-list messages as indirect mail, so Google's direct-mail DMARC alignment requirement does not apply in the same way. That does not make authentication optional. Gmail evaluates the available SPF, DKIM, ARC, List-ID, reputation, complaint, volume, and engagement signals. Rewriting From and signing as the list domain gives Gmail a straightforward authenticated identity when the original DKIM signature does not survive.
The common Gmail trap
Rewriting only when the author's domain publishes quarantine or reject can miss Gmail sender failures. For a Gmail-heavy list, use current Mailman 3 dmarc_addresses patterns for affected authors or test unconditional Munge From so every final message has the list domain in Header From.

Symptom

Likely cause

Fix

DMARC fail
Old From
Munge From
DKIM fail
Late message change
Sign last
Spam folder
Low trust
Check traffic quality
550 5.7.26
Authentication failure
Inspect headers and mitigate
Use the Gmail symptom to choose the next check.
Send a real post through the list to a Gmail mailbox, then inspect the delivered headers. With Munge From, look for DMARC and DKIM passes for the list domain plus SPF for the list envelope sender. With a preserved author From, inspect ARC-Authentication-Results and the ARC chain as well. If the message lands in spam despite valid authentication, check stale subscribers, complaints, sudden volume jumps, and misleading message elements.

Email tester

Send a real email to this address. Suped shows a results button when the test is ready.

?/43tests passed
The message headers matter more than the admin setting name. If Gmail reports DMARC failure against the author's domain and no valid ARC chain exists, Mailman has left little usable authentication evidence. If Gmail reports DKIM failure for the list domain, the final content changed after signing or the public key record does not match.
GNU Mailman 3 Postorius settings for DMARC mitigation
GNU Mailman 3 Postorius settings for DMARC mitigation
When the list passes authentication but Gmail still filters it, work through general Gmail deliverability causes as a separate problem. Authentication helps Gmail evaluate the message; it does not erase reputation history or user-level spam signals.

ARC and Gmail list requirements

Google recommends ARC headers for forwarding services, including mailing lists, and a List-ID header for each list. ARC records the authentication assessment made before Mailman changes the message, then seals the result after list processing. Gmail can use that chain when normal SPF forwarding and modified DKIM no longer support the original author's identity.
  1. ARC: validate incoming authentication before modification and seal the final message at the end of the pipeline.
  2. List-ID: keep a stable, human-readable identifier on every list message.
  3. Infrastructure: use matching forward and reverse DNS for the sending IP and transmit mail with TLS.
  4. Traffic quality: keep Gmail-reported spam rates below 0.3% and avoid sending to stale members.
  5. Subscriptions: retain unsubscribe headers and verify one-click handling for messages covered by Gmail's subscription rules.
Mailman 3 has global ARC support, but it is disabled by default. Enable it after setting the authentication service identifier, signing domain, selector, and private key. Add trusted upstream identifiers only when an earlier managed service performs the authentication checks. The incoming checker must run before message changes and the ARC signer must run after them.
Mailman 3 ARC configuration outlineini
[ARC] enabled: yes authserv_id: lists.example.com trusted_authserv_ids: mx.example.com domain: lists.example.com selector: arc privkey: /etc/mailman3/arc.key
ARC supplements list authentication
ARC does not guarantee inbox placement and does not repair an invalid list-domain DKIM signature. Keep DKIM signing after Mailman changes, then use ARC when preserving the original authentication assessment adds useful evidence for indirect mail.

Microsoft 365 rewrite or Mailman

If you already run distribution lists in Microsoft 365, enabling header rewrite at the gateway can be a reasonable short-term fix. It avoids a migration and reduces Gmail breakage when the gateway can rewrite consistently. The downside is control. A gateway rewrite is blunt, and list owners often cannot tune behavior per list.
Microsoft 365 rewrite
  1. Speed: works best when the team wants a fast fix for existing lists.
  2. Control: depends on tenant and gateway capabilities.
  3. Risk: can surprise list owners if reply behavior changes globally.
Mailman
  1. Control: gives list-specific DMARC behavior and owner workflows.
  2. Operations: needs patching, backups, queue monitoring, and access controls.
  3. Fit: works well when mailing lists are core infrastructure.
For security review, Mailman is mature open-source software, but that does not automatically pass an audit. Document patch cadence, admin roles, operating system hardening, SMTP relay permissions, archive exposure, bounce handling, logging, backups, and incident response. A Mailman delivery note is useful because it shows how operational list guidance often includes sender behavior, not just software setup.
Migration decision
Do not migrate only because DMARC exists. Migrate when list ownership, moderation, archives, compliance controls, or per-list DMARC behavior justify the operational work. If the only problem is Gmail rejection, gateway rewrite plus monitoring can be enough.

Monitoring and rollout

Roll out Mailman DMARC changes in stages. Start with a high-volume list, a low-volume list, and a list with many Gmail subscribers. Confirm that rewritten messages pass DMARC, that preserved messages carry valid ARC when enabled, that replies still work, and that moderators understand what subscribers will see in the From line.
Issue steps to fix dialog showing the issue overview, tailored fix steps, and verification action
Issue steps to fix dialog showing the issue overview, tailored fix steps, and verification action
Suped supports this workflow by grouping aggregate reports around the list domain, source IP, selector, and receiver. Its issue alerts and fix steps help list operators trace a failure spike to Mailman, the outbound MTA, or DNS. Suped also keeps hosted DMARC, hosted SPF, hosted MTA-STS, and blocklist (blacklist) monitoring in the same operational view.
Before tightening policy, run the list domain through a DMARC checker and then run a broader domain health check. The first check verifies the policy record. The second catches nearby problems such as missing DKIM records, SPF lookup failures, and weak domain authentication coverage.
?

What's your domain score?

Deep-scan SPF, DKIM & DMARC records for email deliverability and security issues.

Once reports show stable passes, replace the list domain's policy record in stages. Keep p=none while discovering legitimate sources, then publish p=quarantine after coverage and exception handling are clean. Publish p=reject only when Mailman posts, archives, aliases, and moderation notifications pass under real traffic. RFC 9989 makes pct historic, so do not use pct to phase enforcement. Publish only one DMARC record at the name.
Publish one DMARC stage at a timedns
Stage 1: _dmarc.l.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:d@ex.co" Stage 2: _dmarc.l.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:d@ex.co" Stage 3: _dmarc.l.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:d@ex.co"

Views from the trenches

Best practices
Rewrite Header From for Gmail-heavy lists, then sign the final message after list changes.
Keep Reply-To behavior explicit so list replies do not shift without owner approval.
Track Gmail results separately because total DMARC pass rates can hide receiver-specific pain.
Common pitfalls
Rewriting only reject-policy senders misses Gmail filtering tied to list handling.
Signing before Mailman adds footers breaks DKIM and leaves the list looking unauthenticated.
Treating Mailman migration as a DMARC-only fix ignores patching, queues, archives, and access.
Expert tips
Use a list subdomain so Mailman policy, DKIM selectors, and reports stay cleanly separated.
Test real Gmail mailboxes before enforcement because header simulators miss reputation signals.
Keep Munge From as the default, then reserve Wrap Message for lists with strict author domains.
Marketer from Email Geeks says header rewriting feels imperfect, but it is often the practical way to keep list mail moving.
2023-08-05 - Email Geeks
Marketer from Email Geeks says gateway rewriting can work, but the change deserves preparation because list owners notice reply changes quickly.
2023-08-05 - Email Geeks

Practical path

The practical answer is to make Mailman the sender for list traffic when its changes break the author's authentication. Use Munge From, sign after list changes, publish clean DNS for the list domain, and test Gmail with real subscribers before moving policy beyond monitoring. Add ARC and retain List-ID when the original authentication assessment needs to survive list handling.
Suped's DMARC platform connects the daily work in this rollout: aggregate report analysis, SPF and DKIM checks, hosted DMARC, hosted SPF, hosted MTA-STS, issue alerts, blocklist and blacklist monitoring, and source-specific fix steps.
If you already have Microsoft 365 rewrite working, keep it while you measure. If mailing lists are core infrastructure, Mailman gives list-level control. An authenticated SMTP relay also works when it accepts the list domain as the authorized From identity. Relays that require verified sender domains often reject messages when Mailman preserves arbitrary author addresses.

Frequently asked questions

DMARC monitoring

Start monitoring your DMARC reports today

Suped DMARC platform dashboard
What you'll get with Suped
Real-time DMARC report monitoring and analysis
Automated alerts for authentication failures
Clear recommendations to improve email deliverability
Protection against phishing and domain spoofing