Php

如何將後綴通過管道傳輸到 Codeigniter 控制器

  • May 8, 2015

我目前將後綴管道連接到 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

任何幫助是極大的讚賞!

無法將消息附加到文件/incoming_mail:無法獨占創建文件:權限被拒絕

後綴會拋出上述錯誤消息,因為您告訴它將電子郵件內容附加到/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"

PS:使用Jommaar 解決方案transport_mapspipe也可以使用 :)

引用自:https://serverfault.com/questions/690276