Outils pour utilisateurs

Outils du site


serveurs:gnu_mailman

GNU Mailman

Configuration préalable

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.

Installer GNU Mailman

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

Intégration à un serveur de courrier

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.

Postfix

Configuration de Postfix

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 :

  • qu'on relaie le courrier pour le domaine listes.example.com,
  • que la liste des adresses de ce domaine (la liste des listes de distribution) se trouve dans le fichier /var/lib/mailman/data/virtual-mailman,
  • qu'il ne faut transmettre à GNU Mailman qu'un message à la fois,
  • que l'outil à utiliser pour transférer le courrier est précisé dans le fichier /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.

Configuration de GNU Mailman

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

Éventuellement : utiliser un nom de domaine non dédié

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.

Intégration à un serveur Web

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.

Apache HTTPD

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 .

1)
en tout cas, il a besoin d'une telle liste, ensuite, je ne l'ai jamais utilisée en pratique…
serveurs/gnu_mailman.txt · Dernière modification: Tue Jul 3 18:37:17 2012 par elessar