Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Published by Scroll Versions from space DA and version BM-3

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" :

Bloc de code
titleExemple emplacement de la BAL partagé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
  1. Recréer la boite avec l'outil cyradm

    Info
    titleRappel

    Pour se connecter avec cyradm :

    Bloc de code
    cyradm --user admin0 --port 1143 localhost
    Bloc de code
    titleRecréer la BAL partagée sports
    cm 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)                   
  2. Reconstruire la boite depuis la console :

    Bloc de code
    titleReconstruction de la BAL partagée
    root@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:~# 
  3. Lancer le script reindexMbox :

    Bloc de code
    titleRé-indexation de la BAL partagée
    root@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.
    
    
  4. 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

  1. Copier les données de l'utilisateur depuis la sauvegarde dans var/spool/cyrus/data/........
  2. Créer l’arborescence (sans les données) correspondante dans /var/spool/cyrus/meta/........
  3. 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 :

Bloc de code
titleCréation de la structure des répertoires et déplacement des "fichiers meta"
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/{} \;
 

Articles en relation

https://docs.cyrus.foundation/imap/admin.html