1 .de $c \" Major Heading printer
3 .b "\\s12\\n+(ch.\\ \\$1\\s0" \" 12 Point Bold Header
6 \ \ \ \\n(ch.\\ \\ \\$1
8 .sp 45p \" 45 point space or about 1/2 inch
10 \".nr xs .15v \" Put index entries closer together
15 .de $0 \" Sub-Heading macro called AFTER printing the heading
22 .de $s \" Macro to print footnote separator
23 \"\l'2i' \" No line drawn
25 . sp 1.3 \" But extra space to make up for it.
27 .fc ^ ~ \" The characters ^ and ~ CANNOT BE USED
28 \" throughout this document except as field
29 \" delimiter & pad indicator!
31 .ll 32P \" 32 Picas or about 5+1/3 inch Line Length
32 .if n .ll 72m \" Use 72 ems for nroff
33 .nr ss 30p \" 30 point space before section titles
34 .nr fm 5v \" Rand likes bigger than normal [3v] bottom margins
36 .ds . \\fB.\\fP\\h'-(1m/3)' \" Bold period to stand out.
37 .ds << <\\h!-(\\w'<'/2)!<
38 .ds >> >\\h!-(\\w'>'/2)!>
39 .ds ** \v'-3p'\s+1*\s0\v'+3p'
43 Although people can travel cross-country in hours and can
44 reach others by telephone in seconds, communications still depend
45 heavily upon paper, most of which is distributed through the mails.
47 There are several major reasons for this continued dependence on
49 First, a written document may be proofread
50 and corrected prior to its distribution, giving the author
51 complete control over his words.
52 Thus, a written document is
53 better than a telephone conversation in this respect.
55 a carefully written document is far less likely to be
56 misinterpreted or poorly translated than a phone conversation.
57 Third, a signature offers reasonable verification of authorship,
58 which cannot be provided with media such as telegrams.
62 accurate, and reproducible document distribution is
64 One solution in widespread use is the telefax.
66 that is rapidly gaining popularity is electronic mail.
67 Electronic mail is similar to telefax in that the data to be sent
68 are digitized, transmitted via phone lines, and
69 turned back into a document at the receiver.
71 electronic mail is in its compression factor.
73 must scan a page in very fine lines and send all of the black and
74 white information, electronic mail assigns characters fixed
75 codes which can be transmitted as a few bits of information.
76 Telefax presently has the advantage of being able to transmit an
77 arbitrary page, including pictures, but electronic mail is
78 beginning to deal with this problem.
79 Electronic mail also integrates well
80 with current directions in office automation, allowing documents
81 prepared with sophisticated equipment at one site to be quickly
82 transferred and printed at another site.
84 Currently, most electronic mail is intraorganizational,
85 with mail transfer remaining within one computer.
87 networking becomes more common, however, it is becoming more feasible to
88 communicate with anyone whose computer can be linked to your
91 The pioneering efforts on general-purpose electronic mail
92 were by organizations using the Defense Department's ARPANET.[1]
93 The capability to send messages between computers existed before
94 the ARPANET was developed, but it was used only in limited ways.
95 With the advent of the
96 ARPANET, tools began to be developed which made it convenient for
97 individuals or organizations to distribute messages
98 over broad geographic areas, using
99 diverse computer facilities.
100 The interest and activity in
101 message systems has now reached such proportions that steps
102 have been taken within the DoD to coordinate and
103 unify the development of military message systems.
104 The use of electronic mail is expected to increase
105 dramatically in the next few years.
106 The utility of such systems
107 in the command and control and intelligence environments is
108 clear, and applications in these areas will probably lead the
110 As the costs for sending and handling electronic messags
111 continue their rapid decrease, such uses can be
112 expected to spread rapidly into other areas and, of course, will
113 not be limited to the DoD.
115 A message system provides tools that help users (individuals
116 or organizations) deal with messages in various ways.
118 must be composed, sent, received, stored, retrieved,
119 forwarded, and replied to.
120 Today's best interactive computer
121 systems provide a variety of word-processing and information
122 handling capabilities.
123 The message handling facilities should be
124 well integrated with the rest of the system, so as to be a
125 graceful extension of overall system capability.
127 The message system described in this report, MH, provides most of the
128 features that can be found in other message systems and also
129 incorporates some new ones.
130 It has been built on the UNIX time-sharing
131 system,[2] a popular operating system for the DEC PDP-11
132 and VAX classes of computers.
133 A \*(lqsecure\*(rq operating
134 system similar to UNIX is currently being developed,[3]
135 and that system will also run MH.
137 This report provides a complete description of MH and
138 thus may serve as a user's manual, although parts of the report
139 will be of interest to non-users as well.
140 Sections 2 and 3, the
141 Overview and Tutorial, present the key
142 ideas of MH and will give those not familiar with message systems
143 an idea of what such systems are like.
145 MH consists of a set of commands which use some special
146 files and conventions.
147 Section 4 covers the information
148 a user needs to know in addition to the
150 The final section, Sec. 5, describes each of
151 the MH commands in detail.
152 A summary of the commands is given in
153 Appendix A, and Appendixes B and C describe the ARPANET
154 conventions for messages (we expect that many users of MH
155 will be using the ARPANET) and the formal syntax of such
156 messages, respectively.
157 Finally, Appendix D provides
158 an illustration of how MH commands may be used in
159 conjunction with other UNIX facilities.
161 A novel approach has been taken in the design of MH.
163 design concept will be reported in detail in a forthcoming Rand
164 report, but it can be described briefly as follows.
165 Instead of creating a large subsystem that appears as a single
166 command to the user, (such as MS[4])
167 MH is a collection of separate commands
168 which are run as separate programs.
169 The file and directory
170 system of UNIX are used directly.
171 Messages are stored as
172 individual files (datasets), and collections of them are grouped
174 In contrast, most other message systems store
175 messages in a complicated data structure within a monolithic
177 With the MH approach, UNIX commands can be
178 interleaved with commands invoking the functions of the message
180 Conversely, existing UNIX commands
181 can be used in connection with messages.
183 example, all the usual UNIX editing, text-formatting, and printing
184 facilities can be applied directly to individual messages.
186 therefore, consists of a relatively small amount of new code; it
187 makes extensive use of other UNIX software to provide the
188 capabilities found in other message systems.
191 There are three main aspects of MH: the way messages are
192 stored (the message database), the user's profile (which directs
193 how certain actions of the message handler take place), and the
194 commands for dealing with messages.
196 Under MH, each message is stored as a separate file.
198 can take any action with a message that he could with an ordinary
200 A UNIX directory in which messages are stored is
202 Each folder contains some standard entries to support
203 the message-handling functions.
204 The messages in a folder have numerical
206 These folders (directories)
207 are entries in a particular directory path, described in
208 the user profile, through which MH can find message folders.
209 Using the UNIX \*(lqlink\*(rq facility, it is possible for one copy of a
210 message to be \*(lqfiled\*(rq in more than one folder, providing a
211 message index facility.
212 Also, using the UNIX tree-structured
213 file system, it is possible to have a folder within a folder.
214 This two-level organization provides a \*(lqselection-list\*(rq
215 facility, with the full power of the MH commands available on
216 selected sublists of messages.
218 Each user of MH has a user profile, a file in his $HOME (initial
220 directory called \*(lq\*.mh\(ruprofile\*(rq.
221 This profile contains several
222 pieces of information used by the MH commands: a
223 path name to the directory that contains the message folders,
224 information concerning which folder the user last referenced (the
225 \*(lqcurrent\*(rq folder), and parameters that tailor MH commands
226 to the individual user's requirements.
228 most of the necessary state information concerning how
229 the user is dealing with his messages, enabling MH to be
230 implemented as a set of individual UNIX commands, in contrast to the
231 usual approach of a monolithic subsystem.
233 In MH, incoming mail is appended
234 to the end of a file called \*.mail in a user's $HOME
236 The user adds the new messages to his collection of MH messages
237 by invoking the command
240 (incorporate) adds the new
241 messages to a folder called \*(lqinbox\*(rq, assigning them names which
242 are consecutive integers starting with the next highest integer
248 the messages thus incorporated.
250 There are four commands for examining the messages in a
261 displays the message preceding the
264 displays the message following the
267 summarizes the messages in a folder,
268 producing one line per message, showing who the message is from,
269 the date, the subject, etc.
271 The user may move a message from one folder to another with
274 Messages may be removed from a folder
275 by means of the command
277 In addition, a user may query
278 what the current folder is and may specify that a new folder
279 become the current folder, through the command
282 A set of messages based on content may be selected by
285 This command searches through
286 messages in a folder and selects those that match a given
288 A subfolder is created within the original folder,
289 containing links to all the messages that satisfy the selection
292 A message folder (or subfolder) may be removed by means of
296 There are five commands enabling the user to create new
297 messages and send them:
305 provides the facility for the user to compose a
308 redistributes mail to additional addressees;
310 enables the user to forward messages; and
312 facilitates the generation of a reply to an incoming message.
314 a message is not sent directly by one of these commands, it may
315 be sent at a later time using the command
318 All of the elements summarized above
319 are described in more detail in the following sections.
321 normal facilities of UNIX provide additional capabilities for
322 dealing with messages in various ways.
324 possible to print messages
325 on the line-printer without requiring any additional code within
327 Using standard UNIX facilities, any terminal output can be
328 redirected to a file for repeated or future viewing.
330 the flexibility and capabilities of the UNIX interface with the
331 user are preserved as a result of the integration of MH into the UNIX
335 This tutorial provides a brief introduction to the MH commands.
336 It should be sufficient
337 to allow the user to read his mail, do some simple manipulations of
338 it, and create and send messages.
340 A message has two major pieces: the
342 The body consists of the text of the message
343 (whatever you care to type in).
344 It follows the header and is separated from
346 (When you compose a message, the form that appears
347 on your terminal shows a line of dashes after the header.
349 convenience and is replaced by an empty line when the message is
350 sent.) The header is composed of several components, including the
351 subject of the message and the person to whom it is addressed.
352 Each component starts with a name
353 and a colon; components must not start with a blank.
355 component may take more than one line, but each continuation line must
357 Messages typically have \*(lqto:\*(rq, \*(lqcc:\*(rq, and
358 \*(lqsubject:\*(rq components.
359 When composing a message, you should include
360 the \*(lqto:\*(rq and \*(lqsubject:\*(rq components; the \*(lqcc:\*(rq (for people
361 you want to send copies to) is not necessary.
363 The basic MH commands are
373 These are described below.
377 When you get the message \*(lqYou have mail\*(rq, type the command
379 You will get a \*(lqscan listing\*(rq such as:
382 .if t .ta .4i 1.0i 2i
383 .if n .ta .4i 1.2i 3i
384 ^7+~^^\07/13~^^Cas~^revival of measurement work
385 ^8~^^10/\09~^^Norm~^NBS people and publications
386 ^9~^^11/26~^^To:norm~^question \*(<<Are there any functions
390 This shows the messages you received since the last time you
391 executed this command (
393 adds these new messages to
395 You can see this list again, plus a list of any
396 other messages you have, by using the
402 The scan listing shows the message number, followed by the
404 (If you are the sender, the addressee in the \*(lqto:\*(rq
405 component is displayed.
406 You may send yourself a message by including
407 your name among the \*(lqto:\*(rq or \*(lqcc:\*(rq addressees.)
408 It also shows the message's subject; if
409 the subject is short, the first part of the body of the message is
410 included after the characters \*(<<.
415 This command shows the current message, that is,
416 the first one of the new messages after an
418 If the message is not
419 specified by name (number), it is
420 generally the last message referred to by an MH command.
425 ^\fIshow\fP\05~^will show message 5.
427 You can use the show command to copy a message or print a
434 ^\fIshow\fR\0>\0\fIx\fR~^will copy the message to file x.
436 ^\fIshow\fR\0|\0\fIprint\fR~^will print the message, using the \fIprint\fR command.
438 ^\fInext\fR~^will show the message that follows the current message.
440 ^\fIprev\fR~^will show the message previous to the current message.
442 ^\fIrmm\fR~^will remove the current message.
444 ^\fIrmm\03\fR~^will remove message 3.
452 command puts you in the editor to write or edit a message.
454 delete the \*(lqto:\*(rq, \*(lqcc:\*(rq, and \*(lqsubject:\*(rq fields, as appropriate, and
455 type the body of the message.
457 exit normally from the editor.
460 Type a carriage return to see the options.
462 will cause the message to be sent; typing \fBquit\fR will cause an exit
465 with the message draft saved.
467 If you quit without sending the message, it will be saved in a file
468 called /usr/<name>/Mail/draft (where /usr/<name> is your $HOME directory).
469 You can edit this file and send the message later, using the
474 .i "comp\0\-editor\0prompter"
476 This command uses a different editor and is useful for preparing
477 \*(lqquick and dirty\*(rq messages.
478 It prompts you for each component of the
480 Type the information for that component, or type a carriage
481 return to omit the component.
482 After that, type the body of the
484 Backspacing is the only form of editing allowed with this editor.
485 When the body is complete, type a carriage return followed by <CTRL-D>
486 (<OPEN> on Ann Arbor terminals).
487 This completes the initial preparation of the message; from then on, use
488 the same procedures as with
497 This command makes up an initial message form with a header
498 that is appropriate for
499 replying to an existing message.
500 The message being answered is the
501 current message if no message number is mentioned, or n if a number
503 After the header is completed, you can finish the message as in
507 This is enough information to get you going using MH.
508 There are more commands,
509 and the commands described here have more features.
511 explain MH in complete detail.
512 The system is quite powerful if you
513 want to use its sophisticated features, but the foregoing commands
514 suffice for sending and receiving messages.
516 There are numerous additional capabilities you may wish to explore.
519 command will select a subset of messages
520 based on specified criteria such as sender or subject.
522 messages may be designated, as described in Sec. V, under \*(lqMessage
524 The file \*(lq\*.mh\(ruprofile\*(rq can be used to tailor your use of
525 the message system to your needs and preferences, as described in Sec. V,
526 under \*(lqThe User Profile\*(rq.
528 learn additional features of the system selectively, according to your
530 by studying the relevant sections of this manual.
532 learn all the details of the system at once.
533 .+c "DETAILED DESCRIPTION"
535 This section describes the MH system in detail, including the components
536 of the user profile, the conventions for message naming, and some of
537 the other MH conventions.
539 generally familiar with computer systems will be able to follow
540 the principal ideas, although some details may be meaningful only to
541 those familiar with UNIX.
542 .uh "THE USER PROFILE"
544 The first time an MH command is issued by a new user, the system
545 prompts for a \*(lqpath\*(rq and creates an MH \*(lqprofile\*(rq.
547 Each MH user has a profile which contains current
548 state information for the MH package and, optionally, tailoring
549 information for each individual program.
550 When a folder becomes
551 the current folder, it is recorded in the user's profile.
552 Other profile entries control the MH path (where folders and
553 special files are kept), folder and message protections, editor
554 selection, and default arguments for each MH program.
556 The MH profile is stored in the file \*(lq\*.mh\(ruprofile\*(rq in the
557 user's $HOME directory.
558 It has the format of a message without
560 That is, each profile entry is on one line, with a
561 keyword followed by a colon (:) followed by text particular to
565 .i "This file must not have blank lines."
568 may have any combination of upper and lower case.
570 B for a description of message formats.)
572 For the average MH user, the only profile entry of
573 importance is \*(lqPath\*(rq.
574 Path specifies a directory in which MH
575 folders and certain files such as \*(lqdraft\*(rq are found.
577 argument to this keyword must be a legal UNIX path that names an
579 If this path is unrooted (i.e., does not
580 begin with a \fB/\fR), it will be presumed to start from the
581 user's $HOME directory.
582 All folder and message references within
583 MH will relate to this path unless full path names are used.
585 Message protection defaults to 664, and folder protection to
587 These may be changed by profile entries \*(lqMsg-Protect\*(rq
588 and \*(lqFolder-Protect\*(rq, respectively.
589 The argument to these
590 keywords is an octal number which is used as the UNIX file mode.\**
595 .i "UNIX Programmer's Manual" .[5]
598 When an MH program starts running, it looks through the
599 user's profile for an entry with a keyword matching the program's
603 is run, it looks for a \*(lqcomp\*(rq
605 If one is found, the text of the profile entry is
606 used as the default switch setting until all defaults are overridden
607 by explicit switches passed to the program as arguments.
609 entry \*(lqcomp:\0\-form\0standard.list\*(rq would direct
612 file \*(lqstandard.list\*(rq as the message skeleton.
614 form switch is given to the
616 command, it will override the
617 switch obtained from the profile.
619 In UNIX, a program may exist under several names, either by
621 The actual invocation name is used by an MH
622 program when scanning for its profile defaults.
623 Thus, each MH program
624 may have several names by which it can be invoked, and each name
625 may have a different set of default switches.
628 is invoked by the name
631 \*(lqicomp\*(rq will control the default switches for this invocation of
635 This provides a powerful
636 definitional facility for commonly used switch settings.
645 is \*(lq/bin/ned\*(rq.\**
647 \**See Ref. 6 for a description of
650 A different editor may be used by specifying
653 The argument to \*(lqEditor\*(rq is the name of an
654 executable program or shell command file which can be found via
655 the user's $PATH defined search path, excluding the current
657 The \*(lqEditor:\*(rq profile specification
658 may in turn be overridden by a \*(lq\-editor\0<editor>\*(rq
659 profile switch associated with
665 Finally, an explicit editor switch specified with any
666 of these four commands will have ultimate precedence.
668 During message composition, more than one editor may be
670 For example, one editor (such as
673 initially, and a second editor may be invoked later to revise
674 the message being composed
675 (see the discussion of
677 in Section 5 for details).
678 A profile entry \*(lq<lasteditor>\-next:\0<editor>\*(rq specifies the name of
679 the editor to be used after a particular editor.
680 Thus \*(lqcomp:\0\-e\0prompter\*(rq
681 causes the initial text to be collected by
683 and the profile entry \*(lqprompter\-next:\0ed\*(rq names ed as the
684 editor to be invoked for the next round of editing.
686 Some of the MH commands, such as
689 message folders owned by others, if those folders are readable.
691 you cannot write in someone else's folder.
693 actions not requiring write permission may be used with
694 a \*(lqread-only\*(rq folder.
695 In a writable folder, a file named
696 \*(lqcur\*(rq is used to contain its current message name.
697 For read-only folders, the current message name is
698 stored in the user's profile.
700 Table 1 lists examples of the currently defined profile
701 entries, typical arguments, and the programs that reference the
711 P\s-2ROFILE\s0 C\s-2OMPONENTS\s0
712 .hl \" ~12p preceding + 1v (12p) after
715 ^Keyword and Argument~^\ Use Component\h'|\n(.lu-.9i'\v'4p'\l'|0'\v'-4p' \" \l'..' does underlining
718 ^Current-Folder:\0inbox~^Most
719 ^Editor:\0/bin/ed~^\fIcomp, dist, forw, repl\fR
720 ^Msg\-Protect:\0644~^\fIinc\fR
721 ^Folder\-Protect:\0711~^\fIfile, inc, pick\fR
722 ^<program>:\0default switches~^All
723 ^cur\-<read-onlyfolder>:\0172~^Most
724 ^prompter\-next:\0ed~^\fIcomp, dist, forw, repl\fR
734 automatically by many MH commands (see the \*(lqContext\*(rq sections of
735 the individual commands in Sec. V).
736 All other entries are optional,
737 defaulting to the values described above.
740 Messages may be referred to explicitly or implicitly when
742 A formal syntax of message names is given in Appendix C, but the
743 following description should be sufficient for most MH users.
744 Some details of message naming that apply only to certain
745 commands are included in the description of those
748 Most of the MH commands accept arguments specifying one or
749 more folders, and one or more messages to operate on.
751 the word \*(lqmsg\*(rq as an argument to a command means that exactly one
752 message name may be specified.
753 A message name may be a number,
754 such as 1, 33, or 234, or it may be
755 one of the \*(lqreserved\*(rq message names:
756 first, last, prev, next, and cur.
758 period (\*.) is equivalent to cur.)
759 The meanings of these names
760 are straightforward: \*(lqfirst\*(rq is the first message in the
761 folder; \*(lqlast\*(rq is the last
762 message in the folder; \*(lqprev\*(rq is the
763 message numerically previous to the current message; \*(lqnext\*(rq
764 is the message numerically following the current message; \*(lqcur\*(rq
765 (or \*(lq\*.\*(rq) is the current message in the folder.
767 The default in commands that take a \*(lqmsg\*(rq argument is
768 always \*(lqcur\*(rq.
770 The word \*(lqmsgs\*(rq indicates that several messages may be
772 Such a specification consists of several message
773 designations separated by spaces.
774 A message designation is
775 either a message name or a message range.
777 specification of the form name1\-name2 or name1:n, where name1 and
778 name2 are message names and n is an integer.
780 designates all the messages from name1 to name2 inclusive; this
781 must be a non-empty range.
782 The second form specifies up to n
783 messages, starting with name1 if name1 is a number, or first,
784 cur, or next, and ending with name1 if name1 is last or
786 This interpretation of n is overridden if n is preceded
787 by a plus sign or a minus sign;
788 +n always means up to n messages starting with
789 name1, and \-n always means up to n messages ending with name1.
790 Repeated specifications of the same message have the same effect
791 as a single specification of
803 The message name \*(lqall\*(rq is a shorthand for \*(lqfirst\-last\*(rq,
804 indicating all of the messages in the folder.
806 The limit on the number of messages in an expanded message
807 list is generally 999\*-the maximum number of messages in a
812 commands `\fIpick\0\-scan\fR' and `\fIpick\0\-show\fR'
813 are constrained to have argument lists
814 that are no more than 512 characters long.
815 (Under Version 7 UNIX this limit is 4096.)
817 In commands that accept \*(lqmsgs\*(rq arguments, the default is
818 either cur or all, depending on which makes more sense.
820 In all of the MH commands, a plus sign preceding an argument
821 indicates a folder name.
822 Thus, \*(lq+inbox\*(rq is the name of the
823 user's standard inbox.
824 If an explicit folder argument is given
825 to an MH command, it will become the current folder (that is,
826 the \*(lqCurrent-Folder:\*(rq entry
827 in \*(lq\*.mh\(ruprofile\*(rq will be changed to this
834 can have multiple output folders, a new source folder (other than
835 the default current folder) is specified by \*(lq\-src\0+folder\*(rq.
836 .uh "OTHER MH CONVENTIONS"
838 One very powerful feature of MH is that the MH commands may
839 be issued from any current directory, and the proper path to
840 the appropriate folder(s) will be taken from the user's profile.
841 If the MH path is not appropriate for a specific folder or file,
842 the automatic prepending of the MH path can be avoided by
843 beginning a folder or file name with \fB/\fR.
844 Thus any specific full
845 path may be specified.
847 Arguments to the various programs may be given in any order,
848 with the exception of a few switches whose arguments must follow
849 immediately, such as \*(lq\-src\0+folder\*(rq for \fIpick\fR and \fIfile\fR.
851 Whenever an MH command prompts the user, the valid options
852 will be listed in response to a <RETURN>.
854 listed options is the default if end-of-file is encountered, such
855 as from a command file.) A valid response is any \fIunique\fR
856 abbreviation of one of the listed options.
858 Standard UNIX documentation conventions are used in this report
859 to describe MH command syntax.
860 Arguments enclosed in brackets
861 ([ ]) are optional; exactly one of the arguments enclosed
862 within braces ({ }) must be specified, and all other
863 arguments are required.
864 The use of ellipsis dots (...) indicates
865 zero or more repetitions of the previous item.
867 \*(lq+folder ...\*(rq would indicate that one or more \*(lq+folder\*(rq arguments
868 is required and \*(lq[+folder ...]\*(rq indicates that 0 or more
869 \*(lq+folder\*(rq arguments may be given.
871 MH departs from UNIX standards by using switches that consist of
872 more than one character, e.g. \*(lq\-header\*(rq.
874 only a unique abbreviation of a switch need be typed; thus, for
875 \*(lq\-header\*(rq, \*(lq\-hea\*(rq is probably sufficient, depending on the
876 other switches the command accepts.
878 accepts the switch \*(lq\-help\*(rq (which \fImust\fR be spelled out fully)
879 and produces a syntax description and a list of switches.
881 list of switches, parentheses indicate required characters.
882 For example, all \*(lq\-help\*(rq switches will appear as \*(lq\-(help)\*(rq,
883 indicating that no abbreviation is accepted.
885 Many MH switches have both on and off forms, such as
886 \*(lq\-format\*(rq and \*(lq\-noformat\*(rq.
887 In many of the descriptions in Sec. V,
888 only one form is defined; the other form, often used to
889 nullify profile switch settings, is assumed to be the opposite.
894 The MH package comprises 16 programs:
899 ^comp~^Compose a message
900 ^dist~^Redistribute a message
901 ^file~^Move messages between folders
902 ^folder~^Select/list status of folders
903 ^forw~^Forward a message
904 ^inc~^Incorporate new mail
905 ^next~^Show the next message
906 ^pick~^Select a set of messages by context
907 ^prev~^Show the previous message
908 ^prompter~^Prompting editor front end for composing messages
909 ^repl~^Reply to a message
910 ^rmf~^Remove a folder
911 ^rmm~^Remove messages
912 ^scan~^Produce a scan listing of selected messages
913 ^send~^Send a previously composed message
918 These programs are described below.
919 The form of the descriptions
920 conforms to the standard
921 form for the description of UNIX commands.
926 .fo '7th Edition'UNIX/32V(Rand)''
928 .he '\\$1(1)'-%-'\\$1(1)'
950 .b \\s-2DESCRIPTION\\s0
966 .b "\\s-2Profile Components\\s0"
992 comp \- compose a message
995 comp \%[\-editor\ editor] \%[\-form\ formfile] \%[file] \%[\-use]
996 \%[\-nouse] \%[\-help]
999 \fIComp\fP is used to create a new message to be mailed.
1001 \fIfile\fP is not specified, the file named \*(lqdraft\*(rq in the user's MH
1002 directory will be used.
1003 \fIComp\fR copies a message form to
1004 the file being composed and then invokes an editor on the
1006 The default editor is /bin/ned, which may be overridden with
1007 the `\-editor' switch or with a profile entry \*(lqEditor:\*(rq.
1009 description of the NED text editing system.)
1011 message form contains the following elements:
1018 If the file named \*(lqcomponents\*(rq exists in the user's MH directory,
1019 it will be used instead of this form.
1021 formfile' is specified, the specified formfile (from the MH
1022 directory) will be used as the skeleton.
1024 or a blank line must be left between the header and the
1025 body of the message for the message to be identified properly when it is
1026 sent (see \fIsend;\fR).
1027 The switch `\-use' directs \fIcomp\fR to
1028 continue editing an already started message.
1030 \fIcomp\fR (or \fIdist\fR, \fIrepl\fR, or \fIforw\fR) is terminated without
1031 sending the message, the message can be edited again via
1032 \*(lqcomp \-use\*(rq.
1034 If the specified file (or draft) already exists, \fIcomp\fR will ask
1035 if you want to delete it before continuing.
1036 A reply of \fBNo\fR will abort the
1037 \fIcomp\fR, \fByes\fR will replace the existing draft with a blank
1038 skeleton, \fBlist\fR will display the draft, and \fBuse\fR will use it
1039 for further composition.
1041 Upon exiting from the editor, \fIcomp\fR will ask \*(lqWhat now?\*(rq.
1043 responses are \fBlist\fR, to list the draft on the terminal; \fBquit\fR, to
1044 terminate the session and preserve the draft; \fBquit delete\fR, to terminate,
1045 then delete the draft; \fBsend\fR, to send the message; \fBsend verbose\fR, to
1046 cause the delivery process to be monitored; \fBedit <editor>\fR, to invoke
1047 <editor> for further editing; and \fBedit\fR, to re-edit using the
1048 same editor that was used on the preceding round unless a profile
1049 entry \*(lq<lasteditor>\-next: <editor>\*(rq names an alternative editor.
1052 ^/etc/mh/components~^The message skeleton
1053 ^or <mh-dir>/components~^Rather than the standard skeleton
1054 ^$HOME/\*.mh\(ruprofile~^The user profile
1055 ^<mh-dir>/draft~^The default message file
1056 ^/usr/bin/send~^To send the composed message
1058 ^Path:~^To determine the user's MH directory
1060 ^Editor:~^To override the use of /bin/ned as the default editor
1062 ^<lasteditor>\-next:~^To name an editor to be used after exit from <lasteditor>
1064 `file' defaults to draft
1065 `\-editor' defaults to /bin/ned
1068 \fIComp\fR does not affect either the current folder or the current message.
1072 dist \- redistribute a message to additional addresses
1074 dist \%[+folder] \%[msg] \%[\-form\ formfile] \%[\-editor\ editor]
1075 \%[\-annotate] \%[\-noannotate]
1076 \%[\-inplace] \%[\-noinplace]
1079 \fIDist\fR is similar to \fIforw\fR.
1080 It prepares the specified
1081 message for redistribution to addresses that (presumably) are
1082 not on the original address list.
1083 The file \*(lqdistcomps\*(rq in the
1084 user's MH directory, or a standard form, or the file specified by
1085 `\-form formfile' will be used as the blank components file to
1086 be prepended to the message being distributed.
1088 has the components \*(lqDistribute-to:\*(rq and \*(lqDistribute-cc:\*(rq.
1090 the message is sent, \*(lqDistribution-Date:\0date\*(rq,
1091 \*(lqDistribution-From:\0name\*(rq, and
1092 \*(lqDistribution-Id:\0id\*(rq (if `\-msgid' is
1093 specified to \fIsend\fR;) will be prepended to the outgoing message.
1094 Only those addresses in \*(lqDistribute-To\*(rq, \*(lqDistribute-cc\*(rq, and
1095 \*(lqDistribute-Bcc\*(rq will be sent.
1096 Also, a \*(lqDistribute-Fcc:\0folder\*(rq
1097 will be honored (see \fIsend;\fR).
1099 \fISend\fR recognizes a message as a redistribution message by the
1100 existence of the field \*(lqDistribute-To:\*(rq, so don't try to
1101 redistribute a message with only a \*(lqDistribute-cc:\*(rq.
1103 If the `\-annotate' switch is given, each message being
1104 distributed will be annotated with the lines:
1106 Distributed:\0\*(<<date\*(>>
1107 Distributed:\0Distribute-to: names
1109 where each \*(lqto\*(rq list contains as many lines as required.
1111 will be done only if the message is sent directly from \fIdist\fR.
1113 message is not sent immediately from \fIdist\fR (i.e., if it is sent later
1115 \*(lqcomp \-use\*(rq may be used to re-edit and send the constructed message, but
1116 the annotations won't take place.
1117 The '\-inplace' switch causes annotation to
1118 be done in place in order to preserve links to the annotated message.
1120 See \fIcomp\fR for a description of the `\-editor' switch and for options
1121 upon exiting from the editor.
1124 ^/etc/mh/components~^The message skeleton
1125 ^or <mh-dir>/components~^Rather than the standard skeleton
1126 ^$HOME/\*.mh\(ruprofile~^The user profile
1127 ^<mh-dir>/draft~^The default message file
1128 ^/usr/bin/send~^To send the composed message
1130 ^Path:~^To determine the user's MH directory
1132 ^Editor:~^To override the use of /bin/ned as the default editor
1134 ^<lasteditor>\-next:~^To name an editor to be used after exit from <lasteditor>
1136 `+folder' defaults to the current folder
1137 `msg' defaults to cur
1138 `\-editor' defaults to /bin/ned
1142 If a +folder is specified, it will become the current
1143 folder, and the current message will be set to the message
1144 being redistributed.
1148 file \- file message(s) in (an)other folder(s)
1150 file \%[\-src\ +folder] \%[msgs] \%[\-link] \%[\-preserve] \%+folder\ ...
1151 \%[\-nolink] \%[\-nopreserve]
1152 \%[\-file\ file] \%[\-nofile] \%[\-help]
1154 \fIFile\fR moves (\fImv\fR(I)) or links (\fIln\fR(I)) messages from a
1155 source folder into one or more destination folders.
1157 of a message as a sheet of paper, this operation is not
1158 unlike filing the sheet of paper (or copies) in file cabinet
1160 When a message is filed, it is linked into the
1161 destination folder(s) if possible, and is copied otherwise.
1163 as the destination folders are all on the same file system, multiple filing
1164 causes little storage overhead.
1165 This facility provides a good way to cross-file or multiply-index
1167 For example, if a message is received from Jones about
1168 the ARPA Map Project, the command
1170 file\0cur\0+jones\0+Map
1172 would allow the message to be found in either of the two
1173 folders `jones' or `Map'.
1175 The option `\-file file' directs \fIfile\fR to use the specified
1176 file as the source message to be filed, rather than a message from
1179 If a destination folder doesn't exist, \fIfile\fR will ask if you
1181 A negative response will abort the file
1184 `\-link' preserves the source folder copy of the message
1185 (i.e., it does a \fIln\fR(I) rather than a \fImv\fR(I)), whereas,
1186 `\-nolink' deletes the \*(lqfiled\*(rq messages from the source
1188 Normally, when a message is filed, it is assigned the
1189 next highest number available in each of the destination folders.
1190 Use of the `\-preserve' switch will override this message
1191 \*(lqrenaming\*(rq, but name conflicts may occur, so
1192 use this switch cautiously.
1193 (See \fIpick\fR for more details on
1196 If `\-link' is not specified (or `\-nolink' is specified),
1197 the filed messages will be removed (unlink(II)) from the
1201 ^$HOME/\*.mh\(ruprofile~^The user profile
1203 ^Path:~^To determine the user's MH directory
1205 ^Current-Folder:~^To find the default current folder
1207 ^Folder\-Protect:~^To set mode when creating a new folder
1209 `\-src +folder' defaults to the current folder
1210 `msgs' defaults to cur
1215 If `\-src +folder' is given, it will become the
1216 current folder for future MH commands.
1217 If neither `\-link' nor
1218 `all' are specified, the current message in the source
1219 folder will be set to the last message specified; otherwise, the
1220 current message won't be changed.
1224 folder \- set/list current folder/message
1226 folder \%[+folder] \%[msg] \%[\-all] \%[\-fast] \%[\-nofast] \%[\-up] \%[\-down]
1227 \%[\-header] \%[\-noheader] \%[\-total] \%[\-nototal] \%[\-pack] \%[\-nopack]
1231 folders <equivalent to 'folder \-all'>
1233 Since the MH environment is the shell, it is easy to lose
1234 track of the current folder from day to day.
1236 list the current folder, the number of messages in it, the
1237 range of the messages (low-high), and the current message within
1238 the folder, and will flag a selection list or extra files if they
1240 An example of the output is:
1242 inbox+ has 16 messages ( 3\- 22); cur= 5.
1244 If a `+folder' and/or `msg' are specified, they will
1245 become the current folder and/or message.
1247 will produce a line for each folder in the user's MH directory,
1248 sorted alphabetically.
1249 These folders are preceded by the read-only
1250 folders, which occur as \*.mh\(ruprofile \*(lqcur\-\*(rq entries.
1254 .ta 1.5i 2.1i 2.7i 3.5i
1255 ^~Folder\ \ ^^~#\ of\ ^^messages~^^(~\ range\~ );\ ^cur msg (other files)
1256 ^~/fsd/rs/m/tacc\ \ ^^has~35\ ^^messages~^^(~1\-\035);\ ^cur=\ 23.
1257 ^~/rnd/phyl/Mail/EP\ \ ^^has~82\ ^^messages~^^(~1\-108);\ ^cur=\ 82.
1258 ^~f\&f\ \ ^^has~4\ ^^messages~^^(~1\-\0\04);\ ^cur=\ \01.
1259 ^~inbox+\ ^^has~16\ ^^messages~^^(~3\-\022);\ ^cur=\ \05.
1260 ^~mh\ \ ^^has~76\ ^^messages~^^(~1\-\076);\ ^cur=\ 70.
1261 ^~notes\ \ ^^has~2\ ^^messages~^^(~1\-\0\02);\ ^cur=\ \01.
1262 ^~ucom\ \ ^^has~124\ ^^messages~^^(~1\-124);\ ^cur=\ \06; (select).
1264 ^^^~TOTAL=\0339\ ^messages\0in\0\07\0Folders.
1268 The \*(lq+\*(rq after inbox indicates that it is the current folder.
1269 The \*(lq(select)\*(rq indicates that the folder ucom has a selection
1270 list produced by \fIpick\fR.
1271 If \*(lqothers\*(rq had appeared in parentheses at
1272 the right of a line, it would indicate that there are files in
1273 the folder directory that don't belong under the MH file naming
1276 The header is output if either an `\-all' or a `\-header' switch
1277 is specified; it is suppressed by `\-noheader'.
1278 Also, if \fIfolder\fR
1279 is invoked by a name ending with \*(lqs\*(rq (e.g., \fIfolders\fR),
1281 A `\-total' switch will produce only the
1284 If `\-fast' is given, only the folder name (or names in the
1285 case of `\-all') will be listed.
1286 (This is faster because the
1287 folders need not be read.)
1289 The switches `\-up' and `\-down' change the folder to be the
1290 one above or below the current folder.
1291 That is, \*(lqfolder \-down\*(rq
1292 will set the folder to \*(lq<current\-folder>/select\*(rq, and if the
1293 current folder is a selection-list folder, \*(lqfolder \-up\*(rq will
1294 set the current folder to the parent of the selection-list.
1295 (See \fIpick\fR for details on selection-lists.)
1297 The `\-pack' switch will compress the message names in a folder, removing
1298 holes in message numbering.
1300 ^$HOME/\*.mh\(ruprofile~^The user profile
1301 ^/bin/ls~^To fast-list the folders
1303 ^Path:~^To determine the user's MH directory
1305 ^Current-Folder:~^To find the default current folder
1307 `+folder' defaults to the current folder
1308 `msg' defaults to none
1314 If `+folder' and/or `msg' are given, they will become the
1315 current folder and/or message.
1319 forw \- forward messages
1321 forw \%[+folder] \%[msgs] \%[\-editor\ editor] \%[\-form\ formfile]
1322 \%[\-annotate] \%[\-noannotate]
1323 \%[\-inplace] \%[\-noinplace]
1326 \fIForw\fR may be used to prepare a message containing other
1328 It constructs the new message from the components file
1329 or `\-form formfile' (see \fIcomp\fR), with a body composed of the
1330 message(s) to be forwarded.
1331 An editor is invoked as in \fIcomp\fR,
1332 and after editing is complete, the user is prompted before the message
1335 If the `\-annotate' switch is given, each message being
1336 forwarded will be annotated with the lines
1338 Forwarded: \*(<<date\*(>>
1339 Forwarded: To: names
1340 Forwarded: cc: names
1342 where each \*(lqTo:\*(rq and \*(lqcc:\*(rq list contains as many lines as required.
1343 This annotation will be done only if the message is sent directly
1345 If the message is not sent immediately from \fIforw\fR,
1346 \*(lqcomp \-use\*(rq may be used in a later session to re-edit and send
1347 the constructed message, but the annotations won't take place.
1348 The `\-inplace' switch permits annotating a message in place in
1349 order to preserve its links.
1351 See \fIcomp\fR for a description of the `\-editor' switch.
1353 ^/etc/mh/components~^The message skeleton
1354 ^or <mh-dir>/components~^Rather than the standard skeleton
1355 ^$HOME/\*.mh\(ruprofile~^The user profile
1356 ^<mh-dir>/draft~^The default message file
1357 ^/usr/bin/send~^To send the composed message
1359 ^Path:~^To determine the user's MH directory
1361 ^Editor:~^To override the use of /bin/ned as the default editor
1363 ^Current-Folder:~^To find the default current folder
1365 ^<lasteditor>\-next:~^To name an editor to be used after exit from <lasteditor>
1367 `+folder' defaults to the current folder
1368 `msgs' defaults to cur
1369 `\-editor' defaults to /bin/ned
1373 If a +folder is specified, it will become
1374 the current folder, and the current message will be set to
1375 the first message being forwarded.
1379 inc \- incorporate new mail
1381 inc \%[+folder] \%[\-audit\ audit-file] \%[\-help]
1383 \fIInc\fR incorporates mail from the user's incoming mail drop
1384 (\*.mail) into an MH folder.
1385 If `+folder' isn't specified,
1386 the folder named \*(lqinbox\*(rq in the user's MH directory will be used.
1388 new messages being incorporated are assigned numbers starting
1389 with the next highest number in the folder.
1390 If the specified (or
1391 default) folder doesn't exist, the user will be queried prior to
1393 As the messages are processed, a \fIscan\fR listing
1394 of the new mail is produced.
1396 If the user's profile contains a \*(lqMsg\-Protect: nnn\*(rq entry, it
1397 will be used as the protection on the newly created messages,
1398 otherwise the MH default of 664 will be used.
1400 operations on messages, this initially assigned protection will
1401 be preserved for each message, so \fIchmod\fR(I) may be used to set a
1402 protection on an individual message, and its protection will be
1403 preserved thereafter.
1405 If the switch `\-audit audit-file' is specified (usually as a
1406 default switch in the profile), then \fIinc\fR will append a header
1407 line and a line per message to the end of the specified
1408 audit-file with the format:
1414 <scan line for first message>
1416 <scan line for second message>
1421 This is useful for keeping track of volume and source of incoming
1423 Eventually, \fIrepl\fR, \fIforw\fR, \fIcomp\fR, and \fIdist\fR may also
1424 produce audits to this (or another) file, perhaps with
1425 \*(lqMessage-Id:\*(rq information to keep an exact correspondence history.
1426 \*(lqAudit-file\*(rq will be in the user's MH directory unless a full
1429 \fIInc\fR will incorporate even illegally formatted messages into the
1430 user's MH folder, inserting a blank line prior to the offending
1431 component and printing a comment identifying the bad message.
1433 In all cases, the \*.mail file will be zeroed.
1435 ^$HOME/\*.mh\(ruprofile~^The user profile
1436 ^$HOME/\*.mail~^The user's mail drop
1437 ^<mh-dir>/audit-file~^Audit trace file (optional)
1439 ^Path:~^To determine the user's MH directory
1441 ^Folder\-Protect:~^For protection on new folders
1443 ^Msg\-Protect:~^For protection on new messages
1445 `+folder' defaults to \*(lqinbox\*(rq
1447 The folder into which the message is
1448 being incorporated will become the
1449 current folder, and the first message incorporated will be the
1451 This leaves the context ready for a \fIshow\fR
1452 of the first new message.
1456 next \- show the next message
1458 next \%[+folder] \%[\-switches\ for\ \fIl\fR] \%[\-help]
1460 \fINext\fR performs a \fIshow\fR on the next message in the
1461 specified (or current) folder.
1462 Like \fIshow\fR, it passes any
1463 switches on to the program \fIl\fR, which is called to list the
1465 This command is exactly equivalent to \*(lqshow next\*(rq.
1467 ^$HOME/\*.mh\(ruprofile~^The user profile
1469 ^Path:~^To determine the user's MH directory
1471 ^Current-Folder:~^To find the default current folder
1474 If a folder is specified, it will become the current folder, and the
1475 message that is shown (i.e., the next message in sequence)
1476 will become the current message.
1480 pick \- select messages by content
1485 ^pick~^^\0\-cc~^ \%[\-src\ +folder] \%[msgs] \%[\-help] \%[\-scan] \%[\-noscan]
1486 ^^^\0\-date~^ \%[\-show] \%[\-noshow] \%[\-nofile] \%[\-nokeep]
1488 ^^^\s+2\b'\(lt\(bv\(bv\(lk\(bv\(bv\(lb'\s0 \-search~\s+2\b'\(rt\(bv\(bv\(rk\(bv\(bv\(rb'\s0^ pattern
1490 ^^^\0\-to~^ \%[\-file \%[\-preserve] \%[\-link] \%+folder\ ... \%[\-nopreserve] \%[\-nolink] ]
1491 ^^^\0\-\-component~^ \%[\-keep \%[\-stay] \%[\-nostay] \%[+folder\ ...]\ ]
1498 pick\0\-from\0jones\0\-scan
1500 pick\0\-to\0holloway
1502 pick\0\-subject\0ned\0\-scan\0\-keep
1504 \fIPick\fR searches messages within a folder for the specified
1505 contents, then performs several operations on the selected
1508 A modified \fIgrep\fR(I) is used to perform the searching, so the
1509 full regular expression (see \fIed\fR(I)) facility is available
1511 With `\-search', pattern is used directly,
1512 and with the others, the grep pattern constructed is:
1515 \*(lq^component:\*.\*(**pattern\*(rq
1517 This means that the pattern specified for a `\-search' will be
1518 found everywhere in the message, including the header and the body,
1519 while the other search requests are limited to the single
1520 specified component.
1521 The expression `\-\-component pattern'
1523 specifying `\-search \*(lqcomponent:\*.\*(**pattern\*(rq\ '; it is used to pick
1524 a component not in the set [cc date from subject to].
1526 example is \*(lqpick \-\-reply\-to pooh \-show\*(rq.
1528 Searching is performed on a per-line basis.
1529 Within the header of
1530 the message, each component is treated as one long line, but in
1531 the body, each line is separate.
1532 Lower-case letters in the
1533 search pattern will match either lower or upper case in the
1534 message, while upper case will match only upper case.
1536 Once the search has been performed, the selected messages
1537 are scanned (see \fIscan\fR) if the `\-scan' switch is given, and
1538 then they are shown (see \fIshow\fR) if the `\-show' switch is
1540 After these two operations, the file operations (if
1541 requested) are performed.
1543 The `\-file' switch operates exactly like the \fIfile\fR command, with the
1544 same meaning for the `\-preserve' and `\-link' switches.
1546 The `\-keep' switch is similar to `\-file', but it produces a folder that
1547 is a subfolder of the folder being searched and defines it as
1548 the current folder (unless the `\-stay' flag is used).
1550 subfolder contains the messages which matched the search
1552 All of the MH commands may be used with the sub-folder
1553 as the current folder.
1554 This gives the user considerable power
1555 in dealing with subsets of messages in a folder.
1557 The messages in a folder produced by `\-keep' will always have the
1558 same numbers as they have in the source folder (i.e., the
1559 `\-preserve' switch is automatic).
1560 This way, the message
1561 numbers are consistent with the folder from which the messages
1563 Messages are not removed from the source folder
1564 (i.e., the `\-link' switch is assumed).
1565 If a `+folder' is not
1566 specified, the standard name \*(lqselect\*(rq will be used.
1568 meaning of \*(lq(select)\*(rq when it appears in the output of the
1569 \fIfolder\fR command.) If `+folder' arguments are given to
1570 `\-keep', they will be used rather than \*(lqselect\*(rq for the names
1572 This allows for several subfolders to be
1573 maintained concurrently.
1575 When a `\-keep' is performed, the subfolder becomes the current folder.
1576 This can be overridden by use
1577 of the `\-stay' switch.
1583 \02 inbox+ has 16 messages ( 3\- 22); cur= 3.
1584 \03 % pick \-from dcrocker
1586 \05 [+inbox/select now current]
1588 \07 inbox/select+ has \06 messages ( 3\- 16); cur= 3.
1591 \09 \03+ 6/20 Dcrocker Re: ned file update issue...
1592 10 \06\*p 6/23 Dcrocker removal of files from /tm...
1593 11 \08\*p 6/27 Dcrocker Problems with the new ned...
1594 12 13\*p 6/28 d\h'\w'D'u-\w'd'u'crocker newest nned \*(<<I would ap...
1595 13 15\*p 7/\05 Dcrocker nned \*(<<Last week I asked...
1596 14 16\*p 7/\05 d\h'\w'D'u-\w'd'u'crocker message id format \*(<<I re...
1597 15 % show all | print
1598 16 [produce a full listing of this set of messages on the line printer.]
1600 18 inbox+ has 16 messages ( 3\- 22); cur= 3; (select).
1602 20 inbox/select+ has 6 messages ( 3\- 16); cur= 3.
1604 22 [+inbox now current]
1606 24 inbox+ has 16 messages ( 3\- 22); cur= 3.
1609 This is a rather lengthy example, but it shows the power of the
1611 In item 1, the current folder is set to inbox.
1613 all of the messages from dcrocker are found in inbox and linked
1614 into the folder \*(lqinbox/select\*(rq.
1615 (Since no action switch is
1616 specified, `\-keep' is assumed.) Items 6 and 7 show that this
1617 subfolder is now the current folder.
1618 Items 8 through 14 are a
1619 \fIscan\fR of the selected messages (note that they are all from dcrocker
1620 and are all in upper and lower case).
1621 Item 15 lists all of the messages to
1622 the high-speed printer.
1623 Item 17 directs \fIfolder\fR to set the
1624 current folder to the parent of the selection-list folder, which
1626 Item 18 shows that this has been done.
1628 the current folder to the selection list, and 21 removes the
1629 selection-list folder and resets the current folder to the
1630 parent folder, as shown in 22 and 23.
1632 ^$HOME/\*.mh\(ruprofile~^The user profile
1634 ^Path:~^To determine the user's MH directory
1636 ^Folder\-Protect:~^For protection on new folders
1638 ^Current-Folder:~^To find the default current folder
1640 `\-src +folder' defaults to current
1641 `msgs' defaults to all
1643 `\-keep +select' is the default if no `\-scan', `\-show', or `\-file' is specified
1645 If a `\-src +folder' is specified, it will
1646 become the current folder, unless a `\-keep' with 0 or 1
1647 folder arguments makes the selection-list subfolder the
1649 Each selection-list folder will have its
1650 current message set to the first of the messages linked into
1651 it unless the selection list already existed, in which case the
1652 current message won't be changed.
1656 prev \- show the previous message
1658 prev \%[+folder] \%[\-switches\ for\ \fIl\fR] \%[\-help]
1660 \fIPrev\fR performs a \fIshow\fR on the previous message in the specified
1661 (or current) folder.
1662 Like \fIshow\fR, it passes any switches on to the
1663 program \fIl\fR, which is called to list the message.
1665 is exactly equivalent to \*(lqshow prev\*(rq.
1667 ^$HOME/\*.mh\(ruprofile~^The user profile
1669 ^Path:~^To determine the user's MH directory
1671 ^Current-Folder:~^To find the default current folder
1674 If a folder is specified, it will become current, and the
1675 message that is shown (i.e., the previous message in sequence)
1676 will become the current message.
1680 prompter \- prompting editor front end
1682 This program is not called directly but takes the place
1683 of an editor and acts as an editor front end.
1686 prompter \%[\-erase\ chr] \%[\-kill\ chr] \%[\-help]
1688 \fIPrompter\fR is an editor which allows rapid composition of
1690 It is particularly useful to network and low-speed
1691 (less than 2400 baud) users of MH.
1692 It is an MH program in that
1693 it can have its own profile entry with switches, but it can't
1694 be invoked directly as all other MH commands can; it is an editor
1695 in that it is invoked by an \*(lq\-editor prompter\*(rq switch or by the
1696 profile entry \*(lqEditor: prompter\*(rq, but functionally it is merely
1697 a text-collector and not a true editor.
1699 \fIPrompter\fR expects to be called from \fIcomp\fR, \fIrepl\fR, \fIdist\fR, or
1700 \fIforw\fR, with a draft file as an argument.
1701 For example, \*(lqcomp
1702 \-editor prompter\*(rq will call \fIprompter\fR with the file \*(lqdraft\*(rq already set
1703 up with blank components.
1704 For each blank component it finds in
1705 the draft, it prompts the user and accepts a response.
1707 <RETURN> will cause the whole component to be left out.
1709 preceding a <RETURN> will continue the response on the next line,
1710 allowing for multiline components.
1712 Any component that is non-blank will be copied and echoed to the
1715 The start of the message body is prompted by a line of
1717 If the body is non-blank, the prompt is
1718 \*(lq--------Enter additional text\*(rq.
1719 Message-body typing is terminated with
1720 a <CTRL-D> (or <OPEN>).
1721 Control is returned to the calling
1722 program, where the user is asked \*(lqWhat now?\*(rq.
1726 The line editing characters for kill and erase may be
1727 specified by the user via the arguments \*(lq\-kill chr\*(rq and \*(lq\-erase
1728 chr\*(rq, where chr may be a character; or \*(lq\\nnn\*(rq, where nnn is the
1729 octal value for the character.
1730 (Again, these may come from the
1731 default switches specified in the user's profile.)
1733 A <DEL> during message-body typing is equivalent to
1734 <CTRL-D> for compatibility with NED.
1736 component typing will abort the command that invoked
1741 ^prompter-next:~^To name the editor to be used on exit from \fIprompter\fR
1748 repl \- reply to a message
1750 repl \%[+folder] \%[msg] \%[\-editor\ editor] \%[\-inplace] \%[\-annotate]
1751 \%[\-help] \%[\-noinplace]
1754 \fIRepl\fR aids a user in producing a reply to an existing
1756 In its simplest form (with no arguments), it will set up
1757 a message-form skeleton in reply to the current message in the
1758 current folder, invoke the editor, and send the composed
1759 message if so directed.
1760 The composed message is constructed as
1765 To: <Reply-To> or <From>
1767 Subject: Re: <Subject>
1768 In-reply-to: Your message of <Date>
1769 .ti +\w'In-reply-to: 'u
1774 where field names enclosed in angle brackets (< >) indicate the
1775 contents of the named field from the message to which the reply
1777 Once the skeleton is constructed, an editor is
1778 invoked (as in \fIcomp\fR, \fIdist\fR, and \fIforw\fR).
1779 While in the editor,
1780 the message being replied to is available through a link named
1782 In NED, this means the replied-to message may be \*(lqused\*(rq
1783 with \*(lquse @\*(rq, or put in a window by \*(lqwindow @\*(rq.
1785 As in \fIcomp\fR, \fIdist\fR, and \fIforw\fR, the user will be queried
1786 before the message is sent.
1788 specified, the replied-to message will be annotated with the
1792 Replied: \*(<<Date\*(>>.
1795 \*(lqcomp \-use\*(rq may be used to pick up interrupted editing, as in
1796 \fIdist\fR and \fIforw\fR; the `\-inplace' switch annotates the message in place,
1797 so that all folders with links to it will see the annotation.
1799 ^$HOME/\*.mh\(ruprofile~^The user profile
1800 ^<mh-dir>/draft~^The constructed message file
1801 ^/usr/bin/send~^To send the composed message
1803 ^Path:~^To determine the user's MH directory
1805 ^Editor:~^To override the use of /bin/ned as the default editor
1807 ^Current-Folder:~^To find the default current folder
1809 `+folder' defaults to current
1810 `msgs' defaults to cur
1811 `\-editor' defaults to /bin/ned
1815 If a `+folder' is specified, it will become the current
1816 folder, and the current message will be set to the replied-to
1822 rmf \- remove folder
1824 rmf \%[+folder] \%[\-help]
1826 \fIRmf\fR removes all of the files (messages) within the specified
1827 (or default) folder, and then removes the directory (folder).
1829 there are any files within the folder which are not a part of MH,
1830 they will \fInot\fR be removed, and an error will be produced.
1832 folder is given explicitly or the current folder is a
1833 subfolder (i.e., a selection list from \fIpick\fR), it will be
1834 removed without confirmation.
1835 If no argument is specified and
1836 the current folder is not a selection-list folder, the
1837 user will be asked for confirmation.
1839 \fIRmf\fR irreversibly deletes messages that don't have other links,
1840 so use it with caution.
1842 If the folder being removed is a subfolder, the parent
1843 folder will become the new current folder, and \fIrmf\fR will
1844 produce a message telling the user this has happened.
1846 provides an easy mechanism for selecting a set of messages,
1847 operating on the list, then removing the list and returning to
1848 the current folder from which the list was extracted.
1850 example under \fIpick\fR.)
1852 The files that \fIrmf\fR will delete are cur, any file beginning
1853 with a comma, and files with purely numeric names.
1855 will produce error messages.
1857 \fIRmf\fR of a read-only folder will delete the \*(lqcur\-\*(rq entry from the
1858 profile without affecting the folder itself.
1860 ^$HOME/\*.mh\(ruprofile~^The user profile
1862 ^Path:~^To determine the user's MH directory
1864 ^Current-Folder:~^To find the default current folder
1866 `+folder' defaults to current, usually with confirmation
1868 \fIRmf\fR will set the current folder to the parent folder if a
1869 subfolder is removed; or if the current folder is removed,
1870 it will make \*(lqinbox\*(rq current.
1871 Otherwise, it doesn't change the
1872 current folder or message.
1876 rmm \- remove messages
1878 rmm \%[+folder] \%[msgs] \%[\-help]
1880 \fIRmm\fR removes the specified messages by renaming the message
1881 files with preceding commas.
1882 (This is the Rand-UNIX backup file
1885 The current message is not changed by \fIrmm\fR, so a \fInext\fR will
1886 advance to the next message in the folder as expected.
1888 ^$HOME/\*.mh\(ruprofile~^The user profile
1890 ^Path:~^To determine the user's MH directory
1892 ^Current-Folder:~^To find the default current folder
1894 `+folder' defaults to current
1895 `msgs' defaults to cur
1897 If a folder is given, it will become current.
1901 scan \- produce a one-line-per-message scan listing
1903 scan \%[+folder] \%[msgs] \%[\-f\&f] \%[\-header] \%[\-help]
1904 \%[\-nof\&f] \%[\-noheader]
1906 \fIScan\fR produces a one-line-per-message listing of the specified
1908 Each \fIscan\fR line contains the message number (name),
1909 the date, the \*(lqFrom\*(rq field, the \*(lqSubject\*(rq field, and, if room
1910 allows, some of the body of the message.
1915 ^ #~^^Date~^^ From~^Subject\ \ \ \ \[\*(<<Body]
1916 ^15+~^^7/\05~^^Dcrocker~^nned \*(<<Last week I asked some of
1917 ^16\ \-~^^7/\05~^^dcrocker~^message id format \*(<<I recommend
1918 ^18~^^7/\06~^^Obrien~^Re: Exit status from mkdir
1919 ^19~^^7/\07~^^Obrien~^"scan" listing format in MH
1923 The `+' on message 15 indicates that it is the current message.
1924 The `\-' on message 16 indicates that it has been
1925 replied to, as indicated by a \*(lqReplied:\*(rq component produced by
1926 an `\-annotate' switch to the \fIrepl\fR command.
1928 If there is sufficient room left on the \fIscan\fR line after the
1929 subject, the line will be filled with text from the body,
1931 \fIScan\fR actually reads each of the specified
1932 messages and parses them to extract the desired fields.
1933 During parsing, appropriate error messages will be produced if
1934 there are format errors in any of the messages.
1936 The `\-header' switch produces a header line prior to the \fIscan\fR
1937 listing, and the `\-f\&f' switch will cause a form feed to be
1938 output at the end of the \fIscan\fR listing.
1941 ^$HOME/\*.mh\(ruprofile~^The user profile
1943 ^Path:~^To determine the user's MH directory
1945 ^Current-Folder:~^To find the default current folder
1948 `+folder' defaults to current
1949 `msgs' defaults to all
1953 If a folder is given, it will become current.
1955 message is unaffected.
1959 send \- send a message
1961 send \%[file] \%[\-draft] \%[\-verbose] \%[\-format] \%[\-msgid]
1962 \%[\-help] \%[\-noverbose] \%[\-noformat] \%[\-nomsgid]
1964 \fISend\fR will cause the specified file (default <mh-dir>/draft) to
1965 be delivered to each of the addresses in the \*(lqTo:\*(rq, \*(lqcc:\*(rq, and \*(lqBcc:\*(rq
1966 fields of the message.
1967 If `\-verbose' is specified, \fIsend;\fR
1968 will monitor the delivery of local and net mail.
1970 argument will query whether the draft is the intended file, whereas
1971 `\-draft' will suppress this question.
1972 Once the message has
1973 been mailed (or queued) successfully, the file will be renamed
1974 with a leading comma, which allows it to be retreived until the
1975 next draft message is sent.
1976 If there are errors in the
1977 formatting of the message, \fIsend;\fR will abort with a (hopefully)
1978 helpful error message.
1980 If a \*(lqBcc:\*(rq field is encountered, its addresses will be used for
1981 delivery, but the \*(lqBcc:\*(rq field itself will be deleted from all
1982 copies of the outgoing message.
1984 Prior to sending the message, the fields \*(lqFrom: user\*(rq, and
1985 \*(lqDate: now\*(rq will be prepended to the message.
1987 specified, then a \*(lqMessage-Id:\*(rq field will also be added to the
1989 If the message already contains a \*(lqFrom:\*(rq field, then a
1990 \*(lqSender: user\*(rq field will be added instead.
1991 (An already existing
1992 \*(lqSender:\*(rq field will be deleted from the message.)
1994 If the user doesn't specify `\-noformat', each of the entries in
1995 the \*(lqTo:\*(rq and \*(lqcc:\*(rq fields will be replaced with \*(lqstandard\*(rq format
1997 This standard format is designed to be usable by all
1998 of the message handlers on the various systems around the
2001 If an \*(lqFcc: folder\*(rq is encountered, the message will be copied
2002 to the specified folder in the format in which it will appear to any
2003 receivers of the message.
2004 That is, it will have the prepended
2005 fields and field reformatting.
2007 If a \*(lqDistribute-To:\*(rq field is encountered, the message
2008 is handled as a redistribution message (see \fIdist\fR for
2009 details), with \*(lqDistribution-Date: now\*(rq and \*(lqDistribution-From: user\*(rq
2012 ^$HOME/\*.mh\(ruprofile~^The user profile
2014 ^Path:~^To determine the user's MH directory
2016 `file' defaults to draft
2021 \fISend\fR has no effect on the current message or folder.
2025 show \- show (list) messages
2027 show \%[+folder] \%[msgs] \%[\-pr] \%[\-nopr] \%[\-draft] \%[\-help]
2028 \%[\fIl\fR\ or\ \fIpr\fR\ switches]
2030 \fIShow\fR lists each of the specified messages to the standard
2031 output (typically, the terminal).
2032 The messages are listed exactly
2033 as they are, with no reformatting.
2034 A program called \fIl\fR is
2035 invoked to do the listing, and any switches not recognized by
2036 \fIshow\fR are passed along to \fIl\fR.
2038 If no \*(lqmsgs\*(rq are specified, the current message is used.
2040 more than one message is specified, \fIl\fR will prompt for a
2041 <return> prior to listing each message.
2043 \fIl\fR will list each message, a page at a time.
2045 page is reached, \fIl\fR will ring the bell and wait for a <RETURN>
2047 If a <return> is entered, \fIl\fR will clear the
2048 screen before listing the next page, whereas <CTRL-D> will not.
2049 The switches to \fIl\fR are
2050 `\-p#' to indicate the page length in lines, and `\-w#' to
2051 indicate the width of the page in characters.
2053 If the standard output is not a terminal, no queries are made,
2054 and each file is listed with a one-line header and two lines of
2057 If `\-pr' is specified, then \fIpr\fR(I) will be invoked rather than
2058 \fIl\fR, and the switches (other than `\-draft') will be passed
2060 \*(lqShow \-draft\*(rq will list the file <mh-dir>/draft if it
2063 ^$HOME/\*.mh\(ruprofile~^The user profile
2064 ^/bin/l~^Screen-at-a-time list program
2065 ^/bin/pr~^\fIpr\fR(I)
2067 ^Path:~^To determine the user's MH directory
2069 ^Current-Folder:~^To find the default current folder
2071 `+folder' defaults to current
2072 `msgs' defaults to cur
2075 If a folder is given, it will become the current message.
2077 listed will become the current message.
2080 \" On to the Appendices
2088 .de $c \" Major Heading printer
2093 .b "\\s12\\$1\\s0" \" 12 Point Bold Header
2095 \ \ \ \\n(ch.\\ \\ \\$2
2097 .sp 45p \" 45 points or about 1/2 inch
2101 .$c "COMMAND SUMMARY\\**" "Command Summary"
2103 \**All commands accept a \-help switch.
2108 comp \%[\-editor\ editor] \%[\-form\ formfile] \%[file] \%[\-use]
2109 \%[\-nouse] \%[\-help]
2112 dist \%[+folder] \%[msg] \%[\-form\ formfile] \%[\-editor\ editor]
2113 \%[\-annotate] \%[\-noannotate]
2114 \%[\-inplace] \%[\-noinplace]
2118 file \%[\-src\ +folder] \%[msgs] \%[\-link] \%[\-preserve] \%+folder\ ...
2119 \%[\-nolink] \%[\-nopreserve]
2120 \%[\-file\ file] \%[\-nofile] \%[\-help]
2123 folder \%[+folder] \%[msg] \%[\-all] \%[\-fast] \%[\-nofast] \%[\-up] \%[\-down]
2124 \%[\-header] \%[\-noheader] \%[\-total] \%[\-nototal] \%[\-pack] \%[\-nopack]
2128 forw \%[+folder] \%[msgs] \%[\-editor\ editor] \%[\-form\ formfile]
2129 \%[\-annotate] \%[\-noannotate]
2130 \%[\-inplace] \%[\-noinplace]
2134 inc \%[+folder] \%[\-audit\ audit-file] \%[\-help]
2137 next \%[+folder] \%[\-switches\ for\ \fIl\fR] \%[\-help]
2142 ^pick~^^\0\-cc~^ \%[\-src\ +folder] \%[msgs] \%[\-help] \%[\-scan] \%[\-noscan]
2143 ^^^\0\-date~^ \%[\-show] \%[\-noshow] \%[\-nofile] \%[\-nokeep]
2145 ^^^\s+2\b'\(lt\(bv\(bv\(lk\(bv\(bv\(lb'\s0 \-search~\s+2\b'\(rt\(bv\(bv\(rk\(bv\(bv\(rb'\s0^ pattern
2147 ^^^\0\-to~^ \%[\-file \%[\-preserve] \%[\-link] \%+folder\ ... \%[\-nopreserve] \%[\-nolink] ]
2148 ^^^\0\-\-component~^ \%[\-keep \%[\-stay] \%[\-nostay] \%[+folder\ ...]\ ]
2153 prev \%[+folder] \%[\-switches\ for\ \fIl\fR] \%[\-help]
2156 prompter \%[\-erase\ chr] \%[\-kill\ chr] \%[\-help]
2159 repl \%[+folder] \%[msg] \%[\-editor\ editor] \%[\-inplace] \%[\-annotate]
2160 \%[\-help] \%[\-noinplace]
2164 rmf \%[+folder] \%[\-help]
2167 rmm \%[+folder] \%[msgs] \%[\-help]
2170 scan \%[+folder] \%[msgs] \%[\-f\&f] \%[\-header] \%[\-help]
2171 \%[\-nof\&f] \%[\-noheader]
2174 send \%[file] \%[\-draft] \%[\-verbose] \%[\-format] \%[\-msgid]
2175 \%[\-help] \%[\-noverbose] \%[\-noformat] \%[\-nomsgid]
2178 show \%[+folder] \%[msgs] \%[\-pr] \%[\-nopr] \%[\-draft] \%[\-help]
2179 \%[\fIl\fR\ or\ \fIpr\fR\ switches]
2182 \".+c "MESSAGE FORMAT" "Message Format"
2188 .$c "MESSAGE FORMAT" "Message Format"
2190 This section paraphrases the format of ARPANET text messages
2197 are expected to consist of lines of text.
2198 Graphics and binary data are not handled.
2200 No data compression is accepted.
2207 A general \*(lqmemo\*(rq framework is used.
2208 A message consists of a
2209 block of information in a rigid format, followed by general
2210 text with no specified format.
2211 The rigidly formatted first
2212 part of a message is called the header, and the free-format
2213 portion is called the body.
2214 The header must always
2215 exist, but the body is optional.
2220 Each header item can be viewed as a single logical line of ASCII
2222 If the text of a header item extends across several
2223 real lines, the continuation lines are indicated by leading
2226 Each header item is called a component and is composed of a
2227 keyword or name, along with associated text.
2228 The keyword begins at the
2229 left margin, may contain spaces or tabs, may not exceed 63
2230 characters, and is terminated by a colon (:).
2232 components (as identified by their keywords) must follow rigidly
2233 defined formats in their text portions.
2235 The text for most formatted components (e.g., \*(lqDate:\*(rq and \*(lqMessage-Id:\*(rq)
2236 is produced automatically.
2237 The only ones entered by the
2238 user are address fields such as \*(lqTo:\*(rq, \*(lqcc:\*(rq, etc.
2240 are assigned mailbox names and host computer specifications.
2242 rough format is \*(lqmailbox at host\*(rq, such as \*(lqBorden at Rand-Unix\*(rq.
2243 Multiple addresses are separated by commas.
2245 assumed to be the local host.
2251 A blank line signals that all following text up to the end of the file
2253 (A blank line is defined as a pair of
2254 <end-of-line> characters with \fIno\fR characters in between.)
2255 No formatting is expected or enforced within the body.
2257 Within MH, a line consisting of dashes is accepted
2258 as the header delimiter.
2259 This is a cosmetic feature applying
2260 only to locally composed mail.
2262 .$c "MESSAGE NAME BNF" "Message Name BNF"
2267 ^msgs~^^:=~^^msgspec~^|
2270 ^msgspec~^^:=~^^msg~^|
2274 ^msg~^^:=~^^msg-name~^|
2277 ^msg-name~^^:=~^^\*(lqfirst\*(rq~^|
2278 ^^^^^\*(lqlast\*(rq~^|
2279 ^^^^^\*(lqcur\*(rq~^|
2280 ^^^^^\*(lq\*.\*(rq~^|
2281 ^^^^^\*(lqnext\*(rq~^|
2284 ^msg-range~^^:=~^^msg\*(lq-\*(rqmsg~^|
2287 ^msg-sequence~^^:=~^msg\*(lq:\*(rqsigned-number
2289 ^signed-number~^^:=~^^\*(lq+\*(rq<number>~^|
2290 ^^^^^\*(lq\--\*(rq<number>~^|
2296 Where <number> is a decimal number in the range 1 to 999.
2298 Msg-range specifies all of the messages in the given range
2299 and must not be empty.
2301 Msg-sequence specifies up to <number> of messages, beginning
2302 with \*(lqmsg\*(rq (in the case of first, cur, next, or <number>),
2303 or ending with \*(lqmsg\*(rq (in the case of prev or last).
2304 +<number> forces \*(lqstarting with msg\*(rq, and \-<number> forces
2305 \*(lqending with number\*(rq.
2306 In all cases, \*(lqmsg\*(rq must exist.
2308 .$c "EXAMPLE OF SHELL COMMANDS" "Example of Shell Commands"
2310 UNIX commands may be mixed with MH commands to obtain additional
2312 These may be prepared as files (known as
2313 shell command files or
2315 The following example is a useful function that
2316 illustrate the possibilities.
2317 Other functions, such as copying,
2318 deleting, renaming, etc., can be achieved in a similar fashion.
2325 (scan\0\-f\&f\0\-header;\0show\0all\0\-pr\0\-f)\0|\0print
2327 produces a scan listing of the current folder, followed by a
2328 form feed, followed by a formatted listing of all messages
2329 in the folder, one per page.
2330 Omitting \*(lq\-pr\0\-f\*(rq will cause the
2331 messages to be concatenated, separated by a one-line header
2332 and two blank lines.
2334 You can create variations on this theme, using \fIpick\fR.
2340 .b \\s12REFERENCES\\s0
2348 1. Crocker, D. H., J. J. Vittal, K. T. Pogran, and D. A. Henderson, Jr.,
2349 \*(lqStandard for the Format of ARPA Network Test Messages,\*(rq \fIArpanet Request
2350 for Comments\fR, No. 733, Network Information Center 41952, Augmentation
2351 Research Center, Stanford Research Institute,
2355 2. Thompson, K., and D. M. Ritchie, \*(lqThe UNIX Time-sharing System,\*(rq
2356 \fICommunications of the ACM\fR, Vol. 17, July 1974, pp. 365-375.
2359 3. McCauley, E. J., and P. J. Drongowski, \*(lqKSOS\-The Design of a Secure
2360 Operating System,\*(rq \fIAFIPS Conference Proceedings\fR,
2361 National Computer Conference,
2362 Vol. 48, 1979, pp. 345-353.
2365 4. Crocker, David H., \fIFramework and Functions of the \*(lqMS\*(rq Personal
2366 Message System\fR, The Rand Corporation, R-2134-ARPA, December 1977.
2369 5. Thompson, K., and D. M. Ritchie, \fIUNIX Programmer's Manual\fR, 6th ed.,
2370 Western Electric Company, May 1975 (available only to UNIX licensees).
2373 6. Bilofsky, Walter, \fIThe CRT Text Editor NED\-Introduction and
2374 Reference Manual\fR, The Rand Corporation, R-2176-ARPA, December 1977.
2378 .b "\\s12\\$1\\s0" \" 12 Point Bold Header
2391 This report describes a system for dealing with messages transmitted on a
2392 computer. Such messages might originate with other users of the same
2393 computer or might come from an outside source through a network to which the user's
2394 computer is connected. Such computer-based message systems are
2395 becoming increasingly widely used, both within and outside the Department
2398 The message handling system MH was developed for two reasons.
2399 One was to investigate some
2400 research ideas concerning how a message system might take advantage of
2401 the architecture of the UNIX time-sharing operating system for
2402 Digital Equipment Corporation PDP-11 and VAX computers, and the special
2403 features of UNIX's command-level interface with the user (the
2404 \*(lqshell\*(rq). The other reason was to provide a better and more
2405 adaptable base than that of conventional designs
2406 on which to build a command and control message system.
2407 The effort has succeeded in both
2408 regards, although this report mainly describes the message system itself
2409 and how it fits in with UNIX. The main research results are being
2410 described and analyzed in a forthcoming Rand report.
2411 The system is currently being used as part
2412 of a tactical command and control \*(lqlaboratory,\*(rq which is also being described
2413 in a separate report.
2415 The present report should be of interest to three groups of readers. First,
2416 it is a complete reference manual for the users of MH (although
2417 users outside of Rand must take into
2418 account differences from the local Rand operating system). Second, it should be
2419 of interest to those who have a general knowledge of computer-based
2420 message systems, both in civilian and military applications. Finally,
2421 it should be of interest to those who build large subsystems that
2422 interface with users, since it illustrates a new approach to such
2425 The MH system was developed by the first
2426 author, using an approach suggested by the other two authors.
2427 Valuable assistance was provided by Phyllis Kantar in the later
2428 stages of the system's implementation.
2430 contributed to the ideas included in this system, particularly
2431 Robert Anderson and David Crocker.
2432 In addition, valuable experience
2433 in message systems, and a valuable source of ideas, was available
2434 to us in the form of a previous message system for UNIX called
2435 MS, designed at Rand by David Crocker.
2437 This report was prepared as part of the Rand project entitled \*(lqData
2438 Automation Research\*(rq, sponsored by Project AIR FORCE.
2442 Electronic communication of text messages is becoming
2443 commonplace. Computer-based message systems\-software
2444 packages that provide tools for dealing with messages\-are used in many
2445 contexts. In particular, message systems are becoming
2446 increasingly important in command and control and intelligence
2449 This report describes a message handling system called MH.
2450 This system provides the user
2451 with tools to compose, send, receive, store, retrieve, forward, and
2452 reply to messages. MH has been built on the UNIX time-sharing system,
2453 a popular operating system developed for the DEC PDP-11 and VAX classes of
2456 A complete description of MH is given for users of
2457 the system. For those who do not intend to use the system, this description
2458 gives a general idea of what a message system is like. The system involves
2459 some new ideas about how large subsystems can be constructed. These design
2460 concepts and a comparison of MH with other message systems
2461 will be published in a forthcoming Rand report.
2463 The interesting and unusual features of MH include the
2464 following: The user command interface to MH is the UNIX \*(lqshell\*(rq
2465 (the standard UNIX command interpreter). Each separable
2466 component of message handling, such as message composition or
2467 message display, is a separate command. Each program is driven from
2468 and updates a private user environment, which is stored as a file
2469 between program invocations. This private environment also contains
2470 information to \*(lqcustom tailor\*(rq MH to the individual's tastes. MH
2471 stores each message as a separate file under UNIX, and it utilizes the
2472 tree-structured UNIX file system to organize groups of files within
2473 separate directories or \*(lqfolders.\*(rq All of the UNIX facilities
2474 for dealing with files and directories, such as
2475 renaming, copying, deleting, cataloging, off-line printing, etc., are
2476 applicable to messages and directories of messages (folders). Thus,
2477 important capabilities needed in a message system are available in MH without
2478 the need (often seen in other message systems) for code that
2479 duplicates the facilities of the supporting operating system.
2480 It also allows users familiar with the shell to use MH with minimal
2486 .b \\s12CONTENTS\\s0
2491 .bp \" Spare numbers for cut and paste work!