Mirrored mailing list is rejecting registered forum users と同様です
そうではないようです。参照されているトピックは、不適切な設定によって引き起こされた権限の問題のようです。
申し訳ありません、ご迷惑をおかけしました。
私が見つけた問題に対する修正案を提案しましたが、これまでの調査によると、文字化けを引き起こしていたコンポーネントは保存されたレコードにのみ影響し、処理中の受信メールには影響しないようです。
問題の原因は他にあると確信していますが、まだ何であるかは特定できていません。
この変更がマージされたのを確認したので、本日Discourseインスタンスをアップグレードし、今後数日間、メール拒否ログを監視します。
アップグレード以来、3つの新しい InvalidPost エラーが記録されましたが、拒否の詳細は異なっています。3つのエラーすべてで、正しいメッセージ本文(以前はメーリングリストの署名が表示されていた場所)が表示され、拒否の理由が Access Denied になっています。
それは少なくともいくらかの改善ですね。
エラーの原因はユーザーに紐づいたままですか?
エラーが間違っていると確信していますか?ユーザーはこのカテゴリに投稿する権限がありますか?ユーザーはアクティブですか?
手元で確認したところ、その理由が当てはまらないようです。アカウントはアクティブであり、停止もミュートもされていません。しかし、メーリングリストの投稿がDiscourseに届くほとんどのアカウントとは異なり、そのアカウントは「ステージング済み」ではありません。ステージングされていないユーザーからの投稿はすべてモデレーションチームのメンバーによるものです。
当サイトのメーリングリストミラーカテゴリは、当初このガイドを使用して設定されました: Mirroring a read-only mailing list in Discourse
しかし、カテゴリに設定されている権限を確認したところ、モデレーターグループが追加されており、everyone(全員)にreply(返信)権限が付与されているようです。
これらの余分な権限を削除し、everyoneにはsee(閲覧)権限のみを残しました。もしかすると、これらの「余分な」権限が、Discourseがこれらの特別な「メーリングリストミラー」カテゴリを処理する方法に干渉しているのかもしれません。
ユーザーがステージングされていないことが問題かもしれません。ステージングされたユーザーはカテゴリへの投稿権限があるかチェックされませんが、登録ユーザーはチェックされます。したがって、ユーザーがカテゴリ内のトピックに返信する権限を持つグループに属していない場合、権限がないため返信は拒否されます。これは新しいトピックと「作成」権限にも同じことが当てはまります。
この問題に関するトピックはこちらです:Category not accepting "anonymous email" from known users
しかし、カテゴリーの構成済み権限を確認したところ、モデレーターグループが追加されており、
everyoneにはreply権限が付与されているようです。これらの余分な権限を削除し、
everyoneにはsee権限のみを残しました。おそらく、これらの「余分な」権限が、Discourse がこれらの特別な「メーリングリストミラー」カテゴリーを処理する方法に干渉しているのではないでしょうか?
いえ、それは取り消します。別のカテゴリーを見ていたようです。メーリングリストミラーカテゴリーの権限は想定通り、つまり everyone にのみ see 権限が付与されています。とはいえ、モデレーターでもステージングユーザーでもないユーザーからの投稿が、一貫して拒否されているという私の観察は変わりません。
この説明は私が見ているものに基づいて確かに理にかなっていますが、もしそうであれば、これは間違いなく予期せぬ、混乱を招く動作です。メーリングリストにミラーリングされたメーリングリストに投稿する送信者で、たまたま関連付けられたメールアドレスを持つDiscourseのアカウントをすでに持っている場合は、間違いなく「このカテゴリはメーリングリストをミラーリングしています」設定が有効になっているカテゴリに投稿することが許可されるべきです。
Discourse が、Discourse のメール処理を改善するために、Mailman チームの誰か(または同様の人物)を説得/支払いできれば素晴らしいでしょう。
Discourseがメーリングリストをミラーリングする読み取り専用カテゴリのメールを受信できることを保証するテストがあります。
それをサポートするために、メーリングリストミラーに送信された投稿は一部のチェックをバイパスします。
def create_post(options = {})
…
if sent_to_mailinglist_mirror?
options[:skip_validations] = true
options[:skip_guardian] = true
else
options[:email_spam] = is_spam?
options[:first_post_checks] = true if is_spam?
options[:email_auth_res_action] = auth_res_action
end
def sent_to_mailinglist_mirror?
@sent_to_mailinglist_mirror ||=
begin
destinations.each do |destination|
return true if destination.is_a?(Category) && destination.mailinglist_mirror?
end
false
end
end
推測ですが、セットアップに何らかの問題があり、それがメーリングリストミラーであるという事実が検出されない状況になっている可能性があります。これらのチェックをバイパスするには、メールがサイトの reply_by_email_address ではなく、カテゴリのメールアドレスに送信される必要があることに注意してください。
ああ、それは興味深いですね。メーリングリストのミラーを設定するための、こちらに投稿されたガイダンスとは矛盾しているように見えます。
Discourseのメールアドレス(例:
discourse@example.com)を使用してメーリングリストを購読します。
Discourseに代わってメーリングリストに登録されているメールアドレスを確認したところ、確かに discourse@forum.torproject.org でした。
ここで別のメールアドレスを使用すべきでしょうか?もしそうなら、どれでしょうか?
いいえ、これで問題ありません。
見落としている可能性があるのは、次の部分です。
(Discourse はメッセージヘッダー(To/CC)のみを使用し、エンベロープ宛先は認識しないことに注意してください)
tor-relaysカテゴリについては、「カスタム受信メールアドレス」をtor-relays@lists.torproject.orgに設定していますが、これはMailmanから送信されるメールのTo:ヘッダーと一致していると認識しています。