首页 文章

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

提问于
浏览
2

我有一个用于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 回答

  • 1

    调试消息的差异并不重要 . 这只是两个(本地)邮件服务器放在"connection greeting reply"行中的一个完美差异 . 例如,运行Postfix作为其MTA的Linux服务器通常会说:

    220 smtp.example.com ESMTP Postfix
    

    ESMTP spec说:

    “SMTP服务器实现可能包括在220代码之后的连接问候答复中识别其软件和版本信息,这种做法允许更有效地隔离和修复任何问题 . 实现可以为SMTP服务器提供禁用软件和版本的规定公告引起安全问题 . “

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

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

  • 0

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

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

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

相关问题