如何使用exim4接收邮件后运行命令?

每当新的邮件被发送到虚拟邮箱时,我可以在哪里告诉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>"