postfix / dovecot – 收到邮件时运行脚本

我需要在我的postfix / dovecot服务器上实现解决scheme,每次消息到达时都会执行bash脚本。 为此,我在master.cfconfiguration中做了以下的事情

myhook unix - nn - - pipe flags=F user=customUser argv=/path/to/script.sh ${sender} ${recipient} smtp inet n - - - - smtpd -o content_filter=myhook:dummy 

只要您不想通过dovecot发送邮件到邮箱,就可以正常工作。 问题是,不知怎的,我需要把所有东西都扔回去。 或者也许有一个更好的方法,这是我不知道的。

在这种情况下,我感谢每一个想法或提示。

您的脚本必须像Postfix官方文档中的简单内容filter示例一样行事。 postfix通过pipe发送邮件后,必须通过sendmail命令重新提交。 从该页面摘录

Postfix通过smtpd(8)服务器接收来自networking的未经过滤的邮件,并使用Postfix pipe道(8)递送代理将未经过滤的邮件传递给内容filter。 内容filter使用Postfix sendmail(1)命令将过滤后的邮件注入Postfix,以便Postfix可以将其发送到最终目的地。

通常情况下,您需要从脚本中将消息重新注入到postfix中,而不是使用内容filter,我认为先前的队列milter可能更适合您的用例。

我解决了创build“自己的”交付脚本的问题。 实际上,dovecot的交付脚本仍然在使用,并且在我自己的脚本中,但是在向邮箱发送邮件之前,脚本会执行我想要实现的function。 当然,我必须改变main.cf vonfiguration中的'virtual_transport',并在master.cf文件中创build钩子(正如我在问题中所描述的那样)。