最新アップデート後にメールジョブが失敗、証明書検証失敗(ローカル発行者の証明書を取得できません)

申し訳ありませんが、またしても重複した質問をさせていただきます。同様のサポートリクエストは多数あるようですが(例:https://meta.discourse.org/t/email-notifications-failing-after-update/132271)、当社のエラーメッセージは若干異なります。

“certificate verify failed (unable to get local issuer certificate)”

これは5月11日のアップデート後、2.9.0で発生しています。
from_version: a76256756fc8442eab960cc1c7d37a737efb5a69,
repository: /var/www/discourse, /var/www/discourse/plugins/styleguide

GitHubで確認したところ、これはsidekiqに影響しているようですが、突然より厳しくなったのでしょうか?現在、メールリレーとも連携していますが、もし修正方法についてより具体的な情報を提供できたり、あるいは当社のフォーラム側(https://forum.solarfarmer.dnv.com/)の問題であれば、より迅速なトラブルシューティングに役立ちます。

何かお手伝いいただけることがあれば、よろしくお願いします。

「いいね!」 1

これは Email Hostname Certificate Mismatch Causing sidekiq Queue Overload, Severe Site Instability と同じ問題です

「いいね!」 3

@RGJ

openssl s_client -connect  smtp.mydomain.info:25 -starttls smtp -showcerts 2>&1|grep "depth=0"

を実行してみましたが、他のドメインは表示されず、sidekiqと同じエラー「unable to get local issuer certificate」とその他の情報が表示されるだけでした。app.ymlのメール設定を、私たちのメールリレーに変更したり元に戻したりして、そのたびに./launcher rebuild appを実行しましたが、今のところ何も機能していません。

「いいね!」 1

これには3つの原因が考えられます。

  • 証明書の有効期限切れ
  • 証明書のホスト名と接続先のホスト名が異なる
  • 証明書がない

お客様の場合は、最後のケースに該当するようです。解決策は、正しく設定され、STARTTLSをサポートし、正しい証明書を持つSMTPサーバーを使用することだけです。

「いいね!」 3

@RGJさん、ありがとうございます。しかし、この問題はバージョン2.9.0にアップグレードした後にのみ発生したのはなぜでしょうか?STARTTLSがこの要件の施行をより厳格にしているためでしょうか。当社のメールリレーやapp.ymlのメール設定に変更はありません。サイトのIPはIT部門が管理するメールリレーでホワイトリストに登録されています。私にはそれを制御できません。サイトのCNAMEもIT部門が管理しています。彼らは異なるドメインを持っています。CNAMEは「dnv.com」で、メールリレーは「dnvgl.com」ですが、それが問題の一部でしょうか?IT部門と並行してこの件を進めていますが、できるだけ多くの情報を提供しようとしています。無知をお許しください。これらの多くは私には手に余ることなので、不適切な用語を使用しているかもしれません。すみません:frowning:

「いいね!」 1

Discourse が 2.9.0.beta3 と beta4 の間で Rails 7 にアップグレードしたことで変更が発生し、これが原因で発生しました。

Email Hostname Certificate Mismatch Causing sidekiq Queue Overload, Severe Site Instability - #47 by RGJ を参照してください。

「いいね!」 3

IT部門によると、「証明書に問題はない(メールリレー用)、すべてアクティブで、SMTPサービスで使用するために正しく設定されている。第二に、このメールリレーを使用している他のサービス/クライアントから問題の報告は受けていない。」とのことです。 :cry:

「いいね!」 1

ITはoffice365 onmicrosoftで新しいメールアカウントを作成しましたが、まだ問題が発生しています。現在、ReadTimeoutまたはSMTPAuthenticationError: Unrecognized authentication typeのいずれかを取得しています。

現在の設定:

DISCOURSE_SMTP_ADDRESS: smtp.office365.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: myusername
DISCOURSE_SMTP_PASSWORD: "mypassword"  # 引用符は必要ですか?
DISCOURSE_SMTP_ENABLE_START_TLS: true  # これは正しいですか?
DISCOURSE_SMTP_DOMAIN: outlook.com
DISCOURSE_NOTIFICATION_EMAIL: myusername@mycompany.onmicrosoft.com

ここで、my* は新しいメールアカウントに固有のものです。

「いいね!」 1

@RGJ 皆さんのご協力に感謝します。ついに、ついに解決しました。office365 の調整DISCOURSE_SMTP_AUTHENTICATION: login を使用することです。

office365 smtp サーバーとポートの設定smtp.office365.com:587STARTTLS が有効になっており、これはデフォルトで有効になっています。

ユーザー名は、office365 を使用している組織の完全なメールアドレス、通常は myaccount@mycompany.onmicrosoft.com です。これは通知メールと同じ場合もあれば、そうでない場合もあります。

最終的な設定は以下の通りです。


  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: myacct@mycompany.onmicrosoft.com
  DISCOURSE_SMTP_PASSWORD: mypassword
  DISCOURSE_SMTP_ENABLE_START_TLS: true
  DISCOURSE_SMTP_DOMAIN: outlook.com
  DISCOURSE_NOTIFICATION_EMAIL: myacct@mycompany.com
  DISCOURSE_SMTP_AUTHENTICATION: login

Mail Tester によると、10点中10点です!

「いいね!」 2

当社のサービスでも、他の多くのサービスで正常に使用されているSMTPサーバーで全く同じ問題が発生しています。SMTPサーバーはLet’s Encryptによって発行されたワイルドカード証明書を使用しています。

エラーメッセージは次のとおりです。「(unable to get local issuer certificate)」

Disabling starttls or certificate verification does not work any more で説明されているように、バグだと思います。

ただし、有効な証明書があるとのことですので、私の勘違いかもしれません。

@RGJ が推奨するコマンドを使用してドメイン名を確認してみてください。

openssl s_client -connect smtp.mydomain.info:25 -starttls smtp -showcerts 2>&1 | grep "depth=0"

もし証明書が返された場合は、ドメインが openssl から返された証明書と一致することを確認してください。また、上記でリンクされている「Email Hostname Cert Mismatch Causing sidekiq…」というスレッドも確認してください。

また、メールのトラブルシューティングガイドも非常に役立ちました。必要な情報を見つけるために、数回注意深く読む必要がありました。あなたも何か見つかるかもしれませんか?

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.