0

I am running Jenkins on MAC OSX. When i try to send a test email from 'Test configuration by sending test e-mail', the following message is displayed:

Failed to send out e-mail

javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.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:519)

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:606)

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:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:745)

Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:671)

at sun.security.ssl.InputRecord.read(InputRecord.java:504)

at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)

at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)

at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)

at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)

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

I have tried with different Email Notification settings but it didn't work. Current settings are:

SMTP: smtp.gmail.com

Default user e-mail suffix: @gmail.com

Use SMTP Authentication: Yes

User Name: *@gmail.com

Password: **

Use SSL: Yes

SMTP Port: 587

Charset: UTF-8

callisto
  • 4,921
  • 11
  • 51
  • 92
OsamaA
  • 451
  • 1
  • 8
  • 13
  • Hey OsamaA, welcome to StackOverflow! For future questions, remember that formatting long console outputs and configuration blocks as code (prefixing with four spaces) makes your question more readable. – Xavier Aug 12 '14 at 16:44

2 Answers2

0

Try setting the following in your Jenkins' config file. On Windows, it's jenkins.xml under $JENKINS_HOME

JENKINS_JAVA_OPTIONS="-Dmail.smtp.starttls.enable=true"

Ref: http://www.tune2wizard.com/linux-jenkins/

Technext
  • 7,887
  • 9
  • 48
  • 76
  • 1
    I have come across this solution but haven't found this file on Mac OS. Please share if anyone knows the path of "jenkins.xml" file in Mac OS. – OsamaA Aug 12 '14 at 17:03
  • Do you have JENKINS_HOME set? – Technext Aug 12 '14 at 17:06
  • I didn't set JENKINS_HOME myself. Currently, my Jenkins Home directory is at /Users/Shared/Jenkins/Home. – OsamaA Aug 13 '14 at 07:42
  • How do you start Jenkins? If it's through command line, then you can pass the above option as argument while starting Jenkins. Can you check if you have this file: `/Library/LaunchDaemons/org.jenkins-ci`? – Technext Aug 13 '14 at 08:53
  • I've passed JENKINS_JAVA_OPTIONS="-Dmail.smtp.starttls.enable=true" in /Library/LaunchDaemons/org.jenkins-ci.plist file and still it is NOT working for me. – OsamaA Aug 13 '14 at 11:26
  • Do you have this file: `/etc/sysconfig/jenkins` ? – Technext Aug 13 '14 at 11:31
  • Also, would you mind posting the contents of `/Library/LaunchDaemons/org.jenkins-ci` on pastebin and share the link? – Technext Aug 13 '14 at 11:36
  • JENKINS_JAVA_OPTIONS -Dmail.smtp.starttls.enable=true – OsamaA Aug 15 '14 at 06:43
  • I have pasted the contents of /Library/LaunchDaemons/org.jenkins-ci above related to Email issue. – OsamaA Aug 15 '14 at 06:45
  • Does the file contain only the above line, nothing else? Also, does this file exist: `/etc/sysconfig/jenkins`? – Technext Aug 15 '14 at 06:46
  • This is no /etc/sysconfig/jenkins file exist in my system – OsamaA Aug 15 '14 at 06:55
  • I have shared the pastebin link above containing org.jenkins-ci file contents. Please check. – OsamaA Aug 15 '14 at 10:54
  • I saw it and it looks fine to me. Are you running Jenkins in Tomcat container? – Technext Aug 15 '14 at 15:27
  • How we can check this? Currently, I check in activity monitor in Mac that a 'java' process is started with username 'jenkins' when I launched Jenkins from safari. – OsamaA Aug 18 '14 at 09:27
  • Do you specify some port while accessing Jenkins from browser? For example, `localhost:8080`. If yes, then please put that port number in this command and post the result: `netstat -ntpl | grep _port_`. If you do not specify any port, then put 80 in place of port in the given command. – Technext Aug 18 '14 at 09:36
  • I am accessing jenkins through 8080 port "localhost:8080". netstat -ntpl | grep 8080 is not running in Mac Terminal. Seems like its Linux command. I ran "sudo lsof -n -i4TCP:8080". Following are the results of command: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 64 jenkins 147u IPv6 0x36646a9e554e5e33 0t0 TCP *:http-alt (LISTEN) – OsamaA Aug 18 '14 at 11:18
  • Is 64 the PID returned from the command you ran? If yes, then please run `ps -ef | grep PID` to find out which application is running Jenkins? If 64 is not the PID, then try to find out how you can locate the PID of Jenkins process. Why i am asking this to do is because if Jenkins is running in some external container such as Tomcat, then you can set the JAVA parameter in its setenv.sh file and see if it resolves your issue. – Technext Aug 18 '14 at 12:00
  • Yes, 64 is PID. Here is the result on running above command >> http://pastebin.com/qazVBy3u – OsamaA Aug 18 '14 at 12:49
  • Fine. Now just kill this process. Make sure it's killed. :) Start the process while ensuring that you're running the following command with the same user with which Jenkins was earlier running. From the output, if i got the syntax right, it seems user with uid 300 was running the command. `/usr/bin/java -Dmail.smtp.starttls.enable=true -Dfile.encoding=UTF-8 -XX:PermSize=256m -XX:MaxPermSize=512m -Xms256m -Xmx512m -Djava.io.tmpdir=/Users/Shared/Jenkins/tmp -jar /Applications/Jenkins/jenkins.war`. I have just added the TLS parameter to the command. – Technext Aug 18 '14 at 13:03
  • Once you've run the above command, just check the output again (which you pasted on pastebin) to confirm whether TLS has been set. Then check your original mail ntification issue. – Technext Aug 18 '14 at 13:03
  • I got following exception when I ran above command after killing Jenkins user's process,
    http://pastebin.com/CwyYjg4Y
    – OsamaA Aug 18 '14 at 13:41
  • Seems you're not running with the same user which was running Jenkins earlier. Please check the second last snapshot you posted on pastebin and try to figure out the user which was running Jenkins earlier. – Technext Aug 18 '14 at 14:06
  • I was running Jenkins with same user. Don’t know what’s happening here. What I’m doing is: http://pastebin.com/9X7Ti71L – OsamaA Aug 18 '14 at 17:30
  • Saw your latest link. Going by the details, i see that you are able to see your job (point # 11) when your Jenkins home is set to /Users/Shared/Jenkins/Home. So, Jenkins should be the user with which you were earlier running and you have already confirmed the same in point #5. You are new to Mac and so am i. The only difference is that you have Mac with you and i just used it for few mins a year back. :) So _you_ have to find out how to launch Jenkins using user 'Jenkins'. – Technext Aug 19 '14 at 10:40
  • Check [this](http://stackoverflow.com/questions/6692330/how-to-run-jenkins-as-a-different-user) link and go through the steps mentioned by user 'commanda'. She has explained how to run Jenkins with a different user. That might help. – Technext Aug 19 '14 at 10:41
0

I had similar problem couldn't send email via zoho. The configurations were: SMPT TLS Zoho Configurations I just need to change system admin address in jenkins configurations to the same one in email-notifications.

Mike.R
  • 2,824
  • 2
  • 26
  • 34