2014-10-16 102 views
4

我在/etc/postfix/master.cf中用一個在STDOUT和STDERR上產生輸出的有效命令創建了一個postfix命令管道。在終端上調用時一切正常(所以在STDOUT和STDERR上有輸出) - 但是當讓postfix發出命令時,不顯示輸出。我想通過重定向STDOUT和STDERR來測試這單獨的文件,像這樣:從/etc/postfix/master.cf 的argv重定向postfix命令管道的輸出

樣品命令=回聲富>> /tmp/test.log

的電子郵件被接收並正確地重定向到這個命令,這就是mail.log無論如何說的,但是當postfix收到一封電子郵件時不會創建文件。

任何人都知道爲什麼會發生這種情況?

在此先感謝

回答

1

pipe(8) documentation解釋了爲什麼發生這種情況:

argv的 = 命令要執行(必填)
命令。這必須被指定爲最後的 命令屬性。該命令是直接執行的,即沒有通過shell命令解釋器解釋shell元字符。

shell沒有解釋意味着重定向不起作用。相反,>>/tmp/test.log只是作爲echo的附加參數結束。

根據該文件後綴> = 3.0允許帶有參數報價空白「{」和「}」,所以下面應該工作:

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

我還是要找到一個在線解決方案,與工程Postfix < 3.自動櫃員機我訴諸調用一個封裝外殼腳本,依次設置重定向。