Solución de problemas de Amazon AWS SES para enviar correos electrónicos a través de SMTP

Estoy teniendo problemas al migrar de SendGrid a Amazon SES.

¿Podría alguien compartir amablemente su configuración en app.yml o confirmar si la mía es correcta?

  ## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
  DISCOURSE_SMTP_ADDRESS: email-smtp.eu-west-2.amazonaws.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: xxxxxxx
  DISCOURSE_SMTP_PASSWORD: "xxxxxxxxxx"
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, por defecto true)
  DISCOURSE_SMTP_AUTHENTICATION: login

¿Es correcto el parámetro de autenticación aquí?

¿He pasado por alto algo?

1 me gusta

El dominio está verificado en SES, no necesitas el parámetro de autenticación SMTP.

Además, es posible que debas sacar tu cuenta de SES del modo sandbox si aún no lo has hecho y solicitar un aumento de límite. La condición de sandbox se aplica por región.

2 Me gusta

Sí, confirmado: el dominio está verificado, en modo producción y los límites de velocidad aumentados.

¿Todo lo demás parece correcto entonces? :thinking:

Sí, las demás configuraciones me parecen correctas.

¿Y está bien que la contraseña esté envuelta entre “comillas”?

Sí, eso también debería estar bien

Hmm…

¿Hay alguna forma de probar desde la línea de comandos?

También he recompilado mi aplicación cada vez.

Gracias por las respuestas rápidas :+1:t2:

¿Y esto también parece correcto? (He comentado la línea de autenticación como sugeriste)

Todavía no entiendo por qué no se envían correos electrónicos a través de AWS SES.

Cuando envío un correo de prueba desde la página de administración de nuestro Discourse, simplemente dice “enviado”. También intento una solicitud de contraseña olvidada, que sigue el proceso correctamente, pero nunca llega ningún correo electrónico.

No creo que SES registre los envíos, así que no puedo verificar si siquiera está recibiendo los correos.

Lo único que podría causar un problema es que nuestra dirección de respuesta use una cuenta de gmail.com en lugar de nuestro dominio del sitio.

¿Alguien ha encontrado esta combinación o escenario antes?

Esa es la dirección de correo electrónico que aparecerá en la línea de remitente. Debe ser una dirección del dominio desde el cual SES enviará los correos. SES no enviará correos que fingan provenir de Gmail. No tienes control sobre gmail.com, por lo que SES no enviará correos con esa dirección en la línea de remitente. notification_email debe ser algo@tudominioverificado

2 Me gusta

Me preguntaba si podría ser algo así.

Mi configuración actual de SendGrid ha estado funcionando durante años y tiene lo siguiente:

¿Estás diciendo que lo que intento hacer simplemente no es posible en SES debido a que la dirección de respuesta está en el dominio gmail.com?

El correo de notificación es lo que aparece en la línea de ‘De’, y sí, estoy bastante seguro de que ese es tu problema. ¿Lo intentaste cambiar?

1 me gusta

Yo también uso SES y funciona bien para mí. La única diferencia que puedo observar en comparación es que la línea DISCOURSE_SMTP_AUTHENTICATION: login no existe en mi configuración. Además, tanto DISCOURSE_SMTP_ENABLE_START_TLS: true como DISCOURSE_SMTP_PORT: 587 están comentados, aunque eso no debería marcar ninguna diferencia.

Las únicas tres líneas que modifico en el archivo app.yml son la dirección SMTP, el nombre de usuario y la contraseña. El resto está comentado tal cual viene de una instalación nueva, utilizando los valores por defecto. Después de reconstruir, solo necesito asegurarme de que la configuración del sitio notification email esté establecida en una dirección que utilice un dominio verificado en SES. Ya no uso comillas en la contraseña, pero en mis instalaciones anteriores sí lo hacía y funcionaba bien de cualquier manera.

Sí, valdría la pena probar cambiando la dirección de respuesta para usar una dirección que emplee el dominio verificado de SES, como se recomienda en la respuesta anterior, solo para ver si eso hace que se envíe correctamente.

Si no funciona, verificaría si tu host está bloqueando algunos puertos y quizás volvería a comprobar que las credenciales de SES se generaron correctamente. Veo que has confirmado arriba que tu dominio está verificado en SES.

2 Me gusta

Gracias por la información detallada @markersocial :+1:t2:

¿Puedo preguntar si tu dirección de correo de “respuesta a” está en un dominio diferente al de la dirección “De”? :thinking:

¡No te preocupes :slight_smile:

La dirección de respuesta está en el mismo dominio que la dirección de origen, sí, pero en algunos casos no es el mismo subdominio (aunque sigue siendo el mismo dominio raíz). Ambos casos funcionan bien para mí.

1 me gusta

Estoy seguro de que lo notaste: ¿has verificado la dirección de correo saliente que usa Discourse para enviar? Si es notify@tudominioverificado, debes ir a SES, en la segunda fila bajo ‘Gestión de identidades’, agregar y luego verificar el correo de envío. Nada se enviará hasta que hagas esto. Sin alarmas, sin sirenas, simplemente no se envía.

Que la respuesta sea de Gmail está genial. Eso es lo que hice. Luego, los correos de autorización para los miembros estaban siendo bloqueados como spam porque el campo ‘De’ y ‘Responder a’ no coincidían.

Finalmente, escribí una función Lambda simple de AWS (me tomó una semana aprender cómo) que reenvía los correos entrantes a la API de Discourse. Muy limpio. Sin POSTFIX.

5 Me gusta