summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/doc-txt/ChangeLog3
-rw-r--r--src/src/routers/redirect.c11
-rw-r--r--test/confs/42015
-rw-r--r--test/log/42076
-rw-r--r--test/scripts/4200-International/420715
-rw-r--r--test/stdout/420712
6 files changed, 46 insertions, 6 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index d672ee720..0b8e51658 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -120,6 +120,9 @@ JH/23 Fix memory leak during multi-message connections using STARTTLS under
JH/24 Bug 2242: Fix exim_dbmbuild to permit directoryless filenames.
+JH/25 Fix utf8_downconvert propagation through a redirect router. Previously it
+ was not propagated.
+
Exim version 4.90
-----------------
diff --git a/src/src/routers/redirect.c b/src/src/routers/redirect.c
index b69ba535f..944fb6743 100644
--- a/src/src/routers/redirect.c
+++ b/src/src/routers/redirect.c
@@ -465,8 +465,9 @@ while (generated)
}
#ifdef SUPPORT_I18N
- next->prop.utf8_msg = string_is_utf8(next->address)
- || (sender_address && string_is_utf8(sender_address));
+ if (!next->prop.utf8_msg)
+ next->prop.utf8_msg = string_is_utf8(next->address)
+ || (sender_address && string_is_utf8(sender_address));
#endif
DEBUG(D_route)
@@ -567,9 +568,9 @@ addr_prop.remove_headers = NULL;
addr_prop.srs_sender = NULL;
#endif
#ifdef SUPPORT_I18N
-addr_prop.utf8_msg = FALSE; /*XXX should we not copy this from the parent? */
-addr_prop.utf8_downcvt = FALSE;
-addr_prop.utf8_downcvt_maybe = FALSE;
+addr_prop.utf8_msg = addr->prop.utf8_msg;
+addr_prop.utf8_downcvt = addr->prop.utf8_downcvt;
+addr_prop.utf8_downcvt_maybe = addr->prop.utf8_downcvt_maybe;
#endif
diff --git a/test/confs/4201 b/test/confs/4201
index e12e13828..9242eb063 100644
--- a/test/confs/4201
+++ b/test/confs/4201
@@ -93,6 +93,11 @@ bounces:
data = DIR/test-mail/$local_part
file_transport = local_delivery
+redir:
+ driver = redirect
+ local_parts = ^z
+ data = ${substr_1:$local_part}@$domain
+
rmt:
driver = manualroute
domains = +local_domains
diff --git a/test/log/4207 b/test/log/4207
index 797a2b909..e39c0f5fb 100644
--- a/test/log/4207
+++ b/test/log/4207
@@ -1,11 +1,17 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com U=CALLER P=utf8local-esmtp S=sss for user.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex
1999-03-02 09:44:33 10HmaX-0005vi-00 => xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex <user.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex> F=<xn--ihqwcrb4cv8a8dqg056pqjye@hebrew.xn--4dbcagdahymbxekheh6e0a7fei0b.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaY-0005vi-00"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaZ-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com U=CALLER P=utf8local-esmtp S=sss for zuser.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex
+1999-03-02 09:44:33 10HmaZ-0005vi-00 => xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex <zuser.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex> F=<xn--ihqwcrb4cv8a8dqg056pqjye@hebrew.xn--4dbcagdahymbxekheh6e0a7fei0b.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbA-0005vi-00"
+1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
******** SERVER ********
1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
1999-03-02 09:44:33 10HmaY-0005vi-00 <= xn--ihqwcrb4cv8a8dqg056pqjye@hebrew.xn--4dbcagdahymbxekheh6e0a7fei0b.com H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmaX-0005vi-00@the.local.host.name for xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex
+1999-03-02 09:44:33 10HmbA-0005vi-00 <= xn--ihqwcrb4cv8a8dqg056pqjye@hebrew.xn--4dbcagdahymbxekheh6e0a7fei0b.com H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmaZ-0005vi-00@the.local.host.name for xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex
1999-03-02 09:44:33 Start queue run: pid=pppp -qqff
1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: <xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex> R=localuser
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: <xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@test.ex> R=localuser
+1999-03-02 09:44:33 10HmbA-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp -qqff
diff --git a/test/scripts/4200-International/4207 b/test/scripts/4200-International/4207
index cbfa5cca3..061a2c6b3 100644
--- a/test/scripts/4200-International/4207
+++ b/test/scripts/4200-International/4207
@@ -1,7 +1,7 @@
# Internationalised mail: control = utf8_downconvert
# Exim test configuration 4207
#
-exim -DSERVER=server -bd -oX PORT_D
+exim -DSERVER=server -DOPTION="" -bd -oX PORT_D
****
#
#
@@ -18,6 +18,19 @@ body
QUIT
****
#
+# utf-8 from, optional downconvert, delivery redirected
+exim -bs -odi -DCONTROL="control=utf8_downconvert/-1"
+EHLO client.bh
+MAIL FROM: <他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com> SMTPUTF8
+RCPT TO: <zuser.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex>
+DATA
+Subject: test
+
+body
+.
+QUIT
+****
+#
killdaemon
exim -DSERVER=server -DNOTDAEMON -qqff
****
diff --git a/test/stdout/4207 b/test/stdout/4207
index 94a4e18d7..948434ff3 100644
--- a/test/stdout/4207
+++ b/test/stdout/4207
@@ -10,3 +10,15 @@
354 Enter message, ending with "." on a line by itself
250 OK id=10HmaX-0005vi-00
221 the.local.host.name closing connection
+220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+250-the.local.host.name Hello CALLER at client.bh
+250-SIZE 52428800
+250-8BITMIME
+250-PIPELINING
+250-SMTPUTF8
+250 HELP
+250 OK
+250 Accepted
+354 Enter message, ending with "." on a line by itself
+250 OK id=10HmaZ-0005vi-00
+221 the.local.host.name closing connection