2011-10-29 2 views
0

次の問題があります。私はJavamailを使って電子メールの作成と送信を行うSeam Webアプリケーションを持っています。アプリケーションはローカルのJBossアプリケーションサーバーでメールを送信しますが、myhosting.com VPSにインストールされているJBossサーバーでは機能しません。私は、接続しようとしているWebサーバーまたはURLに許可されたCAからの有効な証明書がないために問題が発生する可能性があることをお読みになりましたが、証明書を確認できるユーティリティ(http://cold-caffein.blogspot.com/2011/07/looks-like-article-no-more-unable-to.html)細かいこと(Gmailに接続しています)。Javamail:javax.net.ssl.SSLHandshakeException:VPSからメールを送信するときのsun.security.validator.ValidatorException

セッションプロパティを設定するための関連するコードは、次のとおりです。

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

私は問題の別の原因がtrueにmail.smtp.starttls.enableセットを使用することができることを読みますが、コードはでは動作しません。 2行目を省略するか、またはプロパティをfalseに設定すると、すべて(私のローカルサーバまたはVPS内)に保存されます。

myhostingが提供するmail2webメールサービスと問題があるかどうかはわかりません(私が下に提供している両方のログの9行目を見てください。ここで(後者は、私が取得していますエラーを示して)地元のJavaMailのログとVPS」サーバログです:

ローカルログ:

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 

私はこのエラーを取り除くために何をすべきか?

+0

あなたはVPS自体から、上記のユーティリティを実行しましたか?それは、それがトラストストアに問題があるようです。 – jsight

答えて

2

問題は解決されました。ネットワーク上の問題でもコードの問題でもありませんでした。私たちはjavamail-1.4を使用していましたが、バージョン1.4.4にアップグレードした後、問題はなくなりました。

0

あなたは(今のバージョンは1.5.5です)https://java.net/projects/javamail/pages/Homeでライブラリjavax.mail.jarをアップグレードすることができますし、コードを追加します。

MailSSLSocketFactory sf = new MailSSLSocketFactory(); 
sf.setTrustAllHosts(true); 
props.put("mail.smtp.ssl.trust", "*"); 
props.put("mail.smtp.ssl.socketFactory", sf); 
+0

ええ、ライブラリを更新するのが解決策でした。私たちはApache Commons Emailを使用して、このすべてのことを後ろに置いたままにしています。 – jpangamarca

+0

これはJavaメールよりも優れていますか? – TungHarry

+0

これはJavaMailの上に構築されています。「Commons Emailは、電子メールを送信するためのAPIを提供することを目的としています。Java Mail APIの上に構築されています。 (https://commons.apache.org/proper/commons-email/)。それは実際にあなたがより少ないLOCsとはるかに少ない騒ぎでメールを送ることを可能にします。 – jpangamarca

関連する問題