Annotation of 43BSD/contrib/mh/support/pop/pop.rfc, revision 1.1

1.1     ! root        1: Request For Comments:  draft
        !             2: 
        !             3: 
        !             4: 
        !             5: 
        !             6: 
        !             7: 
        !             8: 
        !             9: 
        !            10: 
        !            11: 
        !            12: 
        !            13: 
        !            14:                      Post Office Protocol (revised)
        !            15: 
        !            16: 
        !            17:                         Sun Oct 28 19:40:26 1984
        !            18: 
        !            19:                              Last Revision
        !            20:                         Wed Oct 23 20:54:26 1985
        !            21: 
        !            22:                             Marshall T. Rose
        !            23: 
        !            24:             Department of Computer and Information Sciences
        !            25:                          University of Delaware
        !            26:                             Newark, DE 19716
        !            27: 
        !            28:                                MRose@UDel
        !            29: 
        !            30: 
        !            31: 
        !            32: 
        !            33:     This memo suggests a simple method for workstations to dynamically
        !            34:     access mail from a mailbox server.  This RFC specifies a proposed
        !            35:     protocol for the ARPA Internet community, and requests discussion
        !            36:     and suggestions for improvements.
        !            37: 
        !            38: 
        !            39:                           Acknowledgements
        !            40: 
        !            41:     This memo is based on RFC918.  Although similar in form to the
        !            42:     original POP proposed for the ARPA Internet community, the protocol
        !            43:     discussed in this memo is similar in spirit to the ideas
        !            44:     investigated by the MZnet project at the University of California,
        !            45:     Irvine.
        !            46: 
        !            47: Request For Comments:  draft                                    M. Rose
        !            48: Post Office Protocol (revised)                                     UDel
        !            49: 
        !            50: 
        !            51: 
        !            52: 
        !            53: 
        !            54:                             Introduction
        !            55: 
        !            56:     On certain types of smaller nodes in the ARPA Internet it is often
        !            57:     impractical to maintain a message transport system(MTS).  For
        !            58:     example, a workstation may not have sufficient resources (cycles,
        !            59:     disk space) in order to permit a SMTP server and associated local
        !            60:     mail delivery system to be kept resident and continuously running.
        !            61:     Similarly, it may be expensive (or impossible) to keep a personal
        !            62:     computer interconnected to an IP-style network for long amounts of
        !            63:     time (the node is lacking the resource known as "connectivity").
        !            64: 
        !            65:     Despite this, it is often very useful to be able to manage mail on
        !            66:     these smaller nodes, and they often support a user agent(UA) to aid
        !            67:     the tasks of mail handling.  To solve this problem, a node which
        !            68:     can support an MTS entity offers a maildrop service to these less
        !            69:     endowned nodes. The Post Office Protocol (POP) is intended to
        !            70:     permit a workstation to dynamically access a maildrop on a server
        !            71:     host in a useful fashion. Usually, this means that the POP is used
        !            72:     to allow a workstation to retrieve mail that the server is holding
        !            73:     for it.
        !            74: 
        !            75:     For the remainder of this memo, the term "client host" refers to a
        !            76:     host making use of the POP service, while the term "server host"
        !            77:     refers to a host which offers the POP service.
        !            78: 
        !            79:     The status of this protocol is experimental.
        !            80: 
        !            81: 
        !            82: 
        !            83:                          A Short Digression
        !            84: 
        !            85:     This memo does not specify how a client host enters mail into the
        !            86:     transport system, although a method consistent with the philosophy
        !            87:     of this memo is presented here:
        !            88: 
        !            89:         When the user agent on a client host wishes to enter a message
        !            90:         into the transport system, it establishes an SMTP connection
        !            91:         to its relay host (this relay host could be, but need not be,
        !            92:         the POP server host for the client host).
        !            93: 
        !            94:     If this method is followed, then the client host appears to the MTS
        !            95:     as a user agent, and should NOT be regarded as a "trusted" MTS
        !            96:     entity in any sense whatsoever.  This concept, along with the role
        !            97:     of the POP as a part of a split-UA model is discussed later in this
        !            98:     memo.
        !            99: 
        !           100: 
        !           101: 
        !           102: 
        !           103: 
        !           104: Page 1
        !           105: 
        !           106: Request For Comments:  draft                                    M. Rose
        !           107: Post Office Protocol (revised)                                     UDel
        !           108: 
        !           109: 
        !           110:                              The Protocol
        !           111: 
        !           112:     Initially the server host starts the POP service by listening on
        !           113:     TCP port 109.  When a client host wishes to make use of the service
        !           114:     it establishes a TCP connection with the server host.  When the
        !           115:     connection is established, the POP server sends a greeting.  The
        !           116:     client and POP server then exchange commands and responses
        !           117:     (respectively) until the connection is closed or aborted.
        !           118: 
        !           119:     Commands in the POP consist of a keyword possibly followed by an
        !           120:     argument.  All commands are terminated by a CRLF pair.
        !           121: 
        !           122:     Responses in the POP consist of a success indicator and a keyword
        !           123:     possibly followed by additional information.  All responses are
        !           124:     terminated by a CRLF pair.  There are currently two success
        !           125:     indicators: positive ("+OK") and negative ("-ERR").
        !           126: 
        !           127:     Responses to certain commands are multi-line.  In these cases,
        !           128:     which are clearly indicated below, after sending the first line of
        !           129:     the response and a CRLF, any additional lines are sent, each
        !           130:     terminated by a CRLF pair.  When all lines of the response have
        !           131:     been sent, a final line is sent, consisting of a termination octet
        !           132:     (octal code 056, ".") and a CRLF pair. If any line of the
        !           133:     multi-line response begins with the termination octet, the line is
        !           134:     "bit-stuffed" by pre-pending the termination octet to that line of
        !           135:     the response.  Hence a multi-line response is terminated with the
        !           136:     five octets "CRLF.CRLF".  When examining a multi-line response, the
        !           137:     client checks to see if the line begins with the termination
        !           138:     octet. If so and if octets other than CRLF follow, the the first
        !           139:     octet of the line (the termination octet) is stripped away.  If so
        !           140:     and if CRLF immediately follows the termination character, then the
        !           141:     response from the POP server is ended and the line containing
        !           142:     ".CRLF" is not considered part of the multi-line response.
        !           143: 
        !           144:     A POP session progresses through a number of states during its
        !           145:     lifetime.  Once the TCP connection has been opened and the POP
        !           146:     server has sent the greeting, the session enters the AUTHORIZATION
        !           147:     state.  In this state, the client must identify itself to the POP
        !           148:     server.  Once the client has successfully done this, the server
        !           149:     acquires resources associated with the client's maildrop, and the
        !           150:     session enters the TRANSACTION state.  In this state, the client
        !           151:     requests actions on the part of the POP server.  When the client
        !           152:     has finished its transactions, the session enters the UPDATE state.
        !           153:     In this state, the POP server releases any resources acquired
        !           154:     during the TRANSACTION state and says goodbye.  The TCP connection
        !           155:     is then closed.
        !           156: 
        !           157: 
        !           158: 
        !           159: 
        !           160: 
        !           161: 
        !           162: 
        !           163: Page 2
        !           164: 
        !           165: Request For Comments:  draft                                    M. Rose
        !           166: Post Office Protocol (revised)                                     UDel
        !           167: 
        !           168: 
        !           169:                        The AUTHORIZATION State
        !           170: 
        !           171:     Once the TCP connection has been opened by a POP client, the POP
        !           172:     server issues a one line greeting.  This can be any string
        !           173:     terminated by CRLF.  An example might be:
        !           174: 
        !           175:        S:    +OK dewey POP server ready (Comments to: PostMaster@UDel)
        !           176: 
        !           177:     Note that this greeting is a POP reply.  The POP server should always
        !           178:     give a positive response as the greeting.
        !           179: 
        !           180:     The POP session is now in the AUTHORIZATION state.  The client must
        !           181:     now issue the USER command.  If the POP server responds with a
        !           182:     positive success indicator ("+OK"), then the client may issue
        !           183:     either the PASS command to complete the authorization, or the QUIT
        !           184:     command to terminate the POP session.  If the POP server responds
        !           185:     with a negative success indicator ("-ERR") to the USER command,
        !           186:     then the client may either issue a new USER command or may issue
        !           187:     the QUIT command.
        !           188: 
        !           189:     When the client issues the PASS command, the POP server uses the
        !           190:     argument pair from the USER and PASS commands to determine if the
        !           191:     client should be given access to the appropriate maildrop.  If so,
        !           192:     the POP server then acquires an exclusive-access lock on the
        !           193:     maildrop.  If the lock is successfully acquired, the POP server
        !           194:     parses the maildrop into individual messages (read note below) and
        !           195:     responds with a positive success indicator. The POP session now
        !           196:     enters the TRANSACTION state.  If the lock can not be acquired or
        !           197:     the client should is denied access to the appropriate maildrop or
        !           198:     the maildrop can't be parsed for some reason, the POP server
        !           199:     responds with a negative success indicator.  (If a lock was
        !           200:     acquired but the POP server intends to respond with a negative
        !           201:     success indicator, the POP server must release the lock prior to
        !           202:     rejecting the command.) At this point, the client may either issue
        !           203:     a new USER command and start again, or the client may issue the
        !           204:     QUIT command.
        !           205: 
        !           206:              NOTE: Minimal implementations of the POP need only be
        !           207:              able to break a maildrop into its component messages;
        !           208:              they need NOT be able to parse individual messages.  More
        !           209:              advanced implementations may wish to have this
        !           210:              capability, for reasons discussed later.
        !           211: 
        !           212:     After the POP server has parsed the maildrop into individual
        !           213:     messages, it assigns a message-id to each message, and notes the
        !           214:     size of the message in octets.  The first message in the maildrop
        !           215:     is assigned a message-id of "1", the second is assigned "2", and so
        !           216:     on, so that the n'th message in a maildrop is assigned a message-id
        !           217:     of "n".  In POP commands and responses, all message-id's and
        !           218:     message sizes are expressed in base-10.
        !           219: 
        !           220: 
        !           221: 
        !           222: Page 3
        !           223: 
        !           224: Request For Comments:  draft                                    M. Rose
        !           225: Post Office Protocol (revised)                                     UDel
        !           226: 
        !           227: 
        !           228:     Here are summaries for the three POP command discussed thus far:
        !           229: 
        !           230:        USER name
        !           231:            Arguments: a server specific user-id (required)
        !           232:            Restrictions: may only be given in the AUTHORIZATION state
        !           233:                after the POP greeting or after an unsuccessful USER
        !           234:                or PASS command
        !           235:            Possible Responses:
        !           236:                +OK name is welcome here
        !           237:                -ERR never heard of name
        !           238:            Examples:
        !           239:                C:    USER mrose
        !           240:                S:    +OK mrose is a real hoopy frood
        !           241:                  ...
        !           242:                C:    USER frated
        !           243:                S:    -ERR sorry, frated doesn't get his mail here
        !           244: 
        !           245:        PASS string
        !           246:            Arguments: a server/user-id specific password (required)
        !           247:            Restrictions: may only be given in the AUTHORIZATION state
        !           248:                after a successful USER command
        !           249:            Possible Responses:
        !           250:                +OK maildrop locked and ready
        !           251:                -ERR invalid password
        !           252:                -ERR unable to lock maildrop
        !           253:            Examples:
        !           254:                C:    USER mrose
        !           255:                S:    +OK mrose is a real hoopy frood
        !           256:                C:    PASS secret
        !           257:                S:    +OK mrose's maildrop has 2 messages (320 octets)
        !           258:                  ...
        !           259:                C:    USER mrose
        !           260:                S:    +OK mrose is a real hoopy frood
        !           261:                C:    PASS secret
        !           262:                S:    -ERR unable to lock mrose's maildrop, file already locked
        !           263: 
        !           264:        QUIT
        !           265:            Arguments: none
        !           266:            Restrictions: none
        !           267:            Possible Responses:
        !           268:                +OK
        !           269:            Examples:
        !           270:                C:    QUIT
        !           271:                S:    +OK dewey POP server signing off
        !           272: 
        !           273: 
        !           274: 
        !           275:                         The TRANSACTION State
        !           276: 
        !           277:     Once the client has successfully identified itself to the POP
        !           278:     server and the POP server has locked and burst the appropriate
        !           279: 
        !           280: 
        !           281: Page 4
        !           282: 
        !           283: Request For Comments:  draft                                    M. Rose
        !           284: Post Office Protocol (revised)                                     UDel
        !           285: 
        !           286: 
        !           287:     maildrop, the POP session is now in the TRANSACTION state.  The
        !           288:     client may now issue any of the following POP commands repeatedly.
        !           289:     After each command, the POP server issues a response.  Eventually,
        !           290:     the client issues the QUIT command and the POP session enters the
        !           291:     UPDATE state.
        !           292: 
        !           293:     Here are the POP commands valid in the TRANSACTION state:
        !           294: 
        !           295:        STAT
        !           296:            Arguments: none
        !           297:            Restrictions: may only be given in the TRANSACTION state.
        !           298:            Discussion:
        !           299: 
        !           300:              The POP server issues a positive response with a line
        !           301:              containing information for the maildrop.  This line is
        !           302:              called a "drop listing" for that maildrop.
        !           303: 
        !           304:              In order to simplify parsing, all POP servers are
        !           305:              required to use a certain format for drop listings.  The
        !           306:              first octets present must indicate the number of messages
        !           307:              in the maildrop.  Following this is the size of the
        !           308:              maildrop in octets. This memo makes no requirement on
        !           309:              what follows the maildrop size.  Minimal implementations
        !           310:              should just end that line of the response with a CRLF
        !           311:              pair.  More advanced implementations may include other
        !           312:              information.
        !           313: 
        !           314:                   NOTE: This memo STRONGLY discourages implementations
        !           315:                   from supplying additional information in the drop
        !           316:                   listing.  Other, optional, facilities are discussed
        !           317:                   later on which permit the client to parse the
        !           318:                   messages in the maildrop.
        !           319: 
        !           320:              Note that messages marked as deleted are not counted in
        !           321:              either total.
        !           322: 
        !           323:            Possible Responses:
        !           324:                +OK nn mm
        !           325:            Examples:
        !           326:                C:    STAT
        !           327:                S:    +OK 2 320
        !           328: 
        !           329:        LIST [msg]
        !           330:            Arguments: a message-id (optionally)  If a message-id is
        !           331:                given, it may NOT refer to a message marked as deleted.
        !           332:            Restrictions: may only be given in the TRANSACTION state.
        !           333:            Discussion:
        !           334: 
        !           335:              If an argument was given and the POP server issues a
        !           336:              positive response with a line containing information for
        !           337:              that message.  This line is called a "scan listing"
        !           338: 
        !           339: 
        !           340: Page 5
        !           341: 
        !           342: Request For Comments:  draft                                    M. Rose
        !           343: Post Office Protocol (revised)                                     UDel
        !           344: 
        !           345: 
        !           346:              for that message.
        !           347: 
        !           348:              If no argument was given and the POP server issues a
        !           349:              positive response, then the response given is multi-line.
        !           350:              After the initial +OK, for each message in the maildrop,
        !           351:              the POP server responds with a line containing information
        !           352:              for that message.  This line is called a "scan listing"
        !           353:              for that message.
        !           354: 
        !           355:              In order to simplify parsing, all POP servers are required
        !           356:              to use a certain format for scan listings.  The first
        !           357:              octets present must be the message-id of the message.
        !           358:              Following the message-id is the size of the message in
        !           359:              octets.  This memo makes no requirement on what follows
        !           360:              the message size in the scan listing.  Minimal
        !           361:              implementations should just end that line of the response
        !           362:              with a CRLF pair.  More advanced implementations may
        !           363:              include other information, as parsed from the message.
        !           364: 
        !           365:                   NOTE: This memo STRONGLY discourages implementations
        !           366:                   from supplying additional information in the scan
        !           367:                   listing.  Other, optional, facilities are discussed
        !           368:                   later on which permit the client to parse the
        !           369:                   messages in the maildrop.
        !           370: 
        !           371:              Note that messages marked as deleted are not listed.
        !           372: 
        !           373:            Possible Responses:
        !           374:                +OK scan listing follows
        !           375:                -ERR no such message
        !           376:            Examples:
        !           377:                C:    LIST
        !           378:                S:    +OK 2 messages (320 octets)
        !           379:                S:    1 120
        !           380:                S:    2 200
        !           381:                S:    .
        !           382:                  ...
        !           383:                C:    LIST 2
        !           384:                S:    +OK 2 200
        !           385:                  ...
        !           386:                C:    LIST 3
        !           387:                S:    -ERR no such message, only 2 messages in maildrop
        !           388: 
        !           389:        RETR msg
        !           390:            Arguments: a message-id (required)  This message-id may NOT
        !           391:                refer to a message marked as deleted.
        !           392:            Restrictions: may only be given in the TRANSACTION state.
        !           393:            Discussion:
        !           394: 
        !           395:              If the POP server issues a positive response, then the
        !           396:              response given is multi-line.  After the initial +OK, the
        !           397: 
        !           398: 
        !           399: Page 6
        !           400: 
        !           401: Request For Comments:  draft                                    M. Rose
        !           402: Post Office Protocol (revised)                                     UDel
        !           403: 
        !           404: 
        !           405:              POP server sends the message corresponding to the given
        !           406:              message-id, being careful to bit-stuff the termination
        !           407:              character (as with all multi-line responses).
        !           408: 
        !           409:            Possible Responses:
        !           410:                +OK message follows
        !           411:                -ERR no such message
        !           412:            Examples:
        !           413:                C:    RETR 1
        !           414:                S:    +OK 120 octets
        !           415:                S:    <the POP server sends the entire message here>
        !           416:                S:    .
        !           417: 
        !           418:        DELE msg
        !           419:            Arguments: a message-id (required)  This message-id may NOT
        !           420:                refer to a message marked as deleted.
        !           421:            Restrictions: may only be given in the TRANSACTION state.
        !           422:            Discussion:
        !           423: 
        !           424:              The POP server marks the message as deleted.  Any future
        !           425:              reference to the message-id associated with the message
        !           426:              in a POP command generates an error.  The POP server does
        !           427:              not actually delete the message until the POP session
        !           428:              enters the UPDATE state.
        !           429: 
        !           430:            Possible Responses:
        !           431:                +OK message deleted
        !           432:                -ERR no such message
        !           433:            Examples:
        !           434:                C:    DELE 1
        !           435:                S:    +OK message 1 deleted
        !           436:                  ...
        !           437:                C:    DELE 2
        !           438:                S:    -ERR message 2 already deleted
        !           439: 
        !           440:        NOOP
        !           441:            Arguments: none
        !           442:            Restrictions: may only be given in the TRANSACTION state.
        !           443:            Discussion:
        !           444: 
        !           445:              The POP server does nothing, it merely replies with a
        !           446:              positive response.
        !           447: 
        !           448:            Possible Responses:
        !           449:                +OK
        !           450:            Examples:
        !           451:                C:    NOOP
        !           452:                S:    +OK
        !           453: 
        !           454:        RSET
        !           455:            Arguments: none
        !           456: 
        !           457: 
        !           458: Page 7
        !           459: 
        !           460: Request For Comments:  draft                                    M. Rose
        !           461: Post Office Protocol (revised)                                     UDel
        !           462: 
        !           463: 
        !           464:            Restrictions: may only be given in the TRANSACTION state.
        !           465:            Discussion:
        !           466: 
        !           467:              If any messages have been marked as deleted by the POP
        !           468:              server, they are unmarked.  The POP server then replies
        !           469:              with a positive response.
        !           470: 
        !           471:            Possible Responses:
        !           472:                +OK
        !           473:            Examples:
        !           474:                C:    RSET
        !           475:                S:    +OK maildrop has 2 messages (320 octets)
        !           476: 
        !           477: 
        !           478: 
        !           479:                           The UPDATE State
        !           480: 
        !           481:     When the client issues the QUIT command from the TRANSACTION state
        !           482:     the POP session enters the UPDATE state.  (Note that if the client
        !           483:     issues the QUIT command from the AUTHORIZATION state, the POP
        !           484:     session terminates but does NOT enter the UPDATE state).
        !           485: 
        !           486:        QUIT
        !           487:            Arguments: none
        !           488:            Restrictions: none
        !           489:            Discussion:
        !           490: 
        !           491:              The POP server removes all messages marked as deleted
        !           492:              from the maildrop.  It then releases the exclusive-access
        !           493:              lock on the maildrop and replies as to the success of
        !           494:              these operations.  The TCP connection is then closed.
        !           495: 
        !           496:            Possible Responses:
        !           497:                +OK
        !           498:            Examples:
        !           499:                C:    QUIT
        !           500:                S:    +OK dewey POP server signing off (maildrop empty)
        !           501:                  ...
        !           502:                C:    QUIT
        !           503:                S:    +OK dewey POP server signing off (2 messages left)
        !           504:                  ...
        !           505: 
        !           506: 
        !           507: 
        !           508: 
        !           509: 
        !           510: 
        !           511: 
        !           512: 
        !           513: 
        !           514: 
        !           515: 
        !           516: 
        !           517: Page 8
        !           518: 
        !           519: Request For Comments:  draft                                    M. Rose
        !           520: Post Office Protocol (revised)                                     UDel
        !           521: 
        !           522: 
        !           523:                         Optional POP Commands
        !           524: 
        !           525:     The POP commands discussed above must be supported by all minimal
        !           526:     implementations of POP servers.
        !           527: 
        !           528:     The optional POP commands described below permit a POP client
        !           529:     greater freedom in message handling, while preserving a simple POP
        !           530:     server implementation.
        !           531: 
        !           532:              NOTE: This memo STRONGLY encourages implementations to
        !           533:              support these commands in lieu of developing augmented
        !           534:              drop and scan listings.  In short, the philosophy of this
        !           535:              memo is to put intelligence in the part of the POP client
        !           536:              and not the POP server.
        !           537: 
        !           538:        TOP msg n
        !           539:            Arguments: a message-id (required) and a number.  This
        !           540:                message-id may NOT refer to a message marked as deleted.
        !           541:            Restrictions: may only be given in the TRANSACTION state.
        !           542:            Discussion:
        !           543: 
        !           544:              If the POP server issues a positive response, then the
        !           545:              response given is multi-line.  After the initial +OK, the
        !           546:              POP server sends the headers of the message, the blank
        !           547:              line separating the headers from the body, and then the
        !           548:              number of lines indicated message's body, being careful to
        !           549:              bit-stuff the termination character (as with all
        !           550:              multi-line responses).  
        !           551: 
        !           552:              Note that if the number of lines requested by the POP
        !           553:              client is greater than than the number of lines in the
        !           554:              body, then the POP server sends the entire message.
        !           555: 
        !           556:            Possible Responses:
        !           557:                +OK top of message follows
        !           558:                -ERR no such message
        !           559:            Examples:
        !           560:                C:    TOP 10
        !           561:                S:    +OK
        !           562:                S:    <the POP server sends the headers of the message,
        !           563:                       a blank line, and the first 10 lines of the
        !           564:                       body of the message>
        !           565:                S:    .
        !           566:                  ...
        !           567:                C:    TOP 100
        !           568:                S:    -ERR no such message
        !           569: 
        !           570:        RPOP user
        !           571:            Arguments: a client specific user-id (required)
        !           572:            Restrictions: may only be given in the AUTHORIZATION state
        !           573:                after a successful USER command; in addition, may
        !           574: 
        !           575: 
        !           576: Page 9
        !           577: 
        !           578: Request For Comments:  draft                                    M. Rose
        !           579: Post Office Protocol (revised)                                     UDel
        !           580: 
        !           581: 
        !           582:                only be given if the client used a reserved (privileged)
        !           583:                TCP port to connect to the server.
        !           584:            Discussion:
        !           585: 
        !           586:              The RPOP command may be used instead of the PASS command
        !           587:              to authenticate access to the maildrop.  In order for this
        !           588:              command to be successful, the POP client must use a
        !           589:              reserved TCP port (port < 1024) to connect to the server.
        !           590:              The POP server uses the argument pair from the USER and
        !           591:              RPOP commands to determine if the client should be given
        !           592:              access to the appropriate maildrop.  Unlike the PASS
        !           593:              command however, the POP server considers if the remote
        !           594:              user specified by the RPOP command who resides on the POP
        !           595:              client host is allowed to access the maildrop for the user
        !           596:              specified by the USER command (e.g., on Berkeley UNIX, the
        !           597:              .rhosts mechanism is used).  With the exception of this
        !           598:              differing in authentication, this command is identical to
        !           599:              the PASS command.  
        !           600: 
        !           601:            Possible Responses:
        !           602:                +OK maildrop locked and ready
        !           603:                -ERR permission denied
        !           604:            Examples:
        !           605:                C:    USER mrose
        !           606:                S:    +OK mrose is a real hoopy frood
        !           607:                C:    RPOP mrose
        !           608:                S:    +OK mrose's maildrop has 2 messages (320 octets)
        !           609: 
        !           610: 
        !           611: 
        !           612: 
        !           613: 
        !           614: 
        !           615: 
        !           616: 
        !           617: 
        !           618: 
        !           619: 
        !           620: 
        !           621: 
        !           622: 
        !           623: 
        !           624: 
        !           625: 
        !           626: 
        !           627: 
        !           628: 
        !           629: 
        !           630: 
        !           631: 
        !           632: 
        !           633: 
        !           634: 
        !           635: Page 10
        !           636: 
        !           637: Request For Comments:  draft                                    M. Rose
        !           638: Post Office Protocol (revised)                                     UDel
        !           639: 
        !           640: 
        !           641:                       POP Command/Reply Summary
        !           642: 
        !           643:     Minimal POP Commands:
        !           644:        USER name               valid in the AUTHORIZATION state
        !           645:        PASS string
        !           646:        QUIT
        !           647: 
        !           648:        STAT                    valid in the TRANSACTION state
        !           649:        LIST [msg]
        !           650:        RETR msg
        !           651:        DELE msg
        !           652:        NOOP
        !           653:        RSET
        !           654: 
        !           655:        QUIT                    valid in the UPDATE state
        !           656: 
        !           657:     Optional POP Commands:
        !           658:        RPOP user               valid in the AUTHORIZATION state
        !           659: 
        !           660:        TOP msg n               valid in the TRANSACTION state
        !           661: 
        !           662:     POP Replies:
        !           663:        +OK
        !           664:        -ERR
        !           665: 
        !           666:     Note that with the exception of the STAT command, the reply given
        !           667:     by the POP server to any command is significant only to "+OK" and
        !           668:     "-ERR".  Any text occurring after this reply may be ignored by the
        !           669:     client.
        !           670: 
        !           671: 
        !           672: 
        !           673: 
        !           674: 
        !           675: 
        !           676: 
        !           677: 
        !           678: 
        !           679: 
        !           680: 
        !           681: 
        !           682: 
        !           683: 
        !           684: 
        !           685: 
        !           686: 
        !           687: 
        !           688: 
        !           689: 
        !           690: 
        !           691: 
        !           692: 
        !           693: 
        !           694: Page 11
        !           695: 
        !           696: Request For Comments:  draft                                    M. Rose
        !           697: Post Office Protocol (revised)                                     UDel
        !           698: 
        !           699: 
        !           700:                          Example POP Session
        !           701: 
        !           702:     S: <wait for connection on TCP port 109>
        !           703:        ...
        !           704:     C: <open connection>
        !           705:     S:    +OK dewey POP server ready (Comments to: PostMaster@UDel)
        !           706:     C:    USER mrose
        !           707:     S:   +OK mrose is a real hoopy frood
        !           708:     C:    PASS secret
        !           709:     S:    +OK mrose's maildrop has 2 messages (320 octets)
        !           710:     C:    STAT
        !           711:     S:   +OK 2 320
        !           712:     C:   LIST
        !           713:     S:    +OK 2 messages (320 octets)
        !           714:     S:    1 120
        !           715:     S:    2 200
        !           716:     S:    .
        !           717:     C:    RETR 1
        !           718:     S:    +OK 120 octets
        !           719:     S:    <the POP server sends message 1>
        !           720:     S:   .
        !           721:     C:    DELE 1
        !           722:     S:    +OK message 1 deleted
        !           723:     C:    RETR 2
        !           724:     S:    +OK 200 octets
        !           725:     S:    <the POP server sends message 2>
        !           726:     S:   .
        !           727:     C:    DELE 2
        !           728:     S:    +OK message 2 deleted
        !           729:     C:    QUIT
        !           730:     S:    +OK dewey POP server signing off (maildrop empty)
        !           731:     C:  <close connection>
        !           732:     S:  <wait for next connection>
        !           733: 
        !           734: 
        !           735: 
        !           736:                            Message Format
        !           737: 
        !           738:     All messages transmitted during a POP session are assumed to
        !           739:     conform to the standard for the format of ARPA Internet text
        !           740:     messages [RFC822].
        !           741: 
        !           742:     It is important to note that the byte count for a message on the
        !           743:     server host may differ from the octet count assigned to that
        !           744:     message due to local conventions for designating end-of-line.
        !           745:     Usually, during the AUTHORIZATION state of the POP session, the POP
        !           746:     client can calculate the size of each message in octets when it
        !           747:     parses the maildrop into messages.  For example, if the POP server
        !           748:     host internally represents end-of-line as a single character, then
        !           749:     the POP server simply counts each occurrence of this character in a
        !           750:     message as two octets.  Note that lines in the message which start
        !           751: 
        !           752: 
        !           753: Page 12
        !           754: 
        !           755: Request For Comments:  draft                                    M. Rose
        !           756: Post Office Protocol (revised)                                     UDel
        !           757: 
        !           758: 
        !           759:     with the termination octet need not be counted twice, since the POP
        !           760:     client will remove all bit-stuffed termination characters when it
        !           761:     receives a multi-line response.
        !           762: 
        !           763: 
        !           764: 
        !           765:                    The POP and the Split-UA model
        !           766: 
        !           767:     The underlying paradigm in which the POP functions is that of a
        !           768:     split-UA model.  The POP client host, being a remote PC based
        !           769:     workstation, acts solely as a client to the message transport
        !           770:     system.  It does not provide delivery/authentication services to
        !           771:     others.  Hence, it is acting as a UA, on behalf of the person using
        !           772:     the workstation.  Furthermore, the workstation uses SMTP to enter
        !           773:     mail into the MTS. 
        !           774: 
        !           775:     In this sense we have two UA functions which interface to the
        !           776:     message transport system: Posting (SMTP) and Retrieval (POP). The
        !           777:     entity which supports this type of environment is called a split-UA
        !           778:     (since the user agent is split between two hosts which must
        !           779:     interoperate to provide these functions).  
        !           780: 
        !           781:              ASIDE: Others might term this a remote-UA instead.  There
        !           782:              are arguments supporting the use of both terms.
        !           783: 
        !           784:     This memo has explicitly referenced TCP as the underlying transport
        !           785:     agent for the POP.  This need not be the case.  In the MZnet
        !           786:     split-UA, for example, personal micro-computer systems are used
        !           787:     which do not have IP-style networking capability.  To connect to
        !           788:     the POP server host, a PC establishes a terminal connection using
        !           789:     some simple protocol (PhoneNet).  A program on the PC drives the
        !           790:     connection, first establishing a login session as a normal user.
        !           791:     The login shell for this pseudo-user is a program which drives the
        !           792:     other half of the terminal protocol and communicates with one of
        !           793:     two servers. Although MZnet can support several PCs, a single
        !           794:     pseudo-user login is present on the server host.  The user-id and
        !           795:     password for this pseudo-user login is known to all members of
        !           796:     MZnet. Hence, the first action of the login shell, after starting
        !           797:     the terminal protocol, is to demand a USER/PASS authorization pair
        !           798:     from the PC.  This second level of authorization is used to
        !           799:     ascertain who is interacting with the MTS. Although the server host
        !           800:     is deemed to support a "trusted" MTS entity, PCs in MZnet are not.
        !           801:     Naturally, the USER/PASS authorization pair for a PC is known only
        !           802:     to the owner of the PC (in theory, at least).
        !           803: 
        !           804:     After successfully verifying the identity of the client, a modified
        !           805:     SMTP server is started, and the PC posts mail with the server host.
        !           806:     After the QUIT command is given to the SMTP server and it
        !           807:     terminates, a modified POP server is started, and the PC retrieves
        !           808:     mail from the server host. After the QUIT command is given to the
        !           809:     POP server and it terminates, the login shell for the pseudo-user
        !           810: 
        !           811: 
        !           812: Page 13
        !           813: 
        !           814: Request For Comments:  draft                                    M. Rose
        !           815: Post Office Protocol (revised)                                     UDel
        !           816: 
        !           817: 
        !           818:     terminates the terminal protocol and logs the job out.  The PC then
        !           819:     closes the terminal connection to the server host.
        !           820: 
        !           821:     The SMTP server used by MZnet is modified in the sense that it
        !           822:     knows that it's talking to a user agent and not a "trusted" entity
        !           823:     in the message transport system.  Hence, it does performs the
        !           824:     validation activities normally performed by an entity in the MTS
        !           825:     when it accepts a message from a UA.
        !           826: 
        !           827:     The POP server used by MZnet is modified in the sense that it does
        !           828:     not require a USER/PASS combination before entering the TRANSACTION
        !           829:     state.  The reason for this (of course) is that the PC has already
        !           830:     identified itself during the second-level authorization step
        !           831:     described above.
        !           832: 
        !           833:              NOTE: Truth in advertising laws require that the author
        !           834:              of this memo state that MZnet has not actually been fully
        !           835:              implemented.  The concepts presented and proven by the
        !           836:              project led to the notion of the MZnet split-slot model.
        !           837:              This notion has inspired the split-UA concept described
        !           838:              in this memo, led to the author's interest in the POP,
        !           839:              and heavily influenced the the description of the POP
        !           840:              herein.
        !           841: 
        !           842:     In fact, some UAs present in the ARPA Internet already support the
        !           843:     notion of posting directly to an SMTP server and retreiving mail
        !           844:     directly from a POP server, even if the POP server and client
        !           845:     resided on the same host!  
        !           846: 
        !           847:              ASIDE: this discussion raises an issue which this memo
        !           848:              purposedly avoids: how does SMTP know that it's talking
        !           849:              to a "trusted" MTS entity?
        !           850: 
        !           851: 
        !           852: 
        !           853: 
        !           854: 
        !           855: 
        !           856: 
        !           857: 
        !           858: 
        !           859: 
        !           860: 
        !           861: 
        !           862: 
        !           863: 
        !           864: 
        !           865: 
        !           866: 
        !           867: 
        !           868: 
        !           869: 
        !           870: 
        !           871: Page 14
        !           872: 
        !           873: Request For Comments:  draft                                    M. Rose
        !           874: Post Office Protocol (revised)                                     UDel
        !           875: 
        !           876: 
        !           877:                              References
        !           878: 
        !           879:     [MZnet]    E.A. Stefferud, J.N. Sweet, T.P. Domae.
        !           880:                "MZnet: Mail Service for Personal Micro-Computer
        !           881:                Systems",  Proceedings, IFIP 6.5 International
        !           882:                Conference on Computer Message Systems, Nottingham, U.K.
        !           883:                (May, 1984)
        !           884: 
        !           885:     [RFC821]   J.B. Postel.
        !           886:                "Simple Mail Transfer Protocol", USC/Information Sciences
        !           887:                Institute. (August, 1982)
        !           888: 
        !           889:     [RFC822]   D.H. Crocker.
        !           890:                "Standard for the Format of ARPA Internet Text
        !           891:                Messages", University of Delaware.  (August, 1982)
        !           892: 
        !           893:     [RFC918]    J.K. Reynolds.
        !           894:                "Post Office Protocol", USC/Information Sciences Institute.
        !           895:                (October, 1984)
        !           896: 
        !           897:     [RFC923]    J.K. Reynolds, J.B. Postel.
        !           898:                "Assigned Numbers", USC/Information Sciences Institute.
        !           899:                (October, 1984)
        !           900: 
        !           901: 
        !           902: 
        !           903: 
        !           904: 
        !           905: 
        !           906: 
        !           907: 
        !           908: 
        !           909: 
        !           910: 
        !           911: 
        !           912: 
        !           913: 
        !           914: 
        !           915: 
        !           916: 
        !           917: 
        !           918: 
        !           919: 
        !           920: 
        !           921: 
        !           922: 
        !           923: 
        !           924: 
        !           925: 
        !           926: 
        !           927: 
        !           928: 
        !           929: 
        !           930: Page 15

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.