It turns out that Exim secretly requires there to be no spaces here.
Or, more specifically, it compares the header names in the message
against the list entries between the colons without stripping spaces, so
none of them will match.
{CONF_dkim_keys_dir/$value/active/$dkim_selector.priv}:>)
dkim_canon = relaxed
dkim_strict = true
{CONF_dkim_keys_dir/$value/active/$dkim_selector.priv}:>)
dkim_canon = relaxed
dkim_strict = true
- dkim_sign_headers = CONF_dkim_headers : \
+ dkim_sign_headers = CONF_dkim_headers:\
X-CONF_header_token-DKIM-Key-Publication
headers_add = \
${if DKIM_SIGN_P \
X-CONF_header_token-DKIM-Key-Publication
headers_add = \
${if DKIM_SIGN_P \
-DEFCONF(dkim_headers, m4_dnl
-References : In-Reply-To : Subject : To : Date : Message-ID : m4_dnl
-From : Sender : Reply-To : Cc : m4_dnl
-Resent-Date : Resent-From : Resent-Sender : Resent-To : Resent-Cc : m4_dnl
-Resent-Message-ID : m4_dnl
-Content-Transfer-Encoding : Content-Type : MIME-Version : m4_dnl
-Content-ID : Content-Description : m4_dnl
-List-Id : List-Help : List-Unsubscribe : List-Subscribe : m4_dnl
-List-Post : List-Owner : List-Archive m4_dnl
-)
+## Surprise! Internal whitespace isn't allowed here.
+DEFCONF(dkim_headers,m4_dnl
+References:In-Reply-To:Subject:To:Date:Message-ID:m4_dnl
+From:Sender:Reply-To:Cc:m4_dnl
+Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:m4_dnl
+Resent-Message-ID:m4_dnl
+Content-Transfer-Encoding:Content-Type:MIME-Version:m4_dnl
+Content-ID:Content-Description:m4_dnl
+List-Id:List-Help:List-Unsubscribe:List-Subscribe:m4_dnl
+List-Post:List-Owner:List-Archive)
## TLS certificate list.
DEFCONF(certlist,
## TLS certificate list.
DEFCONF(certlist,