Mutt was originally designed as a Mail User Agent (MUA) and relied on locally accessible mailbox and sendmail infrastructure. According to the Mutt homepage "though written from scratch, Mutt's initial interface was based largely on the ELM mail client". New to Mutt were message scoring and threading capabilities. Support for fetching and sending email via various protocols such as POP3, IMAP and SMTP was added later. However, Mutt still relies on external tools for composing and filtering messages.
Mutt has hundreds of configuration directives and commands. It allows for changing all the key bindings and making keyboard macros for complex actions, as well as the colors and the layout of most of the interface. Through variants of a concept known as "hooks", many of its settings can be changed based on criteria such as current mailbox or outgoing message recipients. Mutt supports an optional sidebar, similar to those often found in GUI mail clients. There are also many patches and extensions available that add functionality, such as NNTP support.
Mutt is fully controlled with the keyboard, and has support for mail conversation threading, meaning one can easily move around long discussions such as in mailing lists. New messages are composed with an external text editor, unlike pine, which embeds its own editor known as pico.
Mutt is capable of efficiently searching mail stores by calling on mail indexing tools such as Notmuch, and many people recommend Mutt be used this way. Alternatively, users can search their mail stores from Mutt by calling grep via a GNU Bash.