Enviar correos electrónicos no funciona

Mi droplet de Discourse en DigitalOcean no puede enviar correos. El error que obtengo es:

Correo entregado d8f9bf03-a3ce-4b42-8226-fc4f40a9c724@foo.barbar.com (5099.4ms)

Excepción del trabajo: 504 5.7.4 Tipo de autenticación no reconocido [BL0PR0102CA0036.prod.exchangelabs.com]

Mis configuraciones son:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: foo@bar.com
  DISCOURSE_SMTP_PASSWORD: "mypassword"
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, valor por defecto true)

He probado telnet desde el droplet y no arroja errores:
telnet smtp.office365.com 587

¿Qué podría ser el problema? He probado la combinación de configuraciones SMTP localmente desde Python y funciona, así que asumo que ese no es el problema.

Hola,
Intenta agregar:

  DISCOURSE_SMTP_AUTHENTICATION: login

Y al final de app.yml:

 - exec: rails r "SiteSetting.notification_email='foo@bar.com'"
1 me gusta

Hola mik
La instrucción exec falla:

FALLÓ

--------------------

Pups::ExecError: rails r "SiteSetting.notification_email='foo@bar.com'" falló con el estado #<Process::Status: pid 2229 salida 2>

Ubicación del fallo: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec falló con los parámetros "rails r \"SiteSetting.notification_email='foo@bar.com'\""

9628e31c775b74ad0f3a555b6af27701aa40b1f8b86419fa44a7c389cc5e34ae

** NO SE LOGRÓ INICIALIZAR ** por favor, desplázate hacia arriba y busca mensajes de error anteriores; puede haber más de uno.

./discourse-doctor puede ayudar a diagnosticar el problema.

Actualización omitiendo el comando exec pero agregando:

  DISCOURSE_SMTP_AUTHENTICATION: login

no produce un error; solo obtengo:
Delivered mail be6d8718-5445-48cc-a120-6d6d1eab9eb7@discourse.bar.com (4307.2ms)

Pero aún no recibo un correo en mi bandeja de entrada (verifiqué la carpeta de spam).

Puedes probar esto para intentar encontrar la configuración correcta y quizás obtener algún mensaje de error:

docker exec -t -i id_de_tu_contenedor /bin/bash

Luego, dentro del contenedor:

apt install s-nail
echo "Este es el cuerpo del mensaje y contiene el contenido" | s-nail -r "foo@bar.com" -s mi_asunto -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore tuemail@ejemplo.com

Puedes cambiar los diferentes valores (por ejemplo: smtp-auth=login) para intentar encontrar el correcto. Y quizás obtendrás un mensaje de error más preciso.

2 Me gusta
echo "Este es el cuerpo del mensaje y contiene el mensaje" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com

¡Funcionó y recibí el correo! Sin embargo, tuve que cambiar smtp-auth-password="xxxxxxxx" a comillas simples, ya que mi contraseña comienza con un ‘!’.

La única diferencia que puedo ver con respecto a mi configuración es esta bandera:
-S ssl-verify=ignore

¿Tengo que agregarla también?
¡Gracias por tu ayuda!

Intenta agregar:

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

En tu configuración, es lo mismo que ssl-verify=ignore.

Sin errores, pero aún no hay correo en la bandeja de entrada :frowning: Para recapitular, esta es mi configuración actual:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: info@foo.com
  DISCOURSE_SMTP_PASSWORD: 'xxx'
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, valor predeterminado true)
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

Por favor, intenta agregar esto nuevamente (es lo mismo que la opción “-r” en la prueba de línea de comandos de s-nail:

  - exec: rails r "SiteSetting.notification_email='foo@bar.com'"

El correo electrónico debe ser el mismo que el de tu cuenta.

Y verifica la sangría en el archivo app.yml, y no olvides el “-” al principio. Son 2 espacios, luego el “-”, luego un espacio y luego “exec…” :slight_smile:

Yo también tengo este problema. También creé un droplet con Discourse en Digital Ocean. Después de probar todas estas sugerencias y reconstruir cada vez (sudo ./launcher rebuild app), usé el comando “sudo ./discourse-doctor”.

504 5.7.4 Tipo de autenticación no reconocido [BL0PR01CA0015.prod.exchangelabs.com]

Para mí, s-nail desde dentro del contenedor también funcionó sin problemas. Y lo probé sin la cláusula “-S ssl-verify=ignore”, y funcionó bien. ¿Alguien puede verificar que lo que se instala en el droplet de Digital Ocean envíe correos electrónicos correctamente?

Consulta con tus administradores de correo cuáles son los valores válidos de smtp_authentication y establece DISCOURSE_SMTP_AUTHENTICATION en uno que funcione.

1 me gusta

Gracias por toda la ayuda. He renunciado y me he cambiado a otra solución de foro.

1 me gusta

Es Microsoft, sus instrucciones son las siguientes; no se especifica smtp_authentication:

  • Nombre del servidor SMTP: smtp.office365.com
  • Puerto SMTP: 587
  • Método de cifrado SMTP: STARTTLS

¿No soportan este tipo de servidor? ¿Podrían simplemente crear una cuenta, conectarse a ella y decirnos cuáles deberían ser la configuración?

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

¡Esto resolvió mi problema, gracias!

1 me gusta