我正在尝试配置 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 中使用它