Perles de Mongueurs (37)

Article publié dans Linux Magazine 99, novembre 2007.

[+ del.icio.us] [+ Developers Zone] [+ Bookmarks.fr] [Digg this] [+ My Yahoo!]

Conversion de boîte à lettres

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

À vous !

Envoyez vos perles à perles@mongueurs.net, elles seront peut-être publiées dans un prochain numéro de Linux Magazine.

[IE7, par Dean Edwards] [Validation du HTML] [Validation du CSS]