Linux:Passer de CyrusImap 2.1 à 2.2 sous Debian

Un article de Djjnet.

Ma configuration des dossiers : configdirectory: /var/lib/cyrus partition-default: /var/spool/cyrus

Sommaire

Sauvegarder les boîtes mails

/etc/init.d/cyrus21 stop
tar -cf save/cyrus.tar /var/lib/cyrus/
tar -cf save/mails.tar /var/spool/cyrus/

Sauvegarder la configuration

cp /etc/imap.conf save/
cp /etc/cyrus.conf save/

Supprimer Cyrus 2.1 et ses fichiers de configuration

apt-get remove --purge cyrus21-admin cyrus21-clients cyrus21-common  cyrus21-dev cyrus21-doc cyrus21-imapd cyrus21-murder cyrus21-pop3d libcyrus-imap-perl21

apt vous demandera si vous voulez garder les dossiers contenant les emails, gardez les. La sauvegarde est juste en cas d'erreur.

Installer Cyrus 2.2

apt-get install cyrus-admin-2.2 cyrus-clients-2.2 cyrus-common-2.2 cyrus-doc-2.2 cyrus-imapd-2.2 cyrus-murder-2.2 cyrus-pop3d-2.2

Rétablir votre configuration

Comparer avec les fichiers imapd.conf et cyrus.conf sauvegardés
Dans imapd.conf :
Principalement les paramètres des dossiers :

configdirectory: /var/lib/cyrus
partition-default: /var/spool/cyrus

Voir aussi le paramètre lmtpsocket si vous utilisez postfix :

lmtpsocket: /var/spool/postfix/public/lmtp

Et dans cyrus.conf :

imap            cmd="imapd -U 30" listen="imap" prefork=5 maxchild=100
pop3            cmd="pop3d -U 30" listen="pop3" prefork=3 maxchild=50
lmtpunix        cmd="lmtpd" listen="/var/spool/postfix/public/lmtp" prefork=2 maxchild=20

Vérifier les différences de format des fichiers de données

diff -u /usr/lib/cyrus/cyrus-db-types.active /usr/lib/cyrus/cyrus-db-types.txt

Pour moi seul deliver.db a un changement de version de base Berkeley.
Installer l'outil de conversion :

apt-get install db4.2-util

Pour convertir :

cd /var/lib/cyrus 

puis :

db4.2_upgrade deliver.db

Des erreurs dans les logs m'ont fait effectuer la même opération pour les fichiers du dossier :

cd /var/lib/cyrus/db 

puis :

db4.2_upgrade *

Avant de lancer cyrus dans sa nouvelle version :

mv /usr/lib/cyrus/cyrus-db-types.active /usr/lib/cyrus/cyrus-db-types.active.bak
/etc/init.d/cyrus2.2 start