815 lines
		
	
	
	
		
			36 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			815 lines
		
	
	
	
		
			36 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| <!-- $FreeBSD$ -->
 | |
| <!-- FreeBSD Documentation Project -->
 | |
| 
 | |
| <!DOCTYPE ARTICLE PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
 | |
| <!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN">
 | |
| %articles.ent;
 | |
| ]>
 | |
| <article>
 | |
|   <articleinfo>
 | |
|     <title>An <application>MH</application> 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
 | |
| 	<application>MH</application> on FreeBSD</para>
 | |
|     </abstract>
 | |
|   </articleinfo>
 | |
| 
 | |
|   <sect1 id="mhintro">
 | |
|     <title>Introduction</title>
 | |
| 
 | |
|     <para><application>MH</application> started back in 1977 at the
 | |
|       RAND Corporation, where the initial philosophies behind
 | |
|       <application>MH</application> were
 | |
|       developed. <application>MH</application> is not so much a
 | |
|       monolithic email program but a philosophy about how best to
 | |
|       develop tools for reading email. The
 | |
|       <application>MH</application> 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
 | |
|       <application>MH</application> to the specialization that one
 | |
|       finds in insects and nature. Each tool in
 | |
|       <application>MH</application> does one thing, and does it very
 | |
|       well.</para>
 | |
| 
 | |
|     <para>Beyond just the various tools that one uses to handle their
 | |
|       email <application>MH</application> 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
 | |
|       <application>MH</application> 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 <application>MH</application> package on your
 | |
|       FreeBSD machine. If you installed from CDROM you should be able
 | |
|       to execute the following to load <application>MH</application>:
 | |
| 
 | |
|       <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
 | |
|       <application>MH</application> 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
 | |
| 	<application>MH</application></ulink>.	The best resource for
 | |
|       <application>MH</application> is <ulink
 | |
| 	url="http://www.ics.uci.edu/~mh/book/">Jerry Peek's
 | |
| 	<application>MH</application> & 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
 | |
|       <application>MH</application> 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 <application>MH</application>. The first
 | |
| 	time you run <command>inc</command> it will set up your account
 | |
| 	to use all the <application>MH</application> 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.
 | |
| 	<application>MH</application> 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. <application>MH</application> 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 <application>MH</application> 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
 | |
| 	<application>MH</application> 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
 | |
| 	<application>MH</application> 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. <application>MH</application>
 | |
|       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. <application>MH</application> has folders too.
 | |
|       <application>MH</application> can even do sub-folders of a
 | |
|       folder. One thing you should keep in mind with
 | |
|       <application>MH</application> 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 <application>MH</application>
 | |
|       <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
 | |
|       <application>MH</application> 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 <application>MH</application>
 | |
|       commands there is a folder option you can specify with just
 | |
|       about every <application>MH</application> 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 <application>MH</application>'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 <application>MH</application> 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 <application>MH</application> 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 <filename
 | |
| 	  role="directory">inbox</filename> 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?
 | |
| 	<application>MH</application> 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 <application>MH</application>.</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 <application>MH</application> 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 <application>MH</application>.</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
 | |
|       <application>MH</application> handles sending mail can be a bit
 | |
|       difficult to follow at first, but it allows for incredible
 | |
|       flexibility. The first thing <application>MH</application> does
 | |
|       is to copy a components file into your outgoing email. A
 | |
|       components file is basically a skeleton email letter with stuff
 | |
|       like the <literal>To:</literal> and <literal>Subject:</literal>
 | |
|       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 <application>MH</application> is installed the
 | |
| 	default editor is usually a program called
 | |
| 	<command>prompter</command> which comes with <application>MH</application>. 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 <application>MH</application> 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 <application>MH</application> 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><application>MH</application> 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 <application>MH</application> 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
 | |
| 	<application>MH</application> gives you.</para>
 | |
|     </sect2>
 | |
|   </sect1>
 | |
| </article>
 |