Ahoj,

Dňa 23 Jul 2025 09:57:00 +0200 John Levine via Exim-users
<[email protected]> napísal:

> I was tracing down a strange bug in which mail sent to a role account
> in an IETF working group was forwarded to the recipient's Gmail
> account and appeared with a big ugly security warning saying invalid
> DKIM signature.  I found that the sender's mail system adds a DKIM
> signature that oversigns the Resent-xxx headers (i.e., it asserts
> that they don't exist.)  When the IETF forwards the mail, it
> correctly adds Resent-xxx headers, which breaks the signature and
> causes the warning.

> ...

> Does Exim do that by default?  If so, please don't.

AFAIK yes ;-) While i do not meet problems with Resent-* headers, the
same situation is with List-* headers, which i meet already (not caused
by my server, but noticed in my ML experiments).

The docs says, that when dkim_sign_headers is not specified, **the
header names listed in RFC4871 will be used, whether or not each header
is present in the message**, that includes (from RFC, i didn't check
code):

+ From, Sender, Reply-To, Subject, Date, Message-ID, To, Cc,
  MIME-Version
+ Content-Type, Content-Transfer-Encoding, Content-ID,
  Content-Description
+ Resent-Date, Resent-From, Resent-Sender, Resent-To, Resent-Cc,
  Resent-Message-ID
+ In-Reply-To, References
+ List-Id, List-Help, List-Unsubscribe, List-Subscribe, List-Post,
  List-Owner, List-Archive

Beside the fact, that RFC4871 is obsoleted by RFC6376 (which removed
whole that list), exim implements it wrongly, as the RFC4871 mentions
**SHOULD be included in the signature, if they are present in the
message** (only From is required to sign always), but exim signs them
(by default) all, despite if they are in message or not.

exim has two macros for that, one is _DKIM_SIGN_HEADERS, which contains
that list from RFC4871 and sign all existing headers from it and
over-sign all missing headers from it (no prefix). Second macro is
_DKIM_OVERSIGN_HEADERS, which contains the same headers list, but all
of them are unconditionally over-signed, despite if they are in message
or not (prefixed by +).

IMO, to be strict RFC4871 compliant, the default headers list have to
include From headers without prefix and all others headers with = prefix
(wrapped):

_DKIM_RFC4871_HEADERS=
    From:=Sender:=Reply-To:=Subject:=Date:=Message-ID:=To:=Cc:=MIME-Version:
    =Content-Type:=Content-Transfer-Encoding:=Content-ID:=Content-Description:
    =In-Reply-To:=References:
    
=Resent-Date:=Resent-From:=Resent-Sender:=Resent-To:=Resent-Cc:=Resent-Message-ID:
    
=List-Id:=List-Help:=List-Unsubscribe:=List-Subscribe:=List-Post:=List-Owner:=List-Archive

But that can be too little (nowadays) and i would use = prefix only for
Resent-* and List-* headers only in default list and with the same
logic for second macro, over-sign all headers in list, but leave = for
Resent-* and List-* headers. In other words, i would suggest (just in
case that my English is too bad) to change these macros (and defaults)
to (wrapped):

_DKIM_SIGN_HEADERS=
    From:Sender:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version:
    Content-Type:Content-Transfer-Encoding:Content-ID:Content-Description:
    In-Reply-To:References:
    
=Resent-Date:=Resent-From:=Resent-Sender:=Resent-To:=Resent-Cc:=Resent-Message-ID:
    
=List-Id:=List-Help:=List-Unsubscribe:=List-Subscribe:=List-Post:=List-Owner:=List-Archive

_DKIM_OVERSIGN_HEADERS=
    +From:+Sender:+Reply-To:+Subject:+Date:+Message-ID:+To:+Cc:+MIME-Version:
    +Content-Type:+Content-Transfer-Encoding:+Content-ID:+Content-Description:
    +In-Reply-To:+References:
    
=Resent-Date:=Resent-From:=Resent-Sender:=Resent-To:=Resent-Cc:=Resent-Message-ID:
    
=List-Id:=List-Help:=List-Unsubscribe:=List-Subscribe:=List-Post:=List-Owner:=List-Archive

Beside of list changes, i would suggest to add into docs, that
admins are encouraged to inspect and customize list of signed headers
(or so).

regards

-- 
Slavko
https://www.slavino.sk

-- 
## subscription configuration (requires account):
##   https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
##   [email protected]
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to