Google G Suite Relay SMTP non funziona

Ciao, sto cercando di installare Discourse per la prima volta su un VPS Linux di DigitalOcean. Questo VPS ospita più siti su Nginx e ho seguito la guida su come installare Discourse con più siti qui: Run other websites on the same machine as Discourse - #182 by angus

Discourse si è installato e avviato correttamente. Tuttavia, quando creo un account amministratore, non ricevo mai l’email. Ho seguito questa guida: crunchify[dot]com/how-to-setup-email-for-discourse-forum-with-google-apps-smtp-relay-right-way/

Il mio server utilizza Postfix per inoltrare le email a Google G Suite e funziona correttamente con WordPress e MyBB. Tuttavia, la guida sopra non menziona Postfix e presumo che si colleghi direttamente a Google G Suite.

Ho seguito questa guida su come risolvere i problemi relativi alle email: meta.discourse[dot]org/t/troubleshooting-email-on-a-new-discourse-install/16326

Posso fare il 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

Il log di produzione riporta:

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

Ho provato a impostare l’email nel file di configurazione app.yml su noreply@forums.neuronootropic.org perché so che quell’indirizzo funziona, ma il risultato è lo stesso. Le email vengono comunque inviate con quei numeri; presumo sia una sorta di crittografia? Non arrivano mai nella mia casella di posta.


Il mio altro problema riguarda Nginx. Funzionava perfettamente fino a ieri, ma oggi ho modificato il file di configurazione app.yml impostando l’URL come una sottodirectory invece che come sottodominio.

Volevo solo verificare se forse il sottodominio stesse causando il problema delle email non funzionanti, dato che il mio forum attuale, MyBB, gira in una sottodirectory e non ha problemi con le email.

Questa operazione sembra aver rotto Nginx. Per qualche motivo, Nginx ora tenta di caricare un certificato SSL dalla directory di Discourse, anche se non è specificato nel mio file di configurazione di Nginx. Ecco l’errore:

$ 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

Sto utilizzando Let’s Encrypt per il certificato SSL e funziona correttamente. Ieri, prima di provare a eseguire Discourse in una sottodirectory invece che come sottodominio, Nginx non aveva alcun problema.

Qualsiasi aiuto sarebbe apprezzato.

In realtà non ho configurato il relay G-Suite per la posta elettronica, ma sembra che tu debba aggiungere e verificare forum.neuronootropic.org come dominio di invio nel tuo account di amministrazione G-Suite. Se è così, in base alla documentazione di Google, non c’è alcun motivo per cui non dovrebbe funzionare.

Tuttavia, se hai verificato neuronootr0pic.org su G-Suite, potresti utilizzare qualcosa come noreply_forum@neuronootropic.org per inviare email.

Grazie per il suggerimento.

Ho fatto un passo indietro e testato l’email. Si è scoperto che può solo ricevere, ma non inviare dall’indirizzo noreply@forums.neuronootropic.org. L’ho configurato come dominio separato in G Suite, pensando che i record MX del dominio principale fossero sufficienti per entrambi.

Non è stato così. Ho aggiunto i record MX per forums.neuronootropic.org e ora posso inviare e ricevere email.

Tuttavia, Discourse non invia ancora un’email di attivazione dopo la registrazione di un amministratore.

Qualche idea?

Inoltre, non sono sicuro del motivo per cui nginx sta cercando di caricare un certificato SSL dalla directory di Discourse, anche se non l’ho mai specificato. Avete suggerimenti su come affrontare questo problema?

Modifica: Ho cambiato l’impostazione “email di notifica” per inviare le email dal dominio principale invece che dal sottodominio. Ho ricompilato Discourse, ma continua a inviare email dal sottodominio.

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

Ho risolto il problema con nginx. A quanto pare, c’era un file di salvataggio della configurazione di nginx nella directory sites-enabled. Non so come sia finito lì, dato che creo i collegamenti simbolici dai file in sites-available a sites-enabled e non tocco mai la directory sites-enabled.

Il problema con G Suite Relay SMTP persiste. Non capisco il motivo. Il log di produzione di Discourse non riporta errori.

Discourse doctor:

==================== TEST MAIL ====================
Per un test affidabile, ottieni un indirizzo da http://www.mail-tester.com/
Oppure invia semplicemente un messaggio di prova a te stesso.
Indirizzo email per il test della posta? ('n' per saltare) [forums@neuronootropic.org]: forums@neuronootropic.org
Invio della posta a forums@neuronootropic.org. . .
Test dell'invio a forums@neuronootropic.org utilizzando smtp-relay.gmail.com:587.
======================================== ERRORE ========================================
                                    ERRORE INASPETTATO

fine del file raggiunta

====================================== SOLUZIONE =======================================
Questo non è un errore comune. Non esiste una soluzione consigliata!

Si prega di segnalare il messaggio di errore esatto sopra a https://meta.discourse.org/
(E una soluzione, se ne trovi una!)
=======================================================================================

Cosa significa questo?

Io, eh… non ho cliccato su Salva quando ho configurato il relay in G Suite, lol

La posta elettronica funziona ora. :slight_smile: