Estoy experimentando un problema similar. Ayer depuré el envío de correos electrónicos en una nueva instancia de Discourse durante unas tres horas, sin éxito. Estoy intentando enviar correos electrónicos a través de Fastmail con STARTTLS en el puerto 587. Otros servicios funcionan con las mismas credenciales.
No obtengo la respuesta de error “Must issue a STARTTLS command first” con estas configuraciones:
DISCOURSE_SMTP_ADDRESS: 'smtp.fastmail.com'
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: 'myuser@fastmail.fm'
DISCOURSE_SMTP_PASSWORD: 'mypass'
DISCOURSE_SMTP_ENABLE_START_TLS: true
…seguido de un ./launcher rebuild app, cuando ejecuto ./discourse-doctor y envío un correo electrónico, obtengo un error 500 5.5.1 Invalid command en respuesta.
Hoy comencé a rastrear la comunicación con tcpdump y noté que Discourse en realidad no parece usar STARTTLS. Esto es lo que sucede cuando envío un correo electrónico de recuperación de Grafana:
< 220 smtp.fastmail.com ESMTP ready
> EHLO 9b5ba1569f77
< 250-smtp.fastmail.com
< 250-PIPELINING
< 250-SIZE 71000000
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> STARTTLS
< ...[encrypted]
Pero con Discourse, esto sucede:
< 220 smtp.fastmail.com ESMTP ready
> EHLO localhost
< 250-smtp.fastmail.com
< 250-PIPELINING
< 250-SIZE 71000000
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> AUTH PLAIN [redacted]
< 500 5.5.1 Invalid command
Entonces, ¿parece que Discourse está enviando mis credenciales a través de Internet en texto plano, a pesar de que STARTTLS está habilitado en la configuración? ¿Es esto un error?
También noté que cuando ejecuto ./discourse-doctor, el resumen “YML SETTINGS” en la parte superior enumera los siguientes elementos:
==================== YML SETTINGS ====================
DISCOURSE_HOSTNAME=forum.[redacted]
SMTP_ADDRESS=smtp.fastmail.com
DEVELOPER_EMAILS=sysadmin@[redacted]
SMTP_PASSWORD=[redacted]
SMTP_PORT=587
SMTP_USER_NAME=[redacted]@fastmail.fm
LETSENCRYPT_ACCOUNT_EMAIL=
Sin embargo, no hay mención de DISCOURSE_SMTP_ENABLE_START_TLS, a pesar de que está configurado en app.yml. No estoy seguro de si este problema está relacionado.