- Use trademark entities - Add trademark attributions. - Always use correct case for trademarks. - Don't join trademarks with other words, e.g. using hyphens. trademark.ent: - Add entities for more trademarks / companies. - Sort the Sun trademark attribution entity.
778 lines
34 KiB
Text
778 lines
34 KiB
Text
<!-- $FreeBSD$ -->
|
|
<!-- FreeBSD Documentation Project -->
|
|
|
|
<!DOCTYPE ARTICLE PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
|
|
|
<!ENTITY % freebsd PUBLIC "-//FreeBSD//ENTITIES DocBook Miscellaneous FreeBSD Entities//EN">
|
|
%freebsd;
|
|
|
|
<!ENTITY % trademarks PUBLIC "-//FreeBSD//ENTITIES DocBook Trademark Entities//EN">
|
|
%trademarks;
|
|
]>
|
|
<article>
|
|
<articleinfo>
|
|
<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>
|
|
|
|
<legalnotice id="trademarks" role="trademarks">
|
|
&tm-attrib.freebsd;
|
|
&tm-attrib.opengroup;
|
|
&tm-attrib.general;
|
|
</legalnotice>
|
|
|
|
<abstract>
|
|
<para>This document contains an introduction to using MH on
|
|
FreeBSD</para>
|
|
</abstract>
|
|
</articleinfo>
|
|
|
|
<sect1 id="mhintro">
|
|
<title>Introduction</title>
|
|
|
|
<para>MH started back in 1977 at the RAND Corporation, where the
|
|
initial philosophies behind MH were developed. MH is not 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</acronym> 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>&prompt.root; <userinput>pkg_add /cdrom/packages/mh-6.8.3.tgz</userinput></screen>
|
|
</informalexample>
|
|
|
|
You will notice that it created a <filename>/usr/local/lib/mh</filename>
|
|
directory for you as well as adding several binaries to the
|
|
<filename>/usr/local/bin</filename> 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 manual pages
|
|
for the various commands. You might also want to read the <ulink
|
|
URL="news:comp.mail.mh">comp.mail.mh</ulink> newsgroup. Also
|
|
you can read the <ulink
|
|
URL="http://www.faqs.org/faqs/mail/mh-faq/">FAQ for MH</ulink>.
|
|
The best resource for MH is <ulink
|
|
URL="http://www.ics.uci.edu/~mh/book/">Jerry Peek's MH &
|
|
nmh: Email for Users & Programmers</ulink>.</para>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title>Reading Mail</title>
|
|
|
|
<para>This section covers how to use <command>inc</command>,
|
|
<command>show</command>, <command>scan</command>, <command>next</command>,
|
|
<command>prev</command>, <command>rmm</command>, <command>rmf</command>, and
|
|
<command>msgchk</command>. One of the best things about MH is the
|
|
consistent interface between programs. One thing to keep in
|
|
mind when using these commands is how to specify message lists.
|
|
In the case of <command>inc</command> this does not really make any
|
|
sense but with commands like <command>show</command> it is useful to
|
|
know. </para>
|
|
|
|
<para>A message list can consist of something like <parameter>23
|
|
20 16</parameter> which will act on messages 23, 20 and 16. This is
|
|
fairly simple but you can do more useful things like
|
|
<parameter>23-30</parameter> which will act on all the messages between
|
|
23 and 30. You can also specify something like
|
|
<parameter>cur:10</parameter> which will act on the current message and
|
|
the next 9 messages. The <parameter>cur</parameter>, <parameter>last</parameter>,
|
|
and <parameter>first</parameter> messages are special messages that refer
|
|
to the current, last or first message in the folder.</para>
|
|
|
|
<sect2 id="inc">
|
|
<title><command>inc</command>, <command>msgchk</command>—read in your
|
|
new email or check it</title>
|
|
|
|
<para>If you just type in <userinput>inc</userinput> and hit
|
|
<keycap>return</keycap> you will be well on your way to getting
|
|
started with MH. The first time you run <command>inc</command> it
|
|
will setup your account to use all the MH defaults and ask you
|
|
about creating a <filename>Mail</filename> directory under your HOME directory. If you have mail waiting to
|
|
be downloaded you will see something that looks like:</para>
|
|
|
|
<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>
|
|
|
|
<para>This is the same thing you will see from a
|
|
<command>scan</command> (see <xref linkend="scan">). If you just run
|
|
<command>inc</command> 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</command> a few command line arguments.</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>inc -host mail.pop.org -user <replaceable>username</replaceable> -norpop</userinput></screen>
|
|
</informalexample>
|
|
|
|
<para>That tells <command>inc</command> to go to
|
|
<parameter>mail.pop.org</parameter> to download your email, and that
|
|
your username on their system is <replaceable>username</replaceable>. The
|
|
<option>-norpop</option> option tells <command>inc</command> 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 <command>inc</command> such as audit files and scan format files this
|
|
will get you going.</para>
|
|
|
|
<para>The <command>msgchk</command> command is used to get information
|
|
on whether or not you have new email. <command>msgchk</command> takes
|
|
the same <option>-host</option> and <option>-user</option>
|
|
options that <command>inc</command> takes.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="show">
|
|
<title><command>show</command>, <command>next</command> and
|
|
<command>prev</command>—displaying and moving through
|
|
email</title>
|
|
|
|
<para><command>show</command> is to show a letter in your current
|
|
folder. Like <command>inc</command>, <command>show</command> is a fairly
|
|
straightforward command. If you just type <userinput>show</userinput>
|
|
and hit <keycap>return</keycap> then it displays the current
|
|
message. You can also give specific message numbers to
|
|
show:</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>show 32 45 56</userinput></screen>
|
|
</informalexample>
|
|
|
|
<para>This would display message numbers 32, 45 and 56 right
|
|
after each other. Unless you change the default behavior
|
|
<command>show</command> basically just does a <command>more</command> on the
|
|
email message.</para>
|
|
|
|
<para><command>next</command> is used to move onto the next message and
|
|
<command>prev</command> will go to the previous message. Both
|
|
commands have an implied <command>show</command> command so that when
|
|
you go to the next message it automatically displays
|
|
it.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="scan">
|
|
<title><command>scan</command>—shows you a scan of your
|
|
messages</title>
|
|
|
|
<para><command>scan</command> will display a brief listing of the
|
|
messages in your current folder. This is an example of what
|
|
the <command>scan</command> command will give you.</para>
|
|
|
|
<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>
|
|
|
|
<para>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>+</literal> means that
|
|
message is the current message, so if you do a
|
|
<command>show</command> 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</command> is to
|
|
have it read from a file. If you want to scan your incoming
|
|
mailbox on FreeBSD without having to <command>inc</command> it you
|
|
can do <command>scan -file
|
|
/var/mail/<replaceable>username</replaceable></command>. This can be used
|
|
with any file that is in the <database>mbox</database> format.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="rmm">
|
|
<title><command>rmm</command> and <command>rmf</command>—remove the
|
|
current message or folder</title>
|
|
|
|
<para><command>rmm</command> 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 periodically need to go through and physically delete the
|
|
<quote>removed</quote> messages.</para>
|
|
|
|
<para>The <command>rmf</command> command is used to remove folders.
|
|
This does not just rename the files but actually removes the
|
|
from the hard drive so you should be careful when you use this
|
|
command.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="samplereading">
|
|
<title>A typical session of reading with MH</title>
|
|
|
|
<para>The first thing that you will want to do is
|
|
<command>inc</command> your new mail. So at a shell prompt just type
|
|
in <command>inc</command> and hit <keycap>return</keycap>.</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>inc</userinput>
|
|
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
|
|
&prompt.user;</screen>
|
|
</informalexample>
|
|
|
|
<para>This shows you the new email that has been added to your
|
|
mailbox. So the next thing to do is <command>show</command> the email
|
|
and move around.</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>show</userinput>
|
|
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
|
|
|
|
&prompt.user; <userinput>rmm</userinput>
|
|
&prompt.user; <userinput>next</userinput>
|
|
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>The <command>rmm</command> removed the current message and the
|
|
<command>next</command> 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:</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>scan last:10</userinput>
|
|
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
|
|
&prompt.user;</screen>
|
|
</informalexample>
|
|
|
|
<para>Then if I wanted to read message number 27 I would do a
|
|
<userinput>show 27</userinput> 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>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<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 have not 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</command> for
|
|
the first time and it asked you if it could create a
|
|
<filename>Mail</filename> directory it began storing everything in that
|
|
directory. If you look at that directory you will find a
|
|
directory named <filename>inbox</filename>. The <filename>inbox</filename>
|
|
directory houses all of your incoming mail that has not 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</filename> directory, and
|
|
messages in that folder are going to be stored in that
|
|
directory. When a new email message comes, it is thrown
|
|
into your <filename>inbox</filename> directory with a file name that is
|
|
equivalent to the message number. So even if you did not 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 is 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</parameter> 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</command> it will scan your <filename>freebsd</filename>
|
|
folder, and your current folder will be changed to
|
|
<filename>freebsd</filename>. If you do a <command>show +freebsd 23 16
|
|
42</command>, <command>show</command> is going to switch to your
|
|
<filename>freebsd</filename> folder and display messages 23, 16 and 42.
|
|
So remember that <option>+<replaceable>folder</replaceable></option> 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</filename> so doing a <command>folder +inbox</command> 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</command>.</para>
|
|
|
|
<sect2>
|
|
<title><command>pick</command>—search email that matches certain
|
|
criteria</title>
|
|
|
|
<para><command>pick</command> is one of the more complex commands in
|
|
the MH system. So you might want to read the
|
|
<citerefentry><refentrytitle>pick</refentrytitle><manvolnum>1</manvolnum></citerefentry> man
|
|
page for a more thorough understanding. At its simplest level
|
|
you can do something like</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>pick -search pci</userinput>
|
|
15
|
|
42
|
|
55
|
|
56
|
|
57</screen>
|
|
</informalexample>
|
|
|
|
<para>This will tell <command>pick</command> 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</literal>
|
|
in. You can then <command>show</command> those messages and read them
|
|
if you wish or <command>rmm</command> them. You would have to specify
|
|
something like <command>show 15 42 55-57</command> to display them
|
|
though. A slightly more useful thing to do is this:</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>pick -search pci -seq pick</userinput>
|
|
5 hits
|
|
&prompt.user; <userinput>show pick</userinput></screen>
|
|
</informalexample>
|
|
|
|
<para>This will show you the same messages you just did not have
|
|
to work as hard to do it. The <option>-seq</option> option is
|
|
really an abbreviation of <option>-sequence</option> and
|
|
<command>pick</command> 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</command>
|
|
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</command> allows you to use the
|
|
following predefined search criteria:</para>
|
|
|
|
<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 <literal>Cc:</literal> 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 date</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</option> to find all emails with a certain
|
|
reply-to in the header)</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>This allows you to do things like
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>pick -to freebsd-hackers@FreeBSD.org -seq hackers</userinput></screen>
|
|
</informalexample>
|
|
|
|
to get a list of all the email send to the FreeBSD hackers
|
|
mailing list. <command>pick</command> also allows you to group these
|
|
criteria in different ways using the following options:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>… <option>-and</option> …</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>… <option>-or</option> …</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><option>-not</option> …</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><option>-lbrace</option> …
|
|
<option>-rbrace</option></para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>These commands allow you to do things like</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>pick -to freebsd-hackers -or -cc freebsd-hackers</userinput></screen>
|
|
</informalexample>
|
|
|
|
<para>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</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>pick -lbrace -to freebsd-hackers -and
|
|
-not -cc freebsd-questions -rbrace -and -subject pci</userinput></screen>
|
|
</informalexample>
|
|
|
|
<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 are not cc'd
|
|
to the freebsd-questions list and contain <quote>pci</quote> 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</command>. It is fairly complex
|
|
so you might want to study the manual page. This document is just
|
|
to help you get acquainted with MH.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><command>folder</command>, <command>folders</command>,
|
|
<command>refile</command>—three useful programs for folder
|
|
maintenance</title>
|
|
|
|
<para>There are three programs which are primarily just for
|
|
manipulating your folders. The <command>folder</command> program is
|
|
used to switch between folders, pack them, and list them. At
|
|
its simplest level you can do a <command>folder
|
|
+<replaceable>newfolder</replaceable></command> and you will be switched into
|
|
<replaceable>newfolder</replaceable>. From there on out all your MH
|
|
commands like <command>comp</command>, <command>repl</command>,
|
|
<command>scan</command>, and <command>show</command> will act on that
|
|
<command>newfolder</command> folder.</para>
|
|
|
|
<para>Sometimes when you are reading and deleting messages you
|
|
will develop <quote>holes</quote> in your folders. If you do a
|
|
<command>scan</command> 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 does not actually delete any messages though. So you
|
|
may need to periodically go through and physically delete
|
|
<command>rmm</command>'d messages.</para>
|
|
|
|
<para>If you need statistics on your folders you can do a
|
|
<command>folders</command> 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</command>. A
|
|
<command>folders</command> command looks like this:</para>
|
|
|
|
<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>The <command>refile</command> command is what you use to move
|
|
messages between folders. When you do something like
|
|
<command>refile 23 +netfuture</command> message number 23 is moved
|
|
into the <filename>netfuture</filename> folder. You could also do
|
|
something like <command>refile 23 +netfuture/latest</command> which
|
|
would put message number 23 in a subfolder called
|
|
<filename>latest</filename> under the <filename>netfuture</filename> 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</filename> but
|
|
also list in your <filename>netfuture</filename> folder. You are
|
|
probably beginning to realize some of the really powerful
|
|
things you can do with MH.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<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.
|
|
When you leave the editor, the <command>whatnow</command> program is run. When you are at the
|
|
<prompt>What now?</prompt> prompt you can tell it to
|
|
<command>send</command>, <command>list</command>, <command>edit</command>,
|
|
<command>push</command>, and <command>quit</command>. 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</command> program what to do with
|
|
your email.</para>
|
|
|
|
<sect2>
|
|
<title><command>comp</command>, <command>forw</command>,
|
|
<command>reply</command>—compose, forward or reply to a message
|
|
to someone</title>
|
|
|
|
<para>The <command>comp</command> 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</command> which comes with MH. It is 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</command> or <command>comp -editor
|
|
/usr/local/bin/pico</command> instead. Once you have run
|
|
<emphasis>comp</emphasis> you are in your editor and you see
|
|
something that looks like this:</para>
|
|
|
|
<informalexample>
|
|
<screen>To:
|
|
cc:
|
|
Subject:
|
|
--------</screen>
|
|
</informalexample>
|
|
|
|
<para>You need to put the person you are sending the mail to
|
|
after the <literal>To:</literal> line. It works the same way for the
|
|
other headers also, so you would need to put your subject
|
|
after the <literal>Subject:</literal> 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
|
|
is no point to that. Plus this really gives you excellent
|
|
flexibility.</para>
|
|
|
|
<informalexample>
|
|
<screen>To:<userinput>freebsd-rave@FreeBSD.org</userinput>
|
|
cc:
|
|
Subject:<userinput>And on the 8th day God created the FreeBSD core team</userinput>
|
|
--------
|
|
<userinput>Wow this is an amazing operating system. Thanks!</userinput></screen>
|
|
</informalexample>
|
|
|
|
<para>You can now save this message and exit your editor. You
|
|
will see the <prompt>What now?</prompt> prompt and you can type in
|
|
<userinput>send</userinput> or <userinput>s</userinput> and hit
|
|
<keycap>return</keycap>. Then the FreeBSD core team will receive
|
|
their just rewards. As I mentioned earlier, you can also use
|
|
other commands at the <prompt>What now?</prompt> prompt.
|
|
For example you can use <command>quit</command>, if you do not want
|
|
to send the message.</para>
|
|
|
|
<para>The <command>forw</command> 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</command> it will forward your current message. You can
|
|
always tell it to forward something else by doing something
|
|
like <command>forw 23</command> and then message number 23 will be
|
|
put in your outgoing message instead of the current message.
|
|
Beyond those small differences <command>forw</command> functions
|
|
exactly the same as <command>comp</command>. You go through the exact
|
|
same message sending process.</para>
|
|
|
|
<para>The <command>repl</command> command will reply to the
|
|
current message, unless you give it a different message to
|
|
reply to. <command>repl</command> will do its best to go ahead and
|
|
fill in some of the email headers already. So you will notice
|
|
that the <literal>To:</literal> header already has the address of the
|
|
recipient in there. Also the <literal>Subject:</literal> 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>, <parameter>to</parameter>, <parameter>cc</parameter>,
|
|
<parameter>me</parameter> after the <option>-cc</option> option to have
|
|
<command>repl</command> automatically add the various addresses to
|
|
the <literal>Cc:</literal> list in the message. You have probably noticed that the
|
|
original message is not included. This is because most MH
|
|
setups are configured to do this from the start.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><filename>components</filename>, and
|
|
<filename>replcomps</filename>—components files for
|
|
<command>comp</command> and <command>repl</command></title>
|
|
|
|
<para>The <filename>components</filename> 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</filename> 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</filename>
|
|
file:</para>
|
|
|
|
<informalexample>
|
|
<screen>To:
|
|
Fcc: out
|
|
Subject:
|
|
X-Mailer: MH 6.8.3
|
|
X-Home-Page: http://www.FreeBSD.org/
|
|
-------</screen>
|
|
</informalexample>
|
|
|
|
<para>MH would then copy this components file and throw you into
|
|
your editor. The <filename>components</filename> file is fairly
|
|
simple. If you wanted to have a signature on those messages
|
|
you would just put your signature in that
|
|
<filename>components</filename> file.</para>
|
|
|
|
<para>The <filename>replcomps</filename> file is a bit more complex. The
|
|
default <filename>replcomps</filename> looks like this:</para>
|
|
|
|
<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>It is in the same basic format as the
|
|
<filename>components</filename> file but it contains quite a few extra
|
|
formatting codes. The <literal>%(lit)</literal> command makes room
|
|
for the address. The <literal>%(formataddr</literal> is a function
|
|
that returns a proper email address. The next part is
|
|
<literal>%<</literal> which means if and the
|
|
<literal>{reply-to}</literal> means the reply-to field in the
|
|
original message. So that might be translated this way:</para>
|
|
|
|
<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>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 manual page. The really nice thing is
|
|
that once you have built your customized
|
|
<filename>replcomps</filename> file you will not need to touch it again.
|
|
No other email program really gives you the power and
|
|
flexibility that MH gives you.</para>
|
|
</sect2>
|
|
</sect1>
|
|
</article>
|