Échec du test de mail dans discourse-doctor

J’essaie de résoudre les problèmes SMTP en utilisant ./discourse-doctor

Le problème le plus proche que j’ai pu trouver est Yet other SMTP 587 port email various errors.
Avant de mettre en œuvre les suggestions, j’ai obtenu un délai d’attente constant.

Après configuration :

DISCOURSE_SMTP_FORCE_TLS: true
DISCOURSE_SMTP_ENABLE_START_TLS: false

J’obtiens ceci de discourse-doctor :

==================== MAIL TEST ====================
Pour un test robuste, obtenez une adresse sur http://www.mail-tester.com/
Ou envoyez simplement un message test à vous-même.
Adresse e-mail pour le test de messagerie ? ('n' pour ignorer) [admin@burlyqna.org]:
Envoi d'un message à admin@burlyqna.org. . .
Test d'envoi à admin@burlyqna.org en utilisant smtp.mailfence.com:465, nom d'utilisateur:philion@mailfence.com avec authentification plain.
Connexion au serveur SMTP réussie.
Envoi à admin@burlyqna.org. . .
Échec de l'envoi du message.
fin de fichier atteinte

Voir : http://talk.burlyqna.org/NjdhMDAwYTk4NmM3MmM1.txt

Je suis capable de valider la configuration du serveur SMTP en externe avec :

swaks --to philion@gmail.com --from admin@burlyqna.org --server smtp.mailfence.com:465 --auth LOGIN --tlsc --auth-user philion@mailfence.com

Des indices sur la façon dont Connexion au serveur SMTP réussie. mais Échec de l'envoi du message. ?

Merci beaucoup,
Paul

1 « J'aime »

Pour TLS, vous devriez utiliser le port 587 ?

J’essaierais d’ajouter puts error.backtrace (ou similaire) après

et de réexécuter discourse-doctor.

1 « J'aime »

C’est ce que notre répondeur automatique a trouvé, je pense qu’essayer le domaine smtp vaut probablement la peine.

1 « J'aime »

Thomas,

Il y a beaucoup de discussions sur le port 465 dans les forums de support. D’après ma lecture, il semble que Discourse fasse beaucoup d’hypothèses sur le SSL et le TLS sur SMTP, et qu’il existe un certain nombre de variables d’environnement qui contrôlent les comportements détaillés.

Cependant, compte tenu du nombre d’erreurs signalées et de questions connexes dans ces forums, j’ai la forte impression que ces paramètres sont mal documentés et difficiles à utiliser. Et en voyant des problèmes similaires remonter à 2017, cela fait des années que c’est un problème.

Les recherches sur « port 465 » ou « Net::ReadTimeout smtp » peuvent révéler une longue liste de problèmes similaires.

Je vais essayer ça. Merci !

Thomas,

J’essaie de trouver ce fichier dans la construction Docker, et je n’y arrive pas. Je vois qu’il est encapsulé dans un conteneur, mais j’ai cloné discourse/discourse_docker et non discourse/discourse.

Lorsque j’essaie d’entrer dans l’application avec launcher enter app, il n’y a aucun moyen de modifier ce fichier ou d’installer vi.

Je ne trouve aucune documentation ou option pour exécuter ./discourse-doctor avec les journaux de débogage activés.

Échoue de la même manière : Impossible d’envoyer d’e-mail, ./discourse-doctor signale la même erreur.

J’ai mis à jour app.yml comme suggéré, j’ai reconstruit l’application (pas d’e-mail), j’ai essayé ./discourse-doctor et j’ai obtenu le même message d’erreur.

./launcher enter  app
sudo apt update && sudo apt install neovim -y

devrait aider.

Merci ! Je deviens un peu vieux quand je ne peux pas faire « sudo apt install vi ». Je dois me souvenir que ça s’appelle maintenant neovim.

Compte tenu de la modification suggérée pour vider la trace de la pile, je propose : http://talk.burlyqna.org/ODgyZjg5Y2QyMTU1ZmEx.txt

L’extrait pertinent :

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:237:in `rbuf_fill'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:209:in `readline'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1017:in `recv_response'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1008:in `block in getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1027:in `critical'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1006:in `getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:986:in `quit'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:732:in `do_finish'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `ensure in start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:269:in `deliver!'
/usr/local/lib/ruby/3.3.0/delegate.rb:87:in `method_missing'
/var/www/discourse/lib/email/sender.rb:296:in `send'

Il semble que l’autre partie ait mis fin à la connexion.

Au fait : http://talk.burlyqna.org/NjdhMDAwYTk4NmM3MmM1.txt n’est plus disponible

1 « J'aime »

Ces fichiers journaux sont-ils conservés lorsque je reconstruis ?

J’ai mis à jour les mots de passe pour supprimer les symboles, j’ai attendu le délai de propagation de l’authentification SMTP (assez longtemps pour faire le déjeuner), j’ai confirmé les identifiants corrects pour envoyer correctement un e-mail avec swaks, et…

Même erreur.

Je remarque que la reconstruction supprime le vidage de la trace de la pile, je vais donc la rajouter et essayer ./launcher destroy app && ./launcher start app

1 « J'aime »

Trace de débogage installé, exécution du docteur :
http://talk.burlyqna.org/NWQ5MjBlMTIwN2JiNGNl.txt

==================== TEST D'EMAIL ====================
Pour un test robuste, obtenez une adresse sur http://www.mail-tester.com/
Ou envoyez-vous simplement un message de test.
Adresse e-mail pour le test d'e-mail ? ('n' pour ignorer) [admin@burlyqna.org]:
Envoi d'un e-mail à admin@burlyqna.org. . .
Test d'envoi à admin@burlyqna.org en utilisant smtp.mailfence.com:465, nom d'utilisateur : philion avec authentification simple.
Connexion au serveur SMTP réussie.
Envoi à admin@burlyqna.org. . .
Échec de l'envoi de l'e-mail.
fin de fichier atteinte
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:237:in `rbuf_fill'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:209:in `readline'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1017:in `recv_response'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1008:in `block in getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1027:in `critical'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1006:in `getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:986:in `quit'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:732:in `do_finish'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `ensure in start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:269:in `deliver!'

Avez-vous essayé d’utiliser votre adresse e-mail complète comme nom d’utilisateur ?

Mis à jour app.yml pour utiliser l’e-mail complet comme utilisateur, redéployé avec ./launcher destroy app && ./launcher start app.

Même erreur : http://talk.burlyqna.org/ZDg1YWE1YTA2YWU1Zjhj.txt

Détruire et démarrer a également effacé le débogage, mais je vais supposer que le problème est le même :

case rv = @io.read_nonblock(BUFSIZE, tmp, exception: false)

renvoie un nil, et cela entraîne une réponse EOF et non/erreur.

Après de nombreux tests, et avec l’aide de @thoka, voici un résumé :

Je suis capable d’exécuter des tests SMTP en utilisant les mêmes identifiants que ceux fournis dans container/app.yml, qui fonctionnent à la fois avec swaks (Swaks - Swiss Army Knife for SMTP) et un exemple de code Ruby fourni par @thoka (voir ci-dessous).

Cela fonctionne de manière cohérente. Cependant, tenter de mettre en place un serveur Discourse (qui ne peut pas envoyer l’e-mail initial à l’utilisateur administrateur) ou utiliser le bot discourse-doctor entraîne des échecs d’e-mail :

==================== 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 courriel ? ('n' pour ignorer) [admin@burlyqna.org]:
Envoi du courriel à admin@burlyqna.org. . .
Test d'envoi à admin@burlyqna.org en utilisant smtp.mailfence.com:465, nom d'utilisateur : xxx@mailfence.com avec authentification simple.
Connexion au serveur SMTP réussie.
Envoi à admin@burlyqna.org. . .
Échec de l'envoi du courriel.
fin du fichier atteinte

Cela semble être un échec de configuration du protocole, car je suis capable d’envoyer des e-mails de test en utilisant des outils Ruby standards :

require 'mail'

SMTP_SERVER = 'smtp.mailfence.com'
SMTP_PORT = 465
USERNAME = 'xyz'
PASSWORD = '...'

FROM = 'admin@burlyqna.org'
TO = 'testing@gmail.com'
SUBJECT = 'Test depuis Ruby'

BODY = "Bonjour,\n\nCeci est un e-mail de test envoyé depuis Ruby via une connexion sécurisée SSL.\n\nCordialement !"

Mail.defaults do
  delivery_method :smtp, {
    address: SMTP_SERVER,
    port: SMTP_PORT,
    user_name: USERNAME,
    password: PASSWORD,
    domain: "burlyqna.org",
    enable_starttls_auto: :false,
    authentication: :plain,
    ssl: true,
  }
end

begin
  puts 'Envoi de l\'e-mail...'
  puts "SMTP_SERVER : #{SMTP_SERVER}"
  puts "SMTP_PORT : #{SMTP_PORT}"
  puts "USERNAME : #{USERNAME}"
  puts "PASSWORD : #{PASSWORD}"
  puts "FROM : #{FROM}"
  puts "TO : #{TO}"

  mail = Mail.new do
    to TO
    from FROM
    subject SUBJECT
    body BODY
  end

  mail.deliver!
end

Les paramètres SMTP actuels dans mon app.yml sont :

DISCOURSE_SMTP_ADDRESS: smtp.mailfence.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: xxx@mailfence.com
DISCOURSE_SMTP_PASSWORD: '...'
DISCOURSE_SMTP_FORCE_TLS: true                   # https://meta.discourse.org/t/cannot-send-email-problem-with-port-465/246004/8
DISCOURSE_SMTP_ENABLE_START_TLS: false           # (optionnel, par défaut true)
DISCOURSE_SMTP_DOMAIN: burlyqna.org              # (requis par certains fournisseurs)
DISCOURSE_NOTIFICATION_EMAIL: noreply@talk.burlyqna.org
1 « J'aime »

Dernier suivi : l’e-mail fonctionne !

Les problèmes que j’ai rencontrés en cours de route :

  • DISCOURSE_SMTP_PASSWORD contenait des symboles mais n’était pas entre guillemets
  • DISCOURSE_SMTP_FORCE_TLS : true pour activer le SSL
  • DISCOURSE_SMTP_ENABLE_START_TLS : false pour arrêter la négociation TLS
  • DISCOURSE_NOTIFICATION_EMAIL défini sur une adresse e-mail inexistante
DISCOURSE_SMTP_ADDRESS: smtp.mailfence.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: example@mailfence.com
DISCOURSE_SMTP_PASSWORD: 'passwd'
DISCOURSE_SMTP_FORCE_TLS: true                  
DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_NOTIFICATION_EMAIL: admin@example.org
1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.