Gitweb:
http://git.exim.org/exim.git/commitdiff/0ec7e94825af4ec45b9ab92f9a2d22cf59952600
Commit: 0ec7e94825af4ec45b9ab92f9a2d22cf59952600
Parent: 921dfc1193791b722844341c3ec97be158042c17
Author: Jeremy Harris <jgh146exb@???>
AuthorDate: Tue Apr 21 23:59:07 2015 +0100
Committer: Jeremy Harris <jgh146exb@???>
CommitDate: Tue Apr 21 23:59:07 2015 +0100
UTF8: mua_wrapper
---
src/src/deliver.c | 5 +++-
src/src/exim.c | 3 ++
src/src/spool_in.c | 2 +-
src/src/spool_out.c | 2 +-
test/confs/4201 | 3 ++
test/confs/4209 | 1 +
test/log/4207 | 2 +-
test/log/4208 | 2 +
test/log/4209 | 18 +++++++++++++++
test/rejectlog/4208 | 1 +
test/scripts/4200-International/4208 | 2 +-
test/scripts/4200-International/4209 | 40 ++++++++++++++++++++++++++++++++++
test/stdout/4208 | 20 +++++++++++++++++
13 files changed, 96 insertions(+), 5 deletions(-)
diff --git a/src/src/deliver.c b/src/src/deliver.c
index 58b9d3a..88936b5 100644
--- a/src/src/deliver.c
+++ b/src/src/deliver.c
@@ -5606,8 +5606,11 @@ if (process_recipients != RECIP_IGNORE)
{
new->prop.utf8_downcvt = message_utf8_downconvert == 1;
new->prop.utf8_downcvt_maybe = message_utf8_downconvert == -1;
+ DEBUG(D_deliver) debug_printf("utf8, downconvert %s\n",
+ new->prop.utf8_downcvt ? "yes"
+ : new->prop.utf8_downcvt_maybe ? "ifneeded"
+ : "no");
}
- DEBUG(D_deliver) if (message_smtputf8) debug_printf("utf8\n");
#endif
if (r->pno >= 0)
diff --git a/src/src/exim.c b/src/src/exim.c
index cae2964..e328fb5 100644
--- a/src/src/exim.c
+++ b/src/src/exim.c
@@ -5088,6 +5088,9 @@ if (mua_wrapper)
deliver_drop_privilege = TRUE;
queue_smtp = FALSE;
queue_smtp_domains = NULL;
+#ifdef EXPERIMENTAL_INTERNATIONAL
+ message_utf8_downconvert = -1; /* convert-if-needed */
+#endif
}
diff --git a/src/src/spool_in.c b/src/src/spool_in.c
index 558d955..0780d58 100644
--- a/src/src/spool_in.c
+++ b/src/src/spool_in.c
@@ -605,7 +605,7 @@ for (;;)
case 'u':
if (Ustrncmp(p, "tf8_downcvt", 11) == 0)
message_utf8_downconvert = 1;
- else if (Ustrncmp(p, "tf8_downcvt_opt", 15) == 0)
+ else if (Ustrncmp(p, "tf8_optdowncvt", 15) == 0)
message_utf8_downconvert = -1;
break;
#endif
diff --git a/src/src/spool_out.c b/src/src/spool_out.c
index 48f27a8..e8d2020 100644
--- a/src/src/spool_out.c
+++ b/src/src/spool_out.c
@@ -250,7 +250,7 @@ if (message_smtputf8)
{
fprintf(f, "-smtputf8\n");
if (message_utf8_downconvert)
- fprintf(f, "-utf8_downcvt%s\n", message_utf8_downconvert < 0 ? "_opt" : "");
+ fprintf(f, "-utf8_%sdowncvt\n", message_utf8_downconvert < 0 ? "opt" : "");
}
#endif
diff --git a/test/confs/4201 b/test/confs/4201
index 4145325..6a16f4c 100644
--- a/test/confs/4201
+++ b/test/confs/4201
@@ -4,6 +4,7 @@
OPTION = *
CONTROL =
INSERT =
+SUB =
exim_path = EXIM_PATH
host_lookup_order = bydns
@@ -29,6 +30,8 @@ queue_run_in_order
smtputf8_advertise_hosts = OPTION
+SUB
+
# ----- ACL -----
diff --git a/test/confs/4209 b/test/confs/4209
new file mode 120000
index 0000000..73a348f
--- /dev/null
+++ b/test/confs/4209
@@ -0,0 +1 @@
+4201
\ No newline at end of file
diff --git a/test/log/4207 b/test/log/4207
index e1dd4f7..f6171fd 100644
--- a/test/log/4207
+++ b/test/log/4207
@@ -1,7 +1,7 @@
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 10HmaX-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com U=CALLER P=utf8local-esmtp S=sss for user.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex
1999-03-02 09:44:33 10HmaY-0005vi-00 <= xn--ihqwcrb4cv8a8dqg056pqjye@??? H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmaX-0005vi-00@??? for xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@???
-1999-03-02 09:44:33 10HmaX-0005vi-00 => xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@???- <user.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex> F=<xn--ihqwcrb4cv8a8dqg056pqjye@???> 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 => xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@??? <user.세계의모든사람들이한국어를이해한다면얼마나좋을까@test.ex> F=<xn--ihqwcrb4cv8a8dqg056pqjye@???> 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 Start queue run: pid=pppp -qqff
1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: <xn--user.-f99s29a80cg5i8xgv8fnb734dq4gv6av8eczab60f5jch09a5ea085a0marwd373e180hea90e@???> R=localuser
diff --git a/test/log/4208 b/test/log/4208
new file mode 100644
index 0000000..73e1863
--- /dev/null
+++ b/test/log/4208
@@ -0,0 +1,2 @@
+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 H=localhost (the.local.host.name) [127.0.0.1] F=<> rejected RCPT <the.local.host.name-dddddddd-testing@???>: relay not permitted
diff --git a/test/log/4209 b/test/log/4209
new file mode 100644
index 0000000..0f42fec
--- /dev/null
+++ b/test/log/4209
@@ -0,0 +1,18 @@
+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 10HmaX-0005vi-00 <= 他们为什么不说中文@test1.com U=CALLER P=local S=sss for user.他们为什么不说中文@test.ex
+1999-03-02 09:44:33 10HmaY-0005vi-00 <= 他们为什么不说中文@test1.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtp S=sss id=E10HmaX-0005vi-00@??? for user.他们为什么不说中文@test.ex
+1999-03-02 09:44:33 10HmaX-0005vi-00 => user.他们为什么不说中文@test.ex F=<他们为什么不说中文@test1.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 Start queue run: pid=pppp -qqff
+1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: <user.他们为什么不说中文@test.ex> R=localuser
+1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
+1999-03-02 09:44:33 End queue run: pid=pppp -qqff
+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 10HmaZ-0005vi-00 <= 他们为什么不说中文@test1.com U=CALLER P=local S=sss for user.他们为什么不说中文@test.ex
+1999-03-02 09:44:33 10HmbA-0005vi-00 <= xn--ihqwcrb4cv8a8dqg056pqjye@??? H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmaZ-0005vi-00@??? for xn--user.-si1hohvdvf05c4gvj200y0o6f@???
+1999-03-02 09:44:33 10HmaZ-0005vi-00 => xn--user.-si1hohvdvf05c4gvj200y0o6f@??? <user.他们为什么不说中文@test.ex> F=<xn--ihqwcrb4cv8a8dqg056pqjye@???> 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
+1999-03-02 09:44:33 Start queue run: pid=pppp -qqff
+1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: <xn--user.-si1hohvdvf05c4gvj200y0o6f@???> 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/rejectlog/4208 b/test/rejectlog/4208
new file mode 100644
index 0000000..2bbfb4f
--- /dev/null
+++ b/test/rejectlog/4208
@@ -0,0 +1 @@
+1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] F=<> rejected RCPT <the.local.host.name-dddddddd-testing@???>: relay not permitted
diff --git a/test/scripts/4200-International/4208 b/test/scripts/4200-International/4208
index 0fa7190..8802987 100644
--- a/test/scripts/4200-International/4208
+++ b/test/scripts/4200-International/4208
@@ -13,7 +13,7 @@ QUIT
****
# Recipient+random verify callout, pass only due to downconvert
-exim -d+all -bs -odi -DINSERT="control=utf8_downconvert" -DCONTROL="verify=recipient/callout=random"
+exim -bs -odi -DINSERT="control=utf8_downconvert" -DCONTROL="verify=recipient/callout=random"
EHLO client.ffail
MAIL FROM: <CALLER@???ạisaohọkhôngthểchỉnóitiếngViệt.local> SMTPUTF8
RCPT TO: <userT@???>
diff --git a/test/scripts/4200-International/4209 b/test/scripts/4200-International/4209
new file mode 100644
index 0000000..6531103
--- /dev/null
+++ b/test/scripts/4200-International/4209
@@ -0,0 +1,40 @@
+# Internationalised mail: mua_wrapper
+# Exim test configuration 4209
+#
+# featurefull server
+exim -DSERVER=server -bd -oX PORT_D
+****
+#
+# commandline/stdin input, utf-8 rcpt & sender, forwarded
+# should not downconvert
+exim -DSUB=mua_wrapper -odi -f 他们为什么不说中文@test1.com user.他们为什么不说中文@test.ex
+Test message 1.
+.
+****
+#
+#
+killdaemon
+exim -DSERVER=server -qqff
+****
+#
+#
+#
+# featureless server
+exim -DSERVER=server -DOPTION="" -bd -oX PORT_D
+****
+#
+# commandline/stdin input, utf-8 rcpt & sender, forwarded
+# should downconvert
+exim -DSUB=mua_wrapper -odi -f 他们为什么不说中文@test1.com user.他们为什么不说中文@test.ex
+Test message 1.
+.
+****
+#
+#
+killdaemon
+exim -DSERVER=server -qqff
+****
+#
+#
+#
+no_msglog_check
diff --git a/test/stdout/4208 b/test/stdout/4208
new file mode 100644
index 0000000..b4bf772
--- /dev/null
+++ b/test/stdout/4208
@@ -0,0 +1,20 @@
+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.ffail
+250-SIZE 52428800
+250-8BITMIME
+250-PIPELINING
+250-SMTPUTF8
+250 HELP
+250 OK
+250 Accepted
+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.ffail
+250-SIZE 52428800
+250-8BITMIME
+250-PIPELINING
+250-SMTPUTF8
+250 HELP
+250 OK
+250 Accepted
+221 the.local.host.name closing connection