2011-09-09 16 views
0

私はprocmailを使用して受信メールに対してカスタム解析を実行しようとしていますが、javaプログラムを呼び出して、標準のパイプを使ってメッセージの本文と本文を読み込みたいとします。 perlとpythonを使ってメールをフィルタリングする例はたくさんありますが、javaを使用しているものはありません。開始一例として、私のprocmailのレシピ:Procmailのレシピ、パイプをJavaのstdin

: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)は私が右のrecipieを作成していますデータをjavaにパイプしますか? 2)私はprocmailに引き渡しを処理させたいので、(f)フラグを使った私のレシピ。しかし、私のJavaプログラムから作成した結果をprocmailに送り返す方法はありますか? stdout?

答えて

1

"/ usr/bin/java -cp/root/parser HelloWorldApp"を引用符で囲まないでください。

源:http://www.linfo.org/pipe.html

+0

これは私が元々持っていたものですが、ログは1つではなく複数のコマンドを実行しているように見えます。ここで私は引用符なしで戻ってきたので、私はここに何か大きなものがあると思う。 'procmailの:実行 "は/ usr/binに/ javaの、-cp、/ルート/パーサ、がHelloWorldApp" : "INCLUDERC = /ホーム/ vmail/perimetric.com /スクリプト/ Procmailの/ rc.java" procmailの割り当てスレッド "main"の例外java.lang.NoClassDefFoundError:HelloWorldApp' –

+0

Procmail構文に問題はありませんが、コンマはコマンドラインがどのように個々の引数にどのように解析されたかを示しています。しかし、Javaからのエラーメッセージを解釈する手助けはできません。 Javaクラスパスのようなものが必要だと思います。 – tripleee

0

あなたのレシピの「フィルタ」フラグは、パイプラインが標準入力にメッセージを読み、元のメッセージを置換する標準出力に(おそらく変更されていない)メッセージを、ライトバックすることを指定し。

Jake223はすでに返信しているので、コマンドの引用符は間違っているため、削除する必要があります。しかし、エラーメッセージは実際にはその特定のエラーに対応するようには見えません。

+0

お手伝いいただきありがとうございます。私は今日それを狩りました。 procmailがクラスパスへのアクセスに問題があるようです。私はホームディレクトリの中にファイルを移動し、それは苦情なしで走った。私はprocmailが何らかの種類の制限付きの権限で動作していると思いますか? あなたは正しい、引用符はありませんでした。 :-P –

+0

マニュアルページを読んでそれを変更する方法を見ない限り、権限は制限されていませんが、確かに弱気な環境です。 .procmailrc内から環境を変更することもできます。 – tripleee

関連する問題