X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/0fbd9bff71b47e3a32e54629c3f67e7eda1812fe..09792322d9224b0407783a19c2dd57fd1a8bbd52:/doc/doc-docbook/spec.xfpt diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index 92d0a2287..c3994a79c 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -21601,10 +21601,10 @@ that are routed to the transport. .vindex "&$address_pipe$&" A router redirects an address directly to a pipe command (for example, from an alias or forward file). In this case, &$address_pipe$& contains the text of the -pipe command, and the &%command%& option on the transport is ignored. If only -one address is being transported (&%batch_max%& is not greater than one, or -only one address was redirected to this pipe command), &$local_part$& contains -the local part that was redirected. +pipe command, and the &%command%& option on the transport is ignored unless +&%force_command%& is set. If only one address is being transported +(&%batch_max%& is not greater than one, or only one address was redirected to +this pipe command), &$local_part$& contains the local part that was redirected. .endlist @@ -21712,6 +21712,12 @@ inserted in the argument list at that point &'as a separate argument'&. This avoids any problems with spaces or shell metacharacters, and is of use when a &(pipe)& transport is handling groups of addresses in a batch. +If &(force_command)& is enabled on the transport, Special handling takes place +for an argument that consists of precisely the text &`$address_pipe`&. It +is handled much like &`$pipe_addresses`& above. It is expanded and each +argument is inserted in the argument list at that point +&'as a separate argument'&. + After splitting up into arguments and expansion, the resulting command is run in a subprocess directly from the transport, &'not'& under a shell. The message that is being delivered is supplied on the standard input, and the @@ -21864,6 +21870,19 @@ a bounce message is sent. If &%freeze_signal%& is set, the message will be frozen in Exim's queue instead. +.option force_command pipe boolean false +.cindex "force command" +.cindex "&(pipe)& transport", "force command" +Normally when a router redirects an address directly to a pipe command +the &%command%& option on the transport is ignored. If &%force_command%& +is set, the &%command%& option will used. This is especially +useful for forcing a wrapper or additional argument to be added to the +command. For example: +.code +command = /usr/bin/remote_exec myhost -- $address_pipe +force_command +.endd + .option ignore_status pipe boolean false If this option is true, the status returned by the subprocess that is set up to run the command is ignored, and Exim behaves as if zero had been returned.