Problèmes d'envoi des messages

Problèmes d'envoi des messages

par Dominique-Alain Jan,
Nombre de réponses : 14
Avatar Testeurs Avatar Traducteurs

Bonjour à toutes et à tous,

Cette fois-ci je craque et je poste un message pour demander de l'aide sur un problème technique que nous rencontrons depuis quelque temps et pour lequel je n'arrive pas à trouver de solution.

Notre Moodle est 3.5.3 dernière version (régulièrement mis à jour par GIT). PHP 7.0.30 et Apache 2 mis à jour régulièrement sous Ubuntu 18.10.

Tout fonctionnait bien jusqu'au moment où des collègues m'ont signalé que les étudiants ne recevaient plus les email des messages placés dans les forums. Je ne reçois plus non plus les emails de Moodle lorsqu'un enseignant demande une ouverture de cours. Toutefois, les messages passent dans Moodle mobile et dans le module de messagerie interne  à Moodle.

J'ai vérifié le compte SMTP utilisé dans Moodle et je l'ai changé par un autre. Sans résultat.

Lorsque je lance le cron manuellement (\mod_forum\task\cron_task) depuis l'interface « Serveur > Tâches programmées > Envoi des messages de maintenance des forums > Lancer maintenant » j'obtiens l'erreur suivante :


Execute scheduled task: Envoi des messages et maintenance des forums (mod_forum\task\cron_task)
... started 12:38:24. Current memory use 11.2Mo.
... used 5 dbqueries
... used 0.013579130172729 seconds
Scheduled task failed: Envoi des messages et maintenance des forums (mod_forum\task\cron_task),Erreur de programmation détectée. Ceci doit être corrigé par un programmeur : Function cron_setup_user() cannot be used in normal requests!


Après plusieurs recherche dans les moteurs de recherche et sur le site de moodle.org en anglais et français je n'ai pas trouvé de solution. Le problème concernant : 


Function cron_setup_user() cannot be used in normal requests!


est bien référencé dans le tracker mais marqué comme résolu. Ce qui n'est pas le cas chez nous. 

Dans les discussions à ce sujet des propositions de solutions ont été faites que j'ai utilisées, notamment ajouter une ligne au crontab pour lancer en direct la routine et non pas par le moteur cron de Moodle. Sans résultat.

Si quelqu'un a une idée nous permettant de retrouver la fonction mail qui est hyperimportante dans notre système de communication avec les étudiants nous sommes preneur.

Celui ou celle qui vient avec la solution gagne une bouteille de Chasselas suisse.

Au plaisir de vous lire,


PS : si la solution est de passer à la 3.6.1, ce n'est pas possible pour un autre problème que je vais soulever dans un autre message de ce forum

PS2 : je ne sais pas pourquoi j'ai écrit ce message à la deuxième personne du pluriel alors que je suis tout seul à m'occuper du Moodle - besoin de repos peut-être  sourire


Moyenne des évaluations  -
En réponse à Dominique-Alain Jan

Re: Problèmes d'envoi des messages

par Anne Garnavault Remy,

Bonjour Dominique Alain, 

As tu vérifé 

  • que tu n'as pas  plusieurs instances de cron lancées (un lock qui ne fonctionne pas)
  • mis ton mode debug config.php $CFG->showcrondebugging = true; et $CFG->showcronsql = true;, histoire de voir plus de messages d'erreur puis relancé manuellement le cron général .

Pour Function cron_setup_user() cannot be used in normal requests! , comme tu le lances via la ligne de commande, il faut désactiver avant dans l'interface de moodle ( admin/tool/task/scheduledtasks.php?action=edit&task=mod_forum%5Ctask%5Ccron_task) 


Je te répond parce que  je suis toujours intéressée par une bouteille de Chasselat clin d’œil


Moyenne des évaluations Utile (1)
En réponse à Anne Garnavault Remy

Re: Problèmes d'envoi des messages

par Bruno Malaval,
Avatar Moodleurs particulièrement utiles

bonjour,

Je me souviens avoir déjà vu cette erreur, et c'était ici :

https://moodle.org/mod/forum/discuss.php?d=360258

Globalement 2 pistes :

  • il est possible qu'une autre tâche non terminée bloque d'autres tâches
  • ou suite à un problème d’exécution du cron, un enregistrement "lock" non supprimé dans la table mdl_task_adhoc
Bruno
En réponse à Bruno Malaval

Re: Problèmes d'envoi des messages

par Dominique-Alain Jan,
Avatar Testeurs Avatar Traducteurs

Hello Bruno,

J'avais effectivement lu ce flux de forum la semaine dernière car son contenu "rings a bell".

J'ai regardé  à nouveau dans la base de donnée et une requête

SELECT * FROM `mdl_task_adhocWHERE `blocking` != '0' 

ne retourne aucun enregistrement, donc pas de tâche bloquée apparemment.


Je continue de chercher.

-dajan


En réponse à Anne Garnavault Remy

Re: Problèmes d'envoi des messages

par Dominique-Alain Jan,
Avatar Testeurs Avatar Traducteurs

Hello Anne,

J'ai bien vérifié que je n'avais qu'un appel du cron principal dan le crontab -e -u www:data.

Je ne lance pas la tâche manuellement en ligne de commandes mais par l'interface de Moodle dans la partie tâche programmée, comme indiqué dans mon précédent message.

J'ai activé les deux commandes de cfg dans mon config.php et j'obtiens le résultat ci-dessous :

Execute scheduled task: Envoi des messages et maintenance des forums (mod_forum\task\cron_task)
... started 17:12:36. Current memory use 11.1Mo.
Coding problem: $PAGE->context was not set. You may have forgotten to call require_login() or $PAGE->set_context(). The page may not display correctly as a result
  • line 493 of /lib/pagelib.php: call to debugging()
  • line 1544 of /lib/pagelib.php: call to moodle_page->magic_get_context()
  • line 677 of /lib/pagelib.php: call to moodle_page->initialise_theme_and_output()
  • line 864 of /lib/pagelib.php: call to moodle_page->magic_get_theme()
  • line 466 of /mod/forum/lib.php: call to moodle_page->get_renderer()
  • line 45 of /mod/forum/classes/task/cron_task.php: call to forum_cron()
  • line 105 of /lib/cronlib.php: call to mod_forum\task\cron_task->execute()
  • line 297 of /lib/cronlib.php: call to cron_run_inner_scheduled_task()
  • line 91 of /admin/tool/task/schedule_task.php: call to cron_run_single_task()

SELECT name,value FROM mdl_user_preferences WHERE userid = ? [array ( 0 => '2', )]
Query took: 0.0015509128570557 seconds.

SELECT f.filter, fc.name, fc.value FROM mdl_filter_active f LEFT JOIN mdl_filter_config fc ON fc.filter = f.filter AND fc.contextid = f.contextid WHERE f.contextid = ? AND f.active != ? ORDER BY f.sortorder [array ( 0 => 1, 1 => -9999, )]
Query took: 0.00086688995361328 seconds.

SELECT id, userid, forum, maildigest FROM mdl_forum_digests [array ( )]
Query took: 0.0010178089141846 seconds.

SELECT * FROM mdl_messageinbound_handlers WHERE classname = ? [array ( 0 => '\\mod_forum\\message\\inbound\\reply_handler', )]
Query took: 0.001162052154541 seconds.

SELECT p.*, d.course, d.forum FROM mdl_forum_posts p JOIN mdl_forum_discussions d ON d.id = p.discussion WHERE p.mailed = ? AND (p.created >= ? OR d.timestart >= ?) AND (p.created < ? OR p.mailnow = ?) AND (d.timestart < ? AND (d.timeend = 0 OR d.timeend > ?)) ORDER BY p.modified ASC [array ( 0 => 0, 1 => 1544543856, 2 => 1544543856, 3 => 1544716656, 4 => 1, 5 => 1544717556, 6 => 1544717556, )]
Query took: 0.0014431476593018 seconds.
... used 5 dbqueries ... used 0.018113136291504 seconds Scheduled task failed: Envoi des messages et maintenance des forums (mod_forum\task\cron_task),Erreur de programmation détectée. Ceci doit être corrigé par un programmeur : Function cron_setup_user() cannot be used in normal requests! Backtrace: * line 918 of /mod/forum/lib.php: call to cron_setup_user() * line 45 of /mod/forum/classes/task/cron_task.php: call to forum_cron() * line 105 of /lib/cronlib.php: call to mod_forum\task\cron_task->execute() * line 297 of /lib/cronlib.php: call to cron_run_inner_scheduled_task() * line 91 of /admin/tool/task/schedule_task.php: call to cron_run_single_task()
SELECT * FROM mdl_task_scheduled WHERE classname = ? [array ( 0 => '\\mod_forum\\task\\cron_task', )]
Query took: 0.00083804130554199 seconds.

UPDATE mdl_task_scheduled SET component = ?,classname = ?,lastruntime = ?,nextruntime = ?,blocking = ?,minute = ?,hour = ?,day = ?,month = ?,dayofweek = ?,faildelay = ?,customised = ?,disabled = ? WHERE id=? [array ( 0 => 'mod_forum', 1 => '\\mod_forum\\task\\cron_task', 2 => '1544717521', 3 => 1544717616, 4 => '0', 5 => '*', 6 => '*', 7 => '*', 8 => '*', 9 => '*', 10 => 60, 11 => '0', 12 => '0', 13 => '353', )]
Query took: 0.002140998840332 seconds.
En réponse à Dominique-Alain Jan

Re: Problèmes d'envoi des messages

par Bruno Malaval,
Avatar Moodleurs particulièrement utiles

Concernant les tâches programmées, il y a quelques modifications avec la 3.6

le bug  [MDL-60514] signalé par Nicolas a induit un autre problème cité ici [MDL-64318]
Ce n'est pas un bug mais un point des releases notes pas toujours lues ..
Le lien "Lancez maintenant" n'apparaît plus par défaut dans la liste des tâches programmées (uniquement à partird de Moodle 3.6)

Il faut maintenant renseigner explicitement le chemin de l’exécutable php dans Administration du site / serveur / chemins sytème

exemple : /usr/bin/php


Sinon concernant le problème des posts, il est peut-être possible de cibler le changement.
Tu parles de mises à jour régulière de Moodle et du système, et les messages des forums n'arrivent plus depuis quelques temps

En regardant dans la table mdl_forum_posts, tu devrais trouver les posts non envoyés ( champ mailed à 1 => envoyé , 0 => non envoyé )

Si tu as de tels enregistrements, tu devrais pouvoir trouver le plus ancien "non envoyé" avec les timestamps

Cela peut cibler le changement.


Et, éventuellement, tester si le problème ne viendrait pas d'un post/forum.
Par exemple, mettre le plus ancien non envoyé à envoyé ( mailed 0 => 1 )

Au cas où le problème serait dans le forum en lui-même

J'ai déjà fait l'opération inverse (remettre le champ mailed à 0) pour relancer le post d'un forum
Il repart avec la date et heure d'origine

Je me demande d'ailleurs si le HQ Moodle n'a pas été confronté à ce problème.
D'autres ont du le remarquer, il y a qq jours, le site Moodle.org a été en maintenance.
Une fois revenu, les mails des posts ne me parvenait plus.
Je les ai tous reçus en même temps,le lendemain je crois .. peut-être un problème similaire au tien

Bruno

Moyenne des évaluations Utile (1)
En réponse à Bruno Malaval

Re: Problèmes d'envoi des messages

par Dominique-Alain Jan,
Avatar Testeurs Avatar Traducteurs

Hello Bruno,

J'ai été regardé dans les tables et tous messages sont avec mailed = 1. Même les derniers écrits. J'ai remis le dernier message d'un forum à mailed = 0 pour voir et après le cron mailed devient 1 mais le message n'arrivent pas dans les bàl des utilisateurs.

Ceci a été testé avec un nouveau cours bidon que j'ai créé et 10 teachers et 10 students avec pour chacun un compte mail sur une messagerie externe. Rien n'arrive mais Moodle met bien les messages à mailed = 1.

Je cherche toujours...

Merci pour l'aide déjà accordée jusque là.

A+

-dajan

En réponse à Dominique-Alain Jan

Re: Problèmes d'envoi des messages

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

C'est pas ce bogue: MDL-60514 ? ou plutôt ça: MDL-63706, puisque tu es sous 3.5.x ?

(Je gagne la bouteille ?)

En réponse à Nicolas Martignoni

Re: Problèmes d'envoi des messages

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Rââââââ ! Je le crois pas ! J'allais proposer au moins MDL-60514 œil au beurre noir Bon j'avais pas connaissance de l'autre...

Flute !

C'est dingue ce que ce fil de discussion motive la communauté ?!! Je sais pas à quoi c'est dû ?!??

... je pense que c'est parce que la communauté apprécie l’œuvre de DAJ... Ça ne peut pas être parce qu'il y aurait une récompense à la clé incertain grand sourire

Patrick

En réponse à Patrick Lemaire

Re: Problèmes d'envoi des messages

par Dominique-Alain Jan,
Avatar Testeurs Avatar Traducteurs

Hello Patrick,

Je pense que la récompense est la seule explication. Qui résisterait à une bouteille de Chasselas. 

Quoi que pour moi et mon problème actuelle c'est plutôt du Chasse-spleen que je suis entrain de boire... jusqu'à la lie.

A+

-dajan

En réponse à Nicolas Martignoni

Re: Problèmes d'envoi des messages

par Dominique-Alain Jan,
Avatar Testeurs Avatar Traducteurs

Hello Nicolas,

Non la bouteille reste au frais pour l'instant.

Les bogues que tu mentionnes n'expliquent pas pourquoi les mails n'arrivent pas ou ne partent pas de Moodle.

To be continued…

-dajan

En réponse à Dominique-Alain Jan

Re: Problèmes d'envoi des messages

par Bruno Malaval,
Avatar Moodleurs particulièrement utiles

hello,

Je commence par une question bête mais est-ce-que cela concerne uniquement les forums ?
c-à-d les autres mails sont-ils bien envoyés ? (notification devoir, auto-enregistrement courriel, etc ..)

Il y a un moyen de tester si le processus de mise en forme et envoi des mails fonctionne :

Dans {moodle}/admin , il y a le fichier mailout-debugger.php

Les instructions pour l'utiliser sont dedans.

Globalement il s'agit d'indiquer à php d'utiliser ce fichier au lieu du classique sendmail.
Et faire un essai avec un forum.
Attention, pendant la période de test, les mails ne seront pas envoyés, ils vont atterrir dans un fichier texte.

Cela permet de savoir si tout se passe bien ou non jusqu'à l'envoi du mail.

Pour que cela fonctionne, il faut modifier la configuration de moodle si besoin
en supprimant l'hôte SMTP s'il y en a un (dans la configuration du mail sortant)
Sinon les mails partiront vers l'hote et non vers le fichier mailout-debugger.php

Et si possible faire le test à un moment ou il n'y a pas une grande utilisation de la plateforme

Bruno


Moyenne des évaluations Utile (2)
En réponse à Dominique-Alain Jan

Re: Problèmes d'envoi des messages

par philippe petitqueux,
Avatar Traducteurs

Bonjour 

Est ce que ton serveur envoie des mails sur d’autres plateformes ? Genre un WordPress ?

Que dit le déboggage des courriels à partir de Moodle?

Il y avait un plugin pour tester les mails sur Moodle.

As tu vérifié le queue mail de ton serveur s’il netait pas plein ?

Moodle peut te dire que les courriels sont partis mais ils restent bloqués sur ton serveur.

As tu fait une mise à jour de ton serveur à la date du blocage ?

Il y a une règle spf pour ton compte mail?

Phil 

En réponse à Dominique-Alain Jan

Re: Problèmes d'envoi des messages

par Dominique-Alain Jan,
Avatar Testeurs Avatar Traducteurs

Merci pour vos différentes propositions qui ont poussé mes recherches dans différentes directions.

Le problème a été trouvé et a été résolu. Donc on peut marqué cette suite de message comme [résolu].

L'origine du problème – ou devrais-je dire les origines du problèmes – est multiple.


  1. Suite à des problèmes de spam sur le service officiel dans l'éducation en Suisse – Educanet2 – l'Etat de Vaud nous avait demandé d'utiliser leur service smtp pour l'envoi des messages. Ceci il y a plusieurs années de cela. Toutefois en contrôlant l'activité du service force de constater que l'adresse donnée n'existe plus ! Bien sûr personne ne nous avait informé de ce fait. La correction a été faite en renseignant un serveur smtp qui marche !
  2. En voulant passer en 3.6, ce qui plantait avec une erreur 500 après que ce soit passé apparemment sans erreurs, j'ai créé un nouveau clone git de moodle après avoir renommé l'ancien dossier. J'ai transféré le config.php que j'avais entièrement réécrit dans BBEdit suite à la lecture d'un message sur moodle.org en anglais qui signalait que des caractères invisibles pouvaient être la cause de l'erreur 500. Le script upgrade.php a retourné alors des erreurs lors de la mise à jour de la base de données de 3.5 à 3.6.1 mettant en cause le plugin "Telegram" que m'avait demandé d'installer un collègue l'année dernière. Jusqu'alors je n'avais eu aucun problème de passer de 3.4 à 3.5 et lors des mises à jour incrémentales chaque quinzaine. J'ai, de manière préventive retiré tous les plugins tiers de mon installation.
  3. L'adresse d'envoi des messages depuis Moodle est une adresse créée par nous sur Educanet2. En accédant à celle-ci – ce qu'on ne fait pas puisqu'elle s'appelle "noreply@...", donc on n'y répond pas! – j'ai constaté que la boîte était pleine ce qui faisait un bounce back des message entrain – les stroumpfs qui répondaient quand mêmes aux messages de "noreply@" et les messages de gestion d'Educanet2. La boîte a été vidée et les règles de gestion des mails entrant reconfigurées.

Désormais, sans les plugins tiers, la mise à jour se passe sans accrocs et le site est "up and running". Les messages ont été testés dans plusieurs forums et les messages partent bel et bien vers les messageries électroniques. 

C'est donc réglé !

Certains plugins sont réintroduits l'un après l'autre mais pas Telegram qui est de toute manière marqué comme compatible avec Moodle 3.2 et 3.3 et non avec les versions actuelles.

Leçon apprise : t'a beau mettre à jour ton Moodle depuis des années sans problèmes avec des plugins, quand ceux-ci sont pas compatibles avec ta version actuelle tu prends le risque que ça foire !

Et comme le conseillerait Nicolas Martignoni un Moodle avec des plugins tiers prend le risque d'être mis en bière.

Allez merci à toutes et tous pour vos aides et très heureux de vous offrir un coup lors du prochain Moot.

Bonne fin d'ânnée 2019 !

-dajan

Moyenne des évaluations Utile (1)
En réponse à Dominique-Alain Jan

Re: Problèmes d'envoi des messages

par philippe petitqueux,
Avatar Traducteurs

Bien, 

Comme ça tu commences l’année positivement.

Quand à la bouteille, je te propose de l’envoyer quand tu veux à Rouen. Je passerai la bouteille vide à Patrice Lemaire qui pourra la transmettre à Anne ensuite.

Philippe