如何configurationPostfix重新发送未能通过pipe道传送的电子邮件?

我通过SSH使用pipe道将特殊处理的电子邮件发送到另一台服务器,这是我在master.cf中configuration的。

foobar unix - nn - - pipe flags=RF user=foobar:foobar argv=/usr/bin/ssh -T foobar@foobar /usr/local/bin/foobar ${recipient} 

我遇到的问题是,如果此服务器不可用(或由于其他原因SSH连接失败)整个交付失败,发件人收到有关消息。 我想要的是,如果失败,电子邮件被放回到队列中,以便以后重试。 而且只有在几天之内才能发送这个邮件,发件人才会收到通知。 我怎样才能以这种方式configurationPostfix?

-o soft_bounce=yes添加到master.cf的定义中。

例:

 foobar unix - nn - - pipe -o soft_bounce=yes flags=RF user=foobar:foobar argv=/usr/bin/ssh -T foobar@foobar /usr/local/bin/foobar ${recipient} 

这将使邮件永远保留在延期队列中(或者直到机器恢复正常生效,postfix重试),几天后不会反弹,但这是我能find的最好的(甚至隐藏得很好)。

如果pipe正在交付的命令返回75退出代码,那么这会导致交付延期而不是退回。 或者,如果输出的第一行看起来具有扩展的SMTP状态(例如“4.2.0”),则优先。

我会在shell脚本中包装ssh命令,或者检测到故障并将其转换为正确的输出/退出状态。

这使得交付程序可以将邮件标记为无法传送,而不是始终将邮件重试。 并保持soft_bounce选项作为debugging安全网。

(我感谢你已经有了一个答案,但认为这可能是有用的,作为任何人find这个问题的替代品)