El correo electrónico no funciona en absoluto

Hola. Durante los últimos días, he tenido dificultades para configurar un foro de Discourse, y todo el problema ha estado relacionado con el correo electrónico. Logré poner en marcha el foro omitiendo el registro por correo, pero aún necesito que esta función esté operativa para que las personas también puedan registrarse. He obtenido los mismos resultados una y otra vez; he probado muchas cosas diferentes, pero ninguna parece haber funcionado. Cada vez, ocurre una de estas dos situaciones:

  1. El error del correo de prueba indica que “el nombre de host . . . no coincide con el certificado del servidor”.
  2. El error del correo de prueba indica “502” y, en Sidekiq, el error es Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout con #<TCPSocket:(closed)>.

Entonces, ¿cuándo aparece cada uno? Bueno, el número 1 aparece en todos los escenarios posibles. El número 2, por otro lado, apareció cuando usé el puerto 465. Tardaba un tiempo en “enviar un correo de prueba” y luego aparecía ese error. Hace un momento, desactivé SSL, por lo que el puerto 587 es utilizable, pero en lugar de mostrar el error 1 o 2, simplemente se queda pegado en “Enviando correo de prueba”.

No estoy seguro de qué hacer en este punto. Lleva unos días luchando con esto y aún no he encontrado una solución. Cualquier ayuda sería muy apreciada. Gracias por su tiempo y ayuda.

ACTUALIZACIÓN: Usando el comando curl --ssl-reqd, probé los puertos 465, 587, 25 y 2525. Los resultados fueron:

  • 25: No funcionó (Error de Curl 35, número de versión incorrecto)
  • 465: Funcionó como se esperaba y con una respuesta rápida del correo
  • 587: No funcionó (Error de Curl 35, número de versión incorrecto)
  • 2525: No falló, pero nunca envió un correo (el tiempo transcurrido aumentó indefinidamente mientras no se enviaba ningún correo)

Si ayuda, mis configuraciones actuales (con el error 502) son:

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, por defecto true)

Plantillas:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

Y exposición:

expose:
  - "80:80"   # http
  - "443:443" # https

Esta es una imagen con la información del correo electrónico:

¿Estás utilizando uno de los proveedores de correo electrónico recomendados?

¿Dónde está instalado el servidor de Discourse?

No lo creo. El correo electrónico es proporcionado por VoltHosting, si eso ayuda.

Además, el servidor de Discourse está instalado en var/discourse y funciona (puedo acceder al sitio web y navegar con una cuenta de administrador que creé (saltándome el correo electrónico), y así es como también pruebo los correos electrónicos (intentando enviar correos de prueba tanto en Correo electrónico > Configuración como en Correo electrónico > Vista previa del resumen, que es donde obtengo estos errores). Gracias de todos modos por la ayuda.

Intenta usar uno de los proveedores recomendados; esto te ayudará a determinar rápidamente si el problema radica en tu instalación de Discourse o en el servidor de correo con el que intentas comunicarte.

La razón por la que existe la lista de proveedores recomendados es porque se ha verificado que funcionan con Discourse. SMTP puede ser complicado incluso en las mejores circunstancias, y se asume generalmente que, si no utilizas la configuración recomendada, asumes la carga técnica adicional que esto conlleva.

Gracias por la respuesta. No creo que pueda utilizar uno de los proveedores recomendados, ya que la persona que elaboró el plan también tiene más cuentas de correo con esa empresa, y eso implicaría un costo adicional al del VPS en sí, y no creo que sea posible hacerlo en este momento. ¿Existe tal vez otra forma de probar los servicios de correo electrónico de manera más eficiente sin tener que reconstruir el foro cada vez? Gracias por tu ayuda.

No necesitas reconstruir para cambiar tu configuración de correo electrónico. Puedes ejecutar:

./launcher destroy app
./launcher start app

Después de editar la configuración de correo electrónico, se aplicarán los nuevos valores. Lo mismo se aplica a todas las variables de entorno.

Considera contactar a VoltHosting para obtener soporte con su sistema de correo electrónico. Si el certificado del servidor no coincide con el nombre de host, no es un problema de Discourse y es algo que ellos deben solucionar. Es posible que haya un nombre de host alternativo válido que puedas usar.

En cualquier caso, recomendaría utilizar una de las pruebas gratuitas ofrecidas en la página vinculada anteriormente para demostrar que Discourse mismo está manejando el correo electrónico correctamente. Siempre puedes volver a usar SMTP de VoltHosting una vez que hayas comprobado que Discourse funciona correctamente.

Solo para confirmar, ¿la instancia se instaló siguiendo esta guía, correcto?

Gracias. Sin duda lo usaré en el futuro, pero todavía estoy buscando una posible solución. Si sirve de algo, esta es una imagen del error de Sidekiq:

image

Podría, por supuesto, usar las pruebas gratuitas, pero al fin y al cabo, es una prueba gratuita y tiene algunas limitaciones. Y sí, seguí la guía oficial para instalar el foro de Discourse. Está funcionando, pero los correos electrónicos simplemente no funcionan. Gracias por la ayuda.

En este punto, tus opciones son realmente probar con un proveedor recomendado o contactar a VoltHosting. Los errores indican que el certificado presentado por el servidor SMTP no es válido para el nombre de host utilizado para la conexión.

A menos que puedas demostrar lo contrario probando con uno de los servicios recomendados, es muy poco probable que este problema esté relacionado con tu instalación de Discourse.

Ese error de tiempo de espera sugiere que no puedes conectarte a tu servidor de correo. O Digital Ocean está bloqueando el acceso o algo más lo está.

Deberías poder ejecutar:

telnet server.hostname server-port

Es probable que necesites ayuda de la persona que configuró o controla el servidor de correo.

Gracias por la respuesta. Acabo de ejecutar el comando. Estos son los resultados:


No estoy seguro de si debería permitirme AUTH LOGIN o no. Si es así, entonces supongo que ese es el problema, ¿verdad? Gracias por la ayuda.

Hmm. Bueno, no fue a nivel de servidor. Mi siguiente suposición es un problema de red de Docker. Pero podría ser otra cosa.

Gracias por la respuesta. Si es posible, por supuesto, ¿cómo podría investigar más a fondo esto? ¿Hay algún comando de Docker que pueda ejecutar para probarlo y ver qué resultado arroja, o algo similar? ¿Existe alguna forma de probarlo en algún lugar que me proporcione una salida con el problema? De no ser así, también lo entiendo perfectamente. Gracias por tu ayuda.

ACTUALIZACIÓN: Usando el comando curl --ssl-reqd, probé los puertos 465, 587, 25 y 2525. Los resultados fueron:
25: No funcionó (Error de Curl 35, número de versión incorrecto)
465: Funcionó como se esperaba y con una respuesta rápida de correo
587: No funcionó (Error de Curl 35, número de versión incorrecto)
2525: No falló, pero nunca envió un correo (el tiempo transcurrido siguió aumentando sin detenerse mientras no se enviaba ningún correo)

Si ayuda, mis configuraciones actuales son (con el error 502):

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, valor predeterminado true)

Plantillas:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

Y exposición:

expose:
  - "80:80"   # http
  - "443:443" # https

Esta es una imagen con la información del correo:


No estoy seguro si la razón es que Discourse no se conecta con SSL/TLS o algo más. Espero que esta información sea útil y ayude a resolver el problema.

Agrega esto y mira si funciona:

DISCOURSE_SMTP_ENABLE_START_TLS: False

Gracias por la respuesta. Lamentablemente no funcionó. Todavía estoy recibiendo el mismo error 502.

No estoy seguro de si esto ayuda, pero pude ejecutar el comando curl --ssl-reqd desde el VPS y enviar un correo con éxito (lo cual mencioné en esta respuesta). Además, ejecuté ese comando dentro de la aplicación (accediendo con ./launcher enter app) y funcionó, obteniendo los mismos resultados que en la prueba anterior: el puerto 465 funciona, mientras que los 25 y 587 no, y el 2525 devuelve un error de tiempo de espera. Sin embargo, sigo recibiendo un error 502 al ejecutarlo en el propio foro (usando correos de prueba). Espero que esta información adicional sea útil. Gracias por tu ayuda.

¿Encontraste una solución?