Php

後綴“郵件到腳本”管道僅傳遞空消息

  • June 21, 2012

我這裡有問題。

我希望通過後綴將傳入的電子郵件通過管道傳輸到系統中的 php 腳本。

我的系統使用 ispconfig 3、postfix 和 dovecot 執行(< 虛擬郵箱使用者保存在 mysql 中)。

我已經研究過這個:如何配置後綴以將所有傳入的電子郵件通過管道傳輸到腳本?

…腳本被執行,但沒有“消息”傳遞給腳本。到目前為止我的設置:

在 ISPConfig 3 中,我設置了以下電子郵件路由:

Active      Server          Domain              Transport   Sort by
Yes         example.com     pipe.example.com    piper:      5

摘自我的後綴 master.cf:

piper   unix  -       n       n       -       -       pipe
   user=piper:piper directory=/home/piper argv=php -q /home/piper/mail.php

到目前為止,它執行良好(發送到 test@pipe.example.com 的郵件)(mail.log):

Jun 21 16:07:11 example postfix/pipe[10948]: 235CF7613E2: to=&lt;test@pipe.example.com&gt;, relay=piper, delay=0.04, delays=0.01/0.01/0/0.02, dsn=2.0.0, status=sent (delivered via piper service)

…並且mail.err中沒有錯誤

mail.php 被成功執行(它的 chmod 777 和 chown’ed 到 piper),但創建了一個空的 .txt 文件(通常它應該包含電子郵件):

-rw------- 1 piper piper    0 Jun 21 16:07 mailtext_1340287631.txt

我使用的 mail.php 腳本來自http://www.email2php.com/HowItWorks

如果我使用他們的(商業)服務通過提供的“管道電子郵件”將電子郵件發送到 mail.php(在 apache2 環境中),則消息將成功保存並完成。但正如您所見,我不想使用外部服務。

-rw-r--r--  1 web2 client0  1959 Jun 21 16:19 mailtext_1340288377.txt

那麼,這裡有什麼問題?我認為這與我係統中的“傳遞配置”有關……

那是因為你的 PHP 腳本是垃圾。它不會將 STDIN 保存到文件中。而是將未初始化的(空)變數保存到文件中。這就是為什麼它是空的。

你應該學習PHP來解決這個問題。

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