我在/etc/postfix/master.cf中创建了一个后缀命令管道,其中包含一个在STDOUT和STDERR上产生输出的有效命令。在终端上调用时一切正常(因此在STDOUT和STDERR上有输出) - 但是当让postfix发出命令时,不会显示输出。我想通过将STDOUT和STDERR重定向到单独的文件来测试它,如下所示:
来自/etc/postfix/master.cf的示例命令 argv = echo foo>> /tmp/test.log
收到电子邮件并将其重定向到此命令,无论如何都是mail.log所说的内容,但是当postfix收到电子邮件时,该文件并未创建。
任何人都知道为什么会这样?
提前致谢
答案 0 :(得分:1)
pipe(8) documentation解释了为什么会发生这种情况:
argv = 命令... (必填)
要执行的命令。必须将其指定为最后一个 命令属性。该命令直接执行,即shell命令不解释shell元字符 解释
shell没有解释意味着重定向不起作用。相反,>>
和/tmp/test.log
最终会成为echo
的其他参数。
根据文档Postfix> = 3.0允许在带有“{”和“}”的参数中引用空格,因此以下内容应该有效:
argv=/bin/sh -c { echo foo >> /tmp/test.log }
我仍然需要找到一个适用于Postfix<的内联解决方案。 3. ATM我试图调用一个包装器shell脚本,然后设置重定向。