El primer correo de registro no se envió

Hola,

Acabo de realizar una instalación nueva de Discourse.

Al conectar por primera vez, se me pidió crear un nombre de usuario y contraseña para la cuenta de administrador, y se suponía que me enviaría un correo de activación.

Sin embargo, no recibí ese correo de activación (por supuesto, revisé la carpeta de spam), así que llamé al doctor y envié un mensaje de prueba a mí mismo, como se solicitaba. Este correo llegó inmediatamente a mi bandeja de entrada.

Sé que puedo crear una cuenta de administrador desde la línea de comandos, pero me gustaría entender qué está sucediendo, ya que podría ocurrir lo mismo con futuros usuarios que intenten registrarse.

¿Pueden ayudarme?

Saludos.

Hay dos cosas que pueden haber salido mal:

  • el correo no se envió
  • el correo se envió, pero no se entregó

Dado que se trata de una nueva instancia, lo más sencillo es revisar todos los registros de correo saliente desde la consola de Rails:

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

Si ves algo, sabrás que al menos fue entregado al servidor SMTP, que es donde termina la responsabilidad de Discourse.

Si no ves nada, probablemente no se envió y es probable que encuentres registros informativos revisando las rutas URL /logs y /sidekiq después de iniciar sesión como administrador.

Podemos ver que el mensaje de prueba se envió (y de hecho lo recibí) usando ./discourse-doctor, pero no hay ningún registro de los mensajes 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 cuatro mensajes de registro (de hecho, intenté registrarme cuatro veces) en el archivo production.log. Sin embargo, esos mensajes de registro nunca se recibieron, por lo que supongo que nunca se enviaron, incluso si no hay ningún error o advertencia.
Podemos notar que no hay rastro del mensaje de prueba que se envió y recibió correctamente en esos registros.

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"}

Otros archivos de registro están vacíos:

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 

Los registros de Docker para la aplicación Discourse muestran cuatro mensajes indicando que falta algo (y tenemos cuatro mensajes de registro que fallaron):

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

¿Esto puede ayudar?

Como el correo de registro nunca llegó, he activado la cuenta de administrador desde la línea de comandos.

Inicié sesión con la cuenta de administrador y envié un correo de prueba a anotheruser@anotherdomain.org desde Admin / Configuración de correo / Configuración del servidor → enviar correo de prueba.

Este correo de prueba se envió inmediatamente, como podemos ver a continuación, y fue entregado en mi bandeja 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"]]

Luego intenté registrarme con la misma dirección de correo (anotheruser@anotherdomain.org), pero el correo de registro no fue entregado (ni enviado, ya que no aparece en los registros de la consola de Rails).

En conclusión, los correos de prueba se envían y entregan, pero los correos de registro no se envían, aunque sí encontramos un rastro en 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"}

La gente no puede registrarse, ¿qué puedo hacer para solucionarlo?

Finalmente cambié a otro proveedor de SMTP y todo funciona bien, pero me siento frustrado porque no pude averiguar qué pasó…

Ciertos correos electrónicos simplemente no funcionan. Al principio, me llevó mucho tiempo y no pude encontrar la causa. Más tarde, al usar Mailgun, todo funcionó sin problemas. Por lo que sé, QQ Mail no tiene un buen soporte para Discourse.

Una vez que iniciaste sesión como administrador, ¿apareció algo aquí:

Debería haber información suficiente allí para resolver esto.