Primeiro e-mail de registro não enviado

Olá,

Acabei de fazer uma instalação limpa do Discourse.

A primeira conexão pediu que eu criasse um login e senha para a conta de administrador e deveria ter me enviado um e-mail de ativação.

Mas não recebi esse e-mail de ativação (claro, verifiquei a pasta de spam), então chamei o médico e enviei uma mensagem de teste para mim mesmo, conforme solicitado. Esse e-mail chegou imediatamente na minha caixa de entrada.

Sei que posso criar uma conta de administrador pelo terminal, mas gostaria de entender o que está acontecendo, pois o mesmo pode ocorrer com futuros usuários que tentarem se registrar.

Pode me ajudar?

Atenciosamente.

Há duas coisas que podem ter dado errado:

  • o e-mail não foi enviado
  • o e-mail foi enviado, mas não foi entregue

Como se trata de uma nova instância, a maneira mais fácil de verificar é revisar todos os registros de e-mails de saída pelo console do Rails:

discourse(prod)> EmailLog.all.pluck(:to_address, :email_type, :created_at, :smtp_transaction_response)

Se você ver algo, saberá que pelo menos o e-mail foi entregue ao servidor SMTP, que é onde termina a responsabilidade do Discourse.

Se não houver registros, provavelmente o e-mail não foi enviado. Nesse caso, você provavelmente encontrará logs informativos acessando os caminhos /logs e /sidekiq após fazer login como administrador.

Podemos ver que a mensagem de teste foi enviada (e de fato a recebi) usando ./discourse-doctor, mas não há registro das mensagens de registro :

discourse(prod)> EmailLog.all.pluck(:to_address, :email_type, :created_at, :smtp_transaction_response)
=> [["user@domain.org", "test_message", 2026-05-13 16:23:41.417177000 UTC +00:00, "250 2.0.0 Ok: queued as 4B4DDB0059A"]]

Encontramos quatro mensagens de registro (de fato, tentei me registrar quatro vezes) no arquivo production.log. Mas essas mensagens de registro nunca foram recebidas, então minha suposição é que elas nunca foram enviadas, mesmo sem nenhum erro ou aviso.
Podemos notar que não há rastro da mensagem de teste que foi enviada e recebida com sucesso nesses logs.

root@my-vps-app:/var/www/discourse/log# cat production.log | grep user
  Parameters: {"authenticity_token" => "ityyLIdjT7xvdxEd01LjMT08-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}
  Parameters: {"authenticity_token" => "tnDxYkOOwXYcv59Ez4t8vWPir-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}
  Parameters: {"authenticity_token" => "bvOwVYHS3N_UELipxVEG3L3LY-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}
  Parameters: {"authenticity_token" => "oo6GN-n7clGI5F1-uqzsZcadeP-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}

Outros arquivos de log estão vazios :

root@my-vps-app:/var/www/discourse/log# cat production_errors.log 
root@my-vps-app:/var/www/discourse/log# cat sidekiq.log 
root@my-vps-app:/var/www/discourse/log# cat unicorn.stderr.log 
root@my-vps-app:/var/www/discourse/log# cat unicorn.stdout.log 

Os logs do Docker para o aplicativo Discourse mostram quatro mensagens indicando que algo está faltando (e temos quatro mensagens de registro que falharam) :

root@my-vps:/var/discourse# docker logs app
...
I, [2026-05-13T16:14:30.769269 #3290]  INFO -- : worker=7 gen=0 pid=4295 registered
I, [2026-05-13T16:14:30.815178 #4295]  INFO -- : worker=7 gen=0 pid=4295 ready
X-Accel-Mapping header missing
X-Accel-Mapping header missing
X-Accel-Mapping header missing
X-Accel-Mapping header missing

Isso pode ajudar?

Como o e-mail de registro nunca chegou, ativei a conta de administrador usando a linha de comando.

Fiz login com a conta de administrador e enviei um e-mail de teste para anotheruser@anotherdomain.org em Admin / Configurações de e-mail / Configurações do servidor → enviar e-mail de teste.

Esse e-mail de teste foi enviado imediatamente, como podemos ver abaixo, e foi entregue na minha caixa de entrada:

root@my-vps:/var/discourse# ./launcher enter app
x86_64 arch detected.
root@my-vps-app:/var/www/discourse# rails console
Loading production environment (Rails 8.0.5)
discourse(prod)> EmailLog.all.pluck(:to_address, :email_type, :created_at, :smtp_transaction_response)
=> 
[["user@domain.org",
  "test_message",
  2026-05-13 16:23:41.417177000 UTC +00:00,
  "250 2.0.0 Ok: queued as 4B4DDB0059A"],
 ["anotheruser@anotherdomain.org",
  "test_message",
  2026-05-16 14:44:42.978862000 UTC +00:00,
  "250 2.0.0 Ok: queued as D79DFB00573"]]

Em seguida, tentei me registrar com o mesmo endereço de e-mail (anotheruser@anotherdomain.org), mas o e-mail de registro não foi entregue (e nem enviado, pois não aparece nos logs do console do Rails).

Em resumo, os e-mails de teste são enviados e entregues, mas os e-mails de registro não são enviados, mesmo que encontremos um registro no production.log:

cat production.log | grep anotheruser
  Parameters: {"email_address" => "anotheruser@anotherdomain.org"}
Started GET "/u/check_email?email=anotheruser%40anotherdomain.org" for xxx.xxx.xxx.xxx at 2026-05-16 17:40:45 +0000
  Parameters: {"email" => "anotheruser@anotherdomain.org"}
  Parameters: {"email" => "anotheruser@anotherdomain.org", "password" => "[FILTERED]", "username" => "NewUser", "password_confirmation" => "[FILTERED]", "challenge" => "xxxxxxxx", "timezone" => "Europe/Paris"}

As pessoas não conseguem se registrar. O que posso fazer para corrigir isso?

Finalmente, mudei para outro provedor SMTP e tudo está funcionando bem, mas estou frustrado por não ter conseguido descobrir o que aconteceu…

Alguns provedores de e-mail simplesmente não funcionam. Eu também perdi muito tempo no início sem conseguir descobrir o motivo. Depois que passei a usar o Mailgun, tudo funcionou bem. Pelo que sei, o QQ Mail não tem um bom suporte ao Discourse.

Depois de fazer login como administrador, algo apareceu aqui:

Deveria haver informações suficientes lá para resolver isso.