12 May 2021 
Centre d'assistance » Base de connaissances » Comment nettoyer le cache Client Web d'un compte spécifique
 Connexion [Mot de passe perdu] 
Courriel:
Mot de passe:
Se souvenir de moi:
 
 Recherche
 Détails des articles
 Comment nettoyer le cache Client Web d'un compte spécifique
Solution IceWarp 12 -

IceWarp utilise une connexion à une base de données sur le Client Web pour créer des caches pour les dossiers emails  et leurs contenu. Elle est configurée dans GroupWare -> Client web -> champ "Paramètre BD...".

Le serveur IceWarp accepte les bases SQLite, MySQL, et MSSQL (ODBC).
Avec SQLite, il y a une base de données par utilisateur et c'est l'option par défaut.

Sur certaines versions d'IceWarp, il y a des bugs qui entraînent la perte d'intégrité de la base de données. Cela se traduit par un comportement anormal de l'interface Client Web. L'effacement du cache permet de résoudre ce problème.

Attention, l'effacement du cache fait perdre les informations de synchronisation des répertoires (Option des dossiers emails du Client Web "Synchroniser à chaque relève").

Il peut être utile en même temps de rafraîchir le cache répertoires pour le compte en question - il s'agit d'un autre cache qui n'est pas spécifique du Client Web. Ceci s'effectue par la console d'administration dans l'onglet Options du compte en cliquant sur le bouton "Rafraîchir cache répertoire".

Comment effacer le cache d'un compte lorsque la base est SQLite ?

Vérifiez d'abord que vous utilisez bien une base SQLite pour le cache du Client Web : vous devez avoir la valeur "sqlite:%WMUSERPATH%cache.db" dans le nom de la base de données.

Puis il faut exécuter les opérations suivantes :
- Fermer la connexion au Client Web pour l'utilisateur concerné
- Noter l'adresse mail de l'utilisateur : "alias@domaine"
- Rechercher où se trouve le répertoire mail en allant dans Système -> Stockage -> onglet Dossiers -> champ Mail
- Aller dans ce répertoire dans ...\mail\<domaine>\<alias>\~webmail\ et supprimer le dossier cache.db
- Redémarrer la session Client Web pour ce compte
, le cache est recréé automatiquement.

Comment effacer le cache d'un compte lorsque la base n'est pas SQLite ?

Lorsqu'une base est unique et utilisée pour l'ensemble des caches, il faut supprimer les éléments uniquement pour l'utilisateur concerné. Voici la procédure à suivre.

Par mesure de précaution l'administrateur vérifiera qu'il possède une copie récente de toutes ses bases de données.

1 - Noter les paramètres de la base de données en allant dans le menu GroupWare -> Client Web -> onglet Général  -> Base de données. On obtient une fenêtre de ce type :

Noter : le nom de la base, l'adresse du serveur, le port (si non standard), l'utilisateur et le mot de passe.

2 - Attention : Avant d’exécuter les requêtes, il faut veiller à ce que l'utilisateur ne soit pas connecté au Client Web et que plus aucune session sur ce compte ne soit active : à vérifier dans le menu Etat -> Sessions pour le Service Client Web et les sessions de type Actives. S'il existe des sessions pour ce compte, il faut les fermer.

3 - L'administrateur doit se connecter à la base à l'aide d'un gestionnaire de base de données. Il peut utiliser le gestionnaire fourni avec la console d'administration d'IceWarp (Système -> Outils -> gestionnaire SQL) ou celui fourni avec la base de données.
Il faut ensuite sélectionner la base de données appropriée. Sur le gestionnaire IceWarp, il faut cliquer sur "Base de données" et rentrer les informations relatives à la base notés à l'étape 1 :

 
L'administrateur doit ensuite exécuter les requêtes suivantes dans lesquels il doit juste changer alias@domaine par l'adresse de l'utilisateur concerné.

4 - La première requête permet de supprimer le contenu de la tables "item" pour l'utilisateur, il est essentiel de supprimer en premier tous les éléments utilisateur de la table item. Cette requête delete doit donc s'exécuter complétement sans erreur avant de poursuivre, sinon certaines données ne seront pas effacées ce qui pourra provoquer des problèmes ultérieurement. Il est conseillé d'utiliser la séquence suivante :

a) SELECT count(*) FROM item AS i INNER JOIN folder on i.folder_id = folder.folder_id WHERE folder.account_id = 'alias@domaine'
Noter le nombre d'enregistrements

b) DELETE i FROM item AS i INNER JOIN folder on i.folder_id = folder.folder_id WHERE folder.account_id = '
alias@domaine'

c)
SELECT count(*) FROM item AS i INNER JOIN folder on i.folder_id = folder.folder_id WHERE folder.account_id = 'alias@domaine'
Noter le nombre d'enregistrements, il doit être à 0 maintenant sinon
relancer la requête b) jusqu'à ce qu'il n'y ait plus d'erreur d'exécution et que le nombre d'enregistrement restant soit à 0.

5 - La requête suivante consiste à supprimer le contenu de la table "folder" pour l'utilisateur :
DELETE FROM folder WHERE folder.account_id = 'alias@domaine'

L'administrateur doit vérifier que la requête s'exécute complètement sans erreur, sinon, il peut la relancer jusqu'à ce que plus aucun élément ne soit affecté.

Après exécution correcte, le cache de l'utilisateur est supprimé et sera recréé à la prochaine connexion.

 
Modifié 19 août 2020


Détails des articles
Code d'identification de l'article: 348
Créé le: 20 Feb 2013 09:39 AM

 Cette réponse m'a été utile  Cette réponse ne m'a pas été utile