Annotation of 43BSD/contrib/mh/support/pop/popbb.rfc, revision 1.1.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:                        Extended Service Offerings
                     16: 
                     17: 
                     18:                         Wed Dec 18 23:17:52 1985
                     19: 
                     20: 
                     21:                             Marshall T. Rose
                     22: 
                     23:                 Northrop Research and Technology Center
                     24:                            One Research Park
                     25:                    Palos Verdes Peninsula, CA  90274
                     26: 
                     27:                            MRose%NRTC@USC-ECL
                     28: 
                     29: 
                     30: 
                     31: 
                     32:     This memo suggests a simple method for workstations to dynamically
                     33:     access mail from a discussion group server, as an extension to an
                     34:     earlier memo which dealt with dynamically accessing mail from a
                     35:     mailbox server using the Post Office Protocol (POP).  This RFC
                     36:     specifies a proposed protocol for the ARPA Internet community, and
                     37:     requests discussion and suggestions for improvements.  All of the
                     38:     extensions described in this memo to the POP are OPTIONAL.  
                     39: 
                     40: Request For Comments:  draft                                    M. Rose
                     41: POP (revised) Extended Service Offerings                           NRTC
                     42: 
                     43: 
                     44: 
                     45:                       Introduction and Motivation
                     46: 
                     47:     It is assumed that the reader is familiar with the previous memo
                     48:     that discusses the Post Office Protocol (POP) [MRose84].  This memo
                     49:     describes extensions to the POP which enhance the service it offers
                     50:     to clients.  This additional service permits a client host to access
                     51:     discussion group mail, which is often kept in a separate spool area,
                     52:     using the general POP facilities.  
                     53: 
                     54:     The next section describes the evolution of discussion groups and
                     55:     the technologies currently used to implement them.  To summarize:
                     56: 
                     57:        o An exploder is used to map from a single address to
                     58:          a list of addresses which subscribe to the list, and redirects
                     59:          any subsequent error reports associated with the delivery of
                     60:          each message.  This has two primary advantages:
                     61:                - Subscribers need know only a single address
                     62:                - Responsible parties get the error reports and not
                     63:                  the subscribers
                     64: 
                     65:        o Typically, each subscription address is not a person's private
                     66:          maildrop, but a system-wide maildrop, which can be accessed
                     67:          by more than one user.  This has several advantages:
                     68:                - Only a single copy of each message need traverse the
                     69:                  net for a given site (which may contain several local
                     70:                  hosts).  This conserves bandwidth and cycles.
                     71:                - Only a single copy of each message need reside on each
                     72:                  subscribing host.  This conserves disk space.
                     73:                - The private maildrop for each user is not cluttered
                     74:                  with discussion group mail.
                     75: 
                     76:     Despite this optimization of resources, further economy can be
                     77:     achieved at sites with more than one host.  Typically, sites with
                     78:     more than one host either:
                     79: 
                     80:         1.  Replicate discussion group mail on each host.  This
                     81:         results in literally gigabytes of disk space committed to
                     82:         unnecessarily store redundant information.
                     83: 
                     84:         2.  Keep discussion group mail on one host and give all users a
                     85:         login on that host (in addition to any other logins they may
                     86:         have).  This is usually a gross inconvenience for users who
                     87:         work on other hosts, or a burden to users who are forced to
                     88:         work on that host.  
                     89: 
                     90:     As discussed in [MRose84], the problem of giving workstations
                     91:     dynamic access to mail from a mailbox server has been explored in
                     92:     great detail (originally there was [RFC918], this prompted the
                     93:     author to write [MRose84], independently of this [RFC918] was
                     94:     upgraded to [RFC937]).  A natural solution to the problem outlined
                     95:     above is to keep discussion group mail on a mailbox server at each
                     96:     site and permit different hosts at that site to employ the POP to
                     97:     access discussion group mail.  If implemented properly, this
                     98:     avoids the problems of both strategies outlined above.
                     99: 
                    100:        ASIDE:     It might be noted that a good distributed filesystem
                    101:                   could also solve this problem.  Sadly, "good"
                    102:                   distributed filesystems, which do not suffer
                    103:                   unacceptable response time for interactive use, are
                    104:                   few and far between these days!  
                    105: 
                    106:     Given this motivation, now let's consider discussion groups, both in
                    107:     general and from the point of view of a user agent.  Following this,
                    108:     extensions to the POP defined in [MRose84] are presented.  Finally,
                    109:     some additional policy details are discussed along with some initial
                    110:     experiences.
                    111: 
                    112:                       What's in a Discussion Group
                    113: 
                    114:     Since mailers and user agents first crawled out of the primordial
                    115:     ARPAnet, the value of discussion groups have been appreciated,
                    116:     (though their implementation has not always been well-understood).
                    117: 
                    118:     Described simply, an discussion group is composed of a number of
                    119:     subscribers with a common interest.  These subscribers post mail to
                    120:     a single address, known as a distribution address.  From this
                    121:     distribution address, a copy of the message is sent to each
                    122:     subscriber.  Each group has a moderator, which is the person that
                    123:     administrates the group.  The moderator can usually be reached at a
                    124:     special address, known as a request address.  Usually, the
                    125:     responsibilities of the moderator are quite simple, since the mail
                    126:     system handles the distribution to subscribers automatically.  In
                    127:     some cases, the interest group, instead of being distributed
                    128:     directly to its subscribers, is put into a digest format by the
                    129:     moderator and then sent to the subscribers.  Although this requires
                    130:     more work on the part of the moderator, such groups tend to be
                    131:     better organized.  
                    132: 
                    133:     Unfortunately, there are a few problems with the scheme outlined
                    134:     above.  First, if two users on the same host subscribe to the same
                    135:     interest group, two copies of the message get delivered.  This is
                    136:     wasteful of both processor and disk resources.  
                    137: 
                    138:     Second, some of these groups carry a lot of traffic.  Although
                    139:     subscription to an group does indicate interest on the part of a
                    140:     subscriber, it is usually not interesting to get 50 messages or so
                    141:     delivered to the user's private maildrop each day, interspersed with
                    142:     personal mail, that is likely to be of a much more important and
                    143:     timely nature.  
                    144: 
                    145:     Third, if a subscriber on the distribution list for a group becomes
                    146:     "bad" somehow, the originator of the message and not the moderator
                    147:     of the group is notified.  It is not uncommon for a large list to
                    148:     have 10 or so bogus addresses present.  This results in the
                    149:     originator being flooded with "error messages" from mailers across
                    150:     the ARPA Internet stating that a given address on the list was bad.
                    151:     Needless to say, the originator usually could not care less if the
                    152:     bogus addresses got a copy of the message or not.  The originator is
                    153:     merely interested in posting a message to the group at large.
                    154:     Furthermore, the moderator of the group does care if there are bogus
                    155:     addresses on the list, but ironically does not receive notification.
                    156: 
                    157:     There are various approaches which can be used to solve some or all
                    158:     of these problems.  Usually these involve placing an exploder agent
                    159:     at the distribution source of the discussion group, which expands
                    160:     the name of the group into the list of subscription addresses for
                    161:     the group.  In the process, the exploder will also change the
                    162:     address that receives error notifications to be the request address
                    163:     or other responsible party.  
                    164: 
                    165:     A complementary approach, used in order to cut down on resource
                    166:     utilization of all kinds, replaces all the subscribers at a single
                    167:     host (or group of hosts under a single administration) with a single
                    168:     address at that host.  This address maps to a file on the host,
                    169:     usually in a spool area, which all users can access.  (Advanced
                    170:     implementations can also implement private discussion groups this
                    171:     way, in which a single copy of each message is kept, but is
                    172:     accessible to only a select number of users on the host.)  
                    173: 
                    174:     The two approaches can be combined to avoid all of the problems
                    175:     described above.
                    176: 
                    177:     Finally, a third approach can be taken, which can be used to aid
                    178:     user agents processing mail for the discussion group:  In order to
                    179:     speed querying of the maildrop which contains the local host's copy
                    180:     of the discussion group, two other items are usually associated with
                    181:     the discussion group, on a local basis.  These are the maxima and
                    182:     the last-date.  Each time a message is received for the group on the
                    183:     local host, the maxima is increased by at least one.  Furthermore,
                    184:     when a new maxima is generated, the current date is determined.
                    185:     This is called the last date.  As the message is entered into the
                    186:     local maildrop, it is given the current maxima and last-date.  This
                    187:     permits the user agent to quickly determine if new messages are
                    188:     present in the maildrop.
                    189: 
                    190:        NOTE:      The maxima may be characterized as a monotonically
                    191:                   increasing quanity.  Although sucessive values of the
                    192:                   maxima need not be consecutive, any maxima assigned
                    193:                   is always greater than any previously assigned value.
                    194: 
                    195:                           Definition of Terms
                    196: 
                    197:     To formalize these notions somewhat, consider the following 7
                    198:     parameters which describe a given discussion group from the
                    199:     perspective of the user agent (the syntax given is from [RFC822]):
                    200: 
                    201:        NAME            Meaning: the name of the discussion group
                    202:                        Syntax:  TOKEN (ALPHA *[ ALPHA / DIGIT / "-" ])
                    203:                                 (case-insensitive recognition)
                    204:                        Example: unix-wizards
                    205: 
                    206:        ALIASES         Meaning: alternates names for the group, which
                    207:                                 are locally meaningful; these are
                    208:                                 typically used to shorten user typein
                    209:                        Syntax:  TOKEN (case-insensitive recognition)
                    210:                        Example: uwiz
                    211: 
                    212:        ADDRESS         Meaning: the primary source of the group
                    213:                        Syntax:  822 address
                    214:                        Example: Unix-Wizards@BRL
                    215: 
                    216:        REQUEST         Meaning: the primary moderator of the group
                    217:                        Syntax:  822 address
                    218:                        Example: Unix-Wizards-Request@BRL
                    219: 
                    220:        FLAGS           Meaning: locally meaningful flags associated
                    221:                                 with the discussion group; this memo
                    222:                                 leaves interpretation of this parameter
                    223:                                 to each POP implementation
                    224:                        Syntax:  octal number
                    225:                        Example: 01
                    226: 
                    227:        MAXIMA          Meaning: the magic cookie associated with the
                    228:                                 last message locally received for the
                    229:                                 group; it is the property of the magic
                    230:                                 cookie that it's value NEVER decreases,
                    231:                                 and increases by at least one each time
                    232:                                 a message is locally received
                    233:                        Syntax:  decimal number
                    234:                        Example: 1004
                    235: 
                    236:        LASTDATE        Meaning: the date that the last message was
                    237:                                 locally received
                    238:                        Syntax:  822 date
                    239:                        Example: Thu, 19 Dec 85 10:26:48 -0800
                    240: 
                    241:     Note that the last two values are locally determined for the
                    242:     maildrop associated with the discussion group and with each message
                    243:     in that maildrop.  Note however that the last message in the
                    244:     maildrop have a different MAXIMA and LASTDATE than the discussion
                    245:     group.  This often occurs when the maildrop has been archived.
                    246: 
                    247:     Finally, some local systems provide mechanisms for automatically
                    248:     archiving discussion group mail.  In some cases, a two-level archive
                    249:     scheme is used:  current mail is kept in the standard maildrop,
                    250:     recent mail is kept in an archive maildrop, and older mail is kept
                    251:     off-line.  With this scheme, in addition to having a "standard"
                    252:     maildrop for each discussion group, an "archive" maildrop may also
                    253:     be available.  This permits a user agent to examine the most recent
                    254:     archive using the same mechanisms as those used on the current mail.
                    255: 
                    256:                             The XTND Command
                    257: 
                    258:     The following commands are valid only in the TRANSACTION state of
                    259:     the POP.  This implies that the POP server has already opened the
                    260:     user's maildrop (which may be empty).  This maildrop is called the
                    261:     "default maildrop".  The phrase "closes the current maildrop" has
                    262:     two meanings, depending on whether the current maildrop is the
                    263:     default maildrop or is a maildrop associated with a discussion
                    264:     group. 
                    265: 
                    266:     In the former context, when the current maildrop is closed any
                    267:     messages marked as deleted are removed from the maildrop currently
                    268:     in use.  The exclusive-access lock on the maildrop is then released
                    269:     along with any implementation-specific resources (e.g.,
                    270:     file-descriptors).  
                    271: 
                    272:     In the latter context, a maildrop associated with a discussion group
                    273:     is considered to be read-only to the POP client.  In this case, the
                    274:     phrase "closes the current maildrop" merely means that any
                    275:     implementation-specific resources are released.  (Hence, the POP
                    276:     command DELE is a no-op.)
                    277: 
                    278:     All the new facilities are introduced via a single POP command,
                    279:     XTND.  All positive reponses to the XTND command are multi-line.
                    280: 
                    281:     The most common multi-line response to the commands contains a
                    282:     "discussion group listing" which presents the name of the discussion
                    283:     group along with it's maxima.  In order to simplify parsing all POP
                    284:     servers are required to use a certain format for discussion group
                    285:     listings:  
                    286: 
                    287:                              NAME SP MAXIMA 
                    288: 
                    289:     This memo makes no requirement on what follows the maxima in the
                    290:     listing.  Minimal implementations should just end that line of the
                    291:     response with a CRLF pair.  More advanced implementations may
                    292:     include other information, as parsed from the message.  
                    293: 
                    294:        NOTE:      This memo STRONGLY discourages implementations from
                    295:                   supplying additional information in the listing.  
                    296: 
                    297: 
                    298:     XTND BBOARDS [name]
                    299:        Arguments: the name of a discussion group (optionally)
                    300:        Restrictions: may only be given in the TRANSACTION state.
                    301:        Discussion:
                    302: 
                    303:         If an argument was given, the POP server closes the current
                    304:         maildrop.  The POP server then validates the argument as the
                    305:         name of a discussion group.  If this is successful, it opens
                    306:         the maildrop associated with the group, and returns a
                    307:         multi-line response containing the discussion group listing.
                    308:         If the discussion group named is not valid, or the associated
                    309:         archive maildrop is not readable by the user, then an error
                    310:         response is returned.  
                    311: 
                    312:         If no argument was given, the POP server issues a multi-line
                    313:         response.  After the initial +OK, for each discussion group
                    314:         known, the POP server responds with a line containing the
                    315:         listing for that discussion group.  Note that only
                    316:         world-readable discussion groups are included in the multi-line
                    317:         response.  
                    318: 
                    319:         In order to aid user agents, this memo requires an extension to
                    320:         the scan listing when an "XTND BBOARDS" command has been given.
                    321:         Normally, a scan listing, as generated by the LIST, takes the
                    322:         form:
                    323: 
                    324:                MSGNO SIZE
                    325: 
                    326:         where MSGNO is the number of the message being listed and SIZE
                    327:         is the size of the message in octets.  When reading a maildrop
                    328:         accessed via "XTND BBOARDS", the scan listing takes the form 
                    329: 
                    330:                MSGNO SIZE MAXIMA
                    331: 
                    332:         where MAXIMA is the maxima that was assigned to the message
                    333:         when it was placed in the BBoard.
                    334: 
                    335:        Possible Responses:
                    336:            +OK XTND
                    337:            -ERR no such bboard
                    338:        Examples:
                    339:            C:    XTND BBOARDS
                    340:            S:    +OK XTND
                    341:            S:    system 10
                    342:            S:    mh-users 100
                    343:            S:    .
                    344:            C:    XTND BBOARDS system
                    345:            S:    + OK XTND
                    346:            S:    system 10
                    347:            S:    .
                    348: 
                    349:     XTND ARCHIVE name
                    350:        Arguments: the name of a discussion group (required)
                    351:        Restrictions: may only be given in the TRANSACTION state.
                    352:        Discussion:
                    353: 
                    354:         The POP server closes the current maildrop.  The POP server
                    355:         then validates the argument as the name of a discussion group.
                    356:         If this is successful, it opens the archive maildrop associated
                    357:         with the group, and returns a multi-line response containing
                    358:         the discussion group listing.  If the discussion group named is
                    359:         not valid, or the associated archive maildrop is not readable
                    360:         by the user, then an error response is returned.  
                    361: 
                    362:         In addition, the scan listing generated by the LIST command is
                    363:         augmented (as described above).
                    364: 
                    365:        Possible Responses:
                    366:            +OK XTND
                    367:            -ERR no such bboard
                    368:        Examples:
                    369:            C:    XTND ARCHIVE system
                    370:            S:    + OK XTND
                    371:            S:    system 3
                    372:            S:    .
                    373: 
                    374:     XTND X-BBOARDS name
                    375:        Arguments: the name of a discussion group (required)
                    376:        Restrictions: may only be given in the TRANSACTION state.
                    377:        Discussion:
                    378: 
                    379:         The POP server validates the argument as the name of a
                    380:         discussion group.  If this is unsuccessful, then an error
                    381:         response is returned.  Otherwise a multi-line response is
                    382:         returned.  The first 14 lines of this response (after the
                    383:         initial +OK) are defined in this memo.  Minimal implementations
                    384:         need not include other information (and may omit certain
                    385:         information, outputing a bare CRLF pair).  More advanced
                    386:         implementations may include other information.  
                    387: 
                    388:                Line    Information (refer to "Definition of Terms")
                    389:                ----    -----------
                    390:                  1     NAME
                    391:                  2     ALIASES, separated by SP
                    392:                  3     system-specific: maildrop
                    393:                  4     system-specific: archive maildrop
                    394:                  5     system-specific: information
                    395:                  6     system-specific: maildrop map
                    396:                  7     system-specific: encrypted password
                    397:                  8     system-specific: local leaders, separated by SP
                    398:                  9     ADDRESS
                    399:                 10     REQUEST
                    400:                 11     system-specific: incoming feed
                    401:                 12     system-specific: outgoing feeds
                    402:                 13     FLAGS SP MAXIMA
                    403:                 14     LASTDATE
                    404: 
                    405:         Most of this information is entirely too specific to the UCI
                    406:         Version of the Rand MH Message Handling System[MRose85].
                    407:         Nevertheless, lines 1, 2, 9, 10, 13, and 14 are of general
                    408:         interest, regardless of the implementation.  
                    409: 
                    410:        Possible Responses:
                    411:            +OK XTND
                    412:            -ERR no such bboard
                    413:        Examples:
                    414:            C:    XTND X-BBOARDS system
                    415:            S:    + OK XTND
                    416:            S:    system
                    417:            S:    local general
                    418:            S:    /usr/bboards/system.mbox
                    419:            S:    /usr/bboards/archive/system.mbox
                    420:            S:    /usr/bboards/.system.cnt
                    421:            S:    /usr/bboards/.system.map
                    422:            S:    *
                    423:            S:    mother
                    424:            S:    system@nrtc
                    425:            S:    system-request@nrtc
                    426:            S:    
                    427:            S:    dist-system@nrtc-gremlin
                    428:            S:    01 10
                    429:            S:    Thu, 19 Dec 85 00:08:49 -0800
                    430:            S:    .
                    431: 
                    432:                               Policy Notes
                    433: 
                    434:     Depending on the particular entity administrating the POP service
                    435:     host, two additional policies might be implemented:
                    436: 
                    437:     1.  Private Discussion Groups 
                    438: 
                    439:     In the general case, discussion groups are world-readable, any user,
                    440:     once logged in (via a terminal, terminal server, or POP, etc.), is
                    441:     able to read the maildrop for each discussion group known to the POP
                    442:     service host.  Nevertheless, it is desirable, usually for privacy
                    443:     reasons, to implement private discussion groups as well.  
                    444: 
                    445:     Support of this is consistent with the extensions outlined in this
                    446:     memo.  Once the AUTHORIZATION state has successfully concluded, the
                    447:     POP server grants the user access to exactly those discussion groups
                    448:     the POP service host permits the authenticated user to access.  As a
                    449:     "security" feature, discussion groups associated with unreadable
                    450:     maildrops should not be listed in a positive response to the XTND
                    451:     BBOARDS command.
                    452: 
                    453:     2.  Anonymous POP Users 
                    454: 
                    455:     In order to minimize the authentication problem, a policy
                    456:     permitting "anonymous" access to the world-readable maildrops for
                    457:     discussion groups on the POP server may be implemented.
                    458: 
                    459:     Support of this is consistent with the extensions outlined in this
                    460:     memo.  The POP server can be modified to accept a USER command for a
                    461:     well-known pseudonym (i.e., "anonymous") which is valid with any
                    462:     PASS command.  As a "security" feature, it is advisable to limit
                    463:     this kind of access to only hosts at the local site, or to hosts
                    464:     named in an access list.
                    465: 
                    466:                       Experiences and Conclusions
                    467: 
                    468:     All of the facilities described in this memo and in [MRose84] have
                    469:     been implemented in MH #6.1.  Initial experiences have been, on the
                    470:     whole, very positive. 
                    471: 
                    472:     After the first implementation, some performance tuning was
                    473:     required.  This consisted primarily of caching the datastructures
                    474:     which describe discussion groups in the POP server.  A second
                    475:     optimization pertained to the client:  the program most commonly
                    476:     used to read BBoards in MH was modified to retrieve messages only
                    477:     when needed.  Two schemes are used:
                    478: 
                    479:        o If only the headers (and the first few lines of the body) of
                    480:         the message are required, e.g., for a scan listing, then only
                    481:         these are retrieved.  The resulting output is then cached, on
                    482:         a per-message basis.
                    483: 
                    484:        o If the entire message is required, then it is retrieved intact,
                    485:         and cached locally.  
                    486: 
                    487:     With these optimizations, response time is quite adequate when the
                    488:     POP server and client are connected via a high-speed local area
                    489:     network.  In fact, the author uses this mechanism to access certain
                    490:     private discussion groups over the ARPAnet.  In this case, response
                    491:     is still good.  When a 9.6Kbps modem is inserted in the path,
                    492:     response went from good to almost tolerable (fortunately the author
                    493:     only reads a few discussion groups in this fashion).  
                    494: 
                    495:     To conclude:  the POP is a good thing, not only for personal mail
                    496:     but for discussion group mail as well.
                    497: 
                    498:                                References
                    499: 
                    500:     [MRose84]   M.T. Rose.
                    501:                "Post Office Protocol (revised)", University of Delaware.
                    502:                (October, 1984)
                    503: 
                    504:     [MRose85]  M.T. Rose, J.L. Romine.
                    505:                "The Rand MH Message Handling System: User's Manual",
                    506:                University of California, Irvine.  (November, 1985)
                    507: 
                    508:     [RFC822]   D.H. Crocker.
                    509:                "Standard for the Format of ARPA Internet Text
                    510:                Messages", University of Delaware.  (August, 1982)
                    511: 
                    512:     [RFC918]    J.K. Reynolds.
                    513:                "Post Office Protocol", USC/Information Sciences Institute.
                    514:                (October, 1984)
                    515: 
                    516:     [RFC937]    M. Butler, J.B. Postel, et. al.
                    517:                "Post Office Protocol - Version 2", USC/Information Sciences
                    518:                Institute.
                    519:                (February, 1985)

unix.superglobalmegacorp.com

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