【问题标题】:Java Mail client not working on LinuxJava Mail 客户端无法在 Linux 上运行
【发布时间】:2015-12-23 20:23:05
【问题描述】:

我有一个用于 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 调试日志:

调试:setDebug:JavaMail 版本 1.4.3 调试:getProvider() 返回 javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc] 调试 SMTP:useEhlo true,useAuth true 调试 SMTP: 试图连接到主机“my.mail.server”,端口 465,isSSL true 220 my.mail.server ESMTP 就绪。调试 SMTP:连接到主机 “我的邮件服务器”,端口:465

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

调试:setDebug:JavaMail 版本 1.4.3 调试:getProvider() 返回 javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc] 调试 SMTP:useEhlo true,useAuth true 调试 SMTP: 试图连接到主机“my.mail.server”,端口 465,isSSL true 220 my.mail.server ESMTP Postfix 调试 SMTP:连接到主机 “我的邮件服务器”,端口:465

我将不胜感激。

【问题讨论】:

    标签: java linux email zimbra


    【解决方案1】:

    调试消息的差异并不显着。这只是两个(本地)邮件服务器在其“连接问候回复”行中的外观差异。例如,以MTA 运行Postfix 的Linux 服务器通常会说:

    220 smtp.example.com ESMTP Postfix
    

    ESMTP spec 说:

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

    真正的问题是别的。

    如果我尝试对此进行调试,我会首先查看 MTA 日志,看看它们是否说明了会话被关闭的原因。我还会检查用户/密码是否正确,以及 MTA 是否已正确配置以允许您尝试执行的操作。

    【讨论】:

    • 我做了一些研究,zimbra 使用后缀 mta,但我不明白同一个 smtp 客户端如何在 Windows 上工作。也许Linux服务器上的错误配置可能会影响?
    • 可能。但那是猜测。查看日志文件。
    【解决方案2】:

    我发现了这个问题,本地和外部访问的服务器身份验证是不同的,对于开发,我们使用的是外网的 windows 服务器,和内网的 linux 服务器。

    其实是邮件服务器配置错误

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

    【讨论】:

    • 我无法提供具有特定相同配置的答案,因为这个线程是关于邮件客户端的。我回答只是为了向开发人员提供足够的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多