Conversion de la boîte aux lettres d'Evolution à Thunderbird
Document version 1.0


Retour à la page d'accueil

Présentation

Beaucoup de méthodes disponibles sur Internet permettent de convertir des messages depuis Evolution vers Thunderbird. Souvent un ensemble de messages sélectionnés, parfois des dossiers entiers. Elles nécessitent une action manuelle par dossier, ce qui est fastidieux.

La méthode présentée ici permet la migration en une fois de la totalité des messages d'Evolution vers Thunderbird, avec toute l'arborescence des dossiers quel que soit le niveau.

Les contacts ne sont pas traités dans ce qui suit, seuls les emails et leurs dossiers sont migrés d'Evolution à Thunderbird.

L'opération a été réalisée en mars 2013.
Versions de logiciels avec lesquelles cette méthode a été employée :


1. Archiver la boîte aux lettres d'Evolution

Dans Evolution, aller dans le menu Fichier | Archiver les données d'Evolution...
. Cela produit un fichier de nom evolution-backup-AAAAMMJJ.tar.gz.

Copie d'écran Evolution


2. Extraire le fichier archivé

Extraire le contenu du fichier evolution-backup-AAAAMMJJ.tar.gz (par exemple evolution-backup-20130205.tar.gz) en ligne de commande avec tar :

sebastien@maison-nblin:~/tmp$ ls -al
total 549492
drwxrwx---  2 sebastien sebastien      4096 mars  31 14:13 .
drwxr-x--- 73 sebastien sebastien     12288 mars  31 13:34 ..
-rw-rw----  1 sebastien sebastien 562658850 mars  31 13:42 evolution-backup-20130205.tar.gz
sebastien@maison-nblin:~/tmp$ tar -zxf evolution-backup-20130205.tar.gz
sebastien@maison-nblin:~/tmp$ ls -al
total 549504
drwxrwx---  4 sebastien sebastien      4096 mars  31 14:14 .
drwxr-x--- 73 sebastien sebastien     12288 mars  31 13:34 ..
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:14 .config
-rw-rw----  1 sebastien sebastien 562658850 mars  31 13:42 evolution-backup-20130205.tar.gz
-rw-rw----  1 sebastien sebastien        60 févr.  5 20:11 evolution.dir
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:13 .local

Cela crée les dossiers .local (caché, l'afficher avec ls -a) et .config.
Les emails et leur arborescence se trouvent dans le répertoire .local/share/evolution/mail/local.

Note
Il est possible d'utiliser directement le répertoire de travail d'Evolution. Je préfère le passage par une archive pour garantir la cohérence des données et la réversibilité, cf. application du script corrige-maildir.sh décrit ci-dessous.


3. Corriger un bug dans les fichiers contenant les emails

Certains emails de l'arborescence extraite lors de l'étape précédente ne sont pas bien interprétés par l'outil d'import de Thunderbird. Ils sont affichés avec MAILER-DAEMON comme émetteur et aucun en-tête (destinataire, sujet, date/heure...) utile.
Ce bug est dû à la présence dans certains emails d'un caractère '>' avant le 'From' situé au tout début. Le script ci-dessous élimine ce caractère surnuméraire dans tous les fichiers de l'arborescence pour que l'import dans Thunderbird soit correct. J'ai constaté ce défaut sur quelques dizaines d'emails dans une boîte aux lettres de plusieurs milliers de documents.

Télécharger le fichier ci-dessous et l'enregistrer dans le répertoire où l'archive a été extraite, sous le nom corrige-maildir.sh, puis l'exécuter dans le répertoire .local/share/evolution/mail/local.

corrige-maildir.sh

La partie du fichier qui fait la correction est la suivante :

 find . -type f ! -regex ".*\(\.cmeta\|\.index\|\.data\).*" | while read f; do
  R=`head -n 1 "$f" | egrep -i "^>From\s"`
  if [ -n "$R" ]; then
    sed -i '1s/^>//' "$f"
    echo "Modifié '$f'"
  fi
done

Exécution du fichier avec la commande sh :

sebastien@maison-nblin:~/tmp$ cd .local/share/evolution/mail/local
sebastien@maison-nblin:~/tmp/.local/share/evolution/mail/local$ sh ../../../../../corrige-maildir.sh
...
sebastien@maison-nblin:~/tmp/.local/share/evolution/mail/local$ cd ../../../../..

4. Convertir le dossier extrait au format mbox

L'archive d'Evolution est au format 'maildir', il faut la convertir au format 'mbox'.
Pour faire cette conversion nous allons récupérer et exécuter le script maildir2mbox.py, de Frédéric Grosshans et Nathan R. Yergler, publié ici :
https://gist.github.com/1709069.

Le script prend deux paramètres, le répertoire maildir à convertir, et le fichier cible. Nous allons utiliser evolmbox comme nom de fichier cible.

  1. Récupérer le script à l'URL suivante :
    https://gist.github.com/nyergler/1709069/raw/2efc7b5bc1b2ea7de1ccaed469799a5ecb8c4cf8/maildir2mbox.py
    et l'enregistrer dans le répertoire où l'archive evolution a été extraite, avec le nom maildir2mbox.py.
  2. Exécuter le script dans le sous-répertoire contenant les emails organisés par dossier, et choisir evolmbox comme nom cible.
    sebastien@maison-nblin:~/tmp$ ls -al
    total 549508
    drwxrwx---  4 sebastien sebastien      4096 mars  31 14:16 .
    drwxr-x--- 73 sebastien sebastien     12288 mars  31 13:34 ..
    drwxrwx---  3 sebastien sebastien      4096 mars  31 14:14 .config
    -rw-rw----  1 sebastien sebastien      2548 mars  31 14:16 corrige-maildir.sh
    -rw-rw----  1 sebastien sebastien 562658850 mars  31 13:42 evolution-backup-20130205.tar.gz
    -rw-rw----  1 sebastien sebastien        60 févr.  5 20:11 evolution.dir
    drwxrwx---  3 sebastien sebastien      4096 mars  31 14:13 .local
    sebastien@maison-nblin:~/tmp$ python maildir2mbox.py .local/share/evolution/mail/local evolmbox
    ...
    

5. Récapitulatif des étapes précédentes

  (Archivage d'Evolution dans le répertoire ~/tmp)

sebastien@maison-nblin:~/tmp$ ls -al
total 549492
drwxrwx---  2 sebastien sebastien      4096 mars  31 14:39 .
drwxr-x--- 73 sebastien sebastien     12288 mars  31 13:34 ..
-rw-rw----  1 sebastien sebastien 562658850 mars  31 13:42 evolution-backup-20130205.tar.gz

sebastien@maison-nblin:~/tmp$ tar -zxf evolution-backup-20130205.tar.gz

sebastien@maison-nblin:~/tmp$ ls -al
total 549504
drwxrwx---  4 sebastien sebastien      4096 mars  31 14:40 .
drwxr-x--- 73 sebastien sebastien     12288 mars  31 13:34 ..
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:40 .config
-rw-rw----  1 sebastien sebastien 562658850 mars  31 13:42 evolution-backup-20130205.tar.gz
-rw-rw----  1 sebastien sebastien        60 févr.  5 20:11 evolution.dir
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:39 .local

  (Téléchargement depuis le navigateur du fichier corrige-maildir.sh)

sebastien@maison-nblin:~/tmp$ ls -al
total 549508
drwxrwx---  4 sebastien sebastien      4096 mars  31 14:40 .
drwxr-x--- 73 sebastien sebastien     12288 mars  31 13:34 ..
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:40 .config
-rw-rw----  1 sebastien sebastien      2548 mars  31 14:40 corrige-maildir.sh
-rw-rw----  1 sebastien sebastien 562658850 mars  31 13:42 evolution-backup-20130205.tar.gz
-rw-rw----  1 sebastien sebastien        60 févr.  5 20:11 evolution.dir
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:39 .local

sebastien@maison-nblin:~/tmp$ cd .local/share/evolution/mail/local

sebastien@maison-nblin:~/tmp/.local/share/evolution/mail/local$ sh ../../../../../corrige-maildir.sh
Modifié './.Archive.Vim/cur/1319369831.2453_15.maison-nblin:2,S'
Modifié './.Archive.Vim/cur/1319369831.2453_18.maison-nblin:2,S'
Modifié './.Archive.Vim/cur/1319369831.2453_6.maison-nblin:2,S'
Modifié './.Archive.Vim/cur/1319369831.2453_8.maison-nblin:2,S'
Modifié './.Archive.Vim/cur/1319369831.2453_1.maison-nblin:2,S'
...
Modifié './.Personnes.Truc Machin/cur/1319369808.2453_12.maison-nblin:2,S'
Modifié './.Archive.2006/cur/1319369834.2453_4.maison-nblin:2,S'

sebastien@maison-nblin:~/tmp/.local/share/evolution/mail/local$ cd ../../../../..
sebastien@maison-nblin:~/tmp$ ls -al
total 549508
drwxrwx---  4 sebastien sebastien      4096 mars  31 14:40 .
drwxr-x--- 73 sebastien sebastien     12288 mars  31 13:34 ..
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:40 .config
-rw-rw----  1 sebastien sebastien      2548 mars  31 14:40 corrige-maildir.sh
-rw-rw----  1 sebastien sebastien 562658850 mars  31 13:42 evolution-backup-20130205.tar.gz
-rw-rw----  1 sebastien sebastien        60 févr.  5 20:11 evolution.dir
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:39 .local

  (Téléchargement depuis le navigateur du fichier maildir2mbox.py)

sebastien@maison-nblin:~/tmp$ ls -al
total 549512
drwxrwx---  4 sebastien sebastien      4096 mars  31 14:42 .
drwxr-x--- 73 sebastien sebastien     12288 mars  31 13:34 ..
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:40 .config
-rw-rw----  1 sebastien sebastien      2548 mars  31 14:40 corrige-maildir.sh
-rw-rw----  1 sebastien sebastien 562658850 mars  31 13:42 evolution-backup-20130205.tar.gz
-rw-rw----  1 sebastien sebastien        60 févr.  5 20:11 evolution.dir
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:39 .local
-rw-rw----  1 sebastien sebastien      2177 mars  31 14:42 maildir2mbox.py

sebastien@maison-nblin:~/tmp$ python maildir2mbox.py .local/share/evolution/mail/local evolmbox
.local/share/evolution/mail/local -> evolmbox
| .Sent -> evolmbox.sbd/Sent
| .Archive -> evolmbox.sbd/Archive
| .Enregistrements.ababab -> evolmbox.sbd/Enregistrements.sbd/ababab
| .Personnes.Machine Bidule -> evolmbox.sbd/Personnes.sbd/Machin Bidule
...
| .cacccccac.acacçcbc babaca -> adcbbacd.sbd/cacccccac.sbd/acacçcbc babaca
| .acabbda.accacdabacd babcd -> adcbbacd.sbd/acabbda.sbd/accacdabacd babcd
| .acabbda.dbb -> adcbbacd.caa/acabbda.sbd/dbb
| .accabbcdcabacdc.acaa -> adcbbacd.sbd/accabbcdcabacdc.sbd/acaa
| .cacccccac.caabca ddbbdcd -> adcbbacd.sbd/cacccccac.sbd/caabca ddbbdcd
| .accabbcdcabacdc.bba -> adcbbacd.sbd/accabbcdcabacdc.sbd/bba
...
| .cacccccac.baca bccca -> adcbbacd.sbd/cacccccac.caa/baca bccca
| .cacccccac.bdbbac babaca -> adcbbacd.sbd/cacccccac.sbd/bdbbac babaca
| .accabbcdcabacdc.ccbaabbcbcdac -> adcbbacd.sbd/accabbcdcabacdc.sbd/ccbaabbcbcdac
| .cacccccac.bacba ccadacc -> adcbbacd.sbd/cacccccac.sbd/bacba ccadacc
| .acabbda.bbcôdc 2006 -> adcbbacd.sbd/acabbda.sbd/bbcôdc 2006
| .cacccccac.ababc ad bccbcda bbbbad -> adcbbacd.sbd/cacccccac.sbd/ababc ad bccbcda bbbbad
...
Done

sebastien@maison-nblin:~/tmp$ ls -al
total 549744
drwxrwx---  5 sebastien sebastien      4096 mars  31 14:43 .
drwxr-x--- 73 sebastien sebastien     12288 mars  31 13:34 ..
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:40 .config
-rw-rw----  1 sebastien sebastien      2548 mars  31 14:40 corrige-maildir.sh
-rw-rw----  1 sebastien sebastien    230931 mars  31 14:43 evolmbox
drwxrwx--- 21 sebastien sebastien      4096 mars  31 14:44 evolmbox.sbd
-rw-rw----  1 sebastien sebastien 562658850 mars  31 13:42 evolution-backup-20130205.tar.gz
-rw-rw----  1 sebastien sebastien        60 févr.  5 20:11 evolution.dir
drwxrwx---  3 sebastien sebastien      4096 mars  31 14:39 .local
-rw-rw----  1 sebastien sebastien      2177 mars  31 14:42 maildir2mbox.py
sebastien@maison-nblin:~/tmp$ 

Les manipulations précédentes ont créé un fichier, evolmbox, et un répertoire, evolmbox.sbd, que nous allons importer dans Thunderbird.


6. Installer le greffon ImportExportTools dans Thunderbird

1. Dans Thunderbird, aller dans le menu Outils | Modules complémentaires.

Menu Thunderbird Outils | Modules complémentaires

2. Rechercher ImportExportTools dans le catalogue et cliquer sur le bouton Installer.

Outil complémentaire ImportExportTools à installer


7. Réaliser l'import dans Thunderbird

1. Après redémarrage de Thunderbird, aller dans le menu (ajouté par le greffon ImportExportTools) Outils | Importer / Exporter au format «.mbo... | Importer un fichier Mbox.

Note
L'import est effectué dans le dossier sélectionné au moment où le menu est cliqué.
D'autre part, l'import n'est pas possible avec un compte de type IMAP ou groupe de discussion. Test effectué avec succès sur un compte de type POP3.

Menu Thunderbird Outils | Importer / Exporter au format «.mbo... | Importer un fichier Mbox

2. Sélectionner l'option Importer un ou plusieurs fichiers MBox, avec le(s) sous-dossier(s) associé(s) et cliquer sur OK.

Option Importer un ou plusieurs fichiers MBox, avec le(s) sous-dossier(s) associé(s)

Sélectionner le fichier evolmbox et cliquer sur Ouvrir.
L'import est effectué dans le dossier evolmbox.

Dossiers importés dans Thunderbird

C'est fini !