Ahoj,

Dňa Wed, 8 Mar 2023 11:24:54 +0100 Alessandro Vesely via mailop
<mailop@mailop.org> napísal:

> I slightly lean toward the hypothesis of our understanding the idea
> behind that RFC wrongly, because, ...  

IMO we can discuss it in more details, but as i see how many people are
interested (and contributed) in this topic, we can (should) discuss it
out of list. If you are interested to continue, do not afraid contact
me directly (end we will see, if my English is enough for that). ;-)

> It was already discussed that the URL (presumably pointing to the
> same domain) must include an opaque token by which the target can
> check authenticity.

IMO purpose is (can be) to one (not always end user) can notice its
change before it post request to it... My MUAs doesn't support
one-click unsubscribes (or at least i am not aware of it), but
AFAIK there are others which do it. Signing that header, its value
becomes more trusted, with failed DKIM it becomes untrusted.

But that are only my thinking about it...

> I'm thinking to add a third header field list.  From OpenDKIM, I have 
> requiredhdrs, which are the header fields to be signed /if they
> exist/.  Then I have oversignhdrs, which are the ones to
> unconditionally append to h=.  The third list would contain the
> fields to be signed once even if they don't exist. I'd put Subject:,
> To: and Cc: in the third list, for example.
> 
> Do you have such settings?

Of course, from start of my DKIM signing ;-)

I initially get inspiration from rspamd's default settings [1], which
use similar groups of headers. Exim allows me to define three types (per
header base):

+ sign if exists, oversign if not (Header)
+ always oversign (+Header)
+ sign if exists (=Header)

By using exim's expansions capability one can simple achieve fourth
possibility:

+ oversign if exists (${if def:h_Header:}{+Header}})

IMO that is the easier part. The hard part is to decide which header add
to which group and why/when. But for now i use one common list, which
differs on per message basis only by which headers are included, for
all domains. No more heuristics is applied.

From my notes (i have not as nice formatting in config, and i use
slightly different list now), but one can get idea (IIRC it was
rspamd's table converted to exim syntax) -- the colon is list item
separator:

    +From:+Reply-To:+Subject:+To:+Cc\
    ${if def:h_Sender: {:+Sender}}\
    ${if def:h_Date: {:+Date}}\
    ${if def:h_Message-Id: {:+Message-Id}}\
    ${if def:h_Mime-Version: {:+Mime-Version}}\
    ${if def:h_Content-Description: {:+Content-Description}}\
    ${if def:h_Content-Id: {:+Content-Id}}\
    ${if def:h_Content-Type: {:+Content-Type}}\
    ${if def:h_Content-Type-Encoding: {:+Content-Type-Encoding}}\
    ${if def:h_In-Reply-To: {:+In-Reply-To}}\
    ${if def:h_References: {:+References}}\
    ${if def:h_Openpgp: {:+Openpgp}}\
    ${if def:h_Autocrypt: {:+Autocrypt}}\
    
:=Resent-To:=Resent-Cc:=Resent-Date:=Resent-From:=Resent-Sender:=Resent-Message-Id\
    
:=List-Archive:=List-Id:=List-Help:=List-Owner:=List-Unsubscribe:=List-Unsubscribe-Post\
    :=List-Subscribe:=List-Post

This can be divided into three parts:

+ first line is always oversing list, doesn't matter if presented in
  message or not
+ last three lines are sign, but only if presented in message
+ rest is oversign, if presented in message

BTW i revisited my idea about best practices. It can be as simple, as
list of headers, with three basic states -- always (over)sing, never
sign and "consider carefully". The last state then will be elaborated
more detailed, with description when and why it can be changed on
transport, to even inexperienced admins can understand/choose what is
appropriate. Eg with three column with cases -- when to sign, when to
oversign and when to not sign.

[1] https://rspamd.com/doc/modules/dkim_signing.html

> The change to multipart can only happen using the deprecated l=.  It
> allows to completely replace the body appearance.  As you don't use
> l=, the only added protection is against an improbable collision
> between the original bh= and the hash of the modified body.

Did you consider change only Content-Type, to fool clients to open body
in other application with same (yet unknown) vulnerability? My MUA
doesn't work with DKIM by any way, but others can, and failed DKIM can
contribute to score, that message can be rejected -- that is my idea.

You silently ignored my note, that i consider that header as
"constructing core of message", thus valid candidate to sign it.

Anyway, you described cases, where signing this header is not needed
as DKIM will fail anyway, and i agree. As i consider performance impact
to sign one more header as negligible, thus it must not matter. But
perhaps i ask wrong question, i will try another -- what is (can be)
wrong when it is signed?

regards

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

Attachment: pgpNvZjtbY0c7.pgp
Description: Digitálny podpis OpenPGP

_______________________________________________
mailop mailing list
mailop@mailop.org
https://list.mailop.org/listinfo/mailop

Reply via email to