Я установил mail-receiver для Discourse, чтобы получать ответы по электронной почте на моём самохостинговом сайте. В логах я вижу следующее предупреждение об устаревании:
Уведомление об устаревании: предупреждение: параметр email устарел. Все POST-запросы к этому маршруту должны отправляться с параметром email_encoded, закодированным в base64 (строгий режим). Параметр email получен и помещён в очередь на обработку (удаление в Discourse 3.3.0)
В /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/actionpack-7.2.2.1/lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action`
Я использую последнюю версию Discourse 3.5.0.beta3-dev, поэтому версия для устаревания указана неверно, но всё равно пугает мысль, что это может сломаться в любой момент.
Предупреждение об устаревании в исходном коде находится здесь.
А здесь находится строка, которую нужно изменить в mail-receiver, чтобы использовать кодирование base64. Дайте знать, если хотите, чтобы я подготовил pull request.
Симптом
Каждое входящее письмо через mail-receiver производит это в логах:
DEPRECATION NOTICE: warning: the email parameter is deprecated. all POST requests to this route should be sent with a base64 strict encoded email_encoded parameter instead. email has been received and is queued for processing (removal in Discourse 3.3.0)
At /var/www/discourse/vendor/bundle/ruby/3.4.0/gems/actionpack-8.0.5.1/lib/action_controller/metal/basic_implicit_render.rb:8:in `ActionController::BasicImplicitRender#send_action`
Что я проверил на своём сервере
base_image: discourse/mail-receiver:release в /var/discourse/containers/mail-receiver.yml — так что я работаю на ветке release, а не на закреплённой старой версии.
docker ps показывает local_discourse/mail-receiver, работающий наряду со стандартным контейнером приложения.
docker image inspect local_discourse/mail-receiver --format '{{.Created}}' → 2026-08-08T08:41:54Z — недавно пересобран с помощью ./launcher rebuild mail-receiver всего несколько дней назад.
Предупреждение об устаревании сохраняется после новой сборки на release.
Вывод
Предупреждение исходит от текущей последней версии release самого mail-receiver, который по-прежнему отправляет сырое письмо в устаревшем параметре email, а не в параметре email_encoded с строгим кодированием base64, который теперь ожидает endpoint. Насколько я могу судить, ничего в работающем образе release пока это не решает.
Это всего лишь предупреждение об устаревании (не ошибка), и письмо по-прежнему ставится в очередь и обрабатывается нормально, так что это не ломает мой сайт — но я бы очень хотел увидеть обновление кода mail-receiver, чтобы это предупреждение исчезло. Строка, вызывающая проблему, находится в discourse_mail_receiver.rb, которая отправляет параметр email вместо email_encoded.
Есть ли какие-либо сроки выпуска этого исправления в образе mail-receiver release?
Компонент mail-receiver всё ещё отправлял необработанное сообщение, используя устаревший параметр email. В PR изменено поведение: теперь сообщение отправляется с использованием email_encoded: Base64.strict_encode64(...), как того требует конечная точка /admin/email/handle_mail в Discourse.
Я также добавил регрессионный тест, который проверяет, что передаётся email_encoded и устаревший параметр email больше не используется.
Набор тестов для mail-receiver, а также проверки форматирования и линтинга проходят локально.