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

Créer une liste sur laquelle on puisse (dés)inscrire massivement à distance

C'est le cas pour les listes sbco et bon-eure.
L'inscription fonctionne avec 2 scripts qu'il faut copier dans le dossier de la liste, et lier à qmail.

Créer la liste

Bon ben oui, d'abord il faut bien créer une liste. Pour les réglages, s'inspirer de sbco.

Copier les scripts

Créer deux fichiers dans le dossier de la liste (ex: /home/vpopmail/domains/tela-botanica.org/sbco/ ), nommés inscrire.sh et desinscrire.sh, dont voici le contenu ci-dessous.
Attention il faut remplacer :
  • "bon-eure" par le nom de la liste, évidemment (faire un rechercher-remplacer partout)
  • "BON30EURE" par un code unique lié à la liste, qui devra être mentionné dans le sujet des messages de commande à distance (inscription et désinscription massive) - aucune idée de pourquoi c'est le nom de la liste avec "30" au milieu, si on met "POUETPOUET" ça marche aussi, il faut juste ne pas choisir un code qui puisse se trouver dans d'autres sujets d'emails (genre "bonjour").
Il faut ensuite donner les droits d'exécution à ces deux scripts (chmod a+x).

inscrire.sh

#!/bin/sh
LISTE="bon-eure"
FICHIER="/tmp/inscription_en_masse_liste_bon-eure.txt"
cat - > $FICHIER;
REGEXP="^"$SENDER"$"
REGEXP_CODE="^Subject:.*BON30EURE.*$"
# Verification que l'emeteur du courriel fait partie des moderateurs
if /usr/local/bin/ezmlm/ezmlm-list /home/vpopmail/domains/tela-botanica.org/bon-eure mod |grep $REGEXP; then 
  # Verification que le sujet du mail contient bien le code
  if grep "$REGEXP_CODE" $FICHIER; then
    for f in `grep -x -E "^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,3}$" /tmp/inscription_en_masse_liste_bon-eure.txt`; do
      /usr/local/bin/ezmlm/ezmlm-sub /home/vpopmail/domains/tela-botanica.org/bon-eure $f;
    done
    DTLINE='Delivered-To: bon-eure-inscrire@tela-botanica.org'
    grep "$DTLINE" /tmp/inscription_en_masse_liste_bon-eure.txt  > /dev/null &&
      { echo "This message is looping"; exit 100; }
    {
      echo "$DTLINE"
      cat <<EOF
From: bon-eure-help@tela-botanica.org
To: $SENDER
Subject: Compte rendu des inscriptions a bon-eure@tela-botanica.org
Nombre d'inscrits a la liste :
EOF
      /usr/local/bin/ezmlm/ezmlm-list /home/vpopmail/domains/tela-botanica.org/bon-eure | wc -l
      echo "Liste des inscrits :"
      /usr/local/bin/ezmlm/ezmlm-list /home/vpopmail/domains/tela-botanica.org/bon-eure
    } | /var/qmail/bin/qmail-inject -f bon-eure-retour@tela-botanica.org "$SENDER"
    exit 0;
  fi;
fi;
exit 100

desinscrire.sh

#!/bin/sh
LISTE="bon-eure"
REGEXP="^"$SENDER"$"
REGEXP_CODE="^Subject:.*BON30EURE.*$"
# Verification que l'emeteur du courriel fait parti des moderateurs
if /usr/local/bin/ezmlm/ezmlm-list /home/vpopmail/domains/tela-botanica.org/bon-eure mod |grep $REGEXP; then
  # Verification que le sujet du courriel contient bien le code defini.
  if cat - | grep "$REGEXP_CODE"; then  
    DTLINE='Delivered-To: bon-eure-desinscrire@tela-botanica.org'
    grep "$DTLINE" > /dev/null &&
      { echo "This message is looping"; exit 100; }
    {
      echo "$DTLINE"
      cat <<EOF
From: bon-eure-help@tela-botanica.org
To: $SENDER
Subject: Compte rendu des desinscriptions de bon-eure@tela-botanica.org
Les utilisateurs suivant ont ete supprime de la liste :
EOF
      /usr/local/bin/ezmlm/ezmlm-list /home/vpopmail/domains/tela-botanica.org/bon-eure
      /usr/local/bin/ezmlm/ezmlm-list /home/vpopmail/domains/tela-botanica.org/bon-eure | /usr/local/bin/ezmlm/ezmlm-unsub /home/vpopmail/domains/tela-botanica.org/bon-eure
      echo "Nombre d'utilisateur restant apres suppression :"
      /usr/local/bin/ezmlm/ezmlm-list /home/vpopmail/domains/tela-botanica.org/bon-eure | wc -l
    } | /var/qmail/bin/qmail-inject -f bon-eure-retour@tela-botanica.org "$SENDER"
    exit 0;
  fi;
fi;
exit 100;


Créer les "hook" qmail

Il faut encore créer deux fichiers dans le dossier de la liste (ex: /home/vpopmail/domains/tela-botanica.org/sbco/ ), nommés inscrire et desinscrire, dont voici le contenu ci-dessous.
À nouveau, penser à remplacer le nom de la liste dans le chemin !

inscrire

|/home/vpopmail/domains/tela-botanica.org/sbco/inscrire.sh

desinscrire

|/home/vpopmail/domains/tela-botanica.org/sbco/desinscrire.sh


Lier les fichiers .qmail aux scripts

Il faut maintenant créer deux liens dans le répertoire du domaine (ex: /home/vpopmail/domains/tela-botanica.org/ ), qui pointent vers ces fichiers.
Exemple avec la liste sbco :
ln -s /home/vpopmail/domains/tela-botanica.org/bon-eure/inscrire .qmail-sbco-inscrire
ln -s /home/vpopmail/domains/tela-botanica.org/bon-eure/desinscrire .qmail-sbco-desinscrire


Fonctionnement

Exemple avec sbco (reprise d'un message de Jean-Pascal à Benoît).
Note: l'expéditeur doit être modérateur de la liste.

*Inscrire plusieurs personnes à la fois*

Pour inscrire des personnes, il faut envoyer un mail à :
sbco-inscrire@tela-botanica.org
avec dans le sujet du courriel le code suivant : SB30CO
et dans le corps du message les courriels des personnes à inscrire.
Il doit y avoir un courriel par ligne avec aucun espace ou tabulation avant et après le courriel. Exemple
jpm@tela-botanica.org
alexandre@tela-botanica.org
Les lignes ne respectant pas ce formalisme ne seront pas prises en compte.
Tu recevras un mail te retournant la liste des courriels des personnes inscrites avec en fin de mail le nombre correspondant. A toi de vérifier que cela correspond bien au nombre de courriel que tu avais envoyé.

*Désinscrire tout le monde*

Pour désinscire tout le monde, il faut envoyer un mail à :
sbco-desinscrire@tela-botanica.org
avec dans le sujet du courriel le code suivant : SB30CO
le corps du message peut rester vide ou contenir ce que tu veux, cela ne sera pas pris en compte.
Tu recevras un mail te retournant la liste des courriels des personnes désinscrites avec en fin de mail le nombre d'inscrit restant dans la liste. Si tout c'est bien passé, ce nombre doit valoir 0.


*Inscription/Désinscription d'une personne à la fois*

Tu peux aussi utiliser les commandes classiques pour inscrire ou désinscrire une personne à la fois :
En tant que modérateur, vous pouvez inscrire et désinscrire n'importe quelle adresse a la liste de diffusion.
Ainsi, pour abonner "john@machine.domaine", mettez simplement un tiret aprés le nom de la commande, puis l'adresse du futur abonne en remplaçant le signe "@" par "=".
Par exemple, pour inscrire l'utilisateur ci-dessus, envoyez un message a : <sbco-subscribe-john=machine.domaine@tela-botanica.org>

De façon similaire, il est possible de retirer son adresse de la liste en écrivant a :
  • <sbco-unsubscribe-john=machine.domaine@tela-botanica.org>

C'est tout ! Aucun sujet special ni corps de message n'est requis.