Mailman et les listes de diffusion sous Postfix
Introduction
Je vous propose ici un article sur la configuration de Mailman. Un système de gestion de liste de diffusion. Cet article fait suite à la mise en place d’un serveur de mails sous Debian Squeeze (Postfix, Dovecot, Mysql) serveur de mails postfix-dovecot-mysql-smtps-imaps»
Installation de MAILMAN
Installation des paquets mailman et apache2 (pour la partie interface web d’administration)
# aptitude install mailman apache2
I faut vérifier les permissions après installation de Mailman
check_perms
La sortie de la commande précédente montre pas mal d’anomalies dans l’attribution des droits. Il faut les ajuster
check_perms -f
Puis on repasse le « check »
check_perms
On s’aperçoit qu’il reste des droits encore de travers ! Alors radicalement, on ajuste les droits de la façon suivante :
cd /var/lib/mailman;chown -R list:list *
Configuration de MailMan à proprement parlant
vi /etc/mailman/mm_cfg.py
Je prends pour exemple un domaine « lists.beo.org »
[...]
DEFAULT_URL_PATTERN = ‘http://%s/’
[...]
DEFAULT_EMAIL_HOST = ‘lists.beo.org’
[...]
DEFAULT_URL_HOST = ‘lists.beo.org’
[...]
Configuration de Postfix
postconf -e 'relay_domains = lists.beo.org'
postconf -e 'mailman_destination_recipient_limit = 1'
On poursuit dans master.cf
# vi /etc/postfix/master.cf
… vérifier que mailman est bien activé
[...]
mailman unix – n n – – pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
[...]
Configuration du transport dans Postfix
Je choisis de faire les configurations dans un fichier mais il est possible d’ajouter une table Mysql pour compléter les configurations de la base déjà en place.
postconf -e 'transport_maps = hash:/etc/postfix/transport'
# vi /etc/postfix/transport
lists.beo.com mailman:
On joue le fichier sur Postfix pour générer la base transport notamment.
postmap -v /etc/postfix/transport
Zou, on redémarre Postfix
# /etc/init.d/postfix restart
On termine la configuration en créant la première liste
# newlist mailman
On ajoute maintenant les alias de la liste dans la base Mysql (Cf. article sur la configuration d’un serveur mails). Il est tout à fait possible d’ajouter les alias dans le fichier alias par défaut de Postfix (/etc/aliases)
INSERT INTO virtual_alias_maps VALUES ('mailman@beo.org','mailman@lists.beo.org');
INSERT INTO virtual_alias_maps VALUES ('mailman-admin@beo.org', 'mailman-admin@lists.beo.org');
INSERT INTO virtual_alias_maps VALUES ('mailman-bounces@beo.org','mailman-bounces@lists.beo.org');
INSERT INTO virtual_alias_maps VALUES ('mailman-confirm@beo.org','mailman-confirm@lists.beo.org');
INSERT INTO virtual_alias_maps VALUES ('mailman-join@beo.org','mailman-join@lists.beo.org');
INSERT INTO virtual_alias_maps VALUES ('mailman-leave@beo.org','mailman-leave@lists.beo.org');
INSERT INTO virtual_alias_maps VALUES ('mailman-owner@beo.org','mailman-owner@lists.beo.org');
INSERT INTO virtual_alias_maps VALUES ('mailman-request@beo.org','mailman-request@lists.beo.org');
INSERT INTO virtual_alias_maps VALUES ('mailman-subscribe@beo.org','mailman-subscribe@lists.beo.org');
INSERT INTO virtual_alias_maps VALUES ('mailman-unsubscribe@beo.org','mailman-unsubscribe@lists.beo.org');
Configuration Apache2
Création d’un fichier dédié à un vhost mailman
vi /etc/apache2/sites-enabled/mailman.conf
<VirtualHost *:80>
ServerName lists.beo.org
DocumentRoot /var/www/lists
ErrorLog /var/log/apache2/lists-error.log
CustomLog /var/log/apache2/lists-access.log combined
<Directory /var/lib/mailman/archives/>
Options 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/
ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo
</VirtualHost>
Active le site
# a2ensite mailman.conf
On redémarre le tout
# /etc/init.d/postfix restart;/etc/init.d/mailman restart;/etc/init.d/apache2 restart
L’interface d’administration sera accessible sur http://lists.beo.org/
Tests
# newlist list1
On ajoute un alias dans la base Postfix
INSERT INTO virtual_alias_maps VALUES ('maliste@beo.org','list1@lists.beo.org');
Voila…il reste à envoyer un mail à maliste@beo.org !
Références
http://freemars.org/howto/mailman.html
http://www.howtoforge.com/how-to-install-and-configure-mailman-with-postfix-on-debian-squeeze





