メールやSMS送信のトラブルシュート
要求されたターゲットへの有効な証明書パスが見つかりません
エラー:
javax.net.ssl.SSLHandshakeException: sun.security.validatorException:PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certificate path to requested target
原因:
TLSまたはSSLの使用中に、Javaが電子メールサーバー証明書を認識しない可能性があります。
トラブルシュート手順:
電子メールサーバー、発行者、およびルート証明書を ADAudit Plusに手動でインポートする必要があります。
電子メールサーバー、発行者、およびルート証明書を取得する手順
電子メールサーバー証明書がない場合は、次の手順に従って、OpenSSLツールを使用して電子メールサーバーから証明書を取得します。
Google Chromeから証明書をエクスポートする手順
- コンピュータで Google Chromeを開き、アドレス バーにメールサーバーアドレスを入力してEnterキーを押します。
- URLの左側にあるアドレスバーにある南京錠のアイコンの[サイト情報の表示]オプションをクリックします。
- [接続は安全です]をクリックし、[証明書は有効です]をクリックすると、証明書ビューアーが開きます。
- [詳細] タブをクリックし、[エクスポート]をクリックすると、[名前を付けて保存] ウィンドウが開きます。
- 証明書ファイルの適切な名前を入力し、[名前を付けて保存]の種類として[Base64 エンコード ASCII、単一証明書]を選択し、[保存]をクリックします。
- 証明書をエクスポートしたら、証明書をADAudit Plusにインポートします。手順は本ページ下部を参照してください。
OpenSSLを使用して証明書を取得する手順
- OpenSSLツールをダウンロードしてインストールします。
- コマンドプロンプトを開き、次の場所に移動します:<OpenSSL_Installation directory>\bin。
- 接続するサーバーとポートを指定して、s_client コマンドを実行します。
- 使用しているサーバーにSSL接続が必要な場合は、次のコマンドを実行します。
OpenSSLs_client -connect <mail server name>:<sslport>
- 使用しているサーバーにTLS接続が必要な場合は、次のコマンドを実行します。
OpenSSLs_client -connect <mail server name>:<tlsport> -starttls smtp
- 使用しているサーバーにSSL接続が必要な場合は、次のコマンドを実行します。
- コマンドプロンプト画面に証明書に関連する情報が表示されます。情報から、BEGIN CERTIFICATE と END CERTIFICATE というタグを特定します。
- 前述のタグに含まれる情報をコピーしてテキスト ファイルに貼り付け、拡張子 .cer を付けてファイルを保存します。
電子メールサーバー証明書を ADAudit Plusにインポートする手順
証明書をADAudit Plusにインポートするには:
- ダウンロードした電子メールサーバー、発行者、および CA ルート証明書をコピーし、<ADAudit Plus_Installation directory>\binフォルダーに貼り付けます。
- コマンドプロンプトを開き、<ADAudit Plus_Installation directory>\jre\bin に移動し、次のコマンドを実行します。
keytool -import -v -alias adap -file "certificateName" -keystore "<ADAudit Plus_Installation directory>\jre\lib\security\cacerts" -keypass changeit
注記:証明書がインポートされたかどうかを確認するには、コマンドプロンプトを開き、<ADAudit Plus_Installation directory>\jre\bin に移動し、次のコマンドを実行します。
keytool -v -list -keystore ..\lib\security\cacerts>Certificate.txt
このコマンドを実行すると、<ADAudit Plus_Installation directory>\jre\bin フォルダーにCertificateという名前のテキストファイルが見つかります。ファイルを開き、必要な証明書がファイル内に存在することを確認します。
ダウンロードした証明書が正常にインポートされると、電子メールを送信できるようになります。
SSLハンドシェイク例外
エラー:
javax.net.ssl.SSLHandshakeException を javax .mail.MessagingException にキャストすることはできません
原因:
ADAudit Plusサーバーと電子メールサーバーが通信できない場合に発生します。誤ったポートまたは誤った安全な接続の詳細が使用された場合に発生する可能性があります。
トラブルシュート手順:
次のいずれかを使用して、電子メールサーバー経由で電子メールを送信できるかどうかを確認します。
- TLSまたはSSLが有効になっていない場合はTelnet
- TLSまたはSSLが有効な場合は OpenSSL
- Javaクライアント
Telnetを使用して接続をテストする手順
- コマンドプロンプトを開き、Telnetと入力して Enterキーを押します。このコマンドはTelnetセッションを開きます。
注記:宛先SMTPサーバーに接続すると、TelnetセッションではBackspaceキーを使用できなくなります。SMTPコマンドの入力を誤った場合は、Enterキーを押してコマンドを再入力する必要があります。
- 入力した文字を表示したい場合は、以下のオプションのコマンドを実行します。
set localecho
- ログ記録を有効にする場合は、以下のオプションのコマンドを実行して、Telnetセッションのログファイルを指定します。
set logfile <filename>
- 以下に示すように、[OPEN]と入力し、続いてメール サーバー名とポートを入力し、Enterキーを押します。
OPEN <mail server name><port>
- 以下に示すように、[EHLO]に続いてメール サーバーの完全修飾ドメイン名を入力して、SMTPとの通信を開始します。
EHLO<mail server name>
コマンドプロンプトは、サポートされているコマンドのリストを返します。
- 電子メールを送信するには、以下に示すように送信者の電子メールアドレスを入力し、Enterキーを押します。
MAIL FROM:<your_name@yourdomain.com>
コマンドプロンプトは、[250 2.1.0 Sender OK]というメッセージを返します。
- 次に、以下に示すように受信者の電子メール アドレスを入力し、Enterキーを押します。
RCPT TO:<recipient@recipientdomain.com> NOTIFY=success,failure
注記:NOTIFYコマンドはオプションです。この例では、メッセージの配信が成功したか失敗したかを示す配信ステータス通知を要求するために使用されます。
- 件名のヘッダーと本文を渡すには、[DATA]と入力して Enterキーを押します。
- [件名: テスト]と入力し、Enterキーを押します。
- 件名とメッセージの間には空白行が必要なので、再度Enterキーを押します。
- テストメッセージを入力し、Enterキーを押します。電子メールを送信する準備ができたら、ピリオド記号 (.) を入力して Enterキーを押します。電子メールが正常に配信された場合、コマンドプロンプトは[250 2.6.0 配信待ちのメール]というメッセージを返すはずです。
- SMTPサーバーから切断するには、[QUIT]と入力して Enterキーを押します。Telnetセッションを閉じるには、[QUIT]と入力して Enterキーを押します。
OpenSSLを使用して接続をテストする手順
- OpenSSLツールをダウンロードしてインストールします。
- インストールしたら、コマンドプロンプトを開き、<OpenSSL_Installation directory>\bin に移動します。
- 接続するサーバーとポートを指定して、s_client コマンドを実行します。
- 使用しているサーバーにSSL接続が必要な場合は、次のコマンドを実行します。
OpenSSLs_client -connect <mail server name>:<sslport>
- 使用しているサーバーにTLS接続が必要な場合は、次のコマンドを実行します。
OpenSSLs_client -connect <mail server name>:<tlsport> -starttls smtp
- 使用しているサーバーにSSL接続が必要な場合は、次のコマンドを実行します。
- 次に、以下に示すように、EHLO に続いてドメイン名またはIPアドレスを入力して、SMTP通信を開始します。
EHLO <mail server name>
- 自分自身を認証するには、次のように入力します。
AUTH LOGIN
- Base64でエンコードされたユーザー名を入力するように求められます。Base64でエンコードされたユーザー名を生成するには、この Web サイトを新しいタブで開き、電子メール アドレスを入力して、[エンコード] をクリックします。結果をコピーしてコマンドプロンプトに貼り付け、Enterキーを押します。
- さらに、Base64でエンコードされたパスワードを入力する必要があります。Base64でエンコードされたパスワードを生成するには、この Web サイトを新しいタブで開き、パスワードを入力して、[エンコード]をクリックします。結果をコピーしてコマンドプロンプトに貼り付け、Enterキーを押します。
- ここで、電子メールを送信するには、以下に示すようにコマンドプロンプトに送信者の電子メール アドレスを入力し、Enterキーを押します。
MAIL FROM:<your_name@yourdomain.com>
- 次に、以下に示すように受信者の電子メール アドレスを入力し、Enterキーを押します。
RCPT TO:<recipient@recipientdomain.com>
- 件名のヘッダーと本文を渡すには、[DATA]と入力して Enterキーを押します。
- [件名: テスト]と入力し、Enterキーを押します。
- 件名とメッセージの間には空白行が必要なので、もう一度 Enterキーを押します。
- テストメッセージを入力し、Enterキーを押します。電子メールを送信する準備ができたら、ピリオド記号 (.) を入力して Enterキーを押します。
- 数分間待ちます。電子メールが正常に送信された場合は、最後に確認 ([250 OK]) が表示されます。次に、[QUIT]と入力し、Enterキーを押して接続を閉じます。
Java クライアントを使用して接続をテストする手順
- TestMail.zipファイルをダウンロードし、<ADAudit Plus_Installation directory>\SMTPTest に抽出します。
- 次に、管理者としてコマンドプロンプトを開き、<ADAudit Plus_Installation directory>\SMTPTest に移動して、次のコマンドを実行します。
java -cp "<ADAudit Plus_Installation directory>\lib\Mail-1.4.4.jar;." TestMail
- このコマンドが正常に実行されると、次の詳細を入力するように求められます。
サーバー名/IP 電子メールサーバー名を入力します。 ポート 電子メールサーバーで使用されるポートを入力します。 安全な接続 (SSL/TLS) 使用する接続を指定します。 送信元アドレス 送信者の電子メール アドレスを入力します。 パスワード パスワードを入力します。 送信先アドレス 受信者の電子メール アドレスを入力します。 件名 件名を入力します。 メッセージ メッセージを入力します。 上記の詳細を指定すると、電子メールが正常に送信された場合は、[250 2.0.0 OK]という確認メッセージが届きます。
電子メールを送信できない場合は、電子メールサーバーに問題がある可能性があります。メールサーバーの設定が正しく行われているか確認してください。