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.
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
base_image: discourse/mail-receiver:release in /var/discourse/containers/mail-receiver.yml — ich verwende also die release-Version, keine festgelegte alte Version.
docker ps zeigt local_discourse/mail-receiver, der neben dem Standard-App-Container läuft.
docker image inspect local_discourse/mail-receiver --format '{{.Created}}' → 2026-08-08T08:41:54Z — vor einigen Tagen mit ./launcher rebuild mail-receiver neu erstellt.
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?
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.