カテゴリのメールには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. この変更で突然依存関係が生じた設定は、reply by email(メールによる返信)と呼ばれています。私が行っているのはそれではありません。
  2. 同じ混乱が PR のタイトルにも見られます。「disallow replies to categories」(カテゴリへの返信を禁止する)というタイトルですが、これも今回の件とは関係ありません(Discourse では「カテゴリへの返信」自体が不可能です)。

実装方法に加え、正直なところ、この変更の意図が見当たりません。

カテゴリへのメール送信を防止したい場合、カテゴリからメールアドレスを削除すれば問題解決する状況が、私には考えられません。その結果、サイト全体のメールによる返信を有効にせずに、カテゴリがメールを受信できるようになることは、もはや不可能になりました。

私が見落としている本当に良い理由がある場合は、Contribute > 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:

「いいね!」 2