Jenkins SMTP TLS

Ich versuche, Jenkins so einzurichten, dass er den SMTP-Server unseres Unternehmens zum Versenden von E-Mail-Build-Benachrichtigungen verwendet. Wir verwenden TLS als Verschlüsselungsmethode für Port 587. Ich kann die E-Mail-Benachrichtigung jedoch anscheinend nicht ordnungsgemäß ausführen.

Hier ist meine Hudson.Tasks.Mailer.xml-Datei, damit Sie meine Konfiguration sehen können. (Ich habe den SMTP-Authentifizierungsbenutzer und das Kennwort entfernt und den smtpHost für alle Fälle leicht geändert.)

<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>

Es sieht so aus, als ob dies ein bekanntes Problem isthttp://issues.hudson-ci.org/browse/HUDSON-2206

Ich bin nicht sehr vertraut mit Apple OS (dem Computer, auf dem Jenkins ausgeführt wird), aber ich dachte, ich könnte das Problem mithilfe der genannten Problemumgehung beheben. Ich war mir nicht ganz sicher, wo ich diese Problemumgehung platzieren sollte. Deshalb habe ich versucht, sie hier abzulegen: / 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

Das schien es nicht zu lösen. Ich kann diesen Aufruf in der Konsole sehen, wenn Jenkins gestartet wird, aber wenn ich eine Testkonfigurations-E-Mail versuche, erhalte ich die folgende Fehlermeldung:

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)

Irgendwelche Ideen, was ich sonst noch ausprobieren kann? Ich habe versucht, das E-Mail-Konto auf den SMTP-Server von Google Mail umzustellen, und das funktioniert einwandfrei. Ich möchte jedoch lieber, dass er unseren SMTP-Server verwendet, wenn ich kann.

Antworten auf die Frage(9)

Ihre Antwort auf die Frage