Erro SMTP: deve emitir um comando STARTTLS primeiro

Estou enfrentando um problema semelhante. Ontem depurei o envio de e-mails em uma nova instância do Discourse por cerca de três horas, sem sucesso. Estou tentando enviar e-mails via Fastmail com STARTTLS na porta 587. Outros serviços estão funcionando com as mesmas credenciais.

Não recebo o erro “Must issue a STARTTLS command first” com estas configurações:

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 por um ./launcher rebuild app, quando executo ./discourse-doctor e envio um e-mail, recebo um erro 500 5.5.1 Invalid command em resposta.

Hoje comecei a rastrear a comunicação com tcpdump, e notei que o Discourse não parece usar STARTTLS. Veja o que acontece quando envio um e-mail de recuperação do 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]

Mas com o Discourse, isso acontece:

< 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

Então, parece que o Discourse está enviando minhas credenciais pela internet em texto puro, mesmo com STARTTLS habilitado nas configurações? Isso é um bug?

Também notei que quando executo ./discourse-doctor, o resumo “YML SETTINGS” no topo lista os seguintes itens:

==================== 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=

No entanto, não há menção de DISCOURSE_SMTP_ENABLE_START_TLS, mesmo que esteja definido em app.yml. Não tenho certeza se este problema está relacionado.

2 curtidas