Ubuntu 20.04のクリーンなセルフホストインストールで管理者アクティベーションEメールが送信されない

こんにちは、コミュニティの皆様。

約 1 年前から、Ubuntu 18.04 上の VPS で正常に動作している自己ホスト型の Discourse インストール環境を持っています。フォーラムの規模が拡大してきたため、より高性能な VPS への移行を準備し始めました。そこで、最小限の Ubuntu 20.04 イメージを取得し、一般的なセキュリティ強化を適用した後、30 分インストールガイドに従って Discourse Docker をインストールしました。既存の正常に動作している環境と同じ設定値を使用しました。しかし、アクティベーションメールが送信されません。新しい Discourse インストールでのメールトラブルシューティング ガイドを試しましたが効果はありませんでした。telnet で接続は可能ですが、./discourse-doctor を実行すると以下のエラーが表示されます。

>==================== MAIL TEST ====================
信頼性の高いテストを行うには、http://www.mail-tester.com/ からメールアドレスを取得してください。
または、単に自分自身にテストメッセージを送信してください。
メールテスト用のメールアドレスを入力してください(スキップする場合は 'n')[anonymized]: test-9ymkghbvc@srv1.mail-tester.com
test-9ymkghbvc@srv1.mail-tester.com へメールを送信中...
smtp mailbox.org:587 を使用して test-9ymkghbvc@srv1.mail-tester.com への送信をテスト中。
==================== ERROR ======================
                                    UNEXPECTED ERROR
>
>503 5.5.1 エラー: 認証が有効になっていません
>
>
>================== SOLUTION =====================
>これは一般的なエラーではありません。推奨される解決策は存在しません!
>
>上記の正確なエラーメッセージを https://meta.discourse.org/ まで報告してください。
>(もし解決策が見つかった場合は、それも併せてお知らせください!)
>=================================================

(URL の一部を削除してここに投稿できるようにしました)

奇妙なことに、正常に動作している VPS 上でも ./discourse-doctor を実行すると同じエラーが発生します。そのため、このエラーが問題に関連しているのかどうか判断がつかない状況です。
ご覧の通り、私は mailbox.org をメールプロバイダーとして使用しており、非常に良好に機能しています。プライバシーの観点からも、堅牢なメールインフラストラクチャの構成という点でも優れた選択です。ホストとポートは確認済みで、Thunderbird でも他の Discourse インストール環境でも長年問題なく使用しています。

何かご存知の方がいらっしゃいますでしょうか?両方の VPS の間で私が確認できる唯一の違いは、動作している方が Ubuntu 18.04(※原文 18.08 は 18.04 の誤記と推測)で動作しているのに対し、問題が発生している VPS は Ubuntu 20.04 で動作している点です。

よろしくお願いいたします。
cazee

ハードニング中に、誤ってポート 587 をブロックしてしまいましたか?

yaml.app ファイルにタイプミスはありませんか?

smtp mailbox org:587

これは

smtp.mailbox org:587

であるべきではありませんか?ドットにご注意ください。

ご提案いただきありがとうございます。

ポート 587 は開放されており、トラブルシューティングガイドに記載されている通り、telnet で SMTP サーバーに接続できます。
また、ufw を無効化してテストしましたが、結果は同じでした。

yaml ファイルにタイプミスはありません。この投稿では意図的にドットを削除しました(新しいフォーラムアカウントのため、1 つの投稿で URL は 2 つまでしか許可されていないためです)。

他に確認すべきことやできることはありますか?

コードは適切なコードブロックとして投稿してください。それがあなたが直面した問題の原因です。

ついにこの問題を解決できました。

原因は、Discourse がデフォルトで使用する送信者メールアドレスでした。これはセットアップ時に設定されたホスト名(私の場合は v220200xxxxxxxxxxxx.powersrv.de のようなもの)から作成され、noreply@v220200xxxxxxxxxxxx.powersrv.de という送信者アドレスになります。これが SMTP サーバーに拒否されてしまっていたのです。

なぜこのようなフレンドリーでないホスト名を使用しているのでしょうか?既存のサーバーを置き換えるためのサーバーだからです。既存のサーバーは、成長した Discourse コミュニティには容量不足になってしまっています。DNS 設定を切り替えて新しいサーバーを本格的に使用するのは後で行う予定で、今は新しいサーバーの準備とテストを行っています。ここでは一時的なフレンドリーな DNS 設定を作成する時間を節約したかったのです。

問題を解決する方法は?
app.yml の末尾にある以下の行を探してください。

## If you want to set the 'From' email address for your first registration, uncomment and change:
## After getting the first signup email, re-comment the line. It only needs to run once.

最後の行のコメントアウトを解除し、SMTP サーバーが有効な送信者として受け入れるアドレスに合わせて変更してください。例:
- exec: rails r "SiteSetting.notification_email='USER@DOMAIN.TLD'"

その後、./launcher rebuild app を実行して変更を反映させます。これで完了です。アクティベーションメールが送信され、管理者アカウントをアクティベートしてセットアップを完了できます。

どのようにして原因を特定したのでしょうか?
ウェブスペースプロバイダーで新しいメールアカウントを作成し、その SMTP 認証情報を使って Discourse のセットアップを再度行いました。期待通りにアクティベーションメールが届いたので、SMTP 設定(Ubuntu / Docker / Discourse のセットアップそのものではない)に問題があることがわかりました。
この別の SMTP サーバーを使って管理者アカウントをアクティベートした後、[設定] > [メール] > [スキップ] に移動すると、アクティベーションメールの送信失敗ログが見つかりました:553 5.7.1 <noreply@v220200xxxxxxxxxxxx.powersrv.de>: Sender address rejected: not owned by user USER@DOMAIN.TLD

結論
Discourse 開発チームに、機能リクエスト Suggestion - allow optional system email “from” setting during setup について注意を喚起したいです。実際のインスタンスのアップグレード前にテストを実行する際(例えばコピーを作成してテストする場合など)に、フレンドリーなホストアドレスが存在しない環境でのインストールも考慮してください。app.yml を編集しなくても、よりスムーズにセットアップできるようになるはずです。また、私の意見では、管理者に Discourse ホスト名に紐付かないメールアドレスを使用する選択肢を与えることは良いことだと思います。

ありがとうございます :slight_smile:

また、コードブロックの投稿方法について教えてくださった @codinghorror にも感謝します。

discourse-setup の変更に取り組んでおり、セットアップ時に notification_email を設定する必要があります。これにより、今後このような問題は解消されます。

これはすでにマージされ、新規インストール時に設定を求められます!