Mailman est un serveur de liste de diffusion. Une liste de diffusion ou liste de distribution (mailing list en anglais, abrégé en ML) est une utilisation spécifique du courrier électronique qui permet le publipostage d’informations aux utilisateurs qui y sont inscrits. (source Wikipédia)

Pour les besoins de Perpinux, GUL de Perpignan, j’ai du installer un serveur de messagerie iRedmail et une liste de diffusion pour tous les adhérents avec mailman.

D’abords j’ai créé un sous domaine liste.mondomaine.tld, dans bind sur mon serveur DNS.

Ensuite sur le serveur de mail j’ai installé mailman.

apt-get install mailman

A partir de là tout se passe dans la base de données mysql via phpmyadmin. En effet j’ai choisi Mysql pour la gestion d’iRedmail, ce choix se fait à l’installation du programme.
Dans phpmyadmin je me suis placé dans la base « vmail », puis dans l’onglet « SQL ». Afin que cela soit plus pratique pour les utilisateurs j’ai créé un alias pour raccourcir l’adresse de la liste de diffusion de @lite.mondomaine.tld à @mondomaine.tld.

INSERT INTO vmail.domain (domain, description, disclaimer, aliases, mailboxes, maxquota, quota, transport, backupmx, defaultuserquota, defaultuseraliases, defaultpasswordscheme, minpasswordlength, maxpasswordlength, created, modified, expired, active) VALUES (‘liste.maondomaine.tld’, “, “, ‘0’, ‘0’, ‘0’, ‘0’, ‘mailman:‘, ‘0’, ‘1024’, “, “, ‘0’, ‘0’, NOW(), ‘0000-00-00 00:00:00’, ‘9999-12-31 00:00:00’, ‘1’);

[notice]Ne pas oublier de remplacer liste.mondomaine.tld par le bon sous domaine.[/notice]

Maintenant  il ma fallut créer tous les alias pour la liste de diffusion mailman. En effet cette liste est obligatoire pour chaque serveur mailman, même si par la suite je ne m’en servirai pas c’est la première liste à créer pour mailman.

INSERT INTO alias (address, goto, name, moderators, accesspolicy, domain, created, modified, expired, active) VALUES (‘mailman@mondomane.tld’, ‘mailman@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-admin@mondomane.tld’, ‘mailman-admin@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-bounces@mondomane.tld’, ‘mailman-bounces@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-confirm@mondomane.tld’, ‘mailman-confirm@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-join@mondomane.tld’, ‘mailman-join@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-leave@mondomane.tld’, ‘mailman-leave@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-owner@mondomane.tld’, ‘mailman-owner@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-requests@mondomane.tld’, ‘mailman-requests@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-subscribe@mondomane.tld’, ‘mailman-subscribe@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-unsubscribe@mondomane.tld’, ‘mailman-unsubscribe@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1);

Ses commandes sont à répéter pour chaque liste de diffusion du serveur, et à adapter en
du nom de la liste.
Les alias créer il faut juste configurer postfix:

postconf -e ‘relay_domains = liste.mondomaine.tld’ postconf -e ‘mailman_destination_recipient_limit = 1’ /etc/init.d/postfix reload

Lors de mes premiers essais je me suis aperçu que les mails reçu mettaient plus d’une heure pour arriver sur mes boîtes. Ce problème était dû à la directive « greylist » dans le fichier /etc/postfix-policyd.conf. Pour la désactiver il suffit de la mettre à « 0 ».

Greylist=0

Configuration de mailman :

nano /etc/mailman/mm_cfg.py

[…] DEFAULT_URL_PATTERN = ‘http://%s/’ […] DEFAULT_EMAIL_HOST = ‘mondomaine.tld’ […] DEFAULT_URL_HOST = ‘liste.mondomaine.tld’

Pour terminer j’ai ajouté un virtualhost à apache :

nano /etc/apache2/sites-available/mailman

ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/ Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ AllowOverride None Options ExecCGI AddHandler cgi-script .cgi Order allow,deny Allow from all Satisfy Any Options FollowSymlinks AllowOverride None Order allow,deny Allow from all AllowOverride None Order allow,deny Allow from all ServerName liste.mondomaine.tld DocumentRoot /var/www/lists ErrorLog /var/log/apache2/lists-error.log CustomLog /var/log/apache2/lists-access.log combined Options FollowSymLinks AllowOverride None 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

 

Création du répertoire « lists » pour les différentes pages web de configuration des listes du serveur, activation du virtualhost, et redémarrage d’apache pour prendre en compte les modifications.

a2ensite mailman mkdir /var/www/lists /etc/init.d/apache2 restart

Comme expliqué plus haut lors de sa première configuration mailman a besoin d’une première
liste appelée « mailman.

newlist mailman

Pour terminer il suffit de démarrer mailman.

/etc/init.d/mailman start

Le serveur Mailman est désormais opérationnel. Pour créer d’autre listes de diffusions il suffit de reprendre les requêtes SQL suivantes en changeant  « mailman » par le nom de votre liste.

INSERT INTO alias (address, goto, name, moderators, accesspolicy, domain, created, modified, expired, active) VALUES (‘mailman@mondomane.tld’, ‘mailman@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-admin@mondomane.tld’, ‘mailman-admin@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-bounces@mondomane.tld’, ‘mailman-bounces@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-confirm@mondomane.tld’, ‘mailman-confirm@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-join@mondomane.tld’, ‘mailman-join@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-leave@mondomane.tld’, ‘mailman-leave@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-owner@mondomane.tld’, ‘mailman-owner@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-requests@mondomane.tld’, ‘mailman-requests@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-subscribe@mondomane.tld’, ‘mailman-subscribe@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1), (‘mailman-unsubscribe@mondomane.tld’, ‘mailman-unsubscribe@liste.mondomaine.tld’, “, “, ‘public’, ‘mondomaine.tld’, NOW(), NOW(), ‘9999-12-31 00:00:00’, 1);

Et ensuite pour l’activer :

newlist nom de la liste