Google G Suite Relay SMTP ne fonctionne pas

Bonjour, j’essaie d’installer Discourse pour la première fois sur un VPS Linux chez DigitalOcean. Ce VPS héberge plusieurs sites via Nginx et j’ai suivi le tutoriel expliquant comment installer Discourse sur plusieurs sites ici : Run other websites on the same machine as Discourse - #182 by angus

Discourse s’est installé et a fonctionné correctement. Cependant, lorsque je crée un compte administrateur, je ne reçois jamais l’e-mail. J’ai suivi ce tutoriel : crunchify[dot]com/how-to-setup-email-for-discourse-forum-with-google-apps-smtp-relay-right-way/

Mon serveur utilise Postfix pour relayer les e-mails vers Google G Suite et cela fonctionne parfaitement avec WordPress et MyBB. Toutefois, le tutoriel mentionné ci-dessus ne fait pas référence à Postfix et je suppose qu’il se connecte directement à Google G Suite.

J’ai suivi ce guide pour dépanner les problèmes d’e-mail : meta.discourse[dot]org/t/troubleshooting-email-on-a-new-discourse-install/16326

Je peux me connecter au relais SMTP via telnet :

$ 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

Le journal de production indique :

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

J’ai essayé de définir l’adresse e-mail dans le fichier de configuration app.yml sur noreply@forums.neuronootropic.org car je sais que cette adresse fonctionne, mais le problème persiste. Les e-mails sont toujours envoyés avec ces numéros, je suppose qu’il s’agit d’un type de cryptage ? Ils n’arrivent jamais dans ma boîte de réception.


Mon autre problème concerne Nginx. Tout fonctionnait parfaitement hier, mais aujourd’hui, j’ai modifié le fichier de configuration app.yml en définissant l’URL comme un sous-répertoire au lieu d’un sous-domaine.

Je voulais simplement vérifier si le sous-domaine était peut-être la cause du problème d’envoi d’e-mails, car mon forum actuel, MyBB, fonctionne dans un sous-répertoire et n’a aucun problème d’e-mail.

Cette modification semble avoir cassé Nginx. Pour une raison quelconque, Nginx tente maintenant de charger un certificat SSL depuis le répertoire Discourse, même si cela n’est pas spécifié dans mon fichier de configuration Nginx. Voici l’erreur :

$ 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

J’utilise Let’s Encrypt pour le certificat SSL et cela fonctionne parfaitement. Nginx n’avait aucun problème hier avant que j’essaie d’exécuter Discourse dans un sous-répertoire au lieu d’un sous-domaine.

Toute aide serait appréciée.

Je n’ai pas réellement configuré le relais G-Suite pour les e-mails, mais il semble que vous deviez ajouter et vérifier forum.neuronootropic.org en tant que domaine d’envoi dans votre compte d’administration G-Suite. Si c’est le cas, étant donné la documentation de Google, il n’y a aucune raison que cela ne fonctionne pas.

Cependant, si vous avez vérifié neuronootr0pic.org sur G-Suite, vous pourriez utiliser quelque chose comme noreply_forum@neuronootropic.org pour envoyer des e-mails.

Merci pour la suggestion.

J’ai fait un retour en arrière et testé l’adresse e-mail. Il s’avère qu’elle peut uniquement recevoir des messages, mais pas en envoyer depuis l’adresse noreply@forums.neuronootropic.org. J’avais configuré ce sous-domaine comme domaine distinct dans G Suite, en pensant que les enregistrements MX du domaine principal suffiraient pour les deux.

Ce n’était pas le cas. J’ai ajouté des enregistrements MX pour forums.neuronootropic.org et maintenant je peux envoyer et recevoir des e-mails.

Cependant, Discourse n’envoie toujours pas d’e-mail d’activation lors de l’inscription d’un administrateur.

Des idées ?

Par ailleurs, je ne sais pas pourquoi nginx tente de charger un certificat SSL depuis le répertoire de Discourse alors que je ne l’ai jamais spécifié. Des suggestions sur la manière d’aborder ce problème ?

Édition : J’ai modifié le paramètre « e-mail de notification » pour envoyer les e-mails depuis le domaine principal au lieu du sous-domaine. J’ai reconstruit Discourse, mais il continue d’envoyer des e-mails depuis le sous-domaine.

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

J’ai résolu le problème avec nginx. Il s’avère qu’il y avait un fichier de sauvegarde de la configuration nginx dans le répertoire sites-enabled. Je ne sais pas comment il s’y est retrouvé, car je fais des liens symboliques des fichiers de sites-available vers sites-enabled et je ne touche pas au répertoire sites-enabled.

Le problème avec le relais SMTP de G Suite persiste. Je ne comprends pas pourquoi. Le journal de production de Discourse ne mentionne aucune erreur.

Discourse doctor :

==================== TEST DE COURRIEL ====================
Pour un test robuste, obtenez une adresse sur http://www.mail-tester.com/
Ou envoyez simplement un message de test à vous-même.
Adresse e-mail pour le test de courrier ? ('n' pour sauter) [forums@neuronootropic.org] : forums@neuronootropic.org
Envoi du courrier à forums@neuronootropic.org . . .
Test de l'envoi vers forums@neuronootropic.org en utilisant smtp-relay.gmail.com:587.
======================================== ERREUR ========================================
                                    ERREUR INATTENDUE

fin de fichier atteinte

====================================== SOLUTION =======================================
Ce n'est pas une erreur courante. Aucune solution recommandée n'existe !

Veuillez signaler le message d'erreur exact ci-dessus à https://meta.discourse.org/
(Et une solution, si vous en trouvez une !)
=======================================================================================

Que signifie cela ?

Euh… j’ai oublié de cliquer sur Enregistrer lors de la configuration du relais dans G Suite, lol

La messagerie fonctionne maintenant. :slight_smile: