Avant de vous lancer dans l'installation d'un serveur de listes, vous devez régler quelques étapes préalables, décrites dans l'article général traitant des listes de distribution.
Installez simplement le paquet correspondant pour votre distribution. Sous Debian, il s'agit du paquet mailman
.
GNU Mailman utilise une liste principale pour la gestion du service de listes1). Après l'avoir installé, il faut donc créer cette liste avec la commande (il vous demandera une adresse et un mot de passe) :
# newlist mailman
GNU Mailman ne fonctionne pas tout seul : il doit utiliser un serveur de courrier pour lui confier la réception et la livraison des messages.
Nous allons configurer Postfix pour qu'il accepte le courrier pour le domaine listes.example.com
et qu'il le relaie à GNU Mailman. Il faut pour cela modifier son fichier de configuration /etc/postfix/main.cf
:
relay_domains = ... listes.example.com relay_recipient_maps = ... hash:/var/lib/mailman/data/virtual-mailman mailman_destination_recipient_limit = 1 transport_maps = hash:/etc/postfix/transport
On indique ici :
listes.example.com
,/var/lib/mailman/data/virtual-mailman
, /etc/postfix/transport
.
Justement, il faut maintenant préciser l'outil de transport à utiliser. Créez ou éditez le fichier /etc/postfix/transport
:
listes.example.com mailman:
On indique ici que le courrier à destination du domaine listes.example.com
doit être transféré avec l'outil mailman. Ce fichier doit être haché pour que Postfix l'utilise, avec la commande :
# postmap /etc/postfix/transport
Il faut enfin définir cet outil de transfert, dans le fichier /etc/postfix/master.cf
:
mailman unix - n n - - pipe flags=FR user=list argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
Là, je vous renvoie au manuel de master(5) pour les détails de cette définition.
Il faut finalement configurer GNU Mailman pour qu'il génère la liste des listes de distribution (oui, la liste des listes…) /var/lib/mailman/data/virtual-mailman
. Éditez pour cela son fichier de configuration /etc/mailman/mm_cfg.py
:
MTA = 'Postfix' POSTFIX_STYLE_VIRTUAL_DOMAINS = ['listes.example.com']
Lancez la génération de cette liste, puis rechargez Postfix :
# /usr/lib/mailman/bin/genaliases # /etc/init.d/postfix reload
Si vous voulez donner à vos liste des adresses dans un nom de domaine qui ne soit pas dédié à Mailman, par exemple dans votre nom de domaine principal, vous pouvez simplement définir des alias dans ce nom de domaine. Par exemple, pour example.com
, avec Postfix, vous pouvez utiliser un fichier d'alias ainsi rédigé :
mailman@example.com mailman@listes.example.com mailman-owner@example.com mailman@listes.example.com …
C'est bien évidement également possible avec un service de courrier externe, bien que ce ne soit pas exactement le but d'un auto-hébergement.
L'interaction avec GNU Mailman – inscriptions, désinscriptions, consultation des archives, définition des options de liste – se fait par une interface Web. Il faut donc configurer votre serveur Web pour cela.
Il faut créer un nouveau site virtuel associé au nom de domaine listes.example.com
. Sous Debian, cela se fait en créan un fichier /etc/apache2/sites-available/listes
:
<Directory /usr/lib/cgi-bin/mailman/> AllowOverride None Options ExecCGI AddHandler cgi-script .cgi </Directory> <Directory /var/lib/mailman/archives/public/> Options Indexes FollowSymlinks AllowOverride None </Directory> <Directory /usr/share/images/mailman/> AllowOverride None </Directory> <VirtualHost *:80 *:443> ServerName listes.example.com ServerAlias listes <Directory /var/lib/mailman/archives/> Options Indexes FollowSymLinks AllowOverride None </Directory> Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm ScriptAlias /create /usr/lib/cgi-bin/mailman/create ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo ScriptAlias /options /usr/lib/cgi-bin/mailman/options ScriptAlias /private /usr/lib/cgi-bin/mailman/private ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ </VirtualHost>
Activez ce site virtuel, puis relancez Apache HTTPD :
# a2ensite listes # /etc/init.d/apache2 restart
Vous pouvez maintenant utiliser l'interface d'administration de GNU Mailman http://listes.example.com/admin .