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

Fra*_*ath 5 email-server postfix

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

我尝试了几件事,包括设置

mailbox_command = path_to_my_script
Run Code Online (Sandbox Code Playgroud)

这有效,但只接受发送到实际本地帐户的邮件。

我也尝试设置

local_recipient_maps = 
Run Code Online (Sandbox Code Playgroud)

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

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

sh1*_*1ny 5

看看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}
Run Code Online (Sandbox Code Playgroud)

在 main.cf 中:

virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
Run Code Online (Sandbox Code Playgroud)

这应该可以帮助您开始:)

或者您可以将其实现为 smtpd_recipient_restrictions 的 check_policy_service 过滤器守护进程。阅读 postfix 文档是开始的最佳起点:)