2013-11-25 80 views
26

我想設置smtp電子郵件通知。我可以看到gmail的一部分工作正常。我想配置它爲我的辦公室365如何在Jenkins中將安全類型從SSL更改爲TLS?

SMTP服務器= smtp.office365.com

我們沒有配置SSL。相反,我們使用TLS。我如何在Jenkins中設置TLS? 只有一個檢查按鈕暗示使用SSL與否。如果我禁用它,它將使用什麼?

我收到以下錯誤 -

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

您是否得到了解決方案?我在這個問題上嘗試了一切,並沒有任何成功的相關鏈接。 – javydreamercsw

回答

-5

SSL和TLS是,有效的,是相同的。

+0

我已添加日誌,請提出需要在此處完成的操作。 –

+0

由於錯誤消息提示,這是一個明文端口,而不是TLS端口。我嘗試連接到它,它以明文形式發送給我:「* 220 BY2PR03CA036.outlook.office365.com Microsoft ESMTP MAIL服務已準備好於2013年11月25日星期一09:47:06 + 0000 *」。 (它支持升級到TLS的連接,但這不是複選框的用途。) –

+0

當我通過電子郵件設置進行檢查時,它說我有TLS支持而不是SSL。我只是在這裏複製所有設置。但是,我不能在詹金斯選擇TLS,這是唯一的問題嗎? –

1

感謝您的答案,我弄明白了。首先,JAVA默認只支持SSL。因此,Jenkins Java選項需要設置爲啓用TLS。之後,開始Jenkins服務。當您未給Jenkins位置列下的System Admin電子郵件地址時,會出現此權限問題。 gmail smtp不會發生這種情況。我想辦公室365具有很高的安全性。所以,它只允許註冊用戶發送電子郵件。

+0

您能提供一些關於啓用TLS的位置/方式的詳細信息嗎?和其他任何調整,以使其工作。我遇到與smtp.office365.com相同的問題。謝謝! – joshgo

+0

請按照此http://www.tune2wizard.com/linux-jenkins/。這在Fedora核心-16,19上進行了測試。如果你喜歡我的回答,請欣賞。 –

12

Office 365確實需要使用TLS驗證SMTP。 Jenkins配置中的SSL選項不起作用,請不要選中。相反,下面的系統屬性添加到詹金斯VM:

-Dmail.smtp.starttls.enable=true 

對於獨立詹金斯把它放在jenkins.xml從安裝文件夾,併爲Tomcat更新啓動腳本或在Windows上使用托盤圖標。

然後重新啓動詹金斯,你很好去。

+3

工程就像一個魅力 - 謝謝!對於linux用戶,將上面的設置添加到/ etc/default/jenkins文件中的JAVA_ARGS var。 – killthrush

21

詹金斯在Windows上,打開jenkins.xml和修改參數節點

-Xrs -Xmx256m -Dhudson.lifecycle = hudson.lifecycle.WindowsServiceLifecycle -Dmail.smtp.starttls.enable =真正的罐子「% BASE%\ jenkins.war「--httpPort = 8080

+0

偉大的工程 - 應該被標記爲解決方案 – miro

+0

是的,也爲我工作,絕對是答案。 –

6

下面是我在CentOS上運行Jenkins的工作。編輯/etc/sysconfig/jenkins並添加選項-Dmail.smtp.starttls.enable=trueJENKINS_JAVA_OPTIONS

如果有一些其他的變量已經,追加-Dmail.smtp.starttls.enable=true它,所以它應該是類似於下面:

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

重啓詹金斯與service jenkins restart,你應該很好去

0

對於我添加「-Dmail.smtp.starttls.enable = true」到java選項沒有開箱即用 - 詹金斯試圖連接到SMTP,但在日誌中/ var/log/maillog(CentOS 7.2)我已經看到連接已建立然後過了一段時間(大概在超時後),postfix報告了「{host_name}的CONNECT之後丟失了連接」。我也通過TLS進行連接。經過一番研究,我決定嘗試不同的端口 - - 而不是默認的465和瞧! - 最後發送測試郵件。

7

我在Ubuntu服務器14.04運行詹金斯,我不得不適應以前的答案,解決CentOS的分佈。

首先,在大多數Linux發行版中,Jenkins的配置文件位於/etc/default/jenkinssee this link)。我使用Jenkins 2.7,並將-Dmail.smtp.starttls.enable=true附加到存在的設置變量JAVA_ARGS。最後,我以此結束:

JAVA_ARGS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true" 
相關問題