QuickStart Guide to Mutt E-MailFabian Groffen
This guide shows you how to begin using the powerful command line e-mail
client mutt.
22011-08-17The Mutt e-mail client

If you're not a fan of e-mail clients with fancy graphical user interfaces, or
you just like to be able to quickly read some mail over an SSH connection, the
class of console-based mail clients might be for you.

Mutt is one of the current console-based mail clients that's still under active
development and has a vast crowd of active supporters (and users). It is
powerful, highly customisable, small and efficient.

While Mutt was originally designed to read mail from the local mbox mail spool
(e.g. /var/spool/mail/), nowadays it comes with full support for
Maildir stored folders, remote fetching from POP3 servers and complete
management of IMAP accounts. For a full description of what Mutt can do, please
read the Mutt manual and Mutt website at http://www.mutt.org/.

Acquiring Mutt

Starting your Mutt adventure simply requires you to emerge it.
Unfortunately, Mutt has a lots of options, which enable or disable certain
functionalities of Mutt. We now briefly discuss the most important USE-flags
that you may want to enable based on your intended usage of Mutt. Please note
that enabling most of them won't harm your Mutt, but may make it do more than an
experienced Mutt user would like.

First off, for newcomers, the imap USE-flag is most probably the most
important one. Enabling it won't hurt anything, so if you're unsure what
account you're going to use Mutt with, just enable it. Most email providers,
even free ones such as GMail, use IMAP these days, for it is the most convenient
way to store email that is accessed from multiple clients at the same time
and/or different locations. Because IMAP keeps all mail at the server, Mutt
just downloads the messages that you want to view.

Often you happen to jump through a couple of messages a couple of times shortly
after each other, which would require to download the same message over and
over again. Since this simply is a waste, Mutt uses a so-called header cache
(hcache) to keep the most important bits of messages that it needs. This
hcache is backed by a db-library, of which four flavours exist: gdbm,
berkdb, qdbm and tokyocabinet. If you don't have any
preference yourself, pick gdbm or berkdb. Most likely you will have both
already installed on your system. Enabling the USE-flags for more than one
hcache backend will make Mutt choose one it likes best. It will always use
at most one.

While IMAP is important for reading mail, sending mail requires a mail server.
Mutt can talk to a mail server that exists on the local system, but often that's
not the case, or simply not a good solution for e.g. laptop users that often
travel around. Mutt comes with SMTP support which gets enabled by the smtp
USE-flag. Again, enabling it if you're not sure doesn't harm. Mutt's SMTP
support allows you just to send mail over a mail server of your choice; usually
the one that you are given by your email provider.

Both IMAP and SMTP mostly go over encrypted channels these days, hence if you
enabled any of both, it is wise to also enable either of the ssl or
gnutls USE-flags. Both just add the secure variants (imaps and smtps) to
Mutt's list of supported protocols using either OpenSSL's or GNUTLS'
implementation. If you don't have a strong preference for either, just go for
ssl. Most likely this is in your global USE already anyway.

Last but not least, there is the sidebar USE-flag. It enables an
extension to Mutt that can show a navigation pane of available mailboxes on the
left hand side of the screen. While this is not a recommended feature for
absolute newcomers (it is nowhere mentioned in any official docs, since it
simply isn't official), more experienced users might like its functionality.
Luckily, just enabling the USE-flag doesn't make it visible at all, meaning you
don't even notice it's enabled.

Configuring Mutt

After you emerged mutt with your USE-flags of choice, the only necessary step is
to create a .muttrc file in your home directory. Muttrc's are to
be found in many places on the web and in Mutt's documentation. In
/usr/share/doc/mutt-<version>/samples you can find some
muttrc samples that are from the official distribution. We discuss a very
minimal .muttrc for an IMAP based account with SMTP mail delivery
below.

It is good practice to review all settings from the example above. There are
many more, and some preferences may actually not match yours. Keep that in mind
when you feel that Mutt at first doesn't really work the way you like.

The example .muttrc above sets up an IMAP account, uses an SMTP
server to send mail, stores its cache in /var/tmp/.mutt, reads the
known address aliases (think of it as an address book) from
~/.aliases and appends the signature from ~/.signature
when composing new mail. For some IMAP servers it may be necessary to change the
spool, record and postponed directories, as the folders Sent and
Drafts may be under a folder called INBOX. Simply
trying this out with Mutt is the simplest way to figure this out.

Once your .muttrc is setup, you are ready to launch Mutt by just
running mutt. If you entered a valid IMAP server url, Mutt will prompt
you for your password and afterwards load all messages for you. Note that the
first time entering your mailbox may take a while if you have quite some
messages, since Mutt's header cache is still empty. If this succeeds you're in
your IMAP mailbox ready to go.

Navigation is intuitive, as is reading messages by just pressing the enter key
or space bar. Mutt is quite Vim alike in that it uses key strokes to perform
most of its actions. You best read Mutt's manual on the web to get yourself
known with all existing functions (or press ? in Mutt) and what key they are
bound to, or better, what key you like it to be bound to. Some essential keys
are m (for message) to start composing a new message, q for quit,
r for reply, s for save and p for print.

One of the features that Mutt has that is still not in today's most savvy email
clients is the ability to display attachments inline through some viewer. The
auto_view directive in the .muttrc file tells Mutt which attachments (based on
their MIME-type) it should view inline. To figure out how to do that, Mutt uses
mailcap files to lookup how to display a certain MIME-type. Usually the system
wide mailcap file isn't sufficient here, so you better start a
~/.mailcap file to put items in there for copiousoutput that
Mutt can display inline.

In the example .muttrc above auto_view is enabled for
application/msword and application/pdf files. These two show
the extreme usefulness of this capability, because it means meeting notes sent
as doc file now are perfectly fine readable without having to save the
attachment and open it in OpenOffice. Instead the text just shows up in the
message reader, that is, if you have a matching entry in your
~/.mailcap file.

The above .mailcap example tells mutt what to do to "view"
msword and pdf files. For the former it should run a program
called antiword (emerge app-text/antiword), for the latter the
program pdftotext (emerge app-text/poppler). You can go wild with
these to for example display rendered HTML (give app-text/vilistextum a
try), render vcards, or show ASCII representation of attached images. All you
need to do is define how to call the program in your .mailcap, and
tell Mutt to try to view it inline using the auto_view directive.

Conclusions

Mutt is a very versatile console email client. If you like the concept, Mutt
can be altered to behave in nearly any way through its configuration. Search
the web to find others explaining how they did "it", or find one of the many
patches that exist to make Mutt do even more. Gentoo applies a couple of very
popular patches to Mutt, so make sure to check mutt -v if you want
something more to make sure it is not yet already at your disposal. While
learning Mutt is not necessarily easy, once it is in your fingers, it can make
your mail experience much faster and efficient than with other clients.
Searching for example is quite powerful if you know how to hit the right flags
and know which regular expression narrows your search down. Enjoy Mutting!