Discourse/mail-receiver:release La imagen de Docker parece estar desactualizada

Hola,

Creo que la imagen Docker oficial discourse/mail-receiver:release pudo haberse pasado por alto y no se ha reconstruido en bastante tiempo.

El repositorio de GitHub sigue siendo mantenido activamente:

Sin embargo, la imagen Docker oficial:

discourse/mail-receiver:release

parece haberse construido hace casi 2 años.

Esto parece causar problemas de compatibilidad con las versiones actuales de Discourse.

En mi caso, el correo entrante llega al receptor de correo correctamente, pero se rechaza durante RCPT TO con:

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

La imagen Docker antigua parece seguir utilizando el mecanismo de smtp_should_reject / rechazo rápido.

Sin embargo, el código fuente actual de Discourse contiene este comentario:

# 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

La PR #33 ya eliminó ese código de rechazo rápido de mail-receiver, pero esos cambios no parecen estar incluidos en la imagen discourse/mail-receiver:release actualmente publicada.

La documentación/README oficial de mail-receiver sigue indicando a los usuarios que utilicen:

discourse/mail-receiver:release

Así que me pregunto si el proceso de publicación de la imagen Docker simplemente se pasó por alto tras los cambios recientes.

¿Podrían por favor verificar si se necesita construir y publicar una nueva imagen discourse/mail-receiver:release?

¡Gracias!

Actualización: Probé la rama main actual

Compilé la rama main actual localmente y encontré otro problema.

La imagen release antigua de Docker Hub aún ejecuta el código de rechazo rápido antiguo y falla durante RCPT con:

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

Sin embargo, la rama main actual ya ha eliminado la implementación de smtp_should_reject / rechazo rápido. Después de compilar main, Postfix falla en su lugar con:

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

Rastreé esto a dos referencias restantes en el Dockerfile:

check_policy_service unix:private/policy

El propio servicio de política ha sido eliminado, pero smtpd_recipient_restrictions aún hace referencia a su socket.

Eliminé unix:private/policy de smtpd_recipient_restrictions, recompilé la imagen y el correo SMTP entrante se aceptó correctamente.

Después de cambiar a una clave de API global, la entrega a Discourse también fue exitosa:

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

Por lo tanto, parecen existir dos problemas separados:

  1. La imagen discourse/mail-receiver:release publicada está desactualizada y aún contiene la antigua implementación de rechazo rápido.
  2. La rama main actual eliminó esa implementación, pero el Dockerfile aún configura Postfix para usar unix:private/policy.

También podría haber un problema separado con las claves de API granulares: una clave limitada solo a receive emails devolvió HTTP 404 desde /admin/email/handle_mail, mientras que una clave de API global devolvió HTTP 200.

Puedo enviar un PR para las dos referencias obsoletas de private/policy en el Dockerfile si eso resultara útil.

2 Me gusta

Puedo confirmar la imagen de lanzamiento desactualizada desde otro cambio en mail-receiver.

Abrí esta PR, que se fusionó el 11 de agosto:

Cambia el receptor de correo de:

post.set_form_data(email: @mail)

al parámetro más nuevo email_encoded esperado por Discourse.

Después de que la PR se fusionó, reconstruí mail-receiver el 17 de agosto, pero el contenedor recién reconstruido aún contenía:

post.set_form_data(email: @mail)

Agregué los detalles a la PR fusionada aquí:

Volví a reconstruir el 22 de agosto y ./launcher rebuild mail-receiver informó que la imagen de lanzamiento publicada estaba actualizada, con el digest:

sha256:2a0d45bb92a783c846a821e635413764eeadb3441ef6190085545a4bf054cb1e

El correo entrante sigue funcionando en mi instalación, pero cada correo recibido sigue activando la advertencia de Discourse:

the email parameter is deprecated

porque la imagen publicada no contiene el cambio fusionado de #37.

Por lo tanto, esto parece confirmar de manera independiente el primer problema que has encontrado: los cambios fusionados en el repositorio mail-receiver no están llegando a la imagen discourse/mail-receiver:release publicada.

1 me gusta