Warnung vor veralteter Verwendung des Mail-Empfänger-Parameters 'email'

Ich habe den Discourse Mail-Receiver installiert, um Antworten per E-Mail auf meiner selbst gehosteten Website zu ermöglichen. Ich erhalte die folgende Deprecation-Warnung in den Protokollen.

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.3.0/gems/actionpack-7.2.2.1/lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action`

Ich verwende die neueste Version von Discourse 3.5.0.beta3-dev, daher ist die Deprecation-Version falsch, aber es wirkt immer noch beängstigend, dass es jederzeit kaputtgehen könnte.

Die Deprecation im Quellcode ist hier

Und hier ist die Zeile, die in Mail-Receiver geändert werden muss, um stattdessen Base64-Kodierung zu verwenden. Lassen Sie mich wissen, ob Sie einen PR wünschen.

[Hinweis: Ich habe ask.discourse.org gebeten, diesen Beitrag basierend auf einem Troubleshooting-Gespräch zu verfassen.]

Ich habe das Problem mit der „mail-receiver-Abrufwarnung für den Parameter ‘email’“ auf meiner selbst gehosteten Site untersucht und möchte meine Erkenntnisse teilen, falls dies dazu beiträgt, eine Lösung zu veröffentlichen.

Symptom
Jede eingehende E-Mail über mail-receiver erzeugt folgende Meldung in den Logs:

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`

Was ich auf meinem Server überprüft habe

  1. base_image: discourse/mail-receiver:release in /var/discourse/containers/mail-receiver.yml — ich verwende also die release-Version, keine festgelegte alte Version.
  2. docker ps zeigt local_discourse/mail-receiver, der neben dem Standard-App-Container läuft.
  3. docker image inspect local_discourse/mail-receiver --format '{{.Created}}'2026-08-08T08:41:54Z — vor einigen Tagen mit ./launcher rebuild mail-receiver neu erstellt.
  4. Die Deprecation-Meldung bleibt auch nach einem Neuaufbau der release-Version bestehen.

Fazit

Die Warnung stammt aus der aktuellen neuesten Release-Version von mail-receiver selbst, die weiterhin die rohe E-Mail über den veralteten Parameter email sendet, anstatt den base64-strikt kodierten Parameter email_encoded zu verwenden, den das Endpunkt jetzt erwartet. Soweit ich sehen kann, löst das aktuell laufende release-Image dieses Problem noch nicht.

Es handelt sich nur um eine Deprecation-Meldung (keinen Fehler), und E-Mails werden weiterhin normal in die Warteschlange aufgenommen und verarbeitet, sodass meine Site nicht beeinträchtigt wird — aber ich würde es begrüßen, wenn der mail-receiver-Code aktualisiert würde, um diese Warnung zu entfernen. Die problematische Zeile befindet sich in discourse_mail_receiver.rb, die den Parameter email statt email_encoded überträgt.

Gibt es einen Zeitplan für die Veröffentlichung dieses Fixes im mail-receiver release-Image?

1 „Gefällt mir“

Update: Ich habe einen PR dafür erstellt:

Der mail-receiver hat die Rohnachricht weiterhin über den veralteten email-Parameter gesendet. Der PR ändert dies, sodass die Nachricht stattdessen über email_encoded: Base64.strict_encode64(...) gesendet wird, wie vom Discourse-Endpunkt /admin/email/handle_mail gefordert.

Ich habe außerdem einen Regressionstest hinzugefügt, der überprüft, ob email_encoded übermittelt wird und der veraltete email-Parameter nicht mehr verwendet wird.

Die Testsuite für mail-receiver sowie die Formatierungs- und Lint-Prüfungen bestanden lokal.