Notions
Afin de restaurer correctement la boite de messagerie souhaitée, il va falloir reconstruire les arborescences des data et metadata qui se trouvent respectivement aux emplacements suivants :
/var/spool/cyrus/data/
/var/spool/cyrus/meta/
Par exemple sur le domaine bluemind.loc
on a :
/var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/
/var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/
Les données de sauvegarde se trouvent dans des sous-répertoires correspondant, dans le répertoire /var/backups/
.
Le spool de la sauvegarde correspondante est alors le suivant (ici pour la 1234ème sauvegarde) :
/var/backups/bluemind/dp_spool/rsync/192.168.122.56/mail/imap/1234/var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/
/var/backups/bluemind/dp_spool/rsync/192.168.122.56/mail/imap/1234/var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/
Restauration d'un utilisateur
Données utilisateurs
Les données (mails) d'un utilisateur sont stockées sur le serveur dans le répertoire /var/spool/cyrus/data/domain_loc/[...]/[n]/user/nom_user/
(où [n] est la 1ère lettre du login, ici *n*om_user)
Les méta-données sont stockées sur le serveur dans le répertoire /var/spool/cyrus/meta/domain_loc/[...]/[n]/user/nom_user/
. Il s'agit des données relatives aux mails : statut de lecture, drapeaux, indicateur de réponse ou transfert, etc.
Autant que possible, il est préférable d'effectuer une sauvegarde des méta-données. Cependant, en l'absence de celle-ci, la restauration des messages reste possible, ils seront alors présents dans leur état d'origine : ils seront considérés comme non lus, non répondus, sans statut particulier.
Pré-requis et données exemples
- le serveur sur lequel sont restaurées les données, s'il n'est pas le serveur d'origine, doit avoir les mêmes caractéristiques que celui-ci : même nom de domaine, même adresse IP, même url, même version de BlueMind, etc.
- le nom d'utilisateur doit être identique à celui d'origine
Pour la procédure, nous utiliserons l'utilisateur suivant :
- domaine
bluemind.loc
- nom d'utilisateur
jdoe
Les données :
- les données de messagerie (voir ci-dessus) sont déposées sur le serveur cible dans les répertoires suivants :
- données :
/var/backups/jdoe/
- méta-données :
/var/backups/jdoe-meta/
- la restauration de ses données se fera dans un sous-dossier de sa messagerie nommé
restore_dir
(ce nom est libre, on pourra par exemple utiliser la date du jour ou autre convention)
Procédure
Remarque |
---|
Dans les chemins de répertoires ou certaines lignes de commandes, le point '.' du nom de domaine est remplacé par un underscore '_'. Veillez à bien effectuer ce remplacement lors de l'adaptation des commandes à votre domaine. |
Cas de la restauration dans une autre boîte que celle de l'utilisateur
Pour restaurer les messages d'un utilisateur dans une autre boîte que celle d'origine, on pourra au choix :
- effectuer une restauration sans les méta-données (voir ci-dessous)
- effectuer une restauration avec les méta-données (voir ci-dessous) puis :
- se connecter avec le login de l'utilisateur cible
- se rendre dans la gestion des paramètres > Messagerie > onglet Gestion des partages > cliquer sur « Enregistrer »
Il n'est pas ici nécessaire d'effectuer une modification, il faut juste forcer le ré-enregistrement des partages.
Restauration avec les méta-données
Connecté au serveur en tant que root
:
- se placer dans
/var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/j/user/jdoe/
copier les données a restaurer et donner les droits adéquats au répertoire ainsi créé :
Bloc de code |
---|
mv /var/backups/jdoe/ restore_dir
chown -R cyrus:mail restore_dir
chmod -R u+rwx restore_dir |
- se placer dans
/var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/j/user/jdoe/
copier les méta-données a restaurer dans un sous répertoire qui porte le même nom que celui utilisé pour les données :
Bloc de code |
---|
mv /var/backups/jdoe-meta/ restore_dir
chown -R cyrus:mail restore_dir
chmod -R u+rwx restore_dir |
exécuter la commande cyrus de reconstruction de la boîte :
Bloc de code |
---|
/usr/lib/cyrus/bin/reconstruct -r -f user/jdoe@bluemind.loc |
Restauration en l'absence des méta-données
Remarque |
---|
Dans les chemins de répertoires ou certaines lignes de commandes, le point '.' du nom de domaine est remplacé par un underscore '_'. Veillez à bien effectuer ce remplacement lors de l'adaptation des commandes à votre domaine. |
Connecté au serveur en tant que root
:
- se placer dans
/var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/j/user/jdoe/
copier les données a restaurer et donner les droits adéquats au répertoire ainsi créé :
Bloc de code |
---|
mv /var/backups/jdoe/ restore_dir
chown -R cyrus:mail restore_dir
chmod -R u+rwx restore_dir |
reproduire l'arborescence pour les méta-données :
Bloc de code |
---|
find restore_dir/ -type d -exec mkdir /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/j/user/jdoe/{} \; |
se placer dans le dossier des méta-données de l'utilisateur, créer les fichiers cyrus.header et positionner les droits adéquats :
Bloc de code |
---|
cd /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/j/user/jdoe/
find restore_dir -type d -exec touch {}/cyrus.header \;
chown -R cyrus:mail restore_dir |
exécuter la commande cyrus de reconstruction de la boîte :
Bloc de code |
---|
/usr/lib/cyrus/bin/reconstruct -p bluemind_loc -r -f user/jdoe/restore_dir@bluemind.loc |
Finalisation - dans tous les cas
exécuter la commande d'application du quota :
Bloc de code |
---|
/usr/lib/cyrus/bin/quota -f -d bluemind.loc user.jdoe |
À ce stade, les mails doivent-être visibles depuis le webmail. Si ce n'est pas le cas, s'assurer de bien rafraîchir le cache de l'arborescence de la façon suivante :
- connecté à BlueMind en tant que l'utilisateur, cliquer sur les engrenages en bas à gauche de la liste des dossiers > « Organiser les dossiers » :
- le dossier
restore_dir
et son arborescence doivent être visibles dans l'arborescence - revenir dans le webmail sans faire d'action particulière
- le dossier et les mails restaurés doivent-être alors être visibles
Pour terminer :
- si il y a un quota sur la boîte, s'assurer qu'il n'est pas atteint ; le cas échéant, augmenter temporairement ce dernier.
- dans la console d'administration, connecté en tant qu'admin0 :
- se rendre dans la gestion de l'utilisateur > onglet maintenance
- cocher « Réparer l'indexation de la boîte »
- cliquer sur Enregistrer
Restauration d'une boîte partagée
Données de la boîte
Contrairement aux arborescences des dossiers d'utilisateurs, les sous-répertoires des boîtes partagées ne sont pas situés dans le répertoire principal de la boîte mais dans un sous-répertoire correspondant à leur première lettre.
Ainsi, le sous-répertoire nommé "restore-20171003" de la boîte partagée contact ne se situe pas dans /var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/c/contact
de la boîte mais dans le répertoire /var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/r/contact
Veillez donc à porter une attention particulière à l'arborescence en recopiant ou écrivant les lignes de codes données ci-après.
Procédure
- Recréer la boîte via la console d'administration : Entrées d'annuaire > Nouveau > Boîte aux lettres partagée
Créer le répertoire de restauration data de la boîte :
Bloc de code |
---|
mkdir -p /var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/r/contact/restored-20171003
chown cyrus:mail /var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/r/
chown -R cyrus:mail /var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/r/contact |
Créer le répertoire de restauration meta de la boîte :
Bloc de code |
---|
mkdir -p /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/r/contact/restored-20171003
chown cyrus:mail /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/r/
chown -R cyrus:mail /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/r/contact |
Créer le fichier header dans le répertoire de restauration meta :
Bloc de code |
---|
touch /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/r/contact/restored-20171003/cyrus.header
chown cyrus:mail /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/r/contact/restored-20171003/cyrus.header |
Restaurer les données (emails) dans le répertoire data :
Bloc de code |
---|
cd /var/backups/bluemind/dp_spool/rsync/192.168.122.56/mail/imap/1/var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc
#copie des emails situés à la racine de la boîte (boîte de réception)
cp c/contact/* /var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/r/contact/restored-20171003/
#recherche et copie des sous-dossiers
find ./ -maxdepth 3 -type d -wholename "*/contact/*" -exec cp -a -r {} /var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/r/contact/restored-20171003/ \;
#positionnement des droits sur les fichiers ainsi copiés
chown -R cyrus:mail /var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/r/contact/restored-20171003 |
Restaurer les métadonnées dans le répertoire meta :
Bloc de code |
---|
cd /var/backups/bluemind/dp_spool/rsync/192.168.122.56/mail/imap/1/var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc
#recherche et copie des sous-dossiers
find ./ -maxdepth 3 -type d -wholename "*/contact/*" -exec cp -a -r {} /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/r/contact/restored-20171003/ \;
#positionnement des droits sur les fichiers ainsi copiés
chown -R cyrus:mail /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/r/contact/restored-20171003/ |
NB : ici, il n'y a pas de fichiers à copier depuis la racine
- Reconstruire l'index de la boîte.
Pour cela, 2 façons de procéder :En ligne de commande :
Bloc de code |
---|
/usr/lib/cyrus/bin/reconstruct -f -r -p bluemind_loc "contact/restored-20171003@bluemind.loc" |
- Dans la console d'administration, se rendre dans la gestion de la boîte partagée, onglet Maintenance et lancer une reconstruction de l'index de la boîte :