Discourse::InvalidAccess のプライベートサブカテゴリメールイン

Email-in Discourse::InvalidAccess からの議論の続きです。

再び Discourse::InvalidAccess が発生しました。今回は件名の長さが原因ではありません。制限されたサブカテゴリであることが原因だと疑っています。しかし、そのカテゴリはアカウントを持たないアドレスからのメールを受け付けるように設定されているため、メールが通過して新しいトピックが作成されると予想していました。

ユースケースはCFP(Call for Papers)です。人々はメッセージを送信できる必要がありますが、メッセージを読み、議論できるのは主催者のみであるべきです。これは、Email in to a private category で説明されているケースとは異なると考えます。


関連ドキュメント: Configuring incoming email to create new topics or group messages - Site Management - Discourse Meta

(noop) git pull の後に再構築しましたが、Postfix の relay_domains に追加された 2 番目のドメインで動作するようになりました。これらのテストを実行する前は、変更を加えてもエラーはなくなりましたが、メールはカテゴリにもエラーログにもまったく表示されませんでした。

containers/mail-receiver.yml には次のようになっています。

POSTCONF_relay_domains: forum.example.net, example.net

(もちろん、example.net は実際の設定ファイルにあるものではありません。そこにあるのは、フォーラムのホスト名と親ドメイン名であり、どちらも DNS に設定されています。)

@mpalmer が数年前に、2 番目のドメインを追加できると言及していたことに気づきましたが、

そのため、relay_domains の設定だけでは十分ではないと予想していましたが、git pull してから再構築すると機能するようです。mail-receiver コンテナのビルド方法には、 pups の更新に失敗する 何らかの癖 があるに違いありません。

どういうわけか、障害が再発しました。以前のテストはうまくいっていたので、これは少しばかげています。もう一度再構築した後、受信メールが再び拒否されています。git pull を繰り返してから rebuild のダンスに戻りましたが、今回はうまくいかなかったようです。

受信メールの処理方法(カテゴリ権限に関して)で 何かが変更された 可能性がない限り、サブカテゴリ の状況が影響しているのではないかと疑っています。

現在の状況は、人々がメールを送信し、拒否メールを受信するため、拒否されたメールをコピー&ペーストして元の投稿者にトピックを割り当てる必要があります。したがって、「ユーザーエクスペリエンス」はひどいものであり、オーバーヘッドはかなり厄介です。

CFPを行うという点から、受信メールが公開カテゴリであるとは到底受け入れられません。しかし、Discourse はこの目的を果たせないようです。:cry:

これらの拒否されたメールは、すでにアカウントを持っているユーザーからのものですか?

はい、いくつかあります。

アカウントのないユーザーからのメールは拒否されます(ただし、カテゴリは「アカウントのないアドレスからのメールを受信する」に設定されています)。

承認されたグループのユーザーからのメールは問題なく届くようです。

アカウントはあるが、そのカテゴリへのアクセス権がないユーザーからのメールは拒否されます。

デフォルトの承認設定にもかかわらず、権限がチェックされているようです。

現在、mail-receiver コンテナのコードを確認して、何か見つけられるか調べています。

アカウントを持っているものの、カテゴリへのアクセス権がないユーザーは、拒否されることが想定されています。Accept emails from anonymous users with no accounts はステージングされたユーザーにのみ適用され、既存のアカウントを持つユーザーにはカテゴリの権限が適用されます。

アカウントを持たないユーザーが拒否されるのは奇妙です。これは、メール受信者に対して行った変更が原因である可能性がありますか?

/admin/email/smtp_should_reject.json のエンドポイントで拒否が処理されているようです。

メールがバウンスしていたため、変更を行いました。最初に、受信メールアドレスに複数のメールを追加しました(「|」で区切りました)。それでうまくいったようです。

なるほど、これは理にかなっています。しかし、少し紛らわしいです。「誰でも」メールを送信できるのに、既存のユーザーはできない場合、それは目的を達成しているとは言えません。

拒否されたメールがステージングされているかどうかを確認します。デバッグにご協力いただき、ありがとうございます @JammyDodger

「いいね!」 1

@JammyDodger さん、おっしゃる通りだと思います。新規ユーザーは通過し、通常アクセス権を持つ既存ユーザーも通過しますが、アクセス権を持たない既存アカウントはカテゴリにメールを送信できません。

回避策としては、すべての既存ユーザーで構成される、カテゴリの通知なしのCFPグループを作成することだと思います。しかし、これは非常にハッキーに聞こえ、既存の通知をキャンセルする副作用があるかもしれません…どうすればよいかわかりません。

グループへのメール送信を代替手段として利用している人もいると思いますが、いかがでしょうか?

「いいね!」 1

それができる…おそらく、これがやるべきことでしょう。

ミュートされたカテゴリを持つグループは、同じカテゴリが「視聴中」に設定されている別のグループよりも優先されますか?

要約すると、以下のようになります。

  • 未知のメールアドレス(既存のアカウントに属さない、いわゆるステージングユーザー)からのメール受信が許可されたプライベートカテゴリがあるとします。

  • 未知のアドレスからのメールは、プライベートカテゴリに配信されます。

  • 既知のアドレスからのメールは、ユーザーがカテゴリへのアクセスを許可されたグループのメンバーである場合にのみ配信されます。

したがって、CFPにメール受信を使用したい場合は、プライベートグループのメール受信を設定し、そのアドレスを使用してください。メッセージは「公開」され、カテゴリ(プライベートかどうかにかかわらず)のトピックに変換できます。

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