Pesadilla con Let's Encrypt X3

Estoy recibiendo el siguiente error al usar la aplicación mail-receiver a partir de hoy. Antes funcionaba correctamente.

Está intentando enviar el correo electrónico a Discourse mediante la API. ¿Es posible que sea causado por la expiración del certificado DST Root CA X3?

Si es así, ¿alguien tiene alguna idea sobre cómo solucionarlo? He intentado reconstruir tanto la aplicación como mail-receiver, recrear los certificados de Let’s Encrypt, etc.

<19>Sep 30 22:07:26 receive-mail[96]: Error al realizar POST del correo electrónico a https://forum.validadortiss.com.br/admin/email/handle_mail: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: verificación del certificado fallida (OpenSSL::SSL::SSLError)

Gracias por el informe @wlandgraf: enviaremos una nueva imagen de mail-receiver a Dockerhub lo antes posible.

La etiqueta release en Docker Hub se ha actualizado. Si seguiste las instrucciones oficiales de configuración, puedes extraer la nueva imagen ejecutando:

cd /var/discourse
./launcher rebuild mail-receiver

Hola @david, agradecemos mucho tu rápida respuesta. Sin embargo, eso no resolvió mi problema. Sigue persistiendo.

En /var/discourse/containers/mail-receiver.yml, ¿qué tienes en la línea base_image:? Debería ser:

base_image: discourse/mail-receiver:release

(Más información sobre esto aquí)

Sí, eso es lo que tengo.

Este es el inicio de mi archivo:

## esta es la plantilla del contenedor receptor de correo entrante
##
## Después de realizar cambios en este archivo, DEBES reconstruir
## /var/discourse/launcher rebuild mail-receiver
##
## ¡TEN *MUCHO* CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON EXTREMADAMENTE SENSIBLES A ERRORES EN ESPACIOS EN BLANCO O ALINEACIÓN!
## visita http://www.yamllint.com/ para validar este archivo según sea necesario

base_image: discourse/mail-receiver:release
update_pups: false

expose:
  - "25:25"   # SMTP

Y aquí está la salida (parcial) de la operación de reconstrucción (se omitieron las partes que contienen claves de API):

Asegurando que el lanzador esté actualizado
Obteniendo origen
El lanzador está actualizado
Deteniendo el contenedor antiguo
+ /usr/bin/docker stop -t 60 mail-receiver
mail-receiver
cd /pups && /pups/bin/pups --stdin
sha256:5f123a8eb11784828d5195ee0f328a0ea5a5d2ce36eeae1760e3d47b0dbeb15c
165ebaa91836a07696924f95d3746cbd1cc14412f478ba715ee40f502780ab7a
Eliminando el contenedor antiguo
+ /usr/bin/docker rm mail-receiver
mail-receiver

¿Puedes intentar

docker pull discourse/mail-receiver:release
cd /var/discourse
./launcher rebuild mail-receiver

¡Eso fue todo! ¡Muchas gracias! Si no te importa, tengo unas cuantas preguntas:

  1. ¿Por qué fue necesario eso? ¿Debería siempre extraer manualmente la imagen más reciente antes de construir?
  2. ¿Tengo que aplicar el mismo procedimiento (docker pull) al reconstruir la aplicación?
  3. Veo que llegaron correos electrónicos enviados después de la reconstrucción, pero no los enviados anteriormente. ¿Se perdieron esos correos?

Parece que tu instalación de Docker había almacenado en caché la etiqueta :release. Para evitar la necesidad de hacer un docker pull en el futuro, podríamos agregar alguna lógica a nuestro script launcher.

Las imágenes app se gestionan de manera diferente, por lo que no habrá ningún problema de caché allí.

Los correos electrónicos enviados durante la interrupción deberían haberse devuelto al servidor de origen con un error “temporal”. Esos servidores deberían reintentar el envío periódicamente, así que, con suerte, verás que faltan los correos electrónicos en las próximas horas.

Excelente. Gracias de nuevo por la respuesta rápida. Parece que el mundo está sufriendo con este lío de la Root CA X3; ahora has hecho tu contribución para mejorar un poco el mundo. :smiley:

¿Alguna pista sobre cómo detectar si un receptor de correo necesita actualizarse y si será necesario ejecutar docker pull?

Todos los receptores de correo instalados antes de hoy necesitarán actualizarse. (técnicamente, cualquier instalación que utilice una imagen base anterior a 67222bded865)

El docker pull será necesario hasta que actualicemos el launcher (lo cual es poco probable que ocurra hoy o mañana). Acabo de publicar un tema de anuncio aquí, ya que sé que esto será disruptivo para muchos sitios. Incluye instrucciones de actualización, incluido el docker pull: