DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T U

⟦c4511a58d⟧ TextFile

    Length: 31420 (0x7abc)
    Types: TextFile
    Names: »Users.guide«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/elm/doc/Users.guide« 

TextFile

.PH ""
.tm I trust we've run this through tbl first...
\"
\"  Users guide to the ELM mail system.
\"  format with 'tbl Users.guide | troff -mm > Users.fmtd
\"  or something similar.
\"
\"  (C) Copyright 1986 Dave Taylor
\"
\"  Last update: January 19th, 1987
\"
.PF ""
\"  Define the big box macro for troff
.de eb
.sp -1	
.nf
\h'-.5n'\L'|\\nau-1'\l'\\n(.lu+1n\(ul'\L'-|\\nau+1'\l'|0u-.5n\(ul'
.fi
..
.ds HF 3  3 
.ds HP 12 12
.SA 1
.nr Hy 1
.nr Pt 1
.nr Pi 8
.lg 1
.HM 1 1
.rs
.sp 5
.ce 99
.ps 20
\fBElm Users Guide\fR
.sp 2
.ps 12
\fIA painless introduction to electronic mail 
using the \fBElm\fP mailer\fR
.sp 5
Dave Taylor
.sp 
Hewlett-Packard Laboratories
1501 Page Mill Road
Palo Alto CA
94304
.sp
email: taylor\s10@\s12hplabs.HP.COM or hplabs!taylor
.ps 10
.sp 7
\fBABSTRACT\fR
.ce 0
.sp
.DS CB F
While various parts of the Unix system have been
updated into the `CRT' age (rather than the `teletype')
electronic mail systems haven't.  This document 
presents \fIElm\fR, a sophisticated
full-screen mail system for interactive use.
\fIElm\fR offers all the features of
\fI/bin/mail\fR, \fIBerkeley Mail\fR, \fIuumail\fR, \fINMail\fR and
the AT&T Mail family of Unix mailers (namely \fIPMX/TERM\fR) in a
unified and intuitive fashion.
.DE
.sp 5
.ce
.ps 18
\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
.ps 10
.SK
.ce 99
.ps 14
\fBElm Users Guide\fR
.ps 10
.sp
(version 1.5)
.sp 2
Dave Taylor
Hewlett-Packard Laboratories
1501 Page Mill Road
Palo Alto CA
94304
.sp
email: taylor@hplabs.HP.COM or hplabs!taylor
.sp 2
\*(DT
.ce 0
.nr P 1
.PH "'Elm Users Guide''Version 1.5'"
.PF "''Page \\\\nP''"
.sp 3
.H 1 "Introduction"
.P 1
The Unix\v'-.3'\s5TM\s10\v'.3' operating system was originally 
written on a small PDP machine
to work with teletypewriters.  Consequently, all the original software for
the operating system was written with a `tty' in mind - they were all 
line oriented, rather than screen oriented.
.P
Gradually this began to change, and, with the addition of the Berkeley
.I vi
visual shell to the 
.I ed
line editor, the trend began to be brought to the attention of 
Unix systems designers.  
.FS " "
Historical note: shrewd users will recognize this as being based on 
the old Unix mailer
.lg 0
\fIMsg.\fR
.lg 1
The name was changed to avoid a conflict with an old DEC-20
mailer, and because the new name stands for \fBEL\fRectronic \fBM\fRail,
which I think works out better!
.FE
.P
Unfortunately, however, this transition was far too subtle for most software 
designers, and today there are precious few programs distributed with the
Unix system, either from Berkeley, AT&T or variations thereof,
that are full screen oriented.
.P
Consequently, after becoming more and more disenchanted
with the existing electronic mail facilities (\fImail\fR
and \fIBerkeley Mail\fR, both of which are line-oriented) 
I decided to write my own!  Once the ball was rolling it
became hard not to enhance it to death, especially as I
became more and more familiar with various different mail
systems, but the result, I hope, is a solid, unified interface
to electronic mail suitable for almost any environment.
.P
The 
.B Elm
mail system comes with five documents, entitled;
\fIThe Elm Users Guide\fR, which you're holding,
\fIThe Elm Reference Guide\fR, \fIThe Elm Alias Users Guide\fR,
\fIThe Elm Forms Mode Guide\fR, and \fIThe Elm Configuration 
Guide\fR.  The names of each indicate
what they discuss (not unreasonably).
.P
This particular document contains;
this introduction, a tutorial session with the mailer, a
discussion of non-interactive uses of \fBElm\fR,
a brief foray into the \fBElm\fR utilities,
and finally, credits and references.
.P
The \fIElm Reference Guide\fR contains;
a discussion of the \fI.elmrc\fR file,
starting options of 
.B Elm,
outgoing mail processing,
responses of various commands,
the mail archive file,
the Limit command,
the Alias system,
system aliases etc,
more on the utilities,
and a section for expert users and debugging.
.P
The \fIElm Alias Users Guide\fR contains;
a further discussion of \fIuser aliases\fR
and \fIgroup aliases\fR,  System aliases,
how to edit and install new aliases,
the hostname routing database,
the domain routing database,
and so on.
.P
The \fIElm Forms Mode Guide\fR is a tutorial
for those interested in sending AT&T Mail-style
forms to each other.
.P
The \fIElm Configuration Guide\fR discusses how
to install and custom configure the mail system to 
your local machine.  This is probably only of 
interest to system adminstrators or those interested
in modifying the source code, which should be freely
available.  It is recommended that the \fIconfigure.sh\fR
script be used for most standard installations.
.sp
.P
Any comments or problems with any of the documentation or the program
itself are welcome: all installed systems should have an alias
that will ensure that I receive any mail sent to `elm'.
.sp 2
.H 1 "The Main System"
.P 1
Upon entry to the program, the main screen will be 
displayed as below;
\" display start, constant width, remember loc for BOX
.DS CB
.mk a
.mk a
.ce
Mailbox is '/usr/mail/mymail' with 15 messages.  [Elm 1.5]

.TS
r c r l l l l.
 ->		1	Apr 3	rob	(24)	Doing anything tonight?
		2	Apr 5	Joe	(154)	bug in gammon game
		3	Apr 5	root	(13)
		4	Apr 6	root	(7)	(continuation of previous message)
	U	5	Apr 8	decvax!mouse	(68)	Re: net.music article decvax:495
		6	Apr 13	John Jacobs	(194)	How can you hate RUSH?
		7	Apr 15	kevin	(27)	More software requests
	N	8	Apr 18	games	(26)	Hi there
	N	9	Apr 18	Don Knuth	(354)	Your version of TeX...
	N	10	Apr 23	Carl Smith	(53)	(More silly stuff
	N	11	Apr 24	jad@hpcnoe	(84)	Chico?  Why go there?
	N	12	Apr 24	Larry Fenske	(49)	hi there...
.TE
.sp
.ce 3
You can use any of the following commands by pressing the first character;
D)elete mail,  M)ail a message,  R)eply to mail,  U)ndelete, or Q)uit
To read a message, press <return>.  j = move arrow down, k = move arrow up

Command : @
.sp 2
\" draw box, proportional Roman font back, display end
.eb
.DE
.P 0
There are a number of things to notice about this screen;
.BL 4
.LI
First off, it's quite possible that on your screen the current message will
be indicated by an inverse bar rather than an arrow. 
Don't worry about it - it's just harder to have an inverse
bar in a document than an arrow!
.LI
The top line always displays the current mail file, 
the number of messages in the file, and the current 
.B Elm
version number.
.LI
The arrow (``->'') (or bar) always points to the current message.  
.LI
The first few characters on each line can indicate the following:
.VL 6 5
.LI "U"
-  an \fIU\fRrgent message
.LI "N"
-  a \fIN\fRew message since you last read mail
.LI "E"
-  an \fIE\fRxpired message (not yet implemented)
.LI "A"
-  an \fIA\fRction is associated with the message
.LI "D"
-  the message is marked for \fID\fReletion
.LI "+"
-  the message is \fITagged\fR.
.LE
.LI
Continuing from left to right, the next field is the message
number.  For the most part you can ignore these unless you want
to quickly move to a specific message (as we'll see later)
.LI
The date associated with each message is the date the person
.I sent 
the message.  
.LI 
The next field displayed indicates who the message is from.  
\fBElm\fR will try to display the \fIname\fR of the person who 
sent the message, rather than the their return address/login.  
Some systems don't generate the correct headers, though, hence 
messages like number 11, where it's
the return address of the sender...
.LI
The number in parentheses is the total number of lines in the message.
.LI
The final field is the subject of the message.  Notice
that message 3 has no subject.
.LI
A maximum of twelve messages are displayed at one time \*F.
.FS
On terminals with greater than 25 lines, more messages will be 
displayed automatically.  Further, if you choose to turn off
the Menu display, you can have more too.
.FE
Further into
the document we'll learn how to change 'pages' in the mailbox. 
.LI
The three line Menu display will always 
indicate the relevant commands.  There are actually two possible 
menus that can be displayed, based
on the \fIuser level\fR as set from either the O)ptions screen or
the \fI.elmrc\fR file.  The second menu, for more advanced users, 
lists more options;
.sp
.ce 3
|=pipe, !=shell, ?=help, <n>=set current to n, /=search pattern
A)lias, C)hange mailbox, D)elete, E)dit, F)orward, G)roup reply, M)ail, 
N)ext, O)ptions, P)rint, R)eply, S)ave, T)ag, Q)uit, U)ndelete, or eX)it
.sp 
.LI
Finally, the '@' character indicates where the cursor would be, awaiting
your input.
.LE
.P 0
The typical action at this point is to use the 
.I <return>
key to read the current message.  This particular option actually isn't
noted in the Menu display, but choosing the '?=help' option will
inform you of a number of choices other than those in the 
basic menu!
.P 0
Pressing this key will clear the screen and display the 
message using the local pager 
(see \fIpager\fR in the \fI.elmrc\fR file).
.P 0
While reading is perhaps the most fundamental function that the
.B Elm
program performs, there are a number of other options available,
namely;
\" ensure we get a reasonable chunk of this table on the page...
.ne 10
.sp
.VL 25 0 1
.LI "Command"
Action
.LE
.sp
.VL 22 3 1
.LI "|"
Pipe current message or tagged messages to specified system command.
.LI "!"
Shell escape.
.LI "?"
Help mode - any key pressed will be explained.
.LI "+, <space>,"
.LI "  or <NEXT>"
Next page of headers
.LI "-, or <PREV>"
Previous page of headers
.LI "=, or <HOME>"
Set current message to 1
.LI "*, or "
.LI " <SHIFT>-<HOME>"
Set current to last message.
.LI "<n>"
Set current message to number n.
.LI "/"
Search for pattern in subject/from lines.
.LI "//"
Search for pattern in entire mailbox.
.LI "<"
Scan message for calendar entries\*F
.FS 
Some sites might opt not to have this feature
available.
.FE
.LI ">"
A synonym for `s' - \fIsave\fR message or messages.
.sp
.LI "a"
Alias, change to 'alias' mode 
.LI "b"
Bounce - remail message**
.LI "c"
Change to new mail file
.LI "d"
Delete current message
.LI "<control>-D"
Delete all messages matching specified pattern
.LI "e"
Edit mailbox file, resyncing upon reentry.
.LI "f"
Forward message to specified user\*F
.FS
The difference between \fIForward\fR and \fIBounce\fR is rather 
subtle -- a forwarded message is ``from'' you, with the
original message included, whereas a bounced message
is still from the original sender.  
.FE
.LI "g" 
Group reply - reply to everyone who received the current message
.LI "h"
Display message + headers
.LI "j"
Increment current message by one
.LI "k"
Decrement current message by one
.LI "l"
Limit displayed messages based on the specified criteria.  
.LI "m"
Mail to arbitrary user(s)
.LI "n or <return>"
Next message (Read current, then increment)
.LI "o"
Alter current system options.
.LI "p"
Print current message or tagged messages.
.LI "q"
Quit - mail deleted, saved in mbox or left.
.LI "r"
Reply to the author of current message
.LI "s"
Save current message or tagged messages to file
.LI "t"
Tag current message.
.LI "<control>-T"
Tag all messages matching specified pattern.
.LI "u"
Undelete current message
.LI "<control>-U"
Undelete all messages matching specified pattern.
.LI "x"
Exit - don't record as read, don't save...
.sp
.LI "^L"
Rewrite screen.
.LI "^M (<return>)"
Read current message
.LI "^Q, DEL"
Exit - don't record as read, don't save...
.LE
.sp
.P 0
That are all the commands available at the main level of the
.B Elm
program!  Easy to remember, right?
.sp 2
\" again, make sure we start on a new page please
.ne 10
.P 0
As an example, let's enter a series of commands and indicate
what the display would be after each one;
.sp
.P 0
First off, let's go to the next page of mail with `\fI<space>fR';
.DS CB
.mk a
.ce
Mailbox is '/usr/mail/mymail' with 15 messages.  [Elm 1.5]

.TS
r c r l l l l.
 ->	N	13	Apr 3	Jack	(17)	Wanna buy some albums cheap?
	N	14	Apr 5	Jack	(8)	Cancel the previous offer!
	N	15	Apr 5	sdcsvax!dx	(420)	Moving day (long) 
.TE
     
  
     
     
  
  
  
  
  

.ce 3
You can use any of the following commands by pressing the first character;
D)elete mail,  M)ail a message,  R)eply to mail,  U)ndelete, or Q)uit
To read a message, press <return>.  j = move arrow down, k = move arrow up

Command : @
.sp 2
.eb
.DE
.P 0
Let's read the new current message, 13, by typing <\fIreturn\fR>.
.DS CB
.mk a
.tl 'Message #13 from Jack''Mailed April 3, 1985 at 8:45 pm'

I just found my old Lawrence Welk Platinum Hits series of albums and recall you 
saying that you really enjoy listening to that sort of drivel...

So, do you want to buy them off of me before I make ashtrays out of them (or frisbees...)?

                                                  Humourously,
                                                                  Jack 






Press <return> to return to Elm: @

.eb
.DE
.P 0
Needless to say, we can't let this message go by without replying!
So let's press <\fIreturn\fR>, then use the
.I "reply"
command to respond.
.P 0
After pressing the `\fIr\fR' key, the program asks if a copy of the 
message is desired (the character under the cursor indicates the
default if <return> is pressed.  In this case, the default is 'no');
.sp
.nf
    copy message? (y/n) @
.fi
.P 0
We choose to answer no, so press the `\fIn\fR' key.  Next 
.B Elm
displays whom the message will be sent to\*F and 
.FS
The default action of the mailer is to display just the name
of the person or persons the message will be sent to.  If the actual
address is also desired, then the user needs to include "names=OFF" in
their \fI.elmrc\fR file.  See the \fIElm Reference Guide\fR for
more information on this.
.FE
verifies that the subject is okay;
.sp
.tl '    Command: Reply''To: Jack    '
.tl '    Subject of Message: Re: Wanna buy some albums cheap?@'
.sp
Typing anything other than <return> will allow us
to change the subject to something more appropriate.
We decide, however, to leave it be and press <\fIreturn\fR> again.
.P 0
The program then puts us
in the (default)
.I vi
editor with a newly created file
.P 0
After having entered a suitable reply, and left the editor,
the 
.B Elm
system then verifies that we really want to send the message with;
.sp
    Are you sure you want to send this message? (y/n) @
.sp
To which our response is `\fIy\fR' for 'yes'.  It then sends the message off
to Jack, who will receive it hopefully quite soon (or at least
before he makes ashtrays out of the albums!)  
.sp
.P 0
Message 13 is still the current message,
so, now let's save it and the one after it from Jack, message 14,
by \fItagging\fR them both.  We press `\fIt\fR' for \fItag\fR, which 
puts the '+' tag indicator on this message, move to the next
message with the `\fIj\fR' key, then press `\fIs\fR' for \fIsave\fR
.sp
This prompts for the file to save to;
.nf

   Save messages to: @

.fi
to which we answer \fI=jack\fR.  The two messages are then saved to
the specified file, marked for deletion, and the \fItags\fR are
removed from them.
.P 0
The screen is now;
.DS CB
.mk a
.ce
Mailbox is '/usr/mail/mymail' with 15 messages.  [Elm 1.5]
.nf

.TS
r c r l l l l.
 ->	\ D	13	Apr 3	Jack	(17)	Wanna buy some albums cheap?
	\ D	14	Apr 5	Jack	(8)	Cancel the previous offer!
	N	15	Apr 5	sdcsvax!dx	(420)	Moving day (long) 
.TE
.sp 10    
.ce 3
You can use any of the following commands by pressing the first character;
D)elete mail,  M)ail a message,  R)eply to mail,  U)ndelete, or Q)uit
To read a message, press <return>.  j = move arrow down, k = move arrow up

Command : @
.sp 2
.eb
.DE
.P 0
Now lets go back to the first page of messages by typing '\fI=\fR';
.DS CB
.mk a
.ce
Mailbox is '/usr/mail/mymail' with 15 messages.  [Elm 1.5]
.nf

.TS
r c r l l l l.
 ->		1	Apr 3	rob	(24)	Doing anything tonight?
		2	Apr 5	Joe	(154)	bug in gammon game
		3	Apr 5	root	(13)
		4	Apr 6	root	(7)	(continuation of previous message)
	U	5	Apr 8	decvax!mouse	(68)	Re: net.music article decvax:495
		6	Apr 13	John Jacobs	(194)	How can you hate RUSH?
		7	Apr 15	kevin	(27)	More software requests
	N	8	Apr 18	games	(26)	Hi there
	N	9	Apr 18	Don Knuth	(354)	Your version of TeX...
	N	10	Apr 23	Carl Smith	(53)	(More silly stuff
	N	11	Apr 24	jad@hpcnoe	(84)	Chico?  Why go there?
	N	12	Apr 24	Larry Fenske	(49)	hi there...
.TE
.sp
.ce 3
You can use any of the following commands by pressing the first character;
D)elete mail,  M)ail a message,  R)eply to mail,  U)ndelete, or Q)uit
To read a message, press <return>.  j = move arrow down, k = move arrow up

Command : @
.sp 2
.eb
.DE
.P 0
Note five not only looks mildly interesting but it's an 
\fBU\fRrgent message too!  So 
let's read it by typing \fI5<return>\fR
to make that the current message, and press <\fIreturn\fR> again
to read it.  After reading
the message we decide that it's utterly worthless, not even worth
replying to, let alone saving, so we'll mark it
for future deletion with the `d' \fIdelete\fR key.
.P 0
A `D' is put next to the message now...
.P 0
Before we finish up, we suddenly remember that one of the 
messages was supposed to be about how to write decent 
documentation for Unix software, so let's try to find it...
.P 0
First off, we'll move back to message one with the `\fI=\fR'
key and then use the `/' \fIpattern matching\fR command:
.nf

    Command : Pattern               	/ = match anywhere in messages
    Match pattern: @

.fi
we'll type in \fIdocument\fR (it's case insensitive) and see if the system 
can find it.  After a brief second or two it returns 'pattern not found.'
Hmm...maybe it's not either the from or the subject of
any of the messages...In case that's true, let's try using 
the \fImatch anywhere in message\fR command;
.P 0
We again type `/' for \fIpattern matching\fR;
.nf

    Command : Pattern              		/ = match anywhere in messages
    Match pattern: @

.fi
And now we'll use `/' again to get the match anywhere in file
option.  Now the bottom of the screen looks like;
.nf

    Command : Pattern             		/ = match anywhere in messages
    Match pattern (in entire mailbox): @

.fi
to which we respond \fIdocument\fR again.  
.P 0
The mailer then searches through each line of all the messages in 
the file and moves the current message pointer to message 
number 7.  A quick check reveals that this message indeed
contains the word `document', but it's not the one we want,
so we're going to just get outta here!
.P 0
We've had enough mail for today, so lets quit, leaving
all the mail in the incoming mailbox, except those few we've
marked for deletion;
.sp
.I Quit
prompts;
.sp
.nf
   Delete messages? (y/n) @
.fi
.sp
to which we answer `\fIy\fR' for yes.  The next prompt is then;
.sp
.nf
   Keep mail in incoming mailbox? (y/n) @
.fi
.sp
to which we also answer yes...the program then quickly saves
the files, removing message 5, 13 and 14 as it goes along, and exits.
.sp 2
.P 0
As you can see, the program is pretty easy to use!  In fact, it was
designed to be used without this documentation at all, so you 
could toss this right now (but don't - think of the tree that 
sacrificed its precious life to allow this printout!)
.sp 2
.H 1 "Non-Interactive Uses of Elm"
.P 1
Before we discuss the \fBElm\fR utilities, it's worth noting that 
there are a couple of other ways to use the main mail
system, namely to 'send only' and to send files (batchmail).
.P
To send a message to someone without any of the associated 
overhead of the main system being loaded, you can invoke the
mailer with the name(s) of the people to send to.  The 
mailer will then prompt for Subject, Copies, and then drop
you in your editor (defined in the \fI.elmrc\fR file) to compose
the message.   When composition is complete, the program 
verifies transmission then terminates.  For example;
.nf

  $ \fBelm dave_taylor\fR
  To: taylor@hplabs.HP.COM
  Subject: \fBthis is a test\fR
  Copies To: \fB<return>\fR

  <invokes editor, message composed, then>

  Are you sure you want to send this? (y/n) \fBy\fR

  mail sent.

  $

.fi
Note that the user input is in \fBbold\fR face, so you can see that
the mailer verified the alias expansion too!
.sp
.P
The mailer also supports batch type mailing, of files and so on,
by using the following command;
.nf

  $ \fBelm dave_taylor < help.c\fR

.fi
which will read in the file and transmit it to the specified user.
A subject may be specified with ``-s \fIsubject\fR'' as an option
to the program, as in;
.nf

  $ \fBelm -s "File help.c, as promised" dave_taylor < help.c\fR

.fi
.sp 
.H 1 "The Elm Utilities"
.sp
.P
The \fBElm\fR mail system is really much more than a single
program for reading and writing mail.  It's a unified 
environment for intelligently dealing with electronic
correspondence.  As a consequence, it contains a number of other
programs to aid in the easy processing of `email', 
including the following;
.VL 14 2
.LI "answer"
An answering-machine transcription program.  Please see the
`man'ual entry for more information on how to use this program.
.LI "autoreply"
This program, in conjunction with the ``arepdaemon'', enables users
to automatically reply to incoming mail when they're not directly
available...
.LI "checkalias"
A script for checking aliases simply.
.LI "messages"
A script that lists the number of messages in the specified 
mailbox.  Suitable for login scripts and such.
.LI "newalias"
This program installs new aliases - please see the 
\fIElm Alias Users Guide\fR for more information.
.LI "newmail"
This program is designed to be put into `background' and then
monitors your incoming mailbox for new mail.  Whenever you
receive new mail, the program will asynchronously write to the
screen a notification, including whom the new mail is from and 
what the subjects of the messages are.  The output looks like;
.DS
>> New mail from Jimmy Carter - Urgent matters of state
>> New mail from joe@ucbvax.arpa - Did I hear someone say PARTY??
.DE
This is quite helpful for deciding in `real time' whether it's
necessary to read the mail immediately or not.
.LI "wnewmail"
This is extremely similar to \fInewmail\fR but is 
slightly modified to run in a windowing environment.
The differences are that it stays in `foreground' (thereby
taking over a window entirely), and outputs for new 
mail in a slightly more succint format;
.DS
Mail from Jimmy Carter -- Urgent matters of state
Mail From joe@ucbvax.arpa -- Did I hear someone say PARTY??
.DE
.LI "readmsg"
This handy little program can be used in two ways...first off,
it can be used to easily read a specific message in the
incoming mailbox, specified by ordinal number, by a string that
the message contains, by the metacharacter `$' which 
represents the last message in the mailbox, or `*' which matches 
all the messages in the folder or mailbox.
.P 0
For example;
.DS
$ \fBreadmsg 4 5 9 | lpr\fR
.DE 
would generate a printout, \fIsans\fR superfluous headers, of the fourth,
fifth and ninth messages in your mailbox.
.DS
$ \fBreadmsg Carter | page\fR
.DE
would be a fast way to read what `ole Jimmy has to say...
and
.DS
$ \fBreadmsg -h hear someone say\fR
.DE
would list, including all the message headers, the message
containing the string ``hear someone say''.
.LI "from"
Similar to the Berkeley \fIfrom\fR command, this will
give you a ``table of contents'' of either the current
mailbox or a mailbox of your choice.   It's useful to
see what mail is pending, or what's in a mailbox.
If used with the `-n' option, it will number each message
in a way compatible with the arguments \fIreadmsg\fR
expects to get, too!
.LI "printmail"
This is a formatting routine that knows that mailboxes look
like and inserts either formfeeds or dashed lines between
messages.  It can be used in either of two ways - either 
a mailbox file can be \fIpiped\fR to it or it can be given
a list of mailbox file names to format.  The only option
on the program is `-d' which indicates that you want to have
a dashed line separating messages rather than a formfeed.
.P 0
For example;
.DS
$ \fBprintmail -d | lpr\fR
.DE
will print out your current incoming mailbox, separating the messages
by a dashed line.
.DS
$ \fBreadmsg 3 4 10 | printmail | lpr\fR
.DE
will print messages 3, 4, and 10 from your incoming mailbox,
separated by formfeeds (that is, each message will start on it's
own page).
.P 0
Finally,
.DS
$ \fBprintmail ~/mbox ~/Mail/mail.sent | lpr\fR
.DE
will print all the messages saved in \fImbox\fR and in your \fImail.sent\fR
files.  The second file will be started on a new page regardless of
the presence or absence of the `-d' dashed line option.
.sp
It should be noted that \fIprintmail\fR is almost competely superseded by
the \fIreadmsg\fR command.  For example, the second example above could be
more easily and quickly written as;
.DS
$ \fBreadmsg -p 3 4 10 | lpr\fR
.DE
It is expected in future releases that this program will not be included.
.LI "newalias"
This is used to install new user/group aliases.  Please see the
\fIElm Alias Users Guide\fR for further information on this!
.LI "fastmail"
Sometimes you want to have a batchmailing system that works as
quickly as possible, not bothering with aliases or any of the
other ``deluxe'' features of \fBElm\fR.  An example of this would
be if you have a large mailing list for a newsletter, say.
This command, \fIfastmail\fR, is designed just for that purpose.
It avoids the lengthy startup time of \fBElm\fR while still
generating valid \fIRFC-822\fR\*F mail.
.FS
If you don't know what RFC-822 is, don't worry about it!
.FE
Please see the `man' entry for more information on this
command (use \fBman fastmail\fR after installation).
.LI "trim-headers"
A script to remove extraneous headers from archived (saved)
mail in folders.
.LE
.sp 3
.H 1 "Credits and So on"
.P
This mailer has been evolving over the past few years with
invaluable comments on the interface and general mail 
issues from the following people;
Walter Underwood, Larry Fenske, Rob Sartin,
John Dilley (who got the Spectrum version checked out, too!) and Carl Dierschow.
.sp
For the Berkeley implementation, lots of help came from
John Lebovitz and Ken Stone.
.sp
For the Amdahl/UTS implementation, thanks to Scott McGregor and
Stan Isaacs.
.sp
For the Sun problems, Dave England in Lancaster (UK) turned out to be
``bloody useful'', as he would no doubt say.
.sp
The Pyramid version is due to the work of Steve Malone
of the University of Washington.
.sp
A number of other people have been amazingly disciplined at reporting 
problems and (usually, much to my relief) indicating the fixes needed,
especially Guy Hillyer, Bruce Townsend and Eric Negaard.
.sp
There have been many, many others, too numerous to mention, that
have inspired me with questions like "Why can't Elm..." or 
"Why does it ..." or "Can we make it..." too.  A loud round of
applause and an enthusiastic THANK YOU to you all!!
.sp
Also helpful was the ability to have my `own' machine to 
close up the many many iterative loops that this software
has gone through - since being on a big multi-user machine
tends to slow it down to a standstill...
For that, I thank Hewlett-Packard Colorado Networks Division for their 
initial support, and now HP Laboratories for the wonderful working 
environment that I have here (more than any one person is safe having, 
most likely!)
.sp 
Mailers that have influenced the design and implementation of \fBElm\fR, 
for better or worse, include the following;
.VL 12 1
.LI "\fI/bin/mail\fR  "
The most basic of mailers, this one was simply the example of how \fInot\fR
to force the user to interact with a program.
.LI "\fIBerkeley Mail\fR  "
A suprisingly sophisticated mailer, especially the version with 4.3 BSD,
\fIBerkeley Mail\fR still suffers from the tendency to force the user to
know too much about the system, and also lacks a friendly, non-cryptic
interface for the large subset of the population that use Unix but aren't
interested in becoming a ``hacker''.
.LI "\fIMH\fR  "
This is another nifty mailer.  The main difference between this and the
other mailers about is that it is a discrete set of programs rather than
a single unified interface.  This is quite useful for those people that
receive \fIlots\fR of mail and are willing to spend some time learning
the intricacies of the program.  It's quite powerful, but again, misses some
of the basic friendly features the majority of users are interested in.
.LI "\fIdmail\fR  "
A sort of mutated cross between \fIMH\fR and \fIBerkeley Mail\fR, it was
this program that convinced me to implement the \fILimit\fR functions.
.LI "\fINMail\fR  "
(a part of the HP AI Workstation Software Environment).  This program hints
at the power that mailers could be given to help deal with mail in a quick
and intelligent fashion.  Most of what it can do, and a lot more, are 
therefore part of \fBElm\fR.  Indubitably.  And quite faster too!
.LI "\fIPMX/TERM\fR  "
Part of the AT&T Mail package, a single glance at this interface convinced
me that a PC interface, with almost half of the screen taken up by a silly
function key mapping, is most certainly \fInot\fR the way to do things!!
On the other hand, it also shows that the \fIForms\fR mode can be quite
nicely integrated into a more sophisticated mailer.
.LI "\fIfmail\fR  "
A nickel addition to the \fI/bin/mail\fR program to add some rudimentary
screen interface stuff, this nonetheless interesting mailer is part of 
the AT&T Toolchest.
.LI "\fILaurel\fR  "
A program only available within Xerox PARC, this was an interesting
early attempt at a graphics based full-screen mail program.  The one,
perhaps trivial, part of the interface I really like was the fact that
it would \fIcross out\fR a message that was marked for deletion.  One
day when we get real graphics and the ability to use them indicated in
a facility (not too) like \fItermcap\fR, perhaps \fBElm\fR will do 
this too! 
.LI "\fIMailtool\fR  "
Part of the Sun distribution package, this program is a really nice
example of what can be done by putting a smart shell on top of a dumb
program - it uses \fI/bin/mail\fR for all the `dirty work'.  Other than
that, it's not a particularly interesting interface or mailer, and it
certainly doesn't add much functionality!
.LI "\fIFrankenmail\fR  "
This program is another \fIBerkeley Mail\fR style of interface, for 
the most part.  This means that it
is still just as difficult to use for the 
neophyte Unix user.  The interface is more interesting when used on a 
Sun Microsystems machine, but \fIFrankenmail\fR isn't a step forward in 
mail technologies or interfaces.
.LI "\fIMetamail\fR  "
What can I say?  This isn't even a real mailer, but is just what I dream
of as an interface to mail in the future.  A program that works sort of
like \fBHAL\fR did in \fI2001: A Space Odyssey\fR - where it interrupts
me as appropriate for important mail, and can answer inane and other
queries itself according to what I teach it.  Maybe \fBElm\fR, by some sort
of groupmind metamorphosis, will change into that someday.  Maybe not.  Maybe
no-one bothers to read this far into the document!!
.LE
.sp
Finally, it's also been a very useful experience overall,
confirming my beliefs that iterative software design and
keeping a close watch on users (not to mention an open
mind and mailbox!) improves a product manyfold.  Comments,
feedback and bug reports (and fixes!) are, of course, always welcome!