I agree that queued and non-queued should behave the same.
Intriguing that you have the command specified in both router and transport. Is this tpt run in any other way? If not, the command spec in it could be removed (and should, to remove confusion). Further, the commands are not identical: the tpt version uses $local_part rather than "sympa@", and "queue" rather than "bouncequeue". That said, this probably isn't relevant to the problem. I'm wondering if what gets stored in the spool is the aggregate commandline for the pipe, rather than separate executable & args. It's reasonable for args to be tainted, but we must not permit a tainted string for the executable. If the spooled info only has the aggregate, then we've lost the distinction. https://bugs.exim.org/show_bug.cgi?id=2862 opened for this. For testing, you could add a verb at the top of your rcpt acl: warn local_parts = my_test_localpart control = debug/opts=+all control = queue_only The debug will go to a file in your log directory. This works with your normal execute method for the daemon (the alternative is to stop the service and run the daemon manually with cmdline option for debug, and collect stderr). That's fine for investigating the nonqueueing flow. For the queueing flow use instead control = queue_only (to force queueing rather than having to wait for a high-load period). Feed a message in, grab the message-id from the log and grab a copy of the spooled <message-id>-H file (this has all the variables content associated with the message, marked up for taint). Then: exim -d+all -M <message-id> 2>&1 | tee debuglog to deliver it. -- Cheers, Jeremy -- ## List details at https://lists.exim.org/mailman/listinfo/exim-users ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://wiki.exim.org/
