Aller au contenu principal

6.3.6 Commande RENAME

Arguments :

  • nom de boîte aux lettres existante
  • nouveau nom de boîte aux lettres

Réponses : Réponse non étiquetée OPTIONNELLE : LIST

Résultat :

  • OK - rename terminée
  • NO - échec de rename : impossible de renommer la boîte aux lettres avec ce nom, impossible de renommer en boîte aux lettres avec ce nom
  • BAD - commande inconnue ou arguments invalides

La commande RENAME change le nom d'une boîte aux lettres. Une réponse OK étiquetée n'est renvoyée que si la boîte aux lettres a été renommée. C'est une erreur de tenter de renommer à partir d'un nom de boîte aux lettres qui n'existe pas ou vers un nom de boîte aux lettres qui existe déjà. Toute erreur de renommage renverra une réponse NO étiquetée.

Si le nom a des noms hiérarchiques inférieurs, alors les noms hiérarchiques inférieurs doivent (doivent) également être renommés. Par exemple, un renommage de "foo" en "zap" renommera "foo/bar" (en supposant que "/" est le caractère délimiteur de hiérarchie) en "zap/bar".

Si le caractère séparateur de hiérarchie du serveur apparaît dans le nouveau nom de boîte aux lettres, le serveur devrait (devrait) créer tous les noms hiérarchiques supérieurs nécessaires pour que la commande RENAME se termine avec succès. En d'autres termes, une tentative de renommer "foo/bar/zap" en "baz/rag/zowie" sur un serveur dans lequel "/" est le caractère séparateur de hiérarchie dans l'espace de noms correspondant devrait (devrait) créer "baz/" et "baz/rag/" s'ils n'existent pas déjà.

La valeur de l'identifiant unique le plus élevé utilisé de l'ancien nom de boîte aux lettres doit (doit) être préservée afin qu'une nouvelle boîte aux lettres créée avec le même nom ne réutilise pas les identifiants de l'incarnation précédente, sauf si la nouvelle incarnation a une valeur de validité d'identifiant unique différente. Voir la description de la commande UID dans la Section 6.4.9 pour plus de détails.

Le renommage d'INBOX est autorisé et n'entraîne pas de réponse BAD étiquetée, et il a un comportement spécial : il déplace tous les messages dans INBOX vers une nouvelle boîte aux lettres avec le nom donné, laissant INBOX vide. Si l'implémentation du serveur prend en charge les noms hiérarchiques inférieurs d'INBOX, ceux-ci ne sont pas affectés par un renommage d'INBOX. (Notez que certains serveurs interdisent le renommage d'INBOX en renvoyant une réponse NO étiquetée, donc les clients doivent être capables de gérer l'échec de telles commandes RENAME.)

Si le serveur autorise la création de boîtes aux lettres avec des noms qui ne sont pas des noms Net-Unicode valides, le serveur normalise à la fois le paramètre de nom de boîte aux lettres existante et le paramètre de nouveau nom de boîte aux lettres. Si la version normalisée de l'un de ces 2 paramètres diffère de la version fournie correspondante, le serveur devrait (devrait) renvoyer une réponse LIST non étiquetée avec un élément de données étendu OLDNAME, la valeur OLDNAME étant le nom de boîte aux lettres existante fourni et le paramètre name étant le nouveau nom de boîte aux lettres normalisé (voir Section 6.3.9.7). Cela permettrait au client de corréler le nom fourni avec le nom normalisé.

Les boîtes aux lettres renommées dans une session IMAP peuvent (peuvent) être annoncées aux autres sessions IMAP en utilisant une réponse LIST non sollicitée avec un élément de données étendu OLDNAME.

Dans les deux cas ci-dessus, si le serveur s'abonne automatiquement à une boîte aux lettres lors de son renommage, alors la réponse LIST non sollicitée pour chaque nom de boîte aux lettres abonnée affectée doit (doit) inclure l'attribut \Subscribed. Aucune réponse LIST non sollicitée n'a besoin d'être envoyée pour les boîtes aux lettres enfants. Lorsqu'INBOX est renommée avec succès, on suppose qu'une nouvelle INBOX est créée. Aucune réponse LIST non sollicitée n'a besoin d'être envoyée pour INBOX dans ce cas.

Exemples :

C: A682 LIST "" *
S: * LIST () "/" blurdybloop
S: * LIST (\Noselect) "/" foo
S: * LIST () "/" foo/bar
S: A682 OK LIST completed
C: A683 RENAME blurdybloop sarasoop
S: A683 OK RENAME completed
C: A684 RENAME foo zowie
S: A684 OK RENAME Completed
C: A685 LIST "" *
S: * LIST () "/" sarasoop
S: * LIST (\Noselect) "/" zowie
S: * LIST () "/" zowie/bar
S: A685 OK LIST completed
C: Z432 LIST "" *
S: * LIST () "." INBOX
S: * LIST () "." INBOX.bar
S: Z432 OK LIST completed
C: Z433 RENAME INBOX old-mail
S: Z433 OK RENAME completed
C: Z434 LIST "" *
S: * LIST () "." INBOX
S: * LIST () "." INBOX.bar
S: * LIST () "." old-mail
S: Z434 OK LIST completed