Passa al contenuto principale

6.3.6 Comando RENAME

Argomenti:

  • nome casella di posta esistente
  • nuovo nome casella di posta

Risposte: Risposta non taggata OPZIONALE: LIST

Risultato:

  • OK - rename completata
  • NO - rename fallita: impossibile rinominare casella di posta con quel nome, impossibile rinominare in casella di posta con quel nome
  • BAD - comando sconosciuto o argomenti non validi

Il comando RENAME cambia il nome di una casella di posta. Una risposta OK taggata viene restituita solo se la casella di posta è stata rinominata. È un errore tentare di rinominare da un nome di casella di posta che non esiste o a un nome di casella di posta che già esiste. Qualsiasi errore nella ridenominazione restituirà una risposta NO taggata.

Se il nome ha nomi gerarchici inferiori, allora anche i nomi gerarchici inferiori devono (devono) essere rinominati. Ad esempio, una ridenominazione di "foo" in "zap" rinominerà "foo/bar" (supponendo che "/" sia il carattere delimitatore di gerarchia) in "zap/bar".

Se il carattere separatore di gerarchia del server appare nel nuovo nome della casella di posta, il server dovrebbe (dovrebbe) creare tutti i nomi gerarchici superiori necessari affinché il comando RENAME venga completato con successo. In altre parole, un tentativo di rinominare "foo/bar/zap" in "baz/rag/zowie" su un server in cui "/" è il carattere separatore di gerarchia nello spazio dei nomi corrispondente dovrebbe (dovrebbe) creare "baz/" e "baz/rag/" se non esistono già.

Il valore dell'identificatore univoco più alto utilizzato del vecchio nome della casella di posta deve (deve) essere preservato in modo che una nuova casella di posta creata con lo stesso nome non riutilizzi gli identificatori dell'incarnazione precedente, a meno che la nuova incarnazione non abbia un valore di validità dell'identificatore univoco diverso. Vedere la descrizione del comando UID nella Sezione 6.4.9 per maggiori dettagli.

La ridenominazione di INBOX è consentita e non comporta una risposta BAD taggata, e ha un comportamento speciale: sposta tutti i messaggi in INBOX in una nuova casella di posta con il nome specificato, lasciando INBOX vuota. Se l'implementazione del server supporta nomi gerarchici inferiori di INBOX, questi non sono influenzati da una ridenominazione di INBOX. (Si noti che alcuni server non consentono la ridenominazione di INBOX restituendo una risposta NO taggata, quindi i client devono essere in grado di gestire il fallimento di tali comandi RENAME.)

Se il server consente la creazione di caselle di posta con nomi che non sono nomi Net-Unicode validi, il server normalizza sia il parametro nome casella di posta esistente che il parametro nuovo nome casella di posta. Se la versione normalizzata di uno qualsiasi di questi 2 parametri differisce dalla versione fornita corrispondente, il server dovrebbe (dovrebbe) restituire una risposta LIST non taggata con un elemento di dati esteso OLDNAME, con il valore OLDNAME che è il nome della casella di posta esistente fornito e il parametro name che è il nuovo nome della casella di posta normalizzato (vedere Sezione 6.3.9.7). Ciò consentirebbe al client di correlare il nome fornito con il nome normalizzato.

Le caselle di posta rinominate in una sessione IMAP possono (possono) essere annunciate ad altre sessioni IMAP utilizzando una risposta LIST non richiesta con un elemento di dati esteso OLDNAME.

In entrambi i casi sopra, se il server sottoscrive automaticamente una casella di posta quando viene rinominata, allora la risposta LIST non richiesta per ogni nome di casella di posta sottoscritta interessata deve (deve) includere l'attributo \Subscribed. Non è necessario inviare risposte LIST non richieste per le caselle di posta figlie. Quando INBOX viene rinominata con successo, si presume che venga creata una nuova INBOX. Non è necessario inviare risposte LIST non richieste per INBOX in questo caso.

Esempi:

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