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

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

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

myhook        unix  -       n       n       -       -       pipe
    flags=F user=customUser argv=/path/to/script.sh ${sender} ${recipient}

smtp      inet  n       -       -       -       -       smtpd
    -o content_filter=myhook:dummy

只要您不想通过 dovecot 将电子邮件发送到邮箱,这种方法就很好。问题是,我需要以某种方式将所有内容“扔回”到 dovecot。或者也许有更好的方法,但我不知道。

我感谢这个案例中的每一个想法或建议。

答案1

你的脚本必须像简单内容过滤器示例来自 Postfix 官方文档。Postfix 通过 发送电子邮件后pipe,您必须通过命令重新提交sendmail。摘自该页面

Postfix 使用以下方式从网络接收未经过滤的邮件:smtpd(8)服务器,并使用 Postfix 将未过滤的邮件发送到内容过滤器管道(8)送货代理。内容过滤器使用 Postfix sendmail(1) 命令将过滤后的邮件重新注入 Postfix,以便 Postfix 将其投递到最终目的地。

答案2

通常情况下,你会希望从脚本中将消息重新注入到 Postfix 中,而不是使用内容过滤器,我认为队列前可能更适合您的用例。

答案3

我通过创建“自己的”交付脚本解决了这个问题。事实上,dovecot 的交付脚本仍在使用,并且位于我自己的脚本中,但在将消息发送到邮箱之前,我的脚本会执行我想要实现的操作。当然,我必须更改 main.cf vonfiguration 中的“virtual_transport”,并在 master.cf 文件中创建钩子(正如我在问题中所述)。

相关内容