每当新的邮件被发送到虚拟邮箱时,我可以在哪里告诉exim运行shell / php命令。 邮件送达哪个用户并不重要?
你想看看shadow_transport
。
对于本地交付(仅),如果交付成功,并且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
鉴于你显然有一个真正的用户交付,你可能要考虑使用.forward
文件,或者可能procmail,如果你想有点fancier(例如,如果你只想运行命令的子集消息传递给用户)。
我发现的最简单的方法是创build一个新的路由器,然后传递给本地用户,其中包含:
runscript: driver = accept transport = run_script unseen no_expn no_verify
所以,邮件仍然是应该的方式,我的脚本正在运行,正确的运输fe:
run_script: debug_print = "T: run_script for $local_part@$domain" driver = pipe path = "<path>" command = "<command to be run>"