Hi,
When using the :try tag on the pipe command in the sieve_extprograms plugin Sieve’s implicit keep is cancelled if the executed command fails. The specification on https://raw.githubusercontent.com/dovecot/pigeonhole/master/doc/rfc/spec-bos... states:
“When the ":try" tag is specified, the "pipe" instruction will attempt execution of the external program, but failure will not cause the whole Sieve script execution to fail with an error. Instead, the Sieve processing continues as if the "pipe" action was never triggered."
However, using the :try tag marks the pip command as successful even if it fails and because pipe is a disposition-type action the implicit keep is cancelled, resulting in the piped message being discarded. If this is the intended behaviour then I would suggest amending the text of the specification to:
“When the ":try" tag is specified, the "pipe" instruction will attempt execution of the external program, but failure will not cause the whole Sieve script execution to fail with an error. Instead, the Sieve processing continues as if the "pipe" action was executed successfully and cancel implicit keep.”
If this is not the intended behaviour then please consider this a bug report, with my apologies for not adding a patch (it seems to be a bit more complex than just changing the return value of act_pipe_commit).
Kind regards,
-- Sebastiaan Hoogeveen
NederHost https://www.nederhost.nl/ KvK: 34099781