Java Mail客户端无法在Linux上运行

时间:2015-09-25 22:48:21

标签: java linux email zimbra

我有一个用于zimbra邮件服务器的电子邮件ssl客户端,它在Windows上完美运行但我在linux上遇到了失败身份验证,我已经验证了所有网络配置。 dns,端口和防火墙都是正确的

会话的属性:

props.put("mail.smtps.host", "my.mail.server");
props.put("mail.smtps.host", "my.mail.server");
props.put("mail.smtps.starttls.enable", "true");
props.put("mail.smtps.port", "465");
props.put("mail.smtps.auth", "true");
props.put("mail.smtps.ssl.trust", "my.mail.server");

参加会议:

Session session = Session.getDefaultInstance(props);

运输:

Transport t = session.getTransport("smtps");
t.connect("user", "pass");
t.sendMessage(message, message.getAllRecipients());

在使用调试时引起我注意的是消息中的后缀响应

Windows调试日志:

  

DEBUG:setDebug:JavaMail版本1.4.3 DEBUG:getProvider()返回   javax.mail.Provider [交通,SMTPS,com.sun.mail.smtp.SMTPSSLTransport,太阳   Microsystems,Inc] DEBUG SMTP:useEhlo true,useAuth true DEBUG SMTP:   尝试连接到主机" my.mail.server",端口465,isSSL true 220   my.mail.server ESMTP准备就绪。 DEBUG SMTP:连接到主机   " my.mail.server",port:465

同时在Linux上我得到了这个:

  

DEBUG:setDebug:JavaMail版本1.4.3 DEBUG:getProvider()返回   javax.mail.Provider [交通,SMTPS,com.sun.mail.smtp.SMTPSSLTransport,太阳   Microsystems,Inc] DEBUG SMTP:useEhlo true,useAuth true DEBUG SMTP:   尝试连接到主机" my.mail.server",端口465,isSSL true 220   my.mail.server ESMTP Postfix DEBUG SMTP:已连接到主机   " my.mail.server",port:465

我将不胜感激。

2 个答案:

答案 0 :(得分:1)

调试消息的区别并不重要。这两个(本地)邮件服务器在他们的"连接问候回复"线。例如,运行Postfix作为其MTA的Linux服务器通常会说:

220 smtp.example.com ESMTP Postfix

ESMTP spec说:

  

" SMTP服务器实现可能包括其身份的识别      连接问候答复中的软件和版本信息      在220代码之后,这种做法允许更有效的隔离      并修复任何问题。实施可以作出规定      SMTP服务器禁用软件和版本公告在哪里      它会引起安全问题。"

真正的问题将是其他问题。

如果我试图调试这个,我会先查看MTA日志,看看他们是否说出会话被关闭的原因。我还会检查用户/密码是否正确以及是否已正确配置MTA以允许您尝试执行的操作。

答案 1 :(得分:0)

我发现了问题,服务器auth对于本地和外部访问是不同的,对于开发我们使用网外的Windows服务器,以及用于Intranet的linux服务器。

事实上,这是邮件服务器上的配置错误

现在,对于本地和公共访问,java邮件客户端保持不变。