Contents
Introduction 
Ce que l'on veut: du "true mailman virtual hosting", c-a-d, que foo@bar.com soit une liste differente de foo@quux.com.
Principe de base 
changer le nom de la liste pour foo_bar.com (ou similaire) tout en conservant l'adresse de mailing etant foo@bar.com
- faire que le "nom" de la liste inclue le domaine (ie la facon "propre")
La facon #2 est compliquée car elle demande beaucoup plus de connaissances des mécanismes internes de mailman.
Ce qui est réaliste de faire est #1: on ne change que le nom de la liste et la façon dont l'adresse est générée.
Il est certain que les alias autour de mailman doivent suivre sinon tout ceci est inutile. Mais pour l'instant on focuse sur mailman.
Dépendances 
Vous devez avoir Mailman, AlternC et alternc-mailman d'installé.
Pour appliquer une patch, vous avez besoin du package patch au minimum ou sinon patchutils qui est plus complet.
aptitude install patchutils
Application des patchs 
Téléchargez ces patches:
- Choisir la version approprié selon votre version de mailman:
Il faut patcher les binaires mailman, ceux installés par AlternC en se plaçant dans le bon répertoire :
cd /var/lib patch --dry-run -p0 < mailman-true-virtual.patch patch -p0 < mailman-true-virtual.patch
Il faut aussi patcher AlternC :
cd /usr/lib/alternc/ patch -p0 < alternc-mailman-vhost-fix.patch
Note: Lors de l'application de la patch de alternc-mailman-vhost-fix, ne soyez pas surprise du message suivant. C'est que le code du package alternc-mailman a changé très légèrement.
patching file m_mailman.php Hunk #3 succeeded at 134 with fuzz 1 (offset -1 lines). Hunk #4 succeeded at 155 (offset -1 lines).
Note: i have to fix the mailman-true-virtual.patch patch to handle original newlist calls:
===================================================================
RCS file: RCS/MailList.py,v
retrieving revision 1.1
diff -u -r1.1 MailList.py
--- MailList.py 2005/01/11 22:29:35 1.1
+++ MailList.py 2005/01/11 22:29:38
@@ -434,6 +434,8 @@
if '@' in name:
firstname, domain = name.split('@', 1)
name = "%s-%s" % (firstname, domain)
+ else:
+ firstname = name
# but we keep a sensible posting address
postingaddr = '%s@%s' % (firstname, domain)
try:
This patch is already included in the 2.1.4 patchset.
Notez bien: le qrunner doit être reparti, sinon vous allez trouver que vos modifs n'ont pas d'effet
Implantation notes 
Ces patches sont inspirées de: http://mithrandr.moria.org/blog/139.html.
- c'est facile de fucker un script: c'est du python alors gare au whitespace.
- pour débugger Mailman, il y a un testsuite dans /var/lib/mailman/tests. Pour l'utiliser, il faut faire des petites acrobaties, car ils ont besoin de Mailman (duh) mais aussi d'un module "email" qui vient avec la distribution source (de mailman).
/var/lib/mailman$ env PYTHONPATH=/home/anarcat/dpkg-staging/mailman-2.1.1/misc/email-2.4.3/ python -i Mailman tests/test_handlers.py
J'ai pas encore réussi à faire qqchose de viable avec ces machins, mais bon, c'est là. Par contre, ça donne une bonne idée de comment on "loader" mailman dans une session python:cd /var/lib/mailman && python -i Mailman
Il y a aussi l'inévitable withlist, qui permet de manipuler directement une liste comme un objet python:
/var/lib/mailman/bin/withlist collectif-koumbit.org
Voir la page MailMan pour plus d'exemples.
ToDo 
- Mailman/Cgi/create.py devrait normalement avoir une patch similaire à newlist mais le code est différent (pas de split @).
- Vérifier si l'interface alternc/lst_deldom fonctionne.
- Est-ce que ça ne prendrait pas conséquemment un lst_adddom dans add_dom(), pour, par exemple, jouer dans la config de VIRTUAL_HOSTS (que je n'ai toujours pas vérifié c'est quoi)?
intégrer les changements d'autres personnes ayant déjà pris ce chemin, j'ai seulement eu du feedback de Zoran Dzelajlija de mon envoi sur la liste mailman-dev.
Résultat 
saul:/usr/lib/mailman/bin# /var/lib/mailman/bin/newlist test@koumbit.net anarcat@anarcat.ath.cx test To finish creating your mailing list, you must edit your /etc/aliases (or equivalent) file by adding the following lines, and possibly running the `newaliases' program: ## test-koumbit.net mailing list test-koumbit.net: "|/var/lib/mailman/mail/mailman post test-koumbit.net" test-koumbit.net-admin: "|/var/lib/mailman/mail/mailman admin test-koumbit.net" test-koumbit.net-bounces: "|/var/lib/mailman/mail/mailman bounces test-koumbit.net" test-koumbit.net-confirm: "|/var/lib/mailman/mail/mailman confirm test-koumbit.net" test-koumbit.net-join: "|/var/lib/mailman/mail/mailman join test-koumbit.net" test-koumbit.net-leave: "|/var/lib/mailman/mail/mailman leave test-koumbit.net" test-koumbit.net-owner: "|/var/lib/mailman/mail/mailman owner test-koumbit.net" test-koumbit.net-request: "|/var/lib/mailman/mail/mailman request test-koumbit.net" test-koumbit.net-subscribe: "|/var/lib/mailman/mail/mailman subscribe test-koumbit.net" test-koumbit.net-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe test-koumbit.net" Apr 22 00:42:03 saul postfix/qmgr[14669]: E3A54105832E: from=<test-bounces@koumbit.net>, size=2437, nrcpt=1 (queue active)
Mais surtout:
saul:/usr/lib/mailman/bin# /var/lib/mailman/bin/newlist test@insomniaque.org anarcat@anarcat.ath.cx test To finish creating your mailing list, you must edit your /etc/aliases (or equivalent) file by adding the following lines, and possibly running the `newaliases' program: ## test-insomniaque.org mailing list test-insomniaque.org: "|/var/lib/mailman/mail/mailman post test-insomniaque.org" test-insomniaque.org-admin: "|/var/lib/mailman/mail/mailman admin test-insomniaque.org" test-insomniaque.org-bounces: "|/var/lib/mailman/mail/mailman bounces test-insomniaque.org" test-insomniaque.org-confirm: "|/var/lib/mailman/mail/mailman confirm test-insomniaque.org" test-insomniaque.org-join: "|/var/lib/mailman/mail/mailman join test-insomniaque.org" test-insomniaque.org-leave: "|/var/lib/mailman/mail/mailman leave test-insomniaque.org" test-insomniaque.org-owner: "|/var/lib/mailman/mail/mailman owner test-insomniaque.org" test-insomniaque.org-request: "|/var/lib/mailman/mail/mailman request test-insomniaque.org" test-insomniaque.org-subscribe: "|/var/lib/mailman/mail/mailman subscribe test-insomniaque.org" test-insomniaque.org-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe test-insomniaque.org" Hit enter to notify test@insomniaque.org owner... saul:/usr/lib/mailman/bin# Apr 22 00:38:26 saul postfix/smtpd[19424]: connect from saul[127.0.0.1] Apr 22 00:38:26 saul postfix/smtpd[19424]: 6F201105832E: client=saul[127.0.0.1] Apr 22 00:38:26 saul postfix/cleanup[18368]: 6F201105832E: message-id=<mailman.0.1082608705.19423.test-insomniaque.org@insomniaque.org> Apr 22 00:38:26 saul postfix/qmgr[14669]: 6F201105832E: from=<test-bounces@insomniaque.org>, size=2523, nrcpt=1 (queue active)
J'ai aussi le même résultat quand je créé la liste de AlternC, maintenant.
Suggestion 
La patch à Mailman est très utile. AlternC a déjà un package AlternC-Mailman pourquoi ne pas le mettre à jour à la dernière version de Mailman, appliquer cette patch et faire le suivi dans le CVS de AlternC directement. Les mises à jour du AlterC de koumbit en seront facilitées. -- SeBas 2005-02-26 19:07:10 EST
Présentement, alternc-mailman est correctement configuré. C'est seulement notre configuration locale à nous qui était bidon. Ce qu'il faudrait, par contre, dans alternc-mailman, ça serait un moyen d'appliquer la patch de vhosting à mailman automatiquement... C'est dans le bugtracker d'alternc, je crois. -- TheAnarcat 2005-02-26 19:13:19 EST
Le Wiki Koumbit