PHP mail() 无法在 Ubuntu 上与 Postfix 配合使用

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 时,系统显示“正在启动 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

答案1

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

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

我重新启动了 postfix

sudo /etc/init.d/postfix restart

现在 PHP 邮件功能已经可以正常工作。

相关内容