Cyrus
Quelques commandes utiles
La plupart des commandes se font dans l'interface d'administration cyradm à laquelle on accède avec la commande suivante:
# cyradm --user cyrus mydomain.tld Password: >
Pour plus d'information sur les commandes disponibles dans l'environnement cyradm, reportez vous au man cyradm(1p) (vous noterez que nous avons utilisé ici les versions courtes des commandes; par exemple, lm peut aussi s'appeler listmailbox, cm createmailbox, etc.).
Suppression d'un compte
Supprimer un compte (dans l'interface d'administration cyradm):
> sam user/moncompte cyrus all > dm user/moncompte
Liste des comptes
Lister les comptes (définis dans la base d'authentification SASL):
# sasldblistusers2
Lister les mots de passe conservés dans la base SASL:
# db4.2_dump -p /etc/sasldb2
Lister les BAL et dossiers existants dans cyrus:
- avec l'interface cyadm, en profitant du fait que l'utilisateur cyrus a accès à toutes les boîtes aux lettres:
# cyradm --user cyrus > lm
- plus facilement, avec l'outil ctl_mboxlist:
$ sudo -u cyrus ctl_mboxlist -d
Créer un compte ou modifier son mot de passe
Pour créer un compte ou modifier son mot de passe dans la base SASL:
# saslpasswd2 moncompte@mondomaine.tld
En cas de création, il faut le créer aussi dans cyrus, à l'aide de cyradm:
> cm user/moncompte
Suppression d'un compte
Suppression d'un compte (seul l'accès est coupé):
# saslpasswd2 -d moncompte@mondomaine.tld
Supprimer une boîte aux lettres (attention, tous les mails qu'elle contient sont perdus):
> dm user/compte
On peut juste supprimer le dossier d'une boite de façon similaire (attention, tous les mails qu'il contient sont perdus):
> dm user/compte/DOSSIER
Réparer une boîte aux lettres
Réparer un BAL après suppression de mails en masse (Trash/Junk) - attention, les messages ont tendance à repasser en mode "non-lu":
# Supprimer les messages dans le répertoire $ rm -f ... # Lancer cyrreconstruct sur le dossier $ su - cyrus $ /usr/sbin/cyrreconstruct user/username/Trash
Convertion du format boîte aux lettres
Convertir une BAL au format Maildir (http://cyrus2dovecot.sw.fu-berlin.de/) (qui permet une consultation directe):
$ ./cyrus2dovecot --cyrus-inbox /var/spool/cyrus/mail/%h/user/%u \ --cyrus-seen /var/lib/cyrus/user/%h/%u.seen \ --cyrus-sub /var/lib/cyrus/user/%h/%u.sub \ --dovecot-inbox dovecot/%u \ username
Copier des dossiers d'une boîte à une autre
Cette solution ne nécessite pas l'arrêt du serveur IMAP.
Déplacement des répertoires
On commence par copier les répertoires représentant les dossiers du répertoire de la boîte source vers celui de la boîte de destination (adaptez le chemin des boîtes selon votre serveur):
# cp -a MONDOSSIER1 MONDOSSIER2 /var/spool/cyrus/mail/d/user/dany/
Modification des permissions
Il faut ensuite modifier les permissions pour avoir le droit de lire les dossiers déplacés. On a ici 2 possiblités:
Première solution
On supprime les fichiers cyrus.* des répertoires avant de lancer cyrreconstruct pour reconstruire un index et des ACL vierges. Les permissions existantes sont ainsi supprimées, et on laisse cyrreconstruct recréer des droits par défaut qui permettent l'accès du nouveau propriétaire. Cette solution est plus rapide puisqu'elle évite d'avoir à manipuler soi-même les ACL, mais on perd la configuration des dossiers (c'est à dire le cache et les ACLs existantes). Voici les commandes nécessaires à cette solution :
# rm -f {MONDOSSIER1,MONDOSSIER2}/cyrus.* # sudo -u cyrus cyrreconstruct -rf user/dany ... user/dany/MONDOSSIER1 user/dany/MONDOSSIER2 ...
Seconde solution
On copie tel quel les répertoires, avec leurs fichiers cyrus.cache, cyrus.header, et cyrus.index, on lance cyrreconstruct pour intégrer les nouveaux dossier à la boîte mail, puis on utilise cyradm pour supprimer les permissions du propriétaire d'origine et ajouter celle du nouveau propriétaire. Cette seconde solution est plus correcte, et sera à privilégier (en cas de déplacement de nombreux dossiers, on peut générer dans un fichier les commandes à passer à cyradm et les lancer avec la commande perl -MCyrus::IMAP::Shell -e 'run("myscript")'). Pour cette solution, les commandes sont les suivantes:
# sudo -u cyrus cyrreconstruct -rf user/dany discovered user.dany.MONDOSSIER1 discovered user.dany.MONDOSSIER2 ... # cyradm --user cyrus Password: > setaclmailbox "user/dany/MONDOSSIER1" dany lrswipcda > listaclmailbox "user/dany/MONDOSSIER1" samy lrswipcda dany lrswipcda > deleteaclmailbox "user/dany/MONDOSSIER1" samy lrswipcda > listaclmailbox "user/dany/MONDOSSIER1" dany lrswipcda > setaclmailbox "user/dany/MONDOSSIER2" dany lrswipcda > deleteaclmailbox "user/dany/MONDOSSIER2" samy lrswipcda
(ci-dessus, les commandes listaclmailbox ne servent qu'à visualiser les modifications faites par les autres commandes)
Abonnement aux dossiers copiés
Avec les deux solutions, les dossiers sont maintenant accessibles à notre utilisateur de destination, dany, mais ils n'apparaîtront pas tout seul dans sa liste des dossiers IMAP. Il devra d'abord s'abonner aux dossiers déplacés (par exemple, sous Thunderbird, dans le menu contextuel de « Courrier Entrant », il faut choisir « S'abonner » et choisir les dossiers auxquels s'abonner).
Il est possible d'effectuer cette opération sur le serveur à la place de l'utilisateur si on dispose de son mot de passe. Pour cela, on se connecte avec cyradm sous son compte et on utilise la commande « subscribe »:
cyradm --user dany Password: > subscribe user/dany/MONDOSSIER1" > subscribe user/dany/MONDOSSIER2"
Vous pouvez vérifier la liste des dossiers auxquels est abonné un utilisateur avec la commande listmailbox --subscribed :
cyradm --user dany Password: > listmailbox --subscribed ... user/dany/MONDOSSIER1 user/dany/MONDOSSIER2
Liens
- reconstruire une base de donnee "seen" [1] (message d'erreur: DBERROR: skiplist recovery /var/lib/cyrus/user/j/machin.seen: ADD at 2FC8 exists)
- Migration/Cyrus on the Dovecot wiki