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