Parece que se conecta al servidor y envía un correo electrónico de prueba correctamente si lo hago manualmente:
> sudo ./launcher enter app
root@support-app:/var/www/discourse# openssl s_client -connect mail.xxxxxxxx.com:465
:
:
enorme cantidad de basura
:
:
220 xxxxxxx.com Anti-spam GT for Coremail System (mispb-6da2110f-64b0-4d67-acf1-2d302bd594f9-xxxxxxx.com[20220915])
EHLO mail.xxxxxxxxx.com
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrpDiNKUCa0xDrUUUUj
250-STARTTLS
250-SMTPUTF8
250 8BITMIME
AUTH PLAIN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
235 Authentication successful
mail from: <xxx@xxxxxx.com>
250 Mail OK
rcpt to: <xxxx@xxxxxxx.com>
250 Mail OK
data
354 End data with <CR><LF>
content
.
250 Mail OK queued as AQAAfwBXr9nSGHdj3hEgAA--.7073S2
Es probable que el proveedor de alojamiento esté bloqueando el puerto de salida. Si utilizas algún servicio como Mailgun (o casi cualquier otro), el puerto 2525 debería funcionar. Si se trata de un servidor de correo que administras, puedes hacer que escuche en otro puerto (como el 2525).
O (probablemente lo más difícil) puedes abrir un ticket con quien aloja tu servidor y pedirle que abra el puerto.
Bueno, considerando que puedo ./launcher enter app y luego openssl conectarme al servidor de correo, iniciar sesión vía SMTP y enviar un correo electrónico con éxito desde dentro del contenedor de Discourse, dudo que sea el puerto el que no funcione…
Rastreé el código y parece que EHLO ni siquiera se alcanzó. El servidor SMTP está conectado, pero parece faltar el handshake SSL, por lo que el servidor se cierra y Discourse no recibe ninguna respuesta, de ahí el error.
Así que sospeché que el soporte del puerto 465 parece tener un error (por defecto es SSL, pero no creo que Discourse lo reconozca), por lo que probablemente la conexión SSL nunca se establece.
Cambiar al puerto 25 parece al menos eliminar el error, aunque todavía no estoy recibiendo ningún correo enviado…
EDITAR: Puedo confirmar que el puerto 25 funciona correctamente (al igual que el 587, pero desafortunadamente mi servidor smtp no expone el 587).
No recibí ningún correo antes debido a que la dirección IP del servidor Discourse fue temporalmente puesta en lista negra por el servidor smtp debido a demasiados intentos fallidos.
También he visto bastantes temas sobre el ‘problema 465’. Sin embargo, mi depuración de correo electrónico para cualquier cosa que no sea obvia no es muy buena, así que he estado citando la guía de solución de problemas:
¿Hay algo que podamos añadir a eso para ayudar a la gente?
EDITAR: @RGJ ¡Puedo confirmar que DISCOURSE_SMTP_FORCE_TLS: true en app.yml resuelve el problema con éxito!
Sugiero una advertencia en negrita que diga Si usas el puerto 465, configura DISCOURSE_SMTP_FORCE_TLS: true, ¿o no debería Discourse ser lo suficientemente inteligente como para detectarlo?