[plug] Mail domain auth (was: Re: Plug in the Pub?)
James Henstridge
james at jamesh.id.au
Thu Oct 23 23:55:23 AWST 2025
On Thu, 23 Oct 2025 at 11:50, mccabedj via plug <plug at plug.org.au> wrote:
>
> I don't see an issue with publishing the mail headers (attached) here. The most private things in the message were already published to this list.
I did make some changes to the mailman config during the upgrade, but
they would not have been activated for a message from gmail.com.
The mention of authentication refers to a system called DMARC, which
is intended to provide assurance that emails originate from where they
say they do. A message is considered "DMARC aligned" if one of the
following is true:
1. It was sent by a server approved by the sending domain, or
2. It has a valid DKIM signature (i.e. a cryptographic signature on a
hash of the message body and a selection of headers).
In general, mail forwarded by a traditional mailing list will fail
both of these: it fails (1) because it is being relayed by the PLUG
server, and it fails (2) because it has added "[plug]" to the subject
line and added a footer to the body which breaks the signature.
If a sending domain is using DMARC, it can pick one of three policies:
1. reject: receiving servers should reject messages that fail alignment
2. quarantine: receiving servers should treat alignment failure as possible spam
3. none: don't do anything special for messages failing alignment.
The first two policies are a problem, so that's where the new
mitigations kick in. For these messages, the "From:" header will be
set to the list address and the "Reply-To:" header will be set to the
original from address. Now the DMARC policy of the original sender is
irrelevant since the sender is plug.org.au.
It also means we can re-sign the message on its way out so it becomes
a DMARC aligned plug.org.au message.
Email from you and Harry trigger these mitigations because the sending
domains have quarantine or reject policies set:
$ host -t TXT _dmarc.proton.me
_dmarc.proton.me descriptive text "v=DMARC1; p=quarantine; fo=1;
aspf=s; adkim=s;"
$ host -t TXT _dmarc.decisions-and-designs.com.au
_dmarc.decisions-and-designs.com.au descriptive text "v=DMARC1;
p=reject; sp=none; rf=afrf; pct=100; ri=86400"
While gmail messages get the traditional behaviour because they have a
"none" policy:
$ host -t TXT _dmarc.gmail.com
_dmarc.gmail.com descriptive text "v=DMARC1; p=none; sp=quarantine;
rua=mailto:mailauth-reports at google.com"
I guess Proton is treating it as p=quarantine even though Google has
not asked it to.
We could configure Mailman to do the "From:" header munging for all
email, which would solve this.
I didn't make that change because I wanted a minimally invasive fix
for quarantine/reject policies. But perhaps the email landscape has
changed enough that it would be the right decision now.
James.
More information about the plug
mailing list