当社のSMTPサーバーを使用してビルド通知を電子メールで送信するようにJenkinsをセットアップしようとしています。ポート 587 の暗号化方式として TLS を使用していますが、メール通知が正しく機能していないようです。
ここに私の Hudson.Tasks.Mailer.xml ファイルがあるので、私の構成を確認できます (念のため、SMTP 認証ユーザーとパスワードを削除し、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>
http://issues.hudson-ci.org/browse/HUDSON-2206から、これは既知の問題のようです。
私は Apple OS (Jenkins を実行しているマシン) にあまり詳しくありませんが、上記の回避策を使用して問題を解決できると思いました。ただし、その回避策をどこに配置すればよいか正確にはわからなかったので、ここに配置してみました: /Library/Application Support/Jenkins/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
それはそれを解決するようには見えませんでした。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)
他に何を試すことができるかについてのアイデアはありますか? gmail の smtp サーバーを使用するように電子メール アカウントを切り替えてみましたが、問題なく動作しますが、できれば私たちの smtp サーバーを使用したいと思います。