Bien que je pense que l’erreur de @kvsf soit déjà corrigie ou que des éléments fondamentaux de votre configuration aient été modifiés, j’aimerais poursuivre cette discussion en publiant ma propre configuration, mon approche supplémentaire et ma demande d’aide dans le même domaine problématique.
Configuration de base
- Google Workspace Business Starter
- Configuration du routage Gmail > Relais SMTP avec i) uniquement les utilisateurs enregistrés du domaine, ii) liste blanche d’adresses IP avec l’IP de mon serveur d’hébergement de forum et authentification SMTP forcée, iii) TLS forcé
- Installation de Discourse Docker conformément à la documentation de Discourse
- Configuration de
app.yml selon
expose:
- "80:80" # http
- "443:443" # https
env:
DISCOURSE_HOSTNAME: "forum.mydomain.com"
DISCOURSE_DEVELOPER_EMAILS: 'dev@mydomain.com'
DISCOURSE_SMTP_ADDRESS: "smtp-relay.gmail.com"
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "user@mydomain.com"
DISCOURSE_SMTP_PASSWORD: "mypass"
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_OPEN_TIMEOUT: 25
DISCOURSE_SMTP_READ_TIMEOUT: 25
DISCOURSE_SMTP_DOMAIN: "mydomain.com"
DISCOURSE_NOTIFICATION_EMAIL: "noreply@mydomain.com"
LETSENCRYPT_ACCOUNT_EMAIL: dev@mydomain.com
Mes tests
Lors de l’exécution de ./discourse-doctor, cette configuration entraîne l’erreur :
Testing sending to ...
SMTP server connection successful.
Sending to artificial.testadress@gmail.com. . .
Sending mail failed.
end of file reached
J’ai ensuite vérifié les différents journaux de Discourse et d’e-mail
En testant manuellement le même processus depuis Docker (en me connectant avec docker exec -it <CONTAINER_ID> bash) via
openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587
cela ne rencontre aucun problème et fonctionne bien. Je pense donc que soit ma configuration de paramètres dans app.yml est étrange, soit Discourse a une mauvaise communication interne de script, soit… tant de possibilités. ^^
Pour ne pas avoir à exécuter ./launcher rebuild app à chaque fois après avoir modifié app.yml pour tester différents paramètres, j’ai commencé à modifier directement /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb en modifiant le code existant pour :
class SMTP
attr_accessor :settings
DEFAULTS = {
:address => 'smtp-relay.gmail.com',
:port => 587,
:domain => 'mydomain.com',
:user_name => 'user@mydomain.com',
:password => 'mypass',
:authentication => 'login',
:enable_starttls => nil,
:enable_starttls_auto => true,
:openssl_verify_mode => 'peer',
:ssl => nil,
:tls => nil,
:open_timeout => 25,
:read_timeout => 25
}
def initialize(values)
self.settings = DEFAULTS #.merge(values)
end
ce qui conduit au même comportement que ci-dessus (étant donné les paramètres personnalisés de app.yml).
Recherche d’aide
Et maintenant, je suis bloqué. Bien sûr, je pourrais jouer davantage avec les paramètres restants (et même revenir à l’utilisation de SSL uniquement, bien que cela soit déprécié par Discourse), mais j’aimerais :
- apprendre comment analyser ce problème plus en profondeur
- comprendre ainsi ce qui se passe réellement et quel est le problème
- le résoudre et pouvoir tout utiliser de manière fluide (+ enfin faire fonctionner le forum correctement)
Merci d’avance pour votre aide.