DKIM2 and DMARCbis Have Landed
https://stalw.art/blog/dkim2-dmarcbis/
StalwartLabs · 2 days ago
15 comments
https://stalw.art/blog/dkim2-dmarcbis/
StalwartLabs · 2 days ago
15 comments
meysamazad · 2 days ago
well done
you're among the first few who have done it:
https://github.com/mjl-/mox/issues/404#issuecomment-43627498...
jeroenhd · 9 hours ago
First time I'm reading about this, I'm glad there's progress in this area.
The JSON DSL for rewriting emails feels like a spammer/exploit vector waiting to happen. Some product is going to spam filter before applying reconstruction rules, or get tricked into applying reconstruction rules when it shouldn't, and spammers and scammer are going to abuse it.
Until either Google or Microsoft will adopt these standards, they'll remain effectively meaningless most likely. But even so, it's good to know people haven't given up on fixing email's spam problem entirely.
qurren · 9 hours ago
Aw hell. How many things do I have to set up just so that I can send e-mails from my own domain?
The effect of all this seems to be less "making e-mail secure" and more "making it so that only Google, Apple, and Microsoft can send e-mail successfully"
doubled112 · 9 hours ago
And sometimes if you do everything right, it still doesn’t work.
Recently I checked the IP against blacklists, waited a few months, did all of the other things, and then found out Microsoft bounces my entire VPS’s IP range. Appealing did not help.
They intermittently block Cloudflare email routing IPs too. All of these security measures and still it comes down to the IP address of your sender.
1over137 · 8 hours ago
Is it an el cheapo VPS?
doubled112 · 8 hours ago
Is Cloudflare a cheapo VPS?
It is a cheap VPS, but it would still be nice if there was a way to know (not assume) beforehand.
> 550 5.7.1 Unfortunately, messages from [IP ADDRESS] weren't sent. Please contact your Internet service provider since part of their network is on our block list (S3150).
> Your IP(s) qualify for conditional mitigation.
Still blocked. The system is working as expected.
jeffbee · 8 hours ago
I would simply like to point out that 550 at SMTP time is not a bounce.
doubled112 · 8 hours ago
You get an email bounce back with an error code in it. Is there some other definition I'm unaware of?
Wait, that is probably from the local mailer, and otherwise the sender may never know about the rejected messages.
b112 · 7 hours ago
5xx are bounces, a perm failure. 4xx error codes are temp (retry) errors.
jeffbee · 7 hours ago
Incorrect. A bounce is a delivery status notification generated by a mailer after it has already accepted a message for delivery. A 5xx permanent error is a refusal to accept the message in the first place.
TZubiri · 5 hours ago
Is this standarized terminology in some RFC like SMTP? Or is it presumably some well established folk lingo?
inigyou · 6 hours ago
Cloudflare is one of the shadiest hosts around, almost as bad as the big three clouds.
TZubiri · 5 hours ago
You can't have the cake and eat it too.
Either you use cheap infrastructure that attackers can buy by the bulk for sybil attacks.
Or you pay a reasonable price for a slice of an IP block that doesn't share its reputation with elcheapos.
doubled112 · 3 hours ago
No disagreement here. I had never planned to use it for email, but I was bored and I already had it when I got an idea.
braiamp · 9 hours ago
Eh, I read the article, and at most you only have to wait for your MTA to update to add the required headers and update your DNS records and you are golden. It still uses the same key you generated as far I'm aware.
brightball · 9 hours ago
DMARC isn't for sending email successfully, it's for preventing other people from impersonating your domain. Without it, there's nothing stopping anybody from sending an email saying it is from you@qurren.com. SPF tried. DKIM tried. Both of them had gaps.
When you use them together and have a DMARC policy that requires one of them or the other for successful delivery, it's the best current solution.
qurren · 8 hours ago
Except I think I've had 1:1 personal e-mails from my domain go into a legitimate recipient's spam filter just because I didn't have DMARC set up and their mail server was flagging that "DMARC not set up == spammy domain"
drdexebtjl · 8 hours ago
That is perfectly reasonable. Set it up correctly.
bombcar · 7 hours ago
It is so much easier to set these things up with a frontier AI to walk you through the Byzantine steps.
denkmoon · 4 hours ago
It takes an afternoon to set up DKIM and DMARC from scratch on a debian VPS. Yeah it's a little bit byzantine but it's not rocket science.
bombcar · 7 hours ago
Too many admins just had it set to “no valid DMARC? Spam” instead of the more proper “failed DMARC? spam”.
Which is subtly different.
TZubiri · 5 hours ago
Right, and when you don't configure DMARC successfully and the recipient requires DMARC, then you cannot send email successfully.
will4274 · 5 hours ago
Yeah. And when you don't configure your TLS certificate correctly, people can't connect to your webpage.
The anti-email authenticity standards gang has always smelled like the anti-TLS gang to me.
OneDeuxTriSeiGo · 9 hours ago
DKIM2 and DMARCbis are actually the opposite of this. They are long awaited fixes of brittle and often broken systems that are designed to now make providing secure email easier rather than harder.
They both have fairly clean migration paths and resolve a lot of the annoying edge cases that currently exist with authenticating and verifying email.
binkHN · 5 hours ago
Thanks for this, it made me actually read the posted content, but there's a lot of content to digest and a lot MTAs will have to implement.
AceJohnny2 · 9 hours ago
> Aw hell. How many things do I have to set up just so that I can send e-mails from my own domain?
... said every spammer.
I'm sorry for your pain, and I'm in the same boat.
But it's important to understand that any sufficiently large, distributed-agent system (like federated email), will see the rise of parasites that will pump resources and diminish the value of the system.
What we're seeing here is an "immune" response to those parasites. We all pay for it.
I think this is an important lesson for anyone designing a distributed-agent system [1]. How do you design it so as to keep the bad actors out, or at least so their impact is negligeable?
[1] imma make my own email system! With blackjack, and hookers! oh wait...
assimpleaspossi · 7 hours ago
>>parasites that will pump resources and diminish the value of the system.
Countries' legal systems really need to do something about them.
zbentley · 6 hours ago
I don’t think they can. Spam, like speeding on highways and drug sales, is such an asymmetric enforcement area that I have very limited confidence that legal enforcement would make a significant dent in the volume. It’s far too technically easy to anonymously, repeatedly break anti-spam laws. This is an area where consortium enforcement (like the big inbox providers pushing solutions like DKIM2) is probably the most effective.
Don’t get me wrong, there are tons of areas where countries’ legal systems have no excuse for not enforcing the law more stringently (e.g. flagrant corruption in multiple regulatory bodies’ failure to enforce investment/wire fraud). But spam is part of the other category—technically difficult enough to crack down on that legal action is a waste of time. There are ways to change that, but they’re all either more centralization-prone, worse for privacy/liberty, or extremely expensive.
inigyou · 6 hours ago
They keep finding that huge spam campaigns were run by one guy from his bedroom. I can't remember which specific spam campaign was recently caught, it might've been the phone spam about car insurance. It was one guy with a huge botnet.
In total they are a finite set, and even catching 5% of them will scare the rest.
zbentley · 3 hours ago
I interpret that the opposite way: if a huge spam campaign can be run by a guy in his bedroom, there’s no way that larger spam operators can be effectively killed by legal action. They’ll just employ different guys in different bedrooms. The same thing is true with phone phishing scams—they’re not individually hard to eradicate, but the combination of lucrativeness and rapid-rebootability means that legal crackdowns in the past have not been effective at scaring the rest out of business.
hinkley · 9 hours ago
This sort of Regulatory Capture is quite old in the software field. People were already noticing it in the 90's.
Making a spec that contains a venn diagram of most of the features each of the signatories to the specification have implemented themselves ends up pulling the ladder up behind them. Each non-academic committee member discovers they're already more than 75% of the way to having completed the spec and any junior members or amateurs have years of work to do in order to catch up to Now. If any upstarts threaten to get within striking distance of an implementation you can always convene the committee again and discuss version 2 of the spec.
Mobile devices tamped this down just a little bit but mostly they lowered the slope of the line a hair and changed where the focus was a bit.
lousken · 9 hours ago
Anyone migrated from exchange to stalwart? Curious about results
bigbuppo · 9 hours ago
Can someone distill this down to how it will be used by the big three email providers to make it impossible to use email except through them?
braiamp · 9 hours ago
If anything, this moves it towards anyone having more access to everything. For example, reject isn't going to be treated anymore as a bounce. Now, provider policies still can and would be BS, but the standard doesn't tell them to do it certain way.
TacticalCoder · 9 hours ago
> by the big three
Which big three?
Gmail has something like 1.8 billion users. iCloud mail around 1 billion.
Microsoft with 400 million users of its email is closer to Yahoo! Mail (225 million users) than to the big two.
AlotOfReading · 8 hours ago
User numbers aren't the only factor. Microsoft has a much larger presence in commercial email than Apple. I suspect an outbound email from a personal provider is far more likely to be destined for an outlook inbox than one on iCloud.
braiamp · 9 hours ago
Despite what everyone said, I'm excited specifically for DKIM2. As someone that had managed a mailing list, that one is probably the hardest thing to juggle around and DKIM2 layering seems to fix that issue neatly. I hope postfix has a guide proto.
dataflow · 9 hours ago
I really don't understand what the original DKIM was not sufficient. Can someone ELI5? If you can verify that a message (including headers, which DKIK can sign) was signed by the outgoing server, then why isn't that the end of the story? Who cares how or why it got forwarded, or whatever else?
brightball · 9 hours ago
There are a few gaps with DKIM.
1. You have to set it up on every sending server. It's easier today but it wasn't always
2. You have to periodically rotate each of the keys that you setup because they can be cracked/stolen. Soon as somebody steals your key, they can impersonate anyone sending email from your domain.
3. Receiving email servers have no way of knowing if a message they received without a DKIM signature is supposed to include a DKIM signature, so simply not including one creates a scenario where receiving mail servers have to guess if the message was really from you.
crote · 8 hours ago
2b. You have to publish the retired private keys, or else a recipient will retain undeniable proof of message authenticity.
Depending on your perspective, this can be either a feature or a bug.
bombcar · 7 hours ago
The fallout from this has barely begun to be felt. It’s more important than the hypothetical quantum crypto stuff imo.
dataflow · 8 hours ago
1. I can't say I buy this excuse, but okay.
2. Is this an actual problem that has arisen with a worrying frequency in the past, or just a hypothetical? And how is it different from someone stealing your SSH key or TLS certificate?
3. Isn't it obvious from previous emails you've received from the same server?
brightball · 5 hours ago
1. There are a lot of domains out there and all of the people who own them aren't necessarily technical enough to setup DKIM on their mail server. Ideally those people are using some type of service. SPF is much simpler in this regard.
2. This is a rather famous story about it happening.
https://www.wired.com/2012/10/dkim-vulnerability-widespread/
I have no idea how widespread the issue is today but I had to do some analysis on it when I worked for dmarcian ahead of the Anti-Phishing Working Group conference and we found that a significant percentage of email from known malicious IPs associated with reported phishing was passing DKIM. Key rotation removes the problem. Many services like ProtonMail and Sendgrid will set you up with 2 CNAME's for your DKIM keys so that they can rotate them for you automatically.
3. Domains send emails from multiple servers. Sometimes dedicated email servers, Google/Outlook, Sendgrid, email marketing tools, etc. A receiving system has no way to validate whether any of the tools sending email claiming to be from your domain are actually from your domain. The first time you look at a DMARC report for a domain that's been around for a while, you will typically see that 90% or more of the messages claiming to be from your domain weren't from you at all.
yasaheblasa · 8 hours ago
1&2 sound worse after this update as described.. I'm not really sure why we are still bothering with this when DNSSEC progress means DANE like setups could solve the original E2E S/MIME issues of payment and domain indicating expectation of what its email senders are required to have for S/MIME.
There are some aspects of (possibly positive) deniability by an individual that probably still remain with DKIM but they kind of remain anyway with domain anchored S/MIME.
tptacek · 3 hours ago
What DNSSEC progress?
bawolff · 5 hours ago
> Who cares how or why it got forwarded, or whatever else?
Because it broke enough niche usecases that lots of people didn't feel comfortable fully turning on dmarc in strict mode. Fixing that will hopefully spike adoption
winstonwinston · 4 hours ago
They want to allow forwarders (such as mailing lists) to modify signed messages all while keeping the original signed author email address. It is meant to replace ARC which is now deprecated.
You can now verify who changed what and when but it is still based on will and trust to accept what has been altered and therefore a security theatre.
It ‘solved’ a problem for a mailing list that insist on altering signed messages, even though they do not have to modify forwarded messages in my opinion and many lists do not.
stefan_lec · 9 hours ago
Sounds pretty cool! I wonder if it closes enough holes that we could finally stop using SPF at all?
peanut-walrus · 9 hours ago
Missed opportunity to get rid of SPF. What I want to my DMARC policy to say: if someone is sending you an email that claims to be from my domain and it's not signed by one of the keys I have published under my domain, you should reject it, regardless where it came from.
And on the receiving side, the policy is similarly simple: if I receive any unsigned or unaligned email, I will reject it.
Edit: to clarify, I want there to be an option where I specify my DMARC policy to explicitly tell well-configured receiving servers "ignore whatever I have configured as my SPF record, only look at the signatures". There will no doubt be a long tail of mail servers where I will still need an SPF record for them to accept my mail.
Edit2: Another feature that I feel is lacking is ability to give dkim selectors a scope - e.g. this key is only valid for these particular From addresses.
AceJohnny2 · 9 hours ago
I suspect SPF is used because it's cheaper than performing cryptographic checks for each email. A (cached) DNS lookup and IP check on a connection is comparatively cheaper.
justusthane · 7 hours ago
Isn’t that already what DMARC does though? For DMARC to pass you need DKIM _or_ SPF alignment, not both. It’s designed that way because there are scenarios where SPF _can’t_ pass (email forwarding, mailing lists). So a well-configured mail server should accept your email regardless of SPF if DKIM is properly configured.
Re: specific keys for specific usernames: I can appreciate that you wish DKIM allowed for this, and I could imagine it being handy, but that was never the problem DKIM set out to solve — DKIM and SPF are all about be domain.
I’m also not sure it’s a great idea — the sender identity should be under the control of the sender. If you control the domain @foo.com, you could use that ability to assert that an email came from Bob, even if Bob never sent it. Contrast that with Bob signing the email using his own private key.
reader9274 · 5 hours ago
> Isn’t that already what DMARC does though? For DMARC to pass you need DKIM _or_ SPF alignment, not both.
But now if SPF passes and is aligned, DMARC passes (it doesn't matter what DKIM's status is). OP here wants to complete skip the SPF check entirely.
toast0 · 4 hours ago
> Isn’t that already what DMARC does though? For DMARC to pass you need DKIM _or_ SPF alignment, not both.
GP wants require DKIM, so SPF alone is insufficient to send mail from their domains.
If everyone did dmarc, you could set SPF to -all. But there are servers that check SPF but not DMARC. You need to pass SPF for those, so you need a passable SPF... but then DMARC will pass with only SPF.
ericpauley · 6 hours ago
Best way to go about this is just blackhole SPF so it never passes, then set your DMARC alignment to strict. This approach prevents SPF from satisfying DMARC on the vast majority of providers [1].
[1] https://taejoong.github.io/files/publications/hamza-2026-dma...
peanut-walrus · 12 minutes ago
In theory, yes, in practice this will currently result in deliverability issues, both for servers which don't speak dmarc and for spam signals. I have tried this :)
If this mode of operation was an explicit choice, this would give me the option to have a fallback SPF record for legacy mail systems, but most up-to-date servers will use the more secure and (for my use case) operationally simpler verification.
inigyou · 6 hours ago
And I want mine to say: if it comes from my MX server it's legit, don't worry about the keys.
Because that's easy and keys and signing are hard.
TZubiri · 5 hours ago
>Missed opportunity to get rid of SPF.
> you should reject it, regardless where it came from.
Just don't use it yourself then?
"v=spf1 ?all"
drhagen · 8 hours ago
They spent a huge amount of complexity supporting mailing lists that claim mutated messages came FROM the original sender instead of FROM mailinglist@example.com. Is that use-case worth the additional effort?
bombcar · 7 hours ago
Yes. Mailing lists are incredibly useful and very hard to change.
edelbitter · 6 hours ago
Yes! Forwarding is the reason mail flow authentication does not work very well today. Fix the forwarding use cases (and by extension: mailing lists & out of office arrangements) and we can finally just tell all senders: "Your domains do not match, please use DMARC so we can automatically detect whether that is OK. No excuses, no exemptions, your use case can be dealt with using DMARC!"
edoceo · 7 hours ago
Maybe it's time to call it CMTP
toomim · 6 hours ago
Complex Message Transfer Protocol
edoceo · 4 hours ago
Correct.
Animats · 7 hours ago
Questions:
- How much infrastructure has to be fixed before this works, and in what order?
- Can you send mail from something that doesn't have a DNS entry? How does this affect the first hop from a desktop or mobile SMTP client?
- If an spam email came via SendGrid, Constant Spammer, or MailChump, are you going to be able to tell from the header signatures?
- If your headers are correct, are you guaranteed mail bounces for un-deliverable emails?
zbentley · 6 hours ago
> Can you send mail from something that doesn't have a DNS entry?
I hope not. Just like SSL, I think requiring a registrar+DNS server to vouch for a durable identity is an important barrier to abuse (and an important intervention point for violation reports).
edelbitter · 6 hours ago
> Can you send mail from something that doesn't have a DNS entry?
You never really could. Participating in public email exchange requires that the sender can resolve then "fully qualified" domain in your return address. Except after prior agreement or authentication, messages simply that fail this are not generally accepted.
> If your headers are correct, are you guaranteed mail bounces for un-deliverable emails?
Even better: You are more likely to see an immediate refusal instead of a delayed bounce, if the recipient exchange can during transmission already determine that they do not want message claiming to be originally transmitted from X to Y yet breaking their ability to check the signature added by X.
TZubiri · 5 hours ago
>You never really could.
You can, open a TCP socket on port 25 to $IP, and just start sending email headers.
You can also use local domains, no DNS.
You can also leave a file in the /var/mail directory with the filename of the user.
toast0 · 4 hours ago
> You never really could. Participating in public email exchange requires that the sender can resolve then "fully qualified" domain in your return address.
I thought you could send from <> for things that shouldn't bounce.
edelbitter · 2 hours ago
If the return path is null that just clarifies unattended notifications should not be returned. The mail is still considered to be sent by the transmitting system, and when no mailbox is specified, the implied envelope sender simply defers to the "postmaster@your-ehlo-fqdn.example" address. (Accepting mail at the "postmaster" mailbox is a mandatory part of SMTP, as is mentioning your fully qualified domain name in the "Hello" message when initiating the session. Public mail exchanges are free to, and often do, reject clients that submit anything other than resolvable domains there. Same with clients that use <> for applications other than those very limited "notification about specific quoted/referenced message" scenarios where the standards mandate <>.)
bawolff · 5 hours ago
> If an spam email came via SendGrid, Constant Spammer, or MailChump, are you going to be able to tell from the header signatures?
Couldn't you always tell this from headers? At the very least the recieved headers are going to be a give away.
SXX · 6 hours ago
What always bugged me about whole email its that we still dont have two best and most reasonable practice to fight about abuse:
1 - Ability to pay once to provider give your domain Good reputation score to new or old domain and IP and whatever. Like pay once, be a good citizen.
2 - Or just use Hashcash or any other PoW.
This would really solve a problem with 99.9% of spam and allow actually more decentrolized email system.
Fact that no matter what you do its impossible to setup own emaik server to just send few emails a year with 100% guaranteed delivery is just beyond me.
edelbitter · 6 hours ago
In a way, the "let the money decide who is a good citizen" already works. Just not in our favor: Most of the spam I receive is not from some rando using an IP I know nothing about. Its from providers that keep making good money with their current anti-abuse.. strategy. As much as I would like, I cannot refuse all mail from certain providers, because some of their customers are "important" and non-abusive. But I get the good and the bad all laundered together¹.
¹) Some do allow recipients to distinguish, e.g. Sendgrid add an X-Entity-ID header which is a stable 1:1 or <small-number>:1 map between short ascii identifiers and customers. So if you store that mapping, you can reject the usual "From: <admin@bigcorp.example> but not sent using the account associated with bigcorp.example". (The way they easily could, if they cared.)
bawolff · 5 hours ago
> Or just use Hashcash or any other PoW.
People love the idea of this, but i don't think it really makes sense.
How high do you set the PoW to? I dont think there is any middle ground that would actually deter attacks but not deter legit users.
comex · 4 hours ago
I wonder how this post was composed. It's full of LLM-isms, but is also pretty informative and not too fluffy - basically, higher-quality than I'm used to seeing from LLM blog posts, especially at this length. Perhaps it was composed based on a detailed human outline? Or perhaps, could this be the power of Fable?
flowerthoughts · 1 hours ago
Getting rid of ARC would be so nice, but of course this just means I need to add DKIM2 and need ARC for backwards compatibility.