从VPS发送邮件时的Javamail:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException [英] Javamail: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException when sending mail from VPS

查看:181
本文介绍了从VPS发送邮件时的Javamail:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下问题.我有一个Seam Web应用程序,该应用程序具有电子邮件撰写和使用Javamail发送功能.该应用程序可以在我的本地JBoss应用程序服务器中正常发送邮件,但不能在myhosting.com VPS中安装的JBoss服务器上运行.我读到该问题可能是因为我要连接的Web服务器或URL没有来自授权CA的有效证书,但是我运行了一个实用程序(

I have the following problem. I have a Seam web application which features e-mail composition and sending using Javamail. The application sends mail just fine in my local JBoss application server, but it doesn't work on the JBoss server installed in my myhosting.com VPS. I read that the issue may be because the web server or the URL to which I'm trying to connect does not have a valid certificate from an authorized CA, but I run an utility (http://cold-caffein.blogspot.com/2011/07/looks-like-article-no-more-unable-to.html) that lets me verify the certificates and they appear to be fine (I'm connecting to Gmail).

设置会话属性的相关代码如下:

The relevant code for setting Session properties follows:

props.put("mail.smtp.auth", "true");
props.setProperty("mail.smtp.starttls.enable", "true");

我了解到导致此问题的另一个原因可能是将mail.smtp.starttls.enable设置为true,但是如果我省略了第二行,则该代码根本不起作用(在我的本地服务器或VPS中)或将属性设置为false.

I read that another cause for the issue could be using mail.smtp.starttls.enable set to true, but the code doesn't work at all (in my local server or in the VPS) if I omit the second line or set the property to false.

我不知道问题是否与myhosting提供的mail2web邮件服务有关(请看下面我提供的两个日志中的第9行,这是事情开始有所不同的地方).这是本地Javamail日志和VPS的服务器日志(后者显示了我遇到的错误):

I don't know if the problem has something to do with the mail2web mail service that myhosting offers (look at line 9 in both logs I'm providing below, it's where things start going different). Here are the local Javamail log and the VPS' server log (the latter shows the error I'm getting):

本地日志:

18:57:31,129 INFO  [STDOUT] DEBUG: setDebug: JavaMail version 1.4ea
18:57:31,227 INFO  [STDOUT] DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
18:57:31,383 INFO  [STDOUT] DEBUG SMTP: useEhlo true, useAuth true
18:57:31,384 INFO  [STDOUT] DEBUG SMTP: useEhlo true, useAuth true
18:57:31,384 INFO  [STDOUT] DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 25, isSSL false
18:57:31,677 INFO  [STDOUT] 220 mx.google.com ESMTP c8sm4881699yhm.14
18:57:31,677 INFO  [STDOUT] DEBUG SMTP: connected to host "smtp.gmail.com", port: 25
18:57:31,680 INFO  [STDOUT] EHLO SOFMANSERVER
18:57:32,088 INFO  [STDOUT] 250-mx.google.com at your service, [200.25.201.121]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250 PIPELINING
18:57:32,088 INFO  [STDOUT] DEBUG SMTP: Found extension "SIZE", arg "35882577"
18:57:32,088 INFO  [STDOUT] DEBUG SMTP: Found extension "8BITMIME", arg ""
18:57:32,088 INFO  [STDOUT] DEBUG SMTP: Found extension "STARTTLS", arg ""
18:57:32,088 INFO  [STDOUT] DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
18:57:32,088 INFO  [STDOUT] DEBUG SMTP: Found extension "PIPELINING", arg ""
18:57:32,088 INFO  [STDOUT] STARTTLS
18:57:32,212 INFO  [STDOUT] 220 2.0.0 Ready to start TLS
18:57:32,803 INFO  [STDOUT] EHLO SOFMANSERVER
18:57:33,829 INFO  [STDOUT] 250-mx.google.com at your service, [200.25.201.121]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250-ENHANCEDSTATUSCODES
250 PIPELINING
18:57:33,829 INFO  [STDOUT] DEBUG SMTP: Found extension "SIZE", arg "35882577"
18:57:33,829 INFO  [STDOUT] DEBUG SMTP: Found extension "8BITMIME", arg ""
18:57:33,829 INFO  [STDOUT] DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
18:57:33,829 INFO  [STDOUT] DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
18:57:33,829 INFO  [STDOUT] DEBUG SMTP: Found extension "PIPELINING", arg ""
18:57:33,829 INFO  [STDOUT] DEBUG SMTP: Attempt to authenticate
18:57:33,829 INFO  [STDOUT] AUTH LOGIN
...

邮件成功发送.

VPS日志:

2011-10-26 19:54:10,290 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG: setDebug: JavaMail version 1.4ea
2011-10-26 19:54:10,292 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
2011-10-26 19:54:10,335 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG SMTP: useEhlo true, useAuth true
2011-10-26 19:54:10,335 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG SMTP: useEhlo true, useAuth true
2011-10-26 19:54:10,335 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 25, isSSL false
2011-10-26 19:54:10,418 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) 220 xsmtp05.mail2web.com ESMTP Exim Wed, 26 Oct 2011 19:54:09 -0400
2011-10-26 19:54:10,418 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG SMTP: connected to host "smtp.gmail.com", port: 25
2011-10-26 19:54:10,418 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) EHLO <my-vps-host-name>
2011-10-26 19:54:10,456 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) 250-xsmtp05.mail2web.com Hello <my-vps-host-name> [<my-vps-ip>]
250-SIZE 104857600
250-PIPELINING
250-AUTH PLAIN LOGIN
250-STARTTLS
250 HELP
2011-10-26 19:54:10,456 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG SMTP: Found extension "SIZE", arg "104857600"
2011-10-26 19:54:10,456 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG SMTP: Found extension "PIPELINING", arg ""
2011-10-26 19:54:10,456 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG SMTP: Found extension "AUTH", arg "PLAIN LOGIN"
2011-10-26 19:54:10,456 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG SMTP: Found extension "STARTTLS", arg ""
2011-10-26 19:54:10,456 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) DEBUG SMTP: Found extension "HELP", arg ""
2011-10-26 19:54:10,456 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) STARTTLS
2011-10-26 19:54:10,582 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) 220 TLS go ahead
2011-10-26 19:54:10,582 INFO  [STDOUT] (http-<my-vps-ip-and-jboss-port>-15) EHLO <my-vps-host-name>
2011-10-26 19:54:10,623 ERROR [<Class that sends mail>] (http-<my-vps-ip-and-jboss-port>-15) Can't send command to SMTP host
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

    ...

    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

    ...

    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    ...

    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我该怎么办才能消除此错误?

What should I do to get rid of this error?

推荐答案

问题已解决,它既不是网络问题也不是代码问题.我们使用的是javamail-1.4,升级到1.4.4版后,问题就消失了.

Problem was solved, it was neither a network problem or code problem. We were using javamail-1.4 and after upgrading to version 1.4.4, the issue was gone.

这篇关于从VPS发送邮件时的Javamail:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆