J'essaie de configurer la notification par courrier électronique smtp. Je pouvais voir que la partie gmail fonctionne bien. Je veux le configurer pour mon Office 365.
Serveur Smtp = smtp.office365.com
Nous n'avons pas configuré SSL. Au lieu de cela, nous utilisons TLS. Comment paramétrer le TLS dans Jenkins? Si je le désactive, que va-t-il utiliser?
Je reçois les erreurs suivantes -
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
Pour Jenkins sous Windows, ouvrez jenkins.xml et modifiez le nœud arguments
-Xrs -Xmx256m -Dhudson.lifecycle = hudson.lifecycle.WindowsServiceLifecycle -Dmail.smtp.starttls.enable = true -jar "% BASE%\jenkins.war" --httpPort = 8080
Office 365 nécessite en effet un SMTP authentifié avec TLS. L'option SSL dans la configuration de Jenkins n'aide pas, laissez la case décochée. Ajoutez plutôt la propriété système suivante à la machine virtuelle Jenkins:
-Dmail.smtp.starttls.enable=true
Pour le serveur autonome, Jenkins le mettre dans jenkins.xml à partir du dossier d'installation et pour Tomcat, mettez à jour le script de démarrage ou utilisez l'icône de la barre d'état sous Windows.
Puis redémarrez Jenkins et vous êtes prêt à partir.
Je lance Jenkins sous Ubuntu Server 14.04 et je devais adapter la réponse précédente, qui traitait de la distribution CentOS.
Tout d’abord, dans la plupart des distributions Linux, le fichier de configuration de Jenkins se trouve à /etc/default/jenkins
( voir ce lien ). J'utilise Jenkins 2.7 et j'ajoute -Dmail.smtp.starttls.enable=true
à la variable de réglage existante Java_ARGS
. Finalement, j'ai fini avec ceci:
Java_ARGS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true"
Voici ce qui a fonctionné pour moi, exécuter Jenkins sur CentOS. Éditez /etc/sysconfig/jenkins
et ajoutez l'option -Dmail.smtp.starttls.enable=true
à JENKINS_Java_OPTIONS
,
S'il y a déjà une autre variable, ajoutez-y -Dmail.smtp.starttls.enable=true
, elle devrait donc ressembler à la suivante
JENKINS_Java_OPTIONS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true"
redémarrez Jenkins avec service jenkins restart
et vous devriez être prêt à partir
Merci pour les réponses, je l'ai fait réparer. Tout d'abord, Java ne prend en charge que SSL par défaut. Ainsi, les options Java de Jenkins doivent être définies pour activer TLS. Ensuite, démarrez le service Jenkins. Le problème de ce problème d'autorisation se produit lorsque vous ne spécifiez pas l'adresse de messagerie de l'administrateur système dans la colonne Emplacement de Jenkins. Cela n'arrive pas pour gmail smtp. Je suppose qu'Office 365 est hautement sécurisé. Ainsi, seul l'utilisateur enregistré peut envoyer les courriels.
Pour moi, ajouter "-Dmail.smtp.starttls.enable = true" aux options Java ne fonctionnait pas tel quel - Jenkins essayait de se connecter au SMTP, mais dans les journaux de/var/log/maillog (CentOS 7.2) J'ai vu que la connexion était établie et après un certain temps (vraisemblablement après l'expiration du délai) postfix a signalé "connexion perdue après CONNECT de {nom_hôte}". J'ai aussi la connexion via TLS. Après quelques recherches, j'ai décidé d'essayer différents ports - 587 - au lieu du port par défaut 465 et le tour est joué! - enfin, l'e-mail de test a été envoyé.