Hello Edmund,

Il 2026-10-27 14:07 Edmund Lodewijks ha scritto:
I was wondering what could be done to help make DKIM2 succeed in a better way than
when Ed25519 was introduced for DKIM, which never really took off

Ed25519 is one case and ARC is the more worrying one, because ARC is close to DKIM1 for all that it develops across hops, and it is architecturally simpler than DKIM2. After seven years it has on the order of ten thousand signing domains against roughly nine and a half million DKIM1 key records, as reported in draft-adams-arc-experiment-conclusion. It fell short because it was awkward to implement, as the resulting software shows, and because the complexity did not pay for itself. The Ed25519 figures I posted here earlier say something more specific than “transitions do not happen”. In 61815 DKIM signatures received at a domain I operate, Ed25519 accounts for 40, which is 0.065 per cent. Over the same period rsa-sha1 fell from 7.09 per cent in 2024 to 0.36 per cent in 2026, so operators did migrate, and they migrated to rsa-sha256, now at 99.46 per cent. The change that cost a configuration edit happened. The change that cost a new key type and new code did not. These figures deserve to be looked at with some realism.

My concern is that deploying a new authentication mechanism involves more than support
in signing and receiving MTAs.

You are better placed than most to answer the part that decides it, because you have implemented a DKIM2 milter in C yourself. Every email authentication protocol that reached broad deployment was implementable in a filter that is stateless per message and streaming. The filter sees the envelope at the SMTP callbacks, then the header fields, then the body, once and in order. Adding signed header fields that describe what it has just seen fits that exactly. If I do not want to rewrite half the world’s code, I am forced to make two filters talk to each other, one ahead of a modifier and one behind it, two instances that have to share storage across the content pipeline. The plan published in the interoperability repository on 14 October does precisely that for unmodified Mailman: the inbound milter writes the message as it arrived into a snapshot directory shared with the outbound one, keyed by a token it inserts into the message, and the outbound milter diffs against that snapshot. Signing and verification stay stateless, it is recipe generation that needs the shared storage. You will know better than I do what that costs in a milter and that answer is worth more here than any outreach plan.

I am thinking particularly of DNS-record validation, signature verification, clear reporting of unsupported algorithms or formats, and interoperability test cases.

On the third of those I have written here before, so one line will do: a tool can report only what the specification names, so an algorithm a verifier cannot evaluate needs a defined outcome of its own rather than local policy.

The harder gap is predictive. A tool can tell you whether the recipes in a message reconstruct, because the format and the procedure are specified. It cannot tell an administrator whether their own setup will produce a usable recipe, because the limits that decide it are not in the specification and arguably could not be. In the current implementations a recipe is capped at 1000 literal lines, and past that cap the signing side emits a null recipe. A removed attachment becomes literal lines and at 76 characters a thousand base64 lines carry some 57000 octets, so an attachment over roughly 56 kilobytes passes that cap on its own.

Bron’s test site has more in it than this thread suggests: 66 negative vectors across five verifiers, a signer gate of 25 fixtures and a corpus stage that posts real messages through Mailman and Sympa and checks that each list’s recipe rebuilds the signed instance under every verifier, across charsets and transfer encodings. The real-message results currently stop at -06.

Regards,
Vittorio Moccia
_______________________________________________
Ietf-dkim mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to