3

如何为在 Windows 上运行的 Jenkins 启用 STARTTLS?

我在 Windows 2008 服务器上运行 Jenkins,并且我的电子邮件通知配置了以下信息:

  • 主机:smtp.office365.com
  • 港口:587
  • SMTP 身份验证:真
  • SSL:真
  • ETC...

当我运行测试时,我收到以下异常消息:

javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 587;
  nested exception is:
    javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

该问题似乎是由于smtp.office365.com使用STARTTLS来确保连接安全。我尝试通过jenkins.xml配置文件启用STARTTLS,方法是添加以下参数:

-Dmail.smtp.starttls.enable=true

  1. 这是正确的开关/参数吗?
  2. jenkins.xml是更新的正确文件吗?

注意:我知道,有些人已经在他们的 Linux 环境中解决了这个问题,但我正在寻找一个特定于 Windows 的解决方案。以下是我当前 jenkins.xml 文件的片段:

<service>
  <id>jenkins</id>
  <name>Jenkins</name>
  <description>This service runs Jenkins continuous integration system.</description>
  <env name="JENKINS_HOME" value="%BASE%"/>

  <!--
    if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe.
    The following value assumes that you have java in your PATH.
  -->
  <executable>%BASE%\jre\bin\java</executable>
  <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 -Dmail.smtp.starttls.enable=true</arguments>
  <!--
    interactive flag causes the empty black Java window to be displayed.
    I'm still debugging this.
  <interactive />
  -->
  <logmode>rotate</logmode>

  <onfailure action="restart" />
</service>
4

1 回答 1

0

我认为论证顺序很重要。我必须将 -Dmail.smtp.starttls.enable=true 放在 -jar 参数之前。

-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dmail.smtp.starttls.enable=true -jar "%BASE%\jenkins.war" --httpPort=8080

于 2014-02-03T12:12:05.517 回答