Ubuntu

PHP mail() 在 Ubuntu 上不能與 Postfix 一起使用

  • February 3, 2010

我最近購買了一個 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 郵件功能可以工作了。

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