カテゴリメールはreply_by_email_enabled?を必要としますか?

状況

  • reply_by_email_enabled は無効化されており、メールでの返信を望んでいません
  • 外部システムからの通知専用の管理者のみがアクセスできるカテゴリがある
  • そのカテゴリにはメールアドレスが設定されている
  • email_in は有効になっている
  • メールがカテゴリのメールアドレスに送信される
  • メールが BadDestinationAddress でバウンスする

原因

1時間のデバッグの後、以下のコミットに行き着きました: FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub

FIX: メール返信が無効なカテゴリへの返信を禁止する (#33641)

reply_by_email_enabled 設定が false の場合、メール通知に返信リンクを含めなくなります。しかし、カテゴリに関連付けられた設定済みの email_in アドレスへの実際のメール送信は防ぎません。この変更は Email::Receiver#check_address で考慮されます。

そして、影響を受けるコード は、reply_by_email_enabled が有効になっていない場合、カテゴリを返さなくなります。

    def self.check_address(address, include_verp = false)
      # 'email_in' が有効な場合のみ、グループ/カテゴリをチェックする
      if SiteSetting.email_in
        group = Group.find_by_email(address)
        return group if group

        category = Category.find_by_email(address)
        return category if category && SiteSetting.reply_by_email_enabled?  # <-- 追加された箇所
      end

なぜ? :scream:

私には多くの疑問があります:

  1. なぜこの変更が必要なのですか? 全くもって、システムをより柔軟性がなくなるようにしています。カテゴリにメールで返信されたくないなら、カテゴリからメールアドレスを削除すればよいだけではないですか?
  2. なぜこのように実装されているのですか?
  • グループへのメール受信は問題ないようです?
  • reply_by_email_enabled が false の場合、カテゴリを反復処理する必要はないのでは?
  • カテゴリをカテゴリリストから削除すると、エラーが BadDestinationAddress になり、これは非常に間違っており、デバッグが本当に困難になります。
  1. この変更で突然依存するようになった設定は、「メールでの返信」と呼ばれています。私がやっていることはそれではありません。

実装方法とは別に、その意図が全く理解できません。

カテゴリにメールが届くのを防ぎたい場合に、カテゴリからメールアドレスを削除するだけで済むという状況が考えられません。そして、この変更の含意は、サイト全体でのメール返信を有効にしない限り、メールを受信するカテゴリを持つことが不可能になったということです。

もし私が気づいていない本当に良い理由があるなら、Feature として再分類してください。

「いいね!」 5

実は自分でこれを見つけ、すでに対応を検討しています。

FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub で行われた修正は、副作用に依存し、それを導入してしまったため良くなかったと私も同意しますが、テストの構成上、それを引き起こす条件が存在しなかったため、私たちはそれに気づきませんでした。現在、それを修正する作業を行っています。

「いいね!」 3

私の提案する修正案:

https://github.com/discourse/discourse/pull/37227

「いいね!」 3

これはマージされました @RGJ - 設定を更新した後、意図したとおりに動作するか確認してもらえますか?

「いいね!」 2

はい、今では魔法のようにうまくいきました!ありがとうございます :slight_smile:

「いいね!」 1