Php
後綴“郵件到腳本”管道僅傳遞空消息
我這裡有問題。
我希望通過後綴將傳入的電子郵件通過管道傳輸到系統中的 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=<test@pipe.example.com>, 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來解決這個問題。