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');
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 ».
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/
<Directory /usr/lib/cgi-bin/mailman/>
AllowOverride None
Options ExecCGI
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
Satisfy Any
</Directory>
<Directory /var/lib/mailman/archives/public/>
Options FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /usr/share/images/mailman/>
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
ServerName liste.mondomaine.tld
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>
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. 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