Ситуация
- параметр
reply_by_email_enabledотключен, мы не хотим, чтобы пользователи отвечали по электронной почте - категория только для администраторов для уведомлений из внешней системы
- для категории настроен адрес электронной почты
- функция
email_inвключена - электронные письма отправляются на адрес электронной почты категории
- письма отклоняются с ошибкой
BadDestinationAddress
Причина
После часа отладки я наткнулся на следующий коммит FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub
ИСПРАВЛЕНИЕ: Запрет ответов на категории, если отправка ответов по почте отключена (#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, что ОЧЕНЬ неверно и ОЧЕНЬ сложно отладить
- настройка, от которой теперь внезапно зависит это поведение, называется ответ по электронной почте. Это не то, что я делаю.
- та же путаница видна в заголовке PR, который называется «запрет ответов на категории», что не соответствует действительности (в Discourse «ответ на категорию» вообще невозможен).
Помимо способа реализации, я честно не вижу смысла.
Я не могу придумать НИ ОДНОЙ ситуации, когда простое удаление адреса электронной почты из категории не сработало бы, если нужно предотвратить отправку писем в категорию. А это означает, что теперь стало невозможно иметь категорию, принимающую письма, не включая глобальную функцию ответов по почте для всего сайта.
Если есть действительно веская причина, которую я упускаю, не стесняйтесь переклассифицировать как Contribute > Feature