Article publié dans Linux Magazine 99, novembre 2007.
Suite à la migration des serveurs de messagerie, il fallait convertir les boîtes à lettres du format traditionnel mbox au format maildir. Comme l'un des admins en charge de la migration cherchait un programme pour effectuer cette conversion, je lui ai écrit le petit programme Perl suivant :
#!/usr/bin/perl use strict; use Email::Folder; use Email::LocalDelivery::Maildir; my ( $mbox, $mdir ) = @ARGV; Email::LocalDelivery::Maildir->deliver( $_, $mdir ) for Email::Folder->new($mbox)->messages;
qui s'utilise simplement en lui passant en premier argument le chemin vers le fichier mbox d'origine et en second argument le chemin vers la boîte maildir de destination.
Ce programme utilise deux modules du Perl Email Project, déjà évoqué
dans cette rubrique, dont le but est la manipulation des mails de manière
simple. Email::Folder
permet de parcourir une boîte ; ici, on crée un
objet qui ne sert qu'à fournir la liste des messages qu'on passe chacun
en argument de foreach
.
Au sein du foreach
on utilise
Email::LocalDelivery::Maildir
pour (comme son nom l'indique) délivrer
chaque message fourni. Ce second module est suffisamment bien fait pour
qu'on n'ait même pas besoin de créer un objet pour ça : on se contente
ici d'appeler la méthode de classe deliver()
avec le message courant
(qui est un objet Email::Simple
) et le chemin d'accès à la boîte de
livraison.
« C'est tout ? » est le seul commentaire de mon collègue, qui était
surpris de voir qu'un programme aussi court suffisait effectivement pour
faire le travail. :-)
» Perl Email Project - http://emailproject.perl.org/
Sébastien Aperghis-Tramoni <sebastien@aperghis.net>, Sophia.pm, Marseille.pm
Envoyez vos perles à perles@mongueurs.net
, elles seront peut-être
publiées dans un prochain numéro de Linux Magazine.
Copyright © Les Mongueurs de Perl, 2001-2011
pour le site.
Les auteurs conservent le copyright de leurs articles.