每次将新邮件发送到虚拟邮箱时,我可以在哪里告诉 exim 运行 shell/php 命令。邮件发送给哪个用户并不重要?
答案1
你想看看shadow_transport
。
对于本地传送(仅限),如果传送成功且传输在其shadow_transport
选项中引用另一个传输,则第二个传输也将被调用。
然后你就会让第二个 Transport 成为一种driver = pipe
传输。
例如:
maildir_delivery:
driver = appendfile
directory = ...blah blah whatever ...
maildir_format
# various other maildir extension options if needed
shadow_transport = audit_delivery
audit_delivery:
driver = pipe
command = /some/path/to/some/command with some options
user = audituser
group = mail
答案2
假设您显然有一个真正的用户需要传递信息,您可能需要考虑使用文件.forward
,或者如果您想要更花哨一点的话,可能需要使用 procmail(例如,如果您只想运行针对传递给用户的一部分消息的命令)。
答案3
我发现最简单的方法是创建一个新的路由器,然后将其传递给本地用户,其中包含:
runscript:
driver = accept
transport = run_script
unseen
no_expn
no_verify
因此,邮件仍然按应有的方式处理,并且我的脚本正在运行,并具有正确的传输功能:
run_script:
debug_print = "T: run_script for $local_part@$domain"
driver = pipe
path = "<path>"
command = "<command to be run>"