解决发邮件出现“501 Domain address required: HELO”问题

简介:

今天出现了一个奇怪的问题,产品机A上有一个邮件服务器,产品机A和产品机B的java程序都是用A上的邮件服务器发邮件,但是测试发现,产品机B上的java程序发送邮件正常,而产品机A上的java程序发送不出去,更奇怪的是A上的php程序也能够发送邮件!

查到tomcat日志如下:
 
 
  1. javax.mail.MessagingException: 501 Domain address required: HELO  
  2. at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1481)  
  3. at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:917)  
  4. at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:417)  
  5. at javax.mail.Service.connect(Service.java:288)  
  6. at javax.mail.Service.connect(Service.java:169)  
  7. at 
比较了A和B的java程序,完全一模一样。
查了半天百度,google都没有结果
最后找到了一个说法是因为hostname引起的,于是我用hostname命令查到了A的hostname是PRODA,而ping 它却是没有结果,看了一下/etc/hosts文件中,发现“127.0.0.1 PROD-A”,写多了一杠

 
改好之后再测试就能够发送了
我估计虽然传的是server的域名,但是mail.jar会先获取本机的hostname进行解析,解析不到就不发送HELO命令了,但是Server需要检测这个命令。而php的发邮件程序实现时不判断hostname就直接发送HELO命令,因此能够发送成功

     本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/1045819,如需转载请自行联系原作者




相关文章
Rejected request from RFC1918 IP to public server address
Rejected request from RFC1918 IP to public server address
4944 0
|
网络安全 开发工具 git
Unable to negotiate with xx.xxx.xxxx port 22: no matching host key type found. Their offer: ssh-rsa(解决的两种方式)
Unable to negotiate with xx.xxx.xxxx port 22: no matching host key type found. Their offer: ssh-rsa(解决的两种方式)
3920 0
Unable to negotiate with xx.xxx.xxxx port 22: no matching host key type found. Their offer: ssh-rsa(解决的两种方式)
|
8月前
|
监控 安全 网络安全
Failed password for invalid user www from xx.xx.xx.xxx port xxxxx ssh2 问题处理
【5月更文挑战第6天】Failed password for invalid user www from xx.xx.xx.xxx port xxxxx ssh2 问题处理
819 1
|
8月前
|
网络架构 开发者
成功解决localhost is not a valid address
成功解决localhost is not a valid address
内网穿透报错 Invalid Host header
内网穿透报错 Invalid Host header
581 0
|
安全 网络安全 开发工具
【已解决】Unable to negotiate with 47.98.49.44 port 22: no matching host key type found. Their offer: ssh
Unable to negotiate with 47.98.49.44 port 22: no matching host key type found. Their offer: ssh
518 0
【已解决】Unable to negotiate with 47.98.49.44 port 22: no matching host key type found. Their offer: ssh
|
SQL Windows
Unable to determine if the owner (Domain\UserName) of job JOB_NAME has server access
早上巡检的的时候,发现一数据库的作业报如下错误(作业名等敏感信息已经替换),该作业的OWNER为一个域账号: JOB RUN: 'JOB_NAME' was run on 2016-6-1 at 7:00:00 DURATION: 0 hours, 0 minutes, 1 seconds STATUS: Failed MESSAGES: The job failed.
1437 0