Chapitre 11. Monter un serveur de mailing-listes

Table des matières
1. Monter le serveur
1.1. Installer et configurer Ecartis
1.2. Créer une mailing-list
1.3. Configurer la mailing-list
1.4. Le fichier des abonnés
1.5. Administrer la mailing-list
1.6. Poster dans la mailing-list
2. Archivage Web des mailing-lists
2.1. Configuration de base
2.2. Options avancées
2.3. Archivage par mois

Vos serveurs DNS et mail fonctionnent bien ? Vous avez appris à faire des alias qui pointent vers plusieurs comptes et/ou adresses mail, mais vous voudriez aller plus loin pour communiquer au sein d'une communauté ? Alors suivez ce qui suit pour mettre en place des mailing-lists avec archivage sur le Web...

1. Monter le serveur

1.1. Installer et configurer Ecartis

Je vous propose d'installer Ecartis, qui est un manager de mailing-lists robuste et performant. Commencez par installer le package :


# apt-get install ecartis

Ecartis possède un fichier de configuration global /etc/ecartis/ecartis.cfg. Editez-le et personnalisez les paramètres suivants en vous aidant des commentaires (dans la plupart des cas, il suffira de remplacer localhost par le nom de domaine de la machine) :

  • mailserver

  • listserver-address

  • listserver-admin

  • list-owner

Ajoutez les aliases nécessaires au bon fonctionnement d'Ecartis :


# cat /usr/share/doc/ecartis/examples/ecartis.aliases >> /etc/aliases
# newaliases

1.2. Créer une mailing-list

Nous allons créer une première mailing-list bruit, qui servira à des fins de test, pour se familiariser avec Ecartis :


# /usr/lib/ecartis/ecartis -newlist bruit

Creating new list 'bruit'...
List admin e-mail:

Il vous demande l'adresse mail de l'administrateur de la mailing-list : entrez votre adresse mail ; c'est avec cette adresse que vous pourrez administrer la mailing-list.

Il crée ensuite le répertoire et les fichiers nécessaires au bon fonctionnement de la mailing-list dans le répertoire /var/lib/ecartis/lists/ :


 Writing config file...done.
 Creating default user file...done.

Enfin, il affiche une liste d'alias à créer dans votre serveur de mail :


Sending aliases for sendmail/Exim/Postfix/Zmailer to stdout.

# Aliases for 'bruit' mailing list.
bruit: "|/usr/lib/ecartis/ecartis -s bruit"
bruit-request: "|/usr/lib/ecartis/ecartis -r bruit"
bruit-repost: "|/usr/lib/ecartis/ecartis -a bruit"
bruit-admins: "|/usr/lib/ecartis/ecartis -admins bruit"
bruit-moderators: "|/usr/lib/ecartis/ecartis -moderators bruit"
bruit-bounce: "|/usr/lib/ecartis/ecartis -bounce bruit"

Copiez-collez le bloc ci-dessus, qui comprend les 6 alias nécessaires au fonctionnement de la mailing-list, dans le fichier d'alias de votre serveur de mail (dans notre cas : /etc/aliases) puis mettez à jour la base d'alias :


# newaliases

La mailing-list est maintenant crée... passons à la configuration !

1.3. Configurer la mailing-list

La configuration de la mailing-list se fait dans le fichier /var/lib/ecartis/lists/bruit/config. Il existe un très grand nombre de paramètres de configuration, et le fichier de configuration installé par défaut les explique tous dans les commentaires (mais en anglais...).

Les paramètres les plus importants que vous devez absolument personnaliser sont les suivants (certains ont déjà été décommentés et personnalisés à la création de la liste) :

  • list-owner : adresse e-mail du responsable de la mailing-list (c'est celle que vous avez donné lors de la création de la mailing-list) ;

  • subject-tag : tag éventuel rajouté aux sujets des mails postés dans la mailing-list (commentez la ligne si vous ne voulez pas de tag) ;

  • reply-to : permet de forcer le champ Reply-to sur une certaine adresse (par exemple l'adresse de la mailing-list pour que les réponses aux posts aillent par défaut dans la mailing-list) ;

  • administrivia-address : adresse e-mail d'administration de la mailing-list où sont envoyé les notifications (et les autorisations si la mailing-list est en subscribe-mode = closed) d'abonnement et de désabonnement (ne pas modifier) ;

  • approved-address : adresse e-mail où sont renvoyés les posts acceptés ou refusés à la modération : mettre <$list>-repost@serveur.exemple.org, où serveur.exemple.org est le nom de domaine du serveur ;

  • mbox-archive-path : répertoire dans lequel sont stockées les archives au format mbox (si vous voulez en avoir) ;

  • humanize-mime : mettre à false si vous voulez que les pièces jointes qui ne sont pas des fichiers texte ne soient pas supprimées !

  • closed-post : les personnes qui ne sont pas abonnées à la mailing-list sont-elles autorisées à y poster ? (si vous répondez true, les posts des personnes extérieures à la mailing-list sont alors modérés)

  • moderated : tous les posts doivent-ils être approuvés par les modérateurs ?

  • moderator : adresse e-mail pour les modérateurs (ne pas modifier) ;

  • send-as : adresse du chemin de retour SMTP (ne pas modifier) ;

  • subscribe-mode : il y a 3 choix :

    • open pour que n'importe qui puisse s'abonner,

    • confirm pour que n'importe qui puisse s'abonner après confirmation du futur abonné,

    • closed pour que toutes les demandes d'abonnement soient soumises à l'approbation des administrateurs ;

  • unsubscribe-mode : idem que le paramètre précédent pour les désabonnements ;

1.4. Le fichier des abonnés

Le fichier des abonnés est le fichier /var/lib/ecartis/lists/bruit/users.

Sa syntaxe est simple : une ligne par abonné ; chaque ligne est composée des éléments suivants dans l'ordre et séparés par des espaces :

  • une adresse e-mail ;

  • le caractère deux-points ;

  • une liste de flags encadrés et séparés par le caractère |.

Les flags possibles sont les suivants :

  • ECHOPOST pour les abonnés à la mailing-list,

  • ADMIN pour les administrateurs de la mailing-list,

  • SUPERADMIN : [TODO : quel est la différence avec ADMIN ?],

  • MODERATOR pour les modérateurs de la mailing-list,

  • CCERRORS pour recevoir les mails d'erreur de la mailing-list (par exemple quand l'adresse d'un abonné ne marche pas),

  • REPORTS pour recevoir les rapports réguliers sur le fonctionnement de la mailing-list.

Pour l'administrateur, la ligne suivante est générée à la création de la mailing-list :


alexis@via.ecp.fr : |ADMIN|SUPERADMIN|MODERATOR|CCERRORS|REPORTS|ECHOPOST|

Si l'utilisateur toto@yahoo.fr est un simple abonné, on trouvera dans le fichier une ligne :


toto@yahoo.fr : |ECHOPOST|

Si l'utilisateur titi@caramail.com est abonné et modérateur, on trouvera une ligne :


titi@caramail.com : |ECHOPOST|MODERATOR|

1.5. Administrer la mailing-list

Toute l'administration de la mailing-list se fait en envoyant des commandes dans le sujet de mails envoyés à l'adresse ecartis@serveur.exemple.org. Le contenu du mail peut-être quelconque ; si la commande contenue dans le sujet est valide, le reste du mail ne sera pas lu par Ecartis.

Par exemple, si vous envoyez un mail à l'adresse ecartis@serveur.exemple.org avec un sujet lists, vous aurez en retour un mail contenant la liste des mailing-listes hébergées sur le serveur.

Quand un utilisateur veut s'abonner à la mailing-list bruit, il suffit qu'il envoie un mail à l'adresse ecartis@serveur.exemple.org avec un sujet subscribe bruit :

  • si la mailing-list est en subscribe-mode = open, l'utilisateur recevra confirmation de son abonnement par mail,

  • si la mailing-list est en subscribe-mode = confirm, l'utilisateur recevra un mail lui donnant les instructions pour confirmer son abonnement,

  • si la mailing-list est en subscribe-mode = closed, un administrateur devra approuver l'abonnement.

Idem pour un désabonnement, mais en mettant dans le sujet unsubscribe bruit.

Pour avoir une liste complète des commandes, envoyez un mail à l'adresse ecartis@serveur.exemple.org avec un sujet commands.

Pour la modération des mail, les modérateurs reçoivent des mails indiquant les instructions pour approuver ou rejeter les posts.

Pour avoir de l'aide sur Ecartis, envoyez un mail à l'adresse ecartis@serveur.exemple.org avec un sujet help.

1.6. Poster dans la mailing-list

Pour poster dans la mailing-list, il suffit d'envoyer un mail à l'adresse bruit@serveur.exemple.org. Les abonnés reçoivent alors le post après quelques secondes, sauf si le mail doit passer en modération, i.e. dans les cas suivants :

  • si la mailing-list est modérée ;

  • si la mailing-list n'est pas modérée, mais en closed-post = true et que la personne qui poste n'est pas abonnée à la mailing-list.

2. Archivage Web des mailing-lists

2.1. Configuration de base

Vous avez envie d'archiver une mailing-list sur le Web ? MHonArc est l'outil qu'il vous faut :


# apt-get install mhonarc

Le mécanisme d'archivage des mailing-list que je vous propose de mettre en place va faire intervenir procmail, un programme de tri des mails. Si vous n'êtes pas encore familier avec procmail, je vous invite à lire et mettre en oeuvre le chapitre Le mail en console au préalable.

L'avantage d'utiliser procmail est qu'il va nous permettre une gestion simple des permissions. Tout d'abord, il faut décider d'un utilisateur à qui appartiendra le répertoire utilisé pour l'archivage Web : dans cet exemple, il s'agit de l'utilisateur toto et l'archivage se fait dans son répertoire ~/public_html/archive-bruit/. Cet utilisateur devra être abonné à la mailing-list et recevra donc les mails. A chaque réception d'un mail de la mailing-list, son procmail lance l'exécution de MHonArc qui convertit le mail en HTML et met à jour les pages Web d'index.

Note

Rappel : le procmail d'un utilisateur s'exécute avec les droits de l'utilisateur.

Nous prenons donc comme exemple l'utilisateur toto qui archive la mailing-list bruit dans le sous-répertoire archive-bruit de son public_html sur le système dont le nom DNS est serveur.exemple.org (ce serveur pouvant recevoir du mail).

Commencez par abonner toto@serveur.exemple.org à la mailing-list bruit.

Ensuite, écrivez un fichier .procmailrc dans le home de l'utilisateur toto, qui pourrait ressembler à ça :


# ~/.procmailrc
# Fichier de configuration de Procmail

# Je ne veux pas trop de messages dans les logs
VERBOSE=off

# Fichier de log de procmail
LOGFILE=$HOME/.procmail.log

# Répertoire de stockage des archives (doit être créé au préalable)
REPERTOIRE=$HOME/public_html/archive-bruit

# J'envoie les mails de la mailing-list "bruit" sur le programme "mhonarc"
# pour archivage
:0
* ^X-list: bruit
| mhonarc -add -quiet -umask 022 -outdir $REPERTOIRE

# Je trashe tous les autres mails
:0
/dev/null

Quelques précisions sur les options de la commande mhonarc utilisée dans le .procmailrc :

  • -add : archive les messages au fur et à mesure de leur arrivée ;

  • -quiet : n'écrit dans les logs que les messages d'erreur ;

  • -umask 022 : met les permissions 644 sur les fichiers HTML crées ;

  • -outdir $REPERTOIRE : écrit les fichiers HTML dans le répertoire spécifié dans la variable REPERTOIRE (le répertoire doit être crée au préalable).

Dès réception du premier mail, les archives seront accessibles à l'adresse http://serveur.exemple.org/~toto/archive-bruit/threads.html. Si cela ne marche pas, consultez les logs de procmail dans ~toto/.procmail.log et mettez éventuellement le paramètre VERBOSE à on dans .procmailrc pour avoir plus de détails dans les logs.

Si vous voulez restreindre l'accès aux archives Web, la configuration se fait au niveau d'Apache avec un fichier .htaccess, et non au niveau de procmail ou de mhonarc !

2.2. Options avancées

Les options suivantes peuvent également être utilisées dans la commande mhonarc :

  • -spammode : brouille le domaine des adresses mail pour éviter le spam ;

  • -tlevel 12 : autorise jusqu'à 12 niveaux d'indentation pour l'index threadé ;

  • -title 'Archives de la mailing-list bruit' : met le titre spécifié sur la page d'index classique ;

  • -ttitle 'Archives de la mailing-list bruit' : met le titre spécifié sur la page d'index threadée ;

  • -nomailto : ne met pas de lien hypertexte sur les adresses e-mail ;

  • -nodoc : supprime la référence à MHonArc à la fin des pages d'index.

Pour afficher la liste complète des options, tapez la commande mhonarc -help.

2.3. Archivage par mois

Il suffit de modifier le fichier procmail en se basant sur l'exemple ci-dessous :


# ~/.procmailrc
# Fichier de configuration de Procmail

# Je ne veux pas trop de messages dans les logs
VERBOSE=off

# Fichier de log de procmail
LOGFILE=$HOME/.procmail.log

# Répertoire de stockage des archives (doit être crée au préalable)
REPERTOIRE=$HOME/public_html/archive-bruit

# Stocke la date du mois
DATE=`/bin/date +%Y-%m`

# J'envoie les mails de la mailing-list "bruit" sur le programme "mhonarc"
# pour un archivage par mois
:0
* ^X-list: bruit
| mkdir -m 755 -p $REPERTOIRE/$DATE ; mhonarc -add -quiet -umask 022 -outdir $REPERTOIRE/$DATE

# Je trashe tous les autres mails
:0
/dev/null