在为 jenkins 启用电子邮件时,我遇到了一个问题,导致我被阻止了近 4 天。
问题:使用 SMTP 服务器从 jenkins 发送的电子邮件无法正常工作,错误日志显示验证证书的问题。
在多次尝试证书轮换、更新私钥等之后,这个问题超出了我的预期。
以下是解决方案,如果它可以帮助将来的人。
Jenkins 配置已更改,因此 JAVA_ARGS 如下所示:
JAVA_ARGS =“-Djava.awt.headless = true -Dmail.smtp.starttls.enable = true -Dmail.smtp.ssl.protocols = TLSv1.2”
为了解决该问题,执行了以下步骤:
编辑 Jenkins 配置文件(在 Ubuntu 中,通常位于 /etc/default/Jenkins)并添加上面突出显示的参数。 (确保添加两个突出显示的参数!)
输入“service Jenkins restart”重新启动 Jenkins 服务
现在在您最喜欢的浏览器上打开 Jenkins Dashboard,然后导航至 – 管理 Jenkins -> 配置系统 -> 电子邮件通知。
单击“高级”按钮。
确保未选择“使用 SSL”选项 - 需要保持未选中状态。
点击“保存”按钮。电子邮件现在可以通过 TLSv1.2 运行。
对于 Centos,jenkins 文件路径是 /etc/sysconfig/jenkins
对于 Ubuntu,jenkins 文件路径是 /etc/default/jenkins
添加以下行以使用 TLS 版本 1.2
就我而言,旧的线路是, JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
我已替换为以下行,
JENKINS_JAVA_OPTIONS =“-Djava.awt.headless = true -Dmail.smtp.starttls.enable = true -Dmail.smtp.ssl.protocols = TLSv1.2”
现在保存并关闭文件。
通过以下命令重新启动 Jenkins 服务, 服务Jenkins重启
现在在您最喜欢的浏览器上打开 Jenkins Dashboard,然后导航到 – 管理 Jenkins -> 配置系统 -> 邮件通知。
单击“高级”按钮。
确保未选择“使用 SSL”选项 - 需要保持未选中状态。
点击“保存”按钮。电子邮件现在可以通过 TLSv1.2 运行。
要检查 Jenkins 是否使用 TLSv1.2,请使用以下命令。
openssl s_client -starttls smtp -crlf -connect :
注意:请替换 SMTP 主机名和端口。要获取这些详细信息,请转到管理 jenkins > 配置系统 > SMTP 服务器详细信息
命令输出会有
SSL 会话: 协议:TLSv1.2