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.

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.

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.

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!

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:

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).

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!

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:

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.

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.

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.

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.

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:

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.

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,

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.

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.

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).

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;

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. Other values to try out are ISO_8859_1 and
ISO-8859-1. But please do read the locale section of your
manual.

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.

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.

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 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.

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.

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.

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.