Mutt

This guide shows you how to begin using the powerful command line e-mail client mutt.

Introduction
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 customizable, small, and efficient.

While Mutt was originally designed to read mail from the local mbox mail spool (e.g. ), 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/.

Installation
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  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:,  ,  , and. 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  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  or   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. Most likely this is in your global USE already anyway. If you intend to authenticate yourself when sending e-mail, be sure to also include  in your USE flags, since that's a prerequisite for that.

Last but not least, there is the  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.

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

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

Once your is setup, you are ready to launch Mutt by just running. 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 (for message) to start composing a new message,  for quit,  for reply,  for save and  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 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 file to put items in there for   that Mutt can display inline.

In the example above   is enabled for   and   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 LibreOffice. Instead the text just shows up in the message reader, that is, if you have a matching entry in your file.

The above example tells mutt what to do to "view"   and   files. For the former it should run a program called  (emerge   ), for the latter the program. You can go wild with these to for example display rendered HTML (give 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, and tell Mutt to try to view it inline using the  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 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!