6.3.6 RENAME-Befehl
Argumente:
- vorhandener Postfachname
- neuer Postfachname
Antworten: OPTIONALE nicht markierte Antwort: LIST
Ergebnis:
- OK - rename abgeschlossen
- NO - rename fehlgeschlagen: kann Postfach mit diesem Namen nicht umbenennen, kann nicht in Postfach mit diesem Namen umbenennen
- BAD - Befehl unbekannt oder Argumente ungültig
Der RENAME-Befehl ändert den Namen eines Postfachs. Eine markierte OK-Antwort wird nur zurückgegeben, wenn das Postfach umbenannt wurde. Es ist ein Fehler, zu versuchen, von einem nicht existierenden Postfachnamen umzubenennen oder zu einem bereits existierenden Postfachnamen umzubenennen. Jeder Fehler beim Umbenennen gibt eine markierte NO-Antwort zurück.
Wenn der Name untergeordnete hierarchische Namen hat, müssen (müssen) auch die untergeordneten hierarchischen Namen umbenannt werden. Zum Beispiel benennt eine Umbenennung von "foo" zu "zap" "foo/bar" (angenommen "/" ist das Hierarchietrennzeichen) zu "zap/bar" um.
Wenn das Hierarchietrennzeichen des Servers im neuen Postfachnamen erscheint, sollte (sollte) der Server alle übergeordneten hierarchischen Namen erstellen, die erforderlich sind, damit der RENAME-Befehl erfolgreich abgeschlossen werden kann. Mit anderen Worten, ein Versuch, "foo/bar/zap" zu "baz/rag/zowie" auf einem Server umzubenennen, bei dem "/" das Hierarchietrennzeichen im entsprechenden Namensraum ist, sollte (sollte) "baz/" und "baz/rag/" erstellen, falls diese noch nicht existieren.
Der Wert des höchsten verwendeten eindeutigen Identifikators des alten Postfachnamens muss (muss) erhalten bleiben, damit ein neues Postfach, das mit demselben Namen erstellt wird, die Identifikatoren der früheren Inkarnation nicht wiederverwendet, es sei denn, die neue Inkarnation hat einen anderen Gültigkeitswert für eindeutige Identifikatoren. Siehe die Beschreibung des UID-Befehls in Abschnitt 6.4.9 für weitere Details.
Das Umbenennen von INBOX ist erlaubt und führt nicht zu einer markierten BAD-Antwort und hat ein spezielles Verhalten: Es verschiebt alle Nachrichten in INBOX zu einem neuen Postfach mit dem angegebenen Namen und lässt INBOX leer. Wenn die Serverimplementierung untergeordnete hierarchische Namen von INBOX unterstützt, werden diese durch eine Umbenennung von INBOX nicht beeinflusst. (Beachten Sie, dass einige Server das Umbenennen von INBOX ablehnen, indem sie eine markierte NO-Antwort zurückgeben, sodass Clients in der Lage sein müssen, das Fehlschlagen solcher RENAME-Befehle zu behandeln.)
Wenn der Server die Erstellung von Postfächern mit Namen erlaubt, die keine gültigen Net-Unicode-Namen sind, normalisiert der Server sowohl den vorhandenen Postfachnamenparameter als auch den neuen Postfachnamenparameter. Wenn die normalisierte Version eines dieser 2 Parameter von der entsprechenden bereitgestellten Version abweicht, sollte (sollte) der Server eine nicht markierte LIST-Antwort mit einem erweiterten Datenelement OLDNAME zurückgeben, wobei der OLDNAME-Wert der bereitgestellte vorhandene Postfachname ist und der name-Parameter der normalisierte neue Postfachname ist (siehe Abschnitt 6.3.9.7). Dies würde es dem Client ermöglichen, den bereitgestellten Namen mit dem normalisierten Namen zu korrelieren.
In einer IMAP-Sitzung umbenannte Postfächer können (können) anderen IMAP-Sitzungen über eine unaufgeforderte LIST-Antwort mit einem erweiterten Datenelement OLDNAME angekündigt werden.
In beiden oben genannten Fällen muss (muss) die unaufgeforderte LIST-Antwort für jeden betroffenen abonnierten Postfachnamen das \Subscribed-Attribut enthalten, wenn der Server ein Postfach beim Umbenennen automatisch abonniert. Für untergeordnete Postfächer müssen keine unaufgeforderten LIST-Antworten gesendet werden. Wenn INBOX erfolgreich umbenannt wird, wird angenommen, dass eine neue INBOX erstellt wird. In diesem Fall müssen keine unaufgeforderten LIST-Antworten für INBOX gesendet werden.
Beispiele:
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