Bueno, para empezar, esto es un entorno de producción y no puedo enviar el primer correo de registro.
Estoy seguro de que mis configuraciones SMTP son correctas.
Puedo hacer ping y telnet a mi servidor de correo con el puerto utilizado, pero tan pronto como ejecuto “EHLO mailserver”, la conexión es cerrada por el host remoto.
Y traté de asegurarme de que mis configuraciones SMTP fueran correctas, así que ejecuté /var/discourse/discourse-doctor, pero no puede validar mis configuraciones. Dice:
==================== YML SETTINGS ====================
awk: not an option: --field-separator=:
DISCOURSE_HOSTNAME=
awk: not an option: --field-separator=:
SMTP_ADDRESS=
awk: not an option: --field-separator=:
DEVELOPER_EMAILS=
awk: not an option: --field-separator=:
SMTP_PASSWORD=
awk: not an option: --field-separator=:
SMTP_PORT=
awk: not an option: --field-separator=:
SMTP_USER_NAME=
awk: not an option: --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=
Pero mi YAML (./containers/app.yml) parece estar perfectamente formateado.
## TODO: The SMTP mail server used to validate new accounts and send notifications
# SMTP ADDRESS, username, and password are required
# WARNING the char '#' in SMTP password can cause problems!
DISCOURSE_SMTP_ADDRESS: mail.redacted.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: redacted@redacted.com
DISCOURSE_SMTP_PASSWORD: "redacted"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
LETSENCRYPT_ACCOUNT_EMAIL: redacted@redacted.com
@irwinstar, he eliminado el servidor de correo real para evitar exponerlo en un foro público. Pero puedo garantizar que es correcto, ya que copié la configuración de mi cliente de correo (que funciona) y también la comparé con la configuración SMTP de mi servidor de correo real.
Gracias por tu oferta de ayuda. Creo que el problema son los registros SPF/DKIM, así que estoy intentando solucionarlos.
No obstante, discourse-doctor debería seguir analizando correctamente. No estoy seguro de qué está ocurriendo, ya que no edité el archivo yo mismo en vim/nano. Para aclarar, el YAML fue generado usando discourse-setup.
Y creo que Discourse no soporta el protocolo en el puerto 465 actualmente. Si tu servidor de correo soporta el puerto 587, puedes cambiarlo a 587 en su lugar.
Desafortunadamente, mi servidor de correo no puede usar el puerto 587, así que agregué un proxy de correo fuera de Discourse.
@irwinstar, esta información es extremadamente importante si es correcta, y explicaría por qué no funciona mi configuración de correo. ¿Tienes una fuente para esta información?
No estoy seguro al respecto, pero he intentado el puerto 465 varias veces.
Finalmente, usé la imagen de Docker “hieulq/mailproxy” como proxy de correo.
Y utilicé esta configuración en app.yml para Discourse.
Este uso parece incorrecto, pero funciona.
Hoy intenté encontrar un plugin de correo, pero no encontré ninguno.
Estoy tratando de evitar comprar servidores de correo en la nube o usar proxies (porque si quisiera una solución sucia, simplemente tomaría una cuenta de administrador en este punto) cuando ya tengo un servidor de correo en HostGator.
Estoy seguro de que los registros SPF están configurados para la IP de mi servidor Discourse. Ahora solo estoy tratando de validar los registros DKIM.
Si alguien puede confirmar que el puerto 465 no está permitido, sería una noticia fantástica, ya que me ahorraría seguir profundizando en un problema que no existe. El puerto 465 sí fue un problema, como se indica en la publicación de abajo.
Usando el puerto 587, puedo hacer telnet a un correo completo y autenticarme correctamente. Así que cambié la configuración.
Ahora, cuando se envía el correo, recibo el siguiente error:
Correo entregado d86b48cc-b0f4-4df3-8960-ab5ff96613a0@discourse.imbleau.com (251.0ms)
Excepción del trabajo: el nombre de host "mail.redacted.com" no coincide con el certificado del servidor
Pero lo que he notado es que esto ya no es un tiempo de espera de conexión (disparado después de 60 segundos completos), sino una excepción diferente recibida en 250 ms.
¡PROBLEMA DE CORREO SOLUCIONADO! (discourse-doctor aún analiza incorrectamente)
Investigé un poco más sobre Ruby y por qué ocurría este error en segundo plano, lo que me llevó a este problema en Stack Overflow.
Este fue el culpable. La solución implicó cambiar la negociación SSL, lo que me dio la intuición de desactivar esta configuración en el archivo app.yml: DISCOURSE_SMTP_ENABLE_START_TLS: false # (opcional, por defecto true)
Eso desactivará el cifrado TLS, mientras que el único problema es que estás utilizando un nombre de host incorrecto; es decir, el servidor de correo está presentando un certificado que dice algo diferente a mail.redacted.com. Muchos servidores de correo suelen conocerse por varios nombres de host diferentes; solo necesitas averiguar cuál utiliza para su certificado.
Podrías intentar averiguar qué nombre de host indica y ajustar tu configuración en consecuencia.
¡Gracias @RGJ! Extrañamente, dice que el CN es uno de mis subdominios, completamente ajeno al correo. Vale la pena investigarlo. Gracias por la orientación.