He probado el servidor SMTP con Telnet:
Telnet se conectó al servidor SMTP.
Telnet me permitió autenticarme en el servidor SMTP.
Telnet me permitió enviar un correo electrónico correctamente utilizando el servidor SMTP, y utilicé exactamente los mismos valores en Telnet que los presentes en el archivo /var/discourse/containers/app.yaml.
Discourse doctor indica que Discourse se conectó correctamente al servidor SMTP.
Discourse doctor indica que Discourse no pudo enviar el correo de prueba.
Por lo tanto, Discourse tiene errores que le impiden enviar correos electrónicos.
¿Acaso estás usando smtp-relay.gmail.com, tal vez desde DigitalOcean? Eso parece haber dejado de funcionar recientemente y nadie está seguro aún de la razón.
No. Porque el servidor SMTP funciona perfectamente, tal como ya se describió, y Discourse está instalado correctamente y muestra la pantalla que solicita el correo de registro del administrador. Sin embargo, ese correo no se envía.
He encontrado un error en /var/discourse/shared/standalone/log/rails/production.log:
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 32)
Delivered mail f915c15e-9c4d-4d4e-9527-81bc4984540c@forum.domain.com (63.7ms)
Job exception: hostname "mail.forum.domain.com" does not match the server certificate
Esto no parece ser un error en Discourse. Parece un problema en la configuración del resolvedor DNS del host o en el certificado SSL.
Dado que telnet no utiliza SSL, supongo que por eso encontraste que funcionaba. En Linux, quizás puedas avanzar un poco más en las pruebas utilizando OpenSSL para probar la conexión y examinar los certificados.
El HTTPS en el sitio está funcionando porque muestra el candado verde en la barra de direcciones. No hay ningún problema con el certificado SSL del sitio. El problema radica en la forma en que Discourse detecta el certificado SSL.
El certificado del servicio SMTP es simplemente el certificado SSL del servidor, no el certificado SSL del sitio web. El certificado SSL del servidor es correcto y funciona.
Para configurar un servidor SMTP local en la misma máquina que el contenedor de Discourse, este no especifica exactamente cuáles son los valores correctos para la configuración SMTP en app.yml. Esto genera mucha confusión y errores.
En la configuración de app.yml, Discourse no aclara claramente qué debe ser DISCOURSE_SMTP_ADDRESS.
Discourse no aclara claramente qué es el “certificado del servidor” en el mensaje de error que aparece después de que falla el envío del correo de registro inicial. El mensaje de error se encuentra en:
/discourse/shared/standalone/log/rails/production.log
“Excepción del trabajo: el nombre de host “mail.foro.dominio.com” no coincide con el certificado del servidor”.
Sin embargo, en realidad, el “certificado del servidor” es simplemente el certificado SSL del servidor.
Además, en el mensaje de error, Discourse menciona incorrectamente “nombre de host”, cuando en realidad lo que se refiere es DISCOURSE_SMTP_ADDRESS.
Hubo dificultades debido a la ambigüedad de Discourse.
La solución fue simplemente establecer el certificado SSL del servidor en el certificado SSL correcto.
Cuando se publicó el problema en el foro de Discourse, hubo muchas respuestas engañosas y poco claras.
Ahora el doctor de Discourse indica que el correo se envió:
Enviando correo a admin@email.com. . .
Probando el envío a admin@email.com usando forum.domain.com:587.
Conexión exitosa con el servidor SMTP.
Enviando a admin@email.com. . .
Correo aceptado por el servidor SMTP.
Sin embargo, no hay ningún correo en la bandeja de entrada ni en la carpeta de spam del destinatario.