状況
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
なぜ? 
私には多くの疑問があります:
- なぜこの変更が必要なのですか? 全くもって、システムをより柔軟性がなくなるようにしています。カテゴリにメールで返信されたくないなら、カテゴリからメールアドレスを削除すればよいだけではないですか?
- なぜこのように実装されているのですか?
- グループへのメール受信は問題ないようです?
reply_by_email_enabledが false の場合、カテゴリを反復処理する必要はないのでは?- カテゴリをカテゴリリストから削除すると、エラーが
BadDestinationAddressになり、これは非常に間違っており、デバッグが本当に困難になります。
- この変更で突然依存するようになった設定は、「メールでの返信」と呼ばれています。私がやっていることはそれではありません。
実装方法とは別に、その意図が全く理解できません。
カテゴリにメールが届くのを防ぎたい場合に、カテゴリからメールアドレスを削除するだけで済むという状況が考えられません。そして、この変更の含意は、サイト全体でのメール返信を有効にしない限り、メールを受信するカテゴリを持つことが不可能になったということです。
もし私が気づいていない本当に良い理由があるなら、Feature として再分類してください。