Retour : Page Principale > sommaire aide > sommaire aide-mémos

Surcharge d'emails avec Moodle / exim4


SymptĂŽmes et causes

Parfois on observe un gros pic d'emails, sur Muin par exemple. Cela est dû en général à quelques causes précises :
  • un message est postĂ© dans le "forum des nouvelles" du Mooc, ce qui envoie un email Ă  tout le monde (c'est normal, Ă  ne pas faire plus d'une fois par semaine)
  • des utilisateurs s'abonnent aux forums ou aux discussions des forums (devrait ĂȘtre Ă©vitĂ©)

VĂ©rifier la file

Le graphique exim mailqueue de Munin donne un bon aperçu de ce qui se passe.

Sinon, se connecter en SSH sur le serveur et utiliser mailq en root. Cette commande retourne 3 lignes par message, on peut avoir une idée du nombre de messages en faisant un
mailq | wc -l
et en divisant par 3.
Note: trouver une option de mailq qui ne renvoie qu'un message par ligne.

Supprimer tous les messages contenant certains mots

Par exemple, les messages générés par l'abonnement à une discussion d'un forum.
Voir AideExim.

ArrĂȘter le service d'emails en cas d'urgence

service exim4 stop
ps aux | grep exim

Ben oui mais ça marche pas :( des processus exim4 continuent à réapparaßtre...

/etc/init.d/exim4 force-stop
killall -9 exim4

A marche pas non plus :/ qu'est-ce que c'est que ce service qui n'obéit pas ?!? #wtf

Meilleure dĂ©duction jusqu'alors : le CRON de Moodle respawne des processus exim4 (pourquoi ? mystĂšre), on l'arrĂȘte donc avant de re-stopper exim.
Éditer la crontab et commenter le cron de moodle prod
crontab -e


ArrĂȘter exim (voir plus haut).

Supprimer tous les messages dans la file d'attente (s'assurer qu'il n'y a rien d'important d'abord !) :
exim -bp|grep "<"|awk {'print $3'}|xargs exim -Mrm


Note : la file d'attente se trouve dans /var/spool/exim4/input et on peut trouver des infos importantes dans /var/spool/exim4/msglog .
Note 2 : pour compter le nombre de fichiers dans un dossier (il y a peut-ĂȘtre mieux) :
ls -1 dossieralister | wc -l


Pour s'assurer que les utilisateurs de Moodle n'ont pas la case "s'abonner à la discussion" cochée par défaut (tous forums confondus), aller dans :
administration du site => utilisateurs => comptes => Préférences utilisateur par défaut => autoabonnement aux forums => régler sur "non"

Oui mais les utilisateurs peuvent ensuite choisir dans leur profil de contrecarrer ce réglage. Si on est un gros facho on peut interroger et écraser leurs préférences de force dans la BDD :
SELECT count(*) FROM user WHERE autosubscribe = 1;
UPDATE user SET autosubscribe = 0;


Pour vérifier les abonnements aux forums (dans leur globalité, pas par discussion) et éventuellement désabonner les gens :
SELECT count(*) FROM forum_subscriptions;
DELETE FROM forum_subscriptions; -- (affiner s'il y a des abonnements Ă  garder)


Pour vérifier les abonnements aux discussions et éventuellement en supprimer, par ex. la n°9 "présentez-vous" :
SELECT count(*) FROM forum_discussion_subs;
DELETE FROM forum_discussion_subs WHERE discussion = 9;


Une fois qu'on s'est bien amusés, penser à :
  • rĂ©activer le CRON (dĂ©commenter)
  • relancer exim (mĂȘme s'il se relance tout seul ce bougre) :
    service exim4 start
    
  • continuer Ă  surveiller la file d'emails avec mailq