自从我将服务器从 Ubuntu 13.04 更新到 14.04 后,我就无法再发送电子邮件了。
我的服务器上安装了几个网站,但它们都无法再发送电子邮件。更新之前,一切都运行正常。
有些网站基于 Drupal,因此它们使用 Drupal 电子邮件系统发送电子邮件。其他网站使用 phpmailer 来发送电子邮件。
我也尝试过直接用 mail 命令发送电子邮件,但这也不起作用。例如:
mail [email protected]
经过几个小时的调查,我不知道问题出在哪里。我尝试删除/安装所有涉及电子邮件系统的程序,例如:
后缀
通常,当我设置新服务器并且我的网站无法发送电子邮件时,我只需安装这些组件,它每次都可以解决问题:
sudo apt-get install php-pear
sudo pear install mail
sudo pear install Net_SMTP
sudo pear install Auth_SASL
sudo pear install mail_mime
sudo apt-get install postfix
因此我也尝试卸载/安装所有这些,但没有帮助。
我该如何诊断这个问题?我的邮件日志没有什么帮助。
**** 编辑 ****
经过上述最后一个步骤后,我终于在 mail.err 文件中发现了一些内容:
Dec 8 21:08:59 ns3268116 postfix/master[22716]: fatal: bind 0.0.0.0 port 25: Address already in use
Dec 8 21:52:37 ns3268116 postfix/master[27738]: fatal: bind 0.0.0.0 port 25: Address already in use
另外,我有时(我的意思是不是每次)在 mail.log 中发现一些特殊的东西:
Dec 8 19:07:27 ns3268116 postfix/smtp[11051]: A84F8120023: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[2a00:1450:4013:c01::1b]:25, delay=1.8, delays=0.19/0/0.85/0.79, dsn=5.7.1, status=bounced (host gmail-smtp-in.l.google.com[2a00:1450:4013:c01::1b] said: 550-5.7.1 [2001:41d0:8:5d63::1 12] Our system has detected that this 550-5.7.1 message is likely unsolicited mail. To reduce the amount of spam sent 550-5.7.1 to Gmail, this message has been blocked. Please visit 550-5.7.1 http://support.google.com/mail/bin/answer.py?hl=en&answer=188131 for 550 5.7.1 more information. v10si10884736wif.101 - gsmtp (in reply to end of DATA command))
**** 编辑 2 ****
由于 sendmail 似乎与 postfix 冲突(请参阅 masegaloeh 的评论/回答),我卸载了它并重新启动了服务器。以下是日志内容:
Dec 8 22:40:24 ns3268116 postfix/master[4447]: daemon started -- version 2.11.0, configuration /etc/postfix
Dec 8 22:40:24 ns3268116 postfix/pickup[4481]: BDDA9120427: uid=33 from=<[email protected]>
Dec 8 22:40:24 ns3268116 postfix/cleanup[4483]: BDDA9120427: message-id=<[email protected]>
Dec 8 22:40:24 ns3268116 postfix/qmgr[4482]: BDDA9120427: from=<[email protected]>, size=664, nrcpt=1 (queue active)
Dec 8 22:40:24 ns3268116 postfix/pickup[4481]: DD1FC12006A: uid=33 from=<[email protected]>
Dec 8 22:40:24 ns3268116 postfix/cleanup[4483]: DD1FC12006A: message-id=<[email protected]>
Dec 8 22:40:24 ns3268116 postfix/qmgr[4482]: DD1FC12006A: from=<[email protected]>, size=863, nrcpt=1 (queue active)
Dec 8 22:40:28 ns3268116 postfix/smtp[4498]: DD1FC12006A: to=<[email protected]>, relay=mta7.am0.yahoodns.net[66.196.118.240]:25, delay=1331, delays=1328/0/2.3/0.84, dsn=2.0.0, status=sent (250 ok dirdel)
Dec 8 22:40:28 ns3268116 postfix/qmgr[4482]: DD1FC12006A: removed
Dec 8 22:40:56 ns3268116 postfix/smtp[4493]: connect to example.com[93.184.216.119]:25: Connection timed out
Dec 8 22:41:26 ns3268116 postfix/smtp[4493]: connect to example.com[2606:2800:220:6d:26bf:1447:1097:aa7]:25: Connection timed out
Dec 8 22:41:26 ns3268116 postfix/smtp[4493]: BDDA9120427: to=<[email protected]>, relay=none, delay=1389, delays=1328/0.08/62/0, dsn=4.4.1, status=deferred (connect to example.com[2606:2800:220:6d:26bf:1447:1097:aa7]:25: Connection timed out)
现在我这样做:
sudo netstat -tulpn | grep 25
我得到:
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 7783/master
tcp6 0 0 127.0.0.1:8079 :::* LISTEN 4525/java
tcp6 0 0 :::8983 :::* LISTEN 4525/java
tcp6 0 0 :::25 :::* LISTEN 7783/master
但电子邮件仍未发送。
实际上,现在我可以使用命令邮件发送电子邮件。但这很奇怪,因为只有在抄送字段上定义的电子邮件才会收到电子邮件。
Drupal 网站也再次能够发送电子邮件。
但 phpmailer 仍然无法工作。有人知道那里缺少什么吗?
答案1
绑定问题
命令
netstat
返回tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 14774/sendmail: MTA
如果您想使用 postfix,请卸载/停止 sendmail。
sudo apt-get remove sendmail
然后重启postfix
sudo service postfix restart
电子邮件退回问题
这行
12 月 8 日 19:07:27 ns3268116 postfix/smtp[11051]: A84F8120023: to=,relay=gmail-smtp-in.l.google.com[2a00:1450:4013:c01::1b]:25,delay=1.8,delays=0.19/0/0.85/0.79,dsn=5.7.1,status=bounced(host gmail-smtp-in.l.google.com[2a00:1450:4013:c01::1b]表示:550-5.7.1 [2001:41d0:8:5d63::1 12] 我们的系统检测到此 550-5.7.1 邮件可能是未经请求的邮件。为了减少发送的垃圾邮件数量550-5.7.1 至 Gmail,此邮件已被屏蔽。请访问 550-5.7.1http://support.google.com/mail/bin/answer.py?hl=en&answer=188131有关 550 5.7.1 的更多信息。v10si10884736wif.101 - gsmtp(回复 DATA 命令的结束)
说谷歌不喜欢你的电子邮件。看来你遇到了麻烦,因为你使用 IPv6 发送电子邮件。禁用它也许可以解决这个问题。
添加/编辑此参数main.cf
inet_protocols = ipv4
不要忘记配置 SPF、DKIM、PTR 以确保电子邮件的可传递性。请参阅防止邮件被标记为垃圾邮件