最近发现服务器邮件队列里面有2000多封待发,找了2天才找到原因。
现象:
为在其他SMTP客户端发送邮件正常,在服务器本机发送邮件要卡一分钟,多线程的情况下要卡3分钟。
最后发现在服务器本机的客户端根本发不出邮件。
由于try-catch使用不当,导致错误信息也没报出来,实际出错的地方是javax.mail.Transport.send().
报了:
- javax.mail.MessagingException: 501 Domain address required: HELO
- at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1481)
- at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:917)
- at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:417)
- at javax.mail.Service.connect(Service.java:288)
- at javax.mail.Service.connect(Service.java:169)
原因:
是因为服务器的hostname引起的。
可以通过hostname命令找到名字,然后用ping命令看能否ping通。
结果肯定是不通的。
解决方案:
修改/etc/hosts文件,将host那么加到127.0.0.1那一行的最后。