rfc1176.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 1,616 行 · 第 1/5 页
TXT
1,616 行
is selected by default. SELECT's argument is implementation-
dependent; however the word "INBOX" must be implemented to mean the
primary or default mailbox for this user, independent of any other
server semantics. On a successful SELECT, the server will send a
list of valid flags, number of messages, and number of messages
arrived since last access for this mailbox as unsolicited data,
followed by an OK response. The client may terminate access to this
mailbox and access a different one with another SELECT command.
The client reads mailbox information with FETCH commands. The actual
Crispin [Page 6]
RFC 1176 IMAP2 August 1990
data is transmitted via the unsolicited data mechanism (that is,
FETCH should be viewed as instructing the server to include the
desired data along with any other data it wishes to transmit to the
client). There are three major categories of data that may be
fetched.
The first category is data that is associated with a message as an
entity in the mailbox. There are now three such items of data: the
"internal date", the "RFC 822 size", and the "flags". The internal
date is the date and time that the message was placed in the mailbox.
The RFC 822 size is subject to deletion in the future; it is the size
in bytes of the message, expressed as an RFC 822 text string.
Current clients only use it as part of a status display line. The
flags are a list of status flags associated with the message (see
below). All the first category data can be fetched by using the
macro-fetch word "FAST"; that is, "FAST" expands to "(FLAGS
INTERNALDATE RFC822.SIZE)".
The second category is that data that describes the composition and
delivery information of a message; that is, information such as the
message sender, recipient lists, message-ID, subject, etc. This is
the information that is stored in the message header in RFC 822
format message and is traditionally called the "envelope". [Note:
this should not be confused with the SMTP (RFC 821) envelope, which
is strictly limited to delivery information.] IMAP2 defines a
structured and unambiguous representation for the envelope that is
particularly suited for Lisp-based parsers. A client can use the
envelope for operations such as replying and not worry about RFC 822
at all. Envelopes are discussed in more detail below. The first two
categories of data can be fetched together by using the macro-fetch
word "ALL"; that is, "ALL" expands to "(FLAGS INTERNALDATE
RFC822.SIZE ENVELOPE)".
The third category is that data that is intended for direct human
viewing. The present RFC 822 based IMAP2 defines three such items:
RFC822.HEADER, RFC822.TEXT, and RFC822 (the latter being the two
former appended together in a single text string). RFC822.HEADER is
the "raw", unprocessed RFC 822 format header of the message.
Fetching "RFC822" is equivalent to fetching the RFC 822
representation of the message as stored on the mailbox without any
filtering or processing.
An intelligent client will "FETCH ALL" for some (or all) of the
messages in the mailbox for use as a presentation menu, and when the
user wishes to read a particular message will "FETCH RFC822.TEXT" to
get the message body. A more primitive client could, of course,
simply "FETCH RFC822" a`la POP-type functionality.
Crispin [Page 7]
RFC 1176 IMAP2 August 1990
The client can alter certain data (currently only the flags) by a
STORE command. As an example, a message is deleted from a mailbox by
a STORE command that includes the \DELETED flag as a flag being set.
Other client operations include copying a message to another mailbox
(COPY command), permanently removing deleted messages (EXPUNGE
command), checking for new messages (CHECK command), and searching
for messages that match certain criteria (SEARCH command).
The client terminates the session with the LOGOUT command. The
server returns a "BYE" followed by an "OK".
A Typical Scenario
Client Server
------ ------
{Wait for Connection}
{Open Connection} -->
<-- * OK IMAP2 Server Ready
{Wait for command}
A001 LOGIN Fred Secret -->
<-- A001 OK User Fred logged in
{Wait for command}
A002 SELECT INBOX -->
<-- * FLAGS (Meeting Notice \Answered
\Flagged \Deleted \Seen)
<-- * 19 EXISTS
<-- * 2 RECENT
<-- A0002 OK Select complete
{Wait for command}
A003 FETCH 1:19 ALL -->
<-- * 1 Fetch (......)
...
<-- * 18 Fetch (......)
<-- * 19 Fetch (......)
<-- A003 OK Fetch complete
{Wait for command}
A004 FETCH 8 RFC822.TEXT -->
<-- * 8 Fetch (RFC822.TEXT {893}
...893 characters of text...
<-- )
<-- A004 OK Fetch complete
{Wait for command}
Crispin [Page 8]
RFC 1176 IMAP2 August 1990
A005 STORE 8 +Flags \Deleted -->
<-- * 8 Store (Flags (\Deleted
\Seen))
<-- A005 OK Store complete
{Wait for command}
A006 EXPUNGE -->
<-- * 19 EXISTS
<-- * 8 EXPUNGE
<-- * 18 EXISTS
<-- A006 Expunge complete
{Wait for command}
A007 LOGOUT -->
<-- * BYE IMAP2 server quitting
<-- A007 OK Logout complete
{Close Connection} --><-- {Close connection}
{Go back to start}
Conventions
The following terms are used in a meta-sense in the syntax
specification below:
An ASCII-STRING is a sequence of arbitrary ASCII characters.
An ATOM is a sequence of ASCII characters delimited by SP or CRLF.
A CHARACTER is any ASCII character except """", "{", CR, LF, "%",
or "\".
A CRLF is an ASCII carriage-return character followed immediately
by an ASCII linefeed character.
A NUMBER is a sequence of the ASCII characters that represent
decimal numerals ("0" through "9"), delimited by SP, CRLF, ",", or
":".
A SP is the ASCII space character.
A TEXT_LINE is a human-readable sequence of ASCII characters up to
but not including a terminating CRLF.
A common field in the IMAP2 protocol is a STRING, which may be an
ATOM, QUOTED-STRING (a sequence of CHARACTERs inside double-quotes),
or a LITERAL. A literal consists of an open brace ("{"), a number, a
close brace ("}"), a CRLF, and then an ASCII-STRING of n characters,
where n is the value of the number inside the brace. In general, a
string should be represented as an ATOM or QUOTED-STRING if at all
possible. The semantics for QUOTED-STRING or LITERAL are checked
before those for ATOM; therefore an ATOM used in a STRING may only
Crispin [Page 9]
RFC 1176 IMAP2 August 1990
contain CHARACTERs. Literals are most often sent from the server to
the client; in the rare case of a client to server literal there is a
special consideration (see the "+ text" response below).
Another important field is the SEQUENCE, which identifies a set of
messages by consecutive numbers from 1 to n where n is the number of
messages in the mailbox. A sequence may consist of a single number,
a pair of numbers delimited by colon (equivalent to all numbers
between those two numbers), or a list of single numbers or number
pairs. For example, the sequence 2,4:7,9,12:15 is equivalent to
2,4,5,6,7,9,12,13,14,15 and identifies all those messages.
Definitions of Commands and Responses
Summary of Commands and Responses
Commands || Responses
-------- || -------
tag NOOP || tag OK text
tag LOGIN user password || tag NO text
tag LOGOUT || tag BAD text
tag SELECT mailbox || * number message_data
tag BBOARD bulletin_board || * FLAGS flag_list
tag FIND MAILBOXES pattern || * SEARCH sequence
tag FIND BBOARDS pattern || * BBOARD string
tag CHECK || * MAILBOX string
tag EXPUNGE || * BYE text
tag COPY sequence mailbox || * OK text
tag FETCH sequence data || * NO text
tag STORE sequence data value || * BAD text
tag SEARCH search_program || + text
Commands
tag NOOP
The NOOP command returns an OK to the client. By itself, it does
nothing, but certain things may happen as side effects. For
example, server implementations that implicitly check the mailbox
for new mail may do so as a result of this command. The primary
use of this command is to for the client to see if the server is
still alive (and notify the server that the client is still alive,
for those servers that have inactivity autologout timers).
tag LOGIN user password
The LOGIN command identifies the user to the server and carries
the password authenticating this user. This information is used
Crispin [Page 10]
RFC 1176 IMAP2 August 1990
by the server to control access to the mailboxes.
EXAMPLE: A001 LOGIN SMITH SESAME
logs in as user SMITH with password SESAME.
tag LOGOUT
The LOGOUT command informs the server that the client is done with
the session. The server should send an unsolicited BYE response
before the (tagged) OK response, and then close the network
connection.
tag SELECT mailbox
The SELECT command selects a particular mailbox. The server must
check that the user is permitted read access to this mailbox.
Before returning an OK to the client, the server must send the
following unsolicited data to the client:
FLAGS mailbox's defined flags
<n> EXISTS the number of messages in the mailbox
<n> RECENT the number of new messages in the mailbox
in order to define the initial state of the mailbox at the client.
Multiple SELECT commands are permitted in a session, in which case
the previous mailbox is automatically deselected when a new SELECT
is made.
The default mailbox for the SELECT command is INBOX, which is a
special name reserved to mean "the primary mailbox for this user
on this server". The format of other mailbox names is operating
system dependent (as of this writing, it reflects the filename
path of the mailbox file on the current servers).
It is customary, although not required, for the text of an OK
response to the SELECT command to begin with either "[READ-ONLY]"
or "[READ-WRITE]" to show the mailbox's access status.
EXAMPLE: A002 SELECT INBOX
selects the default mailbox.
tag BBOARD bulletin_board
The BBOARD command is equivalent to SELECT, and returns the same
output. However, it differs from SELECT in that its argument is a
shared mailbox (bulletin board) name instead of an ordinary
mailbox. The format of a bulletin name is implementation
specific, although it is strongly encouraged to use something that
resembles a name in a generic sense and not a file or mailbox name
Crispin [Page 11]
RFC 1176 IMAP2 August 1990
on the particular system. There is no requirement that a bulletin
board name be a mailbox name or a file name (in particular, Unix
netnews has a completely different namespace from mailbox or file
names).
Support for BBOARD is optional.
tag FIND MAILBOXES pattern
The FIND MAILBOXES command accepts as an argument a pattern
(including wildcards) that specifies some set of mailbox names
that are usable by the SELECT command. The format of mailboxes is
implementation dependent. The special mailbox name INBOX is not
included in the output.
Two wildcard characters are defined; "*" specifies any number
(including zero) characters may match at this position and "%"
specifies a single character may match at this position. For
example, FOO*BAR will match FOOBAR, FOOD.ON.THE.BAR and FOO.BAR,
whereas FOO%BAR will match only FOO.BAR. "*" will match all
mailboxes.
The FIND MAILBOXES command will return some set of unsolicited
MAILBOX replies that have as their value a single mailbox name.
EXAMPLE: A002 FIND MAILBOXES *
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?