Рецепт Procmail, труба к стандартному Java - PullRequest
0 голосов
/ 10 сентября 2011

Я пытаюсь выполнить какой-то пользовательский анализ входящей почты с помощью procmail и хотел бы вызвать программу java для чтения заголовков и тела сообщения, используя | pipe для stdin. Существует множество примеров фильтрации вашей почты с использованием 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? стандартный вывод

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

убрать кавычки вокруг "/ usr / bin / java -cp / root / parser HelloWorldApp".

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

0 голосов
/ 12 сентября 2011

Флаг «фильтр» в вашем рецепте указывает, что конвейер будет читать сообщение на стандартном вводе и записывать (возможно, не измененное) сообщение на стандартный вывод, который заменит исходное сообщение.

Как уже ответил Jake223, кавычки вокруг команды неверны и должны быть удалены. Однако сообщение об ошибке на самом деле не соответствует этой конкретной ошибке.

...