procmail を使用して受信メールに対してカスタム解析を実行しようとしています。Java プログラムを呼び出して、標準入力への |パイプを使用してメッセージのヘッダーと本文を読み取りたいと考えています。perl と python を使用してメールをフィルタリングする例はたくさんありますが、Java を使用した例はありません。最初の例として、私の procmail レシピは次のとおりです。
:0 hbfW
|"/usr/bin/java -cp /root/parser HelloWorldApp"
そして、私のJavaアプリは標準入力をエコーするだけです:
import java.io.*;
public class HelloWorldApp {
public static void main(String[] args) {
InputStreamReader isReader = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(isReader);
while(true){
try {
String inputStr = null;
if((inputStr=bufReader.readLine()) != null) {
System.out.println(inputStr);
}
else {
break;
}
}
catch (Exception e) {
break;
}
}
}
}
procmail ログ:
procmail: Executing "/usr/bin/java -cp /root/parser HelloWorldApp"
/bin/sh: /usr/bin/java HelloWorldApp: No such file or directory
procmail: Error while writing to "/usr/bin/java HelloWorldApp"
procmail: Rescue of unfiltered data succeeded
1) データを Java にパイプする正しいレシピを作成していますか? 2) 引き続き procmail に配信を処理させたいので、(f) フラグを使用したレシピを作成します。しかし、Java プログラムから作成された結果を procmail に送り返すにはどうすればよいでしょうか? 標準出力?