UWS*_*tor 18 jenkins jenkins-plugins
我正在尝试设置Jenkins使用我们公司的SMTP服务器来发送构建通知.我们在端口587上使用TLS作为加密方法.但我似乎无法使电子邮件通知正常工作.
这是我的Hudson.Tasks.Mailer.xml文件,所以你可以看到我的配置(我已经删除了SMTP auth用户和密码并稍微更改了smtpHost以防万一)
<hudson.tasks.Mailer_-DescriptorImpl>
<helpRedirect/>
<defaultSuffix></defaultSuffix>
<hudsonUrl>http://localhost:8080/</hudsonUrl>
<smtpAuthUsername></smtpAuthUsername>
<smtpAuthPassword></smtpAuthPassw$
<adminAddress></adminAddress>
<smtpHost>pod#####.outlook.com</smtpHost>
<useSsl>true</useSsl>
<smtpPort>587</smtpPort>
<charset>UTF-8</charset>
</hudson.tasks.Mailer_-DescriptorImpl>
Run Code Online (Sandbox Code Playgroud)
看起来这是一个已知的问题,来自http://issues.hudson-ci.org/browse/HUDSON-2206
我对Apple OS(运行Jenkins的机器)不是很熟悉,但我想我可以使用上面提到的解决方法解决问题.我不完全知道从哪里把那个解决办法了,所以我试图把它的位置:/库/ Application Support /詹金斯/ jenkins-runner.sh
defaults="defaults read /Library/Preferences/org.jenkins-ci"
war=`$defaults war` || war="/Applications/Jenkins/jenkins.war"
javaArgs="-Dmail.smtp.starttls.enable=\"true\""
heapSize=`$defaults heapSize` && javaArgs="$javaArgs -Xmx${heapSize}"
permGen=`$defaults permGen` && javaArgs="$javaArgs -XX:MaxPermSize=${permGen}"
home=`$defaults JENKINS_HOME` && export JENKINS_HOME="$home"
add_to_args() {
val=`$defaults $1` && args="$args --${1}=${val}"
}
args=""
add_to_args prefix
add_to_args httpPort
add_to_args httpListenAddress
add_to_args httpsPort
add_to_args httpsListenAddress
add_to_args ajp13Port
add_to_args ajp13ListenAddress
echo "JENKINS_HOME=$JENKINS_HOME"
echo "Jenkins command line for execution"
echo /usr/bin/java $javaArgs -jar "$war" $args
exec /usr/bin/java $javaArgs -jar "$war" $args
Run Code Online (Sandbox Code Playgroud)
这似乎没有解决它.当Jenkins启动时,我可以在控制台中看到该调用,但是当我尝试测试配置电子邮件时,我收到以下错误:
Failed to send out e-mail
javax.mail.MessagingException: Could not connect to SMTP host: pod#####.outlook.com, port: 587;
nested exception is:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
Run Code Online (Sandbox Code Playgroud)
关于我还能尝试什么的任何想法?我已经尝试切换电子邮件帐户以使用gmail的smtp服务器并且工作正常,但如果可以,我宁愿使用我们的smtp服务器.
小智 23

将SMTP端口从587更改为465可以解决此问题:
SMTP server: smtp.mandrill.com
Use SMTP Authentication: true
Use SSL: true
SMTP Port: 465
Run Code Online (Sandbox Code Playgroud)
据我所知(免责声明:我绝不是Hudson/Jenkins专家) Hudson/Jenkins电子邮件插件支持SSL加密的SMTP通信 - 但是这种实现要求通信从一开始就加密.
在端口587上连接时,另一端的服务器可能需要STARTTLS命令(请参阅此SSL vs TLS与STARTTLS文章).使用纯文本发送此命令以"升级"连接以使用SSL/TLS.
Hudson/Jenkins尝试开始在端口587上协商SSL,这很快被拒绝,导致以下错误:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
Run Code Online (Sandbox Code Playgroud)
我尝试添加建议的JAVA选项"-Dmail.smtp.starttls.enable = true"以启用TLS:
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这并没有为我解决问题.
将端口更改为465后,SSL协商正常,通信成功.
希望有所帮助.
注意:当您为任何"SSL - 端口465"或"非SSL - 端口587"配置选中"使用SMTP身份验证"选项时,Jenkins电子邮件插件始终需要SMTP凭据,这些凭据通常是发件人的电子邮件凭据.
nso*_*sof 19
我和Jenkins有同样的问题,但我的是安装在Centos而不是Apple OS上.我仍然想在这里发布解决方案,因为A)您可能能够对解决方案进行必要的调整,并且B)Linux和Jenkins用户可能会从中受益.
无论如何,找到Jenkins配置文件(在CENTOS中的/ etc/sysconfig/jenkins中)
在其中找到JENKINS_JAVA_OPTIONS变量并添加以下选项"-Dmail.smtp.starttls.enable = true"在我的情况下,这是我之前的情况:
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
Run Code Online (Sandbox Code Playgroud)
这是后来的;
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true"
Run Code Online (Sandbox Code Playgroud)
重启Jenkins服务器(在Linux中)
/etc/init.d/jenkins restart
Run Code Online (Sandbox Code Playgroud)
小智 9
对于Windows上的Jenkins
打开jenkins.xml并修改参数节点
-Xrs -Xmx256m -Dhudson.lifecycle = hudson.lifecycle.WindowsServiceLifecycle -Dmail.smtp.starttls.enable = true -jar"%BASE%\ jenkins.war"--httpPort = 8080
对于smtp.live.com:
将SMTP端口设置为587并取消选中
Use SSL
尝试错误本身中提到的解决方法:
http://issues.hudson-ci.org/browse/HUDSON-2206
在爪哇中:
props.put("mail.smtp.starttls.enable","true");
Run Code Online (Sandbox Code Playgroud)
在雄猫中:
添加JAVA_OPTS=-Dmail.smtp.starttls.enable="true"到tomcat配置文件。
| 归档时间: |
|
| 查看次数: |
29249 次 |
| 最近记录: |