home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pine / imap_archive / text0010.txt < prev    next >
Encoding:
Text File  |  1993-07-02  |  20.4 KB  |  371 lines

  1. > Most of us consider `mail forwarding' to mean encapsulating the message within
  2. > another message.  You would be putting user interface and sending within a
  3. > message.  `Remailing' in this fashion may be reasonable though.
  4.  
  5. X.400 (which I honestly believe that everyone outside the USA will be using
  6. in 10, if not 2 years' time) allows optional added body parts for both
  7. kinds of what it calls `forwarding'. For auto-forwarding the text is
  8. supplied in a management operation, for manual forwarding a new message is
  9. submitted with a parameter referring to "a message that is already in the
  10. MS which is to be combined with the submitted message body". But I accept
  11. that it is possible to define a private protocol for auto-forwarding
  12. control, and to fetch and re-send a manually forwarded message.
  13.  
  14. > I'm not convinced that draft messages belong on the IMAP server as opposed to
  15. > `home directory' server.  What if the IMAP server is overseas (this is a real
  16. > world situation for me!)?  Putting it in IMAP seems to be false `efficiency'.
  17.  
  18. I wasn't really thinking of efficiency here. Even within a campus, a user
  19. may want to send mail from machines that have do not have a common file
  20. system, i.e. for which the only interconnectivity is IP. Having their draft
  21. messages in a common pool is _added function_; having the draft-message
  22. management functions integrated with other parts of the mail protocol
  23. simplifies things and may also add function. E.g. IMAP2's SEARCH and FETCH
  24. commands are mostly equally applicable to draft messages; it would be
  25. duplication of effort to have identical commands in a separate server.
  26. IMAP2 is already ideal for managing a message pool. All it needs is some
  27. way to insert and update the drafts.
  28.  
  29. > Please consider bringing it up to the IETF-REMMAIL group.
  30.  
  31. Ok. But I hope readers will forgive me for reminding the list that the
  32. effort in implementing mail these days is not in designing protocols, but
  33. in writing user-friendly Windows and Mac clients. The fact that the PC POP
  34. clients still haven't got IMAP2 support suggests that any wonderful new
  35. mail protocol from the IETF will be of little use to the average user for a
  36. long time yet, _unless_ it extends an existing protocol. And to me, IMAP2
  37. seems the best candidate.
  38.  
  39. (I think I've made my point - time for someone else to have a go!)
  40. --
  41. Alasdair Grant                                       A.Grant@ucs.cam.ac.uk
  42. MVS Systems Group / Small Systems Integration Group         +44 223 334447
  43. University Computing Service                          +44 223 334679 (fax)
  44. Pembroke St., Cambridge CB2 3QG, UK
  45. From imap-request@cac.washington.edu  Thu Sep  3 09:31:55 1992
  46. Received: from mx1.cac.washington.edu by akbar.cac.washington.edu
  47.     (5.65/UW-NDC Revision: 2.27 ) id AA14662; Thu, 3 Sep 92 09:31:55 -0700
  48. Received: by mx1.cac.washington.edu
  49.     (5.65/UW-NDC Revision: 2.27 ) id AA20814; Thu, 3 Sep 92 09:31:50 -0700
  50. Errors-To: imap-request@cac.washington.edu
  51. Sender: imap-request@cac.washington.edu
  52. Received: from nexus.yorku.ca by mx1.cac.washington.edu
  53.     (5.65/UW-NDC Revision: 2.27 ) id AA20804; Thu, 3 Sep 92 09:31:44 -0700
  54. Received: from localhost ([127.0.0.1]) by nexus.yorku.ca with SMTP id <9222>; Thu, 3 Sep 1992 12:31:36 -0400
  55. To: imap@cac.washington.edu
  56. Subject: Re:  re  IMAP2 futures?      
  57. Date:     Thu, 3 Sep 1992 12:31:25 -0400
  58. From: davecb@nexus.yorku.ca
  59. Message-Id: <92Sep3.123136edt.9222@nexus.yorku.ca>
  60.  
  61. In   <MailManager.715498430.21189.mrc@Tomobiki-Cho.CAC.Washington.EDU>  you write:
  62. [in part of a larger discussion on the server function-set]
  63. | However, this is merely `for efficiency' since the same resulting function can
  64. | be accomplished by existing mechanisms.  This is a good reason to reject it;
  65. | any function which by its fundamental nature is optional and exists only for
  66. | `efficiency' tends not to get implemented widely.  You can either end up with
  67. | a lot of protocol baggage or recognize reality.  Most modern protocol design
  68. | does the latter.
  69.  
  70.   I too would argue that little of the added functionality belongs in the
  71. imap protocol.  It is all too easy to discover you're specifying the
  72. transitive closure of all the states of all the subsystems, unless you try
  73. quite strongly for separation of concerns. 
  74.   Failing to do so ends up in exponential increase in complexity and
  75. implementability.  Ie, an unused protocol.
  76.  
  77.   In concrete terms, it's a bad idea to add too many things to a protocol
  78. because you end up trying to add things which interact in wierd and
  79. wonderous ways. For examplem renaming a mailbox can result in the state of
  80. the MUA suddenly become inconsistant. If the MUA doen't knows the
  81. implications of the operations of the mailbox management system, it can
  82. trivially fail, to the detriment of the user.
  83.   This is already possible in standard IMAP: the imap-using MailManager MUA
  84. reports the mysterious shrinking of a mailbox when someone inadvertantly uses
  85. /bin/mail.  It deals with it reasonably, but has no knowlege of why it
  86. happened, and can only report the bare fact. 
  87.  
  88.   To a non-technical user, this means that mail is unreliable: after all,
  89. it disappears without warning!
  90.  
  91.   As an example of good practice, ftp quite carefully uses separate streams
  92. for commands and data, too keep from having to contain its own multiplexor.
  93. If one wants a muliplexor, one uses the one at a lower level in the protocol
  94. stack. 
  95.  
  96. ( This becomes difficult when talking to very single-threaded machines like
  97. PCs and my old CP/M-80 box.  If one has multitasking and slip, one has a
  98. multiplexor.  If one has only uucp or kermit, one hasn't.
  99.   I once did an application that multiplexed over kermit on a single-task
  100. cp/m-80 system.  At the client end, the coding was horrid: it really had to
  101. be aware of too many things at once.)
  102.  
  103.   On a multi-tasking machine I would separate the applications as far as
  104. possible, and optionally provide a multiplexor and transport layer **if
  105. and only if** I couldn't get an adequate one elswhere.
  106.   Kermit is pretty easy to multiplex, if you must know.  Just don't try to
  107. do it on a z80 unless you really like pain.
  108.  
  109. --dave
  110. From imap-request@cac.washington.edu  Thu Sep  3 10:58:12 1992
  111. Received: from mx1.cac.washington.edu by akbar.cac.washington.edu
  112.     (5.65/UW-NDC Revision: 2.27 ) id AA17098; Thu, 3 Sep 92 10:58:12 -0700
  113. Received: by mx1.cac.washington.edu
  114.     (5.65/UW-NDC Revision: 2.27 ) id AA21814; Thu, 3 Sep 92 10:58:04 -0700
  115. Errors-To: imap-request@cac.washington.edu
  116. Sender: imap-request@cac.washington.edu
  117. Received: from PO2.ANDREW.CMU.EDU by mx1.cac.washington.edu
  118.     (5.65/UW-NDC Revision: 2.27 ) id AA21808; Thu, 3 Sep 92 10:58:02 -0700
  119. Received: by po2.andrew.cmu.edu (5.54/3.15) id <AA03462> for imap@cac.washington.edu; Thu, 3 Sep 92 13:57:56 EDT
  120. Received: via switchmail; Thu,  3 Sep 1992 13:57:54 -0400 (EDT)
  121. Received: from nifty.andrew.cmu.edu via qmail
  122.           ID </afs/andrew.cmu.edu/service/mailqs/testq0/QF.oedZ7:a00WA7Qeb04S>;
  123.           Thu,  3 Sep 1992 13:56:29 -0400 (EDT)
  124. Received: via niftymail; Thu, 3 Sep 1992 13:56:24 -0400 (EDT)
  125. Date: Thu, 3 Sep 1992 13:56:23 -0400 (EDT)
  126. From: Chris Newman <chrisn+@cmu.edu>
  127. Subject: re: IMAP2 futures?
  128. To: imap@cac.washington.edu
  129. In-Reply-To: <A63D359FAB0A7890@UK.AC.CAMBRIDGE.PHOENIX>
  130. References: <A63D359FAB0A7890@UK.AC.CAMBRIDGE.PHOENIX>
  131. Message-Id: <715542983.10477.0@nifty.andrew.cmu.edu>
  132.  
  133. In message <A63D359FAB0A7890@UK.AC.CAMBRIDGE.PHOENIX>, 
  134.  A Grant <AG129@phx.cam.ac.uk> writes:
  135. >I wasn't really thinking of efficiency here. Even within a campus, a user
  136. >may want to send mail from machines that have do not have a common file
  137. >system, i.e. for which the only interconnectivity is IP. Having their draft
  138. >messages in a common pool is _added function_; having the draft-message
  139. >management functions integrated with other parts of the mail protocol
  140. >simplifies things and may also add function. E.g. IMAP2's SEARCH and FETCH
  141. >commands are mostly equally applicable to draft messages; it would be
  142. >duplication of effort to have identical commands in a separate server.
  143. >IMAP2 is already ideal for managing a message pool. All it needs is some
  144. >way to insert and update the drafts.
  145.  
  146. It seems to me that the IMAP2bis "APPEND" command could be used to do
  147. what you want.  Using a convention that the folder called "drafts"
  148. holds draft messages, APPEND could be used to add new or updated
  149. drafts, and FETCH/PURGE could be used to get them and delete them.
  150.  
  151. APPEND is completely unsuitable, however, for any sort of mail
  152. delivery, as it doesn't provide for an envelope.  (I think mail
  153. delivery is outside the scope of IMAP2, as there are existing simple
  154. protocols to do what is necessary).
  155.  
  156.         - Chris Newman
  157.         Computing Services, Carnegie Mellon University
  158. From imap-request@cac.washington.edu  Thu Sep  3 11:34:28 1992
  159. Received: from mx1.cac.washington.edu by akbar.cac.washington.edu
  160.     (5.65/UW-NDC Revision: 2.27 ) id AA18419; Thu, 3 Sep 92 11:34:28 -0700
  161. Received: by mx1.cac.washington.edu
  162.     (5.65/UW-NDC Revision: 2.27 ) id AA22256; Thu, 3 Sep 92 11:34:19 -0700
  163. Errors-To: imap-request@cac.washington.edu
  164. Sender: imap-request@cac.washington.edu
  165. Received: from snow.csi.cam.ac.uk by mx1.cac.washington.edu
  166.     (5.65/UW-NDC Revision: 2.27 ) id AA22250; Thu, 3 Sep 92 11:34:17 -0700
  167. Received: from phx.cam.ac.uk by ppsw1.cam.ac.uk 
  168.           with NIFTP (PP-6.0) as ppsw.cam.ac.uk id <03515-0@ppsw1.cam.ac.uk>;
  169.           Thu, 3 Sep 1992 19:34:04 +0100
  170. Date: Thu, 03 Sep 92 19:33:52 BST
  171. From: A Grant <AG129@phx.cam.ac.uk>
  172. To: imap@cac.washington.edu
  173. Subject: re: IMAP2 futures?
  174. Message-Id: <A63D9AA36C87D260@UK.AC.CAMBRIDGE.PHOENIX>
  175. In-Reply-To: <715542983.10477.0@nifty.andrew.cmu.edu>
  176.  
  177. > It seems to me that the IMAP2bis "APPEND" command could be used to do
  178. > what you want.  Using a convention that the folder called "drafts"
  179. > holds draft messages, APPEND could be used to add new or updated
  180. > drafts, and FETCH/PURGE could be used to get them and delete them.
  181.  
  182. What APPEND command? Has IMAP2bis changed in the last few months?
  183. Where is the new draft, please? (I got it out of the imap distribution
  184. last time.)
  185.  
  186. > APPEND is completely unsuitable, however, for any sort of mail
  187. > delivery, as it doesn't provide for an envelope.  (I think mail
  188. > delivery is outside the scope of IMAP2, as there are existing simple
  189. > protocols to do what is necessary).
  190.  
  191. Nobody is asking for mail delivery, just mail submission.
  192. Any system that handles draft messages ought to handle the envelope;
  193. a user should not have to set up the envelope each time. In other words,
  194. a managed draft message should be able to be "ready for sending".
  195. If APPEND is not suitable for mail submission, it will not be suitable
  196. for managing draft messages.
  197. From imap-request@cac.washington.edu  Thu Sep  3 12:35:40 1992
  198. Received: from mx1.cac.washington.edu by akbar.cac.washington.edu
  199.     (5.65/UW-NDC Revision: 2.27 ) id AA20043; Thu, 3 Sep 92 12:35:40 -0700
  200. Received: by mx1.cac.washington.edu
  201.     (5.65/UW-NDC Revision: 2.27 ) id AA22949; Thu, 3 Sep 92 12:35:32 -0700
  202. Errors-To: imap-request@cac.washington.edu
  203. Sender: imap-request@cac.washington.edu
  204. Received: from Ikkoku-Kan.Panda.COM by mx1.cac.washington.edu
  205.     (5.65/UW-NDC Revision: 2.27 ) id AA22943; Thu, 3 Sep 92 12:35:23 -0700
  206. Received: from localhost by Ikkoku-Kan.Panda.COM
  207.     (NeXT-1.0 (From Sendmail 5.52)/UW-NDC/Panda Revision: 2.27.MRC ) id AA05011; Thu, 3 Sep 92 12:35:17 PDT
  208. Date: Thu, 3 Sep 1992 10:26:13 -0700 (PDT)
  209. From: Mark Crispin <MRC@panda.com>
  210. Subject: Re: re IMAP2 futures? 
  211. To: IMAP Interest List <IMAP@cac.washington.edu>
  212. In-Reply-To: <92Sep3.123136edt.9222@nexus.yorku.ca>
  213. Message-Id: <MailManager.715541173.4742.mrc@Ikkoku-Kan.Panda.COM>
  214. Mime-Version: 1.0
  215. Content-Type: TEXT/PLAIN; charset=US-ASCII
  216.  
  217. Dave makes some excellent points, and I suggest that everyone re-read his
  218. message.  Separation of concerns is a vital part of engineering.  If we don't
  219. keep it firmly in mind, we are very likely to end up with another fiasco like
  220. the late unlamented `IMAP3', or even worse, the ARPAnet `new FTP' protocol
  221. which was official, documented and unimplemented (as opposed to the real FTP
  222. protocol which was unofficial and undocumented except in folklore).  I have
  223. been told that people where pounding the tables at screaming at each other in
  224. the FTP meetings...
  225.  
  226. In the past, I followed a set of criteria when evaluating potential changes to
  227. IMAP2.  I think these criteria are good and should be continued in future
  228. IMAP2 development.  Loosely stated, these criteria are listed below.
  229. Exceptions and violations have existed; these criteria represent an ideal
  230. rather than necessarily reality.  But, I think the strength of IMAP2 has been
  231. due to my having held to (and occasionally fought for) these ideals, and the
  232. weaknesses of IMAP have been when these ideals have been violated.
  233.  
  234.  1) All proposed changes must demonstrate a reason for their existance:
  235.     a)  They must demonstrate that they are useful.
  236.     b') They must demonstrate that they solve a problem that can not be solved
  237.         by other means.
  238.      OR
  239.     b") The `efficiency' gained by the new functionality is such that the cost
  240.         of requiring duplicate code in all implementations pales compared to
  241.         the benefit gained.  [This is nearly impossible to prove.]
  242.  
  243. Examples:
  244.  . A function to play a game of Pac-Man violates 1a.  ;-)
  245.  . A function to set newline conventions violates 1a and 1b (long-winded
  246.    explanation about why this is a terrible idea available on request) and
  247.    also 3 and 4 below.
  248.  . A function to do a remote Finger violates 1b (a Finger protocol exists).
  249.  . A function to transmit 8-bit data violates 1b (IMAP2bis supports MIME and
  250.    BASE64 decoding on the fly is easy).  It may not even be `efficient' to
  251.    transmit binary, as those of us who compare FTP transfer speeds over V42bis
  252.    links between binary and text know very well...
  253.  
  254.  2) All proposed changes must demonstrate that they belong in IMAP as opposed
  255.     to some other protocol; the function must fit within the scope of IMAP.
  256.     This necessarily implies that a distributed mail system will use multiple
  257.     protocols; only the most simple and minimal can expect to do everything it
  258.     needs with one protocol.
  259.  
  260. Example:
  261.  . A function to change the user's password remotely belongs elsewhere.  This
  262.    is undeniably a useful function and IMAP *MUST* consider proper interaction
  263.    with more advanced authentication mechanisms, but maintenance of the
  264.    authentication system is outside the scope of IMAP.
  265.  
  266.  3) All proposed changes must solve the problem they seek to solve, and not
  267.     create new ones.  The road to bad protocol designed is paved with kludges
  268.     that solve one problem in one limited case.
  269.  
  270. Example:
  271.  . I believe that putting mail posting capability into a mail access protocol
  272.    violates this rule (I acknowledge this is still a controversy).  The
  273.    arguments for this are efficiency and authentication.  However, it is not
  274.    efficient if the access server is in another continent (I use IMAP to
  275.    Japan all the time!).  Nor are access credentials equivalent to posting
  276.    credentials; a number of cases exist where posting is permitted without
  277.    access (mail hubs), and access without posting (read-only bboards).  What
  278.    is worse, by allowing posting in the mail access protocol, we create
  279.    clients that only post using the access protocol (since they don't have
  280.    enough memory to have multiple means of posting) and that closes a number
  281.    of doors.  UW already has a separate mail hub engine from the mail
  282.    repository, and this would be precluded by such clients.
  283.  
  284.  4) Multiple protocol states should be avoided, and silly states should be
  285.     avoided like the plague.  This is something that repeatedly comes up in
  286.     protocol design working groups, as yet another group of inexperienced
  287.     individuals pressures for modal switches and for mechanism to list the
  288.     capabilities of an implementation.  The archives of various working groups
  289.     are filled with explanations as to why this is terrible design, and I will
  290.     not belabor the issue here.  Note that even a single mode switch or a
  291.     version command has been well-toasted; MIME has a `version' setting of
  292.     1.0, and it highly likely there will never be any other value permitted.
  293.  
  294.     Silly states are something that have received a lot of attention recently
  295.     due to my efforts.  A silly state is one which obeys the protocol, but
  296.     creates a silly situation.  Humans generally avoid silly states in their
  297.     interactions, but computers and bureaucracies create them all the time.
  298.     An example of a silly state is that created by a server which answers a
  299.     `what verbs do you support' by dumping its verb table, even though several
  300.     of those verbs are served by an error message that says the verb is not
  301.     implemented.  In all cases the server is responding reasonably; it *does*
  302.     know about the verb so it can say `not implemented' instead of `not
  303.     recognized'.  However, a client which makes decisions based upon its
  304.     perception of what the server can or cannot do will be misled by the verb
  305.     table dump.
  306.  
  307.     The key point to understand here is that no amount of legislation in the
  308.     protocol specification is going to prevent silly states if the grammar of
  309.     the protocol permits it.  One of the biggest mistakes in MIME was the ban
  310.     on recursive encoding (encoding of types MESSAGE and MULTIPART) instead of
  311.     the use of syntax that would make the concept non-existant.  The ban is
  312.     there for excellent reasons -- I lobbied long and hard for it -- but the
  313.     fact that the grammar permits it has come to haunt us with PEM.
  314.  
  315.  5) Proposed new capabilities should be interoperable with the past.  The base
  316.     level capability of IMAP2 was defined in RFC-1176 (some say RFC-1064) and
  317.     software implementing that base level is widely distributed.  New
  318.     capabilities should appear as extensions, and it should be clearly
  319.     understood what should be done if the capability is not supported.  The
  320.     use of new capabilities should be completely under the client's control; a
  321.     server should never thrust something unexpected upon an unprepared client.
  322.     New capabilities should be small and have minimal interaction with other
  323.     new capabilities; and where such interaction exists (e.g. between FIND and
  324.     SUBSCRIBE) it should be well-documented.
  325.  
  326.     It is crucial that both the client and the server completely implement the
  327.     enter base level, and that a client attempting to use capabilities beyond
  328.     the base level is able to do so only with a willing server, and that no
  329.     server should presume that the use of one extended capability by the
  330.     client implies the existance of support in the client of another extended
  331.     capability, and that no client should presume that a successful use of an
  332.     extended capability with a server implies that the server supports another
  333.     extended capability.
  334.  
  335.  6) It should be reasonable to expect that any new (or existing supported)
  336.     implementations will implement *ALL* capabilities, both base and extended;
  337.     that the `optionality' of an extended capability refers to the fact that
  338.     we don't have to change all the old implementations; and that any
  339.     capability which is marginal enough that a new implementation would not
  340.     want to include it should be rejected on those grounds.  The fact that a
  341.     capability, by not being in the base, is `optional' is not license to add
  342.     a marginal capability on the grounds that it can be ignored.
  343.  
  344.     The penalty of disobeying this rule is a protocol filled with unnecessary
  345.     and unused clutter.
  346.  
  347.  7) Some amount of latitude is allowed when the benefits clearly outweigh the
  348.     costs.  For example, the new mail management capabilities in IMAP provide
  349.     that service in the very simple case of a single repository.  By design,
  350.     they are completely inadequate for multiple distributed repositories; that
  351.     is completely outside the scope of IMAP and belongs in a mail management
  352.     protocol.
  353.  
  354.  8) It is important that any protocol design recognize the realities of the
  355.     underlying infrastructure.  IMAP2 is a byte-stream protocol and as such
  356.     runs on top of a reliable byte-stream protocol such as TCP.  This imposes
  357.     various constraints that aren't obvious to novices.  It is important to
  358.     recognize that `reliability' implies error correction and especially flow
  359.     control, that although these seem to be transparent they do have
  360.     implications in your higher level protocol design.  The CCA Datacomputer
  361.     protocol of ARPAnet days (R.I.P.) should be a textbook example of how
  362.     failure to recognize flow control considerations can lead to deadlocks.
  363.     No service on top of a flow-controlled protocol is truly `asynchronous'.
  364.     The entire reason for UDP's existance is that it permits asynchronous
  365.     protocols, albeit at the expense of lost reliability.
  366.  
  367. Regards,
  368.  
  369. -- Mark --
  370.  
  371.