我正在尝试从 postfix 管道传输到命令。根据 Postfix 日志,它工作正常,但当我检查命令时,它却没有工作。这是新安装的 postfix。这是我的别名文件:
# See man 5 aliases for format
postmaster: root
support: "| /usr/bin/php -q /var/www/pipe/pipe.php"
我运行然后输入它,然后在单独的行中输入它,它就运行了。我检查了 postfix 日志,它显示以下内容:sendmail [email protected]
.
/var/log/mail.log
Nov 2 15:32:33 server3 postfix/local[13284]: 42C429E0B5: to=<[email protected]>, relay=local, delay=156, delays=156/0.01/0/0.05, dsn=2.0.0, status=sent (delivered to command: /usr/bin/php -q /var/www/pipe/pipe.php)
因此,根据该说法,它确实有效,但事实并非如此。如果我运行它,echo 'text' | /usr/bin/php -q /var/www/pipe/pipe.php
它确实工作正常。
知道我做错了什么吗?
我知道管道正在运行,我最初通过运行上面的命令(不带引号)来检查它,所以support: | /usr/bin/php -q /var/www/pipe/pipe.php
它所做的只是将我的电子邮件标题和所有内容附加到文件 pipe.php。所以我知道 postfix 正在对其进行管道传输,但当我加上引号时,它说它正在运行,但这并不符合我的脚本。
答案1
我的文件中只缺少一行/etc/postfix/main.cf
。
default_privs = www-data
这很奇怪,因为我尝试以 777 的身份运行文件,所以理论上它应该可以工作。哦,现在它就是这样工作的。简而言之,设置文件所有者的权限,因为 Postfix 默认为用户nobody
。