6. Comandi client (Client Commands)
I comandi IMAP4rev2 sono descritti in questa sezione. I comandi sono organizzati in base allo stato in cui il comando è consentito. I comandi consentiti in più stati sono elencati nello stato minimo consentito (ad esempio, i comandi validi negli stati autenticato e selezionato sono elencati nei comandi dello stato autenticato).
Gli argomenti del comando, identificati da "Arguments:" nelle descrizioni dei comandi di seguito, sono descritti per funzione, non per sintassi. La sintassi precisa degli argomenti del comando è descritta in "Sintassi formale" (Sezione 9).
Alcuni comandi causano la restituzione di risposte del server specifiche; questi sono identificati da "Responses:" nelle descrizioni dei comandi di seguito. Vedere le descrizioni delle risposte in "Risposte" (Sezione 7) per informazioni su queste risposte e in "Sintassi formale" (Sezione 9) per la sintassi precisa di queste risposte. È possibile che i dati del server vengano trasmessi come risultato di qualsiasi comando. Pertanto, i comandi che non richiedono specificamente dati del server specificano "nessuna risposta specifica per questo comando" invece di "nessuna".
Il "Result:" nella descrizione del comando si riferisce alle possibili risposte di stato etichettate a un comando e a qualsiasi interpretazione speciale di queste risposte di stato.
Lo stato di una connessione viene modificato solo da comandi riusciti che sono documentati come cambiamenti di stato. Un comando rifiutato (risposta BAD) non cambia mai lo stato della connessione o della casella di posta selezionata. Un comando fallito (risposta NO) generalmente non cambia lo stato della connessione o della casella di posta selezionata, ad eccezione dei comandi SELECT ed EXAMINE.
6.1 Comandi client - Qualsiasi stato (Client Commands - Any State)
I seguenti comandi sono validi in qualsiasi stato: CAPABILITY, NOOP e LOGOUT.
6.1.1 Comando CAPABILITY
Argomenti: nessuno
Risposte: Risposta non etichettata RICHIESTA: CAPABILITY
Risultato:
- OK - capability completata
- BAD - argomenti non validi
Il comando CAPABILITY richiede un elenco delle capacità (ad esempio, estensioni e/o modifiche del comportamento del server) supportate dal server. Il server deve (deve) inviare una singola risposta CAPABILITY non etichettata con "IMAP4rev2" come una delle capacità elencate prima della risposta OK (etichettata).
Un nome di capacità che inizia con "AUTH=" indica che il server supporta quel particolare meccanismo di autenticazione come definito nel Simple Authentication and Security Layer (SASL) [SASL]. Tutti questi nomi sono, per definizione, parte di questa specifica.
Altri nomi di capacità si riferiscono a estensioni, revisioni o emendamenti a questa specifica. Vedere la documentazione della risposta CAPABILITY nella Sezione 7.2.2 per ulteriori informazioni. Se la capacità IMAP4rev1 non viene pubblicizzata, nessuna capacità, oltre al set IMAP4rev2 di base definito in questa specifica, viene abilitata senza un'azione esplicita del client per invocare la capacità. Se vengono pubblicizzate sia le capacità IMAP4rev1 che IMAP4rev2, nessuna capacità, oltre al set IMAP4rev1 di base specificato in [RFC3501], viene abilitata senza un'azione esplicita del client per invocare la capacità.
Le implementazioni client e server devono (devono) implementare le capacità STARTTLS (Sezione 6.2.1) e LOGINDISABLED sulle porte di testo in chiaro. Le implementazioni client e server devono (devono) anche implementare la capacità AUTH=PLAIN (descritta in [PLAIN]) sia sulle porte di testo in chiaro che sulle porte TLS implicite. Vedere le Considerazioni sulla sicurezza (Sezione 11) per informazioni importanti.
Salvo diversa indicazione, tutte le estensioni registrate a IMAP4rev1 sono anche estensioni valide a IMAP4rev2.
Esempio:
C: abcd CAPABILITY
S: * CAPABILITY IMAP4rev2 STARTTLS AUTH=GSSAPI LOGINDISABLED
S: abcd OK CAPABILITY completed
C: efgh STARTTLS
S: efgh OK STARTTLS completed
<Negoziazione TLS, i comandi successivi sono sotto il livello TLS>
C: ijkl CAPABILITY
S: * CAPABILITY IMAP4rev2 AUTH=GSSAPI AUTH=PLAIN
S: ijkl OK CAPABILITY completed
6.1.2 Comando NOOP
Argomenti: nessuno
Risposte: nessuna risposta specifica per questo comando (ma vedi sotto)
Risultato:
- OK - noop completata
- BAD - comando sconosciuto o argomenti non validi
Il comando NOOP ha sempre successo. Non fa nulla.
Poiché qualsiasi comando può restituire un aggiornamento di stato come dati non etichettati, il comando NOOP può essere utilizzato come polling periodico per nuovi messaggi o aggiornamenti di stato dei messaggi durante un periodo di inattività (il comando IDLE; vedere Sezione 6.3.13) dovrebbe essere utilizzato al posto di NOOP se sono desiderabili aggiornamenti in tempo reale dello stato della casella di posta). Il comando NOOP può anche essere utilizzato per reimpostare qualsiasi timer di disconnessione automatica per inattività sul server.
Esempio:
C: a002 NOOP
S: a002 OK NOOP completed
. . .
C: a047 NOOP
S: * 22 EXPUNGE
S: * 23 EXISTS
S: * 14 FETCH (UID 1305 FLAGS (\Seen \Deleted))
S: a047 OK NOOP completed
6.1.3 Comando LOGOUT
Argomenti: nessuno
Risposte: Risposta non etichettata RICHIESTA: BYE
Risultato:
- OK - logout completata
- BAD - comando sconosciuto o argomenti non validi
Il comando LOGOUT informa il server che il client ha terminato con la connessione. Il server deve (deve) inviare una risposta BYE non etichettata prima della risposta OK (etichettata), quindi chiudere la connessione di rete.
Esempio:
C: A023 LOGOUT
S: * BYE IMAP4rev2 Server logging out
S: A023 OK LOGOUT completed
(Server e client chiudono quindi la connessione)
Nota: Il Capitolo 6 è esteso e contiene più sottosezioni. Per l'elenco completo dei comandi, fare riferimento alle singole sottosezioni:
- 6.1 Comandi per qualsiasi stato (questa pagina)
- 6.2 Comandi per stato non autenticato
- 6.3 Comandi per stato autenticato
- 6.4 Comandi per stato selezionato