home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume6 / elm / part03 < prev    next >
Text File  |  1986-11-30  |  41KB  |  1,175 lines

  1. Subject: v06i028:  Elm mail system (elm), Part03/14
  2. Newsgroups: mod.sources
  3. Approved: rs@mirror.UUCP
  4.  
  5. Submitted by: Dave Taylor <pyramid!hplabs!hpldat!taylor>
  6. Mod.sources: Volume 6, Issue 28
  7. Archive-name: elm/Part03
  8.  
  9. # Continuation of Shell Archive, created by hpldat!taylor
  10.  
  11. # This is part 3
  12.  
  13. # To unpack the enclosed files, please use this file as input to the
  14. # Bourne (sh) shell.  This can be most easily done by the command;
  15. #     sh < thisfilename
  16.  
  17.  
  18. if [ ! -d doc ]
  19. then
  20.   echo creating directory doc
  21.   mkdir doc
  22. fi
  23.  
  24. # ---------- file doc/Ref.guide ----------
  25.  
  26. filename="doc/Ref.guide"
  27.  
  28. if [ -f $filename ]
  29. then
  30.   echo File \"$filename\" already exists\!  Skipping...
  31.   filename=/dev/null        # throw it away
  32. else
  33.   echo extracting file doc/Ref.guide...
  34. fi
  35.  
  36. cat << 'END-OF-FILE' > $filename
  37. .PH ""
  38. \"
  39. \"  Reference guide to the ELM mail system.
  40. \"  format with 'troff -mm Elm.guide > Elm.format
  41. \"  or something similar.
  42. \"  (C) Copyright 1985 Dave Taylor
  43. \"
  44. \"  Last update: May 14th, 1986
  45. \"
  46. .SA 1
  47. .nr Hy 1
  48. .nr Pt 1
  49. .nr Pi 8
  50. .lg
  51. .rs
  52. .ds HF 3  3
  53. .ds HP 12 12 10 10 10
  54. .PF ""
  55. .HM 1 1
  56. .ce 99
  57. .sp 5
  58. .ps 20
  59. \fBElm Reference Guide\fR
  60. .sp 5
  61. .ps 12
  62. \fIA comprehensive list of all commands, 
  63. options and such to the \fBElm\fP mail system\fR
  64. .sp 5
  65. Dave Taylor
  66. .sp
  67. Hewlett-Packard Laboratories
  68. 1501 Page Mill Road
  69. Palo Alto CA
  70. 94304
  71. .sp
  72. email: taylor@hplabs or hplabs!taylor
  73. .sp 10
  74. .ps 18
  75. \fB\(co\fR\s12 Copyright 1986 by Dave Taylor
  76. .ce 0
  77. .SK
  78. .ce 99
  79. .ps 14
  80. \fBElm Reference Guide\fR
  81. .ps 10
  82. .sp
  83. (version 1.1)
  84. .sp 2
  85. Dave Taylor
  86. Hewlett-Packard Laboratories
  87. 1501 Page Mill Road
  88. Palo Alto CA
  89. 94304
  90. .sp
  91. email: taylor@hplabs or hplabs!taylor
  92. .sp 2
  93. \*(DT
  94. .ce 0
  95. .nr P 1
  96. .PH "'Elm Reference Guide''Version 1.1'"
  97. .PF "''Page \\\\nP''"
  98. .sp 3 
  99. .H 1 "Introduction"
  100. .P 1
  101. There are many parts to a complex software system and \fBElm\fR
  102. is no different.  This guide describes fully all the options 
  103. available in the mailer, including the starting options,
  104. the commands (in considerably more detail than
  105. in the \fIUsers Guide\fR) and the \fI.elmrc\fR file.
  106. .P 1
  107. To be more explicit, this document covers;
  108. a discussion of the \fI.elmrc\fR file,
  109. starting options of \fBElm\fR, 
  110. outgoing mail processing,
  111. responses of various commands,
  112. the mail archive file,
  113. the \fInotes\fR system,
  114. the Alias system,
  115. system aliases etc,
  116. more on the \fBElm\fR utilities,
  117. and a section for expert mail users.
  118. .P 1
  119. Without any further ado, then, let's get this show on the road!!
  120. .sp 2
  121. .H 1 "The .elmrc File"
  122. .P
  123. The mailer, like lots of other software on the
  124. Unix\v'-.3'\s5TM\s10\v'.3' system, has the ability to automatically read 
  125. in a configuration file at each invocation.  The file must be
  126. called \fI.elmrc\fR and reside in your home directory for it
  127. to be found, and can have any of the following entries
  128. in any order;
  129. .sp 2
  130. .ps 12
  131. .ne 8
  132. String Variables
  133. .ps 10
  134. .VL 13 0
  135. .LI "alternatives"
  136. This is a list of other machine/username combinations
  137. that you receive mail from (forwarded).  This is used 
  138. when the \fIgroup reply\fR feature is invoked to ensure that
  139. you don't send yourself a copy of the outbound message.
  140. (no default)
  141. .LI "calendar"
  142. This is used in conjunction with the "<" \fIscan message for
  143. calendar entries\fR command.  The default place to put
  144. calendar entries if found is \fI$HOME/calendar\fR.  This
  145. variable can be set to specify something else..
  146. .LI "editor"
  147. The editor to use when typing in new mail.
  148. (default is to use the value of the $EDITOR in your
  149. current environment)
  150. .LI "fullname"
  151. This is the name the mailer will use when sending mail 
  152. from you.  It is highly recommended that you use your
  153. full name and nothing strange or unusual, as that can
  154. appear extremely rude to people receiving your mail.
  155. (Default is to use the "gecos" field from the \fI/etc/passwd\fR file)
  156. .LI "mailbox"
  157. This is where to put incoming mail after you've read it.
  158. When you answer `n' to the "keep messages in incoming mailbox?" prompt, this
  159. is where the messages go!
  160. (default is the file \fImbox\fR in your home directory)
  161. .LI  "maildir"
  162. This is the default mail directory, and is used to expand filenames
  163. in the mailer when specified using the `=' metacharacter*.  That
  164. .FS *
  165. Note that `%' and `+' are synonymous with `=' throughout \fBElm\fR
  166. .FE
  167. is, if you save to file \fI=/stuff\fR then the `=' will be expanded
  168. to the current value of maildir.
  169. (no default)
  170. .LI "prefix"
  171. When you \fIreply\fR to a message or \fIforward\fR a message to another person,
  172. you can optionally include the original message.  Defining the
  173. prefix value here allows you to indicate what the prefix of 
  174. each included line should be.  (default is "> " and is
  175. fairly standard in the Unix community)
  176. .LI "print"
  177. This indicates how to print out a message.  There are two
  178. possible formats for this string, either a command that
  179. can have a filename affixed to (as a suffix) and then
  180. sent to the system for execution, or a string that 
  181. contains the meta-sequence `%s' which will be replaced
  182. by the name of the file and then also sent to the
  183. shell.  Examples of each are;
  184. .nf
  185.  
  186.     print = print -formfeed
  187.     print = pr %s | lpr
  188.  
  189. .fi
  190. (no default)
  191. .LI "savemail"
  192. This is where outgoing mail will have a copy silently (and
  193. quickly) saved.  This will only be used if the flag \fIcopy\fR
  194. is turned on.  Also note that if the \fIsavename\fR flag
  195. is turned on then this line is ignored since each outgoing
  196. message is saved according to whom it's being sent to.
  197. (default is to have this option disabled)
  198. .LI "shell"
  199. This defines the shell to use when doing ``!'' escapes and
  200. such.  Note that the program also reads the $SHELL variable
  201. out of the current environment, but that defining this
  202. in the .elmrc file will override the environment definition.
  203. .LI "sortby"
  204. This is something new and deluxe!  When reading mailboxes, 
  205. either incoming or saved, you can have them sorted by any
  206. number of different ways.  This can be changed without leaving
  207. the \fBElm\fR system by changing the \fIoptions mail-sorted-by\fR
  208. field, but it can also be predefined to any of the following;
  209. .sp
  210. .VL 15 3
  211. .LI "from"
  212. This will sort according to whom each message is \fIfrom\fR.
  213. .LI "sent"
  214. This will sort \fIleast recently sent\fR to 
  215. \fImost recently sent\fR.
  216. .LI "received"
  217. This will sort \fIleast recently received\fR to 
  218. \fImost recently received\fR.
  219. .LI "subject"
  220. This will sort according to the \fIsubject\fR of each message.
  221. .LI "lines"
  222. This will sort \fIshortest\fR to \fIlongest\fR by message.
  223. .LI "status"
  224. This will sort by priority, action, new, tagged, then deleted
  225. order.
  226. .LE
  227. .sp
  228. Each of these fields can also optionally be prepended with the
  229. sequence "reverse-" to reverse the order of the sort.  The 
  230. sorting method in the sample \fI.elmrc\fR, for example, 
  231. is \fIreverse-sent\fR, to have the new
  232. mail always be listed first in the headers (note that this doesn't
  233. imply anything about the location of the message in the \fImailbox\fR
  234. itself!)
  235. .LI "weedout"
  236. When specifying this option, you can then list headers that
  237. you \fBdon't\fR want to see when you are read mail.
  238. This list can continue for as many lines as desired, as 
  239. long as the continued lines all have leading indentation.
  240. (no default)
  241. .LE
  242. .sp 2
  243. .ps 12
  244. .ne 8
  245. Numeric Variables
  246. .ps 10
  247. .VL 13 0
  248. .LI "bounceback"
  249. This is a hop count threshold value and allows you to
  250. set up the mailer so that when you send mail more than
  251. \fIn\fR machines away, it'll automatically include a
  252. "Cc:" to you through the remote machine.  In practice
  253. this should be very rarely used.  (Note: this refuses to
  254. bounce mail off an Internet address.  The default is to
  255. have it set to zero, which disables the function)
  256. .LI "timeout"
  257. On more advances systems, it's nice to start up the 
  258. mailer in a window and let it sit in background 
  259. unless new mail arrives (see \fIwnewmail\fR for
  260. another window oriented mail program) at which point
  261. it can be brought up to the forefront of the system 
  262. and read.  In this case, it would be quite convenient
  263. to have the mailer internally resynchronize every
  264. ``delta'' seconds.  That's exactly what this particular
  265. option allows.  
  266. .sp
  267. This is also useful for normal terminals, for example you can
  268. leave \fBElm\fR running at night (I usually do) and when you
  269. come in in the morning it'll be all ready to read your mail!
  270. .sp
  271. (The default is a 30 second timeout period).
  272. .LE
  273. .sp 2
  274. .ps 12
  275. .ne 8
  276. Boolean Variables
  277. .ps 10
  278. .VL 12 0
  279. .LI "alwaysdelete"
  280. When set, this changes the default answer
  281. of the prompt "Delete messages?" to the indicated value.  (default is
  282. to have the answer be \fINo\fR (alwaysdelete=OFF))
  283. .LI "alwaysleave"
  284. This changes the default answer on the "keep mail in incoming mailbox?"
  285. prompt to the value indicated (default
  286. is to have the default answer be \fINo\fR (that is, alwaysleave=OFF)
  287. .LI "arrow"
  288. Sometimes your are forced to use a slow, or ``dumb'' terminal.  In this
  289. case, you can force the current message pointer to be the ``->''
  290. sequence rather than the inverse bar.  (Note that this is
  291. identical in function to the `-a' starting option) (default is OFF
  292. unless you're on an IBM 3270) (I'll bet you think I'm joking...)
  293. .LI "autocopy"
  294. This is a boolean flag, and if set will automatically copy
  295. the text of each message being replied to into the edit
  296. buffer.  (default is OFF)
  297. .LI "copy"
  298. This, in combination with the \fIsavemail\fR filename, will
  299. allow you to have silent copies of all outgoing mail
  300. made on the outbound step.  
  301. (default is OFF)
  302. .LI "editout"
  303. This rather primitive facility allows you to edit the headers of
  304. your message (and create some new ones!) after editing an 
  305. outbound message.  At that point you can also optionally return
  306. into the editor.  (default if OFF)
  307. .LI "keypad"
  308. If on, this tells \fBElm\fR that you have an HP terminal and enables
  309. the <NEXT>, <PREV>, <HOME> and <SHIFT-HOME> keys.  (default is OFF)
  310. .LI "movepage"
  311. If this is turned on then commands that move through the
  312. mailbox by pages (notably the `+' and `-', <PREV> and <NEXT>
  313. keys) will also move the current message pointer to the
  314. top of that page of messages.  If this is turned off 
  315. then moving through the pages doesn't alter the
  316. current message pointer location.
  317. (default is OFF)
  318. .LI "noheader"
  319. This boolean flag tells the mailer not to include the 
  320. headers of messages when copying a message into a file
  321. buffer for replying to or forwarding.
  322. (default is OFF)
  323. .LI "pager"
  324. This is the system to be used when paging through messages.  It
  325. will be handed the message line by line from standard input...
  326. (default is "/usr/bin/more" on Bell systems and "/usr/ucb/page" 
  327. on Berkeley systems)
  328. .LI "pointnew"
  329. If this is turned on, the mailer will automatically 
  330. pointing to the first new message in your mailbox when started, instead
  331. of at message #1.  Note that this is only used for the incoming mailbox!
  332. (default is ON)
  333. .LI "resolve"
  334. This is a boolean flag that defines the behaviour of the
  335. program for such actions as deletion, saving a message 
  336. and so on.  
  337. (default is ON)
  338. .LI "savename"
  339. One of the problems with electronic mail systems is that one
  340. tends to get very large, one-dimensional (flat) files that
  341. contain lots of completely unrelated mail.  If this option
  342. is turned on, \fBElm\fR will use a more intelligent 
  343. algorithm - on incoming mail, when you \fIsave\fR it, the default
  344. mailbox to save to (changeable by pressing anything other than
  345. <return> of course) is a file that is the \fIlogin name\fR of the
  346. person who sent you the message.  Similarly, when sending mail out,
  347. instead of just blindly saving it to the \fIsavemail\fR file, \fBElm\fR
  348. will first try to save it to a file that is the login name of the 
  349. person who is to receive the mail*.
  350. .FS *
  351. When sending to a group, it's saved to the first person in the 
  352. list only.  One day we'll have \fIpointers\fR to messages, then...
  353. .FE
  354. If the file doesn't already exist, then it will save the mail in
  355. the \fIsavemail\fR file.
  356. .P 0
  357. In practice, this means that important people that you communicate
  358. with (those that you tend to save mail from) have files that are
  359. actually \fIa recorded log of the discussion in both directions\fR
  360. and those others (random mailings) are all stuffed in the \fImailsave\fR
  361. file for easy editing/removing. (The default is OFF)
  362. .LI "signature"
  363. This can be turned on which will allow the mailer to automatically
  364. append a ".signature" file from your home directory to all outbound
  365. mail as you enter the editor.  (default is OFF)
  366. .LI "softkeys"
  367. If on, this tells \fBElm\fR that you have an HP terminal with the
  368. HP 2622 function key protocol and that you'd like to have them available
  369. while in the program.  (default is OFF)
  370. .LI "titles"
  371. This flag allows you to have the first line of a message
  372. titled with:
  373. .sp
  374. .nf
  375. Message #\fIN\fR from \fIusername\fR                Mailed \fIdate\fR at \fItime\fR
  376. .fi
  377. .sp
  378. where all the information has been previously extracted
  379. from the message.
  380. This is especially useful if you weed out all the headers of each
  381. message with a large `weedout' list...
  382. (default is OFF)
  383. .LI "weed"
  384. This is a boolean flag that, in combination with the
  385. "weedout" list, allows you to custom define the set of
  386. headers you would like to not have displayed while reading
  387. messages.  
  388. (default is OFF)
  389. .LE
  390. .sp
  391. One more thing: the format for each of the lines is;
  392. .nf
  393.  
  394.     variable = value
  395.  
  396. .fi
  397. and for boolean variables, \fIvalue\fR can be `ON' or `OFF' only.
  398. .sp
  399. For a better idea of how this all works, here's my \fI.elmrc\fR file.
  400. While looking through it, notice that you can have lots of comments
  401. and blank lines for readability and that you can also use `shell
  402. variables' and the `~' metacharacter for your home directory, 
  403. and they are expanded accordingly when read in by the mailer.
  404. .nf
  405.  
  406.  #
  407.  # .elmrc - automatic variable defines for the `Elm' mailer.
  408.  #
  409.  # Personalized for Dave Taylor
  410.  # 
  411.  
  412.  fullname = Dave Taylor
  413.  
  414.  # where to save my mail to, default directory
  415.  maildir  = $HOME/Mail
  416.  
  417.  # where to save messages to, default file
  418.  mailbox  = ~/Mail/mailbox
  419.  
  420.  # where to put calendar file entries
  421.  calendar = ~/.Agenda
  422.  
  423.  # what editor to use
  424.  editor   = $EDITOR
  425.  
  426.  # how to sort mailboxes
  427.  sortby  = Reverse-Sent
  428.  
  429.  # where to save outbound mail if not specified somewhere else
  430.  savemail = ~/Mail/mail.sent
  431.  
  432.  # how to print a message (`%s' is the filename)
  433.  print    = pr %s | lpr 
  434.  
  435.  # prefix sequence for including message text in other messages...
  436.  prefix = ">"
  437.  
  438.  # what headers I DON'T want to see, ever.
  439.  
  440.  weedout  = "Via:"  "Sent:"  "Date:"  "Status:"  "Original"
  441.         "From"  "Phase"  "Subject:"  "Fruit"  "Sun"
  442.         "Lat"  "Buzzword"  "Return"  "Posted" "Telephone"
  443.         "Postal-Address" "Origin" "X-Sent-By-Nmail-V"
  444.         "Resent" "X-Location"  "Source" "Mood"  "Neuron"
  445.         "Libido" "To:" "X-Mailer:"  "Full-Name:" "X-HPMAIL" 
  446.         "Cc:" "cc:" "Mmdf" "Network-" "Really-" "Sender:"
  447.  
  448.  # threshold for bouncing copies of remote uucp messages...
  449.  # zero = disable function.
  450.  bounceback = 0
  451.  
  452.  # Set the main prompt timeout for resynching...
  453.  timeout = 60
  454.  
  455.  # automatically copy message being replied to into buffer? 
  456.  autocopy = OFF
  457.  
  458.  # save a copy of all outbound messages? 
  459.  copy     = ON
  460.  
  461.  # emulate the mailx message increment mode (only increment after something
  462.  # has been `done' to a message, either saved or deleted)
  463.  resolve  = ON
  464.  
  465.  # enable the weedout list to be read...
  466.  weed     = ON
  467.  
  468.  # when messages are copied into the outbound buffer, don't include headers
  469.  noheader = ON
  470.  
  471.  # display message title when displaying pages of message
  472.  titles     = ON
  473.  
  474.  # edit the headers as the message leaves the machine (sort of)
  475.  editout     = OFF
  476.  
  477.  # save messages, incoming and outbound, by login name of sender/recipient
  478.  savename = ON
  479.  
  480.  # when using the page commands (+ - <NEXT> <PREV>) change the current
  481.  # message pointer...
  482.  movepage = ON
  483.  
  484.  # try to include a ".signature" file from my home directory on 
  485.  # outbound mail..
  486.  signature = ON
  487.  
  488.  # should we always leave messages as pending (change the default 
  489.  # answer to yes)
  490.  alwaysleave = ON
  491.  
  492.  # should we always delete messages we've marked for deletion (change the
  493.  # default answer to yes)
  494.  alwaysdelete = ON
  495.  
  496.  # set pager accordingly
  497.  pager = "/usr/bin/page"
  498.  
  499.  # we're running on an HP terminal...
  500.  keypad = ON
  501.  
  502.  # alternative addresses that I could receive mail from (usually a
  503.  # forwarding mailbox) (lots, huh!)
  504.  alternatives = hpcnof!dat, hpcnof!d_taylor, hpcnou!d_taylor,
  505.      hpcnou!root, hpcnou!postmaster, hpcnoe!d_taylor, hpcnoe!dat,
  506.      hpcnoa!d_taylor, hpcnoa!dat, hpfcla!d_taylor, hpldat!taylor, 
  507.     taylor@hpldat, taylor%hpldat, root@hpldat, hpldat!root, 
  508.      postmaster, taylor, root
  509.  
  510. .fi
  511. .sp 2
  512. .H 1 "The Starting Parameters"
  513. .P
  514. There are a number of starting options to the
  515. .B Elm
  516. program, with only one that needs to be remembered: ``-?''or ``-h'' for help.
  517. .P 0
  518. The flags are;
  519. .VL 13 0
  520. .LI "-a"
  521. Arrow.  This allows you to have the "->" arrow pointer
  522. rather than the inverse bar.  This can also be set in
  523. the \fI.elmrc\fR file - check the boolean variable \fIarrow\fR).
  524. .LI "-c"
  525. Check only.  This is useful for expanding aliases 
  526. without sending any mail.  The invocation is just
  527. like sending mail: \fBelm -c\fI alias or aliases\fR.
  528. .LI "-d\fIn\fR"
  529. Set debug level to \fIn\fR.  Useful for debugging the 
  530. .B Elm
  531. program.  The results of using the debug option is
  532. much less drastic than in the previous versions of 
  533. the program - it creates a file in your home directory
  534. called \fIElm.debug.info\fR and creates a (verbose) log
  535. of activity as the program is used.  
  536. .sp
  537. Level \fIn\fR can be 1 thru 5, where the higher numbers generate
  538. more output.
  539. .LI "-f \fIfile\fR"
  540. File.  Read specified file rather than the default input mailbox.
  541. Note that you can use the same metacharacters as when 
  542. you \fIchange mailboxes\fR from within the program.
  543. .LI "-h or -?"
  544. Help.  Gives a short list of all these options and exit.
  545. .LI "-k"
  546. Keypad - This option, when used, lets the \fBElm\fR program
  547. know that you're on an HP terminal, and it can then interpret
  548. the <PREV>, <NEXT> and <HOME>/<SHIFT>-<HOME> keys accordingly.  If you
  549. are not on an HP terminal, it is recommended that you do
  550. NOT use this option. (see the \fIkeypad\fR option in
  551. the \fI.elmrc\fR section)
  552. .LI "-K"
  553. Keypad + softkeys.  The \fBElm\fR mailer can, to a rather limited
  554. extent, use the HP softkeys as an alternative form of
  555. input.  If you specify this option be sure that you're on
  556. an HP terminal that can accept the standard 2622 terminal
  557. escape sequences! (see the \fIsoftkeys\fR option in
  558. the \fI.elmrc\fR section for more information)
  559. .LI "-m"
  560. Inhibit display of the 3-line menu when using the mailer.  This,
  561. of course, gives you three more message headers per page instead.
  562. .LI "-s \fIsubject\fR"
  563. In batch mode, this is how to indicate the subject of the
  564. resulting message.  Please see the section on "Non-Interactive
  565. Uses of Elm" in the \fIElm Users Guide\fR for more information.
  566. .LI "-z"
  567. Zero.  This causes the mailer not to be started if you don't
  568. have any mail.   This emulates the behaviour of programs
  569. like \fImailx\fR.
  570. .LE
  571. .P
  572. All the above flags default to reasonable options, so there is
  573. usually no need to use them.   
  574. .sp 2
  575. .H 1 "Special Outgoing Mail Processing"
  576. .sp
  577. .P
  578. There are a few extra features that the mailer offers on
  579. outgoing mail that are worthy of mention;
  580. .sp
  581. .P
  582. The first, and probably the most exciting feature*, is the
  583. .FS *
  584. Unfortunately, at many non-US sites, it's quite probable that
  585. you won't be able to use this feature since you won't have
  586. the "crypt()" library available due to licensing restrictions.
  587. .FE
  588. ability to send \fIencrypted\fR mail! To do this is 
  589. extremely simple:  You need merely to have two key lines
  590. ``[encode]'' and ``[clear]'' in the message body.
  591. .P 0
  592. Consider the following outgoing message:
  593. .nf
  594.  
  595.     Joe,
  596.         Remember that talk we had about Amy?  Well,
  597.     I talked to my manager about it and he said...
  598.  
  599.     uhh...better encrypt this...the usual `key'...
  600.  
  601.     [encode]
  602.  
  603.         He said that Amy was having family problems
  604.     and that it had been affecting her work.
  605.  
  606.         Given this, I went and talked to her, and 
  607.     told her I was sorry for getting angry.  She said
  608.     that she understood.
  609.  
  610.         We're friends again!!
  611.     [clear]
  612.     
  613.         Exciting stuff, eh?   
  614.  
  615.                      Mike
  616.  
  617. .fi
  618. While this is obviously quite readable while being typed into 
  619. the editor, as soon as the message is confirmed as wanting
  620. to be sent, the \fBElm\fR mailer prompts with;
  621. .nf
  622.  
  623.     Enter encryption key: @
  624.  
  625. .fi
  626. and accepts a key (a series of 8 or less characters) without
  627. echoing them to the screen.  After entry, it will ask for the
  628. same key again to confirm it, then *poof* it will encrypt and
  629. send the mail!
  630. .P
  631. If you have the \fIcopy\fR option enabled, the program will save
  632. your copy of the message encrypted too.  (This is to ensure
  633. the privacy and security of your archived mail too!)
  634. .P
  635. If the mailer doesn't ask for the encryption key, it's because
  636. you don't have the ``[encode]'' entered as the first 8 characters
  637. of the line.  It MUST be so for this to work!!
  638. .P
  639. On the other end, a person receiving this mail (they must also
  640. be using \fBElm\fR to receive it, since this mailer has a
  641. unique encryption program) will be reading the
  642. message and then suddenly be prompted;
  643. .nf
  644.  
  645.     Enter decryption key: @
  646.  
  647. .fi
  648. and will again be asked to re-enter it to confirm.  The
  649. program will then on-the-fly decrypt the mail and display
  650. each line as it is decoded.  The `[clear]' line signifies
  651. that the block to encrypt is done.
  652. .P
  653. For those sites not running \fBElm\fR, a separate program
  654. suitable for a filter for use with other mailers is available.
  655. .P 0
  656. Note that it is not possible currently to \fIpipe\fR or \fIprint\fR
  657. encrypted mail.
  658. .sp
  659. .P
  660. The other option on outgoing mail is the ability to
  661. specify what section of the message you want to have
  662. archived (assuming \fIcopy\fR is enabled) and what section
  663. you don't.  This is most useful for sending out source
  664. file listings and so on...
  665. .P
  666. To indicate the end of the section that should be
  667. saved in the archive, you need merely to have the
  668. line
  669. .nf
  670.  
  671.     [nosave]
  672.  
  673. .fi
  674. appear by itself on a line.  This will be removed from 
  675. the outgoing mail, and will indicate the last line of
  676. the message in the saved mail.
  677. .sp 2
  678. .H 1 "Responses..."
  679. .sp
  680. .P
  681. This section will discuss each command in the 
  682. .B Elm
  683. program in more detail than above, including the 
  684. prompts the user can expect upon executing the
  685. command, the meaning of different options etc etc.
  686. .sp
  687. .VL 10 3
  688. .LI ?
  689. Help.  This command used once puts you in the \fIexplain key\fR
  690. mode, where any key you press will result in a one-line description
  691. of the key.  Pressed again at this point will produce a summary 
  692. two pages listing each command available.
  693. <escape> or `.' will leave the help mode and return you to the
  694. main menu level.
  695. .LI !
  696. Shell.  This allows you to send a command to the shell without
  697. leaving the program. 
  698. .LI |
  699. Pipe.  This command allows you to pipe the current message
  700. or the set of \fItagged\fR messages
  701. through other filters as you desire.  The shell used for
  702. the entire command will be either the one specified in
  703. your \fI.elmrc\fR file, or, if none, \fI/bin/sh\fR.
  704. .LI \/
  705. Pattern match.  This command, on the top level, allows the
  706. user to search through all the \fIfrom\fR and \fIsubject\fR lines of
  707. the current mailbox starting at the current message and
  708. continuing through the end.  If the first character of the
  709. pattern is a `/', then the program will try to match the
  710. specified pattern against \fBany\fR line in the mailbox.  Again,
  711. this works from one after the current message through the
  712. end.  Both searches are case insensitive.
  713. .LI <n>
  714. Specify new current message.  Typing in any of the digits one
  715. thru nine will result in the 
  716. .B Elm
  717. program producing the prompt `Set current to : n', where `n' is
  718. the digit entered.  
  719. Note that changing the current message to a message not on the 
  720. current page of the headers will result in a new page of headers
  721. being displayed.
  722. .LI "<"
  723. Scan message for calendar entries.  A rather novel feature of 
  724. the \fBElm\fR mailer is the ability to automatically incorporate
  725. calendar/agenda information from a mail message into the users
  726. calendar file.  This is done quite simply; any message that has
  727. either the pattern;
  728. .DS
  729.       -> \fIcalendar entry\fR
  730. .DE
  731. or
  732. .DS
  733.       - \fImulti-line\fR
  734.       - \fIcalendar entry\fR
  735. .DE
  736. will be automatically added to the users \fIcalendar\fR file (see
  737. the \fIcalendar\fR option of the \fI.elmrc\fR file) if the `<'
  738. command is used.  The main difference between the two formats is that
  739. the first is assumed to be a \fIcalendar(1)\fR entry (the `->' is
  740. stripped off), and the second is a more generic format (only the `- '
  741. is stripped off).
  742. .sp
  743. For example, let's say we had a message with the text
  744. .DS
  745.     Anyway, here's the appointment entry for the seminar;
  746.  
  747.     -> 8/03 3:00pm: AI Seminar with Ira Goldstein of HP Labs
  748.  
  749.     if you're using ELM you can just "<" it...
  750. .DE
  751. then using the `<' command would add the line;
  752. .DS
  753. 8/03 3:00pm: AI Seminar with Ira Goldstein of HP Labs
  754. .DE
  755. to the users \fIcalendar\fR file.
  756. .LI a
  757. Alias.  The alias system is a way by which more complex mail addresses
  758. can be shortened for the mail user.  For example;
  759. .nf
  760.  
  761.   joe, bleu : Joe Bleu : joe@hpcfla
  762.  
  763. .fi
  764. which allows mail to `joe' or `bleu' with the system expanding
  765. the address properly.  As is obvious, this not only saves remembering
  766. complex addresses, it also allows the address to be optimized to
  767. go through the minimum number of machines without anyone having to
  768. be informed of the change.  A more detailed discussion can
  769. be found in either the section entitled \fIThe Alias System\fR in
  770. this document or the \fIElm Alias Guide\fR.
  771. .LI b
  772. Bounce mail.  This ``remails'' mail to someone else in such a
  773. way as to make the return address the original sender rather
  774. than you (as opposed to the \fIforward\fR command, which makes
  775. the return address \fIyou\fR rather than the original sender)
  776. .LI c
  777. Change mailbox.  Specifying this command allows the user to change
  778. the mailbox file that is currently being read.  This is intended 
  779. for perusal and reply to previously archived messages.
  780. The prompt is `Name of new mailbox : ' and entering <return>
  781. cancels the operation, while entering a filename causes the program
  782. to read that file as the new mailbox file, if possible.
  783. As with the \fIsave\fR command, this command expands filenames
  784. with `~' being your home directory and `=' being your
  785. \fImaildir\fR directory, if defined.  This command also allows the
  786. special character `!' to be used to allow you to change to
  787. the default incoming mailbox.
  788. .LI "d, u"
  789. Delete and Undelete.  Neither of these two commands have any prompts
  790. and indicate their action by either adding an asterisk to the current
  791. message index entry (indicating deletion pending) or removing the
  792. asterisk (indicating that the deletion is cancelled).
  793. .LI "<control>-D"
  794. This command allows you to easily mark for deletion all messages 
  795. that have a specific pattern.  After <control>-D is pressed,
  796. the program will prompt for the string to match (currently it
  797. only matches either the \fIfrom\fR or \fIsubject\fR lines of
  798. the message).
  799. .LI e
  800. Edit mailbox.  This allows you to modify the current mail file at
  801. a single keystroke.  This is mostly useful for editing down messages
  802. before saving them.  Modifying headers should be done with extreme
  803. caution, as they contain routing information and other vital stuff
  804. for full functionality.
  805. .LI f
  806. Forward.  Allows the user to forward the current message to another user.  
  807. This copies the message into the edit
  808. buffer and allows the user to add their own message too.
  809. The prompt is `Forward to:' and will expand an alias if
  810. entered.
  811. (see \fIbounce\fR above, too)
  812. .LI "j, k"
  813. These two keys work similarly to what they would do in \fIvi\fR or
  814. any of the other (precious few) screen oriented programs.  The `j' key moves
  815. the current message pointer down to the next message (going to
  816. the next page if needed) and the `k' key moves the current
  817. message pointer back to the previous message (also changing 
  818. pages if needed)
  819. .LI m
  820. Mail.  Send mail to a specified user.  The prompt that is associated
  821. with this command is `Send mail to :'.  Entering an alias name results
  822. in the full address being rewritten in parenthesis immediately.  This
  823. prompt is followed by `Subject:' which allows the user to title their
  824. note.  The final field is `Copies to: ', which allows other people
  825. specified to receive "carbon copies" of the message. 
  826. Upon entering all three items the 
  827. .I vi
  828. editor (or any other editor specified by $editor) 
  829. is invoked and the message can be composed.
  830. .LI n
  831. Next message.  See \fI<return>\fR.
  832. .LI o
  833. Options.  This full-screen display allows you to alter the settings
  834. of a number of parameters, including the current sorting method,
  835. the method of printing files, the calendar file, the save file, and
  836. so on.  It's self-documenting (where have you heard \fIthat\fR
  837. before?) so isn't explained in too much detail herein.
  838. .LI p
  839. Print.  This allows you to print out the current
  840. message or the tagged messages to a previously defined printer 
  841. (see the section on the \fI.elmrc\fR discussing the \fIprint\fR variable)
  842. .LI q
  843. Quit.  This command's action is dependent on the current state of
  844. the 
  845. .B Elm
  846. program.
  847. For example, if the current mailbox is the default mailbox the messages
  848. that are not deleted are saved in the file $home/mbox, whereas
  849. if it is a specified mailbox the to-be-deleted messages are 
  850. removed from the
  851. file.  The possible prompts are `Save to mailbox?' if the default mailbox
  852. is being read and there is at least one message to save, 'Delete all
  853. messages' if all messages in any mailbox are marked for deletion 
  854. or `Delete message(s)?'
  855. if not reading the default mailbox and there are some messages that
  856. should be saved.  A response of `n' (no) to either of these questions will
  857. result in the quit command aborting, and the files being untouched.
  858. .LI r
  859. Reply.  Reply to the author of the current message.  If
  860. the autocopy flag is not specified, the program will 
  861. prompt `Copy Message? (y/n)' to which the user can specify 
  862. whether a copy of the source message is to be copied into the edit
  863. buffer, or not.  If copied in, all lines from the message are 
  864. prepended with the prefix character sequence, as specified in
  865. the users \fI.elmrc\fR file.
  866. .LI s
  867. Save to file.  This command allows the current message or set of
  868. tagged messages to be copied 
  869. into an arbitrary file.  If there is anything in the file currently the
  870. message or messages are appended to the end, otherwise the file is created
  871. containing only the newly saved mail.  The prompt for this command
  872. is `Save to file : '.  A response of <return> cancels the command
  873. and returns the user to the system prompt.
  874. After saving a file, each message is marked for deletion and,
  875. if saving just one message,
  876. the current message pointer is incremented.
  877. The usual filename metacharacters are available, too.
  878. .LI t
  879. Tag.  Tag the current message for a later operation*.
  880. .FS *
  881. Currently only \fIpipe\fR, \fIprint\fR, and \fIsave\fR support this.
  882. .FE
  883. .LI "<control>-T"
  884. Tag all messages containing the specified pattern.  Since \fItagging\fR
  885. messages can occur on screens other than the one being viewed, the 
  886. \fIElm\fR system will first check to see if any messages are currently
  887. \fItagged\fR and ask you if you'd like to remove those tags.  After
  888. that, it will, similar to the \fI<control>-D\fR function, prompt for
  889. a pattern to match and then mark for deletion all messages that contain
  890. the (case insensitive) pattern in either the \fIfrom\fR or \fIsubject\fR
  891. lines. 
  892. .LI x
  893. Exit.  This is functionally the same as answering \fIN\fRo to the 
  894. .I quit
  895. command prompt, and simply leaves the program in the quickest
  896. possible manner.  This command can also occur from typing
  897. DELETE, or control-Q, both of which are also 
  898. .I exit
  899. commands.
  900. .LE
  901. .sp 2
  902. .H 1 "The Mail Archive File"
  903. .sp
  904. .P
  905. The format of the mail saved to the archive file is also
  906. worth a quick discussion.  Unlike the usual exact copy
  907. of the entire header section, the archived mail has the
  908. following header;
  909. .nf
  910.  
  911.     From To:<name> 15 Jan 1985 4:54:30 MST
  912.     To: <address>
  913.     Subject: <subject>
  914.     Cc: <address>
  915.  
  916.     <message body>
  917.  
  918. .fi
  919. The first line, the `From' line, is deliberately mangled
  920. with the occurance of the `To:<name' to ensure that when
  921. you are perusing your archive file with the mailer that
  922. you see \fIwho the message was to\fR, since they're all going
  923. to be from you!!  The <name> will either be the machine!login
  924. of the person, or, if originally addressed with an alias, the
  925. alias name.
  926. .P
  927. To read this file, you can use the mailer, choosing the 
  928. the \fIchange mailbox\fR command, or start up specifying your
  929. archive file as the mailbox to read.
  930. .sp 2
  931. .H 1 "Using ELM with the Notes System"
  932. .sp
  933. .P
  934. Another feature in the 
  935. .B Elm
  936. program is the ability to read files saved by the notes
  937. system and display them as individual messages.  Unfortunately,
  938. the notes software does not currently save a note with
  939. the subject line, however, so the mailer uses the next best
  940. thing and displays each note in the form:
  941. .nf
  942.  
  943.     1  Apr 5  hplabs!kundler    Note from group net.unix-wizards
  944.     2  Apr 7  hplabs!richard    Note from group net.unix-wizards
  945.  
  946. .fi
  947. and so on.  The individual notes can be replied to by using the
  948. .I reply
  949. command, as with normal mail, and the mailer will modify it's
  950. behaviour to work with this particular brand of mail file.
  951. .P
  952. How does the mailer know if it's reading a file that contains
  953. normal mail versus a saved set of notes?  By checking the
  954. first line of the file - if it's the header line that notes
  955. emits
  956. .DS
  957. /***** \fIhost\fR:\fIlogin\fR / \fInotesgroup\fR / \fIdate\fR **/
  958. .DE
  959. then the file is considered to be a notes file.  If not, the default
  960. for unknown files is to assume they're mail files.
  961. .sp 2
  962. .H 1 "The Alias System"
  963. .sp
  964. .P
  965. As mentioned previously, there exists in the
  966. .B Elm
  967. system a set of aliases that associate
  968. an arbitrary word (such as a persons name) to a complex
  969. address or group.  
  970. The advantages are readily apparent; rather than
  971. remembering an address of the form;
  972. .nf
  973.  
  974.   machine1!machine2!machine3! ... !machineN!account
  975.  
  976. .fi
  977. the user merely has to remember a single word.  
  978. .P
  979. Two alias tables are available for a each
  980. user within 
  981. .B Elm,
  982. namely the system alias file and the users' alias file.  The
  983. system alias file is created and maintained (by the system administrator)
  984. by editing the file \fI/usr/mail/.alias_text\fR as described
  985. in the documentation with the 
  986. .I newalias
  987. command, then running the 
  988. .I newalias 
  989. program.
  990. .P
  991. An individual user can also have an alias file which works
  992. in conjunction with the system aliases.  To do this, they
  993. need merely to peruse the documentation for the 
  994. .I newalias
  995. command and create a file as indicated therein.  After 
  996. executing the program, the aliases will be available
  997. for using from within 
  998. .B Elm.
  999. .sp
  1000. Please refer to the \fIElm Alias Users Guide\fR for more helpful
  1001. hints and so on.
  1002. .sp 2
  1003. Within
  1004. .B Elm,
  1005. however, the alias system acts as an entirely different program, with
  1006. it's own commands and own mini-menu.  The menu replaces the
  1007. standard mini-menu with;
  1008. .sp
  1009. .DS
  1010. .nf
  1011. .ce
  1012. \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
  1013. .sp
  1014. .ce
  1015. Alias commands
  1016. .sp
  1017. .ce 
  1018. A)lias current message, Check a P)erson or S)ystem, M)ake new alias or R)eturn
  1019. .sp 2
  1020. Alias: @
  1021. .ce
  1022. \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
  1023. .sp
  1024. .DE
  1025. .fi
  1026. .P 0
  1027. The commands are;
  1028. .VL 10 3
  1029. .LI a
  1030. Alias current message.  
  1031. This allows the user to create an alias that has the
  1032. return address of the current message as the address field of
  1033. the alias.  It prompts for a unique alias name.   Important
  1034. note: when you alias an address in this fashion, the mailer
  1035. will try to minimize the amount it needs to store by
  1036. iteratively comparing machine names in the path with the
  1037. machines in the pathalias database.  Once it finds an entry
  1038. the address will be saved at that point.   For further 
  1039. information, please see the \fIElm Alias Users Guide\fR.
  1040. .LI p
  1041. Check personal alias.  This is a simple way of checking what is in the alias
  1042. database - it prompts for an alias name, and returns the address
  1043. associated with that name or the error message `alias not found'
  1044. as appropriate.  
  1045. .LI s
  1046. Check system alias.  If you're not sure that your machine can talk
  1047. to another machine, you can use this command to either find the
  1048. appropriate route or find that you're correct in your suspicions 
  1049. and it is indeed unknown!
  1050. .LI m
  1051. Make user alias.  This will prompt for a unique alias name and
  1052. then for an address.  The information provided will be added
  1053. to your individual alias_text file (\fI$home/.alias_text\fR) and 
  1054. then added to the database.
  1055. .LI r
  1056. Return.  Return to the main level of the 
  1057. .B Elm
  1058. program.
  1059. .LE
  1060. .sp 2
  1061. .H 1 "While We're Talking Aliases..."
  1062. .P
  1063. Another feature worthy of discussion, since it's been getting
  1064. lots of veiled references throughout this document, is the 
  1065. host-path file.  This is implemented using the uucp pathalias 
  1066. database, with a file (whose location is specified in the hdrs/sysdefs.h
  1067. file - see the \fIConfiguration Guide\fR) in the format:
  1068. .nf
  1069.  
  1070.   \fIhostname\fR <tab> \fIaddress\fR!%s
  1071.  
  1072. .fi
  1073. The actual details of the file are, suprise, suprise, located in 
  1074. the \fIAlias System Users Guide\fR.
  1075. .P
  1076. Anyway, to use them is quite simple...when specifying the address
  1077. of someone, you can either have an alias for them already, resond
  1078. to their mail to you, or use the system alias feature!
  1079. .P
  1080. Enough hype, right?  Okay...to use this feature, you specify an
  1081. address by either "machine!person" ignoring if your specific
  1082. machine can talk directly to the machine specified, or, if you
  1083. prefer the Internet addressing scheme, "person@machine".  When
  1084. you enter the address as specified, the mailer will quickly
  1085. search through the pathalias database file and expand the
  1086. specified address to be a legitimate routing address.
  1087. .P
  1088. What's really nice about this is that the address that we're
  1089. going to send to can be either on ARPA, CSNET, BITNET, uucp,
  1090. or any other network.  The method of specifying the basic
  1091. address is the same regardless!
  1092. .P
  1093. For example, mail to me could be sent as either "hplabs!taylor"
  1094. or "taylor@hplabs".  \fBElm\fR will expand them
  1095. both in the same manner and include a ``route'' to the 
  1096. machine \fIhplabs\fR, if needed.
  1097. .P 0
  1098. As the song goes, check the alias guide...
  1099. .P
  1100. For those sites with the domains database installed, you can
  1101. also mail to users on domain based systems by simply specifying
  1102. their name, the machine they receive mail on and a full domain
  1103. specification.
  1104. .P
  1105. For example, say you have a friend Maurice who reads mail 
  1106. on \s9JOEVAX\s10 in the Mailnet world.  You could mail to him by using
  1107. the address "Maurice@\s9JOEVAX.MAILNET\s10" and your system will
  1108. expand the address correctly.
  1109. .P
  1110. Guess where to go for more information...!!
  1111. .sp 2
  1112. .H 1 "Expert Mail Users and Debugging the Mailer"
  1113. .P
  1114. There are some additional facilities available in the
  1115. .B Elm
  1116. mailer for those people who are knowledgable about 
  1117. mail protocols, or trying to debug/track down a 
  1118. problem.
  1119. .P
  1120. The `h' \fIheaders\fR command at the outermost level of the mailer
  1121. will display the current message ignoring the current
  1122. setting of the `weed' option.  This is most useful
  1123. for answering questions of the form "I wonder what
  1124. this guy put in his header?" and such.  This command
  1125. does not show up on the mini-menu because it is somewhat
  1126. esoteric, but it does appear on the `?' help screen (can
  1127. you find it there, though?).
  1128. .P
  1129. The `@' command at the outermost level of the mailer
  1130. will output a screen of debugging information,
  1131. including the number of lines and 
  1132. offsets of each of the message in the current mailbox.
  1133. .P
  1134. The `#' command at the outermost level of the mailer
  1135. will display the entire stored `record structure' for
  1136. the current message.
  1137. .P
  1138. The `%' command at the outermost level of the mailer
  1139. will display the full computed return address of the
  1140. current message.
  1141. .P
  1142. Starting up 
  1143. .B Elm
  1144. with the "-d" debug option will create a file called
  1145. .I Elm:debug.info
  1146. in your home directory and contain a wealth of useful
  1147. information (to me, at least!) to aid in tracking down
  1148. what errors are occuring and why.  
  1149. .sp
  1150. .P
  1151. If there are any problems with the mailer,  please try
  1152. to recreate the error with the debug option enabled
  1153. and set to the highest level (9)
  1154. before sending defect reports my way.
  1155. .sp 3
  1156. One final note: all error names reported by the program
  1157. are defined in the Bell System V Reference Manual in \fIerrno\fR(2).
  1158. END-OF-FILE
  1159.  
  1160. if [ "$filename" != "/dev/null" ]
  1161. then
  1162.   size=`wc -c < $filename`
  1163.  
  1164.   if [ $size != 39623 ]
  1165.   then
  1166.     echo $filename changed - should be 39623 bytes, not $size bytes
  1167.   fi
  1168.  
  1169.   chmod 644 $filename
  1170. fi
  1171.  
  1172. echo end of this archive file....
  1173. exit 0
  1174.  
  1175.