通过 PHP 脚本运行传入邮件 - Postfix

通过 PHP 脚本运行传入邮件 - Postfix

我已经关注这个答案将域的所有 Postfix 电子邮件通过管道传输到 PHP 脚本 - Centos7/EC2将特定地址的来信导向 PHP 脚本。

我的别名文件条目如下所示:

mail-incoming-php: "/usr/bin/php -q /var/spool/mail/php/incoming.php"

Postfix 虚拟文件将电子邮件地址映射到

mail-incoming-php@localhost

我当前的测试 PHP 脚本设置为创建一个空文件,我已经对其进行了测试。当向相关地址发送邮件时,PHP 脚本不会创建文件,并且包含maillog以下错误:

cannot append message to file /usr/bin/php -q /var/spool/mail/php/incoming.php: cannot create file exclusively: No such file or directory

我临时将 PHP 脚本的权限设置为 777,但仍然出现同样的错误。

也许这不是解决这个问题的最佳方法或者需要做其他事情?

我需要脚本做的就是读取收到的电子邮件的内容,此后无需中继电子邮件。

答案1

与链接的问题不同,你是没有管道邮件到脚本,即

mail-incoming-php: "| /usr/bin/php -q /var/spool/mail/php/incoming.php"

因为您缺少|您正在尝试写入(附加)到文件的内容,所以:

  • /usr/bin/php -q /var/spool/mail/php/incoming.php是无效路径。

  • /usr/bin/php会将消息附加到 PHP 二进制文件中。
    (幸运的是,没有权限这样做!)

  • /var/spool/mail/php/incoming.php将附加到脚本中。

此外,您不应该让脚本全局可写777,但(最多)是755

相关内容