我在使用 sendmail 时遇到了很多问题。我尝试过的所有解决方案都不起作用。
首先:sendmail 挂起 60 秒,然后没有发送电子邮件。
为了解决这个问题,我采用了网络上的建议,将我的域名设置/etc/hostname
为完全限定域名 (FQDN),然后将其/etc/hosts
也放入其中。这做过摆脱挂起,但我仍然没有收到从 sendmail 发送的任何电子邮件。
第二:安装postfix
这并没有解决问题。通过sendmail
或mail
在命令行发送电子邮件均失败。示例:
echo "a message" | sendmail [email protected]
echo "a message" | mail [email protected]
两个命令均立即返回且没有错误,但是 gmail 帐户从未收到任何电子邮件。
我确保路由器上的 25 端口也打开了(尽管这应该不是问题,因为 Thunderbird 可以在路由器后面发送电子邮件)。
我需要让它在 PHP 中运行,但无法确定从程序到远程电子邮件服务器的众多步骤中哪个步骤失败了。我该如何解决这个问题?
答案1
服务器应该能够连接到其他 smtp 服务器
$ nc -v mta5.am0.yahoodns.net 25
Connection to mta5.am0.yahoodns.net 25 port [tcp/smtp] succeeded!
220 mta1193.mail.ne1.yahoo.com ESMTP YSmtpProxy service ready
^C
当端口 25 对传出流量关闭时,情况如下:
$ nc -v mta5.am0.yahoodns.net 25
nc: connect to mta5.am0.yahoodns.net port 25 (tcp) failed: Connection timed out
查看请求是否被防火墙阻止。
答案2
您是否尝试过 25 以外的其他端口?当您不位于住宅 ISP 后面时,您很可能不会遇到此问题。此外,当您说 thunderbird 发送邮件时,您是否对相关服务器进行了身份验证?如果没有,那么您可能正在通过 ssl 端口连接到另一台服务器。