rfc1939.txt
上传用户:horngjaan
上传日期:2009-12-12
资源大小:2882k
文件大小:47k
源码类别:

Email服务器

开发平台:

C#

  1. Network Working Group                                           J. Myers
  2. Request for Comments: 1939                               Carnegie Mellon
  3. STD: 53                                                          M. Rose
  4. Obsoletes: 1725                             Dover Beach Consulting, Inc.
  5. Category: Standards Track                                       May 1996
  6.                     Post Office Protocol - Version 3
  7. Status of this Memo
  8.    This document specifies an Internet standards track protocol for the
  9.    Internet community, and requests discussion and suggestions for
  10.    improvements.  Please refer to the current edition of the "Internet
  11.    Official Protocol Standards" (STD 1) for the standardization state
  12.    and status of this protocol.  Distribution of this memo is unlimited.
  13. Table of Contents
  14.    1. Introduction ................................................    2
  15.    2. A Short Digression ..........................................    2
  16.    3. Basic Operation .............................................    3
  17.    4. The AUTHORIZATION State .....................................    4
  18.       QUIT Command ................................................    5
  19.    5. The TRANSACTION State .......................................    5
  20.       STAT Command ................................................    6
  21.       LIST Command ................................................    6
  22.       RETR Command ................................................    8
  23.       DELE Command ................................................    8
  24.       NOOP Command ................................................    9
  25.       RSET Command ................................................    9
  26.    6. The UPDATE State ............................................   10
  27.       QUIT Command ................................................   10
  28.    7. Optional POP3 Commands ......................................   11
  29.       TOP Command .................................................   11
  30.       UIDL Command ................................................   12
  31.       USER Command ................................................   13
  32.       PASS Command ................................................   14
  33.       APOP Command ................................................   15
  34.    8. Scaling and Operational Considerations ......................   16
  35.    9. POP3 Command Summary ........................................   18
  36.    10. Example POP3 Session .......................................   19
  37.    11. Message Format .............................................   19
  38.    12. References .................................................   20
  39.    13. Security Considerations ....................................   20
  40.    14. Acknowledgements ...........................................   20
  41.    15. Authors' Addresses .........................................   21
  42.    Appendix A. Differences from RFC 1725 ..........................   22
  43. Myers & Rose                Standards Track                     [Page 1]
  44. RFC 1939                          POP3                          May 1996
  45.    Appendix B. Command Index ......................................   23
  46. 1. Introduction
  47.    On certain types of smaller nodes in the Internet it is often
  48.    impractical to maintain a message transport system (MTS).  For
  49.    example, a workstation may not have sufficient resources (cycles,
  50.    disk space) in order to permit a SMTP server [RFC821] and associated
  51.    local mail delivery system to be kept resident and continuously
  52.    running.  Similarly, it may be expensive (or impossible) to keep a
  53.    personal computer interconnected to an IP-style network for long
  54.    amounts of time (the node is lacking the resource known as
  55.    "connectivity").
  56.    Despite this, it is often very useful to be able to manage mail on
  57.    these smaller nodes, and they often support a user agent (UA) to aid
  58.    the tasks of mail handling.  To solve this problem, a node which can
  59.    support an MTS entity offers a maildrop service to these less endowed
  60.    nodes.  The Post Office Protocol - Version 3 (POP3) is intended to
  61.    permit a workstation to dynamically access a maildrop on a server
  62.    host in a useful fashion.  Usually, this means that the POP3 protocol
  63.    is used to allow a workstation to retrieve mail that the server is
  64.    holding for it.
  65.    POP3 is not intended to provide extensive manipulation operations of
  66.    mail on the server; normally, mail is downloaded and then deleted.  A
  67.    more advanced (and complex) protocol, IMAP4, is discussed in
  68.    [RFC1730].
  69.    For the remainder of this memo, the term "client host" refers to a
  70.    host making use of the POP3 service, while the term "server host"
  71.    refers to a host which offers the POP3 service.
  72. 2. A Short Digression
  73.    This memo does not specify how a client host enters mail into the
  74.    transport system, although a method consistent with the philosophy of
  75.    this memo is presented here:
  76.       When the user agent on a client host wishes to enter a message
  77.       into the transport system, it establishes an SMTP connection to
  78.       its relay host and sends all mail to it.  This relay host could
  79.       be, but need not be, the POP3 server host for the client host.  Of
  80.       course, the relay host must accept mail for delivery to arbitrary
  81.       recipient addresses, that functionality is not required of all
  82.       SMTP servers.
  83. Myers & Rose                Standards Track                     [Page 2]
  84. RFC 1939                          POP3                          May 1996
  85. 3. Basic Operation
  86.    Initially, the server host starts the POP3 service by listening on
  87.    TCP port 110.  When a client host wishes to make use of the service,
  88.    it establishes a TCP connection with the server host.  When the
  89.    connection is established, the POP3 server sends a greeting.  The
  90.    client and POP3 server then exchange commands and responses
  91.    (respectively) until the connection is closed or aborted.
  92.    Commands in the POP3 consist of a case-insensitive keyword, possibly
  93.    followed by one or more arguments.  All commands are terminated by a
  94.    CRLF pair.  Keywords and arguments consist of printable ASCII
  95.    characters.  Keywords and arguments are each separated by a single
  96.    SPACE character.  Keywords are three or four characters long. Each
  97.    argument may be up to 40 characters long.
  98.    Responses in the POP3 consist of a status indicator and a keyword
  99.    possibly followed by additional information.  All responses are
  100.    terminated by a CRLF pair.  Responses may be up to 512 characters
  101.    long, including the terminating CRLF.  There are currently two status
  102.    indicators: positive ("+OK") and negative ("-ERR").  Servers MUST
  103.    send the "+OK" and "-ERR" in upper case.
  104.    Responses to certain commands are multi-line.  In these cases, which
  105.    are clearly indicated below, after sending the first line of the
  106.    response and a CRLF, any additional lines are sent, each terminated
  107.    by a CRLF pair.  When all lines of the response have been sent, a
  108.    final line is sent, consisting of a termination octet (decimal code
  109.    046, ".") and a CRLF pair.  If any line of the multi-line response
  110.    begins with the termination octet, the line is "byte-stuffed" by
  111.    pre-pending the termination octet to that line of the response.
  112.    Hence a multi-line response is terminated with the five octets
  113.    "CRLF.CRLF".  When examining a multi-line response, the client checks
  114.    to see if the line begins with the termination octet.  If so and if
  115.    octets other than CRLF follow, the first octet of the line (the
  116.    termination octet) is stripped away.  If so and if CRLF immediately
  117.    follows the termination character, then the response from the POP
  118.    server is ended and the line containing ".CRLF" is not considered
  119.    part of the multi-line response.
  120.    A POP3 session progresses through a number of states during its
  121.    lifetime.  Once the TCP connection has been opened and the POP3
  122.    server has sent the greeting, the session enters the AUTHORIZATION
  123.    state.  In this state, the client must identify itself to the POP3
  124.    server.  Once the client has successfully done this, the server
  125.    acquires resources associated with the client's maildrop, and the
  126.    session enters the TRANSACTION state.  In this state, the client
  127.    requests actions on the part of the POP3 server.  When the client has
  128. Myers & Rose                Standards Track                     [Page 3]
  129. RFC 1939                          POP3                          May 1996
  130.    issued the QUIT command, the session enters the UPDATE state.  In
  131.    this state, the POP3 server releases any resources acquired during
  132.    the TRANSACTION state and says goodbye.  The TCP connection is then
  133.    closed.
  134.    A server MUST respond to an unrecognized, unimplemented, or
  135.    syntactically invalid command by responding with a negative status
  136.    indicator.  A server MUST respond to a command issued when the
  137.    session is in an incorrect state by responding with a negative status
  138.    indicator.  There is no general method for a client to distinguish
  139.    between a server which does not implement an optional command and a
  140.    server which is unwilling or unable to process the command.
  141.    A POP3 server MAY have an inactivity autologout timer.  Such a timer
  142.    MUST be of at least 10 minutes' duration.  The receipt of any command
  143.    from the client during that interval should suffice to reset the
  144.    autologout timer.  When the timer expires, the session does NOT enter
  145.    the UPDATE state--the server should close the TCP connection without
  146.    removing any messages or sending any response to the client.
  147. 4. The AUTHORIZATION State
  148.    Once the TCP connection has been opened by a POP3 client, the POP3
  149.    server issues a one line greeting.  This can be any positive
  150.    response.  An example might be:
  151.       S:  +OK POP3 server ready
  152.    The POP3 session is now in the AUTHORIZATION state.  The client must
  153.    now identify and authenticate itself to the POP3 server.  Two
  154.    possible mechanisms for doing this are described in this document,
  155.    the USER and PASS command combination and the APOP command.  Both
  156.    mechanisms are described later in this document.  Additional
  157.    authentication mechanisms are described in [RFC1734].  While there is
  158.    no single authentication mechanism that is required of all POP3
  159.    servers, a POP3 server must of course support at least one
  160.    authentication mechanism.
  161.    Once the POP3 server has determined through the use of any
  162.    authentication command that the client should be given access to the
  163.    appropriate maildrop, the POP3 server then acquires an exclusive-
  164.    access lock on the maildrop, as necessary to prevent messages from
  165.    being modified or removed before the session enters the UPDATE state.
  166.    If the lock is successfully acquired, the POP3 server responds with a
  167.    positive status indicator.  The POP3 session now enters the
  168.    TRANSACTION state, with no messages marked as deleted.  If the
  169.    maildrop cannot be opened for some reason (for example, a lock can
  170.    not be acquired, the client is denied access to the appropriate
  171. Myers & Rose                Standards Track                     [Page 4]
  172. RFC 1939                          POP3                          May 1996
  173.    maildrop, or the maildrop cannot be parsed), the POP3 server responds
  174.    with a negative status indicator.  (If a lock was acquired but the
  175.    POP3 server intends to respond with a negative status indicator, the
  176.    POP3 server must release the lock prior to rejecting the command.)
  177.    After returning a negative status indicator, the server may close the
  178.    connection.  If the server does not close the connection, the client
  179.    may either issue a new authentication command and start again, or the
  180.    client may issue the QUIT command.
  181.    After the POP3 server has opened the maildrop, it assigns a message-
  182.    number to each message, and notes the size of each message in octets.
  183.    The first message in the maildrop is assigned a message-number of
  184.    "1", the second is assigned "2", and so on, so that the nth message
  185.    in a maildrop is assigned a message-number of "n".  In POP3 commands
  186.    and responses, all message-numbers and message sizes are expressed in
  187.    base-10 (i.e., decimal).
  188.    Here is the summary for the QUIT command when used in the
  189.    AUTHORIZATION state:
  190.       QUIT
  191.          Arguments: none
  192.          Restrictions: none
  193.          Possible Responses:
  194.              +OK
  195.          Examples:
  196.              C: QUIT
  197.              S: +OK dewey POP3 server signing off
  198. 5. The TRANSACTION State
  199.    Once the client has successfully identified itself to the POP3 server
  200.    and the POP3 server has locked and opened the appropriate maildrop,
  201.    the POP3 session is now in the TRANSACTION state.  The client may now
  202.    issue any of the following POP3 commands repeatedly.  After each
  203.    command, the POP3 server issues a response.  Eventually, the client
  204.    issues the QUIT command and the POP3 session enters the UPDATE state.
  205. Myers & Rose                Standards Track                     [Page 5]
  206. RFC 1939                          POP3                          May 1996
  207.    Here are the POP3 commands valid in the TRANSACTION state:
  208.       STAT
  209.          Arguments: none
  210.          Restrictions:
  211.              may only be given in the TRANSACTION state
  212.          Discussion:
  213.              The POP3 server issues a positive response with a line
  214.              containing information for the maildrop.  This line is
  215.              called a "drop listing" for that maildrop.
  216.              In order to simplify parsing, all POP3 servers are
  217.              required to use a certain format for drop listings.  The
  218.              positive response consists of "+OK" followed by a single
  219.              space, the number of messages in the maildrop, a single
  220.              space, and the size of the maildrop in octets.  This memo
  221.              makes no requirement on what follows the maildrop size.
  222.              Minimal implementations should just end that line of the
  223.              response with a CRLF pair.  More advanced implementations
  224.              may include other information.
  225.                 NOTE: This memo STRONGLY discourages implementations
  226.                 from supplying additional information in the drop
  227.                 listing.  Other, optional, facilities are discussed
  228.                 later on which permit the client to parse the messages
  229.                 in the maildrop.
  230.              Note that messages marked as deleted are not counted in
  231.              either total.
  232.          Possible Responses:
  233.              +OK nn mm
  234.          Examples:
  235.              C: STAT
  236.              S: +OK 2 320
  237.       LIST [msg]
  238.          Arguments:
  239.              a message-number (optional), which, if present, may NOT
  240.              refer to a message marked as deleted
  241. Myers & Rose                Standards Track                     [Page 6]
  242. RFC 1939                          POP3                          May 1996
  243.          Restrictions:
  244.              may only be given in the TRANSACTION state
  245.          Discussion:
  246.              If an argument was given and the POP3 server issues a
  247.              positive response with a line containing information for
  248.              that message.  This line is called a "scan listing" for
  249.              that message.
  250.              If no argument was given and the POP3 server issues a
  251.              positive response, then the response given is multi-line.
  252.              After the initial +OK, for each message in the maildrop,
  253.              the POP3 server responds with a line containing
  254.              information for that message.  This line is also called a
  255.              "scan listing" for that message.  If there are no
  256.              messages in the maildrop, then the POP3 server responds
  257.              with no scan listings--it issues a positive response
  258.              followed by a line containing a termination octet and a
  259.              CRLF pair.
  260.              In order to simplify parsing, all POP3 servers are
  261.              required to use a certain format for scan listings.  A
  262.              scan listing consists of the message-number of the
  263.              message, followed by a single space and the exact size of
  264.              the message in octets.  Methods for calculating the exact
  265.              size of the message are described in the "Message Format"
  266.              section below.  This memo makes no requirement on what
  267.              follows the message size in the scan listing.  Minimal
  268.              implementations should just end that line of the response
  269.              with a CRLF pair.  More advanced implementations may
  270.              include other information, as parsed from the message.
  271.                 NOTE: This memo STRONGLY discourages implementations
  272.                 from supplying additional information in the scan
  273.                 listing.  Other, optional, facilities are discussed
  274.                 later on which permit the client to parse the messages
  275.                 in the maildrop.
  276.              Note that messages marked as deleted are not listed.
  277.          Possible Responses:
  278.              +OK scan listing follows
  279.              -ERR no such message
  280.          Examples:
  281.              C: LIST
  282.              S: +OK 2 messages (320 octets)
  283.              S: 1 120
  284. Myers & Rose                Standards Track                     [Page 7]
  285. RFC 1939                          POP3                          May 1996
  286.              S: 2 200
  287.              S: .
  288.                ...
  289.              C: LIST 2
  290.              S: +OK 2 200
  291.                ...
  292.              C: LIST 3
  293.              S: -ERR no such message, only 2 messages in maildrop
  294.       RETR msg
  295.          Arguments:
  296.              a message-number (required) which may NOT refer to a
  297.              message marked as deleted
  298.          Restrictions:
  299.              may only be given in the TRANSACTION state
  300.          Discussion:
  301.              If the POP3 server issues a positive response, then the
  302.              response given is multi-line.  After the initial +OK, the
  303.              POP3 server sends the message corresponding to the given
  304.              message-number, being careful to byte-stuff the termination
  305.              character (as with all multi-line responses).
  306.          Possible Responses:
  307.              +OK message follows
  308.              -ERR no such message
  309.          Examples:
  310.              C: RETR 1
  311.              S: +OK 120 octets
  312.              S: <the POP3 server sends the entire message here>
  313.              S: .
  314.       DELE msg
  315.          Arguments:
  316.              a message-number (required) which may NOT refer to a
  317.              message marked as deleted
  318.          Restrictions:
  319.              may only be given in the TRANSACTION state
  320. Myers & Rose                Standards Track                     [Page 8]
  321. RFC 1939                          POP3                          May 1996
  322.          Discussion:
  323.              The POP3 server marks the message as deleted.  Any future
  324.              reference to the message-number associated with the message
  325.              in a POP3 command generates an error.  The POP3 server does
  326.              not actually delete the message until the POP3 session
  327.              enters the UPDATE state.
  328.          Possible Responses:
  329.              +OK message deleted
  330.              -ERR no such message
  331.          Examples:
  332.              C: DELE 1
  333.              S: +OK message 1 deleted
  334.                 ...
  335.              C: DELE 2
  336.              S: -ERR message 2 already deleted
  337.       NOOP
  338.          Arguments: none
  339.          Restrictions:
  340.              may only be given in the TRANSACTION state
  341.          Discussion:
  342.              The POP3 server does nothing, it merely replies with a
  343.              positive response.
  344.          Possible Responses:
  345.              +OK
  346.          Examples:
  347.              C: NOOP
  348.              S: +OK
  349.       RSET
  350.          Arguments: none
  351.          Restrictions:
  352.              may only be given in the TRANSACTION state
  353.          Discussion:
  354.              If any messages have been marked as deleted by the POP3
  355.              server, they are unmarked.  The POP3 server then replies
  356. Myers & Rose                Standards Track                     [Page 9]
  357. RFC 1939                          POP3                          May 1996
  358.              with a positive response.
  359.          Possible Responses:
  360.              +OK
  361.          Examples:
  362.              C: RSET
  363.              S: +OK maildrop has 2 messages (320 octets)
  364. 6. The UPDATE State
  365.    When the client issues the QUIT command from the TRANSACTION state,
  366.    the POP3 session enters the UPDATE state.  (Note that if the client
  367.    issues the QUIT command from the AUTHORIZATION state, the POP3
  368.    session terminates but does NOT enter the UPDATE state.)
  369.    If a session terminates for some reason other than a client-issued
  370.    QUIT command, the POP3 session does NOT enter the UPDATE state and
  371.    MUST not remove any messages from the maildrop.
  372.       QUIT
  373.          Arguments: none
  374.          Restrictions: none
  375.          Discussion:
  376.              The POP3 server removes all messages marked as deleted
  377.              from the maildrop and replies as to the status of this
  378.              operation.  If there is an error, such as a resource
  379.              shortage, encountered while removing messages, the
  380.              maildrop may result in having some or none of the messages
  381.              marked as deleted be removed.  In no case may the server
  382.              remove any messages not marked as deleted.
  383.              Whether the removal was successful or not, the server
  384.              then releases any exclusive-access lock on the maildrop
  385.              and closes the TCP connection.
  386.          Possible Responses:
  387.              +OK
  388.              -ERR some deleted messages not removed
  389.          Examples:
  390.              C: QUIT
  391.              S: +OK dewey POP3 server signing off (maildrop empty)
  392.                 ...
  393.              C: QUIT
  394. Myers & Rose                Standards Track                    [Page 10]
  395. RFC 1939                          POP3                          May 1996
  396.              S: +OK dewey POP3 server signing off (2 messages left)
  397.                 ...
  398. 7. Optional POP3 Commands
  399.    The POP3 commands discussed above must be supported by all minimal
  400.    implementations of POP3 servers.
  401.    The optional POP3 commands described below permit a POP3 client
  402.    greater freedom in message handling, while preserving a simple POP3
  403.    server implementation.
  404.       NOTE: This memo STRONGLY encourages implementations to support
  405.       these commands in lieu of developing augmented drop and scan
  406.       listings.  In short, the philosophy of this memo is to put
  407.       intelligence in the part of the POP3 client and not the POP3
  408.       server.
  409.       TOP msg n
  410.          Arguments:
  411.              a message-number (required) which may NOT refer to to a
  412.              message marked as deleted, and a non-negative number
  413.              of lines (required)
  414.          Restrictions:
  415.              may only be given in the TRANSACTION state
  416.          Discussion:
  417.              If the POP3 server issues a positive response, then the
  418.              response given is multi-line.  After the initial +OK, the
  419.              POP3 server sends the headers of the message, the blank
  420.              line separating the headers from the body, and then the
  421.              number of lines of the indicated message's body, being
  422.              careful to byte-stuff the termination character (as with
  423.              all multi-line responses).
  424.              Note that if the number of lines requested by the POP3
  425.              client is greater than than the number of lines in the
  426.              body, then the POP3 server sends the entire message.
  427.          Possible Responses:
  428.              +OK top of message follows
  429.              -ERR no such message
  430.          Examples:
  431.              C: TOP 1 10
  432.              S: +OK
  433. Myers & Rose                Standards Track                    [Page 11]
  434. RFC 1939                          POP3                          May 1996
  435.              S: <the POP3 server sends the headers of the
  436.                 message, a blank line, and the first 10 lines
  437.                 of the body of the message>
  438.              S: .
  439.                 ...
  440.              C: TOP 100 3
  441.              S: -ERR no such message
  442.       UIDL [msg]
  443.       Arguments:
  444.           a message-number (optional), which, if present, may NOT
  445.           refer to a message marked as deleted
  446.       Restrictions:
  447.           may only be given in the TRANSACTION state.
  448.       Discussion:
  449.           If an argument was given and the POP3 server issues a positive
  450.           response with a line containing information for that message.
  451.           This line is called a "unique-id listing" for that message.
  452.           If no argument was given and the POP3 server issues a positive
  453.           response, then the response given is multi-line.  After the
  454.           initial +OK, for each message in the maildrop, the POP3 server
  455.           responds with a line containing information for that message.
  456.           This line is called a "unique-id listing" for that message.
  457.           In order to simplify parsing, all POP3 servers are required to
  458.           use a certain format for unique-id listings.  A unique-id
  459.           listing consists of the message-number of the message,
  460.           followed by a single space and the unique-id of the message.
  461.           No information follows the unique-id in the unique-id listing.
  462.           The unique-id of a message is an arbitrary server-determined
  463.           string, consisting of one to 70 characters in the range 0x21
  464.           to 0x7E, which uniquely identifies a message within a
  465.           maildrop and which persists across sessions.  This
  466.           persistence is required even if a session ends without
  467.           entering the UPDATE state.  The server should never reuse an
  468.           unique-id in a given maildrop, for as long as the entity
  469.           using the unique-id exists.
  470.           Note that messages marked as deleted are not listed.
  471.           While it is generally preferable for server implementations
  472.           to store arbitrarily assigned unique-ids in the maildrop,
  473. Myers & Rose                Standards Track                    [Page 12]
  474. RFC 1939                          POP3                          May 1996
  475.           this specification is intended to permit unique-ids to be
  476.           calculated as a hash of the message.  Clients should be able
  477.           to handle a situation where two identical copies of a
  478.           message in a maildrop have the same unique-id.
  479.       Possible Responses:
  480.           +OK unique-id listing follows
  481.           -ERR no such message
  482.       Examples:
  483.           C: UIDL
  484.           S: +OK
  485.           S: 1 whqtswO00WBw418f9t5JxYwZ
  486.           S: 2 QhdPYR:00WBw1Ph7x7
  487.           S: .
  488.              ...
  489.           C: UIDL 2
  490.           S: +OK 2 QhdPYR:00WBw1Ph7x7
  491.              ...
  492.           C: UIDL 3
  493.           S: -ERR no such message, only 2 messages in maildrop
  494.       USER name
  495.          Arguments:
  496.              a string identifying a mailbox (required), which is of
  497.              significance ONLY to the server
  498.          Restrictions:
  499.              may only be given in the AUTHORIZATION state after the POP3
  500.              greeting or after an unsuccessful USER or PASS command
  501.          Discussion:
  502.              To authenticate using the USER and PASS command
  503.              combination, the client must first issue the USER
  504.              command.  If the POP3 server responds with a positive
  505.              status indicator ("+OK"), then the client may issue
  506.              either the PASS command to complete the authentication,
  507.              or the QUIT command to terminate the POP3 session.  If
  508.              the POP3 server responds with a negative status indicator
  509.              ("-ERR") to the USER command, then the client may either
  510.              issue a new authentication command or may issue the QUIT
  511.              command.
  512.              The server may return a positive response even though no
  513.              such mailbox exists.  The server may return a negative
  514.              response if mailbox exists, but does not permit plaintext
  515. Myers & Rose                Standards Track                    [Page 13]
  516. RFC 1939                          POP3                          May 1996
  517.              password authentication.
  518.          Possible Responses:
  519.              +OK name is a valid mailbox
  520.              -ERR never heard of mailbox name
  521.          Examples:
  522.              C: USER frated
  523.              S: -ERR sorry, no mailbox for frated here
  524.                 ...
  525.              C: USER mrose
  526.              S: +OK mrose is a real hoopy frood
  527.       PASS string
  528.          Arguments:
  529.              a server/mailbox-specific password (required)
  530.          Restrictions:
  531.              may only be given in the AUTHORIZATION state immediately
  532.              after a successful USER command
  533.          Discussion:
  534.              When the client issues the PASS command, the POP3 server
  535.              uses the argument pair from the USER and PASS commands to
  536.              determine if the client should be given access to the
  537.              appropriate maildrop.
  538.              Since the PASS command has exactly one argument, a POP3
  539.              server may treat spaces in the argument as part of the
  540.              password, instead of as argument separators.
  541.          Possible Responses:
  542.              +OK maildrop locked and ready
  543.              -ERR invalid password
  544.              -ERR unable to lock maildrop
  545.          Examples:
  546.              C: USER mrose
  547.              S: +OK mrose is a real hoopy frood
  548.              C: PASS secret
  549.              S: -ERR maildrop already locked
  550.                ...
  551.              C: USER mrose
  552.              S: +OK mrose is a real hoopy frood
  553.              C: PASS secret
  554.              S: +OK mrose's maildrop has 2 messages (320 octets)
  555. Myers & Rose                Standards Track                    [Page 14]
  556. RFC 1939                          POP3                          May 1996
  557.       APOP name digest
  558.          Arguments:
  559.              a string identifying a mailbox and a MD5 digest string
  560.              (both required)
  561.          Restrictions:
  562.              may only be given in the AUTHORIZATION state after the POP3
  563.              greeting or after an unsuccessful USER or PASS command
  564.          Discussion:
  565.              Normally, each POP3 session starts with a USER/PASS
  566.              exchange.  This results in a server/user-id specific
  567.              password being sent in the clear on the network.  For
  568.              intermittent use of POP3, this may not introduce a sizable
  569.              risk.  However, many POP3 client implementations connect to
  570.              the POP3 server on a regular basis -- to check for new
  571.              mail.  Further the interval of session initiation may be on
  572.              the order of five minutes.  Hence, the risk of password
  573.              capture is greatly enhanced.
  574.              An alternate method of authentication is required which
  575.              provides for both origin authentication and replay
  576.              protection, but which does not involve sending a password
  577.              in the clear over the network.  The APOP command provides
  578.              this functionality.
  579.              A POP3 server which implements the APOP command will
  580.              include a timestamp in its banner greeting.  The syntax of
  581.              the timestamp corresponds to the `msg-id' in [RFC822], and
  582.              MUST be different each time the POP3 server issues a banner
  583.              greeting.  For example, on a UNIX implementation in which a
  584.              separate UNIX process is used for each instance of a POP3
  585.              server, the syntax of the timestamp might be:
  586.                 <process-ID.clock@hostname>
  587.              where `process-ID' is the decimal value of the process's
  588.              PID, clock is the decimal value of the system clock, and
  589.              hostname is the fully-qualified domain-name corresponding
  590.              to the host where the POP3 server is running.
  591.              The POP3 client makes note of this timestamp, and then
  592.              issues the APOP command.  The `name' parameter has
  593.              identical semantics to the `name' parameter of the USER
  594.              command. The `digest' parameter is calculated by applying
  595.              the MD5 algorithm [RFC1321] to a string consisting of the
  596.              timestamp (including angle-brackets) followed by a shared
  597. Myers & Rose                Standards Track                    [Page 15]
  598. RFC 1939                          POP3                          May 1996
  599.              secret.  This shared secret is a string known only to the
  600.              POP3 client and server.  Great care should be taken to
  601.              prevent unauthorized disclosure of the secret, as knowledge
  602.              of the secret will allow any entity to successfully
  603.              masquerade as the named user.  The `digest' parameter
  604.              itself is a 16-octet value which is sent in hexadecimal
  605.              format, using lower-case ASCII characters.
  606.              When the POP3 server receives the APOP command, it verifies
  607.              the digest provided.  If the digest is correct, the POP3
  608.              server issues a positive response, and the POP3 session
  609.              enters the TRANSACTION state.  Otherwise, a negative
  610.              response is issued and the POP3 session remains in the
  611.              AUTHORIZATION state.
  612.              Note that as the length of the shared secret increases, so
  613.              does the difficulty of deriving it.  As such, shared
  614.              secrets should be long strings (considerably longer than
  615.              the 8-character example shown below).
  616.          Possible Responses:
  617.              +OK maildrop locked and ready
  618.              -ERR permission denied
  619.          Examples:
  620.              S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
  621.              C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
  622.              S: +OK maildrop has 1 message (369 octets)
  623.              In this example, the shared  secret  is  the  string  `tan-
  624.              staaf'.  Hence, the MD5 algorithm is applied to the string
  625.                 <1896.697170952@dbc.mtview.ca.us>tanstaaf
  626.              which produces a digest value of
  627.                 c4c9334bac560ecc979e58001b3e22fb
  628. 8. Scaling and Operational Considerations
  629.    Since some of the optional features described above were added to the
  630.    POP3 protocol, experience has accumulated in using them in large-
  631.    scale commercial post office operations where most of the users are
  632.    unrelated to each other.  In these situations and others, users and
  633.    vendors of POP3 clients have discovered that the combination of using
  634.    the UIDL command and not issuing the DELE command can provide a weak
  635.    version of the "maildrop as semi-permanent repository" functionality
  636.    normally associated with IMAP.  Of course the other capabilities of
  637. Myers & Rose                Standards Track                    [Page 16]
  638. RFC 1939                          POP3                          May 1996
  639.    IMAP, such as polling an existing connection for newly arrived
  640.    messages and supporting multiple folders on the server, are not
  641.    present in POP3.
  642.    When these facilities are used in this way by casual users, there has
  643.    been a tendency for already-read messages to accumulate on the server
  644.    without bound.  This is clearly an undesirable behavior pattern from
  645.    the standpoint of the server operator.  This situation is aggravated
  646.    by the fact that the limited capabilities of the POP3 do not permit
  647.    efficient handling of maildrops which have hundreds or thousands of
  648.    messages.
  649.    Consequently, it is recommended that operators of large-scale multi-
  650.    user servers, especially ones in which the user's only access to the
  651.    maildrop is via POP3, consider such options as:
  652.    *  Imposing a per-user maildrop storage quota or the like.
  653.       A disadvantage to this option is that accumulation of messages may
  654.       result in the user's inability to receive new ones into the
  655.       maildrop.  Sites which choose this option should be sure to inform
  656.       users of impending or current exhaustion of quota, perhaps by
  657.       inserting an appropriate message into the user's maildrop.
  658.    *  Enforce a site policy regarding mail retention on the server.
  659.       Sites are free to establish local policy regarding the storage and
  660.       retention of messages on the server, both read and unread.  For
  661.       example, a site might delete unread messages from the server after
  662.       60 days and delete read messages after 7 days.  Such message
  663.       deletions are outside the scope of the POP3 protocol and are not
  664.       considered a protocol violation.
  665.       Server operators enforcing message deletion policies should take
  666.       care to make all users aware of the policies in force.
  667.       Clients must not assume that a site policy will automate message
  668.       deletions, and should continue to explicitly delete messages using
  669.       the DELE command when appropriate.
  670.       It should be noted that enforcing site message deletion policies
  671.       may be confusing to the user community, since their POP3 client
  672.       may contain configuration options to leave mail on the server
  673.       which will not in fact be supported by the server.
  674.       One special case of a site policy is that messages may only be
  675.       downloaded once from the server, and are deleted after this has
  676.       been accomplished.  This could be implemented in POP3 server
  677. Myers & Rose                Standards Track                    [Page 17]
  678. RFC 1939                          POP3                          May 1996
  679.       software by the following mechanism: "following a POP3 login by a
  680.       client which was ended by a QUIT, delete all messages downloaded
  681.       during the session with the RETR command".  It is important not to
  682.       delete messages in the event of abnormal connection termination
  683.       (ie, if no QUIT was received from the client) because the client
  684.       may not have successfully received or stored the messages.
  685.       Servers implementing a download-and-delete policy may also wish to
  686.       disable or limit the optional TOP command, since it could be used
  687.       as an alternate mechanism to download entire messages.
  688. 9. POP3 Command Summary
  689.       Minimal POP3 Commands:
  690.          USER name               valid in the AUTHORIZATION state
  691.          PASS string
  692.          QUIT
  693.          STAT                    valid in the TRANSACTION state
  694.          LIST [msg]
  695.          RETR msg
  696.          DELE msg
  697.          NOOP
  698.          RSET
  699.          QUIT
  700.       Optional POP3 Commands:
  701.          APOP name digest        valid in the AUTHORIZATION state
  702.          TOP msg n               valid in the TRANSACTION state
  703.          UIDL [msg]
  704.       POP3 Replies:
  705.          +OK
  706.          -ERR
  707.       Note that with the exception of the STAT, LIST, and UIDL commands,
  708.       the reply given by the POP3 server to any command is significant
  709.       only to "+OK" and "-ERR".  Any text occurring after this reply
  710.       may be ignored by the client.
  711. Myers & Rose                Standards Track                    [Page 18]
  712. RFC 1939                          POP3                          May 1996
  713. 10. Example POP3 Session
  714.       S: <wait for connection on TCP port 110>
  715.       C: <open connection>
  716.       S:    +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
  717.       C:    APOP mrose c4c9334bac560ecc979e58001b3e22fb
  718.       S:    +OK mrose's maildrop has 2 messages (320 octets)
  719.       C:    STAT
  720.       S:    +OK 2 320
  721.       C:    LIST
  722.       S:    +OK 2 messages (320 octets)
  723.       S:    1 120
  724.       S:    2 200
  725.       S:    .
  726.       C:    RETR 1
  727.       S:    +OK 120 octets
  728.       S:    <the POP3 server sends message 1>
  729.       S:    .
  730.       C:    DELE 1
  731.       S:    +OK message 1 deleted
  732.       C:    RETR 2
  733.       S:    +OK 200 octets
  734.       S:    <the POP3 server sends message 2>
  735.       S:    .
  736.       C:    DELE 2
  737.       S:    +OK message 2 deleted
  738.       C:    QUIT
  739.       S:    +OK dewey POP3 server signing off (maildrop empty)
  740.       C:  <close connection>
  741.       S:  <wait for next connection>
  742. 11. Message Format
  743.    All messages transmitted during a POP3 session are assumed to conform
  744.    to the standard for the format of Internet text messages [RFC822].
  745.    It is important to note that the octet count for a message on the
  746.    server host may differ from the octet count assigned to that message
  747.    due to local conventions for designating end-of-line.  Usually,
  748.    during the AUTHORIZATION state of the POP3 session, the POP3 server
  749.    can calculate the size of each message in octets when it opens the
  750.    maildrop.  For example, if the POP3 server host internally represents
  751.    end-of-line as a single character, then the POP3 server simply counts
  752.    each occurrence of this character in a message as two octets.  Note
  753.    that lines in the message which start with the termination octet need
  754.    not (and must not) be counted twice, since the POP3 client will
  755.    remove all byte-stuffed termination characters when it receives a
  756.    multi-line response.
  757. Myers & Rose                Standards Track                    [Page 19]
  758. RFC 1939                          POP3                          May 1996
  759. 12. References
  760.    [RFC821] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC
  761.        821, USC/Information Sciences Institute, August 1982.
  762.    [RFC822] Crocker, D., "Standard for the Format of ARPA-Internet Text
  763.        Messages", STD 11, RFC 822, University of Delaware, August 1982.
  764.    [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
  765.        MIT Laboratory for Computer Science, April 1992.
  766.    [RFC1730] Crispin, M., "Internet Message Access Protocol - Version
  767.        4", RFC 1730, University of Washington, December 1994.
  768.    [RFC1734] Myers, J., "POP3 AUTHentication command", RFC 1734,
  769.        Carnegie Mellon, December 1994.
  770. 13. Security Considerations
  771.    It is conjectured that use of the APOP command provides origin
  772.    identification and replay protection for a POP3 session.
  773.    Accordingly, a POP3 server which implements both the PASS and APOP
  774.    commands should not allow both methods of access for a given user;
  775.    that is, for a given mailbox name, either the USER/PASS command
  776.    sequence or the APOP command is allowed, but not both.
  777.    Further, note that as the length of the shared secret increases, so
  778.    does the difficulty of deriving it.
  779.    Servers that answer -ERR to the USER command are giving potential
  780.    attackers clues about which names are valid.
  781.    Use of the PASS command sends passwords in the clear over the
  782.    network.
  783.    Use of the RETR and TOP commands sends mail in the clear over the
  784.    network.
  785.    Otherwise, security issues are not discussed in this memo.
  786. 14. Acknowledgements
  787.    The POP family has a long and checkered history.  Although primarily
  788.    a minor revision to RFC 1460, POP3 is based on the ideas presented in
  789.    RFCs 918, 937, and 1081.
  790.    In addition, Alfred Grimstad, Keith McCloghrie, and Neil Ostroff
  791.    provided significant comments on the APOP command.
  792. Myers & Rose                Standards Track                    [Page 20]
  793. RFC 1939                          POP3                          May 1996
  794. 15. Authors' Addresses
  795.    John G. Myers
  796.    Carnegie-Mellon University
  797.    5000 Forbes Ave
  798.    Pittsburgh, PA 15213
  799.    EMail: jgm+@cmu.edu
  800.    Marshall T. Rose
  801.    Dover Beach Consulting, Inc.
  802.    420 Whisman Court
  803.    Mountain View, CA  94043-2186
  804.    EMail: mrose@dbc.mtview.ca.us
  805. Myers & Rose                Standards Track                    [Page 21]
  806. RFC 1939                          POP3                          May 1996
  807. Appendix A. Differences from RFC 1725
  808.    This memo is a revision to RFC 1725, a Draft Standard.  It makes the
  809.    following changes from that document:
  810.       - clarifies that command keywords are case insensitive.
  811.       - specifies that servers must send "+OK" and "-ERR" in
  812.         upper case.
  813.       - specifies that the initial greeting is a positive response,
  814.         instead of any string which should be a positive response.
  815.       - clarifies behavior for unimplemented commands.
  816.       - makes the USER and PASS commands optional.
  817.       - clarified the set of possible responses to the USER command.
  818.       - reverses the order of the examples in the USER and PASS
  819.         commands, to reduce confusion.
  820.       - clarifies that the PASS command may only be given immediately
  821.         after a successful USER command.
  822.       - clarified the persistence requirements of UIDs and added some
  823.         implementation notes.
  824.       - specifies a UID length limitation of one to 70 octets.
  825.       - specifies a status indicator length limitation
  826.         of 512 octets, including the CRLF.
  827.       - clarifies that LIST with no arguments on an empty mailbox
  828.         returns success.
  829.       - adds a reference from the LIST command to the Message Format
  830.         section
  831.       - clarifies the behavior of QUIT upon failure
  832.       - clarifies the security section to not imply the use of the
  833.         USER command with the APOP command.
  834.       - adds references to RFCs 1730 and 1734
  835.       - clarifies the method by which a UA may enter mail into the
  836.         transport system.
  837. Myers & Rose                Standards Track                    [Page 22]
  838. RFC 1939                          POP3                          May 1996
  839.       - clarifies that the second argument to the TOP command is a
  840.         number of lines.
  841.       - changes the suggestion in the Security Considerations section
  842.         for a server to not accept both PASS and APOP for a given user
  843.         from a "must" to a "should".
  844.       - adds a section on scaling and operational considerations
  845. Appendix B. Command Index
  846.        APOP .......................................................   15
  847.        DELE .......................................................    8
  848.        LIST .......................................................    6
  849.        NOOP .......................................................    9
  850.        PASS .......................................................   14
  851.        QUIT .......................................................    5
  852.        QUIT .......................................................   10
  853.        RETR .......................................................    8
  854.        RSET .......................................................    9
  855.        STAT .......................................................    6
  856.        TOP ........................................................   11
  857.        UIDL .......................................................   12
  858.        USER .......................................................   13
  859. Myers & Rose                Standards Track                    [Page 23]