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
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 .