Contents
Pour la procédure pour installer alternc-mailman 3.2 sur alternc 3.3.10 sur un système en Debian Jessie (stable) voir la version antérieur de la page
AlternC mailman
Normalement lors de l'installation de Alternc, on veut aussi avoir mailman d'installer, configurer et intégré à Alternc.
Ici, on vise d'avoir une procédure pour installer alternc-mailman (virtual ou non) sous Debian Stretch. Comme la communauté a retiré la fonctionnalité de virtualisation de mailman, référence du commit on vise une réintégration question de pouvoir maintenir les alternc déjà installés. ticket sur github
Avant de voir la réintégration et un release upstream de alternc-mailman, on package une version dans notre répos debian. voir AlternCDeveloppement
la communauté d'alternc et mailman
- La communauté d'Alternc a décidé de tout bonnement distribuer le package mailman de debian avec des modifications propres... dans les répos de jessie. On ne suivra pas ce package pour le moment, si ça pête dans les mises à jour, on aime mieux demander de l'aide chez Debian. La raison? Retirer une patch de sécurité appliqué par debian sur le package mailman. Avoir un mailman compatible avec mod-itk d'apache et éviter d'utiliser modproxy dans l'administration web des listes... Perso, la configuration d'apache avec l'utilisation du proxy me semble raisonnable au lieu de compiler mailman... voir plus bas pour la conf
Une analyse partielle du package de mailman chez alternC
# apt-get download mailman=1:2.1.23-1~alternc.3 # dpkg -x mailman_1%3a2.1.23-1~alternc.3_amd64.deb .
On peut noter l'application de la patch de virtualisation partiellement appliqué selon la patch ici
et les fichiers du package.
On aimerait bien avoir les sources du package mailman compilé par alternc.org mais c'est pas documenté... où ça se trouve.
Je pense que j'ai trouvé les sources! http://debian.alternc.org/dists/jessie/main/source/mail/ et plus de détails ici: http://debian.alternc.org/dists/jessie/installed/
Voici ce qu'on retrouve dans le package nightly, mais j'ai pas trouvé de package pour 3.3, y semble avoir un release sans package de mis en ligne. /usr/share/doc/alternc-mailman/changelog.gz
alternc-mailman (3.3.11~zznightly201712130201) stable; urgency=low * Automatic Nightly build of AlternC-mailman * at commit f5cb7ad3a6940859b1cd29e82bb213bfdcfa81a5 -- Nightly Build <nightly@alternc.org> Wed, 13 Dec 2017 02:02:21 +0100 alternc-mailman (3.3) oldstable; urgency=low * remove apache-mpm-itk patch, replace it with a dependency on our OWN mailman * remove virtual list patch (unmaintained) * The panel web pages are now using csrf functions as of AlternC 3.x.11 * skipping major version => 3.2 existed somehow in AlternC's history * removing the debconf system for VirtualListPatch -- Benjamin Sonntag <benjamin@sonntag.fr> Sat, 7 Oct 2017 12:32:33 +0200
se préparer pour le débug de l'installation
Quelques commandes pour le débug... de alternc-mailman
pour envoyer un courriel en ligne de commande à la liste: swaks -f <tonmailouçavabouncer> -t <nomdelaliste@domain> --server localhost
log de postfix: tail -f /var/log/mail.log
log du bureau à la création de la liste: tail -f /var/log/alternc/bureau.log
- activer les logs des requetes de mysql voir /etc/mysql/my.cnf
- activer le mode verbose dans postfix avec -v (sur la ligne smtp et pipe de mailman) dans le fichier master.cf
pour télécharger un package spécifique pour fin d'analyse: # apt-cache madison mailman # apt-get download mailman=1:2.1.23-1~alternc.3
préparation
Assurez vous d'avoir etckeeper d'installer et tous les changements commités avant de faire la mise à jour, c'est beaucoup plus facile d'analyser les changements fait par le package alternc-mailman.
les répos
Donc, en plus du répos pour jessie/stretch pour avoir alternc 3.3.11
#distributed by puppet alternc::reposjessie deb http://debian.alternc.org jessie main
On veut notre répos et la version unstable (jusqu'au moment on passe le package dans "stable")
# echo "deb http://debian.koumbit.net/debian unstable main" > /etc/apt/sources.list.d/koumbit_unstable.list
(optionnel) On doit ajouter le répos de nightly pour avoir alternc-mailman
deb http://stable-3-3.nightly.alternc.org/ latest/
installer mailman
On vérifie qu'on va bien installer la bonne version de mailman
# apt-cache policy mailman mailman: Installé : 1:2.1.23-1+deb9u2 Candidat : 1:2.1.23-1+deb9u2 Table de version : *** 1:2.1.23-1+deb9u2 500 500 http://httpredir.debian.org/debian stretch/main amd64 Packages 500 http://security.debian.org stretch/updates/main amd64 Packages 100 /var/lib/dpkg/status 1:2.1.23-1~alternc.3 390 390 http://debian.alternc.org jessie/main amd64 Packages 1:2.1.23-1~alternc.2 390 390 http://debian.alternc.org wheezy/main amd64 Packages 1:2.1.18-2~bpo70+1 100 100 http://httpredir.debian.org/debian wheezy-backports/main amd64 Packages 1:2.1.15-1+deb7u1 500 500 http://httpredir.debian.org/debian wheezy/main amd64 Packages
On installe mailman
# apt-get install mailman
On veut aussi mettre le package sur "hold" pour être sur de voir l'application d'une mise à jour automatique.
# apt-mark hold mailman
Avoir sous la main le courriel du responsable des listes sur le serveur root@fqdn et le mot de passe maitre pour mailman.
Et on crée la liste "mailman" avec la commande
# newlist mailman
vérifier les modules d'apache2
Activer le module cgi et proxy_http dans apache2, si c'est pas déjà fait.
# a2enmod cgi # a2enmod proxy_http # service apache2 restart
Installer alternc-mailman maintenant!
Avant d'aller plus loin, pour éviter des mauvaises surprises et contrôler le flow de courriel qui sort d'alternc-mailman, c'est une très bonne idée de mettre notre adresse comme alias de root. Vous avez voir si alternc-mailman génére trop de mailman suite à l'installation ou encore à la création de liste.
Vérifier les versions disponibles:
# apt-cache policy alternc-mailman alternc-mailman: Installé : (aucun) Candidat : 3.2 Table de version : 3.3.1+nmu1+0~20180516194627.17~1.gbpe7e68d 1 1 http://debian.koumbit.net/debian unstable/main amd64 Packages 3.2 390 390 http://debian.alternc.org wheezy/main amd64 Packages root@alternc-dev:~# apt-cache policy alternc-mailman alternc-mailman: Installé : (aucun) Candidat : 3.2 Table de version : 3.3.1+nmu1+0~20180516194627.17~1.gbpe7e68d 1 1 http://debian.koumbit.net/debian unstable/main amd64 Packages 3.2 390 390 http://debian.alternc.org wheezy/main amd64 Packages
Installer le package alternc-mailman de notre répos
apt-get install alternc-mailman=3.3.1+nmu1+0~20180516194627.17~1.gbpe7e68d
Voici ce que ça donne +- lors de l'installation.
# apt-get install alternc-mailman Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les NOUVEAUX paquets suivants seront installés : alternc-mailman 0 mis à jour, 1 nouvellement installés, 0 à enlever et 1 non mis à jour. Il est nécessaire de prendre 34,8 ko dans les archives. Après cette opération, 169 ko d'espace disque supplémentaires seront utilisés. Réception de : 1 http://stable-3-3.nightly.alternc.org/ latest/ alternc-mailman 3.3.11~zznightly201712130201 [34,8 kB] 34,8 ko réceptionnés en 0s (108 ko/s) [master 3e75de8] saving uncommitted changes in /etc prior to apt run Author: sebas <sebas@alternc0.koumbit.net> 5 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 apt/sources.list.d/alterncNightly.list Sélection du paquet alternc-mailman précédemment désélectionné. (Lecture de la base de données... 47503 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../alternc-mailman_3.3.11~zznightly201712130201_all.deb ... Dépaquetage de alternc-mailman (3.3.11~zznightly201712130201) ... Paramétrage de alternc-mailman (3.3.11~zznightly201712130201) ... fixing private archive rights for mailman Installing mysql table ERROR 1062 (23000) at line 1: Duplicate entry 'mailman-default' for key 'PRIMARY' installing required apache modules Module rewrite already enabled [Wed Jan 03 11:10:48.684918 2018] [alias:warn] [pid 6165] AH00671: The ScriptAlias directive in /etc/apache2/conf-enabled/serve-cgi-bin.conf at line 11 will probably never match because it overlaps an earlier ScriptAlias. Module cgi already enabled ********************************************** * * * ALTERNC-MAILMAN ACTION REQUESTED * * * * Please run alternc.install to fully deploy * * Then change your quota to activate Mailman * * * ********************************************** [master c95e9b1] committing changes in /etc after apt run Author: sebas <sebas@alternc0.koumbit.net> 4 files changed, 121 insertions(+), 48 deletions(-) create mode 100644 alternc/templates/mailman/mm_cfg.py create mode 100644 cron.d/alternc-mailman Scanning processes... Scanning kernel images... Running kernel seems to be up-to-date. No services need to be restarted.
Comme indiqué, on roule ça!
# alternc.install
On veut aussi mettre le package sur "hold" pour être sur de voir l'application d'une mise à jour automatique.
# apt-mark hold alternc-mailman
VirtualMailman pour 2.1.18
On veut normalement aussi le VirtualMailman pour permettre de faire des listes sur tous les domaines installés dans le AlternC.
Jessie est livré avec mailman 2.1.18 et la patch pour virtual mailman n'est pas incluse dans le paquet alternc-mailman, on doit donc l'appliqué après l'installation.
Voir la page VirtualMailman pour les détails. VirtualMailman#Application_des_patchs
En cas de problème (ça arrive toujours)
Il y a des petits bugs comme décrit ici: https://github.com/AlternC/AlternC/issues/15
Avec la nouvelle version du package 3.3.1 (un package fait maison), il y a moins de bugs!
mailman-alternc bug dans l’installation
C'Est aussi réglé upstream ça, c'était plus un bug alternc que de alternc-mailman
Ici, on a la version 3.3.11 avec la version alternc-mailman_3.3.1+nmu1+0~20180516194627.17~1.gbpe7e68d_all.deb
ça bug avec l'erreur
Stack trace: #0 {main} thrown in /usr/lib/alternc/quota_init on line 26
Sélection du paquet alternc-mailman précédemment désélectionné. (Lecture de la base de données... 51482 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../alternc-mailman_3.3.1+nmu1+0~20180516194627.17~1.gbpe7e68d_all.deb ... Dépaquetage de alternc-mailman (3.3.1+nmu1+0~20180516194627.17~1.gbpe7e68d) ... Paramétrage de alternc-mailman (3.3.1+nmu1+0~20180516194627.17~1.gbpe7e68d) ... PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /usr/lib/alternc/quota_init:26 Stack trace: #0 {main} thrown in /usr/lib/alternc/quota_init on line 26 dpkg: erreur de traitement du paquet alternc-mailman (--configure) : le sous-processus script post-installation installé a retourné une erreur de sortie d'état 255 Des erreurs ont été rencontrées pendant l'exécution : alternc-mailman [master 4e4eab2] committing changes in /etc after apt run
mailman trop verbeux
c'est rentré upstream 21 juin 2018, section à supprimer après le prochain release de alternc-mailman
https://github.com/AlternC/alternc-mailman/blob/master/mm_cfg.py#L85
J'essaie de pousser le fix upstream... on verra.
https://github.com/AlternC/alternc-mailman/commit/417cbc70a0c148037bd317191692191e88a4bd03
Lors de la création de liste mailman par défaut, mailman envoie un courriel avec la liste des alias...
Pour éviter que le script envoie un courriel pareil avec les alias à ajouter lors de la création de la liste, ajouter la conf suivante à /etc/mailman/mm_cfg.py
MTA = None # So that mailman skips aliases generation
Pour achever la création de votre liste de diffusion, vous devez modifier votre fichier /etc/aliases (ou équivalent) en y ajoutant les lignes suivantes et peut être exécuter le programme `newaliases': liste de diffusion ## a-alternc0.koumbit.net a-alternc0.koumbit.net: "|/var/lib/mailman/mail/mailman post a-alternc0.koumbit.net" a-alternc0.koumbit.net-admin: "|/var/lib/mailman/mail/mailman admin a-alternc0.koumbit.net" a-alternc0.koumbit.net-bounces: "|/var/lib/mailman/mail/mailman bounces a-alternc0.koumbit.net" a-alternc0.koumbit.net-confirm: "|/var/lib/mailman/mail/mailman confirm a-alternc0.koumbit.net" a-alternc0.koumbit.net-join: "|/var/lib/mailman/mail/mailman join a-alternc0.koumbit.net" a-alternc0.koumbit.net-leave: "|/var/lib/mailman/mail/mailman leave a-alternc0.koumbit.net" a-alternc0.koumbit.net-owner: "|/var/lib/mailman/mail/mailman owner a-alternc0.koumbit.net" a-alternc0.koumbit.net-request: "|/var/lib/mailman/mail/mailman request a-alternc0.koumbit.net" a-alternc0.koumbit.net-subscribe: "|/var/lib/mailman/mail/mailman subscribe a-alternc0.koumbit.net" a-alternc0.koumbit.net-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe a-alternc0.koumbit.net"
problème de "user unknow" lors d'un envoi à une liste
- On doit redémarrer postfix/mailman après l'application de la patch, c'est mystérieux ...
Rapport de bug upstream https://github.com/AlternC/alternc-mailman/issues/8
Reste qu'on veut une patch. là voila!
https://github.com/AlternC/alternc-mailman/issues/8#issuecomment-289867624
- Références
débug pour un client : 22779
Tiens, on a déjà traité ce problème avec un hack dans la db HagMaintenance#Liste_avec_une_addresse_.2F_faire_marcher_une_liste_entre_postfix
problème pour avec l'interface web de mailman avec apache en mode itk sous alternc
On prépare un PR pour régler ce bug.
https://github.com/AlternC/alternc-mailman/issues/14
[Mon Mar 20 14:26:01.663782 2017] [mpm_itk:warn] [pid 6616] (itkmpm: pid=6616 uid=33, gid=33) itk_post_perdir_config(): setgid(1999): Operation not permitted [Mon Mar 20 14:26:01.663992 2017] [mpm_itk:warn] [pid 6616] Couldn't set uid/gid/priority, closing connection.
C'est causé parce qu'on utilise l'utilisateur 1999 (alterncpanel) du vhost du bureau. Par exemple, si on change le user même si on place https://github.com/AlternC/alternc-mailman/blob/3.2/mailman.conf#L7 www-data ça ne fonctionne pas toujours...
Si on change l'utilisation 1999 à www-data pour rouler le panel de control, ça fonctionne. On ne veut pas vraiment ça par contre.
solution B. patcher mailman...
voici ce que Benjamin un dev d'alternc propose.
https://github.com/AlternC/alternc-mailman/tree/master/mailman-itk-fix
Ce qui me semble une très mauvaise idée. On ne veut pas avoir à maintenir des packages de mailman.
Trouver la référence... upstream i.e. chez debian du pourquoi de cette patch.
voici la patch sur le package mailman par debian
solution A. utiliser un reverse proxy d'apache
C'est une solution proposé ici https://github.com/AlternC/alternc-mailman/blob/3.2/src/alternc-mailman.conf#L17
On a seulement besoin de la ligne "ProxyPassReverse" selon ce qui est raconté ici
https://github.com/soul9/alternc-mailman/commit/8e22eaea805866a7efb4f0eb57e75917d1f25614
Ça fonctionne avec quelques modifications les voici:
Modification du Virtual_host_overview
Ajouter le paramêtre suivant dans le /etc/mailman/mm_cfg.py
"VIRTUAL_HOST_OVERVIEW = no"
Sinon, l'url pour le panorama de toutes les listes, utilise le url interne (mailman.localdomain) et non du proxy.
Référence: https://mail.python.org/pipermail/mailman-users/2010-September/070286.html
AUSSI! sinon, on n'a pas le panorama de tous les listes sur le serveur...
Modification du REQUEST_URI
Un autre problème, on doit remplacer /cgi/ par /cgi-bin/ sinon, on ne peut pas administrer les listes par l'interface web, ça donne un 404.
/etc/mailman/mm_cfg.py
os.environ["REQUEST_URI"] = os.environ["REQUEST_URI"].replace("/cgi/", "/cgi-bin/");
mais ça donne ça lors de la création de la liste... ou encore au redémarrage de mailman...
Traceback (most recent call last): File "/usr/lib/mailman/bin/newlist", line 99, in <module> from Mailman import mm_cfg File "/var/lib/mailman/Mailman/mm_cfg.py", line 91, in <module> os.environ["REQUEST_URI"] = os.environ["REQUEST_URI"].replace("/cgi/", "/cgi-bin/"); File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__ raise KeyError(key) KeyError: 'REQUEST_URI'
voici une petite modification à la ligne... à la place, on peut mettre ça.
pirulo = os.environ.get('REQUEST_URI') if pirulo is not None: os.environ["REQUEST_URI"] = os.environ["REQUEST_URI"].replace("/cgi/", "/cgi-bin/")
Maintenant, on peut créer des listes, redémarrer mailman ainsi que faire l'administration des listes. ça fonctionne.
à tester
Peut-être qu'on pourrait éliminer un truc de REQUEST_URI avec les lignes suivantes... j'ai trouvé ça sur ques0 ça a été fait par Antoine.
RewriteEngine On RewriteCond %{HTTP_HOST} !mailman.localdomain RewriteRule ^/cgi-bin/mailman/ http://mailman.localdomain/cgi-bin/mailman/ [P,L]
à la place de ça
ProxyPass /cgi-bin/mailman/ http://mailman.localdomain/cgi/mailman/
dans le fichier mailman/apache.conf
Références
La documentation upstream pour l'installation est ici: https://alternc.org/wiki/Documentation/Fr/Administrateur/Installer-3.x