Sidekiq muestra que los correos de activación se envían a la dirección de correo nil

Hola gente increíble,

Tengo algo divertido para ustedes. Esto es lo que sucedió:

  1. Instalé Discourse usando discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
  2. Probé el correo electrónico con doctor, funciona y se reciben correos electrónicos.
  3. Intenté activar la cuenta de administrador y sidekiq revela esto (con el token redactado):
    {“type”=>“signup”, “user_id”=>1, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}

No estoy seguro de por qué nil es algo para to_address.

¡Cualquier consejo, asesoramiento o sugerencia sería muy bienvenido!

Probablemente pueda encontrarlo, pero ¿sabe cuál era el nombre del trabajo de Sidekiq que activó el correo electrónico?

Si no puede acceder al sitio porque no está recibiendo el correo electrónico de activación, puede crear un usuario y una contraseña de administrador con rake admin:create. Las instrucciones completas están aquí: Create an admin account from the console. Eso debería permitirle iniciar sesión en el sitio.

Parece que aún necesitará resolver qué está pasando con la entrega de correo electrónico.

6 Me gusta

Disculpa la demora en responder. El trabajo que lo desencadenó fue: Jobs::CriticalUserEmail

Así que seguí la guía exactamente. Cuando llegó el momento de registrar la cuenta de administrador, no envió un correo electrónico, y Jobs::CriticalUserEmail contenía {“type”=>“signup”, “user_id”=>1, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}.

Forcé la cuenta de administrador para poder ver qué problemas había. El resultado es el siguiente:

  • Doctor funciona y se recibe el correo electrónico.
  • La prueba de resumen funciona y se recibe el correo electrónico tanto en la versión HTML como en la normal.
  • No se envía ningún correo electrónico para ningún registro, y el registro de correos electrónicos en la sección de administración ni siquiera muestra un mensaje de que se envió un correo electrónico.

Cada vez que un usuario intenta registrarse, el resultado es el mismo:
Jobs::CriticalUserEmail contenía {“type”=>“signup”, “user_id”=>2, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}.

La cola de /var/discourse/shared/standalone/log/rails/production.log muestra (con datos ocultos):

Processing by UsersController#check_username as JSON
  Parameters: {"username"=>"bobo", "email"=>"REDACTED"}
Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 636)
Started GET "/session/csrf" for REDACTEDPUBLICIP at 2024-09-26 08:13:03 +0000
Processing by SessionController#csrf as JSON
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 270)
Started POST "/u" for REDACTEDPUBLICIP at 2024-09-26 08:13:03 +0000
Processing by UsersController#create as */*
  Parameters: {"name"=>"JJ", "email"=>"REDACTED", "password"=>"[FILTERED]", "username"=>"bobo", "password_confirmation"=>"[FILTERED]", "challenge"=>"REDACTED", "timezone"=>"Europe/London"}
Completed 200 OK in 335ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 23323)
Started POST "/login" for REDACTEDPUBLICIP at 2024-09-26 08:13:04 +0000
Processing by StaticController#enter as HTML
  Parameters: {"username"=>"bobo", "password"=>"[FILTERED]", "redirect"=>"/u/account-created"}
Redirected to https://REDACTEDDOMAIN/u/account-created
Completed 302 Found in 1ms (ActiveRecord: 0.0ms | Allocations: 507)
Started GET "/u/account-created" for REDACTEDPUBLICIP at 2024-09-26 08:13:04 +0000
Processing by UsersController#account_created as HTML
  Rendered layout layouts/application.html.erb (Duration: 14.0ms | Allocations: 4624)
Completed 200 OK in 21ms (Views: 15.1ms | ActiveRecord: 0.0ms | Allocations: 6821)
Started GET "/sidekiq/queues/critical" for REDACTEDPUBLICIP at 2024-09-26 08:13:15 +0000

En el registro, muestra un correo electrónico preciso para los parámetros de registro, pero sidekiq todavía informa “to_address”=>nil.

1 me gusta

¿Hay algún error en la página de registros de errores de su sitio? Esa página está en /logs. Puede acceder a ella desde la barra lateral de administración haciendo clic en la entrada Seguridad / Registros de errores.

1 me gusta

Oh interesante. Obtengo esto:

1 me gusta

¿Puede acceder a la interfaz web de Sidekiq en /sidekiq? Si es así, ¿se informa de algún error en esa página?

1 me gusta

Soy, pero lo que obtengo es esto:

Intenta hacer clic en la pestaña “En cola”. Es un enlace.

1 me gusta

Me sale esto:

Que es donde descubrí lo de address_to=nil.

Hay algo mal con Redis y/o Sidekiq. Hay algunos otros miembros de este foro que podrían tener ideas sobre cómo depurar el problema.

Me tentaría conectarme por SSH al servidor y ejecutar:

cd /var/discourse
./launcher rebuild app

En este punto, no podría hacer daño.

1 me gusta

Sí, lo he hecho varias veces, por eso he venido a preguntar.

He hecho una reconstrucción. Incluso he hecho una instalación completamente nueva.

Parece que sucede en cada instalación. No importa qué. Y ahora estoy perdido.

Y estoy increíblemente agradecido por lo que has intentado ayudarme.

1 me gusta

Eso es sorprendente. Asegúrate de que estás siguiendo todos los pasos que se describen aquí: . discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub.

Además, asegúrate de que el servidor en el que estás instalando Discourse cumple los requisitos que se describen aquí: discourse/docs/INSTALL.md at main · discourse/discourse · GitHub.

Sería genial averiguar qué está saliendo mal.

3 Me gusta

Puedo darte el proceso exacto que utilicé. Quizás algo en el proceso que estoy haciendo está mal. ¡Estoy dispuesto a aceptar totalmente que estoy cometiendo un error en algún lugar!

  1. Tengo dominio. Es discourse.domain.dev (dominio obviamente redactado)
  2. Tengo una cuenta de correo electrónico configurada. Tengo una cuenta de mailgun, así que configuré un usuario completamente nuevo para SMTP. El correo es discourse@discourse.domain.dev
  3. Tengo servidor. Es la última versión de Ubuntu (Jammy Jellyfish)
  4. apt install docker.io - Ninguno
  5. Git ya estaba instalado
  6. el usuario era root
  7. clonado usando git clone https://github.com/discourse/discourse_docker.git /var/discourse
  8. navegado a cd /var/discourse
  9. chmod 700 containers
  10. todavía usuario root
  11. ejecutado ./discourse-setup
  12. Rellené la información solicitada: discourse.domain.dev
  13. Correo electrónico de administrador de Discourse: my@personal.email
  14. SMTP: smtp.eu.mailgun.org
  15. PUERTO SMTP: 587
  16. nombre de usuario: noreply@discourse.domain.dev
  17. contraseña de usuario: REDACTED
  18. correo electrónico de notificación: noreply@discourse.domain.dev
  19. correo electrónico de Let’s Encrypt: my@personal.email
  20. ID de Maxmind: Lo puse
  21. Licencia de Max Mind: La puse
  22. Verifiqué los datos de entrada para la configuración.
  23. Presioné Enter.
  24. Esperé.
  25. Esperé un poco más
  26. Hice una taza de té
  27. Última línea del proceso de arranque:
    + /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=8 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_HOSTNAME=discourse.domain.dev -e DISCOURSE_DEVELOPER_EMAILS=my@personal.email -e DISCOURSE_SMTP_ADDRESS=smtp.eu.mailgun.org -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=noreply@discourse.domain.dev -e DISCOURSE_SMTP_PASSWORD=b7fc73b0905b5ffb5f70300f1f796000-1b5736a5-0a60075a -e DISCOURSE_SMTP_DOMAIN=discourse.example.com -e DISCOURSE_NOTIFICATION_EMAIL=noreply@discourse.domain.dev -e LETSENCRYPT_ACCOUNT_EMAIL=my@personal.email -e DISCOURSE_MAXMIND_ACCOUNT_ID=REDACTED -e DISCOURSE_MAXMIND_LICENSE_KEY=REDACTED -h devsite -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address REDACTGED local_discourse/app /sbin/boot
    REDACTEDLONGSTRING
  28. Ejecuté ./discourse-doctor. Falló porque no pudo conectarse a redis.
  29. Ejecuté ./launcher rebuild app y no cambié nada en la configuración
  30. Se construyó. Todo bien. La única diferencia fue la última cadena larga redactada.
  31. Ejecuté ./discourse-doctor. Recibí el correo electrónico de prueba.
  32. El sitio estaba en funcionamiento, así que fui a crear una cuenta de usuario para el administrador.
  33. Hice clic en Registrar.
  34. Dijo que estaba enviando un correo electrónico de notificación.
  35. No se recibió ninguno.
  36. Revisé a través de ./discourse-docter y vi esto:
    Versión de Discourse en discourse.domain.dev: NO ENCONTRADA Versión de Discourse en localhost: NO ENCONTRADA
  37. Ejecuté ./launcher enter app
  38. Ejecuté rake admin:create
  39. Puse correo electrónico: my@personal.email
  40. Restablecí la contraseña ya que el usuario ya existe
  41. Dijo “¡Tu cuenta ahora tiene privilegios de administrador!”
  42. Inicié sesión en el sitio en el dominio
  43. Ve a discourse.domain.dev/logs - ve “La prueba de latido de Sidekiq falló, reiniciando”
  44. Ve a discourse.domain.dev/sidekiq: Ve:
  45. Ve a ver En cola
  46. Haz clic en “crítico” y expande el contenido y ve “to_address”=nil de nuevo.

Detente y comunícate.

Esta es una rehacer completa en una máquina nueva hoy. Estos son los mismos pasos EXACTOS que usé antes. Por favor, si me equivoqué, ¡házmelo saber! :pray:


Configuración del sistema:

  • CPU: 4 núcleos
  • RAM: 16 GB
  • SO: Ubuntu LTS 64 bits 24.04
  • Almacenamiento: NVMe 500G
  • Versión de Postgres: 13.16-1
  • Redis: 7.0.7
  • Ruby: 3.3.4
1 me gusta