Testei o servidor SMTP com Telnet:
O Telnet conectou-se ao servidor SMTP.
O Telnet permitiu que eu me autenticasse no servidor SMTP.
O Telnet permitiu que eu enviasse um e-mail com sucesso usando o servidor SMTP, e utilizei exatamente os mesmos valores no Telnet que estão presentes no arquivo /var/discourse/containers/app.yaml.
O Discourse doctor indica que o Discourse conectou-se com sucesso ao servidor SMTP.
O Discourse doctor indica que o Discourse falhou ao enviar o e-mail de teste.
Portanto, o Discourse possui bugs que impedem o envio de e-mails.
Por acaso você está usando smtp-relay.gmail.com, talvez do DigitalOcean? Isso parece ter quebrado recentemente e ninguém ainda sabe exatamente o porquê.
Não. Porque o servidor SMTP está funcionando perfeitamente, conforme já descrito, e o Discourse está instalado corretamente e exibe a tela que solicita o e-mail de registro do administrador. No entanto, esse e-mail não é enviado.
Encontrei um erro em /var/discourse/shared/standalone/log/rails/production.log:
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 32)
Delivered mail f915c15e-9c4d-4d4e-9527-81bc4984540c@forum.domain.com (63.7ms)
Job exception: hostname "mail.forum.domain.com" does not match the server certificate
Isso não parece ser um bug no Discourse. Parece ser um problema na configuração do resolvedor DNS do host ou no certificado SSL.
Como o telnet não usa SSL, imagino que seja por isso que você descobriu que funcionava. No Linux, você pode achar que consegue avançar um pouco mais nos testes usando o OpenSSL para testar a conexão e examinar os certificados.
O HTTPS no site está funcionando, pois o cadeado verde aparece na barra de endereços. Não há nada de errado com o certificado SSL do site. O problema está na maneira como o Discourse detecta o certificado SSL.
O certificado do serviço SMTP é apenas o certificado SSL do servidor, não o certificado SSL do site. O certificado SSL do servidor está correto e funcionando.
Para configurar um servidor SMTP local na mesma máquina que o contêiner do Discourse, o Discourse não especifica exatamente quais são os valores corretos para as configurações SMTP no arquivo app.yml. Isso gera muita confusão e erros.
Nas configurações do app.yml, o Discourse não deixa claro o que deve ser o DISCOURSE_SMTP_ADDRESS.
O Discourse não especifica claramente o que é o “certificado do servidor” na mensagem de erro que aparece após a falha no envio do e-mail de registro inicial. A mensagem de erro está localizada em:
/discourse/shared/standalone/log/rails/production.log
“Job exception: hostname “mail.forum.domain.com” does not match the server certificate”.
No entanto, na realidade, o “certificado do servidor” é simplesmente o certificado SSL do servidor.
Além disso, na mensagem de erro, o Discourse menciona incorretamente “hostname”, quando, na verdade, o que está sendo referido é o DISCOURSE_SMTP_ADDRESS.
Houve dificuldades devido à ambiguidade do Discourse.
A solução foi simplesmente configurar o certificado SSL do servidor para o certificado SSL correto.
Quando o problema foi postado no fórum do Discourse, houve muitas respostas enganosas e pouco claras.
Agora o Discourse Doctor está dizendo que o e-mail foi enviado:
Enviando e-mail para admin@email.com. . .
Testando o envio para admin@email.com usando forum.domain.com:587.
Conexão com o servidor SMTP bem-sucedida.
Enviando para admin@email.com. . .
E-mail aceito pelo servidor SMTP.
No entanto, não há nenhum e-mail na caixa de entrada ou na pasta de spam do destinatário.