メインコンテンツまでスキップ

6.3.6 RENAME コマンド

引数 (Arguments):

  • 既存のメールボックス名
  • 新しいメールボックス名

応答 (Responses): オプションのタグなし応答:LIST

結果 (Result):

  • OK - rename 完了
  • NO - rename 失敗:その名前のメールボックスを名前変更できません、その名前のメールボックスに名前変更できません
  • BAD - コマンド不明または引数が無効

RENAME コマンドは、メールボックスの名前を変更します。タグ付き OK 応答は、メールボックスの名前が変更された場合にのみ返されます。存在しないメールボックス名から名前を変更しようとしたり、すでに存在するメールボックス名に名前を変更しようとしたりするとエラーになります。名前変更のエラーは、タグ付き NO 応答を返します。

名前に下位階層名がある場合、下位階層名も名前変更されなければなりません (しなければなりません)。たとえば、「foo」を「zap」に名前変更すると、「foo/bar」(「/」が階層区切り文字であると仮定) は「zap/bar」に名前変更されます。

サーバーの階層区切り文字が新しいメールボックス名に出現する場合、サーバーは RENAME コマンドを正常に完了するために必要な上位階層名を作成するべきです (すべきです)。言い換えれば、対応する名前空間で「/」が階層区切り文字であるサーバーで「foo/bar/zap」を「baz/rag/zowie」に名前変更しようとすると、「baz/」と「baz/rag/」がまだ存在しない場合は作成するべきです (すべきです)。

古いメールボックス名の最も高く使用された一意識別子の値は保持されなければなりません (しなければなりません)。これにより、同じ名前で作成された新しいメールボックスが、新しい化身が異なる一意識別子有効性値を持たない限り、以前の化身の識別子を再利用しないようにします。詳細については、セクション 6.4.9 の UID コマンドの説明を参照してください。

INBOX の名前変更は許可されており、タグ付き BAD 応答にはならず、特別な動作があります。INBOX 内のすべてのメッセージを指定された名前の新しいメールボックスに移動し、INBOX を空にします。サーバー実装が INBOX の下位階層名をサポートしている場合、これらは INBOX の名前変更の影響を受けません。(一部のサーバーは、タグ付き NO 応答を返すことで INBOX の名前変更を禁止しているため、クライアントはこのような RENAME コマンドの失敗を処理できる必要があることに注意してください。)

サーバーが有効な Net-Unicode 名ではない名前のメールボックスの作成を許可する場合、サーバーは既存のメールボックス名パラメータと新しいメールボックス名パラメータの両方を正規化します。これら 2 つのパラメータのいずれかの正規化バージョンが対応する提供されたバージョンと異なる場合、サーバーは OLDNAME 拡張データ項目を含むタグなし LIST 応答を返すべきです (すべきです)。OLDNAME 値は提供された既存のメールボックス名であり、name パラメータは正規化された新しいメールボックス名です (セクション 6.3.9.7 を参照)。これにより、クライアントは提供された名前を正規化された名前と関連付けることができます。

1 つの IMAP セッションで名前変更されたメールボックスは、OLDNAME 拡張データ項目を含む要請されていない LIST 応答を使用して、他の IMAP セッションに通知してもよい (してもよい) です。

上記の両方のケースで、サーバーが名前変更時にメールボックスを自動的にサブスクライブする場合、影響を受ける各サブスクライブ済みメールボックス名に対する要請されていない LIST 応答には、\Subscribed 属性を含めなければなりません (しなければなりません)。子メールボックスに対して要請されていない LIST 応答を送信する必要はありません。INBOX が正常に名前変更された場合、新しい INBOX が作成されたと見なされます。この場合、INBOX に対して要請されていない LIST 応答を送信する必要はありません。

例:

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