2017-08-30 6 views
0

eximの下でシェルスクリプトを実行して、受信メールを読み込んだり、必要に応じて書き換えたり、各メールのスクリプトを実行するためにeximを設定するにはどうすればいいですか

そして、理想的なソリューションは、UNIXパイプに類似のようになります。

cat *incoming email* | **some-script.sh** | *back to exim processing* 

私は、たとえば、宛先アドレスを変更することができるように、私は、スクリプトが非常に早く実行したいです。

これはEximで可能ですか?

答えて

0

あなたは、パイプの反対側のスクリプトとパイプトランスポートを使用するルータを作成することができます:着信メッセージがX-Preproceededヘッダーを持っていないか、その値は、メッセージがあるyesに設定されていません

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 

場合輸送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]

関連する問題