On 19 Feb 2016, at 15:19, Reid Sutherland wrote:
[...]
Here is the correct snippet from
postfix-2.11.7/src/global/pipe_command.c:657:
/*
* No "D.S.N text" or <sysexits.h> compatible status. Fake
it.
*/
else {
sp = sys_exits_detail(WEXITSTATUS(wait_status));
dsb_unix(why, sp->dsn,
log_len ? log_buf : sp->text,
"Command died with status %d: \"%s\"%s%s",
WEXITSTATUS(wait_status), args.command,
log_len ? ". Command output: " : "",
log_buf);
return (PIPE_STAT_BOUNCE);
}
I think a bounce should only occur if the command explicitly returns
it. If the command cannot respond properly for whatever reason, it
should be assumed something is wrong and defer.
I won't try to persuade you that mystery failures should should be
presumed "hard," but rather offer a possible more orderly solution. Have
you considered upgrading to 3.x and using a pipe_delivery_status_filter?
I don't use that feature myself, but it does exist and seems likely
to work as a tool to identify Perl compilation failures and make them
"soft".