2014-10-16 3 views
4

Я создал постфиксный командный канал в /etc/postfix/master.cf с допустимой командой, которая выводит выходные данные на STDOUT и STDERR. Все работает нормально, когда вызывается на терминале (так что есть выход на STDOUT и STDERR), но при разрешении postfix выдавать команду no output. Я хотел, чтобы проверить это, перенаправляет STDOUT и STDERR отделить файлы, например, так: командаперенаправление вывода постфиксного командного канала

Пример из /etc/postfix/master.cf ARGV = эхо Foo >> /tmp/test.log

В электронная почта получена и перенаправлена ​​на эту команду правильно, вот что говорит mail.log в любом случае, но файл не создается, когда postfix получает электронное письмо.

Кто-нибудь знает, почему это происходит?

Заранее спасибо

ответ

1

The pipe(8) documentation объясняет, почему это происходит:

ARGV = команда ... (обязательно)
Команда должна быть выполнена. Это должно быть указано как последний атрибут команды . Команда выполняется непосредственно, то есть без интерпретации метасимволов оболочки командой интерпретатора оболочки .

Отсутствие толкования оболочкой означает, что перенаправление не будет работать. Вместо этого >> и /tmp/test.log просто заканчиваются как дополнительные аргументы echo.

Согласно документации Postfix> = 3,0 позволяет цитировать пробелы в спорах с «{» и «}», так что должно работать:

argv=/bin/sh -c { echo foo >> /tmp/test.log } 

Я до сих пор найти инлайн решение, которое работает с Postfix < 3. ATM Я прибегаю к вызову сценария оболочки оболочки, который, в свою очередь, настраивает перенаправление.

Смежные вопросы