1. ホーム

メールサーバーの問題点まとめ

2022-02-11 23:29:12
メールサーバーの問題点まとめ
I. TLS設定なし
1.1 例外メッセージです。ソケットをTLSに変換できませんでした
MailSendException: メールサーバ接続に失敗しました。ネストされた例外は javax.mail. MessagingException です。ソケットを TLS に変換できませんでした。
  ネストされた例外は
        javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException.SSLHandshakeException: PKIX パスの構築に失敗しました: sun.security.provider.ValidatorException. SunCertPathBuilderException: 要求されたターゲットに対する有効な認証パスを見つけることができません。失敗したメッセージ: javax.mail. MessagingException: ソケットを TLS に変換できませんでした。
  ネストされた例外は
        javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException.SSLHandshakeException: PKIX パスの構築に失敗しました: sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットに対する有効な認証パスが見つかりません; メッセージ例外の詳細 (1) は次のとおりです。
失敗したメッセージ 1:
javax.mail.MessagingException: ソケットをTLSに変換できませんでした。
  ネストされた例外は
        javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException.SSLHandshakeException: PKIX パスの構築に失敗しました: sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットに対する有効な認証パスを見つけることができません。
        at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1907)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:666)
        at javax.mail.Service.connect(Service.java:295)
        at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:397)
        at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:346)
        at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:341)
        at consumer.service.consumer.EmailsMessageService.sendMailMethod(EmailsMessageService.java:104)
        at consumer.service.consumer.EmailsMessageService.consumerEmail(EmailsMessageService.java:56)
        at consumer.kafka.KafkaProxy.proxyService(KafkaProxy.java:31)
        at consumer.kafka.EmailSmsConsumer$1.run(EmailSmsConsumer.java:76)
        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)
原因: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました: sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットに対する有効な認証パスを見つけることができません。
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1916)
        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:1472)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:213)
        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:1035)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1344)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
        at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:549)
        at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:486)
        at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1902)
        ... 12個以上
原因:sun.security.validator.ValidatorException。PKIX パスの構築に失敗しました: sun.security.provider.certpath. SunCertPathBuilderException: 要求されたターゲットに対する有効な認証パスを見つけることができません。
        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:1454)
        ... 22件以上
1.2 回避策: "mail.smtp.starttls.enable", true
II.550
2.1 例外メッセージ 550 5.4.1 1. 受信者アドレスが拒否された - アクセス拒否
2.2 この問題は、2つの理由で発生する可能性があります。1. 受信者側で受信拒否している 2.インターネットセキュリティシステムの侵入防止機構がメール送信者のIPアドレスをブロックしているか、送信者のメールサーバーのIPアドレスがブラックリストに登録されている。
III. TLS=false
3.1 例外メッセージ MAIL FROM 中に匿名メールを送信するためにクライアントが認証されませんでした。
org.springframework.mail.MailSendException: 失敗したメッセージ:com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
3.2 回避策: "mail.smtp.starttls.enable", true
IV. メールのタイムアウト
4.1 例外メッセージ 明らかなエラーは報告されていませんが、スレッドがブロックされ、不明な理由で成功を返していません。
2016-12-27 11:38:05,485-[consumer.kafka.EmailSmsConsumer$1.run(EmailSmsConsumer.java:73)]-[DEBUG] コンシューマー向け partition7, 現在のスレッド名:pool-10-thread-14,consuming message [B@6753f6a9
2016-12-27 11:38:05,486-[consumer.kafka.KafkaProxy.proxyService(KafkaProxy.java:28)]-[DEBUG] proxyServiceメソッドを入力、話題:Email_Topic
2016-12-27 11:38:05,486-[consumer.service.consumer.EmailsMessageService.consumerEmail(EmailsMessageService.java:56)]-[INFO] コンシューマ側でコンテンツを受け取りました。EmailMessage
2016-12-27 11:38:05,489-[consumer.service.consumer.EmailsMessageService.sendMailMethod(EmailsMessageService.java:100)]-[INFO] メールを送信しています 服务器:smtp.office365.com,邮箱密码:a1977f109676fd7f21eaf9db75c7f885,邮件发送者:[email protected]
2016-12-27 11:38:05,489-[consumer.service.consumer.EmailsMessageService.sendMailMethod(EmailsMessageService.java:107)]-[INFO] メール送信先 [email protected],邮件接收[Ljava.lang.String;@4f5bce23.Ljava.lang.String]-[Ljava.lang.String;@4f5bce23.Ljava.lang.String]-[INFO] メールの送信先は以下の通りです。
2016-12-27 11:41:53,740-[consumer.kafka.EmailSmsConsumer$1.run(EmailSmsConsumer.java:73)]-[DEBUG] コンシューマー向け パーティション0 現在のスレッド名:pool-10-thread-13,メッセージを消費中 [B@108de152
2016-12-27 11:41:53,741-[consumer.kafka.KafkaProxy.proxyService(KafkaProxy.java:28)]-[DEBUG] proxyServiceメソッドを入力、トピック:Email_Topic、データ:EmailMessage
2016-12-27 11:41:53,741-[consumer.service.consumer.EmailsMessageService.consumerEmail(EmailsMessageService.java:56)]-[INFO] コンシューマ側でコンテンツを受け取りました。EmailMessage 
2016-12-27 11:41:53,743-[consumer.service.consumer.EmailsMessageService.sendMailMethod(EmailsMessageService.java:100)]-[INFO] メールを送信しています 服务器:smtp.office365.com,邮箱密码:a1977f109676fd7f21eaf9db75c7f885,邮件发送者:[email protected]
2016-12-27 11:41:53,744-[consumer.service.consumer.EmailsMessageService.sendMailMethod(EmailsMessageService.java:107)]-[INFO] [email protected] にメール送信、 2016-12-27 11:41:58,341-[consumer.service.consumer.EmailsMessageService.sendMailMethod(EmailsMessageService.java:110)]-[INFO] にメール送信。 メール送信成功
4.2 回避策: "mail.smtp.connectiontimeout", 80000
"mail.smtp.timeout", 80000
V. javamail API と設定ドキュメント https://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html