freebsdzine.org
Machines certainly can solve problems, store information, correlate, and play games -- but not with pleasure. -- Leo Rosten

[ Home  · Latest BSD News  · Site Statistics  · Wanted Articles  · Request an Article  · Submit an Article ]

Search freebsdzine.org

FreeBSD 'zine Polls

How much wood could a woodchuck chuck if a woodchuck could chuck wood?

a little
a lot
4
what?
isn`t that a beaver?
pi
eleventeen
moses

Results  · More polls


Sections
· Wanted articles
· Request an article
· Contribute
· Mailing lists
· About the site
· The staff
· Copyright info
· Privacy policy
· Change log
· Contact us

Resources
· The FreeBSD Project
· The FreeBSD Diary
· BSD Today
· Daemon News
· Daily Daemon News
· Slashdot BSD
· FreshPorts
· The FreeBSD Mall
· BSDVault
· The FreeBSD Browser
· GreasyDaemon.com
· iso-nix.com

FreeBSD Books
· Complete FreeBSD
· FreeBSD Handbook
· FreeBSD Corporate
Networker's Guide


Runs on FreeBSD
Using Mutt
Jim Mock <[email protected]>

Introduction

Email is probably one of the most important reasons to use a computer. Millions of people use and rely on email every day (I'm one of them, and chances are you are too). It allows us to keep in touch with friends and family, interact with co-workers and customers, and provides a quick method of communication without actually having to speak to someone, either on the phone or directly.

Reading and replying to email takes up a large part of my time, so having an MUA (mail user agent, a.k.a., mail client, a.k.a., mail reader) that is flexible and extremely configurable makes life easier. That's why I chose mutt. The rest of this article will cover a little about mutt itself, and the installation and some basic configuration of the "mongrel of mail user agents".

About Mutt

Mutt is a small, fast, text-based mail reader for UNIX systems. Although it was written from scratch, its interface was originally based heavily on ELM. Certain things, such as the default keybindings, are still reminiscent of ELM. As development of mutt continued, features from PINE and MUSH were added. The result was a "mutt", which is where the name comes from.

Some noteable features include:

  • Color support

  • Threading

  • POP3 and IMAP support

  • MIME support (including RFC2047)

  • PGP support

  • Searching via regex

  • DSN (Delivery Status Notification) support

  • Extensive foreign language support

There are, of course, many other features of mutt that are useful, although listing all of them here is somewhat impractical.

In my opinion, Michael Elkins, the original author of mutt hit the nail on the head with this quote from 1995:

"All mail clients suck. This one just sucks less."

Installation

If you have the ports collection installed, you can do the following:

# cd /usr/ports/mail/mutt
# make install distclean

You may want to look at /usr/ports/mail/mutt/Makefile before installing the port since there are various things you can define during building. I usually build mutt against S-Lang instead of ncurses (no real reason other than personal preference), so I'd need to define that on the command line like this:

# make -DWITH_SLANG install distclean

There are other knobs too, such as WITH_SSL that you may or may not find useful.

If you'd prefer to install the package, you can do that too:

# pkg_add -r mutt

Now that mutt is installed, let's look at the configuration.

Configuration

Mutt is configured via two configuration files. There is a default "system" Muttrc, which is installed in /usr/local/etc on FreeBSD systems, and a ~/.muttrc for custom user configurations. Keep in mind that the .muttrc file isn't installed and that you have to create it yourself.

There are tons of configuration variables that you can use to tweak just about every aspect of mutt. I'll go through some of the more useful ones here. See the link above to the mutt manual for a complete list.

The defaults are fine for most things. However, there are a few things that you'll want to check, such as your editor, mail folder, and spool file. I use vim as my editor, so I put the following line in my ~/.muttrc:

set editor="vim +8 -c 'set tw=72 ft=mail' -c 'syntax off'"

What this does is pretty simple. +8 tells vim to put the cursor on the 8th line (a line under the Subject: header). The -c 'set tw=72 ft=mail' line tells vim to set tab widths at 72 and tells vim the filetype is mail. The -c 'syntax off' turns off the color syntaxing (I don't like the syntaxing in mails).

By default, mutt uses ~/Mail as your mail folder. Before using mutt, I had been using PINE, and PINE uses ~/mail. I got used to that, and had mail already there which I wanted to keep, so I set the following in my ~/.muttrc:

set folder="~/mail"

You'll also want to set the spoolfile variable to the proper place. Mine is /var/spool/jim. Depending on your MTA, it might be something different (if you're using Maildir, etc.). The line in my ~/.muttrc looks like this:

set spoolfile="/var/mail/jim"

Another important feature for me is mutt's ability to sort by thread. This makes managing lots a email a breeze. To sort by threads, set the following variable:

set sort=threads

There are a ton of other configuration variables that you can change. You can configure everything from colors to threading to multiple email addresses and more. You can even configure the keybindings, which is useful if you're switching from another MUA, such as PINE. I use PINE-style keybindings since that's what I'm used to. Here's what my ~/.mutt.keybindings file looks like:

# emulate PINE's keybindings
macro index I "c!\n"
macro pager I "c!\n"
macro index i "g!\n"
bind index v display-message
bind index p previous-undeleted
bind index n next-undeleted
bind index ' ' next-page
bind index c mail
bind index g change-folder
bind index w search
bind index y print-message
bind index x sync-mailbox
bind index $ sort-mailbox
bind index a tag-prefix
bind index \; tag-entry
bind index r group-reply
bind index t reply
macro index z ltagged\r

bind pager p previous-undeleted
bind pager n next-undeleted
bind pager ' ' next-page
bind pager g change-folder
bind pager c mail
bind pager w search
bind pager y print-message
bind pager \n noop
bind pager <up> previous-line
bind pager <down> next-line
bind pager r group-reply
bind pager t reply

bind compose \cx send-message

This makes inputting in mutt behave like PINE. Ctrl-x sends mail, c starts a new message, and so on.

In order to use the above file, I include it from my ~/.muttrc by adding the following line at the top:

source ~/.mutt.keybindings

Another important and useful feature of mutt is that it has built-in support for pgp and gpg (gnupg). The first thing you'll obviously need to do is install one of the above. I use gpg, so I installed /usr/ports/security/gnupg:

# cd /usr/ports/security/gnupg && make install distclean

You'll have to generate a gpg key and send it to a keyserver for it to be useful. See the gpg man page and gnupg web site for more information on doing that as it is beyond the scope of this article.

The next step is to tell mutt that you want to use gpg. Luckily, mutt comes with a gpg.rc, which is installed by default in /usr/local/share/doc/mutt/samples/gpg.rc. I copied that to my home directory as ~/.mutt.gpgrc and then included it in my ~/.muttrc by adding the following to the top of the file:

source ~/.mutt.gpgrc

In order to sign or encrypt a message (or both), do the following:

  • Compose a message as normal.

  • When you exit the message composition screen and the next screen appears (you'll see the headers and a list of attachments), hit the "p" key. This will give you the option of signing, encrypting, doing both, or "forget it".

  • Choose the option you wish, enter your gpg passphrase, and then send the message.

For more information, see http://mutt.org/doc/PGP-Notes.txt.

These are just a few of the many options available when using mutt. If you're interested in others, I suggest taking a look at the mutt manual, /usr/local/etc/Muttrc (the system-wide muttrc), and the muttrc man page. You can also find my mutt configuration files on my web site. They will require some modification before you can use them. Use them at your own risk. Just because they work for me doesn't mean they'll work for you.

Conclusion

Mutt is a highly configurable mail user agent. You can customize nearly every aspect of it. You can find it in the ports collection in the /usr/ports/mail/mutt directory. I suggest giving it a try. Perhaps you'll agree with Michael Elkins' quote :-)

- jim

Return to Issue 1, May 2001



Issues
2001
· May #1
· April
· March
· February
· January

2000
· December
· August
· July
· June
· May
· April
· March
· February

1999
· January

Other issues from 1999 are available in the attic for now.

Other News
· Slashdot
· FreeBSD Diary
· BSD Today
· FreshPorts
· Daemon News
· OS Online
· Rootprompt
· Maximum BSD

Miscellaneous
· Jim's site

IRC
#freebsdzine
If you'd like to hang out with us and talk about the site, join us in #freebsdzine on Undernet.

Backend
You can add a list of our latest issue's articles to your site by using our RDF/RSS file. You can also add it to your My Netscape page, or add our slashbox once you log in over at Slashdot.

[ Home  · Latest BSD News  · Site Statistics  · Wanted Articles  · Request an Article  · Submit an Article ]

Copyright © 1998-2001 · The FreeBSD 'zine · All rights reserved.