Problème
Une boite partagée a été supprimée, il faut la restaurer.
Pré-requis
Avoir une sauvegarde disponible contenant la boite à restaurer.
Solution
Une boite mail partagée peut avoir une arborescence "éclatée" au sein du système de fichier. Afin de retrouver tous les emplacements faisant référence à cette boite il faut rechercher tous les dossiers se rapportant à cette boite au sein de la sauvegarde.
Par exemple, pour renommer une boite aux lettres nommée "sports" :
cd /var/backups/bluemind/ find dp_spool/rsync/192.168.78.128/mail/imap/1356/var/spool/cyrus/bluemind_loc/domain/ -type d -name sports /var/backups/bluemind/dp_spool/rsync/192.168.78.128/mail/imap/1356/var/spool/cyrus/bluemind_loc/domain/b/bluemind.loc/s/sports /var/backups/bluemind/dp_spool/rsync/192.168.78.128/mail/imap/1356/var/spool/cyrus/bluemind_loc/domain/b/bluemind.loc/s/sports/Sent /var/backups/bluemind/dp_spool/rsync/192.168.78.128/mail/imap/1356/var/spool/cyrus/bluemind_loc/domain/b/bluemind.loc/a/sports /var/backups/bluemind/dp_spool/rsync/192.168.78.128/mail/imap/1356/var/spool/cyrus/bluemind_loc/domain/b/bluemind.loc/a/sports/ACCUSE R /var/backups/bluemind/dp_spool/rsync/192.168.78.128/mail/imap/1356/var/spool/cyrus/bluemind_loc/domain/b/bluemind.loc/m/sports /var/backups/bluemind/dp_spool/rsync/192.168.78.128/mail/imap/1356/var/spool/cyrus/bluemind_loc/domain/b/bluemind.loc/m/sports/INSCRIPTIONS
Recréer la boite avec l'outil cyradm
Recréer la BAL partagée sportscm sports/Sent@bluemind.loc bluemind.loc ^ ^ ^ ^ ^ CMD BAL Dir Domain Partition localhost> cm sports/Sent@bluemind.loc bluemind.loc localhost> cm sports@bluemind.loc bluemind.loc localhost> cm sports/ACCUSE\ R@bluemind.loc bluemind.loc localhost> cm sports/INSCRIPTIONS@bluemind.loc bluemind.loc - Vérification localhost> lm sports*@bluemind.loc sports/ACCUSE R@bluemind.loc (\HasNoChildren) sports/INSCRIPTIONS@bluemind.loc (\HasNoChildren) sports/Sent@bluemind.loc (\HasChildren) sports@bluemind.loc (\HasChildren)
Reconstruire la boite depuis la console :
Reconstruction de la BAL partagéeroot@mail:~# /usr/lib/cyrus/bin/reconstruct -rf sports@bluemind.loc bluemind.loc!sports: update acl from header anyone lrs => anyone p admin0 lrswipkxtecda jdoe@bluemind.loc lrswipkxtecd hannibal@bluemind.loc lrswipkxtecd jluther@bluemind.loc lrswipkxtecd sports@bluemind.loc bluemind.loc!sports.ACCUSE R: update acl from header anyone lrs => jdoe@bluemind.loc lrswipkxtecda admin0 lrswipkxtecda sports/ACCUSE R@bluemind.loc bluemind.loc!sports.INSCRIPTIONS: update acl from header anyone lrs => anyone p admin0 lrswipkxtecda jdoe@bluemind.loc lrswipkxtecd hannibal@bluemind.loc lrswipkxtecd jluther@bluemind.loc lrswipkxtecd sports/INSCRIPTIONS@bluemind.loc bluemind.loc!sports.Sent: update acl from header anyone lrs => anyone p admin0 lrswipkxtecda jdoe@bluemind.loc lrswipkxtecd hannibal@bluemind.loc lrswipkxtecd jluther@bluemind.loc lrswipkxtecd sports/Sent@bluemind.loc root@mail:~#
Lancer le script reindexMbox :
Ré-indexation de la BAL partagéeroot@mail:~# ./reindexMbox localhost sports@bluemind.loc 11:32:40.856 [main] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Number of application's worker threads is 8 Using token 851d6cdc-8c96-48c4-b08c-408c5ee91430 11:32:41.235 [main] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Non cached request DefaultHttpRequest(chunked: false) POST /services/login/doLogin HTTP/1.1 Host: localhost:8085 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Connection: keep-alive Accept: */* User-Agent: NING/1.0 Content-Length: 93 using Channel [id: 0xacb8886b] 11:32:41.314 [New I/O worker #1] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Request DefaultHttpRequest(chunked: false) POST /services/login/doLogin HTTP/1.1 Host: localhost:8085 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Connection: keep-alive Accept: */* User-Agent: NING/1.0 Content-Length: 93 Response DefaultHttpResponse(chunked: false) HTTP/1.1 200 OK Content-Type: text/xml; charset=UTF-8 Content-Length: 293 11:32:41.320 [New I/O worker #1] DEBUG c.n.h.c.p.netty.NettyConnectionsPool - Adding uri: http://localhost:8085 for channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] 11:32:41.553 [main] DEBUG n.b.core.common.utils.DOMUtils - No element named 'authService' under 'token' 11:32:41.555 [main] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Using cached Channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] for uri http://localhost:8085/services/mail/reindex 11:32:41.556 [main] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Using cached Channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] for request DefaultHttpRequest(chunked: false) POST /services/mail/reindex HTTP/1.1 Host: localhost:8085 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Connection: keep-alive Accept: */* User-Agent: NING/1.0 Content-Length: 74 11:32:41.616 [New I/O worker #1] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Request DefaultHttpRequest(chunked: false) POST /services/mail/reindex HTTP/1.1 Host: localhost:8085 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Connection: keep-alive Accept: */* User-Agent: NING/1.0 Content-Length: 74 Response DefaultHttpResponse(chunked: false) HTTP/1.1 200 OK Content-Type: text/xml; charset=UTF-8 Content-Length: 125 11:32:41.617 [New I/O worker #1] DEBUG c.n.h.c.p.netty.NettyConnectionsPool - Adding uri: http://localhost:8085 for channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] <?xml version="1.0" encoding="UTF-8"?><string xmlns="http://www.blue-mind.net/xsd/sync/string.xsd"> <value>53</value> </string> task 53 started for sports@bluemind.loc 11:32:43.929 [main] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Using cached Channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] for uri http://localhost:8085/services/taskref/status 11:32:43.930 [main] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Using cached Channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] for request DefaultHttpRequest(chunked: false) POST /services/taskref/status HTTP/1.1 Host: localhost:8085 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Connection: keep-alive Accept: */* User-Agent: NING/1.0 Content-Length: 47 11:32:43.941 [New I/O worker #1] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Request DefaultHttpRequest(chunked: false) POST /services/taskref/status HTTP/1.1 Host: localhost:8085 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Connection: keep-alive Accept: */* User-Agent: NING/1.0 Content-Length: 47 Response DefaultHttpResponse(chunked: false) HTTP/1.1 200 OK Content-Type: text/xml; charset=UTF-8 Content-Length: 113 11:32:43.941 [New I/O worker #1] DEBUG c.n.h.c.p.netty.NettyConnectionsPool - Adding uri: http://localhost:8085 for channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] <?xml version="1.0" encoding="UTF-8"?><status xmlns="http://www.blue-mind.net/sync/tasks.xsd" c="true" s="true"/> 11:32:43.963 [main] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Using cached Channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] for uri http://localhost:8085/services/login/doLogout 11:32:43.964 [main] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Using cached Channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] for request DefaultHttpRequest(chunked: false) POST /services/login/doLogout HTTP/1.1 Host: localhost:8085 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Connection: keep-alive Accept: */* User-Agent: NING/1.0 Content-Length: 40 11:32:43.973 [New I/O worker #1] DEBUG c.n.h.c.p.n.NettyAsyncHttpProvider - Request DefaultHttpRequest(chunked: false) POST /services/login/doLogout HTTP/1.1 Host: localhost:8085 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Connection: keep-alive Accept: */* User-Agent: NING/1.0 Content-Length: 40 Response DefaultHttpResponse(chunked: false) HTTP/1.1 200 OK Content-Type: text/xml; charset=UTF-8 Content-Length: 125 11:32:43.974 [New I/O worker #1] DEBUG c.n.h.c.p.netty.NettyConnectionsPool - Adding uri: http://localhost:8085 for channel [id: 0xacb8886b, /127.0.0.1:56571 => localhost/127.0.0.1:8085] <?xml version="1.0" encoding="UTF-8"?><string xmlns="http://www.blue-mind.net/xsd/sync/string.xsd"> <value>OK</value> </string> [sports@bluemind.loc] success: true in 2034ms. Re-index completed.
- Remettre en conformité les droits au travers de l'interface graphique de BlueMind.
Pour cela, se connecter en tant qu'administrateur et se rendre dans la section «Annuaires» > «Entrées d'annuaire» > sélectionner la boite partagée > onglet «Partage» puis :- Changer les droits d'un utilisateur, enregistrer.
- Remettre le droit initial de utilisateur, enregistrer.
Cas d'une version de BlueMind avec séparation des metadata de la partition
Présentation
Dans le cas d'une version de BlueMind à partir de 3.0.21 les metadata et les data sont séparées. Il faut alors reconstruire les arborescences pour les deux emplacements suivants :
/var/spool/cyrus/meta/
/var/spool/cyrus/data/
Par exemple sur le domaine bluemind.loc on a :
/var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/
/var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/
Le spool de la sauvegarde correspondante est alors le suivant :
/var/backups/bluemind/dp_spool/rsync/192.168.78.128/mail/imap/2540/var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/
/var/backups/bluemind/dp_spool/rsync/192.168.78.128/mail/imap/2540/var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/
Procédure
- Copier les données de l'utilisateur depuis la sauvegarde dans
var/spool/cyrus/data/........
- Créer l’arborescence (sans les données) correspondante dans
/var/spool/cyrus/meta/........
- Copier les "fichiers meta" de la boite mail depuis la sauvegarde
/var/backups/bluemind/dp_spool/rsync/XX.XX.XX.XX/mail/imap/XXXX/var/spool/cyrus/meta/
dans/var/spool/cyrus/meta/.....
Exemple pour une restauration dans le répertoire restore04062105 de l'utilisateur jdoe :
root@mail # cd /var/spool/cyrus/data/bluemind_loc/domain/b/bluemind.loc/j/user/jdoe/ root@mail # find restore04062105/ -type d -exec mkdir -p /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/j/user/jdoe/{} \; root@mail # cd /var/backups/bluemind/dp_spool/rsync/192.168.78.128/mail/imap/2540/var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/j/user/jdoe/ root@mail # find . -type f -name 'cyrus.*' -exec cp {} /var/spool/cyrus/meta/bluemind_loc/domain/b/bluemind.loc/j/user/jdoe/restore04062105/{} \;