Récup de mailboxes avec Cyrus Imap

Le problème:

Une migration de machine sous Debian GNU/Linux 4.0 (disque dur explosé) où j'ai récupéré les contenus de /var/spool/cyrus et /var/lib/cyrus "bruts de fonderie", mais en changeant de version d'OS, en passant de 32-bit à 64-bit, pour 1000 raisons, Cyrus Imapd refuse de se relancer.

La bonne nouvelle: tous les mails sont en clair dans /var/spool/cyrus/mail. Cool. La mauvaise: l'index des mailboxes (la liste) est foutue, irrécupérable, et binaire. HOU!

Idée de comment réparée trouvée sur:

http://artisan.karma-lab.net/fr/node/1084

(1000 mercis...)

Donc, comment faire?

Se contenter de récupérer /var/spool/cyrus/mail (écraser à partir du backup) et partir d'une install dans /var/lib/cyrus "from scracth", tel que l'OS l'installe.

Ensuite l'idée est de reconstruire l'index dans /var/lib/cyrus/mailboxes.db à partir de l'arborescence de /var/spool/cyrus/mail.

Exécuter le script suivant, récupérer son contenu et le mettre dans un fichier, par exemple /tmp/mailboxes.txt.

  #!/bin/sh
  
  SPOOL_CYRUS_MAIL=/var/spool/cyrus/mail
  
  cd $SPOOL_CYRUS_MAIL
  
  for mb in * ; do
    cd $mb
  
    if [ -d user ] ; then
      cd user
      find . -type d |
        sed "s/\.\///g" |
        sed "s/\//\./g" |
        sed "s/\([a-z]*\)\(.*\)/user\.\1\2\t0\tdefault\t\1\tlrswipcda/g"
      cd ..
    fi
    cd ..
  done | grep -v ".." | sort -u

L'idée est que la syntaxe du fichier soit la même que celle du fichier renvoyé par:

  /usr/sbin/ctl_mboxlist -d

Arrêter le serveur cyrus, et importer les infos du fichier (sous le compte cyrus):

  /usr/sbin/ctl_mboxlist -u /tmp/mailboxes.txt
  /usr/sbin/ctl_mboxlist -d

Puis:

  /usr/sbin/cyrreconstruct

L'option -rfx de cyrreconstruct peut s'avérer utile...

Voir aussi à lancer des commandes sam depuis cyradm pour mettre à jour les ACL sur les boîtes.

Redémarrer le serveur.

Voilà!

Les infos type "lu"/"pas lu" sont perdues, mais au moins le contenu des mails est là. Ouf.

Page générée par UWiKiCMS 1.1.8 le Thursday 21 November 2024.
Copyright © 2009 Christian Mauduit. Document placé sous licence GNU FDL.
Mis à jour le Tuesday 06 October 2009.