# Предупреждение о прекращении поддержки почтового получателя по параметру 'email'

**URL:** https://meta.discourse.org/t/mail-receiver-deprecation-warning-on-email-parameter/363900
**Category:** Bug
**Tags:** mail-receiver, fixed
**Created:** [29.Апрель.2025 01:50:17 UTC](https://meta.discourse.org/t/mail-receiver-deprecation-warning-on-email-parameter/363900 "2025-04-29T01:50:17Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![textkit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/textkit/32/500981_2.png) [@textkit](https://meta.discourse.org/u/textkit)
#### Post date: [29.Апрель.2025 01:50:17 UTC](https://meta.discourse.org/t/mail-receiver-deprecation-warning-on-email-parameter/363900/1 "2025-04-29T01:50:17Z")

</div>

Я установил mail-receiver для Discourse, чтобы получать ответы по электронной почте на моём самохостинговом сайте. В логах я вижу следующее предупреждение об устаревании:

```plaintext
Уведомление об устаревании: предупреждение: параметр 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, поэтому версия для устаревания указана неверно, но всё равно пугает мысль, что это может сломаться в любой момент.

Предупреждение об устаревании в исходном коде находится [здесь](https://github.com/discourse/discourse/blob/1ab57f691028e5bb3f1703dec574dd8546d45a8d/app/controllers/admin/email_controller.rb#L120).

А [здесь](https://github.com/discourse/mail-receiver/blob/main/lib/mail_receiver/discourse_mail_receiver.rb#L40) находится строка, которую нужно изменить в mail-receiver, чтобы использовать кодирование base64. Дайте знать, если хотите, чтобы я подготовил pull request.

---

<div class="post-metadata">

### Author: ![one1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/one1/32/493591_2.png) [@one1](https://meta.discourse.org/u/one1)
#### Post date: [10.Август.2026 15:16:59 UTC](https://meta.discourse.org/t/mail-receiver-deprecation-warning-on-email-parameter/363900/2 "2026-08-10T15:16:59Z")

</div>

[Примечание: Я попросил [ask.discourse.org](http://ask.discourse.org) написать этот пост на основе разговора по устранению неполадок.]

Я расследовал проблему «[предупреждение об устаревании параметра email в mail-receiver](https://meta.discourse.org/t/mail-receiver-deprecation-warning-on-email-parameter/363900)» на моём self-hosted сайте и хотел поделиться тем, что я подтвердил, на случай, если это поможет выпустить исправление.

**Симптом**  
Каждое входящее письмо через mail-receiver производит это в логах:

```plaintext
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`

```

**Что я проверил на своём сервере**

1. `base_image: discourse/mail-receiver:release` в `/var/discourse/containers/mail-receiver.yml` — так что я работаю на ветке `release`, а не на закреплённой старой версии.
2. `docker ps` показывает `local_discourse/mail-receiver`, работающий наряду со стандартным контейнером приложения.
3. `docker image inspect local_discourse/mail-receiver --format '{{.Created}}'` → `2026-08-08T08:41:54Z` — недавно пересобран с помощью `./launcher rebuild mail-receiver` всего несколько дней назад.
4. Предупреждение об устаревании **сохраняется после новой сборки на `release`**.

**Вывод**

Предупреждение исходит от **текущей последней версии release** самого mail-receiver, который по-прежнему отправляет сырое письмо в устаревшем параметре `email`, а не в параметре `email_encoded` с строгим кодированием base64, который теперь ожидает endpoint. Насколько я могу судить, ничего в работающем образе `release` пока это не решает.

Это всего лишь предупреждение об устаревании (не ошибка), и письмо по-прежнему ставится в очередь и обрабатывается нормально, так что это не ломает мой сайт — но я бы очень хотел увидеть обновление кода mail-receiver, чтобы это предупреждение исчезло. Строка, вызывающая проблему, находится [в `discourse_mail_receiver.rb`](https://github.com/discourse/mail-receiver/blob/main/lib/mail_receiver/discourse_mail_receiver.rb#L40), которая отправляет параметр `email` вместо `email_encoded`.

Есть ли какие-либо сроки выпуска этого исправления в образе mail-receiver `release`?

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [11.Август.2026 13:32:17 UTC](https://meta.discourse.org/t/mail-receiver-deprecation-warning-on-email-parameter/363900/3 "2026-08-11T13:32:17Z")

</div>

Обновление: Я создал PR для этого:

> <https://github.com/discourse/mail-receiver/pull/37>
>
> \## What does this change?
> 
> Updates mail-receiver to send incoming MIME messages …using the
> \`email\_encoded\` parameter expected by Discourse's \`/admin/email/handle\_mail\`
> endpoint.
> 
> The message is encoded with \`Base64.strict\_encode64\` before being added to
> the form data.
> 
> This removes use of the deprecated raw \`email\` parameter.
> 
> \## Why?
> 
> Discourse currently logs a deprecation notice for every incoming email sent
> by mail-receiver:
> 
> \> the email parameter is deprecated. all POST requests to this route should
> \> be sent with a base64 strict encoded email\_encoded parameter instead
> 
> A freshly rebuilt \`discourse/mail-receiver:release\` still reproduces the
> warning because the current mail-receiver code continues to send \`email\`.
> 
> \## Tests
> 
> Adds regression coverage which verifies that:
> 
> \- the deprecated \`email\` parameter is not sent
> \- \`email\_encoded\` is sent
> \- the encoded value represents the original MIME message
> 
> Tested locally with Ruby 3.2.11:
> 
> \- \`bundle exec rake test\` — 16 examples, 0 failures
> \- \`bundle exec rubocop\` — no offenses
> \- \`bundle exec stree check ...\` — all files matched expected format
> 
> This is related to #13, which proposed the same API migration in 2023.
> This PR refreshes that change against current \`main\` and adds regression
> coverage.

Компонент mail-receiver всё ещё отправлял необработанное сообщение, используя устаревший параметр `email`. В PR изменено поведение: теперь сообщение отправляется с использованием `email_encoded: Base64.strict_encode64(...)`, как того требует конечная точка `/admin/email/handle_mail` в Discourse.

Я также добавил регрессионный тест, который проверяет, что передаётся `email_encoded` и устаревший параметр `email` больше не используется.

Набор тестов для mail-receiver, а также проверки форматирования и линтинга проходят локально.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [13.Август.2026 13:58:28 UTC](https://meta.discourse.org/t/mail-receiver-deprecation-warning-on-email-parameter/363900/4 "2026-08-13T13:58:28Z")

</div>


