[Ietf-dkim] Re: New I-D: A Deployment Profile for DKIM2 via Milter Interface

Vittorio <v.moccia@itb.it> Wed, 15 April 2026 10:51 UTC

Return-Path: <v.moccia@itb.it>
X-Original-To: ietf-dkim@mail2.ietf.org
Delivered-To: ietf-dkim@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 21AFBDCAAF7C for <ietf-dkim@mail2.ietf.org>; Wed, 15 Apr 2026 03:51:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1776250263; bh=reAURR5EA/sYrBWnGRo/69kkZuGhq88C0JHW+7IgYrA=; h=Date:From:To:Subject:Reply-To:In-Reply-To:References; b=ZYxGukn9clFIEWMTRb12A4oeUzTq+NglIhWQoSrFa4Vi12zDyApVUVhXgQ1J1cZPV BGYXcwRc73hrlhvbrLAn0S9k54TybK+NYnYOKA70W8FkWklBYg6ICxX1ojxccyZyO0 nUWU6TWeOaV9lxeTCJYv9Xv/ivGwGxSjt+Iew7Gc=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=itb.it
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5KmBcfE-miUV for <ietf-dkim@mail2.ietf.org>; Wed, 15 Apr 2026 03:51:02 -0700 (PDT)
Received: from dns.itb.it (dns.itb.it [5.134.126.114]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 27832DCAAE53 for <ietf-dkim@ietf.org>; Wed, 15 Apr 2026 03:49:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=itb.it; s=default; t=1776250192; bh=uSciUFez6krVmjN1Ldo8pA7CMiJp9CtjHC1EJ8lPmRA=; h=Date:From:To:Subject:Reply-To:In-Reply-To:References:From; b=g6nD5xIzMNuBafvwoCNu8dxUA+T1wT0rpz/Xxb41CTRtQUBhUW7UufWyDSNcqqIwY NYEMyFGpHJMYdonFP+IsJIoPYOD3Li35yzN1sgOLAbXci2yqzsCa2m3kDdjhVT8Ppx X/s9ARbi8T6wS90IASbdxAAq6X4xkyWHDhfZLc/A=
Received: from mail.itb.it (localhost [127.0.0.1]) by dns.itb.it (8.18.1/8.18.1/Debian-6) with ESMTP id 63FAnqpe3423112 for <ietf-dkim@ietf.org>; Wed, 15 Apr 2026 12:49:52 +0200
MIME-Version: 1.0
Date: Wed, 15 Apr 2026 12:49:52 +0200
From: Vittorio <v.moccia@itb.it>
To: Ietf Dkim <ietf-dkim@ietf.org>
Mail-Reply-To: v.moccia@itb.it
In-Reply-To: <b4bf2c35-9ee6-4818-96c8-75c93c07eccc@app.fastmail.com>
References: <f57b6ebedadedc5f6dbdf07e2de5e824@itb.it> <CAL0qLwa9=WkyFF4QmscaG5p93pZso7g7oq5yp1zW=-t1sN9jCA@mail.gmail.com> <7b41024e-8155-4289-8150-54dc4dff1a87@inveigle.net> <CAL0qLwYHXd9b+JTOEtJMnJ4UUEhzh631+stPzpPOepW0vpGv0A@mail.gmail.com> <79ca14fb9642f590200989ecf86e12c5@itb.it> <CAL0qLwawxwJwkhsNtoC_ZYQ9g6w2L+Sy+qLC_eB0XqWP1CCQSA@mail.gmail.com> <f6dedd54b45376041ddbcc6df82aa705@itb.it> <b4bf2c35-9ee6-4818-96c8-75c93c07eccc@app.fastmail.com>
Message-ID: <5890109744bfe45e73b2eed2d70f34dd@itb.it>
X-Sender: v.moccia@itb.it
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
ARC-Authentication-Results: i=1; dns.itb.it; spf=none; dmarc=none; dkim=none; arc=none
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=itb.it; s=arc1; bh=uSciUFez6krVmjN1Ldo8pA7CMiJp9CtjHC1EJ8lPmRA=; h=from:message-id:date:subject:to; b=NBb/ZpEIUI/dovRStE2Rj+WEiqMusoT3z2G7+GVRo1TevrbrbCgdelH1usIoFn19SoANx+sq6IqO5Em0HUHRyl9phECahflisW2q35o+FD9uqR40NiuGbSDfV6fFJ5RrIcHMCicxz9FHm66dzgndDBdFGPbs1drvwmWopnVA+7yWWilOS85IYFZE/lm5b2WZGOhrWB06PcC7yjm7VQTVW6ezL5lKHd/xRTBTwANm+KQdbdzvIPmxtAfMAkDNurSI+jlsJilJvLAlpPYO9sMlK2AtAQqepflqv7Et7NnOMOqP2QfjoT3dX9ClHzXD/zROekRj20NBi76DJSxu9iolVw==
ARC-Seal: i=1; a=rsa-sha256; s=arc1; d=itb.it; cv=none; b=STid3J5xPWIKzA6EPE/UipJbGPyU773ohgBxCnPhJ6+O6PQ4LbActMcZTWAgYTLfnbE54Tz1p1tNdRxon0hzLFp8vY/lu1smQhlKYOxu1zTjnYyQAfZDhsoJx1K9Uz/BC+rQj7WkrKryKmgXAAvXr1bldD2sUmN7iV57T5tNE2MsfPRGv9Xo21iL6cFhqD7BmNcfyeNZpGJwK0HGbrMFKBkYFGDE6H8zOVikUO2W1cb+/qZYmkrb1mrF/j8KDwOp8pX29aiG/qBbniZB9I6t8iZnhfn43wEnPwyP6kHWCELwBGYMYBsMcgiaMEUetX3zncfuCqROVYycK07l6SB4hA==
X-Signed: DarkARC v0.3
Message-ID-Hash: MIN3S3WMRKVWPZV3ZJWQHF6TCS2G5SQW
X-Message-ID-Hash: MIN3S3WMRKVWPZV3ZJWQHF6TCS2G5SQW
X-MailFrom: v.moccia@itb.it
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-ietf-dkim.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Reply-To: v.moccia@itb.it
Subject: [Ietf-dkim] Re: New I-D: A Deployment Profile for DKIM2 via Milter Interface
List-Id: IETF DKIM List <ietf-dkim.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf-dkim/nW6UwHTAqjdXs0UCgL4U1mjeTaY>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf-dkim>
List-Help: <mailto:ietf-dkim-request@ietf.org?subject=help>
List-Owner: <mailto:ietf-dkim-owner@ietf.org>
List-Post: <mailto:ietf-dkim@ietf.org>
List-Subscribe: <mailto:ietf-dkim-join@ietf.org>
List-Unsubscribe: <mailto:ietf-dkim-leave@ietf.org>

Bron,

> Correct - SOMETHING has to be able to calculate the difference between 
> the old and
> new body if you're going to do body recipes. My "take a copy on the way 
> in, compare
> on the way out" approach is the dumbest thing that could possibly work; 
> it's great
> for demos.

Agreed, and this is precisely the architectural concern documented in 
Section 4.3. The question is not whether a demo works but whether the 
mechanism scales to production deployments where the modifying component 
and the signing component are separate systems - security gateways, DLP 
engines, antivirus systems - with no shared state and no common code 
base.

> You'll also note that my mailman and sympa patches do the calculation 
> inside
> the software

This moves the requirement from the milter to the MLM core. It does not 
eliminate it. Every MLM that wants to participate in DKIM2-extended body 
accountability must be patched. The closed source software - Exchange, 
Notes, commercial security gateways - cannot be patched by anyone except 
the vendor. This is a deployment timeline constraint, not an engineering 
complexity one.

> I would have been more sympathetic to your argument even a year ago, 
> but with a
> good spec, even the existing agentic software builders are bloody good, 
> and
> they're only going to get better.

The hackathon produced three confirmed interop failures between 
independent implementations of the same spec - implementations that were 
partly AI-generated, as documented in your own hackathon report of 14 
March 2026. A spec with ambiguous ordering rules, invalid JSON schemas 
and inconsistent limits produces interop failures regardless of the 
quality of the implementation tools. Agentic builders can reduce the 
cost of writing code - they cannot reduce the runtime cost of an O(n·m) 
architecture or expand the 32KB header buffers of the legacy servers 
that form the backbone of enterprise and government email. 
Interoperability is a property of the installed base, not of the newest 
open-source patches.

> Your proposal doesn't do that, and the people dealing with large 
> volumes of incoming
> mail want attribution

DKIM2-core does attribution. Every hop signs with its own domain. The 
bh= value changes when the body is modified and the signing domain at 
the modifying hop is identified in the chain. DKIM2-Mod declares header 
modifications explicitly. What moves the needle on attribution is the 
chain of custody - knowing that the message passed through identifiable 
hands with cryptographic proof. Body recipes do not change the trust 
decision - they document modifications that the chain of custody has 
already attributed to a specific signing domain. As documented in 
Section 7.1, if the receiver does not trust the intermediary, no recipe 
makes the content safe. If the receiver does trust the intermediary, the 
chain of custody is sufficient.

A broader point on interoperability: the requirement to patch MLMs, 
security gateways and antivirus systems to generate body recipes is 
itself an interoperability constraint. Interoperability is not only a 
property of the wire format, it's a property of the entire delivery 
chain. A protocol that requires coordinated modifications across 
components that have independent development cycles, proprietary 
codebases and different deployment timelines imposes a deployment 
barrier that is architecturally equivalent to a core MTA modification. 
The null recipe is not a safety valve: as documented in Section 4.5, 
systematic null production at precisely the nodes most likely to modify 
message bodies undermines the accountability guarantee that body recipes 
are designed to provide.

Regards
Vittorio Moccia