无法使用 sendmail 和 postfix 在 Ubuntu 桌面版本上运行 php mail()

无法使用 sendmail 和 postfix 在 Ubuntu 桌面版本上运行 php mail()

我正在运行 Ubuntu 9.10 LAMP,并尝试使用 PHP 进行简单的电子邮件测试,但没有收到任何电子邮件。

mail("[email protected]", "eric-linux test", "test") or die("can't send mail"); 

运行该脚本时,没有收到 PHP 错误。

我的 php.ini 文件中有:

sendmail_path = /usr/lib/sendmail -t -i

$ sudo ps aux | grep sendmail
eric      2486  0.0  0.4   8368  2344 pts/0    T    14:52   0:00 sendmail -s “Hello world” [email protected]
eric      8747  0.0  0.3   5692  1616 pts/2    T    16:18   0:00 sendmail
eric      8749  0.0  0.3   5692  1636 pts/2    T    16:18   0:00 sendmail start
eric      9190  0.0  0.3   5692  1636 pts/2    T    19:12   0:00 sendmail start
eric      9192  0.0  0.3   5692  1616 pts/2    T    19:12   0:00 sendmail
eric      9425  0.0  0.3   5692  1620 pts/1    T    19:37   0:00 sendmail
eric      9427  0.0  0.3   6584  1636 pts/1    T    19:37   0:00 sendmail restart
eric      9429  0.0  0.3   5692  1636 pts/1    T    19:38   0:00 /usr/lib/sendmail restart
eric      9432  0.0  0.1   3040   804 pts/1    R+   19:38   0:00 grep --color=auto sendmail

当我运行 $ sendmail start 时,它只是挂在那里什么也不做。我还安装了 postfix 看看它是否有帮助,但没有用。

我尝试查看端口 25:

eric@eric-linux:~$ telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 eric-linux ESMTP Postfix (Ubuntu)

谢谢

答案1

你真的需要安装完整的 mta 吗?我从不使用 sendmail,而且我的所有服务器只安装了一个 postfix。在所有其他服务器上我都使用邮件传输协议.如果您的服务器不需要接收电子邮件,则配置会更简单,使用效率更高。

答案2

尝试“strace”sendmail 来了解它阻塞的原因。

尝试将其配置为使用智能主机(例如,您的内部网络邮件中继服务器,询问系统管理员):

yum|apt-get install sendmail-cf

vim /etc/mail/sendmail.mc 

define(`SMART_HOST',`smtpserver.tld')

或者

define(`SMART_HOST',`localhost')    <-- to enforce sendmail to use your postfix

请注意,在这个奇怪的语法中

dnl define(`SMART_HOST',`smtpserver.tld')

是注释行!所以如果你在 smart_host 默认行上发现 dnl,请删除它

建立conf

m4 sendmail.mc > sendmail.cf

service sendmail restart

测试一下:

sendmail -s "Test" [email protected]

答案3

尝试文档中的示例相反。如果有效,很可能您忘记将附加信息传递给 mail()。否则,要查找的区域将是您的 sendmail 配置。

答案4

你检查过防火墙吗?在配置了严格的防火墙,阻止了除守护进程正在使用的端口之外的所有输入和输出端口后,我一直在努力解决这个问题。

相关内容