Google G Suite Relay SMTP não está funcionando

Olá, estou tentando instalar o Discourse pela primeira vez em um VPS Linux da DigitalOcean. Este VPS está executando vários sites no Nginx e segui o tutorial sobre como instalar o Discourse em múltiplos sites aqui: Run other websites on the same machine as Discourse - #182 by angus

O Discourse foi instalado e executou sem problemas. Mas, ao criar uma conta de administrador, nunca recebo um e-mail. Segui este tutorial: crunchify[dot]com/how-to-setup-email-for-discourse-forum-with-google-apps-smtp-relay-right-way/

Meu servidor usa o Postfix para encaminhar e-mails ao Google G Suite e funciona bem com WordPress e MyBB. No entanto, o tutorial acima não menciona o Postfix, e presumo que ele se conecte diretamente ao Google G Suite.

Segui este guia sobre como solucionar problemas de e-mail: meta.discourse[dot]org/t/troubleshooting-email-on-a-new-discourse-install/16326

Consigo fazer telnet no 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

O log de produção diz:

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

Tentei definir o e-mail no arquivo de configuração app.yml como noreply@forums.neuronootropic.org, pois sei que esse e-mail funciona, mas o problema persiste. Ainda assim, os e-mails são enviados com esses números; presumo que seja algum tipo de criptografia? Eles nunca chegam à minha caixa de entrada.


Meu outro problema é com o Nginx. Ele estava funcionando perfeitamente ontem, mas hoje mexi no arquivo de configuração app.yml e defini a URL para ser um subdiretório em vez de um subdomínio.

Eu só queria ver se talvez o subdomínio estivesse causando o problema com o e-mail não funcionando, já que meu fórum atual, o MyBB, roda em um subdiretório e não tem problemas com e-mail.

Fazer isso parece ter quebrado o Nginx. Por alguma razão, o Nginx agora tenta carregar um certificado SSL do diretório do Discourse, mesmo que não esteja especificado no meu arquivo de configuração do Nginx. Aqui está o erro:

$ 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

Estou usando o Let’s Encrypt para o certificado SSL e ele está funcionando bem. O Nginx não teve problemas ontem antes de eu tentar executar o Discourse em um subdiretório em vez de um subdomínio.

Qualquer ajuda seria apreciada.

Na verdade, eu não configurei o G-Suite Relay para e-mail, mas parece que você precisa adicionar e verificar forum.neuronootropic.org como um domínio de envio na sua conta de administrador do G-Suite. Se for esse o caso, dada a documentação do Google, não há motivo para não funcionar.

No entanto, se você tiver neuronootr0pic.org verificado no G-Suite, poderia usar algo como noreply_forum@neuronootropic.org para enviar e-mails.

Obrigado pela sugestão.

Voltei atrás e testei o e-mail. Acontece que ele só pode receber, mas não enviar do endereço noreply@forums.neuronootropic.org. Configurei-o como um domínio separado no G Suite e pensei que os registros MX do domínio principal seriam suficientes para ambos.

Não foi o caso. Adicionei registros MX para forums.neuronootropic.org e agora consigo enviar e receber e-mails.

No entanto, o Discourse ainda não envia um e-mail de ativação ao registrar um administrador.

Alguma ideia?

Além disso, não sei por que o nginx está tentando carregar um certificado SSL do diretório do Discourse, mesmo eu nunca tê-lo especificado. Alguma ideia de como abordar esse problema?

Edição: Alterei a configuração do e-mail de notificação para enviar e-mails do domínio principal em vez do subdomínio. Reconstruí o Discourse e ele ainda está enviando e-mails do subdomínio.

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

Corrigi o problema do nginx. Acontece que havia um arquivo de configuração do nginx salvo no diretório sites-enabled. Não tenho certeza de como ele foi parar lá, já que eu faço o link dos arquivos de sites-available para sites-enabled e não mexo no diretório sites-enabled.

O problema com o SMTP de retransmissão do G Suite continua. Não entendo o motivo. O log de produção do Discourse não menciona nenhum erro.

Discourse doctor:

==================== TESTE DE E-MAIL ====================
Para um teste robusto, obtenha um endereço em http://www.mail-tester.com/
Ou apenas envie uma mensagem de teste para você mesmo.
Endereço de e-mail para o teste? ('n' para pular) [forums@neuronootropic.org]: forums@neuronootropic.org
Enviando e-mail para forums@neuronootropic.org...
Testando o envio para forums@neuronootropic.org usando smtp-relay.gmail.com:587.
======================================== ERRO ========================================
                                    ERRO INESPERADO

fim do arquivo atingido

====================================== SOLUÇÃO =======================================
Este não é um erro comum. Não existe solução recomendada!

Por favor, relate a mensagem de erro exata acima em https://meta.discourse.org/
(E uma solução, se você encontrar uma!)
=======================================================================================

O que isso significa?

Eu, hum… não cliquei em salvar ao configurar o relay no G Suite, lol

O e-mail está funcionando agora. :slight_smile: