Google G Suite Relay SMTP no funciona

Hola, estoy intentando instalar Discourse por primera vez en un VPS Linux de DigitalOcean. Este VPS alberga varios sitios en Nginx y seguí el tutorial sobre cómo instalar Discourse en múltiples sitios aquí: Run other websites on the same machine as Discourse - #182 by angus

Discourse se instaló y ejecutó correctamente. Sin embargo, cuando creo una cuenta de administrador, nunca recibo el correo electrónico. Seguí este tutorial: crunchify[dot]com/how-to-setup-email-for-discourse-forum-with-google-apps-smtp-relay-right-way/

Mi servidor utiliza Postfix para retransmitir correos electrónicos a Google G Suite y funciona bien con WordPress y MyBB. Aunque el tutorial mencionado no menciona Postfix y asumo que se conecta directamente a Google G Suite.

Seguí esta guía sobre cómo solucionar problemas de correo electrónico: meta.discourse[dot]org/t/troubleshooting-email-on-a-new-discourse-install/16326

Puedo hacer telnet al relay SMTP:

$ sudo telnet smtp-relay.gmail.com 587
Trying 2607:f8b0:400d:c04::1c...
Connected to smtp-relay.gmail.com.
Escape character is '^]'.
220 smtp-relay.gmail.com ESMTP n18sm708840ooi.26 - gsmtp

El registro de producción dice:

Rendering layouts/email_template.html.erb
  Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 32)
Delivered mail cf23dab4-3e43-421e-8e54-228489c58874@forums.neuronootropic.org (610.1ms)
Job exception: end of file reached

  Rendering layouts/email_template.html.erb
  Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 32)
Delivered mail a092f703-b590-4792-bd73-d9e4700c3e3c@forums.neuronootropic.org (261.1ms)
Job exception: end of file reached

Intenté configurar el correo electrónico en el archivo de configuración app.yml como noreply@forums.neuronootropic.org porque sé que ese correo funciona, pero es lo mismo. Sigue enviando correos con esos números; asumo que es algún tipo de cifrado. Nunca llegan a mi bandeja de entrada.


Mi otro problema es con Nginx. Funcionaba bien hasta ayer, pero hoy jugué con el archivo de configuración app.yml y configuré la URL para que fuera un subdirectorio en lugar de un subdominio.

Solo quería ver si quizás el subdominio está causando el problema con el correo electrónico no funcionando, ya que mi foro actual, MyBB, se ejecuta en un subdirectorio y no tiene problemas con el correo electrónico.

Hacer esto parece haber roto Nginx. Por alguna razón, Nginx ahora intenta cargar un certificado SSL desde el directorio de Discourse, aunque no está especificado en mi archivo de configuración de Nginx. Aquí está el error:

$ sudo nginx -t
nginx: [emerg] BIO_new_file("/var/discourse/shared/standalone/ssl/ssl.crt") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/var/discourse/shared/standalone/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed

Estoy utilizando Let’s Encrypt para el certificado SSL y funciona correctamente. Nginx no tuvo problemas ayer antes de intentar ejecutar Discourse en un subdirectorio en lugar de un subdominio.

Cualquier ayuda será apreciada.

En realidad, no he configurado el relay de G-Suite para el correo electrónico, pero parece que necesitas agregar y verificar forum.neuronootropic.org como un dominio de envío en tu cuenta de administrador de G-Suite. Si ese es el caso, según la documentación de Google, no hay ninguna razón para que no funcione.

Sin embargo, si tienes neuronootr0pic.org verificado en G-Suite, podrías usar algo como noreply_forum@neuronootropic.org para enviar correos electrónicos.

Gracias por la sugerencia.

Volví a probar el correo electrónico. Resulta que solo puede recibir, pero no enviar, desde la dirección noreply@forums.neuronootropic.org. Lo configuré como un dominio separado en G Suite y pensé que los registros MX del dominio principal serían suficientes para ambos.

No fue así. Agregué registros MX para forums.neuronootropic.org y ahora puedo enviar y recibir correos electrónicos.

Sin embargo, Discourse aún no envía un correo de activación al registrarse como administrador.

¿Alguna idea?

También no estoy seguro de por qué Nginx intenta cargar un certificado SSL desde el directorio de Discourse cuando nunca lo especifiqué. ¿Alguna idea sobre cómo abordar este problema?

Edición: Cambié la configuración del correo de notificación para enviar correos desde el dominio principal en lugar del subdominio. Reconstruí Discourse y aún así sigue enviando correos desde el subdominio.

exec: rails r "SiteSetting.notification_email='noreply@neuronootropic.org'"

$ tail shared/standalone/log/rails/production.log
  Parameters: {"authenticity_token"=>"K6dxoAPvh8PEU6mLHjyFRhY/CcZFFIalhrX08AIh9EgGuOHrJos7i1w0dgdS7okeoSBTrmWJSsc77YpfTnMO4A=="}
  Rendering finish_installation/resend_email.html.erb within layouts/finish_installation
  Rendered finish_installation/resend_email.html.erb within layouts/finish_installation (Duration: 0.4ms | Allocations: 110)
  Rendered layouts/_head.html.erb (Duration: 0.4ms | Allocations: 145)
Completed 200 OK in 19ms (Views: 7.8ms | ActiveRecord: 0.0ms | Allocations: 3036)
  Rendering layouts/email_template.html.erb
  Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 32)
Delivered mail bce41ef8-2288-42cd-b7ae-e1eb990a4646@forums.neuronootropic.org (705.1ms)
Job exception: end of file reached

He solucionado el problema de nginx. Resulta que había un archivo de configuración de nginx guardado en el directorio sites-enabled. No sé cómo llegó allí, ya que enlazo los archivos de sites-available a sites-enabled y no suelo modificar el directorio sites-enabled.

El problema con el relay SMTP de G Suite persiste. No entiendo por qué. El registro de producción de Discourse no menciona ningún error.

Discourse doctor:

==================== PRUEBA DE CORREO ====================
Para una prueba robusta, obtén una dirección en http://www.mail-tester.com/
O simplemente envía un mensaje de prueba a ti mismo.
¿Dirección de correo para la prueba? ('n' para omitir) [forums@neuronootropic.org]: forums@neuronootropic.org
Enviando correo a forums@neuronootropic.org...
Probando el envío a forums@neuronootropic.org usando smtp-relay.gmail.com:587.
======================================== ERROR ========================================
                                    ERROR INESPERADO

fin de archivo alcanzado

====================================== SOLUCIÓN =======================================
Este no es un error común. ¡No existe una solución recomendada!

Por favor, reporta el mensaje de error exacto anterior en https://meta.discourse.org/
(¡Y una solución, si encuentras una!)
=======================================================================================

¿Qué significa esto?

Yo, eh… no hice clic en guardar cuando configuré el retransmisor en G Suite, jaja

El correo funciona ahora. :slight_smile: