|
|
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)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.