Newsgroups: comp.mail.mh,comp.answers,news.answers Subject: MH Frequently Asked Questions (FAQ) with Answers Keywords: FAQ,mh,mail,question,answer,pop,slocal,letter,signature, draft,message,folder,xmh,olmh,vmail,vmailtool,comp,repl, forw,scan,SMTP,bind,MH-E,MIME,plum,exmh,nmh Summary: This document answers Frequently Asked Questions about MH, a sophisticated mail interface. It should be read by new MH users and comp.mail.mh readers and before posting to this group. Followup-To: poster Approved: news-answers-request@MIT.Edu Reply-To: Bill Wohler From: Bill Wohler Organization: Newt Software, Menlo Park, California, USA Archive-name: mail/mh-faq/part1 Last-modified: $Date$ Version: $Revision$ Posting-Frequency: monthly This is a living list of frequently asked questions on the mailer user interface, Mail Handler, or MH. The point of this is to circulate existing information, and avoid rehashing old answers. Better to build on top than start again. Please read this document before ever posting to this newsgroup. This article is posted monthly. If it has already expired and you're not reading this, you can hope that you saved the instructions to retrieve the FAQ (see "Where can I get MH") so that you can get a copy through other means. Please do not post an answer when someone posts a frequently asked question; rather, email the relevant section of the FAQ to eliminate unnecessary traffic in this newsgroup. This list depends on your comments, additions and fixes: please send them to Bill Wohler . Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2004, 2005, 2006, 2007 Bill Wohler Permission to use, copy, distribute, and translate this document for any non-commercial purpose is hereby granted, provided that this copyright notice appears in all copies. Commercial distributions require prior written consent. This article is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ---------------------------------------------------------------------- Subject: Table of Contents From: Bill Wohler Date: Sat, 3 Mar 2001 11:29:16 -0800 Legend: + new, - deleted, ! changed __________________ 01.00 Introduction 01.01 Why should I use MH? !01.02 What is the current version/status of MH? !01.03 Where can I get MH? !01.04 What references exist for MH? 01.05 What other MH software is available? !01.06 How can I print a MH manual? 01.07 How should I report bugs? 01.08 How can I convert from my mailer to MH? 01.09 What is the copyright status of nmh? _________________ 02.00 Building MH 02.01 What machines does MH run on? 02.02 How do I build MH? 02.03 What options should I use? 02.04 What do I need to do to use POP? 02.05 Does MH support IMAP? 02.06 Why does "mailgroup mail" only affect inc and not slocal? 02.07 How can I build MH on Solaris 2? 02.08 How can I build MH on Linux? 02.09 How can I build MH on IRIX? 02.10 How can I get MH to interpret the Content-Length field? 02.11 How do I build MH on HP-UX? 02.12 Can I prevent adding the local hostname to addresses behind firewalls? 02.13 Is there a patch to fix this or that? 02.14 How can I build MH on OS/2? 02.15 Do any POP/IMAP servers handle MH format? 02.16 How can I build MH on Windows? !02.17 How can I build MH on a Mac? ________________________ 03.00 Scanning & Reading 03.01 What do I do if scan shows the wrong date? 03.02 How would one go about reading Usenet with MH? 03.03 How can I search through multiple folders? 03.04 Why don't MH format commands such as %(friendly) work? 03.05 Why doesn't "show" display all of a MIME message? 03.06 Can I get show not to run "less" so much on MIME messages? 03.07 Why do I get "mhn: don't know how to display content"? 03.08 How can I automatically delete MH backup files? 03.09 Fixing "cannot fopen and lock /var/spool/mail/(user)" 03.10 Can I read my mail with a Web browser? 03.11 How can I run inc automatically with POP? 03.12 Why does inc hang (on Sun)? 03.13 How can I get POP to work? 03.14 How do I persuade mhshow (mhn) not to bring up a new window? 03.15 How do I turn off of all the mhshow (mhn) prompts? 03.16 Why is inc splitting messages improperly? 03.17 Can MH thread messages? 03.18 How can I avoid reading the HTML version of the message? 03.19 How do I view or save attachments? 03.20 How do I view HTML attachments with Netscape? 03.21 Fixing folders: unable to allocate storage for msgstats 03.22 How do I recursively list message attachments? 03.23 Why do folder and flist overlook some of my sub-folders? ____________ 04.00 Filing 04.01 Can I append MH messages to a Unix mailbox format file? 04.02 Can I append MH messages to a GNU Emacs rmail BABYL-format file? 04.03 Why do I get ".../.mh_sequences is poorly formatted?" 04.04 How can you save News articles into an MH folder? !04.05 Are there any good tools to archive MH messages? 04.06 How can I remove duplicate messages? 04.07 How can I remove holes in numbering? __________________________ 05.00 Composing & Replying 05.01 Why does repl add a "Re:" to a message that already has one? 05.02 How do I include messages in repl with or without ">"? 05.03 How can I eliminate duplicate copies of letters to myself? 05.04 How can I include my signature? 05.05 How do I call my editor with arguments? 05.06 How can I digestify messages in a folder for mail to another user? 05.07 How can I change my return address? 05.08 How can I change my From header? 05.09 How can I save a copy of all messages I send? 05.10 Can the folder in Fcc: be dynamically specified? 05.11 Can I post secure/encryped mail? 05.12 How can I send multi-media (MIME) attachments? 05.13 What's the best way to send mail to a long list of people? 05.14 What is the Dcc header? 05.15 How can I make sense of the replcomps file? 05.16 How can I convert quoted-printable to 8bit in quoted text in replies? 05.17 Can I have aliases include aliases? 05.18 Why doesn't mhmail understand aliases? 05.19 How do I send blind carbon copies? 05.20 When I forward a message, can I use its Subject? 05.21 Why is the timezone field in my 'Date:' field wrong? 05.22 Can I automate the comp -editor mhn process? 05.23 How can I remove those "=20" characters when forwarding? 05.24 Can I use mh-format substitution with forw? 05.25 How can I keep repl from breaking long lines? 05.26 How do I fix a bogus In-Reply-To or missing References field? _____________ 06.00 Posting 06.01 What to do with "Problems with edit - draft removed". 06.02 Can I run my message through a program (e.g., ispell) before sending? 06.03 What to do with "bad address 'xxx' - no at-sign after local-part". 06.04 Fixing "post: problem initializing server; [BHST] no servers available" 06.05 Fixing "post: problem initializing server; [RPLY] 503 Sender already specified" 06.06 Fixing "post: unexpected response; [BHST] no socket opened" 06.07 How do I fix the "X-Authentication-Warning" header? 06.08 Fixing "post: unexpected response; [RPLY] 503 Need MAIL before RCPT" 06.09 Fixing "post: problem initializing server; [BHST] premature end-of-file on socket" 06.10 Fixing "Sender didn't use the HELO protocol" 06.11 Fixing "post: problem initializing server; [RPLY] 553 Local configuration error, hostname not recognized as local" __________________ 07.00 Mail Filters 07.01 What mail filters are available? 07.02 Why slocal writes messages to system mailbox that from(1) can't read. 07.03 Where can I read about slocal and the format of .maildelivery? 07.04 How do I debug my .maildelivery file? 07.05 Why isn't slocal working? 07.06 Are there any good biff applications for MH? 07.07 How do I read new messages filed by procmail? __________ 08.00 MH-E 08.01 I have a question about MH-E _________ 09.00 Xmh 09.01 How can I get xmh to use Emacs as the editor? 09.02 Does xmh support subfolders? 09.03 How do I precede included messages with ">" when replying in xmh? ________ Appendix Glossary & Acknowledgments Switching xmh's editor babyl2mh.pl inco - babyl to MH converter t2h - add hyperlinks to message viewed srvrsmtp.c patch IRIX config file HP-UX 10.20 config file Removing duplicate messages (Bourne) Removing duplicate messages (Perl) Removing duplicate messages (Perl) ------------------------------ Subject: Viewing This Article From: Bill Wohler Date: Mon, 27 Nov 1995 14:44:19 -0800 To skip to a particular question with Subject or number xx, use "/^S.*xx" with most pagers. In GNU Emacs type "M-C-s ^S.*xx", (or C-r to search backwards), followed by ESC to end the search. To skip to new or changed questions, use "/^S.*[!+]" with most pagers and "M-C-s ^S.*[!+]" in GNU Emacs. This article is in digest format. nn may have already broken this message into separate articles; if not, then type "G %". In rn, use ^G to skip sections. This article is treated as an outline when edited by GNU Emacs. Run "M-x describe-mode" to see available outline-mode commands. Useful commands are "M-x hide-body", "C-c C-s" (show-subtree) and "M-x show-all" Check out the Usenet Hypertext FAQ Archive (see "What references exist for nn?"). Files available by ftp, man pages, and other Web pages, as well as cross-references like the one in this paragraph are just a click away. A "Date" field whose time is 00:00:00 is approximate. The month and year in these fields represent the time they were added to the FAQ, rather than when they were contributed by the author, as is the case since November, 1995. If you should need the Internet address, use nslookup or dig if you have them, or send mail to with "help" for a Subject. References to $MHLIB refer to the directory that contains MH support files and routines. This directory is usually /usr/lib/mh or /usr/local/lib/mh (or /usr/local/nmh/lib or /etc/nmh for nmh). Do not use $MHLIB literally; use the real, absolute path to your MH library directory. There are slight differences between the original MH and nmh. In the text, the nmh command or filename is preferred, and the MH equivalent is placed in parenthesis. For example, the MH configuration is in $MHLIB/mts.conf (mtstailor); mhshow (mhn -show) is used to view attachments. Note that due to bottom feeding email address harvesting spam scum, mailto links have been removed and @s in addresses have been replaced by "at." ------------------------------ Subject: 01.00 ***** Introduction ***** From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 ------------------------------ Subject: 01.01 Why should I use MH? From: Jerry Peek Date: Fri, 1 Mar 1991 13:03:15 -0800 The MH message handling system is a set of electronic mail programs in the public domain. If your computer runs Unix, it can probably run MH. The big difference between MH and most other "mail user agents" is that you can use MH from a Unix shell prompt. In MH, each command is a separate program, and the shell is used as an interpreter. So, all the power of Unix shells (pipes, redirection, history, aliases, and so on) works with MH--you don't have to learn a new interface. Other mail agents have their own command interpreter for their individual mail commands (although the mush mail agent simulates a Unix shell). Because MH commands aren't part of a monolithic mail system, you can use them at any time; you don't have to start or quit the mail agent. Because you use them from a shell prompt, you can use all the power of the shell. If your shell has time-saving aliases or functions (and most do), you'll be able to use them with MH, of course. And because MH isn't a monolithic mail agent, you can use MH commands in Unix shell scripts, or call them from programs in high-level languages like C. Unlike most mail agents, MH keeps each message in a separate file. The filename is the message number. To rearrange the messages, MH just changes the filenames. MH can use standard Unix file system operations such as removing, copying and linking messages. The message files are grouped into one or more folders, which are actually Unix directories. MH is free, powerful, flexible--and the basics are easy to learn. ------------------------------ Subject: !01.02 What is the current version/status of MH. From: Bill Wohler Date: Sun, 23 Sep 2007 23:51:52 -0700 The current official version of MH is 6.8.3, although a beta of 6.8.4 is available. This version includes MIME, a multi-media MH package that implements the new IETF work on Multi-media 822 (MIME). This allows you to include things like audio, graphics, and the like, in your mail messages. --Marshall Rose MH now works with Kerberos as well. In addition, a new program called mhparam extracts arguments from .mh_profile which is useful in shell scripts. Please see the file CHANGES in the distribution for more details. Due to the languishing state of MH, Richard Coleman created another version of MH called nmh based upon MH 6.8.3. He added GNU autoconf to ease installation considerably and fixed several bugs and inconsistencies. Doug Morris picked up the torch in 2002 and moved development to Savannah where Jon Steinhart joined him as a project maintainer. See http://www.nongnu.org/nmh/. The stable version of nmh is 1.2. The file DIFFERENCES in the nmh distribution contains an ever-growing list of differences between nmh and MH. GNU mailutils (version 1.2) is a collection of mail-related utilities. At the core of mailutils is libmailbox, a library which provides access to various forms of mailbox files (including remote mailboxes via popular protocols and MH). See http://www.gnu.org/software/mailutils/. ------------------------------ Subject: !01.03 Where can I get MH? From: Bill Wohler Date: Sun, 23 Sep 2007 23:51:46 -0700 MH comes standard with: Berkeley Software Design BSD/386 . . . . MH 6.8.3 Control Data Corp. CDC4680-MP . . . . . . EMH 1.4.2 (modified MH) Debian GNU/Linux 4.0 . . . . . . . . . . nmh 1.1-RC4 Debian GNU/Linux 4.0 . . . . . . . . . . mailutils 1.1 DEC Ultrix 3.1 . . . . . . . . . . . . . MH 6.5 DEC Ultrix 4.2A.4 . . . . . . . . . . . . MH 6.7.1 DEC OSF/1 . . . . . . . . . . . . . . . . MH 6.7 Evans and Sutherland ES/OS 2.3 . . . . . MH 6.6 FreeBSD . . . . . . . . . . . . . . . . . MH 6.8.4 IBM PS/2 AIX 1.3 . . . . . . . . . . . . MH 6.4 IBM RISC System/6000 AIX 3.x and 4.x . . MH 6.6 MIPS RISC/OS 4.52 . . . . . . . . . . . . MH 6.6 Red Hat Linux (3.0.3, 4.0 and 4.1) . . . MH 6.8.3 SGI Irix 6.2 Freeware 2.0 CDROM . . . . . MH 6.8.3 Sony NEWS-OS 4.3 . . . . . . . . . . . . MH 6.7.2 Tektronix UTek . . . . . . . . . . . . . MH (Version Unknown) Download MH: http://download.savannah.nongnu.org/releases/nmh/nmh-1.2.tar.gz 831kB Download GNU mailutils: http://ftp.gnu.org/gnu/mailutils/mailutils-1.2.tar.gz 3.4MB ------------------------------ Subject: !01.04 What references exist for MH? From: Bill Wohler Date: Sun, 23 Sep 2007 23:51:41 -0700 The Web: http://rand-mh.sourceforge.net/ http://www.nongnu.org/nmh/ http://www.gnu.org/software/mailutils/ http://mh-e.sourceforge.net/ Books: MH & xmh: E-mail for Users & Programmers. Third edition. Jerry Peek, with Bill Wohler and Brent Welch. ISBN 1-56592-093-7. 738 pages. O'Reilly & Associates, Inc. Out of print as of August, 1996. References to "the MH book" in this document refer to the third edition (plus updates) of this book online at http://rand-mh.sourceforge.net/book/. Section numbers for the second edition may appear in parentheses. There is another book that contains a number of examples of advanced mail handing using MH as the example message handler. It's also quite a good reference on email in general. The Internet Message. Marshall T. Rose ISBN 0-13-092941-7. 396 pages. P T R Prentice Hall Papers: MHN Tutorial by Jerry Sweet ftp://ftp.ics.uci.edu/pub/mh/contrib/multimedia/mhn-tutorial.ps.Z 141k ftp://ftp.ics.uci.edu/pub/mh/contrib/multimedia/mhn-tutorial.tex.Z 48k Usenet: comp.mail.mh gmane.mail.exmh.devel gmane.mail.exmh.user gmane.mail.mh-e.announce gmane.mail.mh-e.devel gmane.mail.mh-e.user gmane.mail.nmh.devel Mailing lists: There are three mailing lists for nmh: nmh-announce, nmh-workers, and nmh-commits. See: http://savannah.nongnu.org/mail/?group=nmh The page for each list contains a link to the archives. MH-users archives: Current archives can be found at: http://lists.nongnu.org/archive/html/nmh-workers/ Older archive can be found in the mh-users and mh-workers archives at: http://sourceforge.net/project/showfiles.php?group_id=143658&package_id=188462 There are directions in the release notes. Basically, you can use either "msh" or the individual commands "inc -file" to get the messages into a folder, and then "scan", "pick", "show", and so on (or your favorite commands in xmh, MH-E, etc.). --Jerry Peek This document: http://www.newt.com/faq/mh.html http://faqs.cs.uu.nl/na-dir/mail/mh-faq/part1.html MH-E documentation: GNU Emacs 19.29 comes with a version of MH-E that includes online (Texinfo) documentation. Try "C-h i m mh-e RET". It is also available in HTML and PDF formats at http://mh-e.sourceforge.net/manual/. See also "What other MH software is available?" to see where you can get the latest version of MH-E which includes the documentation sources. exmh: The FAQ is available at http://www.beedub.com/exmh/exmh-faq.html. The online exmh sections from the MH book can be found at http://rand-mh.sourceforge.net/book/index.html#chTourexmh Signature and Finger FAQ: http://www.faqs.org/faqs/usenet/signature-faq/ ------------------------------ Subject: 01.05 What other MH software is available? From: Stephen Gildea , Bill Wohler Date: Thu, 19 May 2005 21:20:57 -0700 MH-E is the Emacs interface to the MH mail system. It offers all the functionality of MH, the visual orientation and simplicity of use of a GUI, and full integration with Emacs and XEmacs, including thorough configuration and online help. MH-E allows one to read and process mail very quickly: many commands are single characters; completion and smart defaults are used for folder names and aliases. With MH-E you compose outgoing messages in Emacs. This is a big plus for Emacs users, but even non-Emacs users have been known to use MH-E after only learning the most basic cursor motion commands. Additional features include: * attractive text rendering with font lock * composition and display of MIME body parts * display of images and HTML within the Emacs frame * folder browsing with speedbar * threading * ticking messages * lightning-fast full-text indexed searches of all of your email * virtual folders to view ticked and unseen messages, search results * multiple personalities * signing and encrypting * spam filter interaction * XFace, Face, X-Image-URL header field support with picons The GNU Emacs distribution includes MH-E. MH-E is maintained at SourceForge: http://mh-e.sourceforge.net/ From: Chris Menzel Date: Sat, 15 Dec 2001 10:02:38 -0600 The terminal-oriented, fast, and powerful mutt mail client not only supports the MH mail format but also supports .mh_sequences files, providing a robust interface to MH. It is also amazingly configurable and is very adept at handling MIME attachments and HTML mail. Unlike MH, the displayed message numbers do not necessarily correspond to the message filenames. This makes threading and sorting lightning fast but slower to display very large folders. http://www.mutt.org/ From: Brent Welch Date: Tue, 20 Mar 2001 22:42:15 -0800 EXMH is a user interface for the MH mail system written in TCL/TK. Exmh has MIME support, color feedback in the scan listing, a folder display with one label per folder, clever scan caching, facesaver bitmap display; background inc, various inc styles, searching over folder listing and message body, a dialog-box interface to MH pick, a simple built-in emacs-like editor, interfaces to other editors, user preferences, user hacking support. For more info or to obtain exmh, see: http://exmh.sourceforge.net/ From: "Eric D. Friedman" Date: Tue, 9 Feb 1999 22:52:44 -0800 Mhtake is a perl script that lets you add people to your mail aliases file by typing mhtake [message #]. http://orion.oac.uci.edu/~friedman/mhtake.txt From: Steinar Bang Date: Fri, 26 Jan 1996 13:51:08 +0100 Mew (an Emacs interface to MH that has MIME and PGP capabilities) is found at: ftp://ftp.aist-nara.ac.jp/pub/elisp/Mew/mew-current.tar.gz [MH-E has had these capabilities since version 7.0 so mew is obsolete if you use MH-E. --Ed] From: James Perkins Date: Fri, 1 Jan 1993 00:00:00 -0800 Vmh is designed for people using the bulletin-board features of MH, where mail is stored in packed (single-file) folders. As a result, use of this program cannot be mixed with the use of normal MH commands. Vmh is a part of the official MH distribution. From: James Perkins Date: Fri, 1 Jan 1993 00:00:00 -0800 Xmh is a X11 mouse-based MH browsing tool. It is very powerful and feature-filled and thus comes with a moderate learning curve. Its dependence on the X11 environment makes it very reconfigurable, but only by people well-versed in X applications programming. Its message reply built-in-editor interface is not always popular among those used to having MH bring up the editor of their choice. Date: Fri, 1 Jan 1993 00:00:00 -0800 xmh is part of the standard X Window System distribution from the X Consortium. Ultrix also ships dxmail which is similar. ftp://cs.utk.edu/pub/xmh.shar.Z 162k From: Harald Tveit Alvestrand Date: Fri, 1 Jan 1993 00:00:00 -0800 Here's a version of xmh that includes MIME. ftp://aun.uninett.no/pub/mail/mixmh/mixmh-0.3.tar.Z 232k From: Nathaniel Borenstein Date: Sun, 26 Nov 1995 19:04:51 -0800 Metamail is a package that can be used to convert virtually ANY mail-reading program on Unix into a multi-media mail-reading program. It is an extremely generic implementation of MIME (Multipurpose Internet Mail Extensions), the proposed standard for multi-media mail formats on the Internet. The implementation is extremely flexible and extensible, using a "mailcap" file mechanism for adding support for new data formats when sent through the mail. At a heterogeneous site where many mail readers are in use, the mailcap mechanism can be used to extend them all to support new types of multi-media mail by a single addition to a mailcap file. The metamail distribution comes complete with a small patch for each of over a dozen popular mail reading programs, including Berkeley mail, mh, Elm, Xmh, Xmail, Mailtool, Emacs Rmail, Emacs VM, Andrew, and others. Note that the MH patches are now integrated into MH 6.8. ftp://ftp.bellcore.com/pub/nsb/mm2.7.tar.Z From: Tom Christiansen Date: Tue, 9 Feb 1999 22:55:24 -0800 Plum is a highly configurable and extensible screen-oriented front-end for processing MH mail on ASCII terminals. Unlike MH-E, the extension language used in plum is perl, not LISP. Plum offers many of the advantages of xmh, but lacks several of xmh's disadvantages. The look&feel derives more from vi than from emacs. Key bindings and functions may be changed on the fly to suit the user's preference. It offers filename and word completion on folder, variables, and command names. Until it is included in the standard distribution (under miscellany), you can find a copy on: http://www.cpan.org/authors/Tom_Christiansen/scripts/plum.gz 29k or mail requests to Tom From: Jerry Sweet Date: Tue, 1 Nov 1994 00:00:00 -0800 Mhunify is a set of perl scripts and templates that provides shell-level MH functionality with USENET news. Since MH supports MIME, MIME-format news articles just work. I've found that being able to handle news in the same way that I handle email is very useful, although there are some tradeoffs. Mhunify also treats MH folders just like news groups. If you subscribe to several mailing lists, and your email is automatically delivered to separate folders, say, via procmail or via MMDF's .maildelivery, the mhunify package lets you progress automatically through your folders just as you would news groups. ftp://ftp.ics.uci.edu/pub/mh/contrib/multimedia/mhunify.shar.gz From: Dale Carstensen Date: Tue, 1 Nov 1994 00:00:00 -0800 olmh is a demo for OLIT (Open Look Interface Toolkit, the Open Look wrapper to Xt) in Sun's Open Windows 3 that does handle 3rd and subsequent levels of nesting of folders. Obtain the Open Windows 3 distribution CD/ROM from Sun (SPARC only). To do this, call 1-800-USA-4SUN and send tone "2" for telemarketing after it answers. The 4.1.2 CD/ROM may also have Open Windows 3. The list price for the 4.1.2 CD/ROM is $200. From: James Perkins Date: Sun, 1 May 1994 00:00:00 -0800 Vmail is a curses-based, vi-like message browser which calls on MH programs to manipulate mail. It can be used on almost any terminal. It organizes mail folders into index pages, from which a message can be selected to be shown, replied-to, forwarded, refiled, deleted, and so on. The vi-like interface and command keystrokes are comfortable to less-experienced Unix users, and it is a small, compact program, unlike the MH-E Emacs package. This version of vmail has been bugfixed and enhanced from the original vmail published on the net in 1987 by J. Zobel. ftp://ftp.uu.net/comp.sources.unix/volume12/vmail/part0*.Z 46k ftp://ftp.ucs.ubc.ca/pub/mh/vmail.[1-3]of3.Z 58k Or mail requests to James. From: James Perkins Date: Sun, 1 May 1994 00:00:00 -0800 vmailtool may be for you if you have a Sun workstation. It is a button gadget panel for the above-mentioned vmail program. It brings vmail into the windows era where people no longer need to memorize specific command keystrokes. It also provides a mail icon with the flag that pops up when new mail arrives. Again, this is a compact, simple tool, unlike the powerful xmh program. Still, it's a welcome alternative for many people who are running SunView or OpenWindows. ftp://ftp.ucs.ubc.ca/pub/mh/vmailtool.Z 18k or mail requests to James. MMH, My Mail Handler, is a Motif interface for reading and sending mail. It uses the MH commands to actually handle sending a receiving messages. It does not support all the capabilities of MH, but offers a large enough subset to handle the majority of users. Its intended user is someone between "bumbling email novice" and "sophisticated user". Hooks are provided to allow the user to customize and add new commands. ftp://ftp.eos.ncsu.edu/pub/bill/bill.tar.Z 120k From: Andrew Waugh Date: Fri, 1 Jan 1993 00:00:00 -0800 X.500 lookups: If a name is enclosed in square brackets, when entering a destination address: To: [Greg Wickham,CSIRO] a search will be made in the X.500 Directory for the individual's entry. If an address exists then it will be extracted and placed into the headers. Mail requests for the software to the author. From: Barbara Dyker Date: Fri, 1 Jan 1993 00:00:00 -0800 QueueMH is an email based service request and tracking system based on the Rand Mail Handler. ftp://ftp.cs.colorado.edu/pub/cs/sysadmin/utilities/queuemh.tar.Z 98k From: Date: Mon, 1 Mar 1993 00:00:00 -0800 Qmh is an MH-based group mail management tool. Written entirely in perl, Qmh combines the best aspects of MH with group mail heuristics and delivers a sensible package for all levels of Unix users. A limitless number of individual queues and associated groups of permitted users can be established. Specific functionality includes the following modes of operation; checking header dates and sending reminder/deadline mail, editing existing messages, help screens, creating new messages from scratch or exiting messages, resolving messages, scanning queue folders, and annotating with status both by editing and sending mail. Qmh is a single generic program in and of itself from which all modes of operation are invoked. Additionally, each separate queue may be accessed via a link to the single program. All system configuration is maintained in a single file that is read upon each invocation of Qmh. Formatting and template files are provided in the system library, although individual users can override the defaults simply by creating equivalent files in their own MH mail directory. Qmh provides a powerful database-like functionality by allowing limitless per-queue X-Qmh-<$value> headers to be included in messages. These "fields" then form the context of the queue messages and provide a user-defined, but yet structured environment for queries, reporting, and random information. Qmh is designed to provide a complete solution for SA groups, help desks, support organizations, or wherever two or more individuals are trying to manage multiple mail requests. Qmh is also compatible with versions of xmh that provide user-level command buttons. Provided in the Qmh package is a ~/.Xdefaults template file that's setup to harness the power of Qmh. From: Jerry Peek , Shannon Yeh Date: Sun, 11 Mar 2001 00:23:21 -0800 MacMH and PC/MH: These were available only for non-commercial degree-granting institutions from: Networking & Communication Systems 115 Pine Hall Stanford University Stanford, CA 94305-4122 Phone: +1 415-723-3909 See also: ftp://netix.com/pub/pc-mh-info/* For more PC/MH info, contact: Netix Communications, Inc. 15375 Barranca Parkway Building G, Suite 107 Irvine, CA 92718 Phone: +1 714-727-9532 FAX: +1 714-727-3922 Internet: info at netix.com In addition, you might try Wollongong, to see if they have something you can get. [This information appears to be out of date. Please send me pointers to valid information. Potential sites include jessica.stanford.edu. --Ed] Two other potential methods to run MH under Windows: Run Unix under Windows with VMware (http://www.vmware.com/) or try to compile nmh with the Cygwin tools (http://www.cygwin.com/). ------------------------------ Subject: !01.06 How can I print a MH manual? From: Bill Wohler , Jos Vos Date: Sun, 23 Sep 2007 23:51:33 -0700 Documentation in text and PostScript format is found in the MH-doc.tgz tarball on: http://sourceforge.net/project/showfiles.php?group_id=143658&package_id=188464 To generate your own copy for printing, first obtain the MH sources (see "Where can I get MH?") if you don't already have it. Go into the "doc" directory and run "make guide" to create the administrators guide and "make manual" to create a user's manual which includes tutorials and man pages. If the doc directory is empty or is missing the Makefile, you'll have to run "mhconfig MH" in the conf directory so that the documentation with correct local information is created. For properly formatting the documentation (at least the manual pages) you might even have to install MH, because a reference to a tmac.h file in the MH lib directory is made in the manual pages. ------------------------------ Subject: 01.07 How should I report bugs? From: Bill Wohler Date: Wed, 29 Sep 2004 00:12:42 -0700 Bugs in nmh should be reported at: http://savannah.nongnu.org/bugs/?group=nmh Bugs in MH-E should be reported at: http://sourceforge.net/tracker/?atid=113357&group_id=13357 ------------------------------ Subject: 01.08 How can I convert from my mailer to MH? From: Mike Sutton Date: 7 Jul 1995 10:03:50 GMT The unrmail function will convert rmail format to mbox format. From: Jerry Peek Date: Fri, 1 Mar 1991 13:03:15 -0800 If you use one of a mail agent like 'mail', 'mailx', 'elm' or 'mush', converting to MH is easy. When you run the 'inc' command, it reads all new messages from the system mailbox into your 'inbox' folder. Those mail agents also have separate files or "folders" that hold messages in the same format as the system mailbox. You can read them with the 'inc -file' command. For example, to read the messages from your 'mbox' mail file into your MH 'inbox' folder, you'd type: % cd % cp mbox mbox.backup % inc -file mbox If you see the usual "Incorporating new mail into inbox..." message and a scan listing, the messages probably were converted. Read some or all of them (with the 'show' command) and be sure. The 'inc' won't remove your mbox unless you use '-truncate'. From: "Jason R. Mastaler" Date: Mon, 1 May 1995 00:00:00 -0800 You can also specify an alternate folder to inc. Here's how you can convert all your folders en masse: for arg in `cat flist`; do echo "converting $arg" inc +"$arg" -file "$arg" -silent done Section D.4 of the MH book's second edition lists two scripts to convert mail files to MH folders: babyl2mh to convert from rmail's BABYL format; vmsmail2mh to convert from VMS's mail (see "What references exist for MH") to see where the book's examples can be ftped from). These scripts aren't in the third edition but are in its archive file. From: Vivek Khera Date: Fri, 1 Jan 1993 00:00:00 -0800 I rewrote the above script in Perl since the original script doesn't work for some people (see "babyl2mh.pl" below). From: Juergen Nickelsen Date: Fri, 1 Jan 1993 00:00:00 -0800 You can remove the second to last second line ("> $input"), so that the script doesn't zero out your RMAIL file. Another alternative is to replace this line with "inc -file $tmpmbox $folder && > $input", so that the RMAIL is only zeroed if inc successfully incorporated the mail. Finally one could add a switch -z, so that the RMAIL file is only zeroed if the switch is given. (See "Appendix inco".) Date: Sun, 1 May 1994 00:00:00 -0800 Use the following to convert a BABYL format file to Unix mail format. ftp://inf.informatik.uni-stuttgart.de/pub/gnu/emacs_extras/rmailtovm.el.Z 6k See also MH book second edition (Appendix D). ------------------------------ Subject: 01.09 What is the copyright status of nmh? From: Richard Coleman Date: Mon, 10 Oct 2005 18:16:58 -0700 nmh is distributed under a variant of the classical BSD copyright. Check the COPYRIGHT file in the nmh distribution for the details. There are some specific files which were contributed to the original MH package that are copyrighted by their original author. We have retained the copyright notices of these authors in these files. ------------------------------ Subject: 02.00 ***** Building MH ***** From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 ------------------------------ Subject: 02.01 What machines does MH run on? From: Bill Wohler Date: Thu, 19 May 2005 21:22:55 -0700 MH isn't just for Unix any more. Versions are reported to run on OS/2 (see "How can I build MH on OS/2?"), Windows (see "How can I build MH on Windows?"), and Mac (see "How can I build MH on Mac?"). Oh yeah, the Mac is now Unix. Maybe Windows Longhorn will be built on Unix too. From: Jerry Peek Date: Fri, 1 Mar 1991 13:03:15 -0800 If you have a computer running Unix, you can probably run MH. ------------------------------ Subject: 02.02 How do I build MH? From: Bill Wohler Date: Sun, 8 Sep 1996 15:13:12 -0700 If you're using Linux, you can simply install the nmh or MH package which is available in most distributions. If you want to build nmh, follow the directions in the file named INSTALL. Basically, it's simply "./configure; make; make install." If you have MH on the other hand, if you carefully read the file named READ-ME in the root of the source hierarchy, you should not have any trouble building MH. If you're having troubles building MH, it could be that the problem has already been fixed, but hasn't yet gotten into an official release. Please see http://www.gw.com/mail/mh/patches/ for more info. ------------------------------ Subject: 02.03 What options should I use? From: Bill Wohler Date: Tue, 1 Dec 1992 00:00:00 -0800 BERK: Do NOT include the BERK option (in versions 6.7 or later)! BERK breaks the mh-format functions that take apart address lines, for example mbox, from, and friendly. This would really put a crimp on my replcomps file. LOCKF: if you have NFS, you need to lock your mailbox with lockf() so the lock will be honored by all machines on the local network. If you have the lockf() system call, include LOCKF. JQ Johnson makes the point that one should use this option carefully since it requires a robust lockf() call. For example, this option caused serious problems on his SunOS 4.1.1. He suggested using LOK_BELL instead, and adding "lockstyle: 1" to $MHLIB/mts.conf (mtstailor). ATZ: makes your timezones print like "EST" instead of "-0500". Much prettier. --Stephen Gildea However, Tony Landells replies: "Yes; very pretty. How unfortunate that timezone names are so ambiguous, so that EST can be interpreted, at a minimum, as (American) Eastern Standard Time, (Australian) Eastern Standard Time, or (Australian) Eastern Summer Time (and yes, I think it's dumb having the same acronym for both normal and Summer time, but that's a different problem). While the numeric timezones may not look as nice, they are, at least, reasonably unambiguous. I would urge anyone who ever intends/hopes/expects to use email outside the U.S. to NOT use ATZ (sorry Stephen)." At any rate, the conf/examples directory has been updated and contains many examples show you which options are required on your platform and which are optional (in the upcoming version MH 6.8). At any rate, it is recommended that you examine the options in the example configuration files, and read about them in READ-ME. RPATHS: a side-effect is that slocal writes messages to your system maildrop without the MMDF C-A's that separate messages, so your BSD tools like from work. ------------------------------ Subject: 02.04 What do I need to do to use POP? From: Bill Wohler Date: Sun, 8 Sep 1996 23:31:01 -0700 MH6.7 (and earlier versions too) include a server for version 3 of POP. From: Morgan Fletcher Date: 14 Mar 1996 19:24:23 -0800 Ensure that /etc/services contains the following: pop2 109/tcp postoffice # POP version 2 pop2 109/udp ->pop 110/tcp # POP version 3 (MH's inc thinks it's "pop") ->pop 110/udp pop3 110/tcp # POP version 3 pop3 110/udp Also compile with the POP options: POP, DPOP, RPOP, etc. From: Richard Coleman Date: 06 Feb 1997 03:43:17 -0500 To get MH to use the pop3 service, add POPSERVICE=pop3 to your MH configuration and recompile: ------------------------------ Subject: 02.05 Does MH support IMAP? From: Lyndon Nerenberg Date: 27 Jul 1999 11:33:39 -0600 Run exmh on the laptop, and modify your .mh_profile to inc using APOP. This is how I run MH-E and it works fine. (I did have to modify MH-E a wee bit to allow it to prompt for the password. You would likely have to do something similar with exmh.) As a spare time project I'm adding enough IMAP support to MH (6.8.3) to allow you to 'inc -imap [-imapfolder foo]'. If I ever get this done I'll stick the diffs up somewhere. (It's not a big priority as I can get at my IMAP INBOX using APOP.) From: Tim Showalter , John Prevost Date: Wed, 25 Sep 1996 21:34:56 -0400 We are developing fmh and intend to support as much of MH as is feasible. However, MH and IMAP don't necessarily agree as to what things are going to look like. MH has static message numbers until you pack a folder; IMAP keeps two numbers on a message, one which is absolutely static and one which is relative to the top of a mailbox. Messages in IMAP are essentially immutable. IMAP doesn't (currently) allow message annotations. fmh will keep state with a background daemon instead of writing it to disk, and will probably try and keep as little on disk as possible. fmh doesn't understand MH folders at the moment, and probably won't for a really long time, if ever. As I said before, we're mostly interested in the IMAP aspects as we're using a networked file system and saving stuff on the local disk just isn't an option. fmh is not MH at a very fundamental level. It is very unlikely that it will be merged, as we're not quite as interested in creating something that is MH and IMAP as we are in writing a good IMAP client. Also, the MH code isn't going to take the introduction of IMAP without a near complete rewrite. It is not available yet. Inquiries are welcome at . From: Rahul Dhesi Date: 23 Sep 1996 08:39:52 GMT What prevents people from doing a telnet to their mail server, logging in, and firing up MH directly? Site policy? An operating system that does not let MH compile or run? Overloaded machine with insufficient processing power for MH? All these are site-specific problems and the solution lies in solving them locally, not in forcing MH to go over IMAP. IMAP was never designed to emulate a filesytem. MH was designed to make direct advantage of the filesytem structure. There is no compatibility between the two. By the time IMAP is revised enough to support MH you will have reinvented NFS. There *is* scope for redesign here, though. It would be nice to have a single-user filesystem. Create a binary telnet session to the filesystem server, log in as yourself, and then over that session run a filesystem protocol. Normal filesystem protections at the other end will be sufficient for all permissions checking, so the filesystem protocol would need to do no other permissions checking. The question of whom to export directories to would go away: They are exported to whoever completes a successful login, and accessible to the user if he would be able to access them on the server as his login id. You could even use challenge-response for the initial login, coupled with ssh-based encryption, so you automatically have a secure filesystem without even trying. IMAP is too restricted in its scope to be easily modifiable to emulate such a filesystem. It would have to be a redesign from scratch. From: John Romine Date: Sun, 8 Sep 1996 15:45:27 -0700 No. MH only supports retrieving mail using POP3. POP3 is on the "standards track"--it is now an elective Internet Draft Standard (see RFC 1939 for more details). At this point, IMAP[23] are "experimental, limited use" protocols; it is unlikely that MH will support them. From: Bill Wohler Date: Sun, 8 Sep 1996 15:45:32 -0700 Since John posted the message above, IMAP has progressed from an "experiemental, limited use" protocol. While IMAP is not universal, many vendors now have implementations. I've found several things which might help. First, a definition lifted from the Pine FAQ: What is IMAP? IMAP stands for "Internet Message Access Protocol". An IMAP client program on any platform at any location on the Internet can access email folders on an IMAP server. While the messages appear to be local, they reside on the server until the client explicitly moves or deletes them. The IMAP protocol is a superset of POP, containing all POP commands plus more. For a comparison of IMAP and POP, see the paper Comparing Two Approaches to Remote Mailbox Access: IMAP vs. POP (in ftp.cac.washington.edu:/mail/imap.vs.pop). IMAP is what allows Pine (or any other IMAP client) to get to email on a central campus email server. There are current IETF working groups revising IMAP and readying it to become an Internet standard. A copy of the latest IMAP draft may be obtained from: ftp://ftp.cac.washington.edu/mail/latest-imap-draft For a list of IMAP clients, see the file imap.software, in the same directory. From: David L Miller Date: Mon, 1 Aug 1994 00:00:00 -0800 ipop3d from the UW IMAP toolkit can operate in a couple modes. As a straight POP3 server, it uses the same C-client library as imapd, so it co-exists comfortably with imapd. It can also operate as a POP-to-IMAP gateway so that your POP-only clients can access IMAP services. ftp://ftp.cac.washington.edu/mail/imap.tar.Z 1.0M From: Mark Crispin Date: Mon, 1 Aug 1994 00:00:00 -0800 The only answer I can give for [how MH users can use IMAP] is that Pine can read mailboxes in MH format; and that someone might in the future develop a version of MH that can use IMAP. From: Philipp Takacs Date: Sun, 25 Oct 2015 15:42:23 +0100 There is other software which support IMAP and MH, like Mutt and mailsync. mailsync is based on C-client. To use MH you need a '.mh-profile' in your $HOME with your MH-Path. Here is a example config for a MH store: store test { pat \#mh/test/* prefix \#mh/test/ } ------------------------------ Subject: 02.06 Why does "mailgroup mail" only affect inc but not slocal? From: John Romine Date: Fri, 1 Jan 1993 00:00:00 -0800 If "mailgroup" is set, inc is made set-group-id to this group name. Some SYS5 systems want this to be set to "mail". Set this if /usr/spool/mail (or /usr/mail) is not world-writable. These changes were contributed by Peter Marvit, and "inc" is very careful about its use of the set-gid privilege. Note that slocal doesn't know how to deal with this, and will not work under these systems; just making it set-group-id will open a security hole (since it doesn't know when to drop the set-gid privileges). If you're using "mailgroup", you should remove slocal (and its man page) from your system. Alternatives to slocal include deliver, procmail, and mailagent. (See "What mail filters are available?") ------------------------------ Subject: 02.07 How can I build MH on Solaris 2? From: Richard Coleman Date: Tue, 20 Jan 1998 02:19:58 -0500 nmh builds out of the box on Solaris. From: Bill Wohler Date: Sun, 8 Sep 1996 15:56:31 -0700 See http://www.gw.com/mail/mh/patches/solaris/ for patches you may need. From: Neil Rickert , Scott K. Hutton , Casper H.S. Dik Date: Sun, 8 Sep 1996 15:57:25 -0700 First, don't use the BSD compatible stuff. Make sure that the Sun or GNU compiler appear before the BSD compiler in your PATH (e.g., /usr/ccs/bin). Second, don't use GNU make. Make sure that the Sun make appears before the GNU make in your PATH. Use conf/examples/solaris2.sun.com and fix the paths, if necessary. Optionally change the following to use the GNU compiler, to perform optimization, and to create shared libraries. cc gcc ccoptions -O -g -msupersparc slflags -shared Fix mhn.c with the diff in http://www.gw.com/mail/mh/patches/solaris/si_value_2.3. Optionally incorporate the Content-Length header fix. (See "How can I get MH to interpret the Content-Length field?") Linking with /usr/ucblib/libucb.so is incompatible with including . When compiling, you can ignore the following warning: fmtcompile.c, line 238: warning: semantics of "/" change in ANSI C; use explicit cast If you're using AFS, you'll have to replace any occurrence of "ln" with "ln -s" wherever the make dies when it tries to make a link "on a different file system." See also ftp://ftp.fwi.uva.nl/pub/solaris/solaris2.faq. Date: Thu, 1 Dec 1994 00:00:00 -0800 Unset LD_LIBRARY_PATH. From: Gary Strand Date: Mon, 1 May 1995 00:00:00 -0800 To cure slocal's Segmentation Fault problems, I decided to try 'cc' instead of 'gcc' (an alleged no-no under Solaris) and MH built just fine, and it's working perfectly. From: "Jason R. Mastaler" Date: Mon, 25 Sep 1995 17:35:13 -0400 Don't use "ldoptions -s" with gcc. It may cause the compile to fail with: gcc: Internal compiler error: program ld got fatal signal 11 *** Error code 1 From: "Jeffrey T. Eaton" Date: Fri, 04 Apr 1997 15:30:36 GMT Fixed [DBM_PAGFNO_NOT_AVAILABLE error] by getting the latest gdbm package, compiling and installing it and the dbm/ndbm compatibility stuff, and moving Sun's broken ndbm.h out of /usr/include. To fix "../sbr/libmh.so: undefined reference to `__builtin_va_arg_incr'", add "option __BUILTIN_VA_ARG_INCR" to your MH configuration. ------------------------------ Subject: 02.08 How can I build MH on Linux? From: Richard Coleman Date: Tue, 20 Jan 1998 02:19:58 -0500 nmh should build out of the box for most Linux systems. From: Bill Wohler Date: Tue, 9 Feb 1999 23:04:53 -0800 The Debian distribution of Linux comes with an MH and nmh packages. See http://www.debian.org/. See also http://www.gw.com/mail/mh/patches/linux/. From: "James A. Robinson" Date: 17 Apr 96 20:39:02 GMT Somebody on Debian ported it to Linux ELF. Look on ftp://ftp.debian.org/debian/stable/binary/mail/mh_6.8.4-13.deb for the .deb package of MH (it's a compressed tar file). The source is in ftp://ftp.debian.org/debian/stable/source/mail/mh_6.8.4-orig.tar.gz and mh_6.8.4-13.diff.gz. From: Brian Kirouac Date: 18 Apr 96 14:00:20 GMT If you are running Redhat and have rpm available you can also use ftp://???/pub/redhat-3.0.3/i386/RedHat/RPMS/mh-6.8.3-5.i386.rpm. The source code is in ftp://???/pub/redhat-3.0.3/i386/SRPMS/mh-6.8.3-5.i386.rpm From: "Brandon S. Allbery" Date: Sun, 26 Nov 1995 16:18:50 -0800 The current patch is the first one listed below. The old patch only works with libc-4.4, which is no longer used. The current patch is split into two pieces, as with the previous patch, but now the divisions are purely functional: the first diff enables MH to compile, the second allows creation of a shared library. [The paths are up to date, but I think the info in this paragraph is old. --Ed] Recent versions of GNU make choke on MH's makefiles. Unfortunately, the shared library patches depend on "export". If you have problems building MH, remove the "export" lines from all of the makefiles (if you applied the shared library patches) and try using BSD pmake instead. If you don't want to compile MH, the second file contains pre-compiled ready-to-run binaries which can simply be extracted in the root directory. ftp://sunsite.unc.edu/pub/Linux/system/Mail/readers/mh-6.8.3-diffs.tar.gz ftp://sunsite.unc.edu/pub/Linux/system/Mail/readers/mh-6.8.3-bin.tar.gz The sizes are 650k and 22k respectively. Note that these files are occasionally "cleaned up" by accident so please let me know if they are missing. ------------------------------ Subject: 02.09 How can I build MH on IRIX? From: Richard Coleman Date: Tue, 20 Jan 1998 02:19:58 -0500 nmh should build out of the box for Irix. From: Bill Wohler Date: Sun, 8 Sep 1996 15:33:22 -0700 See http://www.gw.com/mail/mh/patches/sgi/ for patches you may need. From: Arne K. Frick Date: 06 Jun 1995 18:30:01 GMT There is a file at viz.tamu.edu:/pub/sgi (see FAQ) containing a diff and sample configuration. If you cannot locate it, I can mail it to you. Note, however, that I had tremendous difficulties with them under 5.3: 1. Be sure to use /bin/make, NOT GNU make. 2. patch vomits over the diff. You can get around this by increasing the "fuzz factor" to 4. 3. The Makefile target for the shared library doesn't work. I had to do it by hand. But I'm stuck compiling mhn.c. From: Shankar Unni Date: 9 Jun 1995 01:53:48 GMT The fix for compiling mhn.c is in http://www.gw.com/mail/mh/patches/solaris/si_value_2.3. From: Jack Repenning Date: 25 Jul 1995 02:35:41 GMT (See "IRIX config file") below. ------------------------------ Subject: 02.10 How can I get MH to interpret the Content-Length field? From: Casper H.S. Dik Date: Sun, 8 Sep 1996 15:38:30 -0700 Apply http://www.gw.com/mail/mh/patches/solaris/content_length to your MH distribution and add the configuration option "CONTENT_LENGTH". It also includes the si_ fix in http://www.gw.com/mail/mh/patches/solaris/si_value_2.3 ------------------------------ Subject: 02.11 How can I build MH on HP-UX? From: Bill Wohler Date: Sun, 8 Sep 1996 15:50:54 -0700 If you find that your zotnet/tws directory isn't compiling, upgrade your MH (see "What is the current version/status of MH?") which includes fixes to lexedit.sed. See http://www.gw.com/mail/mh/patches/hp/ for for patches you may need. ------------------------------ Subject: 02.12 Can I prevent adding the local hostname to addresses behind firewalls? From: Ted Remillard Date: 24 Jun 1996 08:53:42 -0700 You can get MH to stop managing the headers and let the email server to do it. To do this, build MH with the options DUMB and REALLYDUMB. In the $MHLIB/mts.conf (mtstailor) file, set the server option to the IP address of the email server. After this is done, MH sends email directly to the email server and Local email To: and From: fields just have the user's simple email address, e.g., , and the remote email From: header will contain user@domainname, e.g., . Don't forget to define the REALLYDUMB option in the file sbr/addrsbr.c described below. From: Bret Rothenberg Date: Tue, 23 Jan 1996 12:25:24 -0800 (PST) Yes, use the "localname" parameter in "$MHLIB/mts.conf" (mtstailor) to specify the desired hostname. From: Ken Hornstein Date: 18 Aug 1995 23:51:48 -0400 If you're behind a firewall and sendmail gives you fits because MH adds the node name or site name to each address in the To: and CC: fields, you'll need to modify the MH source. The relevant source has to do with the REALLYDUMB option in sbr/addrsbr.c. Essentially what you need to do is set it up so REALLYDUMB is turned on (normally, it's turned off if you have MMDF or SMTP turned on). This will do what you want. I did this at our site, and it's been working great. The stuff for REALLYDUMB starts around line 613. ------------------------------ Subject: 02.13 Is there a patch to fix this or that? From: Kimmo Suominen Date: Sat, 3 Mar 2001 13:40:35 -0800 The MH Patch Archive has been opened at http://www.gw.com/mail/mh/patches/ It is a collection of patches to MH (the RAND MH Message Handling System), a set of electronic mail programs in the public domain. Since the last complete release of MH (version 6.8.3) UNIX systems have evolved making changes in the MH code necessary. Several new UNIX systems have emerged requiring new configuration templates and examples. This archive tries to collect all these fixes and enhancements that in the past have been available only through word-of-mouth and occasional reposts to newsgroups or mailing lists. The initial archive layout and the very time consuming collecting and categorizing of patches has been done by Jerry Peek. I will be the primary maintainer of the archive. Even though I will be monitoring several sources for new material (mainly the comp.mail.mh newsgroup but also the mailing lists , and ), I'd like to encourage everyone to submit patches also directly to the archive at . ------------------------------ Subject: 02.14 How can I build MH on OS/2? From: Sanjay Aiyagari Date: 21 Nov 1996 19:37:10 GMT ftp://ftp.jaist.ac.jp/pub/os/os2/network/MH/ ------------------------------ Subject: 02.15 Do any POP/IMAP servers handle MH format? From: "Carl S. Gutekunst" Date: 27 May 1997 07:24:34 GMT The University of Washington POP3 and IMAP servers can be backended by a variety of stores, including MH. This is the basis for Netscape's store, curiously enough. I haven't looked closely at how Mark Crispin implemented support for the new IMAP4 features when using an MH backend; it seems like there is a lot of computation when opening a folder for the first time, writing in the UID fields and such. But it basically appears to work. From: Lyndon Nerenberg Date: 27 Jul 1999 11:36:25 -0600 But [the UW IMAP server] can't delete/expunge from MH folders. (At least I've never been able to get it to work, and I've tried just about everything.) #mh in UW imapd isn't something I'd recommend to any serious MH user. From: Mark Crispin Date: Tue, 27 Jul 1999 14:43:25 -0700 > But it can't delete/expunge from MH folders. That's a very old version. delete/expunge has been in imap-4.x for a long while. However, there's no sticky flags. > #mh in UW imapd isn't something I'd recommend to any serious MH user. The converse is also true. The two don't play ball very well. From: Dieter Weber Date: 11 Feb 2003 04:23:38 -0800 The UW imap server supports MH folders. In order to see the MH mailboxes, you need to "subscribe" to the folders or add them to the .mailboxlist file in your home directory. ------------------------------ Subject: 02.16 How can I build MH on Windows? From: Satyaki Das Date: Wed, 19 Jun 2002 20:57:19 -0700 I have gotten MH-E to work on Windows (under Cygwin) using Earl Hood's patched nmh. It was really quite simple, but not very portable. I just needed to add/subtract "c:/cygwin" from a couple of places. Now it can read and send mail (even does PGP attachments). Thought this might be of interest to those of you stuck using Windows at work. From: Earl Hood Date: Sat, 08 Jun 2002 20:30:44 GMT I've made a tar/bz2 bundle available at This includes the patched source with binaries pre-built. I just remembered that I also had to hack the makefiles to get things to install since windoze executables have to end with .exe. I hacked the generated makefiles, so if you rerun configure, you may lose the hacks. Also, I believe the install will fail when trying to install the documentation, so to force things do: make -i install The binaries and support files should get installed (under /usr/local/nmh), but the docs probably won't. Then you will need to edit /usr/local/nmh/etc/mts.conf to reflect your local configuration. If anyone has any problems installing, I could zip up my /usr/local/nmh since I think it contains everything needed for runtime usage. From: Bill Goffe Date: 25 May 1999 18:13:55 GMT If you have Windows, consider looking at VMware http://www.vmware.com/ which provides a virtual machine where you can run Unix and therefore MH under Windows. From: Ted Nolan Date: 24 May 99 17:20:27 GMT The latest Cygnus Cygwin, GNU tools that run under Windows, http://www.cygwin.com/ seems to work pretty well and may well be able to build nmh. ------------------------------ Subject: !02.17 How can I build MH on a Mac? From: Dr Eberhard W Lisse Date: Sun, 05 Jun 2005 13:43:19 +0100 nmh compiles on the G4 iBook running Mac OS X 10.3.7 more or less out of the box with the powerpc HOST option. Use make all install. Use fink to install the nmh package on Max OS X 10.3.9 (and 10.4.1). metamail does not work out of the box. However, metamail-2.7.19-1030.src.rpm (SuSE) which compiles and installs cleanly. For exmh, first use fink to install the tcltk package. Then use fink to install exmh. ------------------------------ Subject: 03.00 ***** Scanning & Reading ***** From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 ------------------------------ Subject: 03.01 What do I do if scan shows the wrong date? From: Bill Wohler Date: Fri, 1 Jan 1993 00:00:00 -0800 Upgrade to MH 6.8 or nmh. From: Darryl Okahata Date: 19 Jan 2000 23:01:10 -0800 MH 6.8.3 and nmh 1.0 still have a minor buglet where sortm doesn't always sort messages properly. If a (questionable) mail client sends messages with 2-digit years, like: Date: Sat, 23 Oct 09 22:02:01 EST or sends out buggy dates like (as buggy versions of Elm do): Date: Sat, 23 Oct 100 22:02:01 EST then sortm will not sort these messages properly. I have submitted patches to nmh-workers. ------------------------------ Subject: 03.02 How would one go about reading Usenet with MH? From: Bill Wohler Date: Sun, 26 Nov 1995 12:32:09 -0800 You can post via mail. Send your article to with a legitimate Newsgroups field. From: Jerry Peek Date: Tue, 1 Nov 1994 00:00:00 -0800 You can save articles in the news readers for later perusal with MH. First, create a symbolic link from your mail directory (e.g., usenet) to your news directory (e.g., "ln -s ~/News ~/Mail/usenet"). You can then treat your news directory as a mail folder. Thus, to select a news group, use "folder +usenet/comp/mail/mh". To set the default save location correctly in rn, use: rn -M -/ or in your nn presentation sequence: news.announce. +$F/$N comp.mail.mh + . . If there's news spooled on your machine (that is, not via NNTP) then you can read a newsgroup with commands like: show first +/usr/spool/news/comp/mail/mh next ... You can also use sequences to keep track of what you've read. MH will automatically set a "cur" sequence in each newsgroup you read that way. So, to continue reading the newsgroup sometime later, after you've read some other folder, you can do: next +/usr/spool/news/comp/mail/mh and you'll read the next (new) article (if any) in that newsgroup. Note that this can eventually make your private context file pretty huge; if there's a group you don't read often, you can remove its context entries with a command like: rmf +/usr/spool/news/comp/mail/mh Don't try that on a folder full of mail (a folder that isn't read-only), though... in that case, it'll remove all the messages! I haven't looked into posting. It seems like it shouldn't be hard. You could set up a "sendproc" that would look at outgoing email messages. If the message had a Newsgroups: header field, your sendproc could call inews(1) instead of post(8). I haven't seen much in the MH manpages or documentation about sendprocs (though I haven't looked for a couple of years...). See the "mysend" script in the MH book section 7.1.4 (13.13), or the URL: http://rand-mh.sourceforge.net/book/mh/senove.html#ASAtDm A threaded news reader like trn or tin is so much nicer, though, that reading news with MH may not be worth the hassle. See also MH book section 9.9 (8.7), or the URL: http://rand-mh.sourceforge.net/book/mh/shafol.html From: Stephen Gildea Date: Fri, 1 Mar 1991 13:03:15 -0800 Although news readers are better, if one really wants to use MH, bbc will do the job. For example, "bbc comp.mail.mh" reads this newsgroup. To enable bbc, you have to specify "bboards" when you build MH. From: Kimmo Suominen Date: 15 Aug 1996 18:18:10 GMT Sendmail v8 comes with MAILER(pop) which was written for the MH spop. Since I use bboards with NNTP, I never looked at the bboards setup. Date: Tue, 1 Nov 1994 00:00:00 -0800 See mhunify in (see also "What other MH software is available?"). ------------------------------ Subject: 03.03 How can I search through multiple folders? From: Jerry Peek Date: Mon, 1 Mar 1993 00:00:00 -0800 Recurse through the folders (in csh and sh): % foreach f (`folders -f`) $ for f in `folders -f` ? pick [switches] +$f > pick [switches] +$f ? end > done Or create a folder that contains links to all messages (in csh and sh): % foreach f (`folders -f | grep -v -x ln`) ? refile -src +$f -link all +ln ? end $ for f in `folders -f | grep -v -x ln` > do refile -src +$f -link all +ln > done and in the future, refile messages with "refile +folder +ln". To find something, use: % pick [switches] +ln See MH book sections 8.2.9 (7.2.9), 8.9.3 (7.8.3), or the URLs: http://rand-mh.sourceforge.net/book/mh/finpic.html#SeMTOnFo http://rand-mh.sourceforge.net/book/mh/usilin.html#AFoFuoLi ------------------------------ Subject: 03.04 Why don't MH format commands such as %(friendly) work? From: Anthony Baxter Date: Sun, 1 May 1994 00:00:00 -0800 The BERK option disables address parsing and therefore functions such as %(friendly). Recompile MH without the BERK option. ------------------------------ Subject: 03.05 Why doesn't "show" display all of a MIME message? From: Jerry Peek Date: Mon, 1 Aug 1994 00:00:00 -0800 It's not the fault of the "show" command or of MH in general. It's your system's configuration. Check the $MHLIB/mhn.defaults (mhn_defaults) file; if it doesn't have defaults for all content types, add them. Or, if you can't (or shouldn't) change mhn.defaults (mhn_defaults), you can put default entries in your MH profile file for those content types. Here's the part of the mhshow(1) (mhn(1)) manpage that explains how content types are handled. The example is for mhshow, but if you're using mhn, you'd replace mhshow with mhn: First, mhshow will look for an entry of the form: mhshow-show-/ to determine the command to use to display the content. If this isn't found, mhshow will look for an entry of the form: mhshow-show- to determine the display command. If this isn't found, mhshow has two default values: mhshow-show-text/plain: %pmoreproc '%F' mhshow-show-message/rfc822: %pshow -file '%F' If neither apply, mhshow will check to see if the message has a application/octet-stream content with parameter "type=tar". If so, mhshow will use an appropriate command. If not, mhshow will complain. So, add defaults that cover the types MH doesn't handle right now (or doesn't handle the way you want it to). Your defaults will override corresponding defaults in the $MHLIB/mhn.defaults (mhn_defaults) file. For example, if you don't have an HTML editor/browser on your system, you could tell MH to use the "less" paginator for HTML message parts: mhshow-show-text/x-html: less %F You can put that line in your MH profile. You can even set different defaults for different terminal types (say, your VT100 at home and your X setup at work). Make a file in the same format as mhn.defaults (mhn_defaults); store its pathname in the MHSHOW (MHN) environment variable. Add a test to your shell setup file (.bash_profile, .profile, .login) that tests the value of the TERM variable -- and, if you have an mhshow (mhn) setup file for that terminal type, store its pathname in the MHSHOW (MHN) variable. See also MH book sections 6.2.3, 9.4.4, 9.4.5, or the URLs: http://rand-mh.sourceforge.net/book/mh/remime.html#HomhShMe http://rand-mh.sourceforge.net/book/mh/confmhn.html#ShComhsh http://rand-mh.sourceforge.net/book/mh/confmhn.html#DiOChSmc From: Michael K. Neylon Date: Tue, 1 Nov 1994 00:00:00 -0800 If you are not using the X Window System, you may have to add this line to your MH profile: mhshow-charset-iso-8859-1: /bin/sh -c '%s' # nmh mhn-charset-iso-8859-1: /bin/sh -c '%s' # MH ------------------------------ Subject: 03.06 Can I get show not to run "less" so much on MIME messages? From: Richard Coleman Date: Tue, 20 Jan 1998 02:19:58 -0500 On nmh, you can do this just by "show -nocheckmime". This will disable the detection of MIME messages. From: Bill Wohler Date: Tue, 1 Nov 1994 00:00:00 -0800 If you say, "show all," and one of the messages was a MIME message, your pager will be run several times on each message, rather than once on all the messages as a whole. If you find this annoying, set the environment variable NOMHNPROC: % setenv NOMHNPROC "" # csh $ NOMHNPROC= # sh and bash $ export NOMHNPROC See also MH book sections 6.2.3, 6.2.10, or the URLs: http://rand-mh.sourceforge.net/book/mh/remime.html#HomhShMe http://rand-mh.sourceforge.net/book/mh/remime.html#Alttomhn ------------------------------ Subject: 03.07 Why do I get "mhn: don't know how to display content"? From: Richard Coleman Date: Tue, 20 Jan 1998 02:19:58 -0500 This has already been fixed in nmh. From: Keith Moore Date: Sun, 8 Sep 1996 15:49:50 -0700 MH 6.8.3 has a bug where it will not handle multipart/foo correctly if it doesn't know about foo. The patch: http://www.gw.com/mail/mh/patches/all/mhn_multipart tells it to treat such things as if they were multipart/mixed. (See also "Why doesn't "show" display all of a MIME message?"). ------------------------------ Subject: 03.08 How can I automatically delete MH backup files? From: mccammaa at expt05.stp.xfi.bp.com (Andy McCammont) Date: 22 May 1995 06:27:36 -0400 On System V system, add this to your crontab. If you don't have one, put this in a file, and run "crontab file". If your system does not support personal crontab files, get your system administrator to add an equivalent line to the system crontab file or daily clean-up script. Note that some administrators set the prefix character to '#'. # Remove old MH files 5 5 * * * find /PATH/TO/HOME/Mail -name ",*" -mtime +5 -exec rm {} \; ------------------------------ Subject: 03.09 Fixing "cannot fopen and lock /var/spool/mail/(user)" From: Patrick.Wambacq at esat.kuleuven.ac.be Date: Mon, 30 Sep 96 15:00:16 +0200 One should put the following lines in the $MHLIB/mts.conf (mtstailor) file: lockldir: lockstyle: 1 This prevents MH from using kernel level locking, and uses lock files instead. It solved the problem for me on two different architectures. When the lockldir entry is left empty as above, the lock file is put in the same directory as the file to be locked. If another directory is wanted, its name should be put here. From: alhy at MAILBOX.SLAC.Stanford.EDU Date: Mon, 9 Sep 1996 01:01:16 -0700 Often, this is caused by an NFS file lock. Don't ask me how it got there in the first place. To remove the file lock, do the following: # cd /var/spool/mail # cp user /tmp/user.tmp; rm user # save mail; remove locked file # chown user /tmp/user.tmp # allow user to inc old mail # su - user user% inc -file user.tmp # incorporate user's old mail Any mail that you receive in the fraction of a second that the second set of commands takes will be lost. (See also "Why does inc hang (on Sun)?") ------------------------------ Subject: 03.10 Can I read my mail with a Web browser? From: Jerry Heyman Date: Sat, 09 Oct 2004 12:41:03 -0400 See http://www.squirrelmail.org/ SquirrelMail is a standards-based webmail package written in PHP4. It includes built-in pure PHP support for the IMAP and SMTP protocols, and all pages render in pure HTML 4.0 (with no JavaScript required) for maximum compatibility across browsers. It has very few requirements and is very easy to configure and install. SquirrelMail has all the functionality you would want from an email client, including strong MIME support, address books, and folder manipulation. No MH support. Unless you're willing to write it... From: J C Lawrence Date: Wed, 10 Dec 2003 09:54:15 -0500 UW-imap can read MH folders although it doesn't maintain sequence files properly. Drop any of the IMAP web front ends in front of that. From: aeriksson at fastmail.fm Date: Wed, 10 Dec 2003 22:36:52 +0100 Have a peek at http://wmh.sf.net/. It's been a while since I worked on it, but it does give me what I need. Date: Mon, 05 Oct 1998 11:02:52 -0500 From: Kent Landfield Hypermail now supports MIME and alternate mailbox formats and sorts by author, date, and thread and can be read by a WWW reader. http://www.landfield.com/hypermail/ From: "Patrick A. Coronato" Date: 8 Sep 1995 16:36:03 GMT MHonArc, by Earl Hood from Convex, will read MH mailboxes as well as Unix mailboxes, create HTML "archives" and will also sort by date, thread and author and has support for MIME. Also, MHonArc is written in the Perl language. (You should go to this site if nothing more than to see the cool logo!) http://www.mhonarc.org/ ------------------------------ Subject: 03.11 How can I run inc automatically with POP? From: Bill Wohler Date: Mon, 27 Nov 1995 12:23:51 -0800 If MH has been compiled with RPOP, then the POP server host either needs to have your host in /etc/hosts.equiv or in your .rhosts file. Then add to your MH profile: inc: -host cuckoo given that "cuckoo" is the name of the your POP server. From: Andy Norman Date: Mon, 1 May 1995 00:00:00 -0800 Assuming your POP server is called cuckoo, add an entry to your MH profile for 'inc' like so: inc: -noaudit -norpop -noapop -host cuckoo Add the following to ~/.netrc and ensure it is readable only by you (e.g., chmod 600 .netrc): machine cuckoo.domain.name login joeuser password secret Replace the hostname, login and password with your own, of course. The hostname probably has to be fully qualified (i.e., include the full domain name). This example assumes that you can send mail by other means (e.g., with SMTP). ------------------------------ Subject: 03.12 Why does inc hang (on Sun)? From: ericding at mit.edu (Eric J. Ding) Date: 30 Apr 1996 00:22:01 -0400 This may be due to a non-robust implementation of lockf() over NFS. Try setting lockstyle to 1 in the $MHLIB/mts.conf (mtstailor) file so that MH uses dotfile locking rather than FLOCK or LOCKF. ------------------------------ Subject: 03.13 How can I get POP to work? From: Jonathan George Date: Tue, 23 Apr 1996 10:23:16 GMT If you get the error: inc: -ERR Unknown command: "rpop" you're trying to use "rpop" as the mechanism to authenticate the user. This mechanism is specified in RFC 1225 and then removed by RFC 1460. Your POP server is (rightly) rejecting this. The POP specification (RFC 1939) states that authentication is done either via a USER/PASS pair or via the APOP command. Try running inc with -noapop -norpop flags. ------------------------------ Subject: 03.14 How do I persuade mhshow (mhn) not to bring up a new window? From: Joel Reicher Date: Tue, 13 Nov 2001 16:49:04 +1100 I personally think [the solution below] is not the right solution. There's a reason that new window is opened--to ensure the correct characters are available. The "right" solution is surely to set the MM_CHARSET env var to iso-8859-1 and make the appropriate adjustments to the pager (in the case of less, setting LESSCHARSET=latin1). From: Larry Daffner Date: 27 Mar 1996 16:53:39 -0600 Add one of the following to your .mh_profile: mhshow-charset-iso-8859-1: %s # nmh mhn-charset-iso-8859-1: %s # MH ------------------------------ Subject: 03.15 How do I turn off of all the mhshow (mhn) prompts? From: Bill Wohler Date: Sun, 11 Mar 2001 11:33:10 -0800 In nmh, use mhshow -nopause. From: Larry Daffner Date: 27 Mar 1996 16:53:39 -0600 The "part xxx" message is controlled by the -list switch to mhn so add "mhn: -nolist" to your .mh_profile. To remove the pause, add an entry for "mhn-show-text/plain: more '%F'" to override the default which includes the "%p" escape. All of this is covered in the mhn man page (sort of--you need to add 2+2). It's a bit long, but well worth reading. ------------------------------ Subject: 03.16 Why is inc splitting messages improperly? From: Mayank Choudhary Date: Mon, 29 Apr 1996 09:39:29 -0700 MH considers "From " lines as message separators, so if this string is found within the body, inc splits the message. Add the following line to your .forward "|/usr/bin/mailcompat " where user-name is your login-id. See mailcompat(1) for more information. ------------------------------ Subject: 03.17 Can MH thread messages? From: "John W. Coomes" Date: 30 Apr 1997 13:02:10 -0500 Sort of. You can resort your folders by Subject with: sortm -textfield subject ------------------------------ Subject: 03.18 How can I avoid reading the HTML version of the message? From: Bill Wohler Date: 23 Jun 2000 10:19:34 -0700 You might find that you have two versions of the same message within the message. For example, one part might have a content type of text/plain and the other might be text/html. You may find that mhshow (mhn -show) wants to show the HTML version This is a feature of the multipart/alternative content type. If you prefer reading the the plain text version over the HTML version, you'd have to remove the line in $MHLIB/mhn.defaults or ~/.mh_profile that starts with mhshow-show-text/html (mhn-show-text/html). Of course, the tradeoff is that you'd never be able to view text/html at all, but you probably wouldn't care. ------------------------------ Subject: 03.19 How do I view or save attachments? From: Bill Wohler Date: Mon, 5 Mar 2001 09:12:15 -0800 Use mhshow (mhn -show) and mhstore (mhn -store) respectively. See the man pages for more details. ------------------------------ Subject: 03.20 How do I view HTML attachments with Netscape? From: Bill Wohler Date: Mon, 5 Mar 2001 09:58:05 -0800 Add one of the following to ~/.mh_profile: mhshow-show-text/html: %lnetscape -remote 'openURL(file:%f, new-window)' mhn-show-text/html: %lnetscape -remote 'openURL(file:%f, new-window)' The % escapes are described in the mhshow (mhn) man page. The ", new-window" argument in the netscape invocation is optional, but handy. After reading the message, you can dismiss the window with M-w and go back to reading mail. ------------------------------ Subject: 03.21 Fixing folders: unable to allocate storage for msgstats From: Pete Phillips Date: 30 Jan 2003 03:33:57 -0800 I found the following in my context file: atr-cur-/tmp: 1 atr-pseq-/tmp: 1 For some reason folders doesn't like this. Whether it's because of permission problems or just the size of my tmp directory (about 3/4 of a GB) I don't know, but removing these lines from my context file fixed the problem. ------------------------------ Subject: 03.22 How do I recursively list message attachments? From: Joel Reicher Date: 31 Oct 2001 00:36:14 +1100 I haven't quite managed a recursive listing, but I have worked out a recursive store, which is still useful. Hinted by a builtin display string for mhshow, I found the following works for mhstore: mhstore-store-message/rfc822: | mhstore -file - With that, mhstore will happily recurse down storing everything on its way. Not very discriminate, but the line can be altered to limit without destroying the recursion: mhstore-store-message/rfc822: | mhstore -auto -type message/rfc822 -type image/jpeg -file - which also names the files automatically for good measure. And, FWIW, I engage this by putting it in a separate file and invoking mhstore like env MHSTORE=mhn.rec mhstore ------------------------------ Subject: 03.23 Why do folder and flist overlook some of my sub-folders? From: Richard Coleman Date: Mon, 10 Oct 2005 18:14:24 -0700 There was a bug in these commands which caused them to quit searching a folder for sub-folders too early if the folder contained sub-folders which were symbolic links. This has been improved in nmh-0.25, but folder and flist will still not recurse into folders that contain only symbolic links. ------------------------------ Subject: 04.00 ***** Filing ***** From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 ------------------------------ Subject: 04.01 Can I append MH messages to a Unix mailbox format file? From: Richard Coleman Date: Tue, 20 Jan 1998 02:19:58 -0500 In nmh, use packf instead. From: Bill Wohler Date: Fri, 1 Jan 1993 00:00:00 -0800 Yes, see $MHLIB/packmbox. ------------------------------ Subject: 04.02 Can I append MH messages to a GNU Emacs rmail BABYL-format file? From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 To convert your MH folders to BABYL folders, first run the following script on your Mail directory. #!/bin/sh for f in Mail/*; do if [ -d $f ]; then touch msgbox folder=`basename $f` echo -n packing $folder ... packf +$folder echo done mv msgbox Mail-rmail/$folder fi done This assumes you don't have nested folders. Your rmail folders will be left in $HOME/Mail-rmail in MMDF format which rmail can read. Then run rmail-input for each folder, which converts each folder into BABYL format. Be sure not to append any messages before they are converted from MMDF to BABYL, since there may be really strange results. ------------------------------ Subject: 04.03 Why do I get ".../.mh_sequences is poorly formatted?" From: Richard Coleman Date: Tue, 20 Jan 1998 02:19:58 -0500 This bug has been fixed in nmh (as of version 0.20). There are no limitations on the length of an entry in the .mh_sequences file. From: Jerry Peek Date: Mon, 1 Aug 1994 00:00:00 -0800 There is a line length limit in this file. When sequences are unbroken (without gaps in numbering), that makes short entries in the .mh_sequences file, like this: inftex: 72-8000 But when there are lots of numbering gaps, the entry gets long: inftex: 76 79-81 87 95-96 105 109 120 124 135 141 158 163... That's when you run into problems, and why it's good to keep the folder packed when you can. Simply run "folder -pack +folder". If you're refiling a lot of messages in a large folder, you might not be able to use sequences. Use backquotes to give the message numbers directly to "refile". For example: refile +tex/info-tex `pick -to info-tex` That can still generate a long list of arguments to the "refile" command, and some Unixes can't handle that. In that case, use xargs(1): pick -to info-tex | xargs refile +tex/info-tex If worse comes to worst, fire up a Bourne shell and use a "while" loop: pick -to info-tex | fmt | while read nums; do refile +tex/info-tex $nums done The fmt(1) command breaks long lines into manageable chunks of 72 characters or so, splitting arguments at whitespace. When you redirect the input of a while loop, a "read" command will read the incoming text and store it in a shell variable line by line. This is a quick-&-dirty way to write xargs(1) if you don't have it. ------------------------------ Subject: 04.04 How can you save News articles into an MH folder? From: Jerry Peek Date: Mon, 1 May 1995 00:00:00 -0800 If your newsreader handles backquotes on its command line, you can use the mhpath command. For instance, if your "save" command is "s": s `mhpath new +somefolder` Or if your newsreader lets you define your own commands, as in shell aliases, you could define that as a command. If your newsreader can pipe an article to the standard input of a program, use the "rcvstore" command (in the MH library). For instance, if your "pipe" command is "|": | $MHLIB/rcvstore +somefolder Of course, you can also put that in a little shell script. ------------------------------ Subject: !04.05 Are there any good tools to archive MH messages? From: Bill Wohler Date: Sun, 23 Sep 2007 18:35:53 -0700 For those of lesser means, I have three shell scripts for archiving, seeking, and extracting MH messages that I had been using for a couple of decades. Send mail if interested. However, now that disk space is cheap and one can index years worth of mail in a minute or two, I haven't run those scripts in a few years. I intend to update them to index and archive a years-worth of mail at some point. Since glimpse is no longer free (as in speech), I've switched to swish++. Other indexing tools (which are also compatible with MH-E) include mairix and namazu. From: glimpse at cs.arizona.edu Date: Sun, 4 Mar 2001 10:26:24 -0800 Glimpse is a very powerful indexing and query system that allows you to search through all your files very quickly. It can be used by individuals for their personal file systems as well as by organizations for large data collections. http://www.webglimpse.org/ ------------------------------ Subject: 04.06 How can I remove duplicate messages? From: Bill Wohler Date: Sun, 17 Oct 2004 13:04:57 -0700 Don't let them get in there in the first place. Add the following to your .promailrc: :0 * ? formail -D 16384 $PM_CACHE/msgid /dev/null If it's too late, you might be interested in mhfinddup, attached below, which is an embellishment of the Perl script in (see "Removing duplicate messages (Perl)"). From: Jerry Peek Date: 20 Nov 1995 18:51:24 GMT The easiest way I know of is to sort the folder by the Message-ID field using the sortm(1) command. After the sort, each message should be next to its duplicates in the folder. Use a script (shell, Perl, etc.) to weed out the duplicates. (See "Removing duplicate messages (Bourne)"). The Perl script in (see "Removing duplicate messages (Perl)") does not require that you first sort the folder. ------------------------------ Subject: 04.07 How can I remove holes in numbering? From: Bill Wohler folder -pack ------------------------------ Subject: 05.00 ***** Composing & Replying ***** From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 ------------------------------ Subject: 05.01 Why does repl add a "Re:" to a message that already has one? From: Larry McVoy Date: Fri, 1 Mar 1991 13:03:15 -0800 I carefully reconfigured and rebuilt MH from scratch and the problem went away. ------------------------------ Subject: 05.02 How do I include messages in repl with or without ">"? From: Richard Coleman Date: Tue, 20 Jan 1998 02:19:58 -0500 In nmh, to include a message in a reply with a leading ">", just use "repl -format". From: Alan Thew , Mike Schwager , James T Perkins Date: Fri, 1 Jan 1993 00:00:00 -0800 When making a reply, specify a filter file on the command line: repl -filter repl.format This filter file must be in your MH mail directory (usually "Mail", in your home directory). Here are a couple of example repl.format files: overflowtext="",overflowoffset=0 message-id:nocomponent,formatfield=\ "In message %{text}, you wrote:" body:component="> ",overflowtext="> ",overflowoffset=0 or overflowtext="",overflowoffset=0 date:component="Your message dated",formatfield=\ "%<(nodate{text})%{text}%|%(pretty{text})%>" body:component="> ",overflowtext="> ",overflowoffset=0 Setting overflowoffset to 0 keeps MH from doing anything to extra-long lines in the headers. In the body, however, this behavior is overridden so that long lines are automatically broken and a ">" is inserted before every line. You could put almost whatever you want between those quotes, although the "standard" ">" makes it easier to read notes that have been included several times. The examples differ with the descriptive text that is inserted before the included body. It is suggested not to use the "prompter" editor in this case, since it is likely that you'll not want to use all of the included message. Indeed, it is proper etiquette to edit out all unnecessary include verbiage so readers don't have to wade through the morass to read your pearls of wisdom. WARNING: the '>' appears on the first line ONLY in versions prior to 6.7.2. Upgrade to MH 6.8. See also MH book sections 7.8.4 (6.7.4), 7.8.5 (6.7.5), 10.4.1 (9.4.1), or the URLs: http://rand-mh.sourceforge.net/book/mh/reprep-2.html#ReaEdi http://rand-mh.sourceforge.net/book/mh/reprep-2.html#Inc http://rand-mh.sourceforge.net/book/mh/verrep.html#IncRep ------------------------------ Subject: 05.03 How can I eliminate duplicate copies of letters to myself? From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 Add these two lines to your MH profile file: Alternate-Mailboxes: user@host1, user@host2, ... repl: -nocc me The Alternate-Mailboxes also tells scan which messages are really from you so that it can place the recipient in the scan line instead of the sender. From: Jerry Peek Date: Fri, 1 Mar 1991 13:03:15 -0800 To get one copy, you can either: - Take out the "-nocc me"... then you'll get exactly one copy of your replies (assuming all your addresses are listed in Alternate-Mailboxes), or - (See also "How can I save a copy of all messages I send?"). For more info, see the man pages comp(1), repl(1), forw(1), dist(1) and mh-mail(5). See also MH book sections 7.8.2 (6.7.2), 9.8 (8.6), or the URLs: http://rand-mh.sourceforge.net/book/mh/reprep-2.html#Sel http://rand-mh.sourceforge.net/book/mh/defmai.html From: Alec Wolman Date: Fri, 1 Mar 1991 13:03:15 -0800 Listing the name of a mailing list in Alternate-Mailboxes is also a convenient way to AVOID automatically cc-ing a mailing list when replying to a person who sent the message to the mailing-list. From: Andre Srinivasan Date: Fri, 24 Jan 1997 09:33:19 -0800 Rather than specify the hostname as part of the mailbox, you can simply specify the username and it will match on any host: Alternate-Mailboxes: asriniva ------------------------------ Subject: 05.04 How can I include my signature? From: Eric W. Ziegast , Hardy Mayer Date: Tue, 1 Nov 1994 00:00:00 -0800 There are several ways. 1) The MH way. 1a) In your Mail directory, create files that include your signature into the format of the message. ~/Mail/components: To: cc: Subject: -------- -- Eric Ziegast ziegast at uunet.uu.net UUNET Technologies uunet!ziegast ~/Mail/replfmt body:component="> ",compwidth=2 :-- :Eric Ziegast ziegast at uunet.uu.net :UUNET Technologies uunet!ziegast To use the replfmt file, add the following to your ~/.mh_profile: repl: -filter replfmt When comp is used, your signature is already there along with my headers. When repl is used, the mhl program takes the body of the letter you're replying to, prepends '> ' to each line and then adds your signature at the end (available after version 6.7). 1b) Create an "editor" which can be called from whatnow to add the signature when desired or create a frontend to post (use the .mh_profile line "postproc: postproc" to call it) that always appends the .signature file before calling post to mail the message. David J. Fiander , David A. Truesdell and Tom Wilmore have sample scripts to do these. From: Jerry Peek Date: Tue, 1 Sep 1992 00:00:00 -0800 1c) mysend, a sendproc script, processes a message after "What now? send". See "What references exist for MH" to see where the MH book scripts can be ftped from. The script is explained in MH book Section 7.1.4 (13.13), or the URL: http://rand-mh.sourceforge.net/book/mh/senove.html#ASAtDm 2) Using your editor. If you use vi, you can use something like: map S :r ~/.signature to load your signature out of .signature every time you hit 'S'. 3) Use your windowing system. xterm, for example, can provide key and button mappings for the utterly lazy. 4) If you use Emacs with MH-E: 4a) C-c C-s will append the signature. From: Andre Srinivasan Date: Mon, 1 May 1995 00:00:00 -0800 4b) Add the following to your .emacs file: (add-hook 'mh-compose-letter-function (function (lambda(a b c) (save-excursion (goto-char (point-max)) (beginning-of-line) (mh-insert-signature))))) This hook is called after the draft buffer has been initialized, but before you have a chance to type anything. From: Tom Christiansen Date: Tue, 1 Nov 1994 00:00:00 -0800 Tired of the same old signature? Want different signatures for different newsgroups? Here's a program to help you out. The way it works is to have .signature be a named pipe, so if you don't have named pipes, just say 'n'. The sigrand program then feeds stuff down the pipe every time someone wants to read it. That way it works for more than just news, but for anything that wants to read your .signature, like a mailer. You have your choice of three kinds of signatures: 1) random (short) fortune from "fortune -s"; you get these if you don't have a global sig file. 2) random fortune from ~/News/SIGNATURES [global sig file] 3) random fortune form ~/News/(newsgroup)/SIGNATURES [local sig files] Send mail if interested. Date: Tue, 1 Nov 1994 00:00:00 -0800 See also the Signature FAQ (see "What references exist for MH?"). ------------------------------ Subject: 05.05 How do I call my editor with arguments? From: John Romine Date: Mon, 1 May 1995 00:00:00 -0800 Set your editor (in .mh_profile) to the following shellscript. #/bin/sh "$@" exit 0 From: Ray Nickson Date: Fri, 1 Mar 1991 13:03:15 -0800 You might find it useful to make $EDITOR, or to use different arguments depending on your EDITOR environment variable. ------------------------------ Subject: 05.06 How can I digestify messages in a folder for mail to another user? From: Jerry Peek , Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 How about: forw [-digest tmp] [-form forwcomps] [-filter mhl.digest] messages +folder These messages can be un-digestified :-) by the MH burst(1) program. See also MH book sections 7.9.7 (6.8.7), 8.10 (7.9), or the URLs: http://rand-mh.sourceforge.net/book/mh/forfor-2.html#CreDig http://rand-mh.sourceforge.net/book/mh/burdig.html From: Glenn Vanderburg Date: Tue, 1 Nov 1994 00:00:00 -0800 There's another way, which is better if the recipient understands MIME. forw -mime messages +folder (Make sure that you either have "automhnproc: mhn" in your mh profile, or type "edit mhn" to whatnow before you send it.) This bundles each message in a MIME message/rfc822 part, and then bundles the whole mess up in a multipart/digest part. You can still add your own text at the beginning. The MH burst program can also understand these messages and split them apart with no problem. This works beautifully with MIME-capable mail readers, especially exmh. ------------------------------ Subject: 05.07 How can I change my return address? From: Bill Wohler Date: Tue, 1 Dec 1992 00:00:00 -0800 If you find that your mailer creates a From header that others have trouble replying to, you can add a Reply-To header to override the From header in replies. Copy the components and replcomps files which are normally found in $MHLIB into your Mail directory and add a line like the following after the Subject header replacing my address with your address: Reply-To: jack@newt.com ------------------------------ Subject: 05.08 How can I change my From header? From: Bill Wohler Date: Mon, 27 Nov 1995 11:40:50 -0800 With either of the following solutions, you'll need to add an Alternate-Mailboxes entry in your MH profile so that scan prints "To: recipient" rather than your faked address. For example, if your real address is user@somedomain.com and you've added a From field of: From: Joe Bob you'll add the following to .mh_profile: Alternate-Mailboxes: joe.bob@somedomain.com From: Bill Wisner Date: Tue, 1 Dec 1992 00:00:00 -0800 If you're just interested in changing the hostname, add a line to $MHLIB/mts.conf (mtstailor): localname: desired_host_name From: Jerry Peek Date: Tue, 1 Dec 1992 00:00:00 -0800 Just put a "From:" header in your "components", "replcomps" and "forwcomps" files. MH will add a "Sender:" header with what it thinks is your real address. ------------------------------ Subject: 05.09 How can I save a copy of all messages I send? From: Ping Huang Date: Mon, 18 Dec 1995 17:51:33 -0800 I suggest the use of the Dcc: field (See "What is the Dcc header?"), since the use of "Dcc:" solves the issue of having the same Message-Id. The warning about using Dcc: in general contexts doesn't apply to self-blind-carbon copies, and if "Dcc:" is used and you are automatically sorting messages into folders based on mailing lists, messages which you send will get refiled in the same way. Some may prefer all outgoing messages to be segregated; others (including myself) prefer not to segregate outgoing messages. From: Bill Wohler , Jerry Peek Date: Mon, 1 Aug 1994 00:00:00 -0800 Copy the components and replcomps files which are normally found in $MHLIB into your Mail directory and add a line like the following after the cc header: Fcc: +out All outgoing messages will then be saved in the +out folder. If you make a distcomps file, it needs "Resent-Fcc:". From: Jeppe Sigbrandt Date: Sat, 5 Apr 1997 02:04:53 +0100 You can also use @ in the Fcc field to file the outgoing message in the current folder. Fcc: @ This is useful if you filter your mail (e.g., with procmail) and you read your mail in folders other than +inbox. From: David S. Goldberg Date: 30 Oct 1995 10:23:55 -0500 You can get the Message-ID field by placing the folder in the "Fcc" field and adding: send: -msgid to your .mh_profile. Unfortunately, this Message-ID isn't as useful as sendmail's--it doesn't include the date. ------------------------------ Subject: 05.10 Can the folder in Fcc: be dynamically specified? From: Andy Rabagliati Date: Mon, 1 Aug 1994 00:00:00 -0800 My suggestion would be to run Tom Christiansen's rfi script. If you cannot find it on *.sources archive sites (please try first), I can mail it to you. One good idea would be to write a whatnowproc that files the mail based on a procmail or deliver file. Then you can use the same file for incoming and outgoing mail. ------------------------------ Subject: 05.11 Can I post secure/encryped mail? From: Bill Wohler Date: Thu, 19 May 2005 18:06:39 -0700 MH-E 7.0 supports GPG out of the box. From: Bill Wohler Date: Mon, 5 Mar 2001 05:30:43 -0800 PGP keys can be obtained via mail from , and via the Web at http://www.pgp.net/pgpnet/pks-commands.html. Many PGP front-ends (e.g., mailcrypt) automatically obtain keys for you. See http://www.pgp.net/ for more info. From: Vivek Khera Date: 19 Jun 1995 22:06:37 GMT A much more robust Perl script I wrote is appended below. [Send a note to Vivek for the script. --Ed] It works its way through aliases, and avoids problems with full names in the headers. Here is my mhn profile entry to display the messages. mhshow-show-application/x-pgp: %l pgp -m '%F' # nmh mhn-show-application/x-pgp: %l pgp -m '%F' # MH to use the script, after you edit the message, at the What now? prompt, type "edit pgpmail" for plain ascii encryption or "pgpmail -m" for a MIME formatted encryption. If you want to add a digital signature, give the script the -s flag also. From: Jeffrey C. Ollie Date: Mon, 1 May 1995 00:00:00 -0800 TIS has a free, draft-standard compliant public key system that works with MH (PEM). Check it out on ftp.tis.com. From: Kimmo Suominen Date: Mon, 1 May 1995 00:00:00 -0800 You could try looking at the URL http://www.tac.nyc.ny.us/ and following the link from the cover page. Everything you need for PGP to work with MH is there (scripts and mhn entries). From: mathew at mantis.co.uk Date: Mon, 1 May 1995 00:00:00 -0800 Excellent stuff. I've tried altering it to conform to draft-borenstein-pgp-mime-00.txt. Unfortunately, I can't get mhn to tag PGP-armoured text as application/pgp; format=text without it insisting on base64 encoding it. So I can't quite manage to implement the standard. *sigh* Presumably mhn thinks that anything which isn't text/* must be encoded. From: John R MacMillan Date: Wed, 16 Apr 1997 00:06:59 -0700 Premail, in conjunction with MH, can display and compose security multiparts (e.g., multipart/signed and multipart/encrypted PGP mail, non-MIME PGP, and some S/MIME). Check out http://www.c2.org/~raph/premail/ for details. ------------------------------ Subject: 05.12 How can I send multi-media (MIME) attachments? From: Brian Exelbierd Date: Mon, 09 Oct 1995 08:05:55 -0400 The short guide: 1. Compose a letter using comp. 2. When you get to a point where you want to include a MIME attachment, type the following to include a GIF image (note: the '#' must be in the first column): #image/gif [Pictures at an Exhibition] /usr/lib/pictures/exhibition.gif 3. Finish your letter, adding more text or attachments as needed. 4. Save your letter and exit the editor. At the Whatnow prompt type "edit mhn". mhn will automatically format your letter with the MIME attachments leaving the original letter in ,##,orig where ## is the letter number. 5. Type "send" at the Whatnow prompt, and poof, you have just sent MIME mail. I strongly recommend you practice sending yourself MIME mail first. For more information, see the mhn(1) man page, ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types for a list of allowed media types in addition to image/gif, and Chapter 3 in the MH book or the URL: http://rand-mh.sourceforge.net/book/overall/tocs/intmime.html ------------------------------ Subject: 05.13 What's the best way to send mail to a long list of people? From: Bill Wohler Date: Thu, 12 Oct 1995 07:53:53 -0700 There are three ways to keep the list of members from appearing in everyone's header. If you're planning on mailing to these people regularly, the best way is to create an alias in /etc/aliases (/usr/lib/aliases). That way, recipients can send and reply to the list as well. The other two ways allow you to manage the list privately, but the recipients cannot send to the list (unless you set something up with your deliver or procmail script). One is with a group list. It looks like this: To: All-members: member1, member2, member3, ..., membern; The recipients see this: To: All-members:; You can make this an MH alias as well. The second way is to use a blind carbon copy (see "How do I send blind carbon copies?"). Or you could also use the undocumented Dcc field which is used like the Bcc field, but doesn't inject the "Blind-Carbon-Copy." Warning: (See "What is the Dcc header?") ------------------------------ Subject: 05.14 What is the Dcc header? From: jpeek at jpeek.com (Jerry Peek) Date: 14 Sep 96 05:51:13 GMT If you put the alias in the Dcc field and leave the To: field empty, there's a good chance that the recipients will get a message with the header field: Apparently-to: and it might even list several addresses. To avoid that, use a To: field with some address (like yours) in it. I use a comment that tells people what's really happening--like this, more or less: To: "Faculty members, c/o" dcc: faculty There are some other choices, like using an un-replyable group list in the To: field, but I think they tend to confuse non-techies. Date: Wed, 27 Sep 1995 09:46:37 -0700 From: John Romine The Dcc (Distribution Carbon Copy) field behaves much like the Bcc field, but does not add the "Blind-Carbon-Copy" notice. This header is removed before posting the message,and a copy of the message is distributed to each listed address. This could be considered a form of Blind Carbon Copy which is best used for sending to an address which would never reply (such as an auto-archiver). People should not be using Dcc as a substitute-Bcc to send to other people. When users use Dcc as a substitute for Bcc, there is *no* indication to the "blind" recipients that they have received a blind copy. If those recipients should reply (and they have no indication why they shouldn't), the original author could be very embarrassed (or worse). ------------------------------ Subject: 05.15 How can I make sense of the replcomps file? From: Bill Wohler Date: Thu, 9 Mar 2006 19:27:14 -0800 The best thing to do is curl up with the mh-format(5) man page, or Section 11.2 of the MH book, or the URL: http://rand-mh.sourceforge.net/book/mh/mhstr.html These will explain the default replcomps file, included here. Don't start with the first four lines--the latter group of lines are much easier to understand. %; $Header$ %; %; These next lines slurp in lots of addresses for To: and cc:. %; Use with repl -query or else you may get flooded with addresses! %; %; If no To:/cc:/Fcc: text, we output empty fields for prompter to fill in. %; %(lit)%(formataddr{reply-to})\ %(formataddr %<{from}%(void{from})%|%(void{apparently-from})%>)\ %(formataddr{resent-to})\ %(formataddr{prev-resent-to})\ %(formataddr{x-to})\ %(formataddr{apparently-to})\ %(void(width))%(putaddr To: ) %(lit)%(formataddr{to})\ %(formataddr{cc})\ %(formataddr{x-cc})\ %(formataddr{resent-cc})\ %(formataddr{prev-resent-cc})\ %(formataddr(me))\ %(void(width))%(putaddr cc: ) Fcc: %<{fcc}%{fcc}%|+outbox%> Subject: %<{subject}Re: %{subject}%> %; %; Make References: and In-reply-to: fields for threading. %; Use (void), (trim) and (putstr) to eat trailing whitespace. %; %<{message-id}In-reply-to: %{message-id}\n%>\ %<{message-id}References: \ %<{references}%(void{references})%(trim)%(putstr) %>\ %(void{message-id})%(trim)%(putstr)\n%>\ Comments: In-reply-to \ %<{from}%(void{from})%?(void{apparently-from})%|%(void{sender})%>\ %(trim)%(putstr)\n\ message dated "%<(nodate{date})%{date}%|%(tws{date})%>." -------- In particular, note the following: \ consider the following line to be part of the current line. If this continuation character is absent, a newline (\n) will always be inserted. Note that if the field is conditional, and the condition is false, and there isn't a trailing backslash, then a blank line will appear in your reply. Since the rest of the header will now be considered to be part of the body, this is probably not what you want. \n inject an actual newline into the reply. Note that inserting a field without a trailing backslash (\) will cause that field to be emitted in the reply as well. %<{field}, %?{field}, %|, %> if field exists, else if field exists, else, endif. Conditional fields nearly always contain an explicit newline (\n) and end with a continuation character (\). %(command) mh-format commands %{field} value of the header field inserted at this point To add new fields, you can either add fields based on whether certain fields exist in the original message (e.g., %<{message-id}...), or hard-code them, as in the Fcc, Subject, or Comments fields above. ------------------------------ Subject: 05.16 How can I convert quoted-printable to 8bit in quoted text in replies? From: Jarle F. Greipsland Date: 22 Aug 1995 10:42:07 +0200 The idea behind the solution is that I need mhn to store the contents of the mail in the native iso8859-1 format somewhere. I did this by creating a custom editor that is invoked when I reply to a message. This editor extracts the body of the message (sorry, no multipart stuff), indents it with '> ', appends it to the draft message and invokes the ordinary editor on it. Here are the details: `isorepl' is a symbolic link from my $HOME/bin-directory to `repl'. In my .mh_profile I added the following two lines: isorepl: -form isoreplcomps -editor isoextract isoextract-next: vi The isoreplcomps file in my Mail-directory contains: %(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%>\ -------- #\ %<{from}%(friendly{from}) writes%|You write%>: This is a "Usenet-like" quoting style. Modify to suit your own taste. This form will setup the proper header, as well as the first line of the new message (In nnnn writes etc.). The first editor, `isoextract', looks like this: #!/bin/sh # # Called from within repl where the "editalt" variable is valid # # Point to a special MHN configuration file (save old one) OLDMHN="$MHN" MHN=$HOME/`mhparam Path`/isoquotemsg export MHN # Extract message body to "native" format (should be iso-8859-1) # > More bla bla. mhn -file "$editalt" -store >> $1 2>/dev/null MHN="$OLDMHN" myname=`basename $0` next=`mhparam ${myname}-next` if [ "x$next" != "x" ]; then exec $next "$@" fi `isoquotemsg' has just one rule; how mhn should store a text message. mhn-store-text: |sed -e 's/^[ ]*$//' \ -e 's/^\([>|]\)\(.*\)$/>\1\2/' \ -e 's/^\([^>|].*\)$/> \1/' This tells mhn to pipe the message to stdout, where the sed commands will do the reformatting/quoting. (Note: the first pair of square brackets contains a space and a tab.) So, when I do a `isorepl' to a message, `repl' will create the draft message with the proper headers (based on the `isoreplcomps' format file), fire off its first editor, `isoextract', with the name of the draft file as its parameter. `isoextract' then invokes mhn in a suitable environment, tells it that it is to use the file $editalt as its source, and orders it to store the contents. The store-text rule in the custom MHN-file tells it to just pipe the message (in native iso8859-1 form) through a small set of sed commands, and `isoextract' uses the normal shell construct to append the result to the draft file. Then, if there's defined a `isoextract-next' entry in the .mh_profile, isoextract exec's this editor. ------------------------------ Subject: 05.17 Can I have aliases include aliases? From: Bruce Cox Date: Fri, 16 Aug 1996 14:26:12 +1000 Indeed, you can. You just need to remember the way MH expands aliases. In particular, the right hand sides are only expanded by the aliases below them in your aliases file. So, if you put in: dead-men: presidents, authors presidents: washington, lincoln, jefferson, roosevelt authors: thoreau, irving, london and type: ali dead-men then you would get the response: washington, lincoln, jefferson, roosevelt, thoreau, irving, london If you had the dead-men line after the presidents and authors aliases, the response would be: presidents, authors ------------------------------ Subject: 05.18 Why doesn't mhmail understand aliases? From: "John L. Romine" Date: 25 Apr 1996 16:34:10 GMT One way that mhmail might be run is from a shell script. This means that the user running it might not use MH, and would not have a .mh_profile, etc. If you want to use aliases with mhmail, expand them before passing them as arguments (e.g., "mhmail `ali joe`"). ------------------------------ Subject: 05.19 How do I send blind carbon copies? From: Bill Wohler Date: Mon, 9 Sep 1996 00:32:14 -0700 Use the Bcc header field: To: your-address-here Bcc: member1, member2, member3, ..., membern The recipients see this: To: your-address-here ------- Blind-Carbon-Copy Content of message, with headers If you don't want the "Blind-Carbon-Copy" message, use the Dcc field, but this is discouraged in true blind carbon copies since the warning may prevent the recipient from embarrassing someone inadvertently. Read the warning in (see "What is the Dcc header?"). ------------------------------ Subject: 05.20 When I forward a message, can I use its Subject? From: Jerry Peek Date: Sun, 17 Nov 1996 20:16:31 -0800 Obtain forwedit. http://rand-mh.sourceforge.net/book/examples/mh/bin/forwedit ------------------------------ Subject: 05.21 Why is the timezone field in my 'Date:' field wrong? From: Alex Tomlinson Date: Wed, 11 Jun 1997 09:16:41 -0500 If the date field in your mail header looks like this: Date: Tue, 10 Jun 1997 15:59:03 +2228904 remove -lbsd from your MH configuration, add "curses -lcurses", and rebuild. ------------------------------ Subject: 05.22 Can I automate the comp -editor mhn process? From: Soren Dayton Date: Tue, 21 Jan 1997 17:23:32 GMT Add automhnproc: mhn to your MH profile. ------------------------------ Subject: 05.23 How can I remove those "=20" characters when forwarding? From: Dave Marquardt Date: 12 Oct 2000 10:27:38 -0500 Use `forw -mime'. ------------------------------ Subject: 05.24 Can I use mh-format substitution with forw? From: Dave Marquardt Date: Tue, 3 Aug 1999 13:28:30 -0500 (EST) The answer is no, and the real question is why not? ------------------------------ Subject: 05.25 How can I keep repl from breaking long lines? From: Jerry Peek Date: Fri, 14 May 1999 11:15:07 -0400 Try adding width=10000 (or so) to your replcomps. It should work unless you have messages with lines longer than that... ------------------------------ Subject: 05.26 How do I fix a bogus In-Reply-To or missing References field? From: Bill Wohler Date: Thu, 9 Mar 2006 21:42:21 -0800 In the past, the In-reply-to header field looked as it does in the new Comments field (see "How can I make sense of the replcomps file?"). However, the old format is no longer allowable under RFC 2822 which specifies that this field should only include the Message-ID. You can fix the replcomps and replgroupcomps files by upgrading to nmh 1.1 (be sure to update your personal copies if applicable) or simply by fixing the In-reply-to field in your own replcomps file using the example in the question referenced in this paragraph. In addition, older replcomps files lacked the References field which enables threading in capable UIs. You can get it in the same fashion as the In-reply-to field--by upgrading or copying. ------------------------------ Subject: 06.00 ***** Posting ***** From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 ------------------------------ Subject: 06.01 What to do with "Problems with edit - draft removed". From: John Romine Date: Mon, 1 May 1995 00:00:00 -0800 If your users are using an AT&T version of "vi", it's exiting with non-zero status (supposedly a count of the "errors" during the edit). Move "vi" to "broken_vi" and put it its place : #! /bin/sh /usr/ucb/broken_vi "$@" exit 0 Alternatively, compile MH with the ATTVIBUG option. Then complain to your vendor that "vi" is broken, and they shouldfix it. ------------------------------ Subject: 06.02 Can I run my message through a program (e.g., ispell) before sending? From: Jerry Peek Date: Fri, 1 Mar 1991 13:03:15 -0800 It's pretty simple. If your speller is called myspell, use: What now? edit myspell MH will actually execute: myspell /your-mail-draft-directory/draftfile and give the entire draft message to your speller. The header will probably be "misspelled," of course, though you might be able to tell the speller to ignore it--or you could hack up a little shell script to run the speller on just the message body, then tack the corrected body back onto the header before sending. You can automate this some more. For example, if you want your speller to run after your first edit with "prompter" and also after you leave the "vi" editor, add these lines to your MH profile: prompter-next: myspell vi-next: myspell Then, at the "What now?" prompt: What now? e your speller will run. For more info, see the mh-profile(5) man page or section 7.2.1 (6.2.1) of the MH book, or the URL: http://rand-mh.sourceforge.net/book/mh/chaedi.html#Edi ------------------------------ Subject: 06.03 What to do with "bad address 'xxx' - no at-sign after local-part". From: Owen Rees Date: Fri, 1 Jan 1993 00:00:00 -0800 You may find that post returns the following message: post: bad address 'Mr. Foo Bar ' - no at-sign after local-part (Bar), continuing... The unquoted dot causes "Mr. Foo" to be parsed as the local part of the address. Either remove the dot, or rewrite the address as follows: "Mr. Foo Bar" (Mr. Foo Bar) (Mr. Foo Bar) fb@somewhere.edu ------------------------------ Subject: 06.04 Fixing "post: problem initializing server; [BHST] no servers available" From: Peter Marvit , Eric Bracken Date: Tue, 1 Nov 1994 00:00:00 -0800 The error message itself is essentially correct. However, what this really means is: MH's post cannot connect to a running sendmail over an SMTP port (MH configured with SMTP and SENDMTS). The potential problems: 1. Your local sendmail daemon is dying or not running for some reason. 2. You use BIND and your local nameserver is not responding. Solution: Delete "/etc/resolv.conf." 3. Your $MHLIB/mts.conf (mtstailor) has its "servers:" pointing to a non-existent machine or a machine which is a) not reachable or b) not running the sendmail daemon. From: Bdale Garbee , Eric Bracken Date: Sun, 1 May 1994 00:00:00 -0800 4. The hostname localhost [127.0.0.1] is missing from /etc/hosts. Solution: add an entry for "localhost" to /etc/hosts or your DNS database or add the following to $MHLIB/mts.conf (mtstailor): servers: 127.0.0.1 \01localnet From: Larry Daffner Date: 3 Mar 1996 14:39:54 -0600 5. Your load average is so high that sendmail is refusing connections. Solution: Change your configuration from "mta: sendmail/smtp" to "mta: sendmail" so that a sendmail processes is spawned to deliver the message. This is a double-edged sword since the extra process only makes the load worse. From: Corbin Covault Date: Sun, 02 Sep 2001 02:13:42 -0400 6. Sendmail may not be located on the path that MH expects. Solution: Try specifying the path explicitly by adding a line to mts.conf thus: sendmail: /usr/sbin/sendmail or wherever your sendmail daemon executable lives. From: Neil W Rickert Date: 13 Apr 2001 18:47:43 -0500 7. You don't want to use an available server. Solution: Try postproc: /usr/local/lib/mh/spost in your MH profile (but check the path first). That should use command line sendmail. ------------------------------ Subject: 06.05 Fixing "post: problem initializing server; [RPLY] 503 Sender already specified" From: Paul Pomes Date: Mon, 1 Mar 1993 00:00:00 -0800 The problem in sendmail is that the RSET after the ONEX does not reset all the state information. Normally sendmail fork()s after the Mail from: statement and a RSET causes that child to exit. This automatically cleans up. If the fork() is suppressed by ONEX, then the source must be modified to do the cleanup. See "srvrsmtp.c patch" in the Appendix. If you don't have the sources, modify your MH sources to not use the ONEX verb. ------------------------------ Subject: 06.06 Fixing "post: unexpected response; [BHST] no socket opened" From: Steve Lembark , Bill Wohler Date: Mon, 1 Aug 1994 00:00:00 -0800 This problem happens when there is no interface defined within the tcp system. A couple of workarounds include: o Use a hostname (other than the local host) instead of localhost in the "servers" entry of the $MHLIB/mts.conf (mtstailor) file. o Recompile MH with sendmail instead of sendmail/smtp (not very elegant). A better fix would be to define your tcp interface. Here, you run ifconfig and route (as root) to define the loopback device and route. You should add them to rc.local so they are effected at every boot. # ifconfig lo 127.0.0.1 # Linux # ifconfig lo0 127.0.0.1 # Sun # route 127.0.0.1 If all is well, "ifconfig lo" (or lo0), will show something like this (on my Linux system): lo Link encap Local Loopback inet addr 127.0.0.1 Bcast 127.255.255.255 Mask 255.0.0.0 UP LOOPBACK RUNNING MTU 2000 Metric 0 RX packets 0 errors 0 dropped 0 overrun 0 TX packets 519 errors 0 dropped 0 overrun 0 and "netstat -r" will show: # netstat -r Destination net/address Gateway address Flags RefCnt Use Iface 127.0.0.0 * UN 0 519 lo If you're not on a network and running DNS, your /etc/hosts will need at least: 127.0.0.1 your_host_name localhost # loopback address Note: put your name FIRST on the localhost line. This official name is used by sendmail to determine your return address. If you are on a network and running DNS, you might find that putting your host name in the localhost entry might gum up other things, in which case you'll want your hostname to have its own proper address. This might not do it though. David Youatt says that his network was happy but he still had the problem until he upgraded his system and got the latest revision of sendmail as well. He says: "Turns out that that the problem I was having seems to be caused (at least partly, maybe entirely) by the version of sendmail that is shipped with IRIX 5.2 (sendmail 5.65, I think). The version shipped w/IRIX 5.3 (in beta) is sendmail 8.6.9 and works fine." I'm not entirely happy with this section, so please give me some feedback. If you have this problem, please send me a brief description so I'll know which problems and solutions seem to be the most prevalent. ------------------------------ Subject: 06.07 How do I fix the "X-Authentication-Warning" header? From: Bill Wohler Date: Mon, 9 Sep 1996 01:32:15 -0700 (See "Fixing "Sender didn't use the HELO protocol"".) ------------------------------ Subject: 06.08 Fixing "post: unexpected response; [RPLY] 503 Need MAIL before RCPT" From: Bjoern Stabell Date: Mon, 1 May 1995 00:00:00 -0800 I inserted: clientname: localhost in the $MHLIB/mts.conf (mtstailor) file, and that fixed the problem. ------------------------------ Subject: 06.09 Fixing "post: problem initializing server; [BHST] premature end-of-file on socket" From: Ginko Date: Thu, 8 Mar 2001 09:18:14 +0000 (UTC) I have sendmail under control of tcpwrapper started by inetd and didn't want to take it away, the very simple fix to this problem was to allow the localhost on /etc/hosts.allow on the sendmail entry. From: Stefan Huebner Date: Wed, 11 Sep 1996 20:06:49 +0200 Use spost instead of post. To do this: % mv post post.orig % ln -s spost post From: Chuck Mattern Date: Mon, 1 May 1995 00:00:00 -0800 If you are running sendmail instead of smail, make sure that all smtp entries in /etc/inetd.conf are commented out. If you do edit /etc/inetd.conf, don't forget to run to restart inetd with "kill -1 ". ------------------------------ Subject: 06.10 Fixing "Sender didn't use the HELO protocol" From: rickert at cs.niu.edu (Neil Rickert) Date: Tue, 20 Mar 2001 22:01:16 -0800 If you are sharing your $MHLIB/mts.conf (mtstailor) file among several machines, and you are connecting to the local sendmail, then use 'localhost' as the hostname argument to the clientname parameter (described below). Otherwise, place mts.conf somewhere under /etc on each system, and install a symlink to it on the shared file system. From: labrown at dg-rtp.dg.com (Lance A. Brown) Date: 23 Apr 1996 14:43:04 -0400 You can solve this by putting localname: localhostname localdomain: local.domain.name in your $MHLIB/mts.conf (mtstailor) file. This will make MH send a HELO string in the SMTP transaction. From: Terry Manderson Date: Mon, 1 May 1995 00:00:00 -0800 Add clientname sender to $MHLIB/mts.conf (mtstailor) where sender is the name of the machine sending the message. The error message occurs because newer MTA's require SMTP's "HELO" command which MH omits in some configurations. When you add the above line, it forces MH to use the HELO command. From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 You get a header like: X-Authentication-Warning: screamer.rtp.ericsson.se: Host rcur7.rtp.ericsson.se didn't use HELO protocol Easy possibilities are: apply the patch to MH that comes with Sendmail 8.X.X and makes it use HELO, or comment out the line that says Opauthwarnings in your sendmail.cf. ------------------------------ Subject: 06.11 Fixing "post: problem initializing server; [RPLY] 553 Local configuration error, hostname not recognized as local" From: "Matthew V. J. Whalen" Date: Mon, 1 May 1995 00:00:00 -0800 Change your "mts" in "conf/MH" from "sendmail/smtp" to just "sendmail." From: Bill Wohler Date: Mon, 1 May 1995 00:00:00 -0800 The solution above will keep MH from using any SMTP server on your network. require sendmail to be installed on all machines. You could take advantage of the "sendmail/smtp" option to have MH talk to a non-local sendmail. In $MHLIB/mts.conf (mtstailor) add: servers It may also be caused by old versions of sendmail. ------------------------------ Subject: 07.00 ***** Mail Filters ***** From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 ------------------------------ Subject: 07.01 What mail filters are available? From: Bill Wohler Date: Sun, 11 Mar 2001 10:27:24 -0800 The list currently includes slocal (included with MH), deliver, procmail and mailagent. They are briefly described here. Slocal is probably the most popular by virtue of being included in the distribution. The next most popular entry is procmail, followed by deliver. Slocal comes with MH. It can be used to process incoming mail based on the contents of any of the headers. Actions include filing messages, running commands, printing messages on your terminal and so on. The configuration is made in ~/.maildelivery. People seem to have trouble with slocal bugs, and you can't use it if you don't have write permission on your system maildrop so a lot of people have opted for the alternatives, but it's easy to use and comes with MH. procmail is quite popular and has a very powerful configuration file. However, the syntax is its own, but it is easy to learn given a couple of good examples. Its advantages are its small size and speed. Like deliver, procmail may be installed as a delivery agent so you would not even have to have a .forward file. Deliver can run any script or program (called ~/.deliver), so you really can do anything you want to incoming mail. One feature that it sports that no other does is that you can install it as a local mailer in place of /bin/mail. If it's the local mailer, you don't need to have a .forward--~/.deliver is run anyway. In addition, it allows the system administrator to write some programs to filter everybody's mail. It came with my Linux system, so installation was non-existent. I started with slocal, and then moved to deliver. I switched to procmail because of a bug in deliver (which I think has since been fixed) whereby a blank line would be inserted into the header before header fields with numbers in them. I am still using procmail and probably will do so indefinitely since it is powerful, there are many spam filters written in it, and it coexists with MH and Gnus so well. My recommendation is to use the one that is installed on your system or get procmail. Here are the URLs for the filters mentioned in this document: http://www.procmail.org/ From: "Eric D. Friedman" Date: 28 Aug 1996 08:28:46 GMT See http://www.faqs.org/faqs/mail/filtering-faq/index.html. From: Stephen R. van den Berg Date: Mon, 1 Aug 1994 00:00:00 -0800 Procmail can be used to create mail-servers, mailing lists, sort your incoming mail into separate folders/files (real convenient when subscribing to one or more mailing lists or for prioritizing your mail), preprocess your mail, start any programs upon mail arrival (e.g. to generate different chimes on your workstation for different types of mail) or selectively forward certain incoming mail automatically to someone. From: Raphael Manfredi Date: Tue, 28 Jul 1998 13:22:07 +0200 "mailagent" is yet another mail filter, written in perl, which will let you do anything with your mail. It has all the features you may expect from a filter: mailing lists sorting, forwarding to MTA or to inews, pre-processing of message before saving into folder, vacation mode, etc. It was initially written as an Elm-filter replacement, but has now enough power to also supplant MMDF's .maildelivery. There is also a support for @SH mail hooks, which allows you to automatically distribute patches or software via command mails. The mailagent was designed to make mail filtering as easy as it can be. It is highly configurable and fairly complete. Rules are specified in a lex-like style, with the full power of perl's regular expressions. The automaton supports the notion of mode, and header selection has many magic features built-in, to ease the rule writing process. The distribution comes with a set of examples, an exhaustive test suite, and naturally a detailed manual page. It should be noted that the mailagent will work even if your system administrator forbids "| programs" hooks in the ~/.forward, provided you have access to some sort of cron daemon. http://www.cpan.org/authors/Raphael_Manfredi/ ------------------------------ Subject: 07.02 Why slocal writes messages to system mailbox that from(1) can't read. From: Bill Wohler Date: Mon, 1 May 1995 00:00:00 -0800 Upgrade to MH 6.8 and set the RPATHS option. Better yet, use a more MH-like command instead of from: "scan -file $MAIL". ------------------------------ Subject: 07.03 Where can I read about slocal and the format of .maildelivery? From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 See the slocal man page. Here is brief example of a .maildelivery file that stores messages to babble in a folder and the system mailbox, stores mh-users in a folder but not the system mailbox, and puts the rest in the system mailbox. to mh-users | A "$MHLIB/rcvstore -create +lists/mh-users" cc mh-users | A "$MHLIB/rcvstore -create +lists/mh-users" to babble | R "$MHLIB/rcvstore -create +lists/babble" cc babble | R "$MHLIB/rcvstore -create +lists/babble" default - > ? /usr/spool/mail/wohler Your .forward file may look like (quotes necessary): "| $MHLIB/slocal -user your_login" In some implementations, the "-user your_login" is not needed. If not, manually running slocal with the flag will produce an error. See also chapter 12 (11) in the MH book, or the URL: http://rand-mh.sourceforge.net/book/mh/tocs/prmaau.html Alternatives to slocal include deliver, procmail, and mailagent. (See "What mail filters are available?") ------------------------------ Subject: 07.04 How do I debug my .maildelivery file? From: Bill Wohler Date: Mon, 1 Mar 1993 00:00:00 -0800 Use as many of the following as necessary. Put a message into a file and call slocal directly on it. $MHLIB/slocal -user $USER -verbose -debug < test-msg Modify your .forward to look like: "|/bin/sh -c 'exec >> /tmp/out 2>&1; $MHLIB/slocal -user $USER -verbose -debug'" Or modify a rule in .maildelivery to look like this: to foo | R "set -xv; exec >/tmp/out 2>&1; $MHLIB/rcvstore +foo" The previous examples are broken up for readability; the text must appear on one line. See also MH book section 12.11 (11.11), or the URL: http://rand-mh.sourceforge.net/book/mh/debugti.html ------------------------------ Subject: 07.05 Why isn't slocal working? From: Bill Wohler Date: Mon, 1 Mar 1993 00:00:00 -0800 If slocal doesn't appear to be doing anything, run the following $MHLIB/slocal -user your_login -verbose < file where "file" is some message in a mail folder. If you get something like: .maildelivery: ownership/modes bad (0, 154,154,0100666) your .maildelivery is writable by too many people. Make it writable only by you by running "chmod 644 .maildelivery". See also "How do I debug my .maildelivery file?" ------------------------------ Subject: 07.06 Are there any good biff applications for MH? From: Rob Austein Date: Tue, 01 Dec 1998 03:02:34 -0500 I've been been using a program called xlbiff (X Literate Biff) and have been quite happy with it. By default, xlbiff generates its pop-up listings by running scan on your mail drop file, but it's not a big deal to customize xlbiff for more complicated setups if you make heavy use of procmail, multiple mail drops, and so on. From: Richard Coleman Date: 07 Jul 1997 03:31:42 -0400 nmh (new MH) has an additional command (flist) that will tell you which folders have unseen messages. I can't imagine using MH without it. From: crow at tivoli.com (David L. Crow) Date: 7 Jul 97 09:36:32 GMT I have used the following X resource with xbiff before: xbiff*checkCommand: grep -q '^unread' `mhpath +inbox`/.mh_sequences \ && exit 0 || exit 2 This should be all one line, but I split it with a line continuation character for readability. ------------------------------ Subject: 07.07 How do I read new messages filed by procmail? From: Bill Wohler Date: Sun, 17 Oct 2004 15:17:14 -0700 If you use MH-E, use "F n (mh-index-new-messages)" to display unseen messages. From: Neil W Rickert Date: 23 Apr 2002 20:38:57 GMT Here is my "unseen" shell script: #! /bin/sh - case "$1" in "") grep unseen $HOME/Mail/context $HOME/Mail/*/.mh_sequences | sed -e '/\/fromme\//d' \ -e "s=$HOME/Mail/==" \ -e 's=/.mh_sequences:unseen==' ;; "+") shift mark -sequence unseen -add "$@" ;; "-") shift mark -sequence unseen -delete "$@" ;; *) echo "Invalid arguments $*" ;; esac From: Paul Fox Date: Tue, 23 Apr 2002 20:13:42 GMT I have procmail deliver to a set of mbox files and use "inc -f foo" to inc from them. The names of the mbox files are the same as the MH folders which makes it easy to write a script that does something like this: cd Mailboxes for x in *; do inc -f $x +$x done ------------------------------ Subject: 08.00 ***** MH-E ***** From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 ------------------------------ Subject: 08.01 I have a question about MH-E From: Bill Wohler Date: Sat, 3 Mar 2001 13:51:29 -0800 Let me send you over to: http://mh-e.sourceforge.net/ This is the SourceForge MH-E project. It has mailing lists and files to download, and will let you submit patches or support requests. The Support Requests section may already contain an answer to your question. If not, you can post your question: http://sourceforge.net/tracker/?group_id=13357&atid=213357 ------------------------------ Subject: 09.00 ***** Xmh ***** From: Bill Wohler Date: Fri, 1 Mar 1991 13:03:15 -0800 ------------------------------ Subject: 09.01 How can I get xmh to use Emacs as the editor? From: Bob Ellison Date: Fri, 1 Mar 1991 13:03:15 -0800 The modifications to xmh to support an external editor, annotations, and an append command can be found in the these places. ftp://ftp.x.org/R5contrib/xmh-mods-R5-1.7.Z 37k ftp://ftp.sei.cmu.edu/pub/xmh/xmh-mods-R5-1.7.Z 37k ftp://ftp.sei.cmu.edu/pub/xmh/xmh-mods-R6-1.0.Z 37k From: Andrew Wason Date: Fri, 1 Mar 1991 13:03:15 -0800 As of R5, xmh has a new action proc called XmhShellCommand. A string parameter will be executed as a shell command with the currently selected messages as parameters (or the current message if there are no selected messages). Using this new action, a couple of shell scripts, a window version of emacs (e.g. xemacs) and some elisp code, xmh can use emacs as its editor instead of the built in Athena text widget editor. This doesn't require any source code changes to xmh. These are included in the Appendix "Switching xmh's editor". ------------------------------ Subject: 09.02 Does xmh support subfolders? From: Steve Malowany Date: Fri, 1 Mar 1991 13:03:15 -0800 Yes. Create one by invoking "Create Folder" as usual, and enter something like: existing-folder/new-sub-folder. You can then access the subfolder by popping up a menu over the "existing-folder" button item. But: From: John Cooper Date: Fri, 1 Mar 1991 13:03:15 -0800 The R5 version of xmh does *not* handle nested sub-folders. If you create a folder as 'grab/some/bandwidth', xmh displays this folder name for the remainder of the session where it was created, BUT if you later re-run xmh, the folder is no longer visible to xmh. See also MH book section 15.6.2 (15.6.2), or the URL: http://rand-mh.sourceforge.net/book/xmh/orgfol.html#FolaSub ------------------------------ Subject: 09.03 How do I precede included messages with ">" when replying in xmh? From: Len Makin Date: Fri, 1 Mar 1991 13:03:15 -0800 Include the following line in your ~/app-defaults/XMh file: Xmh*replyInsertFilter: "sed 's/^/> /'" or, Xmh.ReplyInsertFilter: $MHLIB/mhl -form repl.filter From: Andy Linton Date: Fri, 1 Mar 1991 13:03:15 -0800 Using this means that you can chose to insert the original by use of the "Insert" button in the Draft message pane. See "How do I include messages in repl with or without ">"?" to find examples of repl.filter. See also MH book sections 15.1.4 (15.1.4), 16.3.3 (16.3.3), or the URLs: http://rand-mh.sourceforge.net/book/xmh/senmai.html#MorRep http://rand-mh.sourceforge.net/book/xmh/resfun.html#Rep ------------------------------ Subject: Glossary From: Bill Wohler Date: Wed, 29 Sep 2004 00:04:34 -0700 MH Mail Handler MHLIB Where MH support routines and files are kept; usually /usr/lib/mh or /usr/local/lib/mh. POP3 Post Office Protocol, RFC 1939 MMDF Multi-channel Memo Distribution Facility MIME Multipurpose Internet Mail Extensions, RFC 1521 IMAP Internet Message Access Protocol, RFC 1064, 1176 TIS Trusted Information Systems PEM Privacy Enhanced Mail PGP Pretty Good Privacy SMTP Simple Mail Transport Protocol (STD 10; RFC 821) ------------------------------ Subject: Acknowledgments From: Bill Wohler Date: Mon, 9 Sep 1996 01:37:27 -0700 I'd like to thank the following people for providing ideas on the layout of this article: Joe Wells Richard M. Stallman David Elliott Tom Christiansen Eugene N. Miya We are also grateful to Kim F. Storm and Edward Vielmetti and the folks mentioned in the text of this document who have provided answers or other information to make this a better document. I regret that it is possible that some names have been accidentally omitted. I would also like to thank all the readers of comp.mail.mh. I'd also like to thank John Romine for maintaining MH and the MH Web page, Jerry Peek for writing the MH bible and for all his hard work with the entire MH project, Stephen Gildea for maintaining MH-E in years past and always sending me lots of great comments, Kimmo Suominen for maintaining the MH patch page, and Richard Coleman for taking MH to nmh. ------------------------------ Subject: Switching xmh's editor From: Andrew Wason Date: Fri, 1 Mar 1991 13:03:15 -0800 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'README' <<'END_OF_FILE' XThis is a short description of what to do with each of the enclosed files. X XXmh.ad X Merge this in with your xmh resources. If you already have X user defined buttons, then you may need to renumber the X buttons in this resource file. X Xxmh-command.el X Byte compile this file and put it in your GNU emacs load-path. X Xxmhcommand Xxmhemacs X Put these somewhere in your path. X X XOnce you have installed these, restart the R5 xmh with the new Xresources. When you press the repl, forw or comp buttons Xan xemacs window will come up with your draft message. X XOnce you have written your mail, save it and exit GNU emacs (C-xC-c). XYou will be prompted if you want to send the current message. XIf you enter 'y', the message will be sent and the output will Xbe displayed in an emacs window (in case you use -verbose or -snoop). XThen you will be prompted to exit emacs. Enter 'y' when you are ready. X XIf you answered 'n' when prompted to send the message, Xthen the draft message will be deleted and emacs will exit. X XYou can modify the Xmh.ad resources to add more buttons. XAny MH command which accepts "+folder msg" can be used X(e.g. a replx shell script which includes the body of the Xmessage being replied to can be bound to a replx button) X X XAndrew Wason Xaw at bae.bellcore.com END_OF_FILE if test 1269 -ne `wc -c <'README'`; then echo shar: \"'README'\" unpacked with wrong size! fi # end of 'README' fi if test -f 'Xmh.ad' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Xmh.ad'\" else echo shar: Extracting \"'Xmh.ad'\" \(457 characters\) sed "s/^X//" >'Xmh.ad' <<'END_OF_FILE' XXmh*CommandButtonCount: 3 X XXmh*commandBox.button1.label: repl XXmh*commandBox.button1.translations:\ X #override\n\ X : XmhShellCommand(xmhcommand y repl) unset() X XXmh*commandBox.button2.label: forw XXmh*commandBox.button2.translations:\ X #override\n\ X : XmhShellCommand(xmhcommand y forw) unset() X XXmh*commandBox.button3.label: comp XXmh*commandBox.button3.translations:\ X #override\n\ X : XmhShellCommand(xmhcommand n comp) unset() END_OF_FILE if test 457 -ne `wc -c <'Xmh.ad'`; then echo shar: \"'Xmh.ad'\" unpacked with wrong size! fi # end of 'Xmh.ad' fi if test -f 'xmh-command.el' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xmh-command.el'\" else echo shar: Extracting \"'xmh-command.el'\" \(1294 characters\) sed "s/^X//" >'xmh-command.el' <<'END_OF_FILE' X;;; These functions are for use with xemacs and xmh. X;;; The R5 xmh has a new action - XmhShellCommand which executes X;;; a shell command with the current msg as an arg. X;;; By executing something like: X;;; XmhShellCommand(xmhcommand repl) X;;; you can use xemacs as your editor with xmh. X;;; X;;; The following elisp functions perform the basic whatnowproc functionality X;;; (quitting and deleting, sending) X;;; X;;; Andrew Wason aw at bae.bellcore.com X X X;;; Override C-xC-c X(define-key indented-text-mode-map "\C-x\C-c" 'xmh-command-send-or-delete) X X X(setq mhdraft (getenv "mhdraft")) ; save the filename of the draft X X X(find-file mhdraft) ; load the draft letter X(indented-text-mode) X(setq draft-buffer (current-buffer)) ; save the buffer the draft is in X X X(defun xmh-command-send-or-delete () X "Prompt to send or delete letter, then quit." X (interactive) X (set-buffer draft-buffer) X (if (y-or-n-p "Send message? ") X (progn X (save-buffer) ; save the draft buffer X (message "Sending...") X (pop-to-buffer "MH mail delivery"); pop to a buffer for "send" output X (erase-buffer) X (call-process "send" nil t t mhdraft) ; call MH "send" X (if (y-or-n-p "Exit? ") X (kill-emacs))) ; exit emacs X (delete-file mhdraft) ; delete the draft letter X (kill-emacs))) ; exit emacs END_OF_FILE if test 1294 -ne `wc -c <'xmh-command.el'`; then echo shar: \"'xmh-command.el'\" unpacked with wrong size! fi # end of 'xmh-command.el' fi if test -f 'xmhcommand' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xmhcommand'\" else echo shar: Extracting \"'xmhcommand'\" \(669 characters\) sed "s/^X//" >'xmhcommand' <<'END_OF_FILE' X#!/bin/sh X# This shell should be invoked by the xmh XmhShellCommand() action as X# XmhShellCommand(xmhcommand y repl) X# XmhShellCommand(xmhcommand n comp) etc. X# If the second arg is y, then the message list will be used. X X# We invoke the passed MH command on the identified message X# (we must strip the message number and folder from the pathname) X(if [ $1 = "y" ] Xthen X $2 -whatnowproc xmhemacs +`dirname \`echo $3 | \ X sed "s;\\\`mhpath +\\\`/;;"\`` `basename $3` X X# You can use this more readable version instead if you have ksh X# $2 -whatnowproc xmhemacs +$(dirname $(echo $3 | \ X# sed "s;$(mhpath +)/;;")) $(basename $3) X Xelse X $2 -whatnowproc xmhemacs Xfi)& END_OF_FILE if test 669 -ne `wc -c <'xmhcommand'`; then echo shar: \"'xmhcommand'\" unpacked with wrong size! fi chmod +x 'xmhcommand' # end of 'xmhcommand' fi if test -f 'xmhemacs' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xmhemacs'\" else echo shar: Extracting \"'xmhemacs'\" \(116 characters\) sed "s/^X//" >'xmhemacs' <<'END_OF_FILE' X#!/bin/sh X# Invoke xemacs and load the xmh-command.el stuff. X# xmhemacs is used by xmhcommand Xxemacs -l xmh-command END_OF_FILE if test 116 -ne `wc -c <'xmhemacs'`; then echo shar: \"'xmhemacs'\" unpacked with wrong size! fi chmod +x 'xmhemacs' # end of 'xmhemacs' fi echo shar: End of shell archive. exit 0 ------------------------------ Subject: babyl2mh.pl From: Vivek Khera Date: Fri, 1 Mar 1991 13:03:15 -0800 #!/usr/gnu/bin/perl # incorporate an RMAIL babyl file into an MH folder # # usage: babyl2mh +folder babyl-file # # V. Khera 17-JUL-1991 # where to find rcvstore $rcvstore = "/usr/local/lib/mh/rcvstore"; # # pull out command line args # die "usage: babyl2mh +folder babyl-file\n" unless @ARGV == 2; $folder = shift; # make sure folder name starts with a "+" (substr($folder,0,1) eq "+") || (substr($folder,0,0) = "+"); $bfname = shift; print "Incorporating RMAIL file $bfname into MH folder $folder\n"; # # read in babyl file. # $/ = "\037"; # this separates the records in a babyl file $* = 1; # records are multi-lines open(BABYL,$bfname) || die "Couldn't open $bfname\n"; $_ = ; # discard header. $msgnum = 0; while () { chop; # get rid of delimeter s/\f(.|\n)*\*\*\* EOOH \*\*\*\n//; # remove duplicate header information open(RCVSTORE,"|" . $rcvstore . " $folder"); print RCVSTORE $_; $msgnum++; print "Message $msgnum done.\n"; } ------------------------------ Subject: inco - babyl to MH converter From: Juergen Nickelsen Date: Fri, 1 Mar 1991 13:03:15 -0800 #!/bin/sh # Usage: inco [from [folder]] # "from" defaults to $HOME/Mail/outbound, "folder" to +inbox. lispfile=/tmp/inco.$$.el input=${1-$HOME/Mail/outbound} tmpmbox=/tmp/inc.$$.mbox folder=${2-+inbox} if [ $# -ge 3 ]; then echo Usage: `basename $0` [ from [ folder ]] exit 2 fi trap "rm -f $lispfile $tmpmbox ; exit 1" 1 2 15 touch $tmpmbox chmod 600 $tmpmbox echo '(rmail-input "'$input'") (rmail-last-message) (setq last (rmail-what-message)) (rmail-show-message 1) (while (not (equal (rmail-what-message) last)) (rmail-output "'$tmpmbox'") (rmail-delete-forward nil)) (rmail-output "'$tmpmbox'") (kill-buffer (current-buffer)) ' > $lispfile emacs -batch -l $lispfile inc -file $tmpmbox $folder > $input rm -f $lispfile $tmpmbox ------------------------------ Subject: t2h - add hyperlinks to message viewed From: TANAKA Tomoyuki Date: Mon, 13 Sep 1999 11:35:43 -0600 #! /bin/sed -f # "t2h" by TT news:alt.tanaka-tomoyuki http://listen.to/TT # USE: t2h file.html # Or: show | t2h | lynx - s/&/\&/g s//\>/g s/http:[^ "&) ]*/&<\/a>/g s/news:[^ "&) ]*/&<\/a>/g s/ftp:[^ "&) ]*/&<\/a>/g s/telnet:[^ "&) ]*/&<\/a>/g 1i\

$a\
------------------------------ Subject: srvrsmtp.c patch From: Paul Pomes Date: Fri, 1 Mar 1991 13:03:15 -0800 >From the 5.67 sources: *** srvrsmtp.c- Mon Feb 22 12:25:54 1993 --- srvrsmtp.c Mon Feb 22 12:29:09 1993 *************** *** 384,389 **** --- 384,395 ---- message("250", "Reset state"); if (InChild) finis(); + + /* clean up a bit if running in parent */ + hasmail = FALSE; + dropenvelope(CurEnv); + CurEnv = newenvelope(CurEnv); + CurEnv->e_flags = BlankEnvelope.e_flags; break; case CMDVRFY: /* vrfy -- verify address */ ------------------------------ Subject: IRIX config file From: Jack Repenning Date: 25 Jul 1995 02:35:41 GMT # Irix 5.3 (based on examples/sys5r4) bboards on bin /usr/local/bin/mh cc cc ccoptions -g chown /bin/chown curses -lcurses etc /usr/local/lib/mh ldoptions -L/usr/local/lib/mh mail /usr/mail mailgroup: mail manuals local mts sendmail/smtp pop on popdir /usr/local/bin ranlib off #sharedlib sys5 #slibdir /usr/local/lib/mh signal void sprintf int options BIND options DBMPWD options DUMB options FOLDPROT='"0700"' options MHE options MHRC options MIME options MORE='"/usr/bsd/more"' options MSGPROT='"0600"' options RENAME options RPATHS options SBACKUP='"\\#"' #options SENDMTS options SGI #options SMTP options SOCKETS options SVR4 options SYS5 options SYS5DIR options UNISTD options _XOPEN_SOURCE options VSPRINTF From: David Paschich Date: 23 Apr 96 21:27:12 GMT # @(#)$Id$ # a 4.2BSD VAX system running SendMail bin /usr/local/bin/mh bboards off etc /usr/local/lib/mh mail /var/mail manuals local mandir /usr/local/man chown /sbin/chown ranlib off mts sendmail signal void options BIND LOCKF FOLDPROT='"0700"' MHE MHRC MORE='"/usr/bsd/more"' options MSGPROT='"0600"' RPATHS SENDMTS SGI SMTP SOCKETS SYS5 options TYPESIG="void" ncr MIME VSPRINTF UNISTD SYSVR4 SYS5DIR ------------------------------ Subject: HP-UX 10.20 config file From: Marko Heikkinen Date: 06 Jan 1997 17:19:07 +0000 bin /opt/mail/bin bboards on etc /opt/mail/lib/mh editor prompter remove mv -f mail /var/mail mandir /opt/man manuals standard chown /bin/chown cc cc ccoptions +DA1.0 +DS1.0 curses -lcurses mts sendmail/smtp pop off slibdir: /opt/mail/lib options SYS5 options MHE options MIME options ATZ options BIND options MHE options MIME options ATZ options BIND options MHE options MHRC options MORE='"/opt/gnu/bin/less"' options MSGPROT='"0600"' options NDIR options NTOHLSWAP options POPUUMBOX options SOCKETS options SYS5 options TZNAME options TYPESIG=void options VSPRINTF options WHATNOW options _STRINGS signal void curses -lcurses -ltermlib sprintf int ------------------------------ Subject: Removing duplicate messages (Bourne) From: Jerry Peek Date: 20 Nov 1995 18:51:24 GMT Here's a simple-minded Bourne shell version. It uses "scan" to get the message number and message-id of each message. If a message has the same message-id as the previous message, the script adds its message number to the "remove" shell variable. #!/bin/sh lastmsgid=hahahaha remove= scan -width 300 -format '%(msg) %{message-id}' | while read msg msgid; do if [ "$msgid" = "$lastmsgid" ]; then remove="$remove $msg" else lastmsgid="$msgid" fi done rmm $remove That's pretty simple-minded. For example, if the $remove variable gets too big, your system may complain. And I'm sure there are some more-efficient ways to find the list of duplicate message-ids. But that's the idea. Subject: Removing duplicate messages (Perl) From: rtor at ansa.co.uk (Owen Rees) Date: 20 Nov 1995 12:39:47 GMT I wrote a perl script to do this some time ago. All the usual dire warnings about destructive technology apply - take a backup, do it on a copy, try it on a small test case first etc. Don't use this script unless you are prepared to accept the consequences. #!/usr/local/bin/perl $version = "rmmdup 1"; if (@ARGV == 0) { $folder = ""; } elsif (@ARGV == 1) { $folder = $ARGV[0]; unless ( $folder =~ /^\+.+$/ ) { die "usage $0 [+folder]\n"; }; } else { die "usage $0 [+folder]\n"; }; $rmmlist = ""; open (scan, "scan $folder -format '%(msg) %{message-id}'|"); while () { if ( ($msg,$msgid) = /^(\d+) (<.*>)$/) { if ($msgs{$msgid}) { print "$msg duplicates $msgs{$msgid}\n"; $rmmlist .= " $msg"; } else { $msgs{$msgid} = $msg; }; }; }; if ( $rmmlist ) { exec "rmm $folder $rmmlist"; }; exit; Subject: Removing duplicate messages (Perl) From: Bill Wohler Date: Sun, 17 Oct 2004 13:00:20 -0700 #!/usr/bin/perl -w # # Id: mhfinddup 6593 2004-09-02 16:34:24Z wohler =head1 NAME mhfinddup - find duplicate messages =head1 SYNOPSIS mhfinddup [options] [folder ...] =head1 DESCRIPTION B finds and removes duplicate MH messages in the folders listed on the command line (default: current folder). By default, you deal with duplicate messages interactively. You can either remove the duplicate, not remove the duplicate, or view the original and duplicate message before deciding. If you use the B<-msgid> option to B, then you probably don't want to list any F<+outbox> folders if you are using the B<--no-same-folder> option and you want to preserve your sent messages as well as your messages to mailing lists. Note that if you specify one or more folders, or if you use the B<--all> option, B recursively descends the given folders. =head1 CONTEXT Context is per B(1). That is, if F<+folder> is given, it will become the current folder. If multiple folders are given, the last one specified will become the current folder. =head1 OPTIONS =over 4 =item --all Look for duplicates in all folders. If any folders are specified, this option is ignored. =item --debug Turn on debugging messages. =item --help Display the usage of this command. =item --list List duplicated messages. =item --no-same-folder Since it is common to use C to file a message in multiple folders, this script doesn't consider messages in different folders to be duplicates. Specify this option to list or remove duplicates across folders. =item --rmm Remove messages non-interactively. Use with care! For safety, the B<--list> option takes precedence if specified and is a good option to use before using B<--rmm>. =item --version Display program version. =back =head1 RETURN VALUE Returns 0 if all is well; non-zero otherwise. =head1 EXAMPLES =over 0 =item mhfinddup Interactively remove duplicates from the current folder. =item mhfinddup --all --list --no-same-folder List all duplicates regardless if they are in different folders or not. =item mhfinddup --rmm +lists Remove all duplicates in F<+lists>, recursively. =back =head1 SEE ALSO B(1), B(1), B(1) =head1 VERSION Revision: 6593 =head1 AUTHOR Bill Wohler Copyright (c) 2003 Newt Software. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, you can find it at http://www.gnu.org/copyleft/gpl.html or write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. =head1 METHODS =cut # Packages and pragmas. use Getopt::Long; use strict; # Constants. my $cmd; # name by which command called ($cmd = $0) =~ s|^\./||; # ...minus the leading ./ my $ver = '6593'; # program version with CVS noise # Variables (may be overridden by arguments). my $all = 0; # look in all folders my $debug = 0; # verbose mode my $help = 0; # display usage my $version = 0; # display version my $list = 0; # list duplicates my $no_same_folder = 0; # consider duplicates across folders my $rmm = 0; # remove duplicates without asking # Constants. my $mhl = "/usr/lib/mh/mhl"; my $tmp = "/tmp/mhfinddup$$"; # Parse command line. # The use of the posix_default option is to ensure that folders like +a are # not confused with --all. I'd really prefer to set prefix_pattern to "(--|-)" # so that abbreviations of options can be used without being confused with # folders, but I couldn't make it so. my %opts; Getopt::Long::Configure("pass_through", "posix_default"); GetOptions('all' => \$all, 'debug' => \$debug, 'help' => \$help, 'list' => \$list, 'no-same-folder' => \$no_same_folder, 'rmm' => \$rmm, 'version' => \$version, ) or usage(); show_version() if ($version); usage() if ($help || int(@ARGV) != int(map(/^\+/, @ARGV))); my @folders = expand_folders(@ARGV); print("Expanded " . join(" ", @ARGV) . " into\n" . join("\n", @folders) . "\n") if ($debug); print("Scanning for duplicate messages...\n"); my %msgs; foreach my $folder (sort @folders) { print("Scanning $folder...\n") if ($debug); open (SCAN, "MHCONTEXT=$tmp scan +$folder -format '%(msg) %{message-id}'|"); while () { if (my ($msg, $msgid) = /^(\d+) (<.*>)$/) { if ($msgs{$msgid}) { $msgs{$msgid} =~ m|^\+(.*)/(\d+)$|; my($f, $m) = ($1, $2); if ($folder eq $f || $no_same_folder) { handle_dup($f, $m, $folder, $msg); } } else { $msgs{$msgid} = "+$folder/$msg"; } } } close(SCAN); } unlink("$tmp"); sub expand_folders { my @folders = @_; print("Getting list of folders..."); open(FOLDERS, "flist -recurse " . (($all == 1 && @folders == 0) ? "-all" : join(" ", @folders)) . "|") or die("Could not determine folders\n"); @folders = (); chomp(my $current_folder = `mhparam Current-Folder`); $current_folder = quotemeta($current_folder); while () { chomp; my ($folder, $a, $b, $c, $d, $e, $f, $g, $count) = split; if ($folder =~ /^$current_folder\+$/) { $folder =~ s/\+$//; # remove current folder indication } next if ($count == 0); push(@folders, $folder); } close(FOLDERS); print("done\n"); return(@folders); } sub handle_dup { my($f1, $m1, $f2, $m2) = @_; my $ans; repeat: print("+$f2/$m2 duplicate of +$f1/$m1"); if ($list) { print("\n"); } else { if ($rmm) { $ans = "y"; print("\n"); } else { print(", remove? [Yns?] "); chomp($ans = ); } if ($ans eq "y" || $ans eq "") { system("rmm +$f2 $m2"); } elsif ($ans eq "s") { system("$mhl `mhpath +$f1 $m1` `mhpath +$f2 $m2`"); goto repeat; } elsif ($ans eq "?") { print("y, remove message (default)\n" . "n, don't remove message\n" . "s, show messages\n" . "?, show this message\n"); goto repeat; } } } =head2 usage Display usage information and exit. =cut sub usage { print <\n\n". "$cmd comes with ABSOLUTELY NO WARRANTY.\n\n". "This is free software, and you are welcome\n". "to redistribute it under certain conditions.\n\n". "See `http://www.gnu.org/copyleft/gpl.html' for details.\n"); exit(0); } Local Variables: mode: outline outline-regexp: "^Subject:" fill-prefix: " " End: