DKIM: ensure that dkim_domain elements are lowercased before use. Bug 2371
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 5 Feb 2019 23:19:00 +0000 (23:19 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Tue, 5 Feb 2019 23:19:00 +0000 (23:19 +0000)
doc/doc-docbook/spec.xfpt
doc/doc-txt/ChangeLog
src/src/dkim.c

index 6b4f8dace0e781016be5dc290adfabe0dc8d4ee2..cea0bbc4426c5d1821a7d3f1a4213f7149bf0f0e 100644 (file)
@@ -39431,7 +39431,7 @@ senders).
 .cindex "DKIM" "signing"
 
 For signing to be usable you must have published a DKIM record in DNS.
 .cindex "DKIM" "signing"
 
 For signing to be usable you must have published a DKIM record in DNS.
-Note that RFC 8301 says:
+Note that RFC 8301 (which does not cover EC keys) says:
 .code
 rsa-sha1 MUST NOT be used for signing or verifying.
 
 .code
 rsa-sha1 MUST NOT be used for signing or verifying.
 
@@ -39451,7 +39451,11 @@ These options take (expandable) strings as arguments.
 .option dkim_domain smtp string list&!! unset
 The domain(s) you want to sign with.
 After expansion, this can be a list.
 .option dkim_domain smtp string list&!! unset
 The domain(s) you want to sign with.
 After expansion, this can be a list.
-Each element in turn is put into the &%$dkim_domain%& expansion variable
+Each element in turn,
+.new
+lowercased,
+.wen
+is put into the &%$dkim_domain%& expansion variable
 while expanding the remaining signing options.
 If it is empty after expansion, DKIM signing is not done,
 and no error will result even if &%dkim_strict%& is set.
 while expanding the remaining signing options.
 If it is empty after expansion, DKIM signing is not done,
 and no error will result even if &%dkim_strict%& is set.
@@ -39656,6 +39660,14 @@ dkim_verify_signers = $sender_address_domain:$dkim_signers
 If a domain or identity is listed several times in the (expanded) value of
 &%dkim_verify_signers%&, the ACL is only called once for that domain or identity.
 
 If a domain or identity is listed several times in the (expanded) value of
 &%dkim_verify_signers%&, the ACL is only called once for that domain or identity.
 
+.new
+Note that if the option is set using untrustworthy data
+(such as the From: header)
+care should be taken to force lowercase for domains
+and for the domain part if identities.
+The default setting can be regarded as trustworthy in this respect.
+.wen
+
 If multiple signatures match a domain (or identity), the ACL is called once
 for each matching signature.
 
 If multiple signatures match a domain (or identity), the ACL is called once
 for each matching signature.
 
index 800cfaf573ee9d268289bc79c00f5885ef08c137..d5984e7b2b52b6711c90783a33b8d364cd9ff17c 100644 (file)
@@ -20,6 +20,8 @@ JH/03 Debug output for ACL now gives the config file name and line number for
 
 JH/04 The default received_header_text now uses the RFC 8314 tls cipher clause.
 
 
 JH/04 The default received_header_text now uses the RFC 8314 tls cipher clause.
 
+JH/05 DKIM: ensure that dkim_domain elements are lowercased before use.
+
 
 Exim version 4.92
 -----------------
 
 Exim version 4.92
 -----------------
index a0becd45be9d64ab1a6b51c81e919a27c75d0229..96d7eba81468ce89b3fee2c2413ff4c780cb5fb4 100644 (file)
@@ -620,6 +620,7 @@ if (dkim_domain)
   /* Only sign once for each domain, no matter how often it
   appears in the expanded list. */
 
   /* Only sign once for each domain, no matter how often it
   appears in the expanded list. */
 
+  dkim_signing_domain = string_copylc(dkim_signing_domain);
   if (match_isinlist(dkim_signing_domain, CUSS &seen_doms,
       0, NULL, NULL, MCL_STRING, TRUE, NULL) == OK)
     continue;
   if (match_isinlist(dkim_signing_domain, CUSS &seen_doms,
       0, NULL, NULL, MCL_STRING, TRUE, NULL) == OK)
     continue;