0
|
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)
|