Error SMTP: primero se debe emitir un comando STARTTLS

I am trying to configure Discourse 2.7.0.beta4 with the Mailersend SMTP service.

After running ./discourse-doctor I got the error below.

SMTP error: Must issue a STARTTLS command first

This is my current app.yml configuration regarding SMTP.

  DISCOURSE_SMTP_ADDRESS: 'smtp.mailersend.net'
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: username@subdomain.domain.org
  DISCOURSE_SMTP_PASSWORD: mypasswordhere
 #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
 #DISCOURSE_SMTP_AUTHENTICATION: login
 #DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

I’ve already tried to uncomment and set DISCOURSE_SMTP_ENABLE_START_TLS explicitly as true, but the error remains. The same for DISCOURSE_SMTP_AUTHENTICATION: login.

After any change in the YML file I am restarting the system with this:

./launcher destroy app; ./launcher start app

Any tip about what is going on?

Thanks in advance!

I made some changes to discourse-setup recently and also a change to the rake task you’re using (that I think isn’t merged yet).

If you want to give me access to your server I’ll take a look.

2 Me gusta

As I mentioned via PM, I can’t give access to the server due to security concerns. But thanks very much to @pfaffman for your help and for trying to solve this issue.

Let me add more context to this issue: a previous admin installed Discourse with the Mailgun SMTP service but it stopped to work and I don’t have access to that account.

As I said, I am trying to configure it now with Mailersend. I have read this topic [1] and others about STARTTLS here in the forum, but I am not sure about how to implement the changes needed.

I tried this setting below as well but the errror remains

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

If it is related to some recent update, maybe is it better to consider a downgrade then?

[1] Can't send email with certificate issue - #3 by supermathie

1 me gusta

Did you get this working?

No, I have decided to change for another mail service. Now it’s working fine with Mailjet.

1 me gusta

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.

2 Me gusta

Qué raro. Creé una cuenta de usuario manualmente (a través de rake admin:create) y luego inicié sesión, y de repente las notificaciones por correo electrónico funcionaron. Sin embargo, el envío a través de discourse-doctor sigue fallando.

¿Quizás discourse-doctor está roto?

1 me gusta

Lo siento. Sé lo frustrante que puede ser eso.

Es posible. Hace algunas cosas para intentar depurar cuál es el problema, por lo que puede ser que la lógica que está utilizando esté rota para tu caso.

También hay una tarea de rake que probablemente habría sido una mejor opción para ti.

    rake emails:test[x@y.com]

¿Seguiste Solución de problemas de correo electrónico en una nueva instalación de Discourse?

2 Me gusta

No estaba al tanto de ese comando, ¡parece útil de hecho! El resultado es el mismo, sin embargo:

root@app:/var/www/discourse# rake emails:test redacted@example.com
Testing sending to  using smtp.fastmail.com:587, username:myuser@fastmail.fm with plain auth.
======================================== ERROR ========================================
                                    UNEXPECTED ERROR
500 5.5.1 Invalid command

====================================== SOLUTION =======================================
This is not a common error. No recommended solution exists!
Please report the exact error message above to https://meta.discourse.org/
(And a solution, if you find one!)
=======================================================================================

Cuando miro tcpdump, de nuevo puedo ver que está enviando las credenciales AUTH PLAIN en texto plano sin cifrado STARTTLS.

Sí, revisé esa página.

Sin embargo, basándome en tcpdump, esto me parece un error en las herramientas de diagnóstico porque STARTTLS no se está utilizando a pesar de que la configuración está habilitada en app.yml. (La aplicación Discourse en sí misma usa STARTTLS. Supongo que muchos proveedores de correo electrónico también permitirán la envío de correo no cifrado, por lo que este problema solo surgirá si alguien usa las herramientas de diagnóstico y usa un proveedor que no acepta envíos no cifrados a través de SMTP).

1 me gusta

Ah. Parece que esa tarea de rake es la misma que llama discourse-doctor. Lo siento.

Quizás alguien pueda ver cómo hacer que esa tarea de rake sea más parecida al proceso real, o al menos no rendirse si sus intentos de averiguar qué está pasando son torpes. Un buen primer paso sería decir: “Bueno, XXX parece roto, pero lo intentaremos de todos modos…”.

1 me gusta