我正在尝试将传入的电子邮件发送到重定向到 php 脚本的特定电子邮件地址。我正在使用带有存储在 MySql 中的地址和域信息的 Postfix。因为我相信管道不能从 mysql 表中完成,所以地址在表中与系统别名配对:
在 /etc/aliases 中:
#Other aliases
php_mail_handler: "| /usr/bin/php -q /home/mysite/htdocs/mail_handler.php"
这似乎在一定程度上起作用,因为 /var/log/mail.info 包含以下内容:
Jul 17 14:53:29 mysite postfix/qmgr[21974]: 39F726888003: from=<myaccount@gmail.com>, size=1476, nrcpt=1 (queue active)
Jul 17 14:53:30 mysite postfix/local[21981]: 39F726888003: to=<php_mail_handler@localhost>, orig_to=<php@mysite.com>, relay=local, delay=0.95, delays=0.28/0.01/0/0.66, dsn=2.0.0, status=sent (delivered to command: /usr/bin/php -q /home/mysite/htdocs/mail_handler.php)
但是,php 脚本永远不会执行(它将时间戳和 stdin 上的任何内容写入日志文件)。该脚本在从命令行或通过 apache 调用时有效。其代码如下:
<?php
$f = fopen('php_handler_log.txt','a+');
$data = file_get_contents("php://stdin");
fwrite($f,date('Y-m-d h:i:s').': '.$data."\n");
fclose($f);
?>
有没有人知道为什么它可能不工作或如何调试它?由于我在 CLI 的 php.ini 中指定的 php 错误日志中没有显示任何错误。
非常感谢,
垫