Installer Mailman 2 sur un Mac OS X 10.10 et Server 5

Comme il a fallu que je me documente pas mal et que j’essaie un certain nombre de choses avant d’arriver à faire tourner Mailman 2 sur un Mac Pro (de 2009) que je venais d’effacer et sur lequel j’avais réinstallé un OSX 10.10 Yosemite tout neuf accompagné de l’appli Server version 5.0 — a priori ça devrait aussi être valable pour la version 4.1 de Server —, j’ai pensé que ça pourrait servir à d’autres.

Donc voilà…

Pour la petite histoire, sachez que j’ai essayé l’installation de Mailman 3 mais que j’ai du abandonner en cours de route, ce dernier requérant deux versions de Python pour fonctionner (2.7 et 3.4), et visiblement ça pose des soucis côté OSX, à moins que ce ne soit moi qui n’arrive pas à combiner l’ensemble. Du coup j’ai viré tout ce que j’avais installé — ce fut assez simple puisque j’ai simplement viré le virtualenv que j’avais créé et activé — et suis reparti sur la version 2.1.20 de Mailman.

D’autre part je me suis basé sur deux documents trouvés sur le net :

  1. [Mailman-Users] Snow Leopard (MacOS X 10.6) CLIENT installation steps for Mailman (CORRECTED) qui explique comment installer Mailman 2 sur Snow Leopard (OSX 10.6), et
  2. [Mailman-Users] Mountain Lion server trouble qui prend comme référence le document précédent et y apporte des corrections pour l’installation sur Mountain Lion (OSX 10.8)

Deux précisions avant d’aller plus loin : (presque) tout va se passer côté terminal et en mode sudo, donc si ça vous donne de l’urticaire, passez votre chemin :-) ; et je ne vais pas reprendre l’intégralité des explications fournies dans les documents, j’y apporterai simplement quelques précisions utiles le cas échéant.

Installation

Téléchargement

Utilisez votre navigateur préféré et rendez-vous ici pour télécharger la dernière version, 2.1.20 au moment d’écrire ce tuto. A priori l’archive en question va se trouver dans le dossier Téléchargement de l’utilisateur courant.

Compilation

Ouvrez votre application terminal favorite et vérifiez tout d’abord que les user et group _mailman et _www existent bien. Les commandes suivantes, lancées en mode sudo (ou après avoir fait un sudo -i) devraient vous fournir les résultats ci-dessous :

grep _mailman /etc/group

Devrait retourner, si le group _mailman existe :

_mailman:*:78:
grep _mailman /etc/passwd

Devrait retourner, si le user _mailman existe :

_mailman:*:78:78:Mailman List Server:/var/empty:/usr/bin/false

Étonnamment Mailman a disparu de l’appli Server d’Apple mais l’OS en conserve encore des traces ! Et ce n’est d’ailleurs pas la seule que je trouverai au fur et à mesure de mes vérifications et recherches.

grep _www /etc/group

Devrait retourner, si le group _www existe :

_www:*:70:_devicemgr,_teamsserver
grep _www /etc/passwd

Devrait retourner, si le user _www existe :

_www:*:70:70:World Wide Web Server:/Library/WebServer:/usr/bin/false

Il faut ensuite créer le répertoire qui recevra Mailman, y décompresser l’archive préalablement téléchargée et corriger les propriétaires et groupes, ainsi que les permissions :

mkdir -p /usr/local/mailman
cd /usr/local/mailman/
cp /Users/username/Downloads/mailman-2.1.20.tgz .
tar xvzf mailman-2.1.20.tgz
chown _mailman:_mailman /usr/local/mailman
chmod a+rw,g+ws /usr/local/mailman

Le moment est venu de lancer la fabrication de l’ensemble :

cd mailman-2.1.20
pip install dnspython
./configure --prefix=/usr/local/mailman --with-cgi-gid=_www --with-mail-gid=_mailman
make install
cd /usr/local/mailman
bin/check_perms -f

Répétez la dernière commande bin/check_perms -f tant que celle-ci vous indique des problèmes.

Et enfin on règle le mot de passe général (remplacez xxxx par un joli mot de passe de votre cru)  :

/usr/local/mailman/bin/mmsitepass xxxx

Configuration

La partie installation étant terminée, passons maintenant à la configuration.

Apache

Pour avoir accès à l’interface d’administration de Mailman vous aurez besoin d’activer le serveur Web. Plutôt facile à faire puisqu’un bouton suffit dans l’appli Server. Veillez toutefois à activer l’option « Activer Python », vu que Mailman est écrit dans ce language, ça pourrait aider !

Ensuite il faut créer un fichier spécifique pour Mailman, dans /private/etc/apache2/extra/httpd-mailman.conf contenant ceci :

ScriptAlias	/mailman/	/usr/local/mailman/cgi-bin/

Alias	/pipermail/	/usr/local/mailman/archives/public/
Alias	/icons/		/usr/local/mailman/icons/

<Directory "/usr/local/mailman/cgi-bin">
	order allow,deny
	allow from all
</Directory>
<Directory "/usr/local/mailman/archives/public">
	order allow,deny
	allow from all
</Directory>
<Directory "/usr/local/mailman/archives/public">
	Options FollowSymLinks
</Directory>

Puis créez un fichier /Library/Server/Web/Config/apache2/other/mailman.conf qui sera automatiquement chargé par Apache, et contenant cela :

# Mailman
Include /private/etc/apache2/extra/httpd-mailman.conf

Redémarrez ensuite le service Web et Mailman devrait normalement être accessible à l’adresse http://mon.serveur.com/mailman/admin/

Cron

Mailman s’appuie sur un certain nombre de tâches programmées pour effectuer des opérations récurrentes, comme l’envoi de rappels, etc. Commencez d’abord par vérifier s’il y a déjà des tâches programmées ou pas (toujours avec sudo) :

crontab -l

S’il y en a lancez cette commande pour ajouter les tâches de Mailman à celles existantes :

crontab ­-l | cat - /usr/local/mailman/cron/crontab.in | crontab

S’il n’y en a pas lancez celle-ci :

crontab /usr/local/mailman/cron/crontab.in

Postfix

Mailman s’appuiera sur Postfix (via des alias) pour envoyer ses mails, il faut donc configurer ce dernier afin qu’il le permette. Dans le fichier /Library/Server/Mail/Config/postfix/main.cf, trouvez la ligne contenant :

alias_maps = hash:/Library/Server/Mail/Config/postfix/aliases

Et complétez-la avec (n’oubliez pas la virgule du début) :

,hash:/usr/local/mailman/data/aliases

La ligne doit donc être :

alias_maps = hash:/Library/Server/Mail/Config/postfix/aliases,hash:/usr/local/mailman/data/aliases

Ajoutez dessous les deux lignes suivantes :

alias_database = hash:/Library/Server/Mail/Config/postfix/aliases,hash:/usr/local/mailman/data/aliases
local_recipient_maps = $alias_maps

La dernière ligne permet à Postfix de vérifier l’existence des pseudo-comptes mails de Mailman pour l’envoi de mails aux mailing-lists.

Il faut ensuite configurer Mailman pour lui faire utiliser Postfix. Ouvrez le fichier /usr/local/mailman/Mailman/mm_cfg.py et ajoutez la ligne suivante :

MTA = "Postfix"

Il faut ensuite générer les alias de Mailman :

/usr/local/mailman/bin/genaliases

Une fois Postfix configuré, il faut activer le service Mail côté application Server et ajouter le ou les domaines pour lesquels Mailman assurera son service.

Mailman

Démarrer Mailman se fait en lançant la commande suivante :

/usr/local/mailman/bin/mailmanctl start

Pour l’arrêter :

/usr/local/mailman/bin/mailmanctl stop

Pour le redémarrer :

/usr/local/mailman/bin/mailmanctl restart

J’en ai profité pour créer des liens symboliques vers ses fichiers logs dans un endroit accessible à l’application Console d’OSX :

mkdir /var/log/mailman
ln -s /usr/local/mailman/logs/error /var/log/mailman/error
ln -s /usr/local/mailman/logs/post /var/log/mailman/post
ln -s /usr/local/mailman/logs/qrunner /var/log/mailman/qrunner
ln -s /usr/local/mailman/logs/smtp /var/log/mailman/smtp
ln -s /usr/local/mailman/logs/subscribe /var/log/mailman/subscribe
ln -s /usr/local/mailman/logs/vette /var/log/mailman/vette
chmod o+r /usr/local/mailman/logs/*

Il faut ensuite créer un script de démarrage, dans /var/root/start_mailman.sh :

#!/bin/sh
/usr/local/mailman/bin/mailmanctl -s start
sleep 1

Changer les droits du script :

chmod 755 start_mailman.sh

Créer un fichier de démarrage OSX, dans /Library/LaunchDaemons/mailman.plist :

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
	<key>Disabled</key>
		<false/>
	<key>Label</key>
		<string>mailman</string>
	<key>OnDemand</key>
		<true/>
	<key>ProgramArguments</key>
		<array>
			<string>/var/root/start_mailman.sh</string>
		</array>
	<key>ServiceIPC</key>
		<false/>
	<key>RunAtLoad</key>
		<true/>
</dict>
</plist>

Et vérifier (et modifier) si besoin ses droits (644) et ses propriétaires et groupe (root:wheel)

Le chargement se fait alors avec :

launchctl load -w /Library/LaunchDaemons/mailman.plist

De cette manière Mailman sera lancé à chaque démarrage du système.

Sécurisation

On peut sécuriser (un peu) l’accès à l’interface d’administration de Mailman en le forçant à utiliser SSL.

Pour cela il faut :

Dans la liste des sites Web servis, s’assurer que le site web du serveur (port 80) est bien redirigé vers le site web sécurisé du serveur (port 443). Ça se fait simplement avec l’application Server. Pensez à redémarrer le service Web si vous y avez fait une modification.

Puis, dans le fichier /usr/local/mailman/Mailman/mm_cfg.py ajouter la ligne suivante :

DEFAULT_URL_PATTERN = 'https://%s/mailman/'

Et redémarrer Mailman :

/usr/local/mailman/bin/mailmanctl restart

L’administration sera alors disponible ici : https://mon.serveur.com/mailman/admin/

Divers

Si vous avez besoin de changer de domaine (par exemple quand vous transférez les archives d’un serveur à un autre), il faudra alors reconstruire les URLs qui s’y trouvent. Ça se fait avec la commande suivante :

/usr/local/mailman/bin/withlist -l -r fix_url <liste> -u <domaine> -v

Pour chacune des <liste> existantes en indiquant le nouveau <domaine>.

Puis pour reconstruire les archives :

/usr/local/mailman/bin/arch <liste>

Pour chacune des <liste> existantes.

Conclusion

Vous voilà avec un gestionnaire de mailing-lists opérationnel sur votre Mac.

Enjoy!

PS : J’ai pu faire des erreurs ou des omissions dans ce tutoriel. Dans ce cas n’hésitez-pas à me le faire savoir, en utilisant par exemple la page de contact ou en laissant un commentaire sous ce billet.

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/12501

Haut de page