我已经关注这个答案将域的所有 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
。