No texto abaixo, substitua <DOT> por . - como sou um novo usuário, o Discourse não permite que eu publique links.
Instalei o Discourse em um servidor recém-criado na nuvem da Hetzner, e o URL resolve corretamente: forum.thewizardofosc.com
No entanto, o e-mail com o qual me registrei nunca é enviado. No arquivo de log, a mensagem do Discourse é Net::ReadTimeout, se isso disser algo.
O telnet conecta - ao digitar "telnet mail.thewizardofosc.com 465", o resultado é "Connected to thewizardofosc.com".
Além disso, o Curl envia um e-mail com sucesso!
Ao digitar o seguinte: curl --ssl smtps://mail.thewizardofosc.com --mail-from discourse@thewizardofosc.com --mail-rcpt <VÁRIOS FUNCIONARAM> --upload-file email.txt --user 'discourse@thewizardofosc.com:<SENHA>'
O envio é bem-sucedido.
Mas, então, por que o Discourse não envia?
Abaixo estão o que acredito serem as seções relevantes do meu arquivo de aplicativo:
## no exemplo de cadastro inicial 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'iliasb@thewizardofosc.com'
## TODO: O servidor SMTP usado para validar novas contas e enviar notificações
# Endereço, nome de usuário e senha SMTP são obrigatórios
# AVISO: o caractere '#' na senha SMTP pode causar problemas!
DISCOURSE_SMTP_ADDRESS: mail.thewizardofosc.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: discourse@thewizardofosc.com
DISCOURSE_SMTP_PASSWORD: <SENHA>
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, padrão true)
## Se você adicionou o modelo Lets Encrypt, descomente abaixo para obter um certificado SSL gratuito
LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
Estranho. Se você consegue se conectar de fora do contêiner, verifique se o comando curl funciona dentro dele. Minha única suposição é que você tenha algum problema de rede com o Docker.
Sim, era uma aposta arriscada… desculpe por ter feito você perder tempo com isso!
Minha única outra “ideia maluca” no momento é ver se você consegue acessar seu servidor de e-mail (seja quem for) e definir a porta para 587 (muitos provedores SMTP oferecem essa opção) e “tentar a sorte novamente” com DISCOURSE_SMTP_ENABLE_START_TLS: true, é claro.
Francamente, normalmente não sou de “jogar dados” e sou mais orientado por fatos; então, se você não quiser tentar, eu entendo perfeitamente, @onar3d!!
Entendido. No momento, estou sem “ideias malucas” e é hora de eu me preparar para dormir; boa sorte e espero que algum dos membros inteligentes da equipe aqui tenha algumas ideias melhores para tentar.
Após mais algumas tentativas (muito obrigado, @IAmGav!), minha configuração do Discourse foi confirmada como funcional com um servidor de e-mail diferente, o que elimina várias possibilidades a serem testadas.
Meu provedor de servidor de e-mail me retornou com uma mensagem de log de erro da parte deles e uma sugestão:
O engenheiro verificou os logs e o erro visto a partir do IP deles está relacionado às configurações de SSL. Provavelmente, estão usando uma versão antiga ou configurações de conexão inadequadas.
Prova:
Erro de TLS na conexão de [95.216.139.49]:33568 SSL_accept: conexão TCP fechada pelo peer
Tente desativar o modo SSL apenas para ver se funciona.
Tentei com DISCOURSE_SMTP_ENABLE_START_TLS definido como false, conforme sugerido acima, nas portas 465 e também na 26 (listada pelo meu provedor como a porta para conexão sem SSL), mas nenhuma funcionou.
Será que isso ocorre porque não comprei um certificado SSL para o domínio thewizardofosc.com? Percebi isso agora, depois de pesquisar um pouco mais.
Você pode considerar executar seus testes curl com a opção detalhada -v ativada, para que possa analisar completamente o handshake bem-sucedido e, em seguida, trabalhar de trás para frente a partir dessa análise.