您可以创建在管道的另一端使用管道运输与脚本路由器:
begin routers
preprocessor:
driver = accept
condition = if{ !eq{$header_X-Preproceeded}{yes}}
transport = myscript
no_more
. . . . .
begin transports
myscript:
driver = pipe
user = scriptowner
command = /path/to/script --opt1 --opt2
如果传入的消息没有X-Preproceeded
头或其值不设置为yes
则消息是传递到myscript
运输。这是通过管道source | script
执行的,并且所有消息都被传递给脚本的stdin
。继续之后,如果您想要将进一步的消息返回到Exim,则应该将x-Preproceeded: yes
标头添加到消息中,以防止它被路由到下一圈。然后您必须通过sendmail
命令提交。
#!/bin/sh
. . . .
mandatory_empty_line = ''
cat << ENDOFTEXT | /usr/sbin/sendmail -t
$headers
X_Preproceeded: yes
$mandatory_empty_line
$message_body
ENDOFTEXT
请记住,有效的用户运行脚本应通过exim的配置添加到受信任的用户,以允许从任意地址发送。否则exim
将取代任何发件人的地址[email protected]