2013-11-25 9 views
26

Ich versuche, die SMTP-E-Mail-Benachrichtigung einzurichten. Ich konnte sehen, dass der Google Mail-Teil gut funktioniert. Ich möchte es für mein Büro 365.Wie ändert man den Sicherheitstyp in Jenkins von SSL zu TLS?

SMTP-Server = smtp.office365.com

Wir haben noch konfigurieren nicht SSL konfiguriert. Stattdessen verwenden wir TLS. Wie kann ich das TLS in den Jenkins einstellen? Es gibt nur eine Schaltfläche, die vorschlägt, SSL zu verwenden oder nicht. Wenn ich es deaktiviere, was wird es verwenden?

ich die folgenden Fehler -

Failed to send out e-mail 

javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.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) 
    at javax.mail.Transport.send(Transport.java:124) 
    at hudson.tasks.Mailer$DescriptorImpl.doSendTestMail(Mailer.java:499) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298) 
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161) 
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96) 
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) 
    at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631) 
    at org.kohsuke.stapler.Stapler.service(Stapler.java:225) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96) 
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) 
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) 
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) 
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) 
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
    at org.eclipse.jetty.server.Server.handle(Server.java:370) 
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) 
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960) 
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021) 
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865) 
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) 
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) 
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:679) 
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
    at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:542) 
    at sun.security.ssl.InputRecord.read(InputRecord.java:374) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:850) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1190) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1217) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1201) 
    at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:507) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900) 
    ... 63 more 
+0

Hast du eine Lösung bekommen? Ich habe alles über diese Frage und verwandte Links ohne Erfolg versucht. – javydreamercsw

Antwort

-5

SSL und TLS sind, effektiv, gleich.

+0

Ich habe die Protokolle hinzugefügt, bitte schlagen Sie vor, was hier zu tun ist. –

+0

Wie die Fehlermeldung angibt, ist dies ein Klartext-Port, kein TLS-Port. Ich habe versucht, es zu verbinden, und es schickte mir dies, im Klartext: "* 220 BY2PR03CA036.outlook.office365.com Microsoft ESMTP MAIL Dienst bereit um Mo, 25 Nov 2013 09:47:06 + 0000 *". (Es unterstützt die Aktualisierung der Verbindung zu TLS, aber das ist nicht, was das Kontrollkästchen ist.) –

+0

Wenn ich per E-Mail-Einstellungen überprüft, heißt es, ich habe TLS-Unterstützung nicht SSL. Ich kopiere einfach alle Einstellungen hier. Aber ich kann nicht TLS in Jenkins wählen, das ist das einzige Problem? –

1

Danke für die Antworten, ich habe es behoben. Zunächst einmal unterstützt der JAVA standardmäßig nur SSL. Daher müssen Jenkins Java-Optionen zum Aktivieren von TLS festgelegt werden. Starten Sie danach den Jenkins-Service. Das Problem dieses Berechtigungsproblems tritt auf, wenn Sie die System Admin E-mail-Adresse nicht in der Jenkins-Standortspalte angeben. Dies geschieht nicht für Google Mail SMTP. Ich denke Office 365 hat eine hohe Sicherheit. So kann nur der registrierte Benutzer die E-Mails senden.

+0

Können Sie einige Details dazu angeben, wo/wie Sie TLS aktiviert haben? Und alle anderen Verbesserungen, um es zum Laufen zu bringen. Ich habe das gleiche Problem mit smtp.office365.com. Vielen Dank! – joshgo

+0

Bitte folgen Sie dieser http://www.tune2wizard.com/linux-jenkins/. Dies wird auf Fedora Core -16, 19 getestet. Wenn Sie meine Antwort mögen, bitte schätzen. –

12

Office 365 erfordert authentifiziertes SMTP mit TLS. Die SSL-Option in der Jenkins-Konfiguration hilft nicht, lassen Sie sie nicht aktiviert. Stattdessen fügen Sie die folgende Systemeigenschaft auf die Jenkins VM:

-Dmail.smtp.starttls.enable=true 

Für die Standalone-Jenkins es in jenkins.xml aus dem Installationsordner setzen und für Tomcat das Startskript aktualisieren oder Tray-Icon unter Windows verwenden.

Dann starten Sie Jenkins und Sie sind gut zu gehen.

+3

Funktioniert wie ein Zauber - danke! Fügen Sie für Linux-Benutzer die obige Einstellung der Datei JAVA_ARGS in Ihrer Datei/etc/default/jenkins hinzu. – killthrush

21

Für Jenkins auf Windows, öffnen jenkins.xml und ändern% die Argumente Knoten

-Xrs -Xmx256m -Dhudson.lifecycle = hudson.lifecycle.WindowsServiceLifecycle -Dmail.smtp.starttls.enable = true -jar“ BASE% \ jenkins.war "--httpPort = 8080

+0

funktioniert gut - sollte als eine Lösung markiert werden – miro

+0

Ja, arbeitete für mich auch, auf jeden Fall die Antwort. –

6

Hier ist, was bei Jenkins auf CentOS für mich lief. Bearbeiten /etc/sysconfig/jenkins und fügen Sie die Option -Dmail.smtp.starttls.enable=true zu JENKINS_JAVA_OPTIONS,

Wenn es eine andere Variable ist bereits, hängt -Dmail.smtp.starttls.enable=true es, so dass es an den unten ähnlich sein sollte:

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true" 

Neustart Jenkins mit service jenkins restart und Sie sollen gut zu gehen

0

Für mich Hinzufügen "-Dmail.smtp.starttls.enable = true" zu Java-Optionen funktionierte nicht aus der Box - Jenkins versuchte, eine Verbindung mit dem SMTP herzustellen, aber in den Protokollen um/var/log/maillog (CentOS 7.2) Ich habe gesehen, dass die Verbindung hergestellt ist und nach einiger Zeit (vermutlich nach einem Timeout) hat Postfix "Verbindung verloren nach CONNECT von {host_name}" gemeldet. Ich habe auch Verbindung über TLS. Nach einigem Nachforschungen habe ich mich entschieden, verschiedene Port - - anstelle von Standard 465 und voila! - Endlich wurde die Test-Email verschickt.

7

Ich laufe Jenkins unter Ubuntu Server 14.04 und ich musste die vorherige Antwort anpassen, die CentOS Verteilung anspricht.

Zunächst, unter den meisten Linux-Distributionen, befindet sich die Konfigurationsdatei für Jenkins unter /etc/default/jenkins (see this link). Ich benutze Jenkins 2.7 und ich füge -Dmail.smtp.starttls.enable=true an die existierende Einstellungsvariable JAVA_ARGS an. Schließlich habe ich damit geendet:

JAVA_ARGS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true"