[ Standards & DMARCbis ]

Trace message changes through DKIM2’s proposed trust model

Follow an invented original and modified message through spec-09 recipes, chain checks and verification limits without claiming a real verified result.

By the EmailAuth research team · 6 min read

[ Key points ]

  • Recipes recreate earlier content from later message states.
  • Full verification covers historical instances and chain context, not just the newest signature.
  • Null body recipes and local acceptance must remain distinct from full verification.
On this page

Treat modification history as evidence, not permission

A mailing list may add a footer or revise a Subject field for a legitimate reason. A hostile intermediary can also change a message. The important question is not simply whether something changed, but whether the receiver can reconstruct the relevant history, verify the responsible domains and decide what that history means. DKIM2 proposes machinery for the first two tasks; it does not automatically answer the third.

This explanation is pinned to draft-ietf-dkim-dkim2-spec-09, dated 1 November 2026 and currently an active Internet-Draft. Its proposed verification states concern undeclared modifications and consistency of the delivery path. Section 14.1 explicitly separates those checks from the value of a message or the benignity of declared changes. A verified chain is not a blanket trust recommendation.

Build an original but clearly fictional path

Consider three invented systems: author.larch.example, list.fir.example and inbox.birch.example. The first creates a message whose body consists of two lines, “Agenda” and “Friday at noon.” The list appends a third line, “List footer,” without otherwise changing the body. Assume the domains, envelope addresses, clocks and keys would satisfy the relevant checks. These are stipulated teaching inputs, not a captured message or evidence that any signature verifies.

At origination, the proposed representation includes Message-Instance m=1 with the original header and body hashes and DKIM2-Signature i=1 referring to that instance. After the list's change, a second instance records the current hashes and the information needed to reconstruct the earlier form. The list adds its own signature with the appropriate sequence and instance reference. Hash values and signature bytes are intentionally not invented in this example.

Explain why recipes run backward

Sections 5 and 12.1 describe recipes for recreating earlier message content. In the fictional body case, reconstructing the original means retaining the first two current lines and excluding the appended footer. The recipe explains how to recover the old state from the new one; it is not merely an instruction saying “add a footer.” A real fixture would need byte-accurate content and the draft's precise encoding rules.

A header-change variant needs its own reconstruction evidence. If a list prefixes the Subject, the original value must be recoverable for the earlier header-hash check. Record the original field, modified field and recipe together so that a reviewer can determine whether the change was represented faithfully. Do not rely on a rendered mail-client screenshot, which can hide folding, encoding and duplicate-field details relevant to a verifier.

Verify more than the newest signature

Under section 13, full verification checks the earlier message instances reconstructed by applying later recipes in descending order, as well as the signature chain. Checking only the final displayed body and most recent signature is a different, narrower operation. The draft separately defines provisional verification for limited initial assessment; the two results should not share an unqualified green badge.

The receiver also needs delivery context. Section 14.4 compares the latest signed envelope information with the actual SMTP transaction, while earlier hops must satisfy the chain rules. Section 14.8 checks the relevant current and historical From fields against the appropriate signing identities. A content-only archive cannot establish all those conditions if it has lost the original envelope and acceptance-time evidence.

For the fictional path, the expected review sequence is therefore: inspect syntax and ordering, retain SMTP context, check timestamps, validate the chain and keys, verify signatures, reconstruct each relevant instance, compare hashes, and assess From authenticity. This is a proposed reasoning trace. It is not a claim that a particular software package executed those steps or returned PASS.

Keep null recipes and redaction visible

The draft permits a null body recipe to indicate that an earlier body cannot be reconstructed. It does not permit null recipes for header changes. That distinction matters for a gateway that removes confidential material: a reversible recipe could retain the very content the gateway meant to remove. A privacy review should examine the recipe payload, not just the final body visible to the recipient.

Core -09 section 13 says earlier body hashes below a null recipe cannot be checked and the message is not Fully Verified. Local policy may nevertheless accept it, for example under a suitable relationship. That is not equivalent to cryptographically restoring the missing evidence. The lab should report the unavailable historical-body check and the separate local acceptance decision rather than renaming the result full verification.

Do not confuse requests with enforceable trust

The separate CanModify -00 draft explores originator requests about modifications. It was published on 2 November as an individual Internet-Draft. Its treatment is local policy, and some benignity discussion remains explicitly unfinished. It should not be merged into core -09 as a universal deployed permission system.

This creates a practical distinction for operators. A recipe can support attribution, an originator request can express a preference, and a receiver can decide whether to accept the resulting message. None alone proves the modified message is safe. Reviewer notes should identify which of those questions an observed result actually answers, particularly when a product report uses the word “trusted” without defining it.

Retain the exact missing verification evidence

The exact commission is: Trace one original, modified and verified message through the version-pinned draft model. The original fictional trace supplies expected structure and checks, but no signed message, computed hash, compatible verifier output or actual verified result exists in this package. The commissioning evidence gate remains open rather than being closed by an illustration.

A future authorized experiment should preserve both message forms, reconstruction data, envelope metadata, key snapshots, software versions and complete verifier diagnostics. Include an undeclared-change control and a null-recipe variant. Technical and privacy specialists must review the interpretation and exposure before any real use. Production applicability, visual review and owner publication approval are also outstanding; no migration or universal trust claim is made here.

[ Takeaway ]

Reconstruction and attribution can establish change history without proving the change was benign.

[ By role ]

What this means for you

Choose your role for practical next steps.

Mailing-list operator

Account for each transformation

A footer and a Subject rewrite need different byte-level reconstruction evidence.

Next steps

  1. Retain original and modified synthetic fixtures.
  2. Map each change to an inverse recipe.
  3. Keep observed verification separate from expected structure.

Security reviewer

Separate attribution from acceptability

A correctly attributed change can still be unsafe or unwanted.

Next steps

  1. Inspect current and historical From checks.
  2. Review intermediary responsibility and local policy.
  3. Reject unqualified trusted-message claims.

Privacy owner

Inspect recipe payloads

Reconstruction data can preserve content removed from the visible message.

Next steps

  1. Use synthetic content for early tests.
  2. Review reversible redaction exposure.
  3. Define recipe storage, access and retention before execution.

[ FAQs ]

Frequently asked questions

What does the fictional footer example demonstrate?

It shows the expected structure of an original instance, a changed instance, inverse reconstruction data and a reviser signature. No hash or signature bytes were calculated, so it is not a verified message.

Why does the recipe remove the footer rather than add it?

The recipe runs backward to recreate the earlier state from the later one. In the stipulated three-line body, copying the first two lines reconstructs the original two-line form; real bytes and encoding still need testing.

Can a receiver check only the latest instance and call it fully verified?

No. Core -09 §13 requires the relevant historical instances and signature chain to pass. Its provisional assessment is narrower and must not be relabeled full verification.

Does a declared change automatically become trustworthy?

No. Section 14.1 says verification does not judge whether declared modifications are benign or whether the message is valuable. Attribution and a receiver’s trust decision remain separate.

Can a null recipe be used for an altered header?

Core -09 §12.1 allows a null recipe for earlier body state, not for header changes. A header-change fixture must preserve the required reconstruction information.

What happens to full verification after a null body recipe?

Earlier body hashes cannot be checked, so §13 says the message is not Fully Verified. A local policy can still accept it, but that does not restore the missing cryptographic evidence.

Does a saved message file contain every required input?

Not necessarily. Envelope sender/recipients, original SMTP acceptance time, key context and verifier version may be needed in addition to message bytes. A content-only archive may not reproduce the original evaluation.

Does CanModify guarantee that originator preferences are enforced?

No. The individual -00 proposal expresses requests and leaves handling to local policy. Its discussion is not evidence that all implementations enforce those preferences or that every permitted change is benign.

[ Sources ]

Sources

  1. Individual CanModify draft-00
  2. DKIM2 core draft-ietf-dkim-dkim2-spec-09

[ Glossary ]

Glossary

Reviser
A draft-defined actor that changes message content and records the relevant new instance and history.
Recipe
Proposed reconstruction data used to recreate earlier message headers or body from a later state.
Message-Instance
A proposed header field identifying a revision with hashes and, where needed, reconstruction information.
Null body recipe
A declaration that an earlier body cannot be recreated, limiting historical verification.
Provisional verification
The draft’s limited initial assessment, distinct from checking the full message history and chain.

Enterprise provenance

Why top financial institutions and governments retired their email security dashboards.

Traditional email authentication platforms sell you a dashboard and ask your engineers to do the labour. In high-stakes environments, manual oversight means delayed enforcement, configuration drift and unmonitored shadow domains.

EmailAuth is the agentic email provenance platform. Our agents enforce p=reject, keep third-party senders aligned and move your domains to full RFC 9989 compliance, the new DMARC standard,, with human-in-the-loop auditability.

Governments Large enterprises Tier-1 financial institutions

SaaS · Dedicated tenancy · Air-gapped on-prem · BYOK encryption

Knowledge Base