【问题标题】:JavaMail API connection to Mercury Mail server errorJavaMail API 连接到 Mercury Mail 服务器错误
【发布时间】:2012-10-06 01:22:33
【问题描述】:

我正在尝试使用 Java 应用程序连接到 Mercury 邮件服务器,并且我正在使用 JavaMail api。连接不成功,我在日志中收到此错误:

EHLO x.x.x.x
554 HELO 格式无效

这意味着它连接到服务器但helo格式不是服务器喜欢的东西。我已经厌倦了调试它,我在 JavaMail “SMTPTransport” 类中找到了这段代码:

serverOutput.write(cmdBytes);
serverOutput.write(CRLF);
serverOutput.flush();

并根据代码: 私有静态最终字节[] CRLF = { (byte)'\r', (byte)'\n' };
这似乎与 RFC 821 一致

我知道在 windows 上 \n 有不同的含义,但我不确定这是否真的是问题的根源?如果不是,那是什么原因造成的? 我用邮件客户端检查了邮件服务器,它工作正常,我用 James 邮件服务器检查了代码,它也工作正常!

JavaMail API 版本为:1.4.5(最新版本)
水星/32 : 4.7

【问题讨论】:

  • 如何配置 Mercury 服务器以验证客户端主机名? EHLO 的参数应该是客户端的 fqdn(但如果没有可用的 fqdn,则可以是客户端的 IP)。 Mercury 服务器可能设置为验证客户端上的反向 DNS 和/或拒绝不可路由的客户端地址。最好的办法是使用 Wireshark 从工作客户端捕获会话并与失败的会话进行比较。
  • 另外,serverOutput的编码定义是什么?如果它不是二进制的,那么您实际上可能正在发送 CR-CR-LF,这可能是个问题。
  • 关于 serverOutput 我不确定它是如何工作的 我无法进入源代码,因为我提到它是 JavaMail API 包的一部分,但我同意你的观点,并在我的帖子中提到我如您所说,怀疑此 CRLF 可能是 CR CR LF
  • 我已经尝试 telnet 到服务器并使用相同的 IP 地址发送 Ehlo 工作正常。请注意,这一切都发生在同一台机器上,发送方和接收方的服务器都是本地主机。我不确定哪些设置可能对此有影响,我在哪里可以检查?

标签: java smtp jakarta-mail mercury-mta


【解决方案1】:

您可能需要检查服务器上的日志以找出它真正在抱怨什么,但是... 您可以尝试的一件事是将 mail.stmp.localhost 属性设置为您机器的正确 DNS 主机名。从调试输出看来,您的机器无法确定自己的名称,因此改为发送 IP 地址。

【讨论】:

  • 这是来自服务器的日志,服务器和应用程序都在本地主机上,我认为 ip 是客户端 ip 而不是这里的服务器! EHLO 来自客户端,它用它发布它的 IP,我使用 127.0.0.1 但同样的快乐
  • 就邮件服务器而言,您的应用程序是客户端。 EHLO 命令应该包含客户端计算机的主机名,在您的情况下是“localhost”或客户端/服务器计算机上的真实 DNS 名称。 “127.0.0.1”不是主机名,而是 IP 地址。将属性设置为实际的主机名。
【解决方案2】:

我在 554 Invalid HELO format 上进行了 Google 搜索,并获得了大量关于您的特定 Mercury 问题的点击。这是一个错误。

http://community.pmail.com/forums/thread/4136.aspx

http://www.mantisbt.org/bugs/view.php?id=9645

http://ellislab.com/codeigniter/forums/viewthread/153130/

等等……

【讨论】:

  • 就是这样!谢谢。没看懂,帖子4年多了,水星主论坛的那个5年了还没修?!
【解决方案3】:

对我来说,在一个 web 项目中 PHPMailer() 类正在强制进行身份验证。将 Auth 更改为 false 修复了它。也许检查类似的选项以在您的语言中将 Auth 设置为 false。

这是我在 PHP 代码中从 true 更改为 false 并在 php.ini 文件中添加 sendmail_from 的原因

    $mail = new PHPMailer();
    $mail->SMTPAuth = false;

【讨论】:

    猜你喜欢
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    相关资源
    最近更新 更多