Passa al contenuto principale

6. Comandi client (Client Commands)

I comandi del client sono inviati dal client al server. I comandi del client sono contrassegnati da una stringa di tag univoca. I comandi del client hanno uno dei seguenti tre formati:

  1) un comando del client senza argomenti;

2) un comando del client seguito da un argomento; o

3) un comando del client seguito da un elenco di argomenti.

Il server invia una risposta di stato al client in risposta a ogni comando del client. Le risposte di stato sono contrassegnate con la stessa stringa di tag del comando del client corrispondente.

Questo documento utilizza una sintassi ABNF (vedere [RFC-822] e [RFC-ABNF]). La sintassi ABNF è descritta nella sezione 9.

I comandi del client sono definiti di seguito. I comandi del client possono essere inviati solo in uno stato in cui sono validi. Ad esempio, un comando del client che richiede una cassetta postale selezionata non deve essere inviato mentre non è selezionata alcuna cassetta postale. I comandi del client sono definiti nella sintassi ABNF come "command".

6.1. Comandi che non richiedono la selezione di una cassetta postale

  I comandi in questa sezione non richiedono che sia selezionata
  alcuna cassetta postale. Un server deve consentire l'esecuzione di
  questi comandi in qualsiasi stato di connessione.


  6.1.1.     Comando CAPABILITY

     Argomenti:  nessuno

     Risposte:  obbligatoria non contrassegnata: CAPABILITY

     Risultato:  OK - capability completato

     Il comando CAPABILITY richiede al server di inviare una risposta
     CAPABILITY non contrassegnata che elenca le funzionalità
     (capabilities) supportate dal server. Il server deve inviare una
     sola risposta CAPABILITY non contrassegnata e quindi una risposta
     di stato OK. Il server MAY inviare anche una risposta CAPABILITY
     non contrassegnata in qualsiasi momento di una connessione non
     autenticata.

     Un client MAY inviare il comando CAPABILITY in uno stato
     autenticato o non autenticato.

     NOTA: il comando CAPABILITY è progettato per essere particolarmente
     semplice da analizzare. Ogni funzionalità del server è una stringa
     senza spazi. Queste stringhe sono separate da uno spazio singolo o
     più spazi.

     Esempio: un client richiede una lista di funzionalità del server.

  C: A001 CAPABILITY
  S: * CAPABILITY IMAP4rev1 STARTTLS AUTH=GSSAPI XPIG-LATIN
  S: A001 OK CAPABILITY completed


  6.1.2.     Comando NOOP

     Argomenti:  nessuno

     Risposte:  nessuna specifica

     Risultato:  OK - noop completato

     Il comando NOOP serve sempre solo come operazione nulla. Il server
     non deve inviare alcuna risposta di stato di completamento del
     comando NOOP. Il server MAY inviare risposte del server non
     contrassegnate in risposta a un comando NOOP; in questo caso, il
     server MUST inviare una risposta di stato OK dopo aver inviato
     queste risposte.

     NOTA: l'uso di una risposta non contrassegnata da parte del server
     in risposta a un comando NOOP è stato modificato rispetto alla
     versione precedente del protocollo. In precedenza, un server non
     doveva inviare alcuna risposta non contrassegnata in risposta a un
     comando NOOP.

     Esempio: un client invia un comando NOOP.

  C: A001 NOOP
  S: A001 OK NOOP completed


  6.1.3.     Comando LOGOUT

     Argomenti:  nessuno

     Risposte:  obbligatoria non contrassegnata: BYE

     Risultato:  OK - logout completato

     Il comando LOGOUT notifica al server che il client sta per chiudere
     la connessione. Il server MUST inviare una risposta BYE non
     contrassegnata e una risposta di stato LOGOUT OK prima di chiudere
     la connessione dal proprio lato.

     Il server MAY chiudere la connessione prima di inviare la risposta
     BYE e la risposta di stato LOGOUT OK al client, per qualsiasi
     motivo (ad esempio, scadenza del timeout). Il client non deve
     presumere che una risposta BYE o una risposta di stato LOGOUT OK
     sia stata ricevuta dal server prima di ricevere la conferma della
     chiusura della connessione dal server.

     Esempio: un client chiude la connessione.

  C: A001 LOGOUT
  S: * BYE IMAP4rev1 Server logging out
  S: A001 OK LOGOUT completed

6.2. Comandi che richiedono la selezione di una cassetta postale non selezionata

  I comandi in questa sezione richiedono che il client abbia
  precedentemente selezionato una cassetta postale. Un server deve
  consentire l'esecuzione di questi comandi solo quando una cassetta
  postale è selezionata. Un server non deve consentire l'esecuzione di
  questi comandi quando nessuna cassetta postale è selezionata.

  I comandi in questa sezione alterano lo stato della cassetta postale
  o dello spazio dei nomi della cassetta postale. Questi comandi MAY
  causare la generazione di risposte del server non contrassegnate per
  segnalare cambiamenti nello stato della cassetta postale.


  6.2.1.     Comando SELECT

     Argomenti:  nome della cassetta postale

     Risposte:  obbligatoria non contrassegnata: FLAGS, EXISTS,
                RECENT
                opzionale non contrassegnata: OK, NO, BAD
                obbligatoria contrassegnata: OK, NO, BAD

     Risultato:  OK - select completato, ora la cassetta postale è
                  selezionata
              NO - select non riuscito: non è possibile selezionare
                   quella cassetta postale (ad esempio, non esiste, o
                   il permesso negato)
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando SELECT seleziona una cassetta postale in modo che i
     messaggi in essa contenuti possano essere accessibili. Le
     risposte FLAGS, EXISTS e RECENT sono restituite dal server prima
     della risposta di stato di completamento. Un server MAY inviare
     anche altre risposte del server non contrassegnate (ad esempio,
     una risposta OK con un codice di risposta) prima della risposta di
     stato di completamento.

     Se il comando SELECT non riesce, il server deve restituire una
     risposta di stato NO. Se il comando SELECT riesce, il server deve
     restituire una risposta di stato OK. In entrambi i casi, il server
     deve prima restituire le risposte FLAGS, EXISTS e RECENT, se
     applicabili.

     Il client deve inviare un comando SELECT prima di eseguire comandi
     che agiscono sui messaggi di una cassetta postale.

     Esempio: un client seleziona una cassetta postale.

  C: A001 SELECT INBOX
  S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
  S: * 17 EXISTS
  S: * 2 RECENT
  S: * OK [UIDVALIDITY 3857529045] UIDs valid
  S: A001 OK [READ-WRITE] SELECT completed


  6.2.2.     Comando EXAMINE

     Argomenti:  nome della cassetta postale

     Risposte:  obbligatoria non contrassegnata: FLAGS, EXISTS,
                RECENT
                opzionale non contrassegnata: OK, NO, BAD
                obbligatoria contrassegnata: OK, NO, BAD

     Risultato:  OK - examine completato, ora la cassetta postale è
                  selezionata come di sola lettura
              NO - examine non riuscito: non è possibile selezionare
                   quella cassetta postale (ad esempio, non esiste, o
                   il permesso negato)
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando EXAMINE è identico al comando SELECT; tuttavia, la
     cassetta postale selezionata è identificata come di sola lettura.
     Un client non deve inviare comandi che modificano lo stato della
     cassetta postale (ad esempio, STORE, EXPUNGE) mentre una cassetta
     postale è selezionata con il comando EXAMINE.

     Esempio: un client apre una cassetta postale di sola lettura.

  C: A002 EXAMINE INBOX
  S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
  S: * 17 EXISTS
  S: * 2 RECENT
  S: * OK [UIDVALIDITY 3857529045] UIDs valid
  S: A002 OK [READ-ONLY] EXAMINE completed


  6.2.3.     Comando CREATE

     Argomenti:  nome della cassetta postale

     Risposte:  obbligatoria non contrassegnata: CREATE

     Risultato:  OK - create completato
              NO - create non riuscito: non è possibile creare quella
                   cassetta postale (ad esempio, esiste già, o il
                   nome non valido)
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando CREATE crea una nuova cassetta postale con il nome
     specificato. Un server MUST inviare una risposta CREATE non
     contrassegnata con il nome della cassetta postale creata. Se la
     cassetta postale è stata creata, il server deve restituire una
     risposta di stato OK. Altrimenti, il server deve restituire una
     risposta di stato NO. Il server può includere un codice di
     risposta appropriato nella risposta di stato NO.

     Se il nome della cassetta postale termina con un separatore della
     gerarchia della cassetta postale (definito in seguito), allora
     viene creata la cassetta postale del livello della gerarchia
     superiore. Altrimenti, viene creata la cassetta postale del
     livello della gerarchia inferiore.

     Se il nome della cassetta postale contiene uno o più separatori
     della gerarchia della cassetta postale, e se alcuni livelli
     superiori della gerarchia non esistono, allora il server deve
     creare automaticamente le cassette postali del livello della
     gerarchia superiore. È un errore se la cassetta postale esiste già.
     Un server può creare automaticamente le cassette postali del
     livello della gerarchia superiore quando viene create una cassetta
     postale con il comando CREATE.

     Se il server non è in grado di creare la cassetta postale, deve
     restituire una risposta di stato NO. Il client può quindi tentare
     di creare la cassetta postale con un nome diverso, o di selezionare
     una cassetta postale esistente.

     NOTA: il comando CREATE crea una cassetta postale con il nome
     specificato. Non è necessario che la cassetta postale sia
     immediatamente selezionabile. Ad esempio, in alcune
     implementazioni, una cassetta postale può essere creata su un
     disco ma essere selezionabile solo dopo che è stata inizializzata.

     Esempio: un client crea una nuova cassetta postale.

  C: A003 CREATE owatagusiam
  S: A003 OK CREATE completed
  C: A004 CREATE owatagusiam/blurdybloop
  S: A004 OK CREATE completed


  6.2.4.     Comando DELETE

     Argomenti:  nome della cassetta postale

     Risposte:  obbligatoria non contrassegnata: DELETE

     Risultato:  OK - delete completato
              NO - delete non riuscito: non è possibile eliminare
                   quella cassetta postale (ad esempio, non esiste, o
                   il permesso negato)
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando DELETE rimuove permanentemente la cassetta postale con
     il nome specificato. Un server MUST inviare una risposta DELETE
     non contrassegnata con il nome della cassetta postale eliminata.
     Se la cassetta postale è stata eliminata, il server deve
     restituire una risposta di stato OK. Altrimenti, il server deve
     restituire una risposta di stato NO. Il server può includere un
     codice di risposta appropriato nella risposta di stato NO.

     Il server deve annullare la sottoscrizione della cassetta postale
     eliminata, se era sottoscritta.

     Se il nome della cassetta postale termina con un separatore della
     gerarchia della cassetta postale (definito in seguito), allora
     viene eliminata la cassetta postale del livello della gerarchia
     superiore. Altrimenti, viene eliminata la cassetta postale del
     livello della gerarchia inferiore.

     Se la cassetta postale ha cassette postali figlie, queste devono
     essere eliminate prima che la cassetta postale possa essere
     eliminata. Un server può eliminare automaticamente le cassette
     postali figlie quando viene eliminata una cassetta postale con il
     comando DELETE.

     Se il server non è in grado di eliminare la cassetta postale, deve
     restituire una risposta di stato NO. Il client può quindi tentare
     di rimuovere le cassette postali figlie, o di annullare la
     sottoscrizione della cassetta postale.

     NOTA: il comando DELETE rimuove una cassetta postale con il nome
     specificato. Non è necessario che la cassetta postale sia
     immediatamente inesistente. Ad esempio, in alcune
     implementazioni, una cassetta postale può essere contrassegnata
     come eliminata ma essere rimossa solo dopo che è stata
     deselezionata.

     Esempio: un client elimina una cassetta postale.

  C: A005 DELETE blurdybloop
  S: A005 OK DELETE Completed
  C: A006 DELETE foo
  S: A006 NO Name "foo" has inferior hierarchical names
  C: A007 DELETE foo/bar
  S: A007 OK DELETE Completed


  6.2.5.     Comando RENAME

     Argomenti:  nome della cassetta postale esistente
                 nuovo nome della cassetta postale

     Risposte:  obbligatoria non contrassegnata: RENAME

     Risultato:  OK - rename completato
              NO - rename non riuscito: non è possibile rinominare
                   quella cassetta postale (ad esempio, non esiste, o
                   il permesso negato)
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando RENAME rinomina la cassetta postale esistente con il
     nome della cassetta postale esistente per il nuovo nome della
     cassetta postale. Un server MUST inviare una risposta RENAME non
     contrassegnata con il vecchio e il nuovo nome della cassetta
     postale. Se la cassetta postale è stata rinominata, il server deve
     restituire una risposta di stato OK. Altrimenti, il server deve
     restituire una risposta di stato NO. Il server può includere un
     codice di risposta appropriato nella risposta di stato NO.

     Il server deve annullare la sottoscrizione di entrambe le
     cassette postali (esistente e nuova) se hanno una sottoscrizione
     attiva. Ulteriori modifiche alla gerarchia della cassetta postale
     sono specifiche dell'implementazione.

     Se il nome della cassetta postale esistente fa riferimento a una
     cassetta postale inferiore e il nuovo nome della cassetta postale
     non fa riferimento a una cassetta postale inferiore, il server
     MUST spostare la cassetta postale inferiore e le sue cassette
     postali secondarie alla nuova posizione nella gerarchia della
     cassetta postale. Se il nuovo nome della cassetta postale fa
     riferimento a una cassetta postale inferiore, il server deve
     creare la cassetta postale inferiore se non esiste già.

     Esempio: un client rinomina una cassetta postale.

  C: A008 RENAME INBOX old-mail
  S: A008 OK RENAME completed
  C: A009 RENAME my-mail my-old-mail
  S: A009 OK RENAME completed


  6.2.6.     Comando SUBSCRIBE

     Argomenti:  nome della cassetta postale

     Risposte:  obbligatoria non contrassegnata: SUBSCRIBE

     Risultato:  OK - subscribe completato
              NO - subscribe non riuscito: non è possibile sottoscrivere
                   quella cassetta postale (ad esempio, non esiste)
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando SUBSCRIBE aggiunge la cassetta postale specificata al
     set di cassette postali "attive" o "sottoscritte" dell'utente. Un
     server MUST inviare una risposta SUBSCRIBE non contrassegnata con
     il nome della cassetta postale sottoscritta. Se la cassetta postale
     è stata sottoscritta, il server deve restituire una risposta di
     stato OK. Altrimenti, il server deve restituire una risposta di
     stato NO.

     Esempio: un client sottoscrive una cassetta postale.

  C: A010 SUBSCRIBE #news.comp.lang.c
  S: A010 OK SUBSCRIBE completed


  6.2.7.     Comando UNSUBSCRIBE

     Argomenti:  nome della cassetta postale

     Risposte:  obbligatoria non contrassegnata: UNSUBSCRIBE

     Risultato:  OK - unsubscribe completato
              NO - unsubscribe non riuscito: non è possibile annullare
                   la sottoscrizione di quella cassetta postale
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando UNSUBSCRIBE rimuove la cassetta postale specificata dal
     set di cassette postali "attive" o "sottoscritte" dell'utente. Un
     server MUST inviare una risposta UNSUBSCRIBE non contrassegnata con
     il nome della cassetta postale non sottoscritta. Se la cassetta
     postale è stata annullata dalla sottoscrizione, il server deve
     restituire una risposta di stato OK. Altrimenti, il server deve
     restituire una risposta di stato NO.

     Esempio: un client annulla la sottoscrizione di una cassetta
     postale.

  C: A011 UNSUBSCRIBE #news.comp.lang.c
  S: A011 OK UNSUBSCRIBE completed


  6.2.8.     Comando LIST

     Argomenti:  riferimento al nome della cassetta postale
                 maschera del nome della cassetta postale

     Risposte:  obbligatoria non contrassegnata: LIST

     Risultato:  OK - list completato
              NO - list non riuscito: non è possibile elencare quella
                   cassetta postale
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando LIST è usato dal client per richiedere una lista di
     nomi di cassette postali dal server. Un server MUST inviare una
     risposta LIST non contrassegnata per ogni cassetta postale che
     soddisfa i criteri. Se il comando LIST riesce, il server deve
     restituire una risposta di stato OK. Altrimenti, il server deve
     restituire una risposta di stato NO.

     Il riferimento al nome della cassetta postale e la maschera del
     nome della cassetta postale vengono interpretati nel seguente
     modo: il riferimento al nome della cassetta postale è il nome di
     un livello della gerarchia della cassetta postale che deve
     corrispondere al nome della cassetta postale recuperato
     selezionato. La maschera del nome della cassetta postale è
     un'espressione wildcards (caratteri jolly) che è abbinata alla
     gerarchia canonica della cassetta postale locale.

     Esempio: un client richiede una lista di nomi di cassette postali.

  C: A012 LIST "" %
  S: * LIST (\Noselect) "/" ""
  S: * LIST (\Noinferiors) "/" "INBOX"
  S: A012 OK LIST Completed


  6.2.9.     Comando LSUB

     Argomenti:  riferimento al nome della cassetta postale
                 maschera del nome della cassetta postale

     Risposte:  obbligatoria non contrassegnata: LSUB

     Risultato:  OK - lsub completato
              NO - lsub non riuscito: non è possibile elencare quella
                   cassetta postale
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando LSUB richiede una lista di nomi di cassette postali che
     il client ha dichiarato come sottoscritti. Il comportamento di
     abbinamento dei caratteri wildcards (caratteri jolly) del comando
     LSUB è lo stesso del comando LIST. Un server MUST inviare una
     risposta LSUB non contrassegnata per ogni cassetta postale
     sottoscritta che soddisfa i criteri. Se il comando LSUB riesce, il
     server deve restituire una risposta di stato OK. Altrimenti, il
     server deve restituire una risposta di stato NO.

     Esempio: un client richiede una lista di cassette postali
     sottoscritte.

  C: A013 LSUB "#news." "comp.*"
  S: * LSUB () "." #news.comp
  S: A013 OK LSUB Completed


  6.2.10.    Comando STATUS

     Argomenti:  nome della cassetta postale
                 lista delle informazioni sullo stato della cassetta
                 postale

     Risposte:  obbligatoria non contrassegnata: STATUS

     Risultato:  OK - status completato
              NO - status non riuscito: non è possibile ottenere lo
                   stato di quella cassetta postale
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando STATUS richiede le informazioni sullo stato della
     cassetta postale per la cassetta postale denominata. Le
     informazioni sullo stato della cassetta postale richieste sono
     designate dal parametro della lista delle informazioni sullo stato
     della cassetta postale.

     Un server MUST inviare una risposta STATUS non contrassegnata con
     il nome della cassetta postale e le informazioni sullo stato
     della cassetta postale richieste. Se il comando STATUS riesce, il
     server deve restituire una risposta di stato OK. Altrimenti, il
     server deve restituire una risposta di stato NO.

     Le informazioni sullo stato della cassetta postale che possono
     essere richieste:

        MESSAGES
           Il numero di messaggi nella cassetta postale.

        RECENT
           Il numero di messaggi con il flag \Recent impostato.

        UIDNEXT
           Il valore UIDNEXT successivo della cassetta postale. Si
           prega di notare che questo valore non cambia durante l'esecuzione
           di un comando STATUS, anche se i messaggi con flag \Recent
           vengono successivamente annullati.

        UIDVALIDITY
           Il valore UIDVALIDITY della cassetta postale.

        UNSEEN
           Il numero di messaggi non contrassegnati con \Seen.

     Esempio: un client richiede lo stato di una cassetta postale.

  C: A014 STATUS INBOX (MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)
  S: * STATUS INBOX (MESSAGES 5 RECENT 2 UIDNEXT 8 UIDVALIDITY 1390 UNSEEN 2)
  S: A014 OK STATUS completed


  6.2.11.    Comando APPEND

     Argomenti:  nome della cassetta postale
                 lista delle flag (nessuna, o un elenco di flag)
                 data/ora (nessuna, o data/ora interna del messaggio)
                 letterale del messaggio

     Risposte:  obbligatoria non contrassegnata: APPEND

     Risultato:  OK - append completato
              NO - append non riuscito: non è possibile aggiungere quel
                   messaggio (ad esempio, il permesso negato)
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando APPEND permette al client di aggiungere il messaggio
     letterale indicato alla fine della cassetta postale denominata.
     Un server MUST inviare una risposta APPEND non contrassegnata con
     il nome della cassetta postale. Se il comando APPEND riesce, il
     server deve restituire una risposta di stato OK. Altrimenti, il
     server deve restituire una risposta di stato NO.

     I flag indicati per il messaggio vengono impostati nel modo
     seguente: se il server riconosce i flag indicati, questi vengono
     impostati nel nuovo messaggio; in caso contrario, il server
     potrebbe ignorarli. Se non viene indicato alcun flag, il nuovo
     messaggio ha il solo flag \Recent impostato.

     La data/ora indicata, se presente, specifica l'ora interna del
     messaggio; altrimenti, il server utilizza l'ora di ricezione
     locale corrente come ora interna del messaggio.

     Esempio: un client aggiunge un messaggio a una cassetta postale.

  C: A015 APPEND INBOX (\Seen) {416}
  S: + Ready for literal data
  C: Date: Mon, 7 Feb 1994 21:27:09 -0800 (PST)
  C: From: Fred Foobar <[email protected]>
  C: Subject: afternoon meeting
  C: To: [email protected]
  C: Message-Id: <[email protected]>
  C: MIME-Version: 1.0
  C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
  C:
  C: Hello Joe, do you think we can meet at 3:30 tomorrow?
  C:
  S: A015 OK APPEND completed

6.3. Comandi che richiedono la selezione di una cassetta postale

  I comandi in questa sezione richiedono che il client abbia
  precedentemente selezionato una cassetta postale con il comando
  SELECT o EXAMINE. Un server deve consentire l'esecuzione di questi
  comandi solo quando una cassetta postale è selezionata. Un server non
  deve consentire l'esecuzione di questi comandi quando nessuna
  cassetta postale è selezionata.

  I comandi in questa sezione agiscono sui messaggi di una cassetta
  postale selezionata. Questi comandi MAY causare la generazione di
  risposte del server non contrassegnate per segnalare cambiamenti
  nello stato della cassetta postale.


  6.3.1.     Comando CHECK

     Argomenti:  nessuno

     Risposte:  nessuna specifica

     Risultato:  OK - check completato
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando CHECK richiede al server di eseguire un checkpoint
     della cassetta postale corrente. Un server deve inviare una
     risposta di stato OK quando il comando CHECK ha successo. In caso
     contrario, il server deve inviare una risposta di stato BAD.

     Un server MAY eseguire un checkpoint della cassetta postale
     corrente in qualsiasi momento (ad esempio, periodicamente, o
     quando la cassetta postale viene deselezionata); tuttavia, un
     server non deve eseguire alcuna operazione visible al client come
     risultato di un checkpoint.

     Esempio: un client richiede un checkpoint della cassetta postale.

  C: A016 CHECK
  S: A016 OK CHECK Completed


  6.3.2.     Comando CLOSE

     Argomenti:  nessuno

     Risposte:  nessuna specifica

     Risultato:  OK - close completato
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando CLOSE rimuove permanentemente tutte le cancellazioni
     pending (in attesa) dalla cassetta postale corrente, e restituisce
     alla cassetta postale non selezionata lo stato. Un server deve
     inviare una risposta di stato OK quando il comando CLOSE ha
     successo. In caso contrario, il server deve inviare una risposta
     di stato BAD.

     Un client non deve inviare il comando CLOSE mentre ci sono
     cancellazioni pending (in attesa). Un server può, ma non deve,
     rimuovere le cancellazioni pending (in attesa) in risposta a un
     comando CLOSE; in tal caso, il server invia risposte del server
     non contrassegnate per ciascuna cancellazione rimossa.

     NOTA: il comando CLOSE è equivalente a un comando LOGOUT, ma non
     chiude la connessione, e non restituisce una risposta BYE. Un
     client non deve inviare il comando CLOSE mentre una cassetta
     postale è selezionata con il comando EXAMINE, perché la cassetta
     postale è di sola lettura.

     Esempio: un client chiude la cassetta postale correntemente
     selezionata e deseleziona la cassetta postale.

  C: A017 CLOSE
  S: A017 OK CLOSE completed


  6.3.3.     Comando EXPUNGE

     Argomenti:  nessuno

     Risposte:  obbligatoria non contrassegnata: EXPUNGE

     Risultato:  OK - expunge completato
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando EXPUNGE rimuove permanentemente tutte le cancellazioni
     pending (in attesa) dalla cassetta postale. Un server deve inviare
     una risposta EXPUNGE non contrassegnata per ogni messaggio che
     viene cancellato definitivamente. Se il comando EXPUNGE ha
     successo, il server deve restituire una risposta di stato OK. In
     caso contrario, il server deve restituire una risposta di stato
     BAD.

     I messaggi cancellati definitivamente con il comando EXPUNGE non
     devono più essere citati dal server come esistenti.

     NOTA: il comando EXPUNGE è equivalente al comando CLOSE, ma il
     server non deseleziona la cassetta postale. Un client può utilizzare
     il comando EXPUNGE per rimuovere le cancellazioni pending (in attesa)
     senza deselezionare la cassetta postale; in questo caso, il server
     invia risposte del server non contrassegnate per ciascuna
     cancellazione rimossa.

     Esempio: un client elimina definitivamente i messaggi cancellati da
     una cassetta postale.

  C: A018 EXPUNGE
  S: * 3 EXPUNGE
  S: * 3 EXPUNGE
  S: * 5 EXPUNGE
  S: A018 OK EXPUNGE completed


  6.3.4.     Comando SEARCH

     Argomenti:  indicatore di ricerca (CHARSET) (opzionale)
                 criteri di ricerca

     Risposte:  obbligatoria non contrassegnata: SEARCH

     Risultato:  OK - search completato
              NO - search non riuscito: può essere causato da un
                   charset non valido, o da criteri non validi
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando SEARCH ricerca la cassetta postale correntemente
     selezionata per i messaggi che soddisfano i criteri di ricerca
     indicati. Un server deve inviare una risposta SEARCH non
     contrassegnata che elenca gli UID o i numeri di sequenza dei
     messaggi che soddisfano i criteri, in ordine crescente. Se il
     comando SEARCH ha successo, il server deve restituire una risposta
     di stato OK. In caso contrario, il server deve restituire una
     risposta di stato NO o BAD.

     I criteri di ricerca sono descritti nella sezione 6.4.4. I criteri
     di ricerca sono costituiti da uno o più criteri di ricerca, che
     possono essere combinati utilizzando gli operatori di ricerca
     booleani (vedere la sezione 6.4.4). Se uno dei criteri di ricerca
     non è valido, il server deve restituire una risposta di stato NO
     o BAD.

     L'indicatore di ricerca CHARSET, se presente, deve essere
     supportato dal server. I criteri di ricerca sono composti da una
     stringa di caratteri nel set di caratteri indicato. Se il server
     non supporta il set di caratteri indicato, deve restituire una
     risposta di stato NO. Il server può supportare set di caratteri
     aggiuntivi oltre a UTF-8, che è il set di caratteri predefinito.

     Esempio: un client cerca messaggi nella cassetta postale.

  C: A019 SEARCH UNANSWERED
  S: * SEARCH 1 3 5
  S: A019 OK SEARCH completed
  C: A020 SEARCH FROM "SMITH"
  S: * SEARCH 2 4
  S: A020 OK SEARCH completed


  6.3.5.     Comando FETCH

     Argomenti:  sequenza di messaggi
                 elementi dati del messaggio

     Risposte:  obbligatoria non contrassegnata: FETCH

     Risultato:  OK - fetch completato
              NO - fetch non riuscito: i criteri non validi, o la
                   cassetta postale non disponibile
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando FETCH recupera i dati associati ai messaggi della
     cassetta postale. Un server deve inviare una risposta FETCH non
     contrassegnata per ogni messaggio che soddisfa i criteri. Se il
     comando FETCH ha successo, il server deve restituire una risposta
     di stato OK. In caso contrario, il server deve restituire una
     risposta di stato NO o BAD.

     Gli elementi dati del messaggio che possono essere recuperati sono
     descritti nella sezione 6.4.5.

     Esempio: un client recupera i dati del messaggio dalla cassetta
     postale.

  C: A021 FETCH 1:4 (FLAGS INTERNALDATE UID)
  S: * 1 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700" UID 4)
  S: * 2 FETCH (FLAGS () INTERNALDATE "17-Jul-1996 02:44:25 -0700" UID 6)
  S: * 3 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700" UID 8)
  S: * 4 FETCH (FLAGS () INTERNALDATE "17-Jul-1996 02:44:25 -0700" UID 10)
  S: A021 OK FETCH completed

  C: A022 FETCH 1:4 (BODY[HEADER])
  S: * 1 FETCH (BODY[HEADER] {345}
  S: Date: Mon, 7 Feb 1994 21:27:09 -0800 (PST)
  S: From: Fred Foobar <[email protected]>
  S: Subject: afternoon meeting
  S: To: [email protected]
  S: Message-Id: <[email protected]>
  S: MIME-Version: 1.0
  S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
  S:
  S: )
  S: * 2 FETCH (BODY[HEADER] {350}
  S: Date: Mon, 7 Feb 1994 21:27:09 -0800 (PST)
  S: From: Fred Foobar <[email protected]>
  S: Subject: afternoon meeting
  S: To: [email protected]
  S: Message-Id: <[email protected]>
  S: MIME-Version: 1.0
  S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
  S:
  S: )
  S: A022 OK FETCH completed


  6.3.6.     Comando STORE

     Argomenti:  sequenza di messaggi
                 nome dell'elemento dati del messaggio
                 valore dell'elemento dati del messaggio

     Risposte:  obbligatoria non contrassegnata: FETCH

     Risultato:  OK - store completato
              NO - store non riuscito: i criteri non validi, o la
                   cassetta postale non disponibile
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando STORE altera i dati associati ai messaggi della
     cassetta postale. Un server deve inviare una risposta FETCH non
     contrassegnata per ogni messaggio che soddisfa i criteri. Se il
     comando STORE ha successo, il server deve restituire una risposta
     di stato OK. In caso contrario, il server deve restituire una
     risposta di stato NO o BAD.

     Gli elementi dati del messaggio che possono essere modificati sono
     descritti nella sezione 6.4.5.

     Esempio: un client modifica i dati del messaggio nella cassetta
     postale.

  C: A023 STORE 1 +FLAGS (\Seen)
  S: * 1 FETCH (FLAGS (\Seen \Answered))
  S: A023 OK STORE completed

  C: A024 STORE 2:4 -FLAGS (\Seen)
  S: * 2 FETCH (FLAGS ())
  S: * 3 FETCH (FLAGS (\Seen))
  S: * 4 FETCH (FLAGS ())
  S: A024 OK STORE completed

  C: A025 STORE 5:7 FLAGS (\Deleted)
  S: * 5 FETCH (FLAGS (\Deleted))
  S: * 6 FETCH (FLAGS (\Deleted))
  S: * 7 FETCH (FLAGS (\Deleted))
  S: A025 OK STORE completed


  6.3.7.     Comando COPY

     Argomenti:  sequenza di messaggi
                 nome della cassetta postale

     Risposte:  nessuna specifica

     Risultato:  OK - copy completato
              NO - copy non riuscito: non è possibile copiare su quella
                   cassetta postale (ad esempio, non esiste, o il
                   permesso negato)
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando COPY copia il messaggio o i messaggi indicati nella
     cassetta postale di destinazione senza alterare lo stato del
     messaggio originale nella cassetta postale corrente. Se il
     comando COPY ha successo, il server deve restituire una risposta
     di stato OK. In caso contrario, il server deve restituire una
     risposta di stato NO o BAD.

     A seconda dell'implementazione del server, potrebbe essere
     necessario acquisire prima lo stato della cassetta postale di
     destinazione per stabilire se il comando COPY avrà successo.
     In particolare, è un errore se la cassetta postale di destinazione
     non esiste o non è accessibile al client.

     Esempio: un client copia messaggi in un'altra cassetta postale.

  C: A026 COPY 2:4 MEETING
  S: A026 OK COPY completed


  6.3.8.     Comando UID

     Argomenti:  comando

     Risposte:  obbligatoria non contrassegnata: FETCH, SEARCH, o
                risposta del server appropriata al comando

     Risultato:  OK - uid completato
              NO - uid non riuscito
              BAD - argomenti errati, argomenti non validi, o
                    sintassi non valida

     Il comando UID viene utilizzato per eseguire un comando che agisce
     su un UID anziché su un numero di sequenza del messaggio. Il
     comando UID è valido solo quando applicato a un comando che agisce
     su un numero di sequenza del messaggio. Se il comando UID ha
     successo, il server deve restituire una risposta di stato OK con
     l'equivalente UID per il risultato. In caso contrario, il server
     deve restituire una risposta di stato NO o BAD.

     Il comando UID è un modificatore di comando. Viene eseguito un solo
     comando alla volta, in modo da non essere applicato a un altro
     comando UID.

     Esempio: un client esegue un comando sul UID di un messaggio.

  C: A027 UID FETCH 6:8 (FLAGS)
  S: * 1 FETCH (UID 6 FLAGS (\Seen))
  S: * 2 FETCH (UID 7 FLAGS ())
  S: * 3 FETCH (UID 8 FLAGS (\Seen))
  S: A027 OK UID FETCH completed

6.4. Comandi di modifica dello spazio dei nomi della cassetta postale

  I comandi in questa sezione agiscono sullo spazio dei nomi della
  cassetta postale. Questi comandi MAY causare la generazione di
  risposte del server non contrassegnate per segnalare cambiamenti
  nello stato della cassetta postale.


  6.4.1.     Comando CREATE

     (Vedere la sezione 6.2.3)


  6.4.2.     Comando DELETE

     (Vedere la sezione 6.2.4)


  6.4.3.     Comando RENAME

     (Vedere la sezione 6.2.5)


  6.4.4.     Criteri di ricerca

     I criteri di ricerca sono costituiti da uno o più criteri di
     ricerca, che possono essere combinati utilizzando gli operatori
     di ricerca booleani. I criteri di ricerca sono descritti di
     seguito.

     Tutti i criteri di ricerca che utilizzano argomenti di testo
     (ad esempio, argomenti di testo nelle intestazioni dei messaggi)
     utilizzano i set di caratteri indicati dall'indicatore di
     ricerca CHARSET, se presente. In caso contrario, viene utilizzato
     il set di caratteri predefinito (UTF-8).

     NOTA: i set di caratteri non ASCII richiedono la modifica dei
     protocolli di rete per supportare l'uso di set di caratteri non
     ASCII nelle query di ricerca. I set di caratteri UTF-8 e ASCII a
     7 bit sono supportati da questo protocollo. Altri set di caratteri
     possono essere supportati da una versione futura di questo
     protocollo, o da un'estensione del protocollo.

     I criteri di ricerca sono i seguenti. Si noti che i criteri di
     ricerca possono essere combinati utilizzando gli operatori di
     ricerca booleani. L'uso degli operatori di ricerca booleani è
     descritto di seguito.


     ALL
        Tutti i messaggi della cassetta postale.

     ANSWERED
        I messaggi con il flag \Answered impostato.

     BCC <stringa>
        I messaggi che contengono la stringa indicata nell'intestazione
        Bcc (Cc nascosta).

     BEFORE <data>
        I messaggi con la data/ora interna precedente alla data
        indicata.

     BODY <stringa>
        I messaggi che contengono la stringa indicata nel corpo del
        messaggio.

     CC <stringa>
        I messaggi che contengono la stringa indicata nell'intestazione
        Cc (Cc per conoscenza).

     DELETED
        I messaggi con il flag \Deleted impostato.

     DRAFT
        I messaggi con il flag \Draft impostato.

     FLAGGED
        I messaggi con il flag \Flagged impostato.

     FROM <stringa>
        I messaggi che contengono la stringa indicata nell'intestazione
        From (Da/Mittente).

     HEADER <campo> <stringa>
        I messaggi che hanno un'intestazione con il campo indicato che
        contiene la stringa indicata.

     KEYWORD <flag>
        I messaggi con la parola chiave (flag) indicata impostata.

     LARGER <n>
        I messaggi con una dimensione superiore all'ottetto indicato.

     NEW
        I messaggi che hanno il flag \Recent impostato ma non il flag
        \Seen. Questo è equivalente a "(RECENT UNSEEN)".

     NOT <criterio di ricerca>
        I messaggi che non soddisfano il criterio di ricerca indicato.

     OLD
        I messaggi che non hanno il flag \Recent impostato. Questo è
        equivalente a "NOT NEW".

     ON <data>
        I messaggi con la data/ora interna esattamente uguale alla data
        indicata.

     OR <criterio di ricerca> <criterio di ricerca>
        I messaggi che soddisfano uno o entrambi i criteri di ricerca
        indicati.

     RECENT
        I messaggi che hanno il flag \Recent impostato.

     SEEN
        I messaggi che hanno il flag \Seen impostato.

     SENTBEFORE <data>
        I messaggi con la data/ora dell'intestazione Date precedente
        alla data indicata.

     SENTON <data>
        I messaggi con la data/ora dell'intestazione Date esattamente
        uguale alla data indicata.

     SENTSINCE <data>
        I messaggi con la data/ora dell'intestazione Date successiva o
        uguale alla data indicata.

     SINCE <data>
        I messaggi con la data/ora interna successiva o uguale alla data
        indicata.

     SMALLER <n>
        I messaggi con una dimensione inferiore o uguale all'ottetto
        indicato.

     SUBJECT <stringa>
        I messaggi che contengono la stringa indicata nell'intestazione
        Subject (Oggetto).

     TEXT <stringa>
        I messaggi che contengono la stringa indicata nell'intestatura
        del messaggio o nel corpo del messaggio.

     TO <stringa>
        I messaggi che contengono la stringa indicata nell'intestazione
        To (A).

     UID <sequenza di messaggi>
        I messaggi con UID nel range indicato.

     UNANSWERED
        I messaggi che non hanno il flag \Answered impostato.

     UNDELETED
        I messaggi che non hanno il flag \Deleted impostato.

     UNDRAFT
        I messaggi che non hanno il flag \Draft impostato.

     UNFLAGGED
        I messaggi che non hanno il flag \Flagged impostato.

     UNKEYWORD <flag>
        I messaggi che non hanno la parola chiave (flag) indicata
        impostata.

     UNSEEN
        I messaggi che non hanno il flag \Seen impostato.


     Operatori di ricerca booleani:

        I criteri di ricerca possono essere combinati utilizzando gli
        operatori di ricerca booleani. Gli operatori di ricerca booleani
        sono i seguenti:

        NOT <criterio di ricerca>
           I messaggi che non soddisfano il criterio di ricerca indicato.

        OR <criterio di ricerca> <criterio di ricerca>
           I messaggi che soddisfano uno o entrambi i criteri di ricerca
           indicati.

        I criteri di ricerca possono essere raggruppati utilizzando le
        parentesi. Le parentesi possono essere annidate. Se non vengono
        utilizzate parentesi, gli operatori di ricerca booleani sono
        valutati da sinistra a destra.


  6.4.5.     Comando FETCH

     (Vedere la sezione 6.3.5)

RFC 3501 IMAPv4 March 2003