PHP mail() 不适用于 Ubuntu 上的 Postfix

Joh*_*ohn 5 ubuntu php postfix

我最近购买了 VPS 计划。我安装了 Ubuntu 9.10、PHP5 和 Postfix。我无法让 PHP mail() 函数工作。在我的 PHP 脚本中,mail() 函数返回 true,这表明它正在工作。但是没有人收到我网站的电子邮件。

当我调用 sudo apt-get install postfix 时,postfix 的安装似乎很顺利。调用 /etc/init.d/postfix start 给了我“启动 Postfix 邮件传输代理 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
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 6

哦,我按照这个论坛中的信息解决了这个问题:

http://ubuntuforums.org/showthread.php?t=666018

基本上,我查看了我的 /var/log/mail.log 错误文件,发现错误消息“无法查找 public/pickup:没有这样的文件或目录”。

然后我发出了命令

sudo mkfifo /var/spool/postfix/public/pickup
Run Code Online (Sandbox Code Playgroud)

我通过执行 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
Run Code Online (Sandbox Code Playgroud)

我重新启动了 postfix

sudo /etc/init.d/postfix restart
Run Code Online (Sandbox Code Playgroud)

现在 PHP 邮件功能可以工作了。