Discourse をインストールし、管理者アクセスも取得しましたが、招待メールやテストメールを送信しようとすると、完全に失敗します。
メールサーバー(mail.mydomain.com)には postmaster@mydomain.com というアカウントがあります。いくつかのサポートの質問と回答を読んだところ、mydomain.com には SPF および DKIM の DNS レコードが必要であるようです。インストール手順でこれを見落としていたのでしょうか?
SPF レコードを見つけてテストしましたが、問題ないようです。
個人のメールから postmaster@mydomain.com へメールを送信すると、正常に受信されます。
Discourse からテストメールを送信すると、受信されません。DKIM は必要でしょうか?もし必要であれば、DKIM はどのようにインストールすればよいのでしょうか?もう一度申し上げますが、この手順を見落としていたのでしょうか?
ご協力ありがとうございます…
riking
(Kane York)
2
SPF と DKIM は、Discourse からメールサーバーへの送信メールを妨げるものではありません。エラーメッセージがないか、フォーラムの /logs とメールサーバーのログを確認してください。
danb35
(Dan)
3
それらに関するドキュメントはメールプロバイダーから提供されるもので、設定方法は一つに定まっていません。ただし、前述の通り、配信失敗の原因がこれである可能性は極めて低いです。
皆様、ありがとうございます。遅れてしまい申し訳ありません。送信メールのテストがブラックホールに消えてしまうようです。SPF と DKIM レコードは必須ではないと今では理解しました。管理者としてログインした際に、現在は以下のような状況が見られます。
/emails/settings で、任意のメールアドレス(私のものでも招待されたユーザーのものでも、ホストドメインのものでもそれ以外でも)を入力すると、次のエラーメッセージが表示されます。
テストメールの送信中に問題が発生しました。メール設定を再確認し、ホストがメール接続をブロックしていないか検証して、再度お試しください。
Discourse のメール設定について私の理解では、設定は正しいと思うのですが、明確な定義を見たことがありません。ホストドメインがブロックしているわけではないと思います。なぜなら、私の個人アドレスからメールを送信できるからです。Discourse ドロップレットの UFW を確認したところ、無効と報告されています。
/logs/error ログは空です。明らかなエラー(上記)があるにもかかわらず、ログに記録されませんでした。「すべてのメール処理の失敗を [/logs] に記録する」は有効(チェック済み)です。ホストドメイン側でもエラーは見つかりません。
さらに、WP Discourse プラグインがインストールされているが非アクティブ化されている WordPress サイトも持っています。このプラグインが何か助けになるでしょうか?
TIA
編集…
ダッシュボードに戻ると、以下が表示されていました。
7 つのメールジョブが失敗しました。app.yml を確認し、メールサーバー設定が正しいことを確認してください。[Sidekiq で失敗したジョブを確認する](https://talk.thesturdytree.com/sidekiq/retries)
Sidekiq をクリックすると、以下の 7 つのエントリ(重複)が表示されます。
[3 時間後](https://talk.thesturdytree.com/sidekiq/retries/1585096899.6700559-58d9041788be7dd98d743894) 15 [default](https://talk.thesturdytree.com/sidekiq/queues/default) Jobs::InviteEmail {"invite_id"=>2, "current_site_id"=>"default"} Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>
[3 時間後](https://talk.thesturdytree.com/sidekiq/retries/1585097052.665957-fc6f06d948e7d37ec15354cc) 15 [critical](https://talk.thesturdytree.com/sidekiq/queues/critical) Jobs::CriticalUserEmail {"type"=>"email_login", "user_id"=>1, "email_token"=>"da467ec8590f0ecb0220d3aed5b33c61", "current_site_id"=>"default"} Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>
その管理者ダッシュボードページには「最新バージョンです!」と表示されていますが、droplet に SSH で接続すると、「55 パッケージが更新可能です」と表示されます。これは何か対応が必要でしょうか?
danb35
(Dan)
5
これらは無関係な問題です。管理ダッシュボードは Discourse 自体が最新であることを示しています。droplet にログインした際に表示されるメッセージは、システムソフトウェアの更新が可能であることを示しています。このシステムに対する自動更新の設定方法を調査することをお勧めします。
これは、Discourse インスタンスが指定されたメールサーバーに指定されたポートで接続できないことを示唆しています。設定が正しいことを確認し、DO が使用しようとしているポートからのアウトバウンド接続をブロックしていないか確認してください。
riking
(Kane York)
6
Stephen
(Stephen)
7
実行順序に従った提案:
- Droplet が telnet を介してメールサーバーに接続できるか確認する
- SMTP 資格情報が Droplet とは独立して機能するか確認する
1 が失敗した場合、ネットワークの問題が発生しています。DigitalOcean は特定の発信ポートをブロックすることがあり、これが問題の 85% の原因です。
1 と 2 の両方が機能する場合は、app.yml を確認してください。パスワードに正しく解析されない文字が含まれている場合(約 5%)か、入力ミスをしている可能性が高いです。
メールサーバーについて、推奨されるメールプロバイダーを使用するのではなく、自分でメールサーバーをホストしている場合、SPF と DKIM は配信性を向上させるのに確かに役立ちますが、メール関連の問題においては氷山の一角に過ぎない可能性が高いです。
ご支援いただきありがとうございます。
問題は、GoDaddy が提供するメールサーバーにあったと考えています。問題の原因を特定することはできませんでした。どうやら GoDaddy は共有アカウントに多くの問題を抱えているようです。結局、手間をかける価値はないと判断し、推奨されるメールプロバイダーを検索して mailjet.com を選びました。その後、mailjet の無料アカウントを開設し、app.yml をそれに応じて編集しました。さらに mailjet の設定追加も必要でした。再度、Discourse のメールテストを実行したところ、成功しました。私の Discourse コミュニティは小規模なので、mailjet の無料メール数の制限で問題はないはずです。現時点ではすべて順調ですが、まだ多くの設定が残っていることは認識しています。
改めてありがとうございます…