用postfix别名和MySQL管道

时间:2011-07-17 11:41:59

标签: php postfix-mta aliases

我正在尝试将传入的电子邮件发送到重定向到php脚本的特定电子邮件地址。我使用Postfix与MySql中存储的地址和域信息。由于我认为管道无法从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错误日志中没有显示任何错误。

非常感谢,

1 个答案:

答案 0 :(得分:1)

您是否尝试使用用户nobody在命令行上执行脚本?

su -c "/usr/bin/php -q /home/mysite/htdocs/mail_handler.php" nobody

然后在运行测试时尝试使用现有的电子邮件地址,您可能会在发件人的电子邮件中回复一部分错误。

相关问题