Reply-by-Email работал, теперь не работает

Наша функция «Ответ по электронной почте» работала два года, а затем перестала функционировать 17 дней назад без видимых причин. Я проверил журналы действий сотрудников за этот период: никаких изменений конфигурации, обновлений или новых плагинов не было. Что могло сломаться?


После 30 сентября входящие письма не поступают:


Письма также не отклоняются:


В журналах ошибок ничего явно связанного не обнаружено, но вот это:

aws-sdk-core-3.112.1/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'

aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'

aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/dualstack.rb:36:in `call'

aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/accelerate.rb:50:in `call'

aws-sdk-core-3.112.1/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:22:in `call'

aws-sdk-core-3.112.1/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'

aws-sdk-core-3.112.1/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'

aws-sdk-core-3.112.1/lib/seahorse/client/plugins/request_callback.rb:71:in `call'

aws-sdk-core-3.112.1/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'

aws-sdk-core-3.112.1/lib/seahorse/client/plugins/response_target.rb:24:in `call'

aws-sdk-core-3.112.1/lib/seahorse/client/request.rb:72:in `send_request'

aws-sdk-s3-1.96.1/lib/aws-sdk-s3/client.rb:1274:in `copy_object'

/var/www/discourse/lib/backup_restore/s3_backup_store.rb:61:in `block in vacate_legacy_prefix'

/var/www/discourse/lib/backup_restore/s3_backup_store.rb:60:in `each'

/var/www/discourse/lib/backup_restore/s3_backup_store.rb:60:in `vacate_legacy_prefix'

/var/www/discourse/app/jobs/onceoff/vacate_legacy_prefix_backups.rb:7:in `execute_onceoff'

/var/www/discourse/app/jobs/onceoff/onceoff.rb:25:in `execute'

/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'

rails_multisite-3.1.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'

/var/www/discourse/app/jobs/base.rb:221:in `block in perform'

/var/www/discourse/app/jobs/base.rb:217:in `each'

/var/www/discourse/app/jobs/base.rb:217:in `perform'

sidekiq-6.2.2/lib/sidekiq/processor.rb:196:in `execute_job'

sidekiq-6.2.2/lib/sidekiq/processor.rb:164:in `block (2 levels) in process'

sidekiq-6.2.2/lib/sidekiq/middleware/chain.rb:138:in `block in invoke'

/var/www/discourse/lib/sidekiq/pausable.rb:138:in `call'

sidekiq-6.2.2/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'

sidekiq-6.2.2/lib/sidekiq/middleware/chain.rb:143:in `invoke'

sidekiq-6.2.2/lib/sidekiq/processor.rb:163:in `block in process'

sidekiq-6.2.2/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'

sidekiq-6.2.2/lib/sidekiq/job_retry.rb:112:in `local'

sidekiq-6.2.2/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'

sidekiq-6.2.2/lib/sidekiq.rb:38:in `block in <module:Sidekiq>'

sidekiq-6.2.2/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'

sidekiq-6.2.2/lib/sidekiq/processor.rb:257:in `stats'

sidekiq-6.2.2/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'

sidekiq-6.2.2/lib/sidekiq/job_logger.rb:13:in `call'

sidekiq-6.2.2/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'

sidekiq-6.2.2/lib/sidekiq/job_retry.rb:79:in `global'

sidekiq-6.2.2/lib/sidekiq/processor.rb:124:in `block in dispatch'

sidekiq-6.2.2/lib/sidekiq/logger.rb:11:in `with'

sidekiq-6.2.2/lib/sidekiq/job_logger.rb:33:in `prepare'

sidekiq-6.2.2/lib/sidekiq/processor.rb:123:in `dispatch'

sidekiq-6.2.2/lib/sidekiq/processor.rb:162:in `process'

sidekiq-6.2.2/lib/sidekiq/processor.rb:78:in `process_one'

sidekiq-6.2.2/lib/sidekiq/processor.rb:68:in `run'

sidekiq-6.2.2/lib/sidekiq/util.rb:43:in `watchdog'

sidekiq-6.2.2/lib/sidekiq/util.rb:52:in `block in safe_thread'

Используется ручной опрос, а не POP3-опрос:

image


Отправители, пытающиеся ответить по электронной почте, не получают никаких уведомлений об отклонении или сообщений об ошибках.

Отправка писем с форума работает нормально. В AWS SES проблем нет (хотя, думаю, это не связано с функцией «Ответ по электронной почте»?).

В утилите discourse-doctor тоже ничего критичного (за исключением замечания о неофициальных плагинах, но они не менялись в этот период).

Это может быть просто совпадением (и какая-то часть меня так считает), но…

Это довольно состоятельная группа — сомневаюсь, что многие используют старые устройства.

Я думаю, что это скорее проблема на стороне сервера, а не на стороне клиента.

Я думаю, вам нужно пересобрать ваш почтовый контейнер NFL.

Боюсь, мне нужно больше объяснений — нигде в meta нет упоминаний об NFL (кроме футбольных команд). NFS? В /var/discourse/containers нет таких контейнеров.

Извините. Автокоррекция.

Пересоберите контейнер почты.

cd /var/discourse 
./launcher rebuild mail-receiver 

Спасибо @pfaffman, это помогло. Похоже, вы уже сталкивались с этим раньше — можно ли было что-то сделать лучше? В нашем случае последствия вышли за рамки простого неполучения писем от пользователей:

VERP полагается на входящие письма. Поэтому в течение нескольких дней мы не обрабатывали возвраты и жалобы, наша репутация в SES резко упала, и они приостановили отправку наших исходящих писем.

Это результат DST Root CA X3 Expiration (September 2021) - Let's Encrypt. Это застало нескольких человек врасплох, а проблемы, которые это вызвало для самохостеров Discourse, настолько тонкие, что их не заметили. И до сих пор есть проблемы, которые нужно решить.

Я подозреваю, что их обработка прекратилась 1 октября.

Мне так и не удалось разобраться, как заставить работать SES. В качестве экстренного временного решения можно настроить исходящую почту через Mailgun.