Jenkins 找不到 smtp.gmail.com

use*_*582 5 email gmail jenkins

我在 RHEL6 上的 tomcat 容器中运行 Jenkins。我的计算机位于我公司代理的后面,我已在插件配置选项卡中定义了该代理。我可以下载插件以便可以使用(至少对于端口 8080 来说)。

我现在正在尝试配置 SMTP 服务器。我正在尝试使用本地主机 SMTP 服务器,但无法使其工作,因此我决定首先使用应该工作的东西(gmail)进行调试。我已将 SMTP 服务器设置为“smtp.gmail.com”和端口“465”。我也尝试过端口 25、587。我得到回应:

javax.mail.MessagingException: Unknown SMTP host: smtp.gmail.com;
  nested exception is:
java.net.UnknownHostException: smtp.gmail.com
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1932)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
Run Code Online (Sandbox Code Playgroud)

可能出什么问题了?

Tob*_*son 2

Java Mail 不支持使用 HTTP 代理;http://www.oracle.com/technetwork/java/faq-135477.html#proxy

然而;

如果您的代理服务器支持 SOCKS V4 或 V5 协议(http://www.socks.nec.com/aboutsocks.html、RFC1928)并允许匿名连接,并且您使用的是 JDK 1.5 或更高版本以及 JavaMail 1.4.5 或更新后,您可以通过设置“mail.smtp.socks.host”属性,在每个会话、每个协议的基础上配置 SOCKS 代理,如 com.sun.mail.smtp 包的 javadocs 中所述。“imap”和“pop3”协议也存在类似的属性。

作为替代方案,您可以在本地计算机上设置 MTA,例如 postfix 或 sendmail,它们将接受本地主机上的连接,并且可能比 Java 更易于配置以穿透代理配置。

注意:如果您的公司阻止非 http 端口(例如 80、8080、443 之外的任何端口)上的连接,那么您可能需要寻找其他解决方案,也许需要从本地系统管理员那里获得一些支持。

还; 如果你想聪明点,你可以使用 ssh 设置一个(临时)socks 代理,命令如下:

ssh -D 9090 <remoteserver>
Run Code Online (Sandbox Code Playgroud)

这假设远程服务器具有不受限制的访问权限,并且您可以将能够处理 SOCKS 的连接客户端指向 localhost:9090。