Parece conectar ao servidor e enviar um e-mail de teste corretamente se eu fizer isso manualmente:
> sudo ./launcher enter app
root@support-app:/var/www/discourse# openssl s_client -connect mail.xxxxxxxx.com:465
:
:
quantidade massiva de lixo
:
:
220 xxxxxxx.com Anti-spam GT for Coremail System (mispb-6da2110f-64b0-4d67-acf1-2d302bd594f9-xxxxxxx.com[20220915])
EHLO mail.xxxxxxxxx.com
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrpDiNKUCa0xDrUUUUj
250-STARTTLS
250-SMTPUTF8
250 8BITMIME
AUTH PLAIN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
235 Authentication successful
mail from: <xxx@xxxxxx.com>
250 Mail OK
rcpt to: <xxxx@xxxxxxx.com>
250 Mail OK
data
354 End data with <CR><LF>.
content
.
250 Mail OK queued as AQAAfwBXr9nSGHdj3hEgAA--.7073S2
É provável que a porta de saída esteja sendo bloqueada pelo seu provedor de hospedagem. Se você estiver usando algum serviço como o Mailgun (ou a maioria dos outros), a porta 2525 deverá funcionar. Se for um servidor de e-mail que você gerencia, você pode configurá-lo para escutar em outra porta (como a 2525).
Ou (provavelmente o mais difícil) você pode abrir um ticket com quem hospeda seu servidor e pedir para eles abrirem a porta.
Bem, considerando que posso ./launcher enter app e então openssl conectar ao servidor de e-mail, fazer login via SMTP e enviar um e-mail com sucesso de dentro do contêiner discourse, duvido que seja a porta que não funciona…
Eu rastreeei o código e parece que EHLO nem foi alcançado. O servidor SMTP está conectado, mas o handshake SSL parece estar faltando, então o servidor se desconecta e o Discourse não recebe nenhuma resposta, daí o erro.
Portanto, suspeitei que o suporte da porta 465 parece ter um bug (ele usa SSL por padrão, mas acho que o Discourse não reconhece isso), então provavelmente a conexão SSL nunca é estabelecida.
Mudar para a porta 25 parece pelo menos eliminar o erro, embora eu ainda não esteja recebendo nenhum e-mail enviado…
EDIT: Posso confirmar que a porta 25 funciona corretamente (assim como a 587, mas infelizmente meu servidor smtp não expõe a 587).
Eu não estava recebendo nenhum e-mail antes devido ao fato de que o endereço IP do servidor Discourse foi temporariamente colocado na lista negra pelo servidor smtp por causa de muitas tentativas falhas.
Também vi vários tópicos sobre o ‘problema 465’. No entanto, minha depuração de e-mail para qualquer coisa além do óbvio não é ótima, então tenho citado o guia de solução de problemas:
Há algo que possamos adicionar a isso para ajudar as pessoas?
EDIT: @RGJ Posso confirmar que DISCOURSE_SMTP_FORCE_TLS: true em app.yml resolveu o problema com sucesso!
Sugiro um aviso em negrito dizendo Se você usa a porta 465, defina DISCOURSE_SMTP_FORCE_TLS: true, ou o Discourse não deveria ser inteligente o suficiente para detectar isso?