如何让 Postfix 将所有邮件发送到自定义脚本?

如何让 Postfix 将所有邮件发送到自定义脚本?

我正在尝试配置 postfix,以便所有到达的邮件(到任何域)都通过管道传输到我拥有的 shell 脚本中。

我尝试过几种方法,包括设置

mailbox_command = path_to_my_script

这是可行的,但只会接受发送到实际本地帐户的邮件。

我也尝试设置

local_recipient_maps = 

我认为它应该接受所有邮件,但这似乎不起作用。

我在 Ubuntu Jaunty(9.04)上运行 postfix 2.5.5-1.1。

答案1

查看 master.cf。那里已经定义了很多服务/示例,这将是一个很好的起点。接下来定义 virtual_transport 并将其设置为您在 master.cf 中定义的名称。例如(我在我的设置中使用 dovecot 的 LDA):

在 master.cf 中:

dovecot unix    -       n       n       -       -      pipe
  flags=DR user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -n -m ${extension}

在 main.cf 中:

virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

这应该可以帮助你入门 :)

或者您可以将其实现为 smtpd_recipient_restrictions 的 check_policy_service 过滤器守护进程。阅读 postfix 文档是入门的最佳方式 :)

答案2

在 master.cf 中定义一个服务,然后在 main.cf 中定义一个服务

virtual_transport = transport_name

或者如果你没有虚拟地址,请在 /etc/transport 中使用它

相关内容