Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SMTP TLS handshake fails #90

Open
dokterbob opened this issue Nov 8, 2017 · 0 comments
Open

SMTP TLS handshake fails #90

dokterbob opened this issue Nov 8, 2017 · 0 comments

Comments

@dokterbob
Copy link

When attempting to use an external SMTP server, a certificate validation exception is raised:

javax.mail.MessagingException: Can't send command to SMTP host;
  nested exception is:
   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
   at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1420)
   at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1408)
   at com.sun.mail.smtp.SMTPTransport.ehlo(SMTPTransport.java:847)
   at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:384)
   at javax.mail.Service.connect(Service.java:297)
   at javax.mail.Service.connect(Service.java:156)
   at javax.mail.Service.connect(Service.java:105)
   at javax.mail.Transport.send0(Transport.java:168)
   at javax.mail.Transport.send(Transport.java:98)
   at net.appjet.ajstdlib.email$.sendEmail(ajstdlib.scala:247)
   at net.appjet.ajstdlib.email.sendEmail(ajstdlib.scala)
   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.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
   at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247)
   at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
   at JS$module$email$js$23._c_sendEmail_3(module email.js:86)
   at JS$module$email$js$23.call(module email.js)
   at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
   at JS$module$email$js$23._c_sendEmailLoggingExceptions_5(module email.js:96)
   at JS$module$email$js$23.call(module email.js)
   at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
   at JS$module$email$js$23._c_anonymous_2(module email.js:56)
   at JS$module$email$js$23.call(module email.js)
   at org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2521)
   at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:300)
   at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:129)
   at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
   at JS$module$onscheduledtask$js$261._c_anonymous_1(module onscheduledtask.js:32)
   at JS$module$onscheduledtask$js$261.call(module onscheduledtask.js)
   at org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:57)
   at JS$module$onscheduledtask$js$261._c_script_0(module onscheduledtask.js:17)
   at JS$module$onscheduledtask$js$261.call(module onscheduledtask.js)
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3178)
   at JS$module$onscheduledtask$js$261.call(module onscheduledtask.js)
   at JS$module$onscheduledtask$js$261.exec(module onscheduledtask.js)
   at net.appjet.bodylock.InnerExecutable$$anonfun$execute$1.apply(bodylock.scala:76)
   at net.appjet.bodylock.InnerExecutable$$anonfun$execute$1.apply(bodylock.scala:75)
   at net.appjet.bodylock.BodyLock$.runInContext(bodylock.scala:111)
   at net.appjet.bodylock.InnerExecutable.execute(bodylock.scala:75)
   at net.appjet.oui.execution$$anonfun$execute$4.apply(execution.scala:517)
   at net.appjet.oui.NoninheritedDynamicVariable.withValue(dynamicvar.scala:38)
   at net.appjet.oui.ExecutionContextUtils$.withContext(execution.scala:340)
   at net.appjet.oui.execution$.execute(execution.scala:513)
   at net.appjet.oui.execution$.runOutOfBand(execution.scala:640)
   at net.appjet.ajstdlib.execution$.runTask(ajstdlib.scala:140)
   at net.appjet.ajstdlib.execution$TaskRunner.call(ajstdlib.scala:177)
   at java.util.concurrent.FutureTask.run(FutureTask.java:262)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
   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.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
   at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
   at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)
   at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279)
   at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273)
   at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1446)
   at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)
   at sun.security.ssl.Handshaker.processLoop(Handshaker.java:913)
   at sun.security.ssl.Handshaker.process_record(Handshaker.java:849)
   at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)
   at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
   at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:709)
   at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
   at com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:101)
   at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
   at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
   at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1418)
   ... 55 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
   at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
   at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
   at sun.security.validator.Validator.validate(Validator.java:260)
   at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
   at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
   at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
   at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1428)
   ... 66 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
   at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
   at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
   at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
dokterbob added a commit to dsrp/hackpad that referenced this issue Sep 17, 2018
Turns out relay is necessary because Hackpad’s internal SMTP client is broken.

Ref:
* hackpad#90
* hackpad#89
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant