我有一个用于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
我将不胜感激。
答案 0 :(得分:1)
调试消息的区别并不重要。这两个(本地)邮件服务器在他们的"连接问候回复"线。例如,运行Postfix作为其MTA的Linux服务器通常会说:
220 smtp.example.com ESMTP Postfix
" SMTP服务器实现可能包括其身份的识别 连接问候答复中的软件和版本信息 在220代码之后,这种做法允许更有效的隔离 并修复任何问题。实施可以作出规定 SMTP服务器禁用软件和版本公告在哪里 它会引起安全问题。"
真正的问题将是其他问题。
如果我试图调试这个,我会先查看MTA日志,看看他们是否说出会话被关闭的原因。我还会检查用户/密码是否正确以及是否已正确配置MTA以允许您尝试执行的操作。
答案 1 :(得分:0)
我发现了问题,服务器auth对于本地和外部访问是不同的,对于开发我们使用网外的Windows服务器,以及用于Intranet的linux服务器。
事实上,这是邮件服务器上的配置错误
现在,对于本地和公共访问,java邮件客户端保持不变。