cd08f5c92f
A few doc@FreeBSD.org -> freebsd-doc@FreeBSD.org fixes. One freebsd -> FreeBSD name fix. Reviewed by: nik
704 lines
30 KiB
Text
704 lines
30 KiB
Text
<!-- $Id: article.sgml,v 1.3 1999-08-29 16:08:32 jhb Exp $ -->
|
|
<!-- FreeBSD Documentation Project -->
|
|
|
|
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
|
<book>
|
|
|
|
<bookinfo>
|
|
<bookbiblio>
|
|
<title>An MH Primer</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Matt</firstname>
|
|
<surname>Midboe</surname>
|
|
<affiliation>
|
|
<address>
|
|
<email>matt@garply.com</email>
|
|
</address>
|
|
</affiliation>
|
|
</author></authorgroup>
|
|
|
|
<pubdate>v1.0, 16 January 1996</pubdate>
|
|
|
|
<abstract><para>This document contains an introduction to using MH on
|
|
FreeBSD</para></abstract>
|
|
|
|
</bookbiblio>
|
|
</bookinfo>
|
|
|
|
<chapter id="mhintro">
|
|
<title>Introduction</title>
|
|
|
|
<para>MH started back in 1977 at the RAND Corporation, where the
|
|
initial philosophies behind MH were developed. MH isn't so much a
|
|
monolithic email program but a philosophy about how best to develop
|
|
tools for reading email. The MH developers have done a great job
|
|
adhering to the <acronym>KISS</> principle: Keep It Simple Stupid.
|
|
Rather than have one large program for reading, sending and handling
|
|
email they have written specialized programs for each part of your
|
|
email life. One might liken MH to the specialization that one finds
|
|
in insects and nature. Each tool in MH does one thing, and does it
|
|
very well.</para>
|
|
|
|
<para>Beyond just the various tools that one uses to handle their
|
|
email MH has done an excellent job keeping the configuration of each
|
|
of these tools consistent and uniform. In fact, if you are not quite
|
|
sure how something is supposed to work or what the arguments for some
|
|
command are supposed to be then you can generally guess and be right.
|
|
Each MH command is consistent about how it handles reading the
|
|
configuration files and how it takes arguments on the command line.
|
|
One useful thing to remember is that you can always add a
|
|
<option>-help</option> to the command to have it display the options
|
|
for that command.</para>
|
|
|
|
<para>The first thing that you need to do is to make sure that you have
|
|
installed the MH package on your FreeBSD machine. If you installed
|
|
from CDROM you should be able to execute the following to load mh:
|
|
<informalexample>
|
|
<screen># <userinput>pkg_add /cdrom/packages/mh-6.8.3.tgz</></screen>
|
|
</informalexample>
|
|
You will notice that it created a <filename>/usr/local/lib/mh</>
|
|
directory for you as well as adding several binaries to the
|
|
<filename>/usr/local/bin</> directory. If you would prefer to compile
|
|
it yourself then you can anonymous ftp it from <ulink
|
|
URL="ftp://ftp.ics.uci.edu/">ftp.ics.uci.edu</ulink> or <ulink
|
|
URL="ftp://louie.udel.edu/">louie.udel.edu</ulink>.</para>
|
|
|
|
<para>This primer is not a full comprehensive explanation of how MH
|
|
works. This is just intended to get you started on the road to
|
|
happier, faster mail reading. You should read the man pages for the
|
|
various commands. Also you might want to read the <ulink
|
|
URL="news:comp.mail.mh">comp.mail.mh</ulink> newsgroup. Also you can
|
|
read the <ulink
|
|
URL="http://www.cis.ohio-state.edu/hypertext/faq/usenet/mh-faq/part1/faq.html">FAQ
|
|
for MH</ulink>. The best resource for MH is the O'Reilly and Associates book
|
|
written by Jerry Peek.</para>
|
|
|
|
</chapter>
|
|
|
|
<chapter>
|
|
<title>Reading Mail</title>
|
|
|
|
<para>This section covers how to use <command>inc</>,
|
|
<command>show</>, <command>scan</>, <command>next</>,
|
|
<command>prev</>, <command>rmm</>, <command>rmf</>, and
|
|
<command>msgchk</>. One of the best things about MH is the
|
|
consistent interface between programs. A few things to keep in mind
|
|
when using these commands is how to specify message lists. In the
|
|
case of <command>inc</> this doesn't really make any sense but with
|
|
commands like <command>show</> it is useful to know. </para>
|
|
|
|
<para>A message list can consist of something like <parameter>23 20
|
|
16</> which will act on messages 23, 20 and 16. This is fairly simple
|
|
but you can do more useful things like <parameter>23-30</> which will
|
|
act on all the messages between 23 and 30. You can also specify
|
|
something like <parameter>cur:10</> which will act on the current
|
|
message and the next 9 messages. The <parameter>cur</>,
|
|
<parameter>last</>, and <parameter>first</> messages are special
|
|
messages that refer to the current, last or first message in the
|
|
folder.</para>
|
|
|
|
|
|
<sect1 id="inc">
|
|
<title><command>inc</>, <command>msgchk</>—read in your new email or check it</title>
|
|
|
|
<para>If you just type in <userinput>inc</> and hit <keycap>return</>
|
|
you will be well on your way to getting started with MH. The first
|
|
time you run <command>inc</> it will setup your account to use all
|
|
the MH defaults and ask you about creating a Mail directory. If you
|
|
have mail waiting to be downloaded you will see something that looks
|
|
like:
|
|
<informalexample>
|
|
<screen> 29 01/15 Doug White Re: Another Failed to boot problem<<On Mon, 15 J
|
|
30 01/16 "Jordan K. Hubbar Re: FBSD 2.1<<> Do you want a library instead of
|
|
31 01/16 Bruce Evans Re: location of bad144 table<<>> >It would appea
|
|
32 01/16 "Jordan K. Hubbar Re: video is up<<> Anyway, mrouted won't run, ev
|
|
33 01/16 Michael Smith Re: FBSD 2.1<<Nate Williams stands accused of sa</screen>
|
|
</informalexample>
|
|
This is the same thing you will see from a <command>scan</> (see
|
|
<xref linkend="scan">). If you just run <command>inc</> with no
|
|
arguments it will look on your computer for email that is supposed to
|
|
be coming to you.</para>
|
|
|
|
<para>A lot of people like to use POP for grabbing their email. MH can do
|
|
POP to grab your email. You will need to give <command>inc</> a few command
|
|
line arguments.
|
|
<informalexample>
|
|
<screen>tempest% <userinput>inc -host mail.pop.org -user <replaceable>username</> -norpop</></screen>
|
|
</informalexample>
|
|
That tells <command>inc</> to go to <parameter>mail.pop.org</> to
|
|
download your email, and that your username on their system is
|
|
<replaceable>username</>. The <option>-norpop</option> option tells
|
|
<command>inc</> to use plain POP3 for downloading your email. MH has
|
|
support for a few different dialects of POP. More than likely you
|
|
will never ever need to use them though. While you can do more
|
|
complex things with inc such as audit files and scan format files
|
|
this will get you going.</para>
|
|
|
|
<para>The <command>msgchk</> command is used to get information on
|
|
whether or not you have new email. <command>msgchk</> takes the same
|
|
<option>-host</option> and <option>-user</option> options that
|
|
<command>inc</> takes.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="show">
|
|
<title><command>show</>, <command>next</> and <command>prev</>—displaying and moving through email</title>
|
|
|
|
<para><command>show</> is to show a letter in your current folder.
|
|
Like <command>inc</>, <command>show</> is a fairly straightforward
|
|
command. If you just type <userinput>show</> and hit <keycap>return</>
|
|
then it displays the current message. You can also give specific
|
|
message numbers to show:
|
|
<informalexample>
|
|
<screen>tempest% <userinput>show 32 45 56</></screen>
|
|
</informalexample>
|
|
This would display message numbers 32, 45 and 56 right after each
|
|
other. Unless you change the default behavior <command>show</>
|
|
basically just does a <command>more</> on the email message.</para>
|
|
|
|
<para><command>next</> is used to move onto the next message and
|
|
<command>prev</> will go to the previous message. Both commands have
|
|
an implied <command>show</> command so that when you go to the next
|
|
message it automatically displays it.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="scan">
|
|
<title><command>scan</>—shows you a scan of your messages</title>
|
|
|
|
<para><command>scan</> will display a brief listing of the messages
|
|
in your current folder. This is an example of what the
|
|
<command>scan</> command will give you.
|
|
<informalexample>
|
|
<screen> 30+ 01/16 "Jordan K. Hubbar Re: FBSD 2.1<<> Do you want a library instead of
|
|
31 01/16 Bruce Evans Re: location of bad144 table<<>> >It would appea
|
|
32 01/16 "Jordan K. Hubbar Re: video is up<<> Anyway, mrouted won't run, ev
|
|
33 01/16 Michael Smith Re: FBSD 2.1<<Nate Williams stands accused of sa</screen>
|
|
</informalexample>
|
|
Like just about everything in MH this display is very configurable.
|
|
This is the typical default display. It gives you the message number,
|
|
the date on the email, the sender, the subject line, and a sentence
|
|
fragment from the very beginning of the email if it can fit it. The
|
|
<literal>+</> means that message is the current message, so if you do
|
|
a <command>show</> it will display that message.</para>
|
|
|
|
<para>One useful option for scan is the <option>-reverse</option>
|
|
option. This will list your messages with the highest message number
|
|
first and lowest message number last. Another useful option with
|
|
<command>scan</> is to have it read from a file. If you want to scan
|
|
your incoming mailbox on FreeBSD without having to <command>inc</> it
|
|
you can do <command>scan -file
|
|
/var/mail/<replaceable>username</></command>. This can be used with
|
|
any file that is in the <database>mbox</> format.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="rmm">
|
|
<title><command>rmm</> and <command>rmf</>—remove the current message or folder</title>
|
|
|
|
<para><command>rmm</> is used to remove a mail message. The default
|
|
is typically to not actually remove the message but to rename the
|
|
file to one that is ignored by the MH commands. You will need to
|
|
through periodically and physically delete the <quote>removed</>
|
|
messages.</para>
|
|
|
|
<para>The <command>rmf</> command is used to remove folders. This
|
|
doesn't just rename the files but actually removes the from the hard
|
|
drive so you should be careful when you use this command.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="samplereading">
|
|
<title>A typical session of reading with MH</title>
|
|
|
|
<para>The first thing that you will want to do is <command>inc</>
|
|
your new mail. So at a shell prompt just type in <command>inc</> and
|
|
hit <keycap>return</>.
|
|
<informalexample>
|
|
<screen>tempest% <userinput>inc</>
|
|
Incorporating new mail into inbox...
|
|
|
|
36+ 01/19 "Stephen L. Lange Request...<<Please remove me as contact for pind
|
|
37 01/19 Matt Thomas Re: kern/950: Two PCI bridge chips fail (multipl
|
|
38 01/19 "Amancio Hasty Jr Re: FreeBSD and VAT<<>>> Bill Fenner said: > In
|
|
tempest%</screen>
|
|
</informalexample>
|
|
This shows you the new email that has been added to your mailbox. So
|
|
the next thing to do is <command>show</> the email and move around.
|
|
<informalexample>
|
|
<screen>tempest% <userinput>show</>
|
|
Received: by sashimi.wwa.com (Smail3.1.29.1 #2)
|
|
id m0tdMZ2-001W2UC; Fri, 19 Jan 96 13:33 CST
|
|
Date: Fri, 19 Jan 1996 13:33:31 -0600 (CST)
|
|
From: "Stephen L. Lange" <stvlange@wwa.com>
|
|
To: matt@garply.com
|
|
Subject: Request...
|
|
Message-Id: <Pine.BSD.3.91.960119133211.824A-100000@sashimi.wwa.com>
|
|
Mime-Version: 1.0
|
|
Content-Type: TEXT/PLAIN; charset=US-ASCII
|
|
|
|
|
|
Please remove me as contact for pindat.com
|
|
|
|
tempest% <userinput>rmm</>
|
|
tempest% <userinput>next</>
|
|
Received: from localhost (localhost [127.0.0.1]) by whydos.lkg.dec.com (8.6.11/8
|
|
.6.9) with SMTP id RAA24416; Fri, 19 Jan 1996 17:56:48 GMT
|
|
Message-Id: <199601191756.RAA24416@whydos.lkg.dec.com>
|
|
X-Authentication-Warning: whydos.lkg.dec.com: Host localhost didn't use HELO pro
|
|
tocol
|
|
To: hsu@clinet.fi
|
|
Cc: hackers@FreeBSD.org
|
|
Subject: Re: kern/950: Two PCI bridge chips fail (multiple multiport ethernet
|
|
boards)
|
|
In-Reply-To: Your message of "Fri, 19 Jan 1996 00:18:36 +0100."
|
|
<199601182318.AA11772@Sysiphos>
|
|
X-Mailer: exmh version 1.5omega 10/6/94
|
|
Date: Fri, 19 Jan 1996 17:56:40 +0000
|
|
From: Matt Thomas <matt@lkg.dec.com>
|
|
Sender: owner-hackers@FreeBSD.org
|
|
Precedence: bulk
|
|
|
|
|
|
This is due to a typo in pcireg.h (to
|
|
which I am probably the guilty party).</screen>
|
|
</informalexample></para>
|
|
|
|
<para>The <command>rmm</> removed the current message and the
|
|
<command>next</> command moved me on to the next message.
|
|
Now if I wanted to look at ten most recent messages so I could read
|
|
one of them here is what I would do:
|
|
<informalexample>
|
|
<screen>tempest% <userinput>scan last:10</>
|
|
26 01/16 maddy Re: Testing some stuff<<yeah, well, Trinity has
|
|
27 01/17 Automatic digest NET-HAPPENINGS Digest - 16 Jan 1996 to 17 Jan 19
|
|
28 01/17 Evans A Criswell Re: Hey dude<<>From matt@tempest.garply.com Tue
|
|
29 01/16 Karl Heuer need configure/make volunteers<<The FSF is looki
|
|
30 01/18 Paul Stephanouk Re: [alt.religion.scientology] Raw Meat (humor)<
|
|
31 01/18 Bill Lenherr Re: Linux NIS Solaris<<--- On Thu, 18 Jan 1996 1
|
|
34 01/19 John Fieber Re: Stuff for the email section?<<On Fri, 19 Jan
|
|
35 01/19 support@foo.garpl [garply.com #1138] parlor<<Hello. This is the Ne
|
|
37+ 01/19 Matt Thomas Re: kern/950: Two PCI bridge chips fail (multipl
|
|
38 01/19 "Amancio Hasty Jr Re: FreeBSD and VAT<<>>> Bill Fenner said: > In
|
|
tempest%</screen>
|
|
</informalexample>
|
|
Then if I wanted to read message number 27 I would do a
|
|
<userinput>show 27</> and it would be displayed. As you can probably
|
|
tell from this sample session MH is pretty easy to use and looking
|
|
through emails and displaying them is fairly intuitive and easy.
|
|
</para>
|
|
|
|
</sect1>
|
|
</chapter>
|
|
|
|
<chapter>
|
|
<title>Folders and Mail Searching</title>
|
|
|
|
<para>Anybody who gets lots of email definitely wants to be able to
|
|
prioritize, stamp, brief, de-brief, and number their emails in a
|
|
variety of different ways. MH can do this better than just about
|
|
anything. One thing that we haven't really talked about is the
|
|
concept of folders. You have undoubtedly come across the folders
|
|
concept using other email programs. MH has folders too. MH can even
|
|
do sub-folders of a folder. One thing you should keep in mind with MH
|
|
is that when you ran <command>inc</> for the first time and it asked
|
|
you if it could create a <filename>Mail</> directory it began storing
|
|
everything in that directory. If you look at that directory you will
|
|
find a directory named <filename>inbox</>. The <filename>inbox</>
|
|
directory houses all of your incoming mail that hasn't been thrown
|
|
anywhere else.</para>
|
|
|
|
<para>Whenever you create a new folder a new directory is going to be
|
|
created underneath your MH <filename>Mail</> directory, and messages
|
|
in that folder are going to be stored in that directory. When new
|
|
email comes in that new email is thrown into your <filename>inbox</>
|
|
directory with a file name that is equivalent to the message number.
|
|
So even if you didn't have any of the MH tools to read your email you
|
|
could still use standard UNIX commands to munge around in those
|
|
directories and just more your files. It's this simplicity that
|
|
really gives you a lot of power with what you can do with your
|
|
email.</para>
|
|
|
|
<para>Just as you can use message lists like <parameter>23 16 42</>
|
|
with most MH commands there is a folder option you can specify with
|
|
just about every MH command. If you do a <command>scan +freebsd</> it
|
|
will scan your <filename>freebsd</> folder, and your current folder
|
|
will be changed to <filename>freebsd</>. If you do a <command>show
|
|
+freebsd 23 16 42</>, <command>show</> is going to switch to your
|
|
<filename>freebsd</> folder and display messages 23, 16 and 42. So
|
|
remember that <option>+<replaceable>folder</></> syntax. You will
|
|
need to make sure you use it to make commands process different
|
|
folders. Remember you default folder for mail is <filename>inbox</>
|
|
so doing a <command>folder +inbox</> should always get you back to
|
|
your mail. Of course, in MH's infinite flexibility this can be
|
|
changed but most places have probably left it as
|
|
<command>inbox</>.</para>
|
|
|
|
|
|
<sect1>
|
|
<title><command>pick</>—search email that matches certain criteria</title>
|
|
|
|
<para><command>pick</> is one of the more complex commands in the MH
|
|
system. So you might want to read the
|
|
<citerefentry><refentrytitle>pick</><manvolnum>1</></> man page for a
|
|
more thorough understanding. At its simplest level you can do
|
|
something like
|
|
<informalexample>
|
|
<screen>tempest% <userinput>pick -search pci</>
|
|
15
|
|
42
|
|
55
|
|
56
|
|
57</screen>
|
|
</informalexample>
|
|
|
|
This will tell <command>pick</> to look through every single line in
|
|
every message in your current folder and tell you which message
|
|
numbers it found the word <literal>pci</> in. You can then
|
|
<command>show</> those messages and read them if you wish or
|
|
<command>rmm</> them. You would have to specify something like
|
|
<command>show 15 42 55-57</> to display them though. A slightly more
|
|
useful thing to do is this:
|
|
<informalexample>
|
|
<screen>tempest% <userinput>pick -search pci -seq pick</>
|
|
5 hits
|
|
tempest% <userinput>show pick</></screen>
|
|
</informalexample>
|
|
This will show you the same messages you just didn't have to work as
|
|
hard to do it. The <option>-seq</option> option is really an
|
|
abbreviation of <option>-sequence</option> and <command>pick</> is
|
|
just a sequence which contains the message numbers that matched. You
|
|
can use sequences with just about any MH command. So you could have
|
|
done an <command>rmm pick</> and all those messages would be removed
|
|
instead. You sequence can be named anything. If you run pick again it
|
|
will overwrite the old sequence if you use the same name.</para>
|
|
|
|
<para>Doing a <command>pick -search</command> can be a bit more time
|
|
consuming than just searching for message from someone, or to
|
|
someone. So <command>pick</> allows you to use the following
|
|
predefined search criteria:
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term><option>-to</option></term>
|
|
<listitem>
|
|
<para>search based upon who the message is to</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-cc</option></term>
|
|
<listitem>
|
|
<para>search based on who is in the cc list</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-from</option></term>
|
|
<listitem>
|
|
<para>search for who sent the message</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-subject</option></term>
|
|
<listitem>
|
|
<para>search for emails with this subject</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-date</option></term>
|
|
<listitem>
|
|
<para>find emails with a matching dat</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--<replaceable>component</replaceable></option></term>
|
|
<listitem>
|
|
<para>search for any other component in the header. (i.e.
|
|
<option>--reply-to</> to find all emails with a certain reply-to in
|
|
the header)</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist></para>
|
|
|
|
<para>This allows you to do things like
|
|
<informalexample>
|
|
<screen>tempest% <userinput>pick -to freebsd-hackers@FreeBSD.org -seq hackers</></screen>
|
|
</informalexample>
|
|
to get a list of all the email send to the FreeBSD hackers mailing
|
|
list. <command>pick</> also allows you to group these criteria in
|
|
different ways using the following options:
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>… <option>-and</option> …</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>… <option>-or</option> &hellip</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><option>-not</option> …</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><option>-lbrace</option> … <option>-rbrace</option></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
These commands allow you to do things like
|
|
<informalexample>
|
|
<screen>tempest% <userinput>pick -to freebsd-hackers -and -cc freebsd-hackers</></screen>
|
|
</informalexample>
|
|
That will grab all the email in your inbox that was sent to
|
|
freebsd-hackers or cc'd to that list. The brace options allow you to
|
|
group search criteria together. This is sometimes very necessary as
|
|
in the following example
|
|
<informalexample>
|
|
<screen>tempest% <userinput>pick -lbrace -to freebsd-hackers -and
|
|
-not -cc freebsd-questions -rbrace -and -subject pci</></screen>
|
|
</informalexample></para>
|
|
|
|
<para>Basically this says <quote>pick (to freebsd-hackers and not cc'd on
|
|
freebsd-questions) and the subject is pci</quote>. It should look through your
|
|
folder and find all messages sent to the freebsd-hackers list that
|
|
aren't cc'd to the freebsd-questions list that contain something on
|
|
pci in the subject line. Ordinarily you might have to worry about
|
|
something called operator precedence. Remember in math how you
|
|
evaluate from left to right and you do multiplication and division
|
|
first and addition and subtraction second? MH has the same type of
|
|
rules for <command>pick</>. It's fairly complex so you might want to study
|
|
the man page. This document is just to help you get acquainted with
|
|
MH.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title><command>folder</>, <command>folders</>, <command>refile</>—three useful programs for folder maintenance</title>
|
|
|
|
<para>There are three programs which are primarily just for
|
|
manipulating your folders. The <command>folder</> program is used to
|
|
switch between folders, pack them, and list them. At its simplest
|
|
level you can do a <command>folder +<replaceable>newfolder</></> and
|
|
you will be switched into <replaceable>newfolder</>. From there on
|
|
out all your MH commands like <command>comp</>, <command>repl</>,
|
|
<command>scan</>, and <command>show</> will act on that
|
|
<command>newfolder</> folder.</para>
|
|
|
|
<para>Sometimes when you are reading and deleting messages you will
|
|
develop <quote>holes</> in your folders. If you do a <command>scan</>
|
|
you might just see messages 34, 35, 36, 43, 55, 56, 57, 80. If you do
|
|
a <command>folder -pack</command> this will renumber all your
|
|
messages so that there are no holes. It doesn't actually delete any
|
|
messages though. So you may need to periodically go through and
|
|
physically delete <command>rmm</>'d messages.</para>
|
|
|
|
<para>If you need statistics on your folders you can do a
|
|
<command>folders</> or <command>folder -all</command> to list all
|
|
your folders, how many messages they have, what the current message
|
|
is in each one and so on. This line of stats it displays for all your
|
|
folders is the same one you get when you change to a folder with
|
|
<command>folder +foldername</>. A <command>folders</> command looks
|
|
like this:
|
|
<informalexample>
|
|
<screen> Folder # of messages ( range ); cur msg (other files)
|
|
announce has 1 message ( 1- 1).
|
|
drafts has no messages.
|
|
f-hackers has 43 messages ( 1- 43).
|
|
f-questions has 16 messages ( 1- 16).
|
|
inbox+ has 35 messages ( 1- 38); cur= 37.
|
|
lists has 8 messages ( 1- 8).
|
|
netfuture has 1 message ( 1- 1).
|
|
out has 31 messages ( 1- 31).
|
|
personal has 6 messages ( 1- 6).
|
|
todo has 58 messages ( 1- 58); cur= 1.
|
|
|
|
TOTAL= 199 messages in 13 folders.
|
|
</screen>
|
|
</informalexample></para>
|
|
|
|
<para>The <command>refile</> command is what you use to move messages
|
|
between folders. When you do something like <command>refile 23
|
|
+netfuture</> message number 23 is moved into the
|
|
<filename>netfuture</> folder. You could also do something like
|
|
<command>refile 23 +netfuture/latest</> which would put message
|
|
number 23 in a subfolder called <filename>latest</> under the
|
|
<filename>netfuture</> folder. If you want to keep a message in the
|
|
current folder and link it you can do a <command>refile -link 23
|
|
+netfuture</command> which would keep 23 in your current
|
|
<filename>inbox</> but also list in your <filename>netfuture</>
|
|
folder. You are probably beginning to realize some of the really
|
|
powerful things you can do with MH.</para>
|
|
|
|
</sect1>
|
|
</chapter>
|
|
|
|
<chapter>
|
|
<title>Sending Mail</title>
|
|
|
|
<para>Email is a two way street for most people so you want to be
|
|
able to send something back. The way MH handles sending mail can be a
|
|
bit difficult to follow at first, but it allows for incredible
|
|
flexibility. The first thing MH does is to copy a components file
|
|
into your outgoing email. A components file is basically a skeleton
|
|
email letter with stuff like the To: and Subject: headers already in
|
|
it. You are then sent into your editor where you fill in the header
|
|
information and then type the body of your message below the dashed
|
|
lines in the message. Then to the <command>whatnow</> program. When
|
|
you are at the <prompt>What now?</prompt> prompt you can tell it to
|
|
<command>send</>, <command>list</>, <command>edit</>,
|
|
<command>edit</>, <command>push</>, and <command>quit</>. Most of
|
|
these commands are self-explanatory. So the message sending process
|
|
involves copying a component file, editing your email, and then
|
|
telling the <command>whatnow</> program what to do with your
|
|
email.</para>
|
|
|
|
|
|
<sect1>
|
|
<title><command>comp</>, <command>forw</>, <command>reply</>—compose, forward or reply to a message to someone</title>
|
|
|
|
<para>The <command>comp</> program has a few useful command line
|
|
options. The most important one to know right now is the
|
|
<option>-editor</option> option. When MH is installed the default
|
|
editor is usually a program called <command>prompter</> which comes
|
|
with MH. It's not a very exciting editor and basically just gets the
|
|
job done. So when you go to compose a message to someone you might
|
|
want to use <command>comp -editor /usr/bin/vi/</> or <command>comp
|
|
-editor /usr/local/bin/pico/</> instead. Once you have run
|
|
<emphasis>comp</emphasis> you are in your editor and you see
|
|
something that looks like this:
|
|
<informalexample>
|
|
<screen>To:
|
|
cc:
|
|
Subject:
|
|
--------
|
|
</screen>
|
|
</informalexample></para>
|
|
|
|
<para>You need to put the person you are sending the mail to after the
|
|
<literal>To:</> line. It works the same way for the other headers
|
|
also, so you would need to put your subject after the
|
|
<literal>Subject:</> line. Then you would just put the body of your
|
|
message after the dashed lines. It may seem a bit simplistic since a
|
|
lot of email programs have special requesters that ask you for this
|
|
information but there really isn't any point to that. Plus this
|
|
really gives you excellent flexibility.
|
|
<informalexample>
|
|
<screen>To:<userinput>freebsd-rave@FreeBSD.org</>
|
|
cc:
|
|
Subject:<userinput>And on the 8th day God created the FreeBSD core team</>
|
|
--------
|
|
<userinput>Wow this is an amazing operating system. Thanks!</></screen>
|
|
</informalexample>
|
|
You can now save this message and exit your editor. You will see the
|
|
<prompt>What now?</> prompt and you can type in
|
|
<userinput>send</> or <userinput>s</> and hit
|
|
<keycap>return</>. Then the FreeBSD core team will receive their just
|
|
rewards. As I mentioned earlier you can also use other commands, for
|
|
example <command>quit</> if you don't want to send the
|
|
message.</para>
|
|
|
|
<para>The <command>forw</> command is stunningly similar. The big
|
|
difference being that the message you are forwarding is automatically
|
|
included in the outgoing message. When you run <command>forw</> it
|
|
will forward your current message. You can always tell it to forward
|
|
something else by doing something like <command>forw 23</> and then
|
|
message number 23 will be put in your outgoing message instead of the
|
|
current message. Beyond those small differences <command>forw</>
|
|
functions exactly the same as <command>comp</>. You go through the
|
|
exact same message sending process.</para>
|
|
|
|
<para>The <command>repl</> command will reply to whatever your
|
|
current message is, unless you give it a different message to reply
|
|
to. <command>repl</> will do its best to go ahead and fill in some of
|
|
the email headers already. So you will notice that the
|
|
<literal>To:</> header already has the address of the recipient in
|
|
there. Also the <literal>Subject:</> line will already be filled in.
|
|
You then go about the normal message composition process and you are
|
|
done. One useful command line option to know here is the
|
|
<option>-cc</option> option. You can use <parameter>all</>,
|
|
<parameter>to</>, <parameter>cc</>, <parameter>me</> after the
|
|
<option>-cc</option> option to have <command>repl</> automatically
|
|
add the various addresses to the cc list in the message. You have
|
|
probably noticed that the original message isn't included. This is
|
|
because most MH setups are configured to do this from the
|
|
start.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title><filename>components</>, and <filename>replcomps</>—components files for <command>comp</> and <command>repl</></title>
|
|
|
|
<para>The <filename>components</> file is usually in
|
|
<filename>/usr/local/lib/mh</filename>. You can copy that file into
|
|
your MH Mail directory and edit to contain what you want it to
|
|
contain. It is a fairly basic file. You have various email headers at
|
|
the top, a dashed line and then nothing. The
|
|
<command>comp</command> command just copies this
|
|
<filename>components</> file and then edits it. You can add any
|
|
kind of valid RFC822 header you want. For instance you could have
|
|
something like this in your <filename>components</> file:
|
|
<informalexample>
|
|
<screen>To:
|
|
Fcc: out
|
|
Subject:
|
|
X-Mailer: MH 6.8.3
|
|
X-Home-Page: http://www.FreeBSD.org/
|
|
-------</screen>
|
|
</informalexample>
|
|
|
|
MH would then copy this components file and throw you into your
|
|
editor. The <filename>components</> file is fairly simple. If you
|
|
wanted to have a signature on those messages you would just put your
|
|
signature in that <filename>components</> file.</para>
|
|
|
|
<para>The <filename>replcomps</> file is a bit more complex. The default
|
|
<filename>replcomps</> looks like this:
|
|
<informalexample>
|
|
<screen>%(lit)%(formataddr %<{reply-to}%?{from}%?{sender}%?{return-path}%>)\
|
|
%<(nonnull)%(void(width))%(putaddr To: )\n%>\
|
|
%(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\
|
|
%<(nonnull)%(void(width))%(putaddr cc: )\n%>\
|
|
%<{fcc}Fcc: %{fcc}\n%>\
|
|
%<{subject}Subject: Re: %{subject}\n%>\
|
|
%<{date}In-reply-to: Your message of "\
|
|
%<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id}
|
|
%{message-id}%>\n%>\
|
|
--------
|
|
</screen>
|
|
</informalexample></para>
|
|
|
|
<para>It's in the same basic format as the <filename>components</> file but
|
|
it contains quite a few extra formatting codes. The
|
|
<literal>%(lit)</> command makes room for the address. The
|
|
<literal>%(formataddr</> is a function that returns a proper email
|
|
address. The next part is <literal>%<</literal> which means if and
|
|
the <literal>{reply-to}</> means the reply-to field in the original
|
|
message. So that might be translated this way:
|
|
<informalexample>
|
|
<screen>%<<emphasis remap=bf>if</emphasis> {reply-to} <emphasis remap=bf>the original message has a reply-to</emphasis>
|
|
then give that to formataddr, %? <emphasis remap=bf>else</emphasis> {from} <emphasis remap=bf>take the
|
|
from address</emphasis>, %? <emphasis remap=bf>else</emphasis> {sender} <emphasis remap=bf>take the sender address</emphasis>, %?
|
|
<emphasis remap=bf>else</emphasis> {return-path} <emphasis remap=bf>take the return-path from the original
|
|
message</emphasis>, %> <emphasis remap=bf>endif</emphasis>.</screen>
|
|
</informalexample></para>
|
|
|
|
<para>As you can tell MH formatting can get rather involved. You can
|
|
probably decipher what most of the other functions and variables
|
|
mean. All of the information on writing these format strings is in the
|
|
MH-Format man page. The really nice thing is that once you have built
|
|
your customized <filename>replcomps</> file you won't need to touch it
|
|
again. No other email program really gives you the power and
|
|
flexibility that MH gives you.</para>
|
|
|
|
</sect1>
|
|
</chapter>
|
|
</book>
|