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.

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!

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


CategoryInstallAlternc

AlternCMailmanInstallation (last edited 2019-05-28 10:38:21 by SeBas)