rfc2449
rfc2449
Gellens
Request for Comments: 2449 Qualcomm
Updates: 1939 C. Newman
Category: Standards Track Innosoft
L. Lundblade
Qualcomm
November 1998
Copyright Notice
IESG Note
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions Used in this Document . . . . . . . . . . . . . 3
3. General Command and Response Grammar . . . . . . . . . . . . 3
4. Parameter and Response Lengths . . . . . . . . . . . . . . 4
5. The CAPA Command . . . . . . . . . . . . . . . . . . . . . . 4
6. Initial Set of Capabilities . . . . . . . . . . . . . . . . 5
6.1. TOP capability . . . . . . . . . . . . . . . . . . . . . 6
6.2. USER capability . . . . . . . . . . . . . . . . . . . . 6
6.3. SASL capability . . . . . . . . . . . . . . . . . . . . 7
6.4. RESP-CODES capability . . . . . . . . . . . . . . . . . 8
6.5. LOGIN-DELAY capability . . . . . . . . . . . . . . . . . 8
6.6. PIPELINING capability . . . . . . . . . . . . . . . . . 9
1. Introduction
The key words "REQUIRED", "MUST", "MUST NOT", "SHOULD", "SHOULD NOT",
and "MAY" in this document are to be interpreted as described in "Key
words for use in RFCs to Indicate Requirement Levels" [KEYWORDS].
In examples, "C:" and "S:" indicate lines sent by the client and
server respectively.
POP3 commands:
POP3 responses:
CAPA
Arguments:
none
Restrictions:
none
Discussion:
An -ERR response indicates the capability command is not
implemented and the client will have to probe for
capabilities as before.
Possible Responses:
+OK -ERR
Examples:
C: CAPA
S: +OK Capability list follows
S: TOP
S: USER
S: SASL CRAM-MD5 KERBEROS_V4
S: RESP-CODES
S: LOGIN-DELAY 900
S: PIPELINING
S: EXPIRE 60
S: UIDL
S: IMPLEMENTATION Shlemazle-Plotz-v302
S: .
CAPA tag:
TOP
Arguments:
none
Added commands:
TOP
Specification reference:
[POP3]
Discussion:
The TOP capability indicates the optional TOP command is
available.
CAPA tag:
USER
Arguments:
none
Added commands:
USER PASS
Specification reference:
[POP3]
Discussion:
The USER capability indicates that the USER and PASS commands
are supported, although they may not be available to all users.
CAPA tag:
SASL
Arguments:
Supported SASL mechanisms
Added commands:
AUTH
Specification reference:
[POP-AUTH, SASL]
Discussion:
The POP3 AUTH command [POP-AUTH] permits the use of [SASL]
authentication mechanisms with POP3. The SASL capability
indicates that the AUTH command is available and that it supports
an optional base64 encoded second argument for an initial client
response as described in the SASL specification. The argument to
the SASL capability is a space separated list of SASL mechanisms
which are supported.
CAPA tag:
RESP-CODES
Arguments:
none
Added commands:
none
Specification reference:
this document
Discussion:
The RESP-CODES capability indicates that any response text issued
by this server which begins with an open square bracket ("[") is
an extended response code (see section 8).
CAPA tag:
LOGIN-DELAY
Arguments:
minimum seconds between logins; optionally followed by USER in
AUTHENTICATION state.
Added commands:
none
Specification reference:
this document
Discussion:
POP3 clients often login frequently to check for new mail.
Unfortunately, the process of creating a connection,
authenticating the user, and opening the user's maildrop can be
very resource intensive on the server. A number of deployed POP3
servers try to reduce server load by requiring a delay between
logins. The LOGIN-DELAY capability includes an integer argument
which indicates the number of seconds after an "+OK" response to
a PASS, APOP, or AUTH command before another authentication will
be accepted. Clients which permit the user to configure a mail
check interval SHOULD use this capability to determine the
minimum permissible interval. Servers which advertise LOGIN-
DELAY SHOULD enforce it.
If the minimum login delay period could differ per user (that is,
the LOGIN-DELAY argument might change after authentication), the
server MUST announce in AUTHENTICATION state the largest value
which could be set for any user. This might be the largest value
currently in use for any user (so only one value per server), or
even the largest value which the server permits to be set for any
user. The server SHOULD append the token "USER" to the LOGIN-
DELAY parameter in AUTHENTICATION state, to inform the client
that a more accurate value is available after authentication.
The server SHOULD announce the more accurate value in TRANSACTION
state. (The "USER" token allows the client to decide if a second
CAPA command is needed or not.)
CAPA tag:
PIPELINING
Arguments:
none
Added commands:
none
Specification reference:
this document
Discussion:
The PIPELINING capability indicates the server is capable of
accepting multiple commands at a time; the client does not have
to wait for the response to a command before issuing a subsequent
command. If a server supports PIPELINING, it MUST process each
command in turn. If a client uses PIPELINING, it MUST keep track
of which commands it has outstanding, and match server responses
to commands in order. If either the client or server uses
blocking writes, it MUST not exceed the window size of the
underlying transport layer.
CAPA tag:
EXPIRE
Arguments:
server-guaranteed minimum retention days, or NEVER; optionally
followed by USER in AUTHENTICATION state
Added commands:
none
Specification reference:
this document
Discussion:
While POP3 allows clients to leave messages on the server, RFC
1939 [POP3] warns about the problems that may arise from this,
and allows servers to delete messages based on site policy.
EXPIRE NEVER asserts that the server does not delete messages.
If the expiration policy differs per user (that is, the EXPIRE
argument might change after authentication), the server MUST
announce in AUTHENTICATION state the smallest value which could
be set for any user. This might be the smallest value currently
in use for any user (so only one value per server), or even the
smallest value which the server permits to be set for any user.
The server SHOULD append the token "USER" to the EXPIRE parameter
in AUTHENTICATION state, to inform the client that a more
accurate value is available after authentication. The server
SHOULD announce the more accurate value in TRANSACTION state.
(The "USER" token allows the client to decide if a second CAPA
command is needed or not.)
Examples:
EXPIRE 5 USER
EXPIRE 30
EXPIRE NEVER
EXPIRE 0
CAPA tag:
UIDL
Arguments:
none
Added commands:
UIDL
Specification reference:
[POP3]
Discussion:
The UIDL capability indicates that the optional UIDL command is
supported.
CAPA tag:
IMPLEMENTATION
Arguments:
string giving server implementation information
Added commands:
none
Specification reference:
this document
Discussion:
It is often useful to identify an implementation of a particular
server (for example, when logging). This is commonly done in the
welcome banner, but one must guess if a string is an
implementation ID or not.
Clients MUST NOT require the presence of any extension for basic
functionality, with the exception of the authentication commands
(APOP, AUTH [section 6.3] and USER/PASS).
Examples:
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: -ERR [IN-USE] Do you have another POP session running?
This specification defines two POP3 response codes which can be used
to determine the reason for a failed login. Section 9 specifies how
additional response codes are defined.
strongly recommended that the server not issue this response code to
the USER command. The server still saves the cost of opening the
maildrop, which in some environments is the most expensive step.
9. IANA Considerations
This document requests that IANA maintain two new registries: POP3
capabilities and POP3 response codes.
In addition, new limits for POP3 command and response lengths may
need to be included.
11. Acknowledgments
12. References
[SMTP] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC
821, August 1982.
Randall Gellens
QUALCOMM Incorporated
6455 Lusk Blvd.
San Diego, CA 92121-2779
USA
Chris Newman
Innosoft International, Inc.
1050 Lakes Drive
West Covina, CA 91790
USA
EMail: [email protected]
Laurence Lundblade
QUALCOMM Incorporated
6455 Lusk Blvd.
San Diego, Ca, 92121-2779
USA
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.