MUTT FREQUENTLY ASKED (AND ANSWERED) QUESTIONS

[version 1.0 patchlevel 18, the revision history is available, too.]

Original at: https://www.fefe.de/muttfaq/faq.html


TABLE OF CONTENTS

  1. About this FAQ...
  2. Why install Mutt?
  3. Download locations
  4. Mutt for the Impatient
  5. Mutt for the more patient
  6. Common Problems
  7. Other Questions

walking mutt


ABOUT THIS FAQ...

The latest version of this FAQ is available at http://www.fefe.de/muttfaq/faq.html. If you mirror this FAQ somewhere, please notify me at felix-muttfaq@fefe.de of the URL. Thanks.

What versions of Mutt does this FAQ cover?

This FAQ was started at 10-02-1996, when Mutt 0.45 was the current version. Hopefully it will always be updated to cover the latest version.

Who maintains this FAQ?

This FAQ was created by Felix von Leitner. Please DO NOT ASK ME MUTT QUESTIONS. I just maintain the FAQ. Questions regarding mutt will be silently dropped.

Where can I find out more about Mutt?

here are some links for your enjoyment:
  1. http://www.mutt.org/ - by Mutt author Michael Elkins
  2. http://www.fefe.de/muttfaq/ - my own Mutt pages.
  3. http://www.math.fu-berlin.de/~guckes/mutt/ - Sven Guckes' Mutt pages.
  4. http://mutt.frmug.org/ - Ollivier Robert's Mutt pages.

I have this question that is not answered in the FAQ...

Please note that I am no free 24h tech support hotline. I maintain this FAQ, but other people know much more about Mutt, and you can meet those people at the mailing lists. So please go there and ask them. You will of course be credited.

Hey, your answer to question XXX is wrong!
Your link to foobar.com does not work!
Your example XXX does not work!

Oops! Well, shit happens. Please notify me at felix-muttfaq@fefe.de so I can correct things.

Accessing your site is slooooow!

Well, depends on your ISP and location. I will put links to mirrors of this FAQ here once people notify me. If you want to mirror this FAQ, you might be interested in my web mirror script (be warned, however, that I haven't touched this since 1996, so it might not work with current versions of the perl modules I used). Feel free to mirror only faq.html.gz (the compressed version) and unpack it to faq.html afterwards. I use fnord to serve the right file to each browser.

I want to make copies of this FAQ. May I?

Feel free. By the way: This FAQ is protected by the GNU Free Documentation License (http://www.gnu.org/licenses/fdl.html).

running dog
MUTT FOR THE IMPATIENT

What is Mutt?

Mutt is a Mail User Agent (MUA) for Unix. It is a descendant of ELM, borrowing ideas from other MUAs, like PINE and Mush. Right now it's a text mode application, not an X program. But that might change one day.

Who wrote Mutt?

Michael Elkins is the author. Many people have contributed to Mutt, please read the ChangeLog in the Mutt distribution for details. Mutt is now maintained by the people on the mutt-dev@mutt.org mailing list, Michael has changed jobs and now has to use NT.

I'm ELM user. Is Mutt compatible with ELM?

Well, yes. Mostly. Mutt has many enhancements over ELM, so it is not 100% compatible. But the standard key mappings are a lot like the ELM ones. A lot Mutt users are ELM converts. See Sven's giant ELM vs. Mutt comparison!

I'm an average user. Why should I switch to Mutt?

The top two reasons to switch are color support and threading.

Mutt can display messages with colors, if your terminal/xterm supports it. The SGI console, the Solaris dtterm, the Linux color_xterm and the freely available rxvt are example of xterms with color support. The xterm that comes with XFree86 does, too. Ask your system administrator about colors if doesn't work out-of-the-box.

Mutt can thread mails. This is especially useful for folders with mailing lists. The output looks like this:

  11  D   Oct  1 Sven Guckes     (  17) Re: Colors, Toolbar, FreeBSD and Mutt
  12  D   Oct  1 Christoph P. Ku (  31) +->
  13  D   Oct  1 Ollivier Robert (  14)   |->
  14      Oct  1 Brandon Long    ( 162)   +->
  15  D   Oct  1 Sven Guckes     (   8) sending from editor
  16  D   Oct  1 Michael Elkins  (  11) +->
Mutt features xterm mouse support but it was removed around 0.65 because it is an ncurses feature and most people compile Mutt with S-Lang.

I'm an experienced user. Why should I switch to Mutt?

Besides color and threading, Mutt allows arbitrary key remapping and has tons of options. You can customize almost everything. Mutt is 8-bit clean, uses Locales, and has a wonderful MIME implementation. Well, I'm a little biased, so don't trust me and try for yourself. Mutt boasts PGP/MIME support as well! Mutt can open a web browser for you with an URL from the mail body (the functionality has been moved to the external program urlview which is available at the same place where you got Mutt itself).

I'm the admin. Why should I install Mutt?

Because you'll love it!
Admins often have to handle large mail volumes and don't have much time. Mutt is small, so it won't take long to start up. Mutt comes with a GNU autoconf "configure" script, so it's easy to install. Your users will love Mutt.

If you mount your mail spool directory via NFS, you will be delighted to hear that Mutt actually does locking the right way!

Is Mutt free?

Yes. Mutt is copyrighted by Michael Elkins and covered by the GNU General Public License.

Where can I download Mutt?

  1. ftp://ftp.mutt.org/mutt
  2. ftp://ftp.fu-berlin.de/unix/mail/mutt

How can I report bugs?

Wait! Before you report bugs, please have a look at Sven's bug reporting page. Maybe your bug has already been fixed? Check the mailing list archives, too.

Mutt dumps core when I press Ctrl-Compose-Shift-F12

So don't do it! ;-)

Seriously, if Mutt dumps core on you, please submit the problem to the mutt-users mailing list <mutt-users@mutt.org> or to the mutt-dev mailing list. Please check that you are able to reproduce the problem. Then write down the steps that are necessary to recreate the problem, the Mutt version number, and the operating system you are using (use "uname -a" to find out).

If you really want to help us fix the bug, you can give us a stack dump. Mutt compiles with "-g" to enable debugging information by default. So if it dumps core, please follow these steps:


  $ gdb /usr/local/bin/mutt core
  GDB is free software and you are welcome to distribute copies of it
   under certain conditions; type "show copying" to see the conditions.
  There is absolutely no warranty for GDB; type "show warranty" for details.
  GDB 4.16 (i586-unknown-linux), Copyright 1996 Free Software Foundation, Inc...
  [some other stuff]
  (gdb) bt
  [some dump]
  (gdb) q
  $
Now please send us the dump! If you are a programmer, and you think you can fix the bug yourself, a diff will be greatly appreciated.

Someone posted a patch for Mutt. How do I apply it?

Change into the directory with Mutt. Then pipe the patch (or the mail with the patch, patch is quite clever in this respect) through patch -s -p1. The "-s" disables unwanted (by me, at least) verbosity. The "-p1" removes the first directory from the file names.

OK, I fixed this bug, how do I make a diff?

That's quite easy. First, get yourself GNU diff. The other diffs will work, too, but this tutorial only applies to GNU diff. We want unified diffs.
  1. Rename the directory with your new, patched Mutt to, say, mutt-patched
  2. Unpack the original distribution
  3. Now type "diff -uNr mutt-0.46 mutt-patched > diff"
    This is for GNU diff. You vendor's diff may not know the -u option, in which case you should try -c instead.
The "-u" creates a unified diff, which has 3 lines of context per default. This has the advantage that patches can be applied to other versions of Mutt, too.
The "-N" treats new files as empty. That means if you add a file, diff will put it in the diff, too. This has the advantage that your file is not lost. It has the disadvantage that "configure", "Makefile", "config.h" and so on are put into the diff, too. So for patches where you don't add new files, you can omit the "-N".
The "-r" means recursive. For Mutt this is only important if you change the documentation. But it's good habit to use it.

I have a question not answered here!

Please subscribe to the Mutt mailing lists. There are three mailing lists: Subscribe by sending an email to mutt-announce-request@mutt.org (or mutt-users-request or mutt-dev-request, respectively) with the word "subscribe" in the body of the mail (the subject will be ignored).

Suggestions regarding the FAQ can of course be directed to me at felix-muttfaq@fefe.de (My name's Fefe or Felix von Leitner), but please do not ask me general questions about Mutt. Instead, subscribe to the Mutt users mailing list and ask the questions there. Probably you will get your answer much quicker there.
Since I have been specifically asked a few times: Yes, there is a Usenet newsgroup about Mutt, and it's called comp.mail.mutt.


MUTT FOR THE MORE PATIENT

Can you give me some sample .muttrc's?

Of course. You can have mine, or you can have Sven's. Karsten Rohrbach put his online, too, and it contains a nice qmail hack. If you want me to link yours here, then just tell me. Sven's is really much better documented and much larger. It serves as an excellent reference to the .muttrc. Mutt now comes with a muttrc(5) man page that should be your reference.

Does Mutt support PGP 5?

Yes. My personal recommendation is to use the GNU Privacy Guard (gnupg) instead, though.

Why can't Mutt decode this PGP mail sent with Pine/ELMme/etc?

Because this PGP mail does not say it is a PGP mail in the header, and Mutt only scans the header of mails. This is a feature!
Well, there is a solution for your problem, if you use procmail. Add these lines to your .procmailrc:
# Add a "Content-Type: application/pgp" header so Mutt will know the
# mail is encrypted.
:0 fBw
* ^-----BEGIN PGP MESSAGE-----
* !Content-type: multipart
| formail -i "Content-Type: application/pgp; format=text; x-action=encryptsign"

# Add a "Content-Type: application/pgp" header so Mutt will know the
# mail is signed.
:0 fBw
* ^-----BEGIN PGP SIGNED MESSAGE-----
* !Content-type: multipart
| formail -i "Content-Type: application/pgp; format=text; x-action=sign"

I don't like the Mutt manual. Is there an alternative?

Yes, there is. Check the Mutt newbie guide at sourceforge.net/projects/mutt-newbie/.

COMMON PROBLEMS

Mutt cannot read my mail spool!
Mutt can't dotlock my mailbox!
Mutt always sets my mail folder read-only!

Mutt has found out that your system mail directory is not world writable. Under these circumstances, all MUAs need to be setgid (don't worry if you don't know what this means). Only the system administrator can do this, mere users cannot.

Mutt circumvents the security problems that setgid brings by only making the external program mutt_dotlock setgid, which is small enough to be checked by your admin.

A workaround is to have your mail put into a mail box in your home directory. Then you configure Mutt with the --with-homespool option. But how do you put the mail in your home directory? Easy. You do this with your .forward file. Do you already have a .forward file in your home directory? If you do, you are probably using a mail filter like Procmail or mailagent or the ELM filter. Just read the manual for your filter program to find out how to tell the program where the default folder for the mail is. With procmail, you can do this by putting the following line in your .procmailrc:

  DEFAULT=$HOME/Mailbox
If you don't have a .forward file and your site does not use procmail implicitly (ask your sysadmin if you are unsure!), just execute this command:
  $ echo $HOME/Mailbox > $HOME/.forward
If you use qmail, Postfix or Exim, I recommend that you use the Maildir mail folder format. Please see the MTA documentation for details.

What happened to "browse_url" and "set browser"?

The functionality was moved to the "urlview" program. You can get it where you got Mutt.

Mutt puts email addresses in the References header!
Mutt generates broken References headers!

This is not a bug. The References header is generated from In-Reply-To. If the email you are replying to puts email addresses there, Mutt has no way to know which is the Message-ID and which is the email address. For example,
In-Reply-To: message from <felix@convergence.de>;
		<19991014171458.A1701@convergence.de>
will trigger this. The solution is to fix the mail program that produces this mail not to enclose the email address in angle brackets.

How can I import my ELM aliases?

you can easily transform Elm's aliases to Mutt's alias format using ELM's utility "elmalias":
        elmalias -u -f "alias %a\t%n\t<%v>"
Or, as Gregory Seidman recommends (this one also converts group aliases):
elmalias -u -f "alias %a\t%n\t<%v>" | sed 's/,/>,</g' |\
        awk -F' ' '/,/ { print $1,$3; next }
                {print}' -

Why can I start two Mutts simultaneously? ELM and PINE didn't let me do this.

This is a feature. If you modify the folder in one Mutt, then synchronize, the other Mutt will try to merge the differences as good as it can.

I set alias_file but Mutt does not know my aliases!
What is the difference between source and alias_file?

The difference is that alias_file will tell Mutt where it should append new alias definitions while source will read the specified file (which may include more than just aliases definitions). So, if you use alias_file you probably also want to source the alias file.

Why is Mutt so slow over NFS?

This has been sped up greatly in the current version. Especially since Mutt can partially update folders. Previous versions of this FAQ recommended that you disable fcntl locking. Do not do this! Recent NFS implementations use client side caching and fcntl locking seems to be the only portable way to tell the client to update the read cache. You risk losing mails!

If Mutt simply hangs and then says that it could not acquire kernel locks and you use Linux as client, you might have forgotten to start portmap on your local box and the kernel lockd times out trying to connect to it.

Mutt leaves files called "mutt.host.123.234~" or "mutt.host.123.234.bak" behind it!

This is your editor, not Mutt. It is probably a good idea to modify your editor so it won't create backup files for your mails. If you use Emacs, you can put a line like this in your .muttrc:
set editor = "/usr/bin/emacs %s --eval '(setq make-backup-files nil)'"
I have been told that Emacs users gain efficiency by using "emacsclient" instead of "emacs", which will use an existing Emacs session instead of firing up a new instance. Vim won't leave backups behind it by default. And if you want backups per default, but not for mutt, you can use set backupskip=mutt-<hostname>* (thanks to Norvell Spearman for the tip).

Liviu Daia <daia@stoilow.imar.ro> adds:

Apart from the editor, Ispell can be another source of stale backup files in $tmpdir: by default, Ispell doesn't delete the files with names longer than 14 characters, and the temporary files created by Mutt may have longer names; in order to fix this, the definition of "MAXNAMLEN" in the file "config.X" in the Ispell sources has to be modified to 1024 (or whatever is the limit on the current system), and Ispell must be recompiled;

Can Mutt be configured to rename folders at the end of the month, like Pine?

No. And that's on purpose. This can be done with a cron job, for example. Or you can tell Mutt to write to the correct folder in the beginning with muttrc-statements like these:
send-hook . "set record=~/mail/sent-mail-`date +%Y-%m`"
set record="=sent-mail-`date +%Y-%m`"

The internal pager segfaults when I do nothing for 30 seconds
The internal pager times out after 60 seconds

You are using Solaris, right? Add the line "set timeout=0" to your .muttrc and you should be fine. The timeout() call does not work correctly under Solaris. (This has been fixed Solaris 2.4+, AFAIK)

I keep getting HTML attachments.

Yes. And with recent Mutt versions, there is help. Just add one of these to your ~/.mailcap:
text/html; lynx -force_html %s; needsterminal;
text/html; elinks -default-mime-type text/html %s; needsterminal;
Alternatively you can use autoview, which makes mutt display the attachments inline. Then you have to add set implicit_autoview to your muttrc and one of these to your ~/.mailcap:
text/html; lynx -dump -force_html %s; needsterminal; copiousoutput;
text/html; elinks -dump -dump-charset utf-8 -default-mime-type text/html %s; needsterminal; copiousoutput;
I recommend elinks over lynx because of its superior HTML rendering.

Mutt displays the umlauts as question marks.

Mutt asks your system C library whether a character is printable or not. Whether a character is printable or not depends on your locale settings. You change this by setting the LC_CTYPE environment variable to the correct setting, which depends on your operating system, please read the relveant documentation. My setting is de_DE ("de" is the language code for German, "DE" is the ISO country code for Germany, try the top level domain of your country) which works for newer Linux systems. Another value to try out are UTF-8. But this is system dependent, so please do read the locale section of your manual.

I keep getting strange Microsoft attachments. (Word, Excel, RTF, etc)

Well, besides educating the Windows users not to use proprietary technology, you can convert the attachments using StarOffice, Abiword or Antiword. There are other converters, too. Please ask Freshmeat or Google for them.

How can I change the Mail-Followup-To Header?

Simply set mutt's edit_hdrs variable, and supply one yourself. Mutt will generate a Mail-Followup-To header if and only if you didn't supply one, and the message is directed to at least one subscribed mailing list.

With Maildir, all the messages have a length of 0!

That is because the headers don't contain a "Lines:" header. You can use this procmail recipe to fix it (courtesy of Liviu Daia and Alex Shnitman, who continue to shorten this recipe):
:0 Bfh
* H ?? !^Lines:
* -1^0
*  1^1 ^.*$
| formail -A "Lines: $="
As Chris Pinard pointed out: this assumes that you have a way to store mails in a maildir from procmail. Maildir is the mail folder format advocated by DJ Bernstein of qmail fame. Recent procmails have built-in support for maildir, or you can use safecat or an equivalent program.

Several people have pointed out that you can simply switch to %c in your index_format to show the number of bytes in the message.

Liam Routt adds that the config file line for maildrop users is

xfilter "reformail -a'Lines: $LINES'"
(add this to your ~/.mailfilter).

Color doesn't work. All I get is a bold (bright) font.

  1. Are you using a version of screen older than 3.7.1? Then you will have to upgrade to at least 3.7.1.
  2. Does the terminal you use really support color?
  3. Is your $TERM set correctly? Some users always set $TERM to vt100. Try setting it to xterm or xterm-color, or, on systems with a recent terminfo database, rxvt.
  4. Did you actually configure colors? ;-)
  5. If you are using S-Lang Mutt, try setting the COLORTERM environment variable to anything (zsh/bash: export COLORTERM=foo).
If it still does not work, you can follow these instructions:
$ mkdir ~/.terminfo/
$ mkdir ~/.terminfo/v
$ mkdir ~/.terminfo/x
Save this file as ~/.terminfo/v/vt102-c.
Save this file as ~/.terminfo/x/xterm-color.
$ export TERMINFO=~/.terminfo; export TERM=xterm-color;
$ mutt

When I send away mail, the From: address is wrong!

Previous versions of Mutt had to be recompiled with different options to configure. Now you can set the options in your .muttrc (or, preferably, the system Muttrc)!

How can I make Mutt use a SMTP server to send email, like Pine or [insert favourite Windows-based email client here]?

Use the smtp_url configuration option.

How do I tell Mutt not to quote the signature?

There once was an unofficial patch for Mutt which is now maintained by Stefan 'Sec' Zehl and can be retrieved from http://www.42.org/~sec/mutt/.
The suggested method is to tell your editor to do it. For example, uses of the VIM editor should put this line in their .vimrc:
au BufRead /tmp/mutt* normal :g/^> -- $/,/^$/-1d^M/^$^M^L
Another solution was proposed by Markus Muss is this shell script:
#!/bin/sh
#
# sigkiller: delete last foreign signatur when quoting mails
#            (foreign dashes = "> -- " or "> --"
#
# Markus Muss 
#
awk '{if ($0 ~ /^> -- ?$/) {
         while ($0 !~ /^-- $/) {
            getline
         }
      print " " > OUTFILE
     }
     print $0 > OUTFILE
  }' OUTFILE=$1.out $1
mv $1.out $1
in conjunction with
set   editor="sigkiller %s; joe -nobackups +\`awk '/^$/ {print i+2; exit} {i++}' %s\` -wordwrap -rmargin 70 %s

How can I browse my list of aliases

answer from Mikko H?nninen

Press the TAB key when in the To: or Cc: prompt.

I accidentally entered some strange prompt and Ctrl-C or Esc don't work! Help!

Use Ctrl-G. Please do read the manual. There are a ton of useful non-obvious keys and functions. This FAQ will not list any more key bindings, you have to read the documentation.

Mutt sometimes display the thread tree with an asterisk! What gives?

Normally, a part of the thread tree looks like this: +->. But sometimes, it looks like this: *->. The difference is that the first is a real thread, the second is a pseudo thread. Email headers contain lines that identify the email being replies to. But some broken mailing list software deletes these headers, so Mutt can not properly identify threads. If two mails have identical subjects, Mutt considers them to be in a pseudo thread and displays them with the asterisk ("star") character. This can group unrelated mails together but some people like it better. If you don't want pseudo threads, simply set strict_threads in your .muttrc. You can do this on a per-folder basis with folder-hooks.

mutt -f =foo displays /tmp_mnt/home/luser/Mail/foo as folder name

This is a SunOS 4 problem. A solution is to set $HOME to /tmp_mnt$HOME.

Why doesn't Mutt use the background color of my xterm?

Mutt now does, with S-Lang and with ncurses 4.1 or later.
You can even have background pixmaps with rxvt. See http://www.math.fu-berlin.de/~kesim/mutt/ for a screenshot.

I'd like to get my mail via IMAP!

Mutt does now officially support IMAP. Please upgrade to a recent version and use --enable-imap and preferably --with-ssl if you have OpenSSL installed to get SSL encryption for your IMAP connections.

Then you simply set your spoolfile to "{mailhost/ssl}INBOX" to access your email (replace mailhost with the name or IP of your IMAP server and omit the "/ssl" if you don't have SSL support). INBOX is the canonical name for your mail spool via IMAP. With IMAP, you can have more than one mail folder and access them with "{mailhost/ssl}INBOX/foo with the name foo.

I can't access my IMAP folders on UW-imapd

Try an extra slash, e.g.
imap://groups.washington.edu//eecs
instead of
imap://groups.washington.edu/eecs

I always get 'key not bound' errors when using the cursor keys

There are two possibilities. Either your terminfo/termcap database is wrong about the cursor key strings, then please upgrade terminfo. You can get it at http://www.catb.org/~esr/terminfo/, and it's part of the ncurses distribution, too, so consider installing the latest ncurses. The other possibility is that you are using a very slow or noisy modem line and the last byte of the cursor key string arrives so late that the timeout is over and you get the effects of A B C or D. In this case, if you are using S-Lang (which you probably are), try putting ESCDELAY=300; in main.c and recompile Mutt.

I'd like to switch from ELM, but I don't want to lose my aliases!

Fear not, for there is a small nawk script by afx@ibm.de that converts the ELM aliases. Just append the output to your .muttrc.

I typed the wrong PGP passphrase and Mutt didn't notice!

The problem is that not all versions of PGP properly signal their success with the exit code. So Mutt has a command called forget-passphrase which, not surprisingly, forgets the passphrase so that you can enter it again when Mutt calls PGP the next time. The default keybinding for forget-passphrase is Control-F.

Some user complained that my PGP messages are attachments!

That user is using obsolete and broken software. PGP/MIME is the only way to use PGP with email that is actually specified (RFC 2015) and not some proprietary ad-hoc crap. Tell that other user to get rid of his legacy crap mail software and install standards compliant software. RFC 2015 is from 1996, by the way, so no mail software author can say he didn't have enough time to implement this.

configure does not find my ncurses.h in /foo/bar/include/ncurses!

Try ./configure --with-curses=/foo/bar. By the way: recent ncurses versions don't have ncurses.h, only curses.h. Consider upgrading.

I use Mutt with qmail and all my messages arrive twice!

Some people take the sendmail invocation line from the qmail FAQ and put it in their muttrc. Please remove that line from your .muttrc.

OTHER QUESTIONS

I heard there is an editor called Mutt editor...?

Both programs sound similar but have no connection whatsoever. Additionally, both authors know of the other project and have no problems with the name similarity.

When will Mutt be ported to Windows?

Mutt can be compiled with cygwin. Someone did a port which you can find on Sourceforge. (Thanks to Olaf Foellinger and Wilfried Goesgens). Sven also has a page about mutt on Windows.

Does mutt have a sidebar, like Outlook?

No, but there is a patch.