21

当社の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 サーバーを使用したいと思います。

4

11 に答える 11

12

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

于 2014-02-03T12:15:15.120 に答える
3

ファイル(debian/ubuntu)-Dmail.smtp.starttls.enable=trueの@nsofの回答に記載されているように設定した後でも、うまくいきませんでした。/etc/default/jenkins

トリックは、SMTP ポートを587に設定し、以下に示すようにチェック Use SSLを外すことでした。その後、電子メールは正常に送信されました。

ここに画像の説明を入力

于 2016-01-01T04:54:55.247 に答える
1

バグ自体に記載されている回避策を試してください。

http://issues.hudson-ci.org/browse/HUDSON-2206

Java の場合:

props.put("mail.smtp.starttls.enable","true");

Tomcat の場合:

JAVA_OPTS=-Dmail.smtp.starttls.enable="true"tomcat 設定ファイルに追加します。

于 2013-03-14T08:47:36.527 に答える
0

Red Hat Enterprise Linux Server リリース 7.4 (Maipo) 上の Jenkins の場合、/etc/sysconfig/jenkins を編集して追加します

ここに画像の説明を入力

Jenkins サービス構成ファイルには、マシンへのルート アクセスが必要です。CloudBees Jenkins Enterprise では、このファイルは次の場所にあります。

  • /etc/default/jenkins: ほとんどの Linux ディストリビューションの場所。
  • /etc/sysconfig/jenkins: RedHat/CentOS ディストリビューションの場所。
  • C:\Program Files\Jenkins\jenkins.xml: Windows のデフォルトの場所
于 2017-11-07T21:27:14.653 に答える
0

Jenkins2.134では、次のことがうまくいきました:

  • JAVA_TOOL_OPTIONS=-Dmail.smtp.starttls.enable=true
  • チェックを外してください Use SSL
于 2018-09-11T09:23:39.647 に答える