I will respond to your comments regarding RCPT TO now as I believe there is some misunderstanding about what I am proposing. Unfortunately, due to other commitments, I will need to defer the rest of my response until tomorrow evening or Monday (NZDT).

On 25/10/2025 4:20 pm, Bron Gondwana wrote:
> *Technical:*  if you sign multiple RCPT-TO values without specifying
them in the content which is passed on to later hops then:
a) the later hops can't see why the email came to them via this path, which I contend they have a right to know.  If you're included in an alias expansion, you should know what the alias is!  (I have a solution to this which would be OK except that)

This is a valid concern as it would remove any ambiguity over which list (if multiple were present in To/Cc) resulted in the final e-mail. It does raise the question of should we leak the list address if it's BCCd, since your desire to include this would also expose that information.

I'd be interested in your solution, if not for b).

b) it doesn't allow splitting the RCPT-TO; you'd have to sign on-the-fly and split and re-sign if the destination server restricts the number of recipients per message.  And any currently fully transparent secondary MX would have to then either sign, or forward all recipients as a single transaction to the same destination.  I could imagine an MX which separates incoming email into multiple different subsystems despite the addresses being at the same domain, and this system would not handle that at all.

This is where I believe there may be some misunderstanding. This would not be a cumulative value that needs to be recalculated. A unique signature would be created for each recipient when the e-mail was initially signed or exploded, just as it would be if it were placed in the headers.

SMTP would take care of splitting the delivery up as it does now, without having to recalculate these values.

If the upstream hosts supports DKIM2, it would pass this information along with RCPT TO.

RCPT TO:<[email protected]> DKIM2RCPT=i=1,s=selector,h=DOM...ygIM=
RCPT TO:<[email protected]> DKIM2RCPT=i=1,s=selector,h=WRm...uO+c=

If the upstream host doesn't support DKIM2, then messages would need to be split and the precalculated value inserted as a header. This can be done in a 'dumb' way, by simply adding it before the already created e-mail headers. It also doesn't effect the SMTP session much, if at all. Assuming the server has a list of recipients it intends to send to a particular host, lack of DKIM2 support would likely just cause it to switch to connection reuse and send individually.

Sending more than one of these headers in a message would be possible if the server were to parse the e-mail headers and determine which BCCd recipients were subject to special handling, but it would be up to the implementer to decide if that was worthwhile given the need would diminish with more widespread DKIM2 adoption.
*Practicality: *Even if the technical issues above were all solved, this requires changes to a LOT more software.  Every piece of software which handles mail needs to be aware of this, rather than only the edges between systems with separate ownership or domains of trust.

All this, just to protect against exposing information which is either already present in the To/Cc headers, or is explicit to the single destination if it's a BCC.

Assuming my comment above hasn't addressed these concerns, then we may need to agree to disagree on the relative difficulty of each approach.

Using RCPT TO is a linear approach that touches isolated parts of the delivery process to a minimal extent. If we leave change tracking aside for now, it requires the DKIM2 filter to be invoked only once.

Creating a signature for each recipient, however, requires one of three approaches:

1/ The SMTP server splits messages before signing and invokes the DKIM2 signer once for each recipient (worst case, assuming all are BCCd, are being routed to different upstream servers, or a minimalist implementation).

- Computationally inefficient, but the safest approach.
- Likely to result in premature expansion, increasing disk and network utilisation. - Requires code changes support e-mail parsing, e-mail splitting and if optimised to reduce resource usage, editing e-mail headers during delivery.
- No crypto optimisation.

2/ Invoke the DKIM2 filter once and preserve only the active DKIM2-Signatures.

- Requires the SMTP server to be able to parse e-mail headers.
- Requires the SMTP server to edit the message on the fly to remove headers which aren't applicable, or otherwise remove and reinsert them at the appropriate juncture. - Significantly elevates the risk of data leakage if a filter believes the SMTP server it is signing on behalf of is DKIM2-compatible and will remove any additional headers it inserts. - Offers limited room for optimisation due to lack of parity between crypto implementations.

3/ Split e-mails within the DKIM2 filter.

- Requires both the DKIM filter protocol and SMTP servers to be altered to allow message splitting and injection - a significant change in mail flow.

I'm sure there won't be any disagreement that method 3 isn't practical.

Regards,
R. Latimer
Inveigle.net

_______________________________________________
Ietf-dkim mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to