我最近购买了一个 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 邮件功能已经可以正常工作。