如何将后缀导入到 Codeigniter 控制器中

如何将后缀导入到 Codeigniter 控制器中

我目前已将 Postfix 管道插入 PHP 脚本以通过别名处理电子邮件。

catchall: |/var/www/vhosts/website/httpdocs/scripts/incoming_mail.php

但是,我希望使用我的 CI 项目中提供的 DB 配置等,因此我需要提供一条路由,例如:

catchall: |/var/www/vhosts/website/httpdocs/cli.php /incoming_mail

期望的结果是我运行incoming_mail 控制器。

如果我尝试上述操作,电子邮件将被退回,并显示以下内容:

Action: failed
Status: 5.2.0
Diagnostic-Code: X-Postfix; cannot append message to file /incoming_mail:
cannot create file exclusively: Permission denied

任何帮助是极大的赞赏!

答案1

无法将消息附加到文件 /incoming_mail:无法独占创建文件:权限被拒绝

上述错误消息是由 Postfix 引发的,因为您告诉它将电子邮件内容附加到/incoming_mail,而不是将参数传递 /incoming_mailcli.php

根据man 5 别名

|命令

邮件通过管道传输到命令中。包含特殊字符(如空格)的命令应括在双引号中。有关传递到命令的详细信息,请参阅 local(8)。

由于您没有包装包含空格的命令,因此后缀被解释/incoming_mail为文件名

/文件名

邮件将附加到 /file/name。有关传递到文件的详细信息,请参阅 local(8)。传递不仅限于常规文件。例如,要处理不需要的邮件,请将其转移到 /dev/null。

解决方案:用双引号将命令括在别名文件中

catchall: "|/var/www/vhosts/website/httpdocs/cli.php /incoming_mail"

附言:Jommaar 解决方案使用transport_mapspipe也可以使用:)

答案2

你好,这是我制作解析器的方法:

/etc/postfix/master.cf(后缀)

bounce-pipe    unix  -       n       n       -       -       pipe
    flags=BDFORXhqu user=deploy argv=/usr/bin/php5 /var/www/emailmanager/public/index.php

运输(后缀)

[email protected] bounce-pipe:

index.php-获取您要处理的数据

$data = file_get_contents('php://stdin');

相关内容