Серьезная проблема с почтой после обновления пару дней назад — 3.4.0.beta4-dev

Мне кажется, что с момента последнего обновления Discourse несколько дней назад почта для ответов перестала работать: письма не приходят, поэтому темы не обновляются, а также наблюдаются проблемы с отправкой писем для отслеживаемых категорий — отправлено только 5 из 65.

У кого-то ещё были подобные проблемы с почтой в последнее время?

Да, к сожалению, у меня те же проблемы с версией 3.4.0.beta4-dev. Я перепробовал всё: от повторной оценки файла app.yml до проверки настроек DNS для почты. Парадоксально, но из терминала я смог отправить письмо через SMTP в контейнере Discourse, используя wasm. Мне кажется, это может быть связано с какой-то ошибкой в конфигурации. Это серьёзная проблема для всех зарегистрированных пользователей, которые не получают письма о новых постах, рассылках и сбросе пароля. Ошибка 550 ERR наблюдается с момента обновления. Сейчас я надеюсь, что откат к версии v3.4.0.beta2 решит эту проблему.

Рад, что я не один. Надеюсь, разработчик исправит эту проблему как можно скорее. Я не знаю, как откатить обновление.

Установлено
3.4.0.beta4-dev
58f75ed205

Также в то же время было обновлено PostgreSQL с версии 13 до версии 15.

Не уверен, что обновление PostgreSQL нарушило конфигурацию настроек из GUI, так как я заметил, что добавление информации о сервере POP3 для опроса не привело к каким-либо изменениям в файле конфигурации app.yml Discourse… очень странно. Откат немного сложен, так как требует работы с тегами git и полной пересборки приложения из версий. Использование ChatGPT может помочь в устранении неполадок.

Удалось ли вам запустить это, откатившись к предыдущей версии?

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

Я попытался выполнить git checkout v3.4.0.beta2 в Docker, но несколько раз не удалось откатиться, несмотря на указание файла app.yml. Поэтому посмотрю, есть ли контактное лицо в Discourse, которое сможет исправить эту ошибку 550 для beta5 в ближайшее время.

Где вы видите эту ошибку? У меня сейчас большие проблемы с электронной почтой, но я не уверен, где именно можно увидеть ошибку 550. Спасибо.

В логах электронной почты через графический интерфейс я не вижу никаких ошибок. Просто ответы не приходят, а отправленные письма доходят только до нескольких человек, хотя должны быть доставлены примерно 65 людям.

Я вижу это в /logs:

image

Пожалуйста, не используйте @упоминания для членов команды.

Если вы являетесь платным клиентом Discourse, вы можете получить приоритетную поддержку, написав на team@discourse.org. В противном случае поддержка оказывается по мере возможности.

При сообщении о проблеме укажите, какой почтовый провайдер вы используете. Возможно, возникла регрессия в одном из популярных почтовых провайдеров, используемых в Discourse. Я точно не знаю.

Мне очень жаль, я не осознавал этого. Я больше так не буду. Спасибо, что указали мне на это касательно упоминаний.

Я использую Brevo, но, судя по тому, что некоторые письма всё же отправляются, думаю, проблема не в Brevo.

Ответы приходят через Gmail, и это всегда работало без сбоев.

Возможно, другой участник обсуждения сможет сообщить, какой сервис он использует. У него та же проблема.

Это находится в разделах «Логи сервера» и «Отчёты». Можно отправить тестовое письмо, и в вкладке «Пропущенные» вернётся ошибка 550 Mail. От разработчиков пока ничего не слышно. Также, возможно, после обновления PostGres 15 настройки не будут перенесены в базу данных для выполнения, если в app.yml требуется взаимодействие.

Я успешно отправляю тестовое письмо, ошибок нет. Это тестовое письмо отправляется через Brevo.

Проблема в том, что письма по отслеживаемым категориям получают лишь несколько пользователей. Отсутствующие письма не отображаются как пропущенные. Большинство пользователей просто не получают эти письма.

Вторая проблема заключается в том, что письма с ответами никогда не попадают в систему.

Эти проблемы возникли только после недавнего обновления.

Я использую Ubuntu 22.04, у меня тоже недавно обновился контейнер, но я заметил проблему с почтой только после обновления Discourse, которое, разумеется, также обновило Postgres.

Какую операционную систему вы используете, Фил?

Это часто встречается в логе продакшена:

Email can not be processed: Email::Receiver::EmptyEmailError

tail -1000 production.log-20250202 | grep ‘Email::Receiver::EmptyEmailError’ | wc -l
291

Я вижу эту тему, но не понимаю решение. Кто-нибудь может объяснить? Где находится входящий ящик? Я могу увидеть свой ящик, если дважды кликну по сообщениям для своей учётной записи, и могу удалить эти сообщения, но их не так много. То есть, как мне увидеть все входящие ответы на письма, какой ящик и т. д.

Когда вы нажимаете на ошибку, видите ли вы дополнительные сведения? Возможно, это просто одно письмо с некорректным форматированием, и мы постоянно переносим задание, предназначенное для его обработки.

Обратите внимание: я только что опубликовал сообщение в теме, которое должно было создать 65 писем, но в папке «Отправленные» появилось только 5, пропусков и прочего не было. Никаких ошибок или предупреждений.

В логах за вчера есть одна ошибка и одно предупреждение; не знаю, связаны ли они с моими проблемами с электронной почтой:

Сообщение (552 копии)

Исключение в задаче: Net::ReadTimeout

Трассировка стека

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:229:in `rbuf_fill'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:377:in `each_message_chunk'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:958:in `block in retr'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:1016:in `critical'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:956:in `retr'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:810:in `pop'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:47:in `block (2 levels) in poll_pop3'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:669:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:669:in `each_mail'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:46:in `block in poll_pop3'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:531:in `start'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:45:in `poll_pop3'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:14:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
/var/www/discourse/app/jobs/base.rb:379:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:137:in `process_queue'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:77:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads'




Сообщение (694 копии)

Не удалось обработать письмо: Email::Receiver::EmptyEmailError



Трассировка стека

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/lib/email/processor.rb:183:in `log_email_process_failure'
/var/www/discourse/lib/email/processor.rb:29:in `rescue in process!'
/var/www/discourse/lib/email/processor.rb:16:in `process!'
/var/www/discourse/lib/email/processor.rb:13:in `process!'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:29:in `process_popmail'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:49:in `block (2 levels) in poll_pop3'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:669:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:669:in `each_mail'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:46:in `block in poll_pop3'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-pop-0.1.2/lib/net/pop.rb:531:in `start'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:45:in `poll_pop3'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:14:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
/var/www/discourse/app/jobs/base.rb:379:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:137:in `process_queue'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:77:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads'

Откуда вы знаете, что должно было быть создано 65 писем?

Я точно знаю, что у категории «Watched» включена настройка «Наблюдаемые категории», сама категория помечена как «Наблюдаемая», и ни один пользователь не отключил уведомления. Должно было быть отправлено 65 писем, как и всегда до обновления.

Сегодня позже я обновлюсь до нового релиза — с версии 3.4.0.beta4-dev до новой — и посмотрю, изменится ли что-то.

Также я перезагружу виртуальную машину; полагаю, это корректно перезапустит базу данных. Кстати, установка БД прошла успешно в соответствии с документацией при обновлении до версии 3.4.0.beta4-dev.

Помимо уже упомянутых мной изменений, таких как обновления Ubuntu 22.04 для containerd, я не думаю, что проблема в них. Единственное другое изменение, которое я внес в конце прошлой недели, — это установка плагина CakeDay.