Discourse/mail-receiver:release Docker-Image scheint veraltet zu sein

Hallo,

ich glaube, das offizielle discourse/mail-receiver:release-Docker-Image wurde übersehen und seit geraumer Zeit nicht mehr neu gebaut.

Das GitHub-Repository wird weiterhin aktiv gepflegt:

Das offizielle Docker-Image:

discourse/mail-receiver:release

scheint jedoch fast vor 2 Jahren gebaut worden zu sein.

Dies führt offenbar zu Kompatibilitätsproblemen mit aktuellen Versionen von Discourse.

In meinem Fall erreicht die eingehende E-Mail den Mail-Receiver erfolgreich, wird aber während RCPT TO mit folgender Meldung abgelehnt:

450 4.7.1 Recipient address rejected: Internal error, API request failed

Das alte Docker-Image scheint weiterhin den smtp_should_reject- / Fast-Rejection-Mechanismus zu verwenden.

Die aktuelle Discourse-Quellcode enthält jedoch diesen Kommentar:

# this endpoint has been broken for years
# and was used only in the public mail-receiver's fast rejection code,
# which is removed in https://github.com/discourse/mail-receiver/pull/33

PR #33 hat diesen Fast-Rejection-Code bereits aus mail-receiver entfernt, aber diese Änderungen scheinen nicht im aktuell veröffentlichten discourse/mail-receiver:release-Image enthalten zu sein.

Die offizielle Mail-Receiver-Dokumentation/README weist die Benutzer weiterhin an, Folgendes zu verwenden:

discourse/mail-receiver:release

Ich frage mich daher, ob der Veröffentlichungsprozess für das Docker-Image nach den jüngsten Änderungen einfach übersehen wurde.

Könntet ihr bitte prüfen, ob ein neues discourse/mail-receiver:release-Image gebaut und veröffentlicht werden muss?

Danke!

2 „Gefällt mir“

Update: Ich habe den aktuellen main-Branch getestet

Ich habe den aktuellen main-Branch lokal gebaut und ein weiteres Problem festgestellt.

Das alte Docker-Hub-release-Image führt immer noch den alten Fast-Rejection-Code aus und schlägt während des RCPT-Vorgangs mit folgendem Fehler fehl:

450 4.7.1 Recipient address rejected: Internal error, API request failed

Der aktuelle main-Branch hat die smtp_should_reject-/Fast-Rejection-Implementierung jedoch bereits entfernt. Nach dem Bauen von main schlägt Postfix stattdessen mit folgendem Fehler fehl:

warning: connect to private/policy: No such file or directory
451 4.3.5 Recipient address rejected: Server configuration problem

Ich habe dies auf zwei verbliebene Referenzen in der Dockerfile zurückgeführt:

check_policy_service unix:private/policy

Der Policy-Dienst selbst wurde entfernt, aber smtpd_recipient_restrictions referenziert immer noch seinen Socket.

Ich habe unix:private/policy aus smtpd_recipient_restrictions entfernt, das Image neu gebaut, und eingehende SMTP-E-Mails wurden dann erfolgreich akzeptiert.

Nach dem Wechsel zu einem Global API Key gelang auch die Zustellung an Discourse:

dsn=2.0.0, status=sent (delivered via discourse service)

Es scheinen also zwei separate Probleme zu geben:

  1. Das veröffentlichte discourse/mail-receiver:release-Image ist veraltet und enthält immer noch die alte Fast-Rejection-Implementierung.
  2. Der aktuelle main-Branch hat diese Implementierung entfernt, aber die Dockerfile konfiguriert Postfix weiterhin so, dass sie unix:private/policy verwendet.

Möglicherweise gibt es auch ein separates Problem mit granularen API-Keys: Ein Key, der nur auf receive emails beschränkt war, lieferte HTTP 404 von /admin/email/handle_mail, während ein Global API Key HTTP 200 zurückgab.

Ich kann einen PR für die zwei veralteten private/policy-Referenzen in der Dockerfile einreichen, falls das hilfreich wäre.

2 „Gefällt mir“

Ich kann das veraltete Release-Image aus einer anderen Änderung in mail-receiver bestätigen.

Ich habe diesen PR eröffnet, der am 11. August gemerged wurde:

Er ändert den Mail-Empfänger von:

post.set_form_data(email: @mail)

zum neueren email_encoded-Parameter, den Discourse erwartet.

Nachdem der PR gemerged wurde, habe ich mail-receiver am 17. August neu gebaut, aber das frisch gebaute Container-Image enthielt immer noch:

post.set_form_data(email: @mail)

Ich habe die Details hier im gemergten PR hinzugefügt:

Am 22. August habe ich erneut neu gebaut und ./launcher rebuild mail-receiver meldete, dass das veröffentlichte Release-Image aktuell ist, mit dem Digest:

sha256:2a0d45bb92a783c846a821e635413764eeadb3441ef6190085545a4bf054cb1e

Eingehende E-Mails funktionieren auf meiner Installation weiterhin, aber jede empfangene E-Mail löst weiterhin die Discourse-Warnung aus:

the email parameter is deprecated

da das veröffentlichte Image die gemergte Änderung aus #37 nicht enthält.

Dies scheint also unabhängig das erste Problem zu bestätigen, das Sie gefunden haben: Änderungen, die in das #mail-receiver-Repository gemerged wurden, gelangen nicht in das veröffentlichte discourse/mail-receiver:release-Image.

2 „Gefällt mir“

Nach internen Diskussionen bin ich mir einig, dass sich das Projekt in einem seltsamen Zustand befindet… Wird es gepflegt? Oder nicht? Das ist schwer zu sagen.

Intern verwenden wir ein anderes Image. Dieses hier ist nur für Self-Hoster gedacht, und die Updates fallen oft aus.

Wir versuchen gerade herauszufinden, ob wir die Docker-Publikation hier aufgeben und sie auf ein persönliches Konto verlegen, oder ob wir dieses Ding weiter pflegen.

1 „Gefällt mir“

Bitte pflegt diese Sache weiter. Sie wird benötigt und relativ häufig verwendet.

2 „Gefällt mir“

Es wäre großartig, wenn dieses für Selbsthoster funktionieren würde.

Ich vermisse die alte Version, die Bounces ordnungsgemäß verarbeitet und Discourse darüber informiert hat, diese nicht zu versenden. Dadurch entfiel die Notwendigkeit, die Mailgun-API-Updates durchzuführen, die ich in einer Multi-Site-Umgebung nicht ganz verstehe.