Avant de mettre en place la récupération des mails provenant de Yahoo sur une liste EZMLM, il est nécessaire de récupérer, dans un fichier mbox, les mails des listes Yahoo via le robot Yahoo2Mbox écrit en Perl.
Nous avons utilisé la version 0.24 de ce robot en modifiant, pour accèder aux listes de discussion françaises, le fichier à la ligne 498 : $lang{of} = 'sur';
Pour éviter de se faire blacklister par Yahoo, il ne faut pas lancer ce script Perl directement mais utiliser sous Windows le fichier .bat fournit par Chris Gamlin,dont la démarche d'utilisation est décrite sur le site du robot Perl Yahoo2Mbox (paragraphe "Solution").
Dans notre cas, nous avons eu besoin de le faire tourner sous Linux, donc nous l'avons retranscrit en Shell Bash.

Une fois, le fichier mbox récupéré, il faut l'importer dans la liste EZMLM avec un autre script Perl mbox2ezmlm.pl dont la procédure d'utilisation est expliquée sur le site d'Ezmlm-www. Nous avons modifié ce script pour qu'il soit plus permissif au niveau de la lecture du fichier mbox et pour qu'il corrige le header date si nécessaire. Le fichier est disponible sur ce serveur.

Enfin, pour pouvoir abonner une liste Ezmlm à Yahoo, il a été nécessaire de recompiler l'utilitaire ezmlm-send. Pour cela, il suffit de copier le fichier ezmlm-send.c en ezmlm-send-yahoo.c et de modifier dans ce dernier la ligne 589 en remplaçant "Mailing-List:" par "Moiling-List:" (c'est pas beau mais rapide...). De cette façon, il ne refuse plus les messages qui proviennent d'une autre liste de discussion.

Voici la démarche pas à pas :

  1. Se rendre sur votre serveur dans un espace où vous déposerez vos fichiers mbox, par exemple : cd /home/mon_compte/forums/
  2. Créer un dossier "archives" : mkdir ./archives
  3. Créer une liste avec QmailAdmin portant le même nom que la liste Yahoo sur votre domaine (par exemple, mon-domaine.org) et modifier seulement : autoriser tout le monde à poster sur la liste, autoriser l'archivage et modifier le préfixe en utilisant le même que sur Yahoo
  4. Inscrivez vous comme receveur des messages de cette liste
  5. Inscrire la liste exemple@mon-domaine.org à la liste Yahoo exemple@yahoogroupes.fr en utilisant l'email exemple-subscribe@yahoogroupes.fr via Thunderbird et l'extension Virtual Identity
  6. Répondre au message de confirmation envoyé par Yahoo toujours avec l'identité virtuelle en modifiant l'adresse de réponse par celle d'envoi de Yahoo
  7. Depuis votre machine personnelle lancer la récupération des messages Yahoo dans un fichier mbox : ./yahooscript.sh -g exemple -m ./archives/exemple.mbox --user1 mon_compte_yahoo1 --pass1 mot_de_passe_compte_yahoo1 --user2 mon_compte_yahoo2 --pass2 mot_de_passe_compte_yahoo2
  8. Envoyer le fichier mbox sur le serveur via ftp dans le dossier /home/mon_compte/forums/archives/
  9. Passer sous le compte vpopmail : su vpopmail
  10. Éditer le fichier editor de la liste de discussion exemple et remplacer le contenu par le contenu indiqué à la fin de cet article (en modifiant le nom de la liste suivant les besoins).
  11. La suppression de l'utilisation d'ezmlm-reject dans le fichier editor supprime l'affichage de la liste de discussion dans QmailAdmin. Cela nous arrange car nous voulons qu'elle soit inaccessible depuis QmailAdmin.
  12. Créer une copie du fichier editor : cp editor editor.sauv
  13. Enfin un dernier script qu'il vous faudra modifier, permet l'alimentation des archives de la liste ezmlm avec les anciens messages Yahoo et leur indexation : ./transfert-vers-ezmlm.sh -l exemple -n nbre_message_max

Contenu du fichier editor :

| grep -i '^sender: exemple@yahoogroupes.fr' || (echo "Ssender incorrect! Different de : exemple@yahoogroupes.fr"; exit 100; )
| grep -i '^reply-to: exemple@yahoogroupes.fr' || (echo "Reply-to incorrect! Different de : exemple@yahoogroupes.fr"; exit 100; )
|/usr/local/bin/ezmlm/ezmlm-send-yahoo -C '/home/vpopmail/domains/mon_domaine/exemple'
|/usr/local/bin/ezmlm/ezmlm-warn '/home/vpopmail/domains/mon_domaine/exemple' || exit 0

Notes : En cas de modification de la liste via Qmail le fichier editor sera modifié, il est donc impératif de ne pas le faire. En cas de problème, utiliser la copie de sauvegarde... Toutefois, puisqu'on a supprimer la ligne contenant la commande reject d'ezmlm, la liste de diffusion disparait de QmailAdmin... Elle n'est donc plus accessible ni modifiable par QmailAdmin...