Ubuntu
PHP mail() 在 Ubuntu 上不能與 Postfix 一起使用
我最近購買了一個 VPS 計劃。我安裝了 Ubuntu 9.10、PHP5 和 Postfix。我無法讓 PHP mail() 函式工作。在我的 PHP 腳本中,mail() 函式返回 true,這表明它正在工作。但是沒有人收到我網站的電子郵件。
當我呼叫 sudo apt-get install postfix 時,postfix 的安裝似乎很順利。呼叫 /etc/init.d/postfix start 給了我“Starting Postfix Mail Transport Agent postfix”。呼叫 /etc/init.d/postfix reload 給了我錯誤“致命:Postfix 郵件系統沒有執行”。
在安裝 postfix 之前,我使用的是與 PHP mail() 函式配合使用的 sendmail。
如何調試和解決此問題?
附加說明 我查看了 /var/log/mail.log 並發現每次呼叫 php 的 mail() 時都會出現以下錯誤
Feb 3 11:27:41 mywebsitedomain postfix/postdrop[23793]: warning: unable to look up public/pickup: No such file or directory
哦,我按照這個論壇的資訊解決了這個問題:
http://ubuntuforums.org/showthread.php?t=666018
基本上,我查看了我的 /var/log/mail.log 錯誤文件,發現錯誤消息“無法查找 public/pickup:沒有這樣的文件或目錄”。
然後我發出命令
sudo mkfifo /var/spool/postfix/public/pickup
我通過執行 ps -aux 並殺死它來確保 sendmail 沒有仍在執行
root@cpu:/var/log# ps aux | grep mail root 2363 0.0 0.5 9228 1888 ? Ss Jan28 0:20 sendmail: MTA: accepting connections root 23914 0.0 0.2 3040 792 pts/0 S+ 11:33 0:00 grep mail root@cpu:/var/log# kill 2363
我重新啟動了後綴
sudo /etc/init.d/postfix restart
現在 PHP 郵件功能可以工作了。