您可以創建在管道的另一端使用管道運輸與腳本路由器:
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]