I18N: change default on smtp transport, to downconvert-when-needed
authorJeremy Harris <jgh146exb@wizmail.org>
Thu, 7 May 2020 13:11:49 +0000 (14:11 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Thu, 7 May 2020 13:55:47 +0000 (14:55 +0100)
doc/doc-docbook/spec.xfpt
doc/doc-txt/ChangeLog
src/src/transports/smtp.c
test/confs/4211
test/confs/4221
test/scripts/4200-International/4203
test/scripts/4200-International/4204
test/scripts/4200-International/4206

index 4069c29dbb5300d0f54e9773185b1dd51a65db72..af28f0cbace43efd8bf3e3cbd6c3cc2a09e2a112 100644 (file)
@@ -25672,7 +25672,7 @@ The &%tls_verify_certificates%& option must also be set.
 If both this option and &%tls_try_verify_hosts%& are unset
 operation is as if this option selected all hosts.
 
 If both this option and &%tls_try_verify_hosts%& are unset
 operation is as if this option selected all hosts.
 
-.option utf8_downconvert smtp integer&!! unset
+.option utf8_downconvert smtp integer&!! -1
 .cindex utf8 "address downconversion"
 .cindex i18n "utf8 address downconversion"
 If built with internationalization support,
 .cindex utf8 "address downconversion"
 .cindex i18n "utf8 address downconversion"
 If built with internationalization support,
@@ -25680,7 +25680,8 @@ this option controls conversion of UTF-8 in message envelope addresses
 to a-label form.
 If, after expansion, the value is 1, 0, or -1 then this value overrides
 any value previously set for the message.  Otherwise, any previously
 to a-label form.
 If, after expansion, the value is 1, 0, or -1 then this value overrides
 any value previously set for the message.  Otherwise, any previously
-set value is used.
+set value is used.  To permit use of a previous value,
+set this option to an empty string.
 For details on the values see section &<<SECTi18nMTA>>&.
 
 
 For details on the values see section &<<SECTi18nMTA>>&.
 
 
index 6109a14dd69433016ad56560fa90f54b79d4f2f4..3cd92b8168bfe78680c71ad3408e0832038bc1d4 100644 (file)
@@ -189,6 +189,16 @@ JH/41 Bug 2571: Fix SPA authenticator.  Running as a server, an offset supplied
       being used.  A malicious client could thus cause an out-of-bounds read and
       possibly gain authentication.  Fix by adding the check.
 
       being used.  A malicious client could thus cause an out-of-bounds read and
       possibly gain authentication.  Fix by adding the check.
 
+JH/42 Internationalisation: change the default for downconversion in the smtp
+      transport to be "if needed".  Previously it was "as previously set" for
+      the message, which usually meant "if needed" for message-submission but
+      "no" for everything else.  However, MTAs have been seen using SMTPUTF8
+      even when the envelope addresses did not need it, resulting in forwarding
+      failures to non-supporting MTAs.  A downconvert in such cases will be
+      a no-op on the addresses, merely dropping the use of SMTPUTF8 by the
+      transport.  The change does mean that addresses needing conversion will
+      be converted when previously a delivery failure would occur.
+
 
 Exim version 4.93
 -----------------
 
 Exim version 4.93
 -----------------
index 6795a0b2c3b484f3d38474779ce1c01a7912edca..8492a7f25b815be1546bc1ba39aa7adb793ebde4 100644 (file)
@@ -241,7 +241,7 @@ smtp_transport_options_block smtp_transport_option_defaults = {
   .tls_verify_cert_hostnames = US"*",
 #endif
 #ifdef SUPPORT_I18N
   .tls_verify_cert_hostnames = US"*",
 #endif
 #ifdef SUPPORT_I18N
-  .utf8_downconvert =          NULL,
+  .utf8_downconvert =          US"-1",
 #endif
 #ifndef DISABLE_DKIM
  .dkim =
 #endif
 #ifndef DISABLE_DKIM
  .dkim =
index d4aaa441b40075f6912635e5c05966fea33546e0..0448883142eeb138f2125a938f71ce5410f4320f 100644 (file)
@@ -114,9 +114,10 @@ local_delivery:
   return_path_add
 
 rmt_smtp:
   return_path_add
 
 rmt_smtp:
-  driver = smtp
+  driver =             smtp
   hosts_try_fastopen = :
   hosts_try_fastopen = :
-  hosts_require_tls = *
+  hosts_require_tls =  *
   tls_try_verify_hosts = :
   tls_try_verify_hosts = :
+  utf8_downconvert =   0
 
 # End
 
 # End
index d4aaa441b40075f6912635e5c05966fea33546e0..61205cde3e8e6f0f3a27c375fc671c8e61751feb 100644 (file)
@@ -114,9 +114,10 @@ local_delivery:
   return_path_add
 
 rmt_smtp:
   return_path_add
 
 rmt_smtp:
-  driver = smtp
+  driver =     smtp
   hosts_try_fastopen = :
   hosts_try_fastopen = :
-  hosts_require_tls = *
+  hosts_require_tls =  *
   tls_try_verify_hosts = :
   tls_try_verify_hosts = :
+  utf8_downconvert =   0
 
 # End
 
 # End
index 310cbd7ff5ab6b65aa9aff9d4cfd2bf44711720d..914ed917d8d6622a8b3949a2e907b4fdb006d532 100644 (file)
@@ -6,7 +6,7 @@ exim -DSERVER=server -DOPTION="" -bd -oX PORT_D
 ****
 #
 # forwarding fails when target does not support SMTPUTF8
 ****
 #
 # forwarding fails when target does not support SMTPUTF8
-exim -bs -odi
+exim -DSTRICT=0 -bs -odi
 EHLO client.ffail
 MAIL FROM: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> SMTPUTF8
 RCPT TO: <userz@test.ex>
 EHLO client.ffail
 MAIL FROM: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> SMTPUTF8
 RCPT TO: <userz@test.ex>
index 3063f5ac3a10b9bf17f7e498958304e6f4f11b08..f8efcc33bee82bdb20485c6bbf0e1eabcbeef6ee 100644 (file)
@@ -41,7 +41,7 @@ exim -DSERVER=server -DOPTION="" -bd -oX PORT_D
 ****
 #
 # Recipient verify callout, fail
 ****
 #
 # Recipient verify callout, fail
-exim -bs -odi -DCONTROL="verify=recipient/callout"
+exim -bs -odi -DCONTROL="verify=recipient/callout" -DSTRICT=0
 EHLO client.ffail
 MAIL FROM: <CALLER@spanish.PorquénopuedensimplementehablarenEspañol.local> SMTPUTF8
 RCPT TO: <userS@test.ex>
 EHLO client.ffail
 MAIL FROM: <CALLER@spanish.PorquénopuedensimplementehablarenEspañol.local> SMTPUTF8
 RCPT TO: <userS@test.ex>
@@ -49,7 +49,7 @@ QUIT
 ****
 #
 # Recipient+random verify callout, fail
 ****
 #
 # Recipient+random verify callout, fail
-exim -bs -odi -DCONTROL="verify=recipient/callout=random"
+exim -bs -odi -DCONTROL="verify=recipient/callout=random" -DSTRICT=0
 EHLO client.ffail
 MAIL FROM: <CALLER@vietnamese.TạisaohọkhôngthểchỉnóitiếngViệt.local> SMTPUTF8
 RCPT TO: <userT@test.ex>
 EHLO client.ffail
 MAIL FROM: <CALLER@vietnamese.TạisaohọkhôngthểchỉnóitiếngViệt.local> SMTPUTF8
 RCPT TO: <userT@test.ex>
index 4c558f40515e307137c2a28bf75ab114b5eccebd..658f2cb309f96332d61e2b6c751a6aec68f630b1 100644 (file)
@@ -39,14 +39,14 @@ exim -DSERVER=server -DNOTDAEMON -qqff
 exim -DSERVER=server -DOPTION="" -bd -oX PORT_D
 ****
 # sender verify callout, fail
 exim -DSERVER=server -DOPTION="" -bd -oX PORT_D
 ****
 # sender verify callout, fail
-exim -bs -odi -DCONTROL="verify=sender/callout"
+exim -bs -odi -DCONTROL="verify=sender/callout" -DSTRICT=0
 EHLO client.sfail
 MAIL FROM: <userA@test.ex> SMTPUTF8
 RCPT TO: <user.यष्टिमधु@test.ex>
 QUIT
 ****
 # sender+random verify callout, fail
 EHLO client.sfail
 MAIL FROM: <userA@test.ex> SMTPUTF8
 RCPT TO: <user.यष्टिमधु@test.ex>
 QUIT
 ****
 # sender+random verify callout, fail
-exim -bs -odi -DCONTROL="verify=sender/callout=random"
+exim -bs -odi -DCONTROL="verify=sender/callout=random" -DSTRICT=0
 EHLO client.sfail
 MAIL FROM: <userB.જેઠીમધ@test.ex> SMTPUTF8
 RCPT TO: <user.ქართული@test.ex>
 EHLO client.sfail
 MAIL FROM: <userB.જેઠીમધ@test.ex> SMTPUTF8
 RCPT TO: <user.ქართული@test.ex>