【问题标题】:imap.gmail.com 993 - Connect fails on server but works locallyimap.gmail.com 993 - 在服务器上连接失败,但在本地工作
【发布时间】:2021-01-29 15:24:40
【问题描述】:

我正在运行 Selenium/Cucumber 测试,其中我使用 JavaMail API 访问/读取来自 Gmail 帐户的电子邮件。这一切都在本地运行良好,但是在 TeamCity 服务器上运行 Selenium 时与 imap 的连接失败。似乎运行 TeamCity 的计算机无法连接到端口 993。

这些是我尝试过的测试/步骤:

  1. 在本地运行 telnet imap.gmail.com 993 会进入一个空白窗口 = 成功,连接已建立
  2. Selenium 中的 imap 代码每次都在本地工作(Windows 10)
  3. 在 TeamCity 上运行相同的 Selenium 脚本会导致以下错误:
      com.sun.mail.util.MailConnectException: Couldn't connect to host, port: imap.gmail.com, 993; timeout -1
      com.sun.mail.util.MailConnectException: Couldn't connect to host, port: imap.gmail.com, 993; timeout -1
      Caused by: java.net.ConnectException: Connection refused: connect
  1. 我登录到运行 TeamCity 的框 (Windows 10),并在传出连接上启用了 Windows 防火墙上的端口 993,但这没有帮助
  2. 在 TeamCity 计算机上运行 telnet imap.gmail.com 993 会导致 Connecting To imap.gmail.com...Could not open connection to the host, on port 993: Connect failed
  3. 在 TeamCity 计算机上运行 openssl s_client -connect imap.gmail.com:993 会导致
7592:error:0200274D:system library:connect:reason(1869):../openssl-1.1.1a/crypto/bio/b_sock2.c:110:
7592:error:2008A067:BIO routines:BIO_connect:connect error:../openssl-1.1.1a/crypto/bio/b_sock2.c:111:
7592:error:0200274D:system library:connect:reason(1869):../openssl-1.1.1a/crypto/bio/b_sock2.c:110:
7592:error:2008A067:BIO routines:BIO_connect:connect error:../openssl-1.1.1a/crypto/bio/b_sock2.c:111:
connect:errno=0
  1. 我已允许访问 Gmail 帐户上不太安全的应用程序并尝试了 https://accounts.google.com/b/0/DisplayUnlockCaptcha ,但简单的测试 telnet imap.gmail.com 993 无论如何都不会受到影响

这是在本地工作的 Selenium 中使用的代码:

Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imaps");
    
    Session session = Session.getInstance(props, null);
    Store store = session.getStore("imaps");
    store.connect("imap.gmail.com", email, password);

总结一下:code/imap 连接在本地工作,但在服务器计算机上不起作用。在 Windows 防火墙中启用端口 993 上的传出连接没有帮助。

任何想法都将不胜感激,因为我非常坚持这个想法。

【问题讨论】:

  • 我不确定 TeamCity 是什么,但有可能端口 993 是全局防火墙,或者是另一个级别的防火墙。你能到达 443 端口吗?
  • 嗨 Max,连接到 443 也失败了。
  • 哦,对了,如果您尝试使用 Web 端口,则必须连接到 mail.gmail.com 或类似网站,而不是 imap.gmail.com。
  • 我可能将 teamcity 与另一个 CI 事物混淆了......但 IIRC 它完全不允许传出连接。您应该将其用于构建/测试软件,而不是做任何其他事情。你的测试永远不会通过或失败,这取决于某个随机的互联网站点是否关闭,明白吗?
  • 经典的响应是存根服务器。我已经在 java 中使用 mockito 和在 ruby​​ 中使用 factorygirl(自重命名)做到了这一点。您会发现,当您存根远程资源时,您的测试运行得更快、更可靠。

标签: windows email jakarta-mail imap firewall


【解决方案1】:

问题是:外部硬件防火墙阻止了端口 993 上的传出连接。

通过允许该端口上的连接解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多