Dans ce billet je vais decrire la mise en place du gestionnaire de mailing-list ezmlm-idx sur une distribution Linux (Ubuntu dans mon cas mais ce tutorial peut etre utilisé sous n’importe que *nix puisque l’on va partir des sources.)
On va considérer dans ce billet que vous avez une installation fonctionnelle de qmail + vpopmail sur votre serveur.
Si ce n’est pas le cas, reportez vous aux billets:
ezmlm-idx est une version « améliorée » du gestionaire de mailing-list créé par DJB. Il va donc nous falloir récuperer les sources de ezmlm puis les sources de ezmlm-idx, mélanger les premières avec les secondes et hop.
Ca ne vous semble pas clair ? Alors passons à la pratique pour faire la lumiere.
Récupération des sources
On va télécharger les sources de ezmlm depuis le site officiel de DJB:
cd /usr/local/src
wget http://cr.yp.to/software/ezmlm-0.53.tar.gz
tar zxvf ezmlm-0.53.tar.gz
On va ensuite récuperer les sources de ezmlm-idx:
wget http://www.ezmlm.org/archive/7.0.2/ezmlm-idx-7.0.2.tar.gz
tar zxvf ezmlm-idx-7.0.2.tar.gz
Compilation
On va commencer par ezmlm:
cd ezmlm-0.53
make
Et la c’est le drame !!!
Vous allez avoir ce joli message à l’issue du make :
./load auto-str substdio.a error.a str.a
/usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in substdio.a(substdo.o)
/lib/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit s
Allons on ne panique pas, le code de DJB commence a dater, on va devoir bricoler un peu:
echo gcc -O2 -include /usr/include/errno.h > conf-cc
echo cc -m32 -O2 -include /usr/include/errno.h >> conf-cc
echo cc -m32 > conf-ld
Il faut aussi editer les fichiers ezmlm-return.c et ezmlm-manage.c pour y ajouter un include:
#include “log.h”
Si ça ne vous cause pas tout ça, mettez simplement cette ligne en tete des deux fichiers
Et on peu recommencer et terminer la compilation de ezmlm:
make
make man
make setup
On passe a présent a ezlml-idx:
cd ../ezmlm-idx
make
make man
On va faire une petite pause a ce niveau pour tester l’ensemble, ezmlm-idx propose un petit binaire pour tester que tout fonctionne comme il se doit:
./ezmlm-test
ezmlm-make: OK
Using subdb plugin: std
ezmlm-reject: OK
ezmlm-[un|is]sub[n]: OK
ezmlm-checksub: OK
ezmlm-send: OK
ezmlm-tstdig: OK
ezmlm-weed: OK
.
.
Si tout est OK il ne vous reste plus qu’a déployer les binaires:
make setup
Et voila !
Exemple de configuration pour une newsletter
ezmlm est un gestionnaire de mailing-list mais il peut très bien être utilisé pour gérer l’envoi de newsletter.
La singularité d’une newsletter est que seuls les modérateurs peuvent poster un message, il nous faudra donc utiliser les flag m et o lors de la création de la liste.
On va donc créer une liste newsletter@ :
- Sur le domaine lists.domaine.com (préalablement créer via vpopmail->vadddomain).
- Ayant les options de modération faisant que seuls les modérateurs puissent poster (om)
- Ayant le nom de la newsletter comme prefixe dans le sujet (-f)
- Ou seul les abonnés auront accès aux archives (-g)
On va considéré que le repertoire vpopmail – ou sont stocké les comptes du domaine – est : /home/vpopmail/domains/lists.domain.com, la commande pour créer cette liste va donc etre:
./ezmlm-make -o -m -f -g /home/vpopmail/domains/lists.domain.com /home/vpopmail/domains/lists.domain.com/.qmail-newsletter newsletter lists.domain.com
On va ensuite définir le modérateur/redacteur, en considérant que son adresse mail est : moderateur @ domain.com
./ezmlm-sub /home/vpopmail/domains/domain.com/newsletter mod moderateur @ domain.com
On va ajouter les abonnés moderateur @ domain.com et toorop @ toorop.fr à cette liste:
./ezmlm-sub /home/vpopmail/domains/lists.domain.com/newsletter/ moderateur @ domain.com
./ezmlm-sub /home/vpopmail/domains/lists.domain.com/newsletter/ toorop @ toorop.fr
Voila, la liste est prete a etre utilisée, si vous avez besoinde plus de détails quand a la configuration d’une mailing-list et des outils qui permettent de la gérer je vous renvois sur les manpages correspondantes. Si vous préférez la consultation en ligne c’est par ICI.