【问题标题】:redirecting output of postfix command pipe重定向后缀命令管道的输出
【发布时间】:2014-12-11 18:30:20
【问题描述】:

我在 /etc/postfix/master.cf 中创建了一个后缀命令管道,其中包含在 STDOUT 和 STDERR 上生成输出的有效命令。在终端上调用时一切正常(因此在 STDOUT 和 STDERR 上有输出) - 但是当让 postfix 发出命令时,没有显示输出。我想通过将 STDOUT 和 STDERR 重定向到单独的文件来测试这一点,如下所示:

来自 /etc/postfix/master.cf 的示例命令 argv=echo foo >> /tmp/test.log

邮件被正确接收并重定向到这个命令,这就是mail.log所说的,但是当postfix收到邮件时,文件并没有被创建。

有人知道为什么会这样吗?

提前致谢

【问题讨论】:

    标签: pipe stdout stderr


    【解决方案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

    【讨论】:

    • 我的 argv 行已经有 { 。我尝试根据您的建议添加另一组日志重定向,但没有奏效。我还尝试了包装外壳的其他建议,但即使这样也没有用。我猜它可能更多用于后缀权限。所以我创建了日志文件并给它 chmod 777 但仍然没有记录在那里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2013-01-12
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多