{"id":6210,"date":"2014-04-13T23:07:20","date_gmt":"2014-04-13T23:07:20","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/04\/13\/jboss5-sending-email-over-smtp-tls-collection-of-common-programming-errors\/"},"modified":"2014-04-13T23:07:20","modified_gmt":"2014-04-13T23:07:20","slug":"jboss5-sending-email-over-smtp-tls-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2014\/04\/13\/jboss5-sending-email-over-smtp-tls-collection-of-common-programming-errors\/","title":{"rendered":"jboss5 sending email over smtp + tls-Collection of common programming errors"},"content":{"rendered":"<ul>\n<li><img decoding=\"async\" src=\"http:\/\/www.gravatar.com\/avatar\/bafab02c6f30751266c0815e337bf3da?s=32&amp;d=identicon&amp;r=PG\" \/><br \/>\nsimonC<\/p>\n<p>I&#8217;m, having problems sending emails over smtp with TLS enabled on port 587 on Jboss5.1<\/p>\n<p>the problem looks like this : sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target<\/p>\n<p>I have also tried to add the CA keys in the jre keystor with the java keytool &#8230; It looks like i&#8217;m missing something here&#8230;any hints?<\/p>\n<p>I have this settings in mail-service.xml:<\/p>\n<pre><code>    \n    \n\n    \n    \n\n    \n    \n\n    \n    \n\n    \n    \n\n    \n\n    \n\n    \n    \n\n    \n    \n<\/code><\/pre>\n<p>and this is the debug log:<\/p>\n<pre><code>2013-08-08 14:24:30,031  DEBUG: JavaMail version 1.4ea\n2013-08-08 14:24:30,031  DEBUG: java.io.FileNotFoundException: \/usr\/java\/jdk1.6.0_35\/jre\/lib\/javamail.providers (No such file or directory)\n2013-08-08 14:24:30,033  DEBUG: URL vfszip:\/usr\/share\/jboss-5.1.0.GA\/server\/default\/deploy\/4pm_services-ear.ear\/jboss-seam.jar\/META-INF\/javamail.providers\n2013-08-08 14:24:30,034  DEBUG: Bad provider entry:\n2013-08-08 14:24:30,034  DEBUG: successfully loaded resource: vfszip:\/usr\/share\/jboss-5.1.0.GA\/server\/default\/deploy\/4pm_services-ear.ear\/jboss-seam.jar\/META-INF\/javamail.providers\n2013-08-08 14:24:30,034  DEBUG: successfully loaded resource: \/META-INF\/javamail.default.providers\n2013-08-08 14:24:30,034  DEBUG: Tables of loaded providers\n2013-08-08 14:24:30,034  DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], org.jboss.seam.mock.MockTransport=javax.mail.Provider[TRANSPORT,mock,org.jboss.seam.mock.MockTransport,JBoss Seam Integration Tests], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}\n2013-08-08 14:24:30,034  DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], mock=javax.mail.Provider[TRANSPORT,mock,org.jboss.seam.mock.MockTransport,JBoss Seam Integration Tests], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}\n2013-08-08 14:24:30,035  DEBUG: successfully loaded resource: \/META-INF\/javamail.default.address.map\n2013-08-08 14:24:30,036  DEBUG: !anyLoaded\n2013-08-08 14:24:30,036  DEBUG: not loading resource: \/META-INF\/javamail.address.map\n2013-08-08 14:24:30,036  DEBUG: java.io.FileNotFoundException: \/usr\/java\/jdk1.6.0_35\/jre\/lib\/javamail.address.map (No such file or directory)\n2013-08-08 14:24:30,036  DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]\n2013-08-08 14:24:30,036  DEBUG SMTP: useEhlo true, useAuth true\n2013-08-08 14:24:30,036  DEBUG SMTP: useEhlo true, useAuth true\n2013-08-08 14:24:30,036  DEBUG SMTP: trying to connect to host \"**************\", port 587, isSSL false\n2013-08-08 14:24:30,038  220 ************** Microsoft ESMTP MAIL Service ready at Thu, 8 Aug 2013 14:24:29 +0200\n2013-08-08 14:24:30,038  DEBUG SMTP: connected to host \"**************\", port: 587\n2013-08-08 14:24:30,039  EHLO **************\n2013-08-08 14:24:30,040  250-************** Hello [**************]\n250-SIZE 10485760\n250-PIPELINING\n250-DSN\n250-ENHANCEDSTATUSCODES\n250-STARTTLS\n250-AUTH GSSAPI NTLM\n250-8BITMIME\n250-BINARYMIME\n250 CHUNKING\n2013-08-08 14:24:30,040  DEBUG SMTP: Found extension \"SIZE\", arg \"10485760\"\n2013-08-08 14:24:30,040  DEBUG SMTP: Found extension \"PIPELINING\", arg \"\"\n2013-08-08 14:24:30,040  DEBUG SMTP: Found extension \"DSN\", arg \"\"\n2013-08-08 14:24:30,040  DEBUG SMTP: Found extension \"ENHANCEDSTATUSCODES\", arg \"\"\n2013-08-08 14:24:30,040  DEBUG SMTP: Found extension \"STARTTLS\", arg \"\"\n2013-08-08 14:24:30,040  DEBUG SMTP: Found extension \"AUTH\", arg \"GSSAPI NTLM\"\n2013-08-08 14:24:30,040  DEBUG SMTP: Found extension \"8BITMIME\", arg \"\"\n2013-08-08 14:24:30,040  DEBUG SMTP: Found extension \"BINARYMIME\", arg \"\"\n2013-08-08 14:24:30,040  DEBUG SMTP: Found extension \"CHUNKING\", arg \"\"\n2013-08-08 14:24:30,040  STARTTLS\n2013-08-08 14:24:30,041  220 2.0.0 SMTP server ready\n2013-08-08 14:24:30,041  EHLO **************\n2013-08-08 14:24:30,048 ERROR\n[si.arctur.fourPmServices.scheduleJobs.emailSender.MailSender] (4pm_services_QuartzScheduler_Worker-3) Error in transport email[1040]\njavax.mail.MessagingException: Can't send command to SMTP host;\nnested exception is:\n    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX    path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to   find valid certification path to requested target\n    at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1420)\n    at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1408)\n    at com.sun.mail.smtp.SMTPTransport.ehlo(SMTPTransport.java:847)\n    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:384)\n    at javax.mail.Service.connect(Service.java:297)\n    at javax.mail.Service.connect(Service.java:156)\n    at javax.mail.Service.connect(Service.java:105)\n    at javax.mail.Transport.send0(Transport.java:168)\n    at javax.mail.Transport.send(Transport.java:98)\n    at   si.arctur.fourPmServices.scheduleJobs.emailSender.MailSender.actualSend(MailSender.java:64)\n    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n    at java.lang.reflect.Method.invoke(Method.java:597)\n    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)\n    at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)\n    at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)\n    at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)\n    at org.jboss.seam.transaction.TransactionInterceptor$1.work(TransactionInterceptor.java:97)\n    at org.jboss.seam.util.Work.workInTransaction(Work.java:61)\n    at org.jboss.seam.transaction.TransactionInterceptor.aroundInvoke(TransactionInterceptor.java:91)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)\n    at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)\n    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)\n    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)\n    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)\n    at si.arctur.fourPmServices.scheduleJobs.emailSender.MailSender_$$_javassist_seam_8.actualSend(MailSender_$$_javassist_seam_8.java)\n    at si.arctur.fourPmServices.scheduleJobs.emailSender.MailChecker.checkQueue(MailChecker.java:41)\n    at si.arctur.fourPmServices.scheduleJobs.emailSender.MailChecker.execute(MailChecker.java:22)\n    at si.arctur.fourPmServices.scheduleJobs.QuartzJobBase.executeInternal(QuartzJobBase.java:94)\n    at si.arctur.fourPmServices.scheduleJobs.QuartzJobBase.schedule(QuartzJobBase.java:76)\n    at sun.reflect.GeneratedMethodAccessor383.invoke(Unknown Source)\n    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n    at java.lang.reflect.Method.invoke(Method.java:597)\n    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)\n    at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)\n    at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)\n    at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)\n    at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)\n    at org.jboss.seam.async.AsynchronousInterceptor.aroundInvoke(AsynchronousInterceptor.java:52)\n    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)\n    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)\n    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)\n    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)\n    at si.arctur.fourPmServices.scheduleJobs.emailSender.MailChecker_$$_javassist_seam_2.schedule(MailChecker_$$_javassist_seam_2.java)\n    at sun.reflect.GeneratedMethodAccessor382.invoke(Unknown Source)\n    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n    at java.lang.reflect.Method.invoke(Method.java:597)\n    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)\n    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144)\n    at org.jboss.seam.async.AsynchronousInvocation$1.process(AsynchronousInvocation.java:62)\n    at org.jboss.seam.async.Asynchronous$ContextualAsynchronousRequest.run(Asynchronous.java:80)\n    at org.jboss.seam.async.AsynchronousInvocation.execute(AsynchronousInvocation.java:44)\n    at org.jboss.seam.async.QuartzDispatcher$QuartzJob.execute(QuartzDispatcher.java:243)\n    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)\n    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)\nCaused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)\n    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1764)\n    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:241)\n    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:235)\n    at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1206)\n    at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136)\n    at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)\n    at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)\n    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:958)\n    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1203)\n    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:654)\n    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:100)\n    at com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:101)\n    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)\n    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)\n    at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1418)\n    ... 63 more\nCaused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:323)\n    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:217)\n    at sun.security.validator.Validator.validate(Validator.java:218)\n    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)\n    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)\n    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)\n    at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1185)\n    ... 74 more\nCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target\n    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)\n    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)\n    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:318)\n    ... 80 more\n<\/code><\/pre>\n<\/li>\n<li><img decoding=\"async\" src=\"http:\/\/www.gravatar.com\/avatar\/bafab02c6f30751266c0815e337bf3da?s=32&amp;d=identicon&amp;r=PG\" \/><br \/>\nsimonC<\/p>\n<p>I had to enter in the keystore the certificate of the mail server, I got the certificate via<\/p>\n<pre><code>openssl s_client -connect mail.server.com:587 -starttls smtp \n<\/code><\/pre>\n<p>and I extracted the key from the response and added it in the jre keytore<\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>simonC I&#8217;m, having problems sending emails over smtp with TLS enabled on port 587 on Jboss5.1 the problem looks like this : sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target I have also tried to add the CA keys in the jre keystor with the java keytool &#8230; It looks like i&#8217;m missing [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6210","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/6210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=6210"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/6210\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=6210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=6210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=6210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}