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