signer: MIME headers and Message-ID signed; a long header line logged (audit M6, M8)
Security audit 2026-10-17, M6 and M8 (nits), stage 6. M6: Content-Type, MIME-Version and Message-ID were not in h= (as in OpenDKIM's default list): a relay could change a MIME boundary or the type and the signature still verified. They are signed when present; Message-ID is not over-signed, since cleanup adds one a message lacks after the milters and an absent name in h= would refuse it. M8: a header line over smtp_line_length_limit (998) is broken by Postfix's smtp client after signing and the signature fails silently; only body lines were logged. longHeaderLine names the header, once per message, in the same words. Tests: TestSignLinesCoverTheMIMEHeadersAndLongHeaderLinesAreNamed; the h= expectations gain Message-ID; e2e dkim_shapes expects content-type: in h= (and the receiver's verification over it). Docs: security.md, architecture.md, guide; CHANGELOG. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -294,8 +294,10 @@ then OpenDKIM did, in a program of its own
|
||||
- **What is signed** — `relaxed/simple`, `rsa-sha256`, with
|
||||
`github.com/emersion/go-msgauth` v0.7.0 (`dkim`). `h=`: every header of
|
||||
the message whose name is in RFC 6376 § 5.4.1's list as OpenDKIM's
|
||||
`dkim_should_signhdrs[]` held it, and `Sender` and `List-Unsubscribe-Post`
|
||||
besides (`signHeaders`), each occurrence, in message order; then, once
|
||||
`dkim_should_signhdrs[]` held it, and `Sender`, `List-Unsubscribe-Post`,
|
||||
`Content-Type`, `MIME-Version` and `Message-ID` besides (`signHeaders`;
|
||||
`Message-ID` is not over-signed: cleanup adds one a message lacks after the
|
||||
milters), each occurrence, in message order; then, once
|
||||
more, each of `Subject`, `Date`, `To`, `Cc`, `Reply-To` and `Sender` the
|
||||
message has (`overSign` - only those present: Postfix's cleanup adds a
|
||||
missing `Date:` after the milters, out of their sight, and a name in `h=`
|
||||
|
||||
Reference in New Issue
Block a user