Named Queues: fix immediate-delivery. Bug 2743
authorJeremy Harris <jgh146exb@wizmail.org>
Wed, 12 May 2021 14:01:12 +0000 (15:01 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Wed, 12 May 2021 14:01:12 +0000 (15:01 +0100)
doc/doc-txt/ChangeLog
src/src/exim.c
test/confs/0576
test/log/0576
test/scripts/0000-Basic/0576

index c3fc01389fb297a6848df07fdf3aa962d9d150fc..df6efeea31b3d49c2aabd39d55d94b7febcea365 100644 (file)
@@ -247,8 +247,10 @@ JH/51 Taint-check ACL line.  Previously, only filenames (for out-of-line ACL
 
 JH/52 Fix ${ip6norm:} operator.  Previously, any trailing line text was dropped,
       making it unusable in complex expressions.
-    
 
+JH/53 Bug 2743: fix immediate-delivery via named queue.  Previously this would
+      fail with a taint-check on the spoolfile name, and leave the message
+      queued.
 
 
 Exim version 4.94
index 3e08f0376fbe2019738ddd4c1ac46167030999ce..fd1d87362dc924c4363b10e8ea6807af5fece4c6 100644 (file)
@@ -2784,9 +2784,11 @@ on the second character (the one after '-'), to save some effort. */
                  else badarg = TRUE;
                  break;
 
-    /* -MCG: set the queue name, to a non-default value */
+    /* -MCG: set the queue name, to a non-default value. Arguably, anything
+       from the commandline should be tainted - but we will need an untainted
+       value for the spoolfile when doing a -odi delivery process. */
 
-       case 'G': if (++i < argc) queue_name = string_copy_taint(argv[i], TRUE);
+       case 'G': if (++i < argc) queue_name = string_copy_taint(argv[i], FALSE);
                  else badarg = TRUE;
                  break;
 
index d6c0a1dc5b33d4d46ef873525949a577a8e19dcf..1b147aa45a62dbcf42e876b5ec08dd46cbb69237 100644 (file)
@@ -7,6 +7,8 @@ SERVER =
 log_selector = +received_recipients +sender_on_delivery
 
 acl_smtp_rcpt = rcpt
+acl_not_smtp_start = not_smtp
+
 queue_only
 queue_run_in_order
 
@@ -19,6 +21,10 @@ rcpt:
     queue = ${extract {$local_part} {normal="" alternate=alternate lowpri=lowpri}}
     logwrite = using queue '$queue_name'
 
+not_smtp:
+  accept
+    queue = example
+
 #---------------
 
 begin routers
index 246b105781f5915b905612fb2602f429feec4963..ddc28f93239c6dca1e783b98b6a0473b5d069faa 100644 (file)
@@ -28,6 +28,9 @@
 1999-03-02 09:44:33 10HmbC-0005vi-00 moved from (alternate) input, msglog to (third) input, msglog
 1999-03-02 09:44:33 10HmbB-0005vi-00 moved from (third) input, msglog to input, msglog
 1999-03-02 09:44:33 10HmbC-0005vi-00 moved from (third) input, msglog to input, msglog
+1999-03-02 09:44:33 10HmbD-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss Q=example for q_set_by_nonsmtp_acl@test.ex
+1999-03-02 09:44:33 10HmbD-0005vi-00 => q_set_by_nonsmtp_acl <q_set_by_nonsmtp_acl@test.ex> F=<CALLER@the.local.host.name> Q=example R=all T=dump
+1999-03-02 09:44:33 10HmbD-0005vi-00 Completed
 
 ******** SERVER ********
 1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, -qGlowpri/3s, not listening for SMTP
index ddf17f8d9550d9f029948b724bdecfa532629d82..0f9a8c702c18e488063bd6da01def421147ed44f 100644 (file)
@@ -119,4 +119,8 @@ exim -bp -qGalternate
 exim -bp -qGthird
 ****
 #
+# Immediate delivery, via alternate queue
+exim -odi q_set_by_nonsmtp_acl@test.ex
+****
+#
 no_stderr_check