【问题标题】:JavaMail throws MailConnectException on Linux VPS but works locally at Windows machineJavaMail 在 Linux VPS 上抛出 MailConnectException 但在 Windows 机器上本地工作
【发布时间】:2020-04-02 19:32:01
【问题描述】:

我正在尝试在 Linux VPS(Debian 10 版本)上运行 Spring Boot Web 应用程序。

当用户点击页面时,我使用 JavaMail api 构建和发送欢迎消息。

使用 tomcat 9 在 Windows 10 机器上本地运行时完美运行。

部署到VPS tomcat 9后,尝试发送邮件时出现异常。

有堆栈跟踪:

 [2020-04-02 16:49:34] [info]
 org.springframework.mail.MailSendException: Mail server connection
 failed; nested exception is com.sun.mail.util.MailConnectException:
 Couldn't connect to host, port: mail.mydomain.hr, 587; timeout -1;
 [2020-04-02 16:49:34] [info]   nested exception is: [2020-04-02
 16:49:34] [info] #011java.net.ConnectException: Connection timed out
 (Connection timed out). Failed messages:
 com.sun.mail.util.MailConnectException: Couldn't connect to host,
 port: mail.mydomain.hr, 587; timeout -1;

有application.properties

spring.mail.host=mail.mydomain.hr
spring.mail.port=587
spring.mail.username=info@mydomain.hr
spring.mail.password=mypass
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

任何想法如何解决这个问题?

【问题讨论】:

  • 防火墙问题。与您的提供商讨论如何发送邮件。
  • 您的 vps 到邮件主机的连接是否启用? nc -zv mail.mydomain.hr 587 的输出是什么?
  • @lainatnavi 首先 DNS fwd/rev 不匹配,然后连接超时。从我的 Mac 本地尝试相同的结果是:连接到 mail.mydomain.hr 端口 587 [tcp/submission] 成功!
  • @spalatrin 是您运行 tomcat 的同一 VPS 上的邮件服务器吗?如果使用 IP 地址而不是 DNS,nc 会成功吗?您可以控制邮件服务器吗?尝试添加尽可能多的细节。查看这篇文章,在我看来它与您的问题有关:serverfault.com/questions/468855/smtp-reverse-dns-mismatch
  • @lainatnavi 不,它不在同一台服务器上。使用 ip 而不是 DNS 时,VPS 没有 nc 成功。但是在使用 bot、ip 或 DNS 时从我的 Mac 机器上成功。是的,我可以控制邮件服务器。

标签: java spring spring-boot jakarta-mail tomcat9


【解决方案1】:

通过这两个步骤解决:

将 VPS rDNS 更改为 mydomain.hr -(我不确定这是否有必要)

联系了我的支持以重新启动防火墙,它现在正在工作。所以这是防火墙问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-30
    • 2021-01-23
    • 2013-01-22
    • 2017-10-23
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2021-02-18
    相关资源
    最近更新 更多