Email não funciona de jeito nenhum

Olá. Nos últimos dias, tenho tido dificuldades para configurar um fórum Discourse, e todo o problema está relacionado ao e-mail. Consegui colocar o fórum no ar pulando a configuração de e-mail, mas ainda preciso que ele funcione para que as pessoas também possam se cadastrar. Tenho obtido os mesmos resultados repetidamente e já tentei muitas coisas diferentes, mas nada parece ter funcionado. A cada tentativa, uma das duas situações ocorre:

  1. O erro do teste de e-mail diz “hostname . . . não corresponde ao certificado do servidor”
  2. O erro do teste de e-mail diz “502” e, no Sidekiq, o erro é Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout com #<TCPSocket:(closed)>

Então, quando cada um aparece? Bem, o número 1 aparece em todos os cenários. O número 2, por outro lado, apareceu quando usei a Porta 465. Demorava algum tempo para “enviar um e-mail de teste” e, então, esse erro surgia. Agora, desabilitei o SSL, então a Porta 587 está disponível, mas, em vez de apresentar o erro 1 ou 2, ele simplesmente fica travado em “Enviando e-mail de teste”.

Não sei o que fazer neste momento. Tenho lutado com isso há alguns dias e ainda não encontrei uma solução. Qualquer ajuda seria muito apreciada. Obrigado pelo seu tempo e ajuda.

ATUALIZAÇÃO: Usando o comando curl --ssl-reqd, testei as portas 465, 587, 25 e 2525. Os resultados foram:
25: Não funcionou (Erro do Curl 35, número de versão incorreto)
465: Funcionou conforme o esperado e com resposta rápida de e-mail
587: Não funcionou (Erro do Curl 35, número de versão incorreto)
2525: Não falhou, mas nunca enviou um e-mail (o tempo gasto continuou aumentando sem nunca parar enquanto nenhum e-mail era enviado)

Se for útil, minhas configurações atuais são (com o erro 502):

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, padrão true)

Templates:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente essas duas linhas se desejar adicionar o Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

E expose:

expose:
  - "80:80"   # http
  - "443:443" # https

Esta é uma imagem com as informações do e-mail:

Você está usando um dos provedores de e-mail recomendados?

Onde o servidor Discourse está instalado?

Não acredito que seja isso. O e-mail é fornecido pela VoltHosting, se isso ajudar.

Além disso, o servidor Discourse está instalado em var/discourse e ele funciona (posso acessar o site e navegar com uma conta de administrador que criei (pulando a verificação de e-mail), e é assim que também testo os e-mails (tentando enviar e-mails de teste tanto em E-mail > Configurações quanto em E-mail > Prévia do Resumo, que é onde obtenho esses erros). Agradeço a ajuda, de qualquer forma.

Tente usar um dos provedores recomendados; isso ajudará você a descobrir rapidamente se o problema está na sua instalação do Discourse ou no servidor de e-mail que você está tentando usar.

A lista de provedores recomendados existe porque eles foram validados para funcionar com o Discourse. O SMTP pode ser complicado mesmo nas melhores circunstâncias, e há uma premissa geral de que, se você não estiver usando a configuração recomendada, assume o ônus técnico adicional que isso gera.

Obrigado pela resposta. Não acho que possa usar um dos provedores recomendados, já que a pessoa que criou o plano também possui mais e-mails nessa empresa, o que acarretaria um custo adicional além do próprio VPS. Além disso, não creio que seja possível fazer isso no momento. Existe talvez outra forma de eu testar os serviços de e-mail de maneira mais eficiente, sem precisar recriar o fórum a cada vez? Obrigado pela ajuda.

Você não precisa recompilar para alterar suas configurações de e-mail. Você pode executar:

./launcher destroy app
./launcher start app

Após editar as configurações de e-mail, as novas serão detectadas. O mesmo se aplica a todas as variáveis de ambiente.

Considere entrar em contato com a VoltHosting para obter suporte com o sistema de e-mail deles. Se o certificado do servidor não corresponder ao nome de host, isso não é um problema do Discourse e é algo que eles precisam corrigir. Pode haver um nome de host alternativo que você possa usar e que também seja válido.

De qualquer forma, recomendo usar uma das versões de teste gratuitas oferecidas na página vinculada acima para provar que o próprio Discourse está processando os e-mails corretamente. Você sempre pode voltar para o SMTP da VoltHosting depois de confirmar que o Discourse está funcionando corretamente.

Só para confirmar, a instância foi instalada seguindo este guia, certo?

Obrigado. Com certeza usarei isso no futuro, mas ainda estou procurando uma possível solução. Se for útil, aqui está uma imagem do erro do Sidekiq:

image

Claro que poderia usar os testes gratuitos, mas, afinal, é um teste gratuito e tem algumas limitações. E sim, segui o guia oficial para instalar o fórum Discourse. Está funcionando, apenas os e-mails não estão funcionando. Obrigado pela ajuda.

Neste ponto, suas opções são realmente testar usando um provedor recomendado ou entrar em contato com a VoltHosting. Os erros indicam que o certificado apresentado pelo servidor SMTP não é válido para o nome de host usado para a conexão.

A menos que você possa provar o contrário testando com um dos serviços recomendados, é muito improvável que esse problema esteja relacionado à sua instalação do Discourse.

Esse erro de tempo esgotado sugere que você não consegue se conectar ao seu servidor de e-mail. Ou o Digital Ocean está bloqueando o acesso ou algo mais está.

Você deve ser capaz de executar

telnet server.hostname server-port

Provavelmente, você precisará da ajuda da pessoa que configurou ou controla o servidor de e-mail.

Obrigado pela resposta. Executei o comando agora mesmo. E estes são os resultados:


Não tenho certeza se deveria permitir o AUTH LOGIN ou não. Se sim, então presumo que esse seja o problema, correto? Obrigado pela ajuda.

Hmm. Bem, não foi no nível do servidor. Minha próxima suspeita é um problema de rede do Docker. Mas pode ser outra coisa.

Obrigado pela resposta. Se possível, claro, como eu poderia investigar isso mais a fundo? Existe algum comando Docker que eu possa executar para testar e ver qual é a saída, ou algo semelhante? Existe alguma maneira de eu testar isso em algum lugar e obter uma saída que mostre o problema? Se não houver, também é compreensível. Obrigado pela ajuda.

ATUALIZAÇÃO: Ao usar o comando curl --ssl-reqd, testei as portas 465, 587, 25 e 2525. Os resultados foram:
25: Não funcionou (Erro do Curl 35, número de versão incorreto)
465: Funcionou conforme o esperado e com resposta rápida de e-mail
587: Não funcionou (Erro do Curl 35, número de versão incorreto)
2525: Não falhou, mas nunca enviou um e-mail (o tempo gasto aumentou e nunca parou enquanto nenhum e-mail era enviado)

Se ajudar, minhas configurações atuais são (com o erro 502):

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, padrão true)

Modelos:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente essas duas linhas se desejar adicionar o Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

E expor:

expose:
  - "80:80"   # http
  - "443:443" # https

Esta é uma imagem com as informações do e-mail:


Não tenho certeza se o motivo é porque talvez o Discourse não se conecte com SSL/TLS ou algo diferente. Espero que essas informações sejam úteis e ajudem a resolver o problema.

Adicione isso e veja se funciona:

DISCOURSE_SMTP_ENABLE_START_TLS: False

Obrigado pela resposta. Infelizmente, não funcionou. Ainda estou recebendo o mesmo erro 502.

Não tenho certeza se isso ajuda, mas consegui executar o comando curl --ssl-reqd no VPS e enviar um e-mail com sucesso (como mencionei nesta resposta). Além disso, executei esse comando dentro do aplicativo (acessado com ./launcher enter app) e ele funcionou, obtendo os mesmos resultados do teste anterior (porta 465 funcionando, 25 e 587 não funcionando, e 2525 retornando erro de tempo limite). No entanto, ainda recebo um erro 502 ao executar o teste no próprio fórum (usando e-mails de teste). Espero que essas informações adicionais sejam úteis. Obrigado pela sua ajuda.

Você encontrou uma solução?