我有一个用于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 = Session.getDefaultInstance(props);
运输 :
Transport t = session.getTransport("smtps");
t.connect("user", "pass");
t.sendMessage(message, message.getAllRecipients());
在使用调试时引起我注意的是消息中的后缀响应
Windows Debug Log:
DEBUG:setDebug:JavaMail版本1.4.3 DEBUG:getProvider()返回javax.mail.Provider [TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun 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”,端口:465
meanwhile on Linux i got this:
DEBUG:setDebug:JavaMail版本1.4.3 DEBUG:getProvider()返回javax.mail.Provider [TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun 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”,端口:465
我将不胜感激任何帮助 .
2 回答
调试消息的差异并不重要 . 这只是两个(本地)邮件服务器放在"connection greeting reply"行中的一个完美差异 . 例如,运行Postfix作为其MTA的Linux服务器通常会说:
ESMTP spec说:
真正的问题将是其他问题 .
如果我试图调试这个,我会先查看MTA日志,看看他们是否说明会话正在关闭的原因 . 我还会检查用户/密码是否正确以及MTA是否已正确配置以允许您尝试执行的操作 .
我发现了问题,服务器auth对于本地和外部访问是不同的,对于开发我们使用网外的Windows服务器,以及用于Intranet的linux服务器 .
实际上,这是邮件服务器上的错误配置
现在,对于本地和公共访问,java邮件客户端保持不变 .