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 inclu 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 les patches:
Télécharger les patches pour le mailman:
et la mettre ici: /usr/share/alternc-mailman/patches
Avant d'appliquer, on peut rouler la commande patch avec --dry-run pour vérifier que tout est beau.
# patch -d/ -p1 < /usr/share/alternc-mailman/patches/mailman-true-virtual-2.1.23.patch patching file usr/lib/mailman/bin/newlist patching file usr/lib/mailman/bin/rmlist patching file usr/lib/mailman/Mailman/Gui/General.py patching file usr/lib/mailman/Mailman/Handlers/CookHeaders.py patching file usr/lib/mailman/Mailman/MailList.py patching file etc/mailman/postfix-to-mailman.py
touch /usr/share/alternc-mailman/patches/mailman-true-virtual.applied
If using postfix-to-mailman.py
- If you are using the postfix-to-mailman.py script with different dedicated domains for the mailing lists, you will find that newly created lists will not work anymore. Edit this script and add the line
mlist = mlist + "-" + domain
just before "from Mailman.Utils import list_exists", and the script will recognize the new format.
(from http://marcob.noblogs.org/post/2008/12/16/real-virtual-hosts-mailman-postfix)
Si la patch est appliquée après l'install de alternc
Les listes vont avoir le host_name (avec with_list, vous allez voir que m.host_name == listes.xyz.net en fonction de ce que c'était avant). Vous pouvez surment juste corriger le host name si le host name est changé ? J'imagine !
>>> m.Lock() >>> m.host_name='communautique.qc.ca' >>> m.Save() # c'est un alias de m.YOLOCommit() >>> m.Unlock()
Anciennement nécessaire: patch sur alternc-mailman
Dans le temps, on devait appliquer une patch sur alternc. Maintenant Alternc-mailman fait la détection de l'utilisation de la virtual mailman grâce au fichier qu'on "touch".
voir : https://github.com/AlternC/alternc-mailman/blob/master/bureau/class/m_mailman.php#L164
cd /usr/lib/alternc/ patch -p0 < alternc-mailman-vhost-fix.patch
Cette patch est dans l'ancien svn de koumbit...
Anciennement nécessaire: Problème avec Mailman 2.1.11 (Debian lenny)
Vous devez modifier le fichier modèle de configuration de mailman dans AlternC ou modifier directement le /etc/mailman/mm_cfg.py
Le problème est que par défaut Mailman 2.1.11 ajoute une validation au nom de la liste lors de la création. @ est nécessaire pour la patch du virtual mailman et est retiré par le nouveau mailman. http://sourceforge.net/project/shownotes.php?release_id=605074
Pour contourner le problème on doit être ajouter la ligne suivante:
ACCEPTABLE_LISTNAME_CHARACTERS ='[-+_.= a-z0-9@]'
Dev notes
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
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