-<!doctype linuxdoc system>
-
-<article>
-
-<title>The Mutt-ng E-Mail Client
-<author>by Michael Elkins <htmlurl url="mailto:me@cs.hmc.edu" name="<me@cs.hmc.edu>"> and others.
-<date>version @VERSION@
-<abstract>
-``All mail clients suck. This one just sucks less.'' -me, circa 1995
-</abstract>
-
-<toc>
-
-<sect>Introduction
-<p>
-<bf/Mutt-ng/ is a small but very powerful text-based MIME mail client. Mutt-ng is
-highly configurable, and is well suited to the mail power user with advanced
-features like key bindings, keyboard macros, mail threading, regular
-expression searches and a powerful pattern matching language for selecting
-groups of messages.
-
-<p>This documentation additionally contains documentation to <bf/Mutt-NG/, a
-fork from Mutt with the goal to fix all the little annoyances of Mutt, to
-integrate all the Mutt patches that are floating around in the web, and to
-add other new features. Features specific to Mutt-ng will be discussed in
-an extra section. Don't be confused when most of the documentation talk about
-Mutt and not Mutt-ng, Mutt-ng contains all Mutt features, plus many more.
-
-
-<sect1>Mutt-ng Home Page
-<p>
-<htmlurl url="http://www.muttng.org/"
-name="http://www.muttng.org">
-
-<sect1>Mailing Lists
-<p>
-
-<itemize>
-<item><htmlurl url="https://lists.berlios.de/mailman/listinfo/mutt-ng-users"
-name="mutt-ng-users@lists.berlios.de"> -- This is where the mutt-ng user support happens.
-<item><htmlurl url="https://lists.berlios.de/mailman/listinfo/mutt-ng-devel" name="mutt-ng-devel@lists.berlios.de"> -- The development mailing list for mutt-ng
-</itemize>
-
-<sect1>Software Distribution Sites
-<p>
-So far, there are no official releases of Mutt-ng, but you can download
-daily snapshots from <htmlurl url="http://mutt-ng.berlios.de/snapshots/" name="http://mutt-ng.berlios.de/snapshots/">
-<!--
-<itemize>
-<item><htmlurl url="ftp://ftp.mutt.org/mutt/"
-name="ftp://ftp.mutt.org/mutt/">
-</itemize>
-<p>
-For a list of mirror sites, please refer to <htmlurl
-url="http://www.mutt.org/download.html"
-name="http://www.mutt.org/download.html">.
--->
-
-
-<sect1>IRC
-<p>
-Visit channel <em/#muttng/ on <htmlurl
-url="http://www.freenode.net/" name="irc.freenode.net
-(www.freenode.net)"> to chat with other people interested in Mutt-ng.
-
-
-<sect1>Weblog
-<p>
-If you want to read fresh news about the latest development in Mutt-ng, and get informed
-about stuff like interesting, Mutt-ng-related articles and packages for your favorite
-distribution, you can read and/or subscribe to our
-<htmlurl url="http://mutt-ng.supersized.org/" name="Mutt-ng development weblog">.
-
-<sect1>Copyright
-<p>
-Mutt is Copyright (C) 1996-2000 Michael R. Elkins
-<me@cs.hmc.edu> and others
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
-
-<sect>Getting Started
-<p>
-
-This section is intended as a brief overview of how to use Mutt-ng. There are
-many other features which are described elsewhere in the manual.
-<--
-There
-is even more information available in the Mutt FAQ and various web
-pages. See the <htmlurl url="http://www.mutt.org/mutt/"
-name="Mutt Page"> for more details.
--->
-
-The key bindings described in this section are the defaults as distributed.
-Your local system administrator may have altered the defaults for your site.
-You can always type ``?'' in any menu to display the current bindings.
-
-The first thing you need to do is invoke mutt-ng simply by typing muttng
-at the command line. There are various command-line options, see
-either the muttng man page or the <ref id="commandline" name="reference">.
-
-If you have used mutt in the past the easiest thing to have a proper
-configuration file is to source ~/.muttrc in ~/.muttngrc.
-
-<sect1>Moving Around in Menus
-<p>
-
-Information is presented in menus, very similar to ELM. Here is a table
-showing the common keys used to navigate menus in Mutt-ng.
-
-<tscreen><verb>
-j or Down next-entry move to the next entry
-k or Up previous-entry move to the previous entry
-z or PageDn page-down go to the next page
-Z or PageUp page-up go to the previous page
-= or Home first-entry jump to the first entry
-* or End last-entry jump to the last entry
-q quit exit the current menu
-? help list all key bindings for the current menu
-</verb></tscreen>
-
-<sect1>Editing Input Fields<label id="editing">
-<p>
-Mutt-ng has a builtin line editor which is used as the primary way to input
-textual data such as email addresses or filenames. The keys used to move
-around while editing are very similar to those of Emacs.
-
-<tscreen><verb>
-^A or <Home> bol move to the start of the line
-^B or <Left> backward-char move back one char
-Esc B backward-word move back one word
-^D or <Delete> delete-char delete the char under the cursor
-^E or <End> eol move to the end of the line
-^F or <Right> forward-char move forward one char
-Esc F forward-word move forward one word
-<Tab> complete complete filename or alias
-^T complete-query complete address with query
-^K kill-eol delete to the end of the line
-ESC d kill-eow delete to the end of the word
-^W kill-word kill the word in front of the cursor
-^U kill-line delete entire line
-^V quote-char quote the next typed key
-<Up> history-up recall previous string from history
-<Down> history-down recall next string from history
-<BackSpace> backspace kill the char in front of the cursor
-Esc u upcase-word convert word to upper case
-Esc l downcase-word convert word to lower case
-Esc c capitalize-word capitalize the word
-^G n/a abort
-<Return> n/a finish editing
-</verb></tscreen>
-
-You can remap the <em/editor/ functions using the <ref id="bind" name="bind">
-command. For example, to make the <em/Delete/ key delete the character in
-front of the cursor rather than under, you could use
-
-<tt/bind editor <delete> backspace/
-
-<sect1>Reading Mail - The Index and Pager
-<p>
-
-Similar to many other mail clients, there are two modes in which mail is
-read in Mutt-ng. The first is the index of messages in the mailbox, which is
-called the ``index'' in Mutt-ng. The second mode is the display of the
-message contents. This is called the ``pager.''
-
-The next few sections describe the functions provided in each of these
-modes.
-
-<sect2>The Message Index
-<p>
-
-<tscreen><verb>
-c change to a different mailbox
-ESC c change to a folder in read-only mode
-C copy the current message to another mailbox
-ESC C decode a message and copy it to a folder
-ESC s decode a message and save it to a folder
-D delete messages matching a pattern
-d delete the current message
-F mark as important
-l show messages matching a pattern
-N mark message as new
-o change the current sort method
-O reverse sort the mailbox
-q save changes and exit
-s save-message
-T tag messages matching a pattern
-t toggle the tag on a message
-ESC t toggle tag on entire message thread
-U undelete messages matching a pattern
-u undelete-message
-v view-attachments
-x abort changes and exit
-<Return> display-message
-<Tab> jump to the next new message
-@ show the author's full e-mail address
-$ save changes to mailbox
-/ search
-ESC / search-reverse
-^L clear and redraw the screen
-^T untag messages matching a pattern
-</verb></tscreen>
-
-<sect3>Status Flags
-<p>
-
-In addition to who sent the message and the subject, a short summary of
-the disposition of each message is printed beside the message number.
-Zero or more of the following ``flags'' may appear, which mean:
-
-<p>
-<descrip>
-<tag/D/ message is deleted (is marked for deletion)
-<tag/d/ message have attachments marked for deletion
-<tag/K/ contains a PGP public key
-<tag/N/ message is new
-<tag/O/ message is old
-<tag/P/ message is PGP encrypted
-<tag/r/ message has been replied to
-<tag/S/ message is signed, and the signature is succesfully verified
-<tag/s/ message is signed
-<tag/!/ message is flagged
-<tag/*/ message is tagged
-</descrip>
-
-Some of the status flags can be turned on or off using
-<itemize>
-<item><bf/set-flag/ (default: w)
-<item><bf/clear-flag/ (default: W)
-</itemize>
-
-<p>
-Furthermore, the following flags reflect who the message is addressed
-to. They can be customized with the
-<ref id="to_chars" name="$to_chars"> variable.
-
-<p>
-<descrip>
-<tag/+/ message is to you and you only
-<tag/T/ message is to you, but also to or cc'ed to others
-<tag/C/ message is cc'ed to you
-<tag/F/ message is from you
-<tag/L/ message is sent to a subscribed mailing list
-</descrip>
-
-<sect2>The Pager
-<p>
-
-By default, Mutt-ng uses its builtin pager to display the body of messages.
-The pager is very similar to the Unix program <em/less/ though not nearly as
-featureful.
-
-<tscreen><verb>
-<Return> go down one line
-<Space> display the next page (or next message if at the end of a message)
-- go back to the previous page
-n search for next match
-S skip beyond quoted text
-T toggle display of quoted text
-? show key bindings
-/ search for a regular expression (pattern)
-ESC / search backwards for a regular expression
-\ toggle search pattern coloring
-^ jump to the top of the message
-</verb></tscreen>
-
-In addition, many of the functions from the <em/index/ are available in
-the pager, such as <em/delete-message/ or <em/copy-message/ (this is one
-advantage over using an external pager to view messages).
-
-Also, the internal pager supports a couple other advanced features. For
-one, it will accept and translate the ``standard'' nroff sequences for
-bold and underline. These sequences are a series of either the letter,
-backspace (^H), the letter again for bold or the letter, backspace,
-``_'' for denoting underline. Mutt-ng will attempt to display these
-in bold and underline respectively if your terminal supports them. If
-not, you can use the bold and underline <ref id="color" name="color">
-objects to specify a color or mono attribute for them.
-
-Additionally, the internal pager supports the ANSI escape sequences for
-character attributes. Mutt-ng translates them into the correct color and
-character settings. The sequences Mutt-ng supports are:
-
-<p>
-<tscreen><verb>
-ESC [ Ps;Ps;Ps;...;Ps m
-where Ps =
-0 All Attributes Off
-1 Bold on
-4 Underline on
-5 Blink on
-7 Reverse video on
-3x Foreground color is x
-4x Background color is x
-
-Colors are
-0 black
-1 red
-2 green
-3 yellow
-4 blue
-5 magenta
-6 cyan
-7 white
-</verb></tscreen>
-
-Mutt-ng uses these attributes for handling text/enriched messages, and they
-can also be used by an external <ref id="auto_view" name="autoview">
-script for highlighting purposes. <bf/Note:/ If you change the colors for your
-display, for example by changing the color associated with color2 for
-your xterm, then that color will be used instead of green.
-
-<sect2>Threaded Mode<label id="threads">
-<p>
-When the mailbox is <ref id="sort" name="sorted"> by <em/threads/, there are
-a few additional functions available in the <em/index/ and <em/pager/ modes.
-
-<tscreen><verb>
-^D delete-thread delete all messages in the current thread
-^U undelete-thread undelete all messages in the current thread
-^N next-thread jump to the start of the next thread
-^P previous-thread jump to the start of the previous thread
-^R read-thread mark the current thread as read
-ESC d delete-subthread delete all messages in the current subthread
-ESC u undelete-subthread undelete all messages in the current subthread
-ESC n next-subthread jump to the start of the next subthread
-ESC p previous-subthread jump to the start of the previous subthread
-ESC r read-subthread mark the current subthread as read
-ESC t tag-thread toggle the tag on the current thread
-ESC v collapse-thread toggle collapse for the current thread
-ESC V collapse-all toggle collapse for all threads
-P parent-message jump to parent message in thread
-</verb></tscreen>
-
-<bf/Note:/ Collapsing a thread displays only the first message
-in the thread and hides the others. This is useful when threads
-contain so many messages that you can only see a handful of threads on
-the screen. See %M in <ref id="index_format"name="$index_format">.
-For example, you could use "%?M?(#%03M)&(%4l)?" in <ref
-id="index_format"name="$index_format"> to optionally
-display the number of hidden messages if the thread is collapsed.
-
-See also: <ref id="strict_threads" name="$strict_threads">.
-
-<sect2>Miscellaneous Functions
-<p><bf/create-alias/<label id="create-alias"> (default: a)<newline>
-
-Creates a new alias based upon the current message (or prompts for a
-new one). Once editing is complete, an <ref id="alias" name="alias">
-command is added to the file specified by the <ref id="alias_file"
-name="$alias_file"> variable for future use. <bf/Note:/
-Specifying an <ref id="alias_file" name="$alias_file">
-does not add the aliases specified there-in, you must also <ref
-id="source" name="source"> the file.
-
-<p><bf/check-traditional-pgp/<label id="check-traditional-pgp"> (default: ESC P)<newline>
-
-This function will search the current message for content signed or
-encrypted with PGP the "traditional" way, that is, without proper
-MIME tagging. Technically, this function will temporarily change
-the MIME content types of the body parts containing PGP data; this
-is similar to the <ref id="edit-type" name="edit-type"> function's
-effect.
-
-
-<p><bf/display-toggle-weed/<label id="display-toggle-weed"> (default: h)<newline>
-
-Toggles the weeding of message header fields specified by <ref id="ignore"
-name="ignore"> commands.
-
-<p><bf/edit/<label id="edit"> (default: e)<newline>
-
-This command (available in the ``index'' and ``pager'') allows you to
-edit the raw current message as it's present in the mail folder.
-After you have finished editing, the changed message will be
-appended to the current folder, and the original message will be
-marked for deletion.
-
-<p><bf/edit-type/<label id="edit-type"><newline>
-(default: ^E on the attachment menu, and in the pager and index menus; ^T on the
-compose menu)
-
-This command is used to temporarily edit an attachment's content
-type to fix, for instance, bogus character set parameters. When
-invoked from the index or from the pager, you'll have the
-opportunity to edit the top-level attachment's content type. On the
-<ref id="attach_menu" name="attachment menu">, you can change any
-attachment's content type. These changes are not persistent, and get
-lost upon changing folders.
-
-Note that this command is also available on the <ref
-id="compose_menu" name="compose menu">. There, it's used to
-fine-tune the properties of attachments you are going to send.
-
-<p><bf/enter-command/<label id="enter-command"> (default: ``:'')<newline>
-
-This command is used to execute any command you would normally put in a
-configuration file. A common use is to check the settings of variables, or
-in conjunction with <ref id="macro" name="macros"> to change settings on the
-fly.
-
-<p><bf/extract-keys/<label id="extract-keys"> (default: ^K)<newline>
-
-This command extracts PGP public keys from the current or tagged
-message(s) and adds them to your PGP public key ring.
-
-<p><bf/forget-passphrase/<label id="forget-passphrase"> (default:
-^F)<newline>
-
-This command wipes the passphrase(s) from memory. It is useful, if
-you misspelled the passphrase.
-
-<p><bf/list-reply/<label id="list-reply"> (default: L)<newline>
-
-Reply to the current or tagged message(s) by extracting any addresses which
-match the regular expressions given by the <ref id="lists" name="lists or subscribe">
-commands, but also honor any <tt/Mail-Followup-To/ header(s) if the
-<ref id="honor_followup_to" name="$honor_followup_to">
-configuration variable is set. Using this when replying to messages posted
-to mailing lists helps avoid duplicate copies being sent to the author of
-the message you are replying to.
-
-<bf/pipe-message/<label id="pipe-message"> (default: |)<newline>
-
-Asks for an external Unix command and pipes the current or
-tagged message(s) to it. The variables <ref id="pipe_decode"
-name="$pipe_decode">, <ref id="pipe_split"
-name="$pipe_split">, <ref id="pipe_sep"
-name="$pipe_sep"> and <ref id="wait_key"
-name="$wait_key"> control the exact behavior of this
-function.
-
-<bf/resend-message/<label id="resend-message"> (default: ESC e)<newline>
-
-With resend-message, mutt takes the current message as a template for a
-new message. This function is best described as "recall from arbitrary
-folders". It can conveniently be used to forward MIME messages while
-preserving the original mail structure. Note that the amount of headers
-included here depends on the value of the <ref id="weed" name="$weed">
-variable.
-
-This function is also available from the attachment menu. You can use this
-to easily resend a message which was included with a bounce message
-as a message/rfc822 body part.
-
-<bf/shell-escape/<label id="shell-escape"> (default: !)<newline>
-
-Asks for an external Unix command and executes it. The <ref
-id="wait_key" name="$wait_key"> can be used to control
-whether Mutt-ng will wait for a key to be pressed when the command returns
-(presumably to let the user read the output of the command), based on
-the return status of the named command.
-
-<bf/toggle-quoted/<label id="toggle-quoted"> (default: T)<newline>
-
-The <em/pager/ uses the <ref id="quote_regexp"
-name="$quote_regexp"> variable to detect quoted text when
-displaying the body of the message. This function toggles the display
-of the quoted material in the message. It is particularly useful when
-are interested in just the response and there is a large amount of
-quoted text in the way.
-
-<bf/skip-quoted/<label id="skip-quoted"> (default: S)<newline>
-
-This function will go to the next line of non-quoted text which come
-after a line of quoted text in the internal pager.
-
-<sect1>Sending Mail
-<p>
-
-The following bindings are available in the <em/index/ for sending
-messages.
-
-<tscreen><verb>
-m compose compose a new message
-r reply reply to sender
-g group-reply reply to all recipients
-L list-reply reply to mailing list address
-f forward forward message
-b bounce bounce (remail) message
-ESC k mail-key mail a PGP public key to someone
-</verb></tscreen>
-
-Bouncing a message sends the message as is to the recipient you
-specify. Forwarding a message allows you to add comments or
-modify the message you are forwarding. These items are discussed
-in greater detail in the next chapter <ref id="forwarding_mail"
-name="``Forwarding and Bouncing Mail''">.
-
-Mutt-ng will then enter the <em/compose/ menu and prompt you for the
-recipients to place on the ``To:'' header field. Next, it will ask
-you for the ``Subject:'' field for the message, providing a default if
-you are replying to or forwarding a message. See also <ref id="askcc"
-name="$askcc">, <ref id="askbcc" name="$askbcc">, <ref
-id="autoedit" name="$autoedit">, <ref id="bounce"
-name="$bounce">, and <ref id="fast_reply"
-name="$fast_reply"> for changing how Mutt-ng asks these
-questions.
-
-Mutt-ng will then automatically start your <ref id="editor"
-name="$editor"> on the message body. If the <ref id="edit_headers"
-name="$edit_headers"> variable is set, the headers will be at
-the top of the message in your editor. Any messages you are replying
-to will be added in sort order to the message, with appropriate <ref
-id="attribution" name="$attribution">, <ref id="indent_string"
-name="$indent_string"> and <ref id="post_indent_string"
-name="$post_indent_string">. When forwarding a
-message, if the <ref id="mime_forward" name="$mime_forward">
-variable is unset, a copy of the forwarded message will be included. If
-you have specified a <ref id="signature" name="$signature">, it
-will be appended to the message.
-
-Once you have finished editing the body of your mail message, you are
-returned to the <em/compose/ menu. The following options are available:
-
-<tscreen><verb>
-a attach-file attach a file
-A attach-message attach message(s) to the message
-ESC k attach-key attach a PGP public key
-d edit-description edit description on attachment
-D detach-file detach a file
-t edit-to edit the To field
-ESC f edit-from edit the From field
-r edit-reply-to edit the Reply-To field
-c edit-cc edit the Cc field
-b edit-bcc edit the Bcc field
-y send-message send the message
-s edit-subject edit the Subject
-S smime-menu select S/MIME options
-f edit-fcc specify an ``Fcc'' mailbox
-p pgp-menu select PGP options
-P postpone-message postpone this message until later
-q quit quit (abort) sending the message
-w write-fcc write the message to a folder
-i ispell check spelling (if available on your system)
-^F forget-passphrase wipe passphrase(s) from memory
-</verb></tscreen>
-
-<bf/Note:/ The attach-message function will prompt you for a folder to
-attach messages from. You can now tag messages in that folder and they
-will be attached to the message you are sending. Note that certain
-operations like composing a new mail, replying, forwarding, etc. are
-not permitted when you are in that folder. The %r in <ref
-id="status_format" name="$status_format"> will change to
-a 'A' to indicate that you are in attach-message mode.
-
-<sect2>Editing the message header
-<p>
-When editing the header of your outgoing message, there are a couple of
-special features available.
-
-If you specify<newline>
-<tt/Fcc:/ <em/filename/<newline>
-Mutt-ng will pick up <em/filename/
-just as if you had used the <em/edit-fcc/ function in the <em/compose/ menu.
-
-You can also attach files to your message by specifying<newline>
-<tt/Attach:/ <em/filename/ [ <em/description/ ]<newline>
-where <em/filename/ is the file to attach and <em/description/ is an
-optional string to use as the description of the attached file.
-
-When replying to messages, if you remove the <em/In-Reply-To:/ field from
-the header field, Mutt-ng will not generate a <em/References:/ field, which
-allows you to create a new message thread.
-
-Also see <ref id="edit_headers" name="edit_headers">.
-
-<sect2>Using Mutt-ng with PGP
-
-<p>
-If you want to use PGP, you can specify
-
-<tt/Pgp:/ [ <tt/E/ | <tt/S/ | <tt/S/<em/<id>/ ] <newline>
-
-``E'' encrypts, ``S'' signs and
-``S<id>'' signs with the given key, setting <ref
-id="pgp_sign_as" name="$pgp_sign_as"> permanently.
-
-If you have told mutt to PGP encrypt a message, it will guide you
-through a key selection process when you try to send the message.
-Mutt-ng will not ask you any questions about keys which have a
-certified user ID matching one of the message recipients' mail
-addresses. However, there may be situations in which there are
-several keys, weakly certified user ID fields, or where no matching
-keys can be found.
-
-In these cases, you are dropped into a menu with a list of keys from
-which you can select one. When you quit this menu, or mutt can't
-find any matching keys, you are prompted for a user ID. You can, as
-usually, abort this prompt using <tt/^G/. When you do so, mutt will
-return to the compose screen.
-
-Once you have successfully finished the key selection, the message
-will be encrypted using the selected public keys, and sent out.
-
-Most fields of the entries in the key selection menu (see also <ref
-id="pgp_entry_format" name="$pgp_entry_format">)
-have obvious meanings. But some explanations on the capabilities, flags,
-and validity fields are in order.
-
-The flags sequence (%f) will expand to one of the following flags:
-<tscreen><verb>
-R The key has been revoked and can't be used.
-X The key is expired and can't be used.
-d You have marked the key as disabled.
-c There are unknown critical self-signature
- packets.
-</verb></tscreen>
-
-The capabilities field (%c) expands to a two-character sequence
-representing a key's capabilities. The first character gives
-the key's encryption capabilities: A minus sign (<bf/-/) means
-that the key cannot be used for encryption. A dot (<bf/./) means that
-it's marked as a signature key in one of the user IDs, but may
-also be used for encryption. The letter <bf/e/ indicates that
-this key can be used for encryption.
-
-The second character indicates the key's signing capabilities. Once
-again, a ``<bf/-/'' implies ``not for signing'', ``<bf/./'' implies
-that the key is marked as an encryption key in one of the user-ids, and
-``<bf/s/'' denotes a key which can be used for signing.
-
-Finally, the validity field (%t) indicates how well-certified a user-id
-is. A question mark (<bf/?/) indicates undefined validity, a minus
-character (<bf/-/) marks an untrusted association, a space character
-means a partially trusted association, and a plus character (<bf/+/)
-indicates complete validity.
-
-<sect2>Sending anonymous messages via mixmaster.
-
-<p>
-You may also have configured mutt to co-operate with Mixmaster, an
-anonymous remailer. Mixmaster permits you to send your messages
-anonymously using a chain of remailers. Mixmaster support in mutt is for
-mixmaster version 2.04 (beta 45 appears to be the latest) and 2.03.
-It does not support earlier versions or the later so-called version 3 betas,
-of which the latest appears to be called 2.9b23.
-
-To use it, you'll have to obey certain restrictions. Most
-important, you cannot use the <tt/Cc/ and <tt/Bcc/ headers. To tell
-Mutt-ng to use mixmaster, you have to select a remailer chain, using
-the mix function on the compose menu.
-
-The chain selection screen is divided into two parts. In the
-(larger) upper part, you get a list of remailers you may use. In
-the lower part, you see the currently selected chain of remailers.
-
-You can navigate in the chain using the <tt/chain-prev/ and
-<tt/chain-next/ functions, which are by default bound to the left
-and right arrows and to the <tt/h/ and <tt/l/ keys (think vi
-keyboard bindings). To insert a remailer at the current chain
-position, use the <tt/insert/ function. To append a remailer behind
-the current chain position, use <tt/select-entry/ or <tt/append/.
-You can also delete entries from the chain, using the corresponding
-function. Finally, to abandon your changes, leave the menu, or
-<tt/accept/ them pressing (by default) the <tt/Return/ key.
-
-Note that different remailers do have different capabilities,
-indicated in the %c entry of the remailer menu lines (see
-<ref id="mix_entry_format"
-name="$mix_entry_format">). Most important is
-the ``middleman'' capability, indicated by a capital ``M'': This
-means that the remailer in question cannot be used as the final
-element of a chain, but will only forward messages to other
-mixmaster remailers. For details on the other capabilities, please
-have a look at the mixmaster documentation.
-
-<sect1>Forwarding and Bouncing Mail<label id="forwarding_mail">
-<p>
-
-Bouncing and forwarding let you send an existing message to recipients
-that you specify. Bouncing a message uses the <ref id="sendmail"
-name="sendmail"> command to send a copy to alternative addresses as if
-they were the message's original recipients. Forwarding a message, on
-the other hand, allows you to modify the message before it is resent
-(for example, by adding your own comments).
-
-The following keys are bound by default:
-
-<tscreen><verb>
-f forward forward message
-b bounce bounce (remail) message
-</verb></tscreen>
-
-Forwarding can be done by including the original message in the new
-message's body (surrounded by indicating lines) or including it as a MIME
-attachment, depending on the value of the <ref id="mime_forward"
-name="$mime_forward"> variable. Decoding of attachments,
-like in the pager, can be controlled by the <ref id="forward_decode"
-name="$forward_decode"> and <ref id="mime_forward_decode"
-name="$mime_forward_decode"> variables,
-respectively. The desired forwarding format may depend on the content,
-therefore <em/$mime_forward/ is a quadoption which, for
-example, can be set to ``ask-no''.
-
-The inclusion of headers is controlled by the current setting of the
-<ref id="weed" name="$weed"> variable, unless <ref
-id="mime_forward" name="mime_forward"> is set.
-
-Editing the message to forward follows the same procedure as sending or
-replying to a message does.
-
-<sect1>Postponing Mail<label id="postponing_mail">
-<p>
-
-At times it is desirable to delay sending a message that you have
-already begun to compose. When the <em/postpone-message/ function is
-used in the <em/compose/ menu, the body of your message and attachments
-are stored in the mailbox specified by the <ref id="postponed"
-name="$postponed"> variable. This means that you can recall the
-message even if you exit Mutt-ng and then restart it at a later time.
-
-Once a message is postponed, there are several ways to resume it. From the
-command line you can use the ``-p'' option, or if you <em/compose/ a new
-message from the <em/index/ or <em/pager/ you will be prompted if postponed
-messages exist. If multiple messages are currently postponed, the
-<em/postponed/ menu will pop up and you can select which message you would
-like to resume.
-
-<bf/Note:/ If you postpone a reply to a message, the reply setting of
-the message is only updated when you actually finish the message and
-send it. Also, you must be in the same folder with the message you
-replied to for the status of the message to be updated.
-
-See also the <ref id="postpone" name="$postpone"> quad-option.
-
-<sect1>Reading news via NNTP<label id="reading_news">
-<p>
-
-If compiled with ``--enable-nntp'' option, Mutt-ng can read news from
-newsserver via NNTP. You can open a newsgroup with function
-``change-newsgroup'' (default: i). Default newsserver can be obtained
-from <em/NNTPSERVER/ environment variable. Like other news readers,
-info about subscribed newsgroups is saved in file by <ref
-id="nntp_newsrc" name="$nntp_newsrc"> variable. Article
-headers are cached and can be loaded from file when
-newsgroup entered instead loading from newsserver.
-
-<sect>Configuration
-<p>
-
-While the default configuration (or ``preferences'') make Mutt-ng usable right out
-of the box, it is often desirable to tailor Mutt-ng to suit your own tastes. When
-Mutt-ng is first invoked, it will attempt to read the ``system'' configuration
-file (defaults set by your local system administrator), unless the ``-n'' <ref
-id="commandline" name="command line"> option is specified. This file is
-typically <tt>/usr/local/share/muttng/Muttngrc</tt> or <tt>/etc/Muttngrc</tt>,
-Mutt-ng users will find this file in <tt>/usr/local/share/muttng/Muttrc</tt> or
-<tt>/etc/Muttngrc</tt>. Mutt will next look for a file named <tt>.muttrc</tt>
-in your home directory, Mutt-ng will look for <tt>.muttngrc</tt>. If this file
-does not exist and your home directory has a subdirectory named <tt/.mutt/,
-mutt try to load a file named <tt>.muttng/muttngrc</tt>.
-
-<tt>.muttrc</tt> (or <tt>.muttngrc</tt> for Mutt-ng) is the file where you will
-usually place your <ref id="commands" name="commands"> to configure Mutt-ng.
-
-In addition, mutt supports version specific configuration files that are
-parsed instead of the default files as explained above. For instance, if
-your system has a <tt/Muttrc-0.88/ file in the system configuration
-directory, and you are running version 0.88 of mutt, this file will be
-sourced instead of the <tt/Muttngrc/ file. The same is true of the user
-configuration file, if you have a file <tt/.muttrc-0.88.6/ in your home
-directory, when you run mutt version 0.88.6, it will source this file
-instead of the default <tt/.muttrc/ file. The version number is the
-same which is visible using the ``-v'' <ref id="commandline"
-name="command line"> switch or using the <tt/show-version/ key (default:
-V) from the index menu.
-
-<sect1>Syntax of Initialization Files<label id="muttrc-syntax">
-<p>
-
-An initialization file consists of a series of <ref id="commands"
-name="commands">. Each line of the file may contain one or more commands.
-When multiple commands are used, they must be separated by a semicolon (;).
-<tscreen><verb>
-set realname='Mutt-ng user' ; ignore x-
-</verb></tscreen>
-The hash mark, or pound sign
-(``#''), is used as a ``comment'' character. You can use it to
-annotate your initialization file. All text after the comment character
-to the end of the line is ignored. For example,
-
-<tscreen><verb>
-my_hdr X-Disclaimer: Why are you listening to me? # This is a comment
-</verb></tscreen>
-
-Single quotes (') and double quotes (&dquot;) can be used to quote strings
-which contain spaces or other special characters. The difference between
-the two types of quotes is similar to that of many popular shell programs,
-namely that a single quote is used to specify a literal string (one that is
-not interpreted for shell variables or quoting with a backslash [see
-next paragraph]), while double quotes indicate a string for which
-should be evaluated. For example, backtics are evaluated inside of double
-quotes, but <bf/not/ for single quotes.
-
-\ quotes the next character, just as in shells such as bash and zsh.
-For example, if want to put quotes ``&dquot;'' inside of a string, you can use
-``\'' to force the next character to be a literal instead of interpreted
-character.
-<tscreen><verb>
-set realname="Michael \"MuttDude\" Elkins"
-</verb></tscreen>
-
-``\\'' means to insert a literal ``\'' into the line.
-``\n'' and ``\r'' have their usual C meanings of linefeed and
-carriage-return, respectively.
-
-A \ at the end of a line can be used to split commands over
-multiple lines, provided that the split points don't appear in the
-middle of command names.
-
-Please note that, unlike the various shells, mutt-ng interprets a ``\''
-at the end of a line also in comments. This allows you to disable a command
-split over multiple lines with only one ``#''.
-
-<tscreen><verb>
-# folder-hook . \
- set realname="Michael \"MuttDude\" Elkins"
-</verb></tscreen>
-
-When testing your config files, beware the following caveat. The backslash
-at the end of the commented line extends the current line with the next line
-- then referred to as a ``continuation line''. As the first line is
-commented with a hash (#) all following continuation lines are also
-part of a comment and therefore are ignored, too. So take care of comments
-when continuation lines are involved within your setup files!
-
-Abstract example:
-
-<tscreen><verb>
-line1\
-line2a # line2b\
-line3\
-line4
-line5
-</verb></tscreen>
-
-line1 ``continues'' until line4. however, the part after the # is a
-comment which includes line3 and line4. line5 is a new line of its own and
-thus is interpreted again.
-
-It is also possible to substitute the output of a Unix command in an
-initialization file. This is accomplished by enclosing the command in
-backquotes (``). For example,
-<tscreen><verb>
-my_hdr X-Operating-System: `uname -a`
-</verb></tscreen>
-The output of the Unix command ``uname -a'' will be substituted before the
-line is parsed. Note that since initialization files are line oriented, only
-the first line of output from the Unix command will be substituted.
-
-UNIX environments can be accessed like the way it is done in shells like
-sh and bash: Prepend the name of the environment by a ``$''. For
-example,
-<tscreen><verb>
-set record=+sent_on_$HOSTNAME
-</verb></tscreen>
-
-The commands understood by mutt are explained in the next paragraphs.
-For a complete list, see the <ref id="commands" name="command reference">.
-
-<sect1>Defining/Using aliases<label id="alias">
-<p>
-
-Usage: <tt/alias/ <em/key/ <em/address/ [ , <em/address/, ... ]
-
-It's usually very cumbersome to remember or type out the address of someone
-you are communicating with. Mutt-ng allows you to create ``aliases'' which map
-a short string to a full address.
-
-<bf/Note:/ if you want to create an alias for a group (by specifying more than
-one address), you <bf/must/ separate the addresses with a comma (``,'').
-
-To remove an alias or aliases (``*'' means all aliases):
-
-<tt/unalias/ [ * | <em/key/ <em/.../ ]
-
-<tscreen><verb>
-alias muttdude me@cs.hmc.edu (Michael Elkins)
-alias theguys manny, moe, jack
-</verb></tscreen>
-
-Unlike other mailers, Mutt-ng doesn't require aliases to be defined
-in a special file. The <tt/alias/ command can appear anywhere in
-a configuration file, as long as this file is <ref id="source"
-name="sourced">. Consequently, you can have multiple alias files, or
-you can have all aliases defined in your muttrc.
-
-On the other hand, the <ref id="create-alias" name="create-alias">
-function can use only one file, the one pointed to by the <ref
-id="alias_file" name="$alias_file"> variable (which is
-<tt>˜/.muttrc</tt> by default). This file is not special either,
-in the sense that Mutt-ng will happily append aliases to any file, but in
-order for the new aliases to take effect you need to explicitly <ref
-id="source" name="source"> this file too.
-
-For example:
-
-<tscreen><verb>
-source /usr/local/share/Mutt-ng.aliases
-source ~/.mail_aliases
-set alias_file=~/.mail_aliases
-</verb></tscreen>
-
-To use aliases, you merely use the alias at any place in mutt where mutt
-prompts for addresses, such as the <em/To:/ or <em/Cc:/ prompt. You can
-also enter aliases in your editor at the appropriate headers if you have the
-<ref id="edit_headers" name="$edit_headers"> variable set.
-
-In addition, at the various address prompts, you can use the tab character
-to expand a partial alias to the full alias. If there are multiple matches,
-mutt will bring up a menu with the matching aliases. In order to be
-presented with the full list of aliases, you must hit tab with out a partial
-alias, such as at the beginning of the prompt or after a comma denoting
-multiple addresses.
-
-In the alias menu, you can select as many aliases as you want with the
-<em/select-entry/ key (default: RET), and use the <em/exit/ key
-(default: q) to return to the address prompt.
-
-<sect1>Changing the default key bindings<label id="bind">
-<p>
-Usage: <tt/bind/ <em/map/ <em/key/ <em/function/
-
-This command allows you to change the default key bindings (operation
-invoked when pressing a key).
-
-<em/map/ specifies in which menu the binding belongs. Multiple maps may
-be specified by separating them with commas (no additional whitespace is
-allowed). The currently defined maps are:
-
-<label id="maps">
-<descrip>
-<tag/generic/
-This is not a real menu, but is used as a fallback for all of the other
-menus except for the pager and editor modes. If a key is not defined in
-another menu, Mutt-ng will look for a binding to use in this menu. This allows
-you to bind a key to a certain function in multiple menus instead of having
-multiple bind statements to accomplish the same task.
-<tag/alias/
-The alias menu is the list of your personal aliases as defined in your
-muttrc. It is the mapping from a short alias name to the full email
-address(es) of the recipient(s).
-<tag/attach/
-The attachment menu is used to access the attachments on received messages.
-<tag/browser/
-The browser is used for both browsing the local directory structure, and for
-listing all of your incoming mailboxes.
-<tag/editor/
-The editor is the line-based editor the user enters text data.
-<tag/index/
-The index is the list of messages contained in a mailbox.
-<tag/compose/
-The compose menu is the screen used when sending a new message.
-<tag/pager/
-The pager is the mode used to display message/attachment data, and help
-listings.
-<tag/pgp/
-The pgp menu is used to select the OpenPGP keys used for encrypting outgoing
-messages.
-<tag/postpone/
-The postpone menu is similar to the index menu, except is used when
-recalling a message the user was composing, but saved until later.
-</descrip>
-
-<em/key/ is the key (or key sequence) you wish to bind. To specify a
-control character, use the sequence <em/\Cx/, where <em/x/ is the
-letter of the control character (for example, to specify control-A use
-``\Ca''). Note that the case of <em/x/ as well as <em/\C/ is
-ignored, so that <em/\CA/, <em/\Ca/, <em/\cA/ and <em/\ca/ are all
-equivalent. An alternative form is to specify the key as a three digit
-octal number prefixed with a ``\'' (for example <em/\177/ is
-equivalent to <em/\c?/).
-
-In addition, <em/key/ may consist of:
-
-<tscreen><verb>
-\t tab
-<tab> tab
-\r carriage return
-\n newline
-\e escape
-<esc> escape
-<up> up arrow
-<down> down arrow
-<left> left arrow
-<right> right arrow
-<pageup> Page Up
-<pagedown> Page Down
-<backspace> Backspace
-<delete> Delete
-<insert> Insert
-<enter> Enter
-<return> Return
-<home> Home
-<end> End
-<space> Space bar
-<f1> function key 1
-<f10> function key 10
-</verb></tscreen>
-
-<em/key/ does not need to be enclosed in quotes unless it contains a
-space (`` '').
-
-<em/function/ specifies which action to take when <em/key/ is pressed.
-For a complete list of functions, see the <ref id="functions"
-name="reference">. The special function <tt/noop/ unbinds the specified key
-sequence.
-
-<sect1>Defining aliases for character sets <label id="charset-hook">
-<p>
-Usage: <tt/charset-hook/ <em/alias/ <em/charset/<newline>
-Usage: <tt/iconv-hook/ <em/charset/ <em/local-charset/
-
-The <tt/charset-hook/ command defines an alias for a character set.
-This is useful to properly display messages which are tagged with a
-character set name not known to mutt.
-
-The <tt/iconv-hook/ command defines a system-specific name for a
-character set. This is helpful when your systems character
-conversion library insists on using strange, system-specific names
-for character sets.
-
-
-<sect1>Setting variables based upon mailbox<label id="folder-hook">
-<p>
-Usage: <tt/folder-hook/ [!]<em/regexp/ <em/command/
-
-It is often desirable to change settings based on which mailbox you are
-reading. The folder-hook command provides a method by which you can execute
-any configuration command. <em/regexp/ is a regular expression specifying
-in which mailboxes to execute <em/command/ before loading. If a mailbox
-matches multiple folder-hook's, they are executed in the order given in the
-muttrc.
-
-<bf/Note:/ if you use the ``!'' shortcut for <ref id="spoolfile"
-name="$spoolfile"> at the beginning of the pattern, you must place it
-inside of double or single quotes in order to distinguish it from the
-logical <em/not/ operator for the expression.
-
-Note that the settings are <em/not/ restored when you leave the mailbox.
-For example, a command action to perform is to change the sorting method
-based upon the mailbox being read:
-
-<tscreen><verb>
-folder-hook mutt set sort=threads
-</verb></tscreen>
-
-However, the sorting method is not restored to its previous value when
-reading a different mailbox. To specify a <em/default/ command, use the
-pattern ``.'':
-
-<p>
-<tscreen><verb>
-folder-hook . set sort=date-sent
-</verb></tscreen>
-
-<sect1>Keyboard macros<label id="macro">
-<p>
-Usage: <tt/macro/ <em/menu/ <em/key/ <em/sequence/ [ <em/description/ ]
-
-Macros are useful when you would like a single key to perform a series of
-actions. When you press <em/key/ in menu <em/menu/, Mutt-ng will behave as if
-you had typed <em/sequence/. So if you have a common sequence of commands
-you type, you can create a macro to execute those commands with a single
-key.
-
-<em/menu/ is the <ref id="maps" name="map"> which the macro will be bound.
-Multiple maps may be specified by separating multiple menu arguments by
-commas. Whitespace may not be used in between the menu arguments and the
-commas separating them.
-
-<em/key/ and <em/sequence/ are expanded by the same rules as the <ref
-id="bind" name="key bindings">. There are some additions however. The
-first is that control characters in <em/sequence/ can also be specified
-as <em/ˆx/. In order to get a caret (`ˆ'') you need to use
-<em/ˆˆ/. Secondly, to specify a certain key such as <em/up/
-or to invoke a function directly, you can use the format
-<em/<key name>/ and <em/<function name>/. For a listing of key
-names see the section on <ref id="bind" name="key bindings">. Functions
-are listed in the <ref id="functions" name="function reference">.
-
-The advantage with using function names directly is that the macros will
-work regardless of the current key bindings, so they are not dependent on
-the user having particular key definitions. This makes them more robust
-and portable, and also facilitates defining of macros in files used by more
-than one user (eg. the system Muttngrc).
-
-Optionally you can specify a descriptive text after <em/sequence/,
-which is shown in the help screens.
-
-<bf/Note:/ Macro definitions (if any) listed in the help screen(s), are
-silently truncated at the screen width, and are not wrapped.
-
-<sect1>Using color and mono video attributes<label id="color">
-<p>
-Usage: <tt/color/ <em/object/ <em/foreground/ <em/background/ [ <em/regexp/ ]<newline>
-Usage: <tt/color/ index <em/foreground/ <em/background/ <em/pattern/<newline>
-Usage: <tt/uncolor/ index <em/pattern/ [ <em/pattern/ ... ]<newline>
-
-If your terminal supports color, you can spice up Mutt-ng by creating your own
-color scheme. To define the color of an object (type of information), you
-must specify both a foreground color <bf/and/ a background color (it is not
-possible to only specify one or the other).
-
-<em/object/ can be one of:
-
-<itemize>
-<item>attachment
-<item>body (match <em/regexp/ in the body of messages)
-<item>bold (highlighting bold patterns in the body of messages)
-<item>error (error messages printed by Mutt-ng)
-<item>header (match <em/regexp/ in the message header)
-<item>hdrdefault (default color of the message header in the pager)
-<item>index (match <em/pattern/ in the message index)
-<item>indicator (arrow or bar used to indicate the current item in a menu)
-<item>markers (the ``+'' markers at the beginning of wrapped lines in the pager)
-<item>message (informational messages)
-<item>normal
-<item>quoted (text matching <ref id="quote_regexp"
-name="$quote_regexp"> in the body of a message)
-<item>quoted1, quoted2, ..., quoted<bf/N/ (higher levels of quoting)
-<item>search (highlighting of words in the pager)
-<item>signature
-<item>status (mode lines used to display info about the mailbox or message)
-<item>tilde (the ``˜'' used to pad blank lines in the pager)
-<item>tree (thread tree drawn in the message index and attachment menu)
-<item>underline (highlighting underlined patterns in the body of messages)
-</itemize>
-
-<em/foreground/ and <em/background/ can be one of the following:
-
-<itemize>
-<item>white
-<item>black
-<item>green
-<item>magenta
-<item>blue
-<item>cyan
-<item>yellow
-<item>red
-<item>default
-<item>color<em/x/
-</itemize>
-
-<em/foreground/ can optionally be prefixed with the keyword <tt/bright/ to make
-the foreground color boldfaced (e.g., <tt/brightred/).
-
-If your terminal supports it, the special keyword <em/default/ can be
-used as a transparent color. The value <em/brightdefault/ is also valid.
-If Mutt-ng is linked against the <em/S-Lang/ library, you also need to set
-the <em/COLORFGBG/ environment variable to the default colors of your
-terminal for this to work; for example (for Bourne-like shells):
-
-<tscreen><verb>
-set COLORFGBG="green;black"
-export COLORFGBG
-</verb></tscreen>
-
-<bf/Note:/ The <em/S-Lang/ library requires you to use the <em/lightgray/
-and <em/brown/ keywords instead of <em/white/ and <em/yellow/ when
-setting this variable.
-
-<bf/Note:/ The uncolor command can be applied to the index object only. It
-removes entries from the list. You <bf/must/ specify the same pattern
-specified in the color command for it to be removed. The pattern ``*'' is
-a special token which means to clear the color index list of all entries.
-
-Mutt-ng also recognizes the keywords <em/color0/, <em/color1/, …,
-<em/color/<bf/N-1/ (<bf/N/ being the number of colors supported
-by your terminal). This is useful when you remap the colors for your
-display (for example by changing the color associated with <em/color2/
-for your xterm), since color names may then lose their normal meaning.
-
-If your terminal does not support color, it is still possible change the video
-attributes through the use of the ``mono'' command:
-
-Usage: <tt/mono/ <em/<object> <attribute>/ [ <em/regexp/ ]<newline>
-Usage: <tt/mono/ index <em/attribute/ <em/pattern/<newline>
-Usage: <tt/unmono/ index <em/pattern/ [ <em/pattern/ ... ]<newline>
-
-where <em/attribute/ is one of the following:
-
-<itemize>
-<item>none
-<item>bold
-<item>underline
-<item>reverse
-<item>standout
-</itemize>
-
-<sect1>Ignoring (weeding) unwanted message headers<label id="ignore">
-<p>
-Usage: <tt/[un]ignore/ <em/pattern/ [ <em/pattern/ ... ]
-
-Messages often have many header fields added by automatic processing systems,
-or which may not seem useful to display on the screen. This command allows
-you to specify header fields which you don't normally want to see.
-
-You do not need to specify the full header field name. For example,
-``ignore content-'' will ignore all header fields that begin with the pattern
-``content-''. ``ignore *'' will ignore all headers.
-
-To remove a previously added token from the list, use the ``unignore'' command.
-The ``unignore'' command will make Mutt-ng display headers with the given pattern.
-For example, if you do ``ignore x-'' it is possible to ``unignore x-mailer''.
-
-``unignore *'' will remove all tokens from the ignore list.
-
-For example:
-<tscreen><verb>
-# Sven's draconian header weeding
-ignore *
-unignore from date subject to cc
-unignore organization organisation x-mailer: x-newsreader: x-mailing-list:
-unignore posted-to:
-</verb></tscreen>
-
-<sect1>Alternative addresses<label id="alternates">
-<p>
-Usage: <tt/[un]alternates/ <em/regexp/ [ <em/regexp/ ... ]<newline>
-
-With various functions, mutt will treat messages differently,
-depending on whether you sent them or whether you received them from
-someone else. For instance, when replying to a message that you
-sent to a different party, mutt will automatically suggest to send
-the response to the original message's recipients -- responding to
-yourself won't make much sense in many cases. (See <ref
-id="reply_to" name="$reply_to">.)
-
-Many users receive e-mail under a number of different addresses. To
-fully use mutt's features here, the program must be able to
-recognize what e-mail addresses you receive mail under. That's the
-purpose of the <tt/alternates/ command: It takes a list of regular
-expressions, each of which can identify an address under which you
-receive e-mail.
-
-The <tt/unalternates/ command can be used to write exceptions to
-<tt/alternates/ patterns. If an address matches something in an
-<tt/alternates/ command, but you nonetheless do not think it is
-from you, you can list a more precise pattern under an <tt/unalternates/
-command.
-
-To remove a regular expression from the <tt/alternates/ list, use the
-<tt/unalternates/ command with exactly the same <em/regexp/.
-Likewise, if the <em/regexp/ for a <tt/alternates/ command matches
-an entry on the <tt/unalternates/ list, that <tt/unalternates/
-entry will be removed. If the <em/regexp/ for <tt/unalternates/
-is ``*'', <em/all entries/ on <tt/alternates/ will be removed.
-
-<sect1>Mailing lists<label id="lists">
-<p>
-Usage: <tt/[un]lists/ <em/regexp/ [ <em/regexp/ ... ]<newline>
-Usage: <tt/[un]subscribe/ <em/regexp/ [ <em/regexp/ ... ]
-
-Mutt-ng has a few nice features for <ref id="using_lists" name="handling
-mailing lists">. In order to take advantage of them, you must
-specify which addresses belong to mailing lists, and which mailing
-lists you are subscribed to. Once you have done this, the <ref
-id="list-reply" name="list-reply"> function will work for all known lists.
-Additionally, when you send a message to a subscribed list, mutt will
-add a Mail-Followup-To header to tell other users' mail user agents
-not to send copies of replies to your personal address. Note that
-the Mail-Followup-To header is a non-standard extension which is not
-supported by all mail user agents. Adding it is not bullet-proof against
-receiving personal CCs of list messages. Also note that the generation
-of the Mail-Followup-To header is controlled by the <ref id="followup_to"
-name="$followup_to"> configuration variable.
-
-More precisely, Mutt-ng maintains lists of patterns for the addresses
-of known and subscribed mailing lists. Every subscribed mailing
-list is known. To mark a mailing list as known, use the ``lists''
-command. To mark it as subscribed, use ``subscribe''.
-
-You can use regular expressions with both commands. To mark all
-messages sent to a specific bug report's address on mutt's bug
-tracking system as list mail, for instance, you could say
-``subscribe [0-9]*@bugs.guug.de''. Often, it's sufficient to just
-give a portion of the list's e-mail address.
-
-Specify as much of the address as you need to to remove ambiguity. For
-example, if you've subscribed to the Mutt-ng mailing list, you will receive mail
-addressed to <em/mutt-users@mutt.org/. So, to tell Mutt-ng that this is a
-mailing list, you could add ``lists mutt-users'' to your
-initialization file. To tell mutt that you are subscribed to it,
-add ``subscribe mutt-users'' to your initialization file instead.
-If you also happen to get mail from someone whose address is
-<em/mutt-users@example.com/, you could use ``lists mutt-users@mutt\\.org''
-or ``subscribe mutt-users@mutt\\.org'' to
-match only mail from the actual list.
-
-The ``unlists'' command is used to remove a token from the list of
-known and subscribed mailing-lists. Use ``unlists *'' to remove all
-tokens.
-
-To remove a mailing list from the list of subscribed mailing lists,
-but keep it on the list of known mailing lists, use ``unsubscribe''.
-
-<sect1>Using Multiple spool mailboxes<label id="mbox-hook">
-<p>
-Usage: <tt/mbox-hook/ [!]<em/pattern/ <em/mailbox/
-
-This command is used to move read messages from a specified mailbox to a
-different mailbox automatically when you quit or change folders.
-<em/pattern/ is a regular expression specifying the mailbox to treat as a
-``spool'' mailbox and <em/mailbox/ specifies where mail should be saved when
-read.
-
-Unlike some of the other <em/hook/ commands, only the <em/first/ matching
-pattern is used (it is not possible to save read mail in more than a single
-mailbox).
-
-<sect1>Defining mailboxes which receive mail<label id="mailboxes">
-<p>
-Usage: <tt/[un]mailboxes/ [!]<em/filename/ [ <em/filename/ ... ]
-
-This command specifies folders which can receive mail and
-which will be checked for new messages. By default, the
-main menu status bar displays how many of these folders have
-new messages.
-<p>
-When changing folders, pressing <em/space/ will cycle
-through folders with new mail.
-<p>
-Pressing TAB in the directory browser will bring up a menu showing the files
-specified by the <tt/mailboxes/ command, and indicate which contain new
-messages. Mutt-ng will automatically enter this mode when invoked from the
-command line with the <tt/-y/ option.
-
-The ``unmailboxes'' command is used to remove a token from the list
-of folders which receive mail. Use ``unmailboxes *'' to remove all
-tokens.
-
-<p>
-<bf/Note:/ new mail is detected by comparing the last modification time to
-the last access time. Utilities like <tt/biff/ or <tt/frm/ or any other
-program which accesses the mailbox might cause Mutt-ng to never detect new mail
-for that mailbox if they do not properly reset the access time. Backup
-tools are another common reason for updated access times.
-<p>
-
-<bf/Note:/ the filenames in the <tt/mailboxes/ command are resolved when
-the command is executed, so if these names contain <ref id="shortcuts"
-name="shortcut characters"> (such as ``='' and ``!''), any variable
-definition that affect these characters (like <ref id="folder"
-name="$folder"> and <ref id="spoolfile" name="$spoolfile">)
-should be executed before the <tt/mailboxes/ command.
-
-<sect1>User defined headers<label id="my_hdr">
-<p>
-Usage:<newline>
-<tt/my_hdr/ <em/string/<newline>
-<tt/unmy_hdr/ <em/field/ [ <em/field/ ... ]
-
-The ``my_hdr'' command allows you to create your own header
-fields which will be added to every message you send.
-
-For example, if you would like to add an ``Organization:'' header field to
-all of your outgoing messages, you can put the command
-
-<quote>
-my_hdr Organization: A Really Big Company, Anytown, USA
-</quote>
-
-in your <tt/.muttrc/.
-
-<bf/Note:/ space characters are <em/not/ allowed between the keyword and
-the colon (``:''). The standard for electronic mail (RFC822) says that
-space is illegal there, so Mutt-ng enforces the rule.
-
-If you would like to add a header field to a single message, you should
-either set the <ref id="edit_headers" name="edit_headers"> variable,
-or use the <em/edit-headers/ function (default: ``E'') in the send-menu so
-that you can edit the header of your message along with the body.
-
-To remove user defined header fields, use the ``unmy_hdr''
-command. You may specify an asterisk (``*'') to remove all header
-fields, or the fields to remove. For example, to remove all ``To'' and
-``Cc'' header fields, you could use:
-
-<quote>
-unmy_hdr to cc
-</quote>
-
-<sect1>Defining the order of headers when viewing messages<label id="hdr_order">
-<p>
-Usage: <tt/hdr_order/ <em/header1/ <em/header2/ <em/header3/
-
-With this command, you can specify an order in which mutt will attempt
-to present headers to you when viewing messages.
-
-``unhdr_order *'' will clear all previous headers from the order list,
-thus removing the header order effects set by the system-wide startup
-file.
-
-<tscreen><verb>
-hdr_order From Date: From: To: Cc: Subject:
-</verb></tscreen>
-
-<sect1>Specify default save filename<label id="save-hook">
-<p>
-Usage: <tt/save-hook/ [!]<em/pattern/ <em/filename/
-
-This command is used to override the default filename used when saving
-messages. <em/filename/ will be used as the default filename if the message is
-<em/From:/ an address matching <em/regexp/ or if you are the author and the
-message is addressed <em/to:/ something matching <em/regexp/.
-
-See <ref id="pattern_hook" name="Message Matching in Hooks"> for information on the exact format of <em/pattern/.
-
-Examples:
-
-<tscreen><verb>
-save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins
-save-hook aol\\.com$ +spam
-</verb></tscreen>
-
-Also see the <ref id="fcc-save-hook" name="fcc-save-hook"> command.
-
-<sect1>Specify default Fcc: mailbox when composing<label id="fcc-hook">
-<p>
-Usage: <tt/fcc-hook/ [!]<em/pattern/ <em/mailbox/
-
-This command is used to save outgoing mail in a mailbox other than
-<ref id="record" name="$record">. Mutt-ng searches the initial list of
-message recipients for the first matching <em/regexp/ and uses <em/mailbox/
-as the default Fcc: mailbox. If no match is found the message will be saved
-to <ref id="record" name="$record"> mailbox.
-
-See <ref id="pattern_hook" name="Message Matching in Hooks"> for information on the exact format of <em/pattern/.
-
-Example: <tt/fcc-hook [@.]aol\\.com$ +spammers/
-
-The above will save a copy of all messages going to the aol.com domain to
-the `+spammers' mailbox by default. Also see the <ref id="fcc-save-hook"
-name="fcc-save-hook"> command.
-
-<sect1>Specify default save filename and default Fcc: mailbox at once<label
-id="fcc-save-hook">
-<p>
-Usage: <tt/fcc-save-hook/ [!]<em/pattern/ <em/mailbox/
-
-This command is a shortcut, equivalent to doing both a <ref id="fcc-hook" name="fcc-hook">
-and a <ref id="save-hook" name="save-hook"> with its arguments.
-
-<sect1>Change settings based upon message recipients<label id="send-hook"><label id="reply-hook"><label id="send2-hook">
-<p>
-Usage: <tt/reply-hook/ [!]<em/pattern/ <em/command/<newline>
-Usage: <tt/send-hook/ [!]<em/pattern/ <em/command/<newline>
-Usage: <tt/send2-hook/ [!]<em/pattern/ <em/command/
-
-These commands can be used to execute arbitrary configuration commands based
-upon recipients of the message. <em/pattern/ is a regular expression
-matching the desired address. <em/command/ is executed when <em/regexp/
-matches recipients of the message.
-
-<tt/reply-hook/ is matched against the message you are <em/replying/
-<bf/to/, instead of the message you are <em/sending/. <tt/send-hook/ is
-matched against all messages, both <em/new/ and <em/replies/. <bf/Note:/
-<tt/reply-hook/s are matched <bf/before/ the <tt/send-hook/, <bf/regardless/
-of the order specified in the users's configuration file.
-
-<tt/send2-hook/ is matched every time a message is changed, either
-by editing it, or by using the compose menu to change its recipients
-or subject. <tt/send2-hook/ is executed after <tt/send-hook/, and
-can, e.g., be used to set parameters such as the <ref id="sendmail"
-name="$sendmail"> variable depending on the message's sender
-address.
-
-For each type of <tt/send-hook/ or <tt/reply-hook/, when multiple matches
-occur, commands are executed in the order they are specified in the muttrc
-(for that type of hook).
-
-See <ref id="pattern_hook" name="Message Matching in Hooks"> for information on the exact format of <em/pattern/.
-
-Example: <tt/send-hook mutt &dquot;set mime_forward signature=''&dquot;/
-
-Another typical use for this command is to change the values of the
-<ref id="attribution" name="$attribution">, <ref id="signature"
-name="$signature"> and <ref id="locale" name="$locale">
-variables in order to change the language of the attributions and
-signatures based upon the recipients.
-
-<bf/Note:/ the send-hook's are only executed ONCE after getting the initial
-list of recipients. Adding a recipient after replying or editing the
-message will NOT cause any send-hook to be executed. Also note that
-my_hdr commands which modify recipient headers, or the message's
-subject, don't have any effect on the current message when executed
-from a send-hook.
-
-<sect1>Change settings before formatting a message<label id="message-hook">
-<p>
-Usage: <tt/message-hook/ [!]<em/pattern/ <em/command/
-
-This command can be used to execute arbitrary configuration commands
-before viewing or formatting a message based upon information about the message.
-<em/command/ is executed if the <em/pattern/ matches the message to be
-displayed. When multiple matches occur, commands are executed in the order
-they are specified in the muttrc.
-
-See <ref id="pattern_hook" name="Message Matching in Hooks"> for
-information on the exact format of <em/pattern/.
-
-Example:
-<tscreen><verb>
-message-hook ~A 'set pager=builtin'
-message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject: .*\""'
-</verb></tscreen>
-
-<sect1>Choosing the cryptographic key of the recipient<label id="crypt-hook">
-<p>
-Usage: <tt/crypt-hook/ <em/pattern/ <em/keyid/
-
-When encrypting messages with PGP or OpenSSL, you may want to associate a certain
-key with a given e-mail address automatically, either because the
-recipient's public key can't be deduced from the destination address,
-or because, for some reasons, you need to override the key Mutt-ng would
-normally use. The crypt-hook command provides a method by which you can
-specify the ID of the public key to be used when encrypting messages to
-a certain recipient.
-
-The meaning of "key id" is to be taken broadly in this context: You
-can either put a numerical key ID here, an e-mail address, or even
-just a real name.
-
-<sect1>Adding key sequences to the keyboard buffer<label id="push">
-<p>
-Usage: <tt/push/ <em/string/
-
-This command adds the named string to the keyboard buffer. The string may
-contain control characters, key names and function names like the sequence
-string in the <ref id="macro" name="macro"> command. You may use it to
-automatically run a sequence of commands at startup, or when entering
-certain folders.
-
-<sect1>Executing functions<label id="exec">
-<p>
-Usage: <tt/exec/ <em/function/ [ <em/function/ ... ]
-
-This command can be used to execute any function. Functions are
-listed in the <ref id="functions" name="function reference">.
-``exec function'' is equivalent to ``push <function>''.
-
-<sect1>Message Scoring<label id="score-command">
-<p>
-Usage: <tt/score/ <em/pattern/ <em/value/<newline>
-Usage: <tt/unscore/ <em/pattern/ [ <em/pattern/ ... ]
-
-The <tt/score/ commands adds <em/value/ to a message's score if <em/pattern/
-matches it. <em/pattern/ is a string in the format described in the <ref
-id="patterns" name="patterns"> section (note: For efficiency reasons, patterns
-which scan information not available in the index, such as <tt>˜b</tt>,
-<tt>˜B</tt> or <tt>˜h</tt>, may not be used). <em/value/ is a
-positive or negative integer. A message's final score is the sum total of all
-matching <tt/score/ entries. However, you may optionally prefix <em/value/ with
-an equal sign (=) to cause evaluation to stop at a particular entry if there is
-a match. Negative final scores are rounded up to 0.
-
-The <tt/unscore/ command removes score entries from the list. You <bf/must/
-specify the same pattern specified in the <tt/score/ command for it to be
-removed. The pattern ``*'' is a special token which means to clear the list
-of all score entries.
-
-<sect1>Spam detection<label id="spam">
-<p>
-Usage: <tt/spam/ <em/pattern/ <em/format/<newline>
-Usage: <tt/nospam/ <em/pattern/
-
-Mutt-ng has generalized support for external spam-scoring filters.
-By defining your spam patterns with the <tt/spam/ and <tt/nospam/
-commands, you can <em/limit/, <em/search/, and <em/sort/ your
-mail based on its spam attributes, as determined by the external
-filter. You also can display the spam attributes in your index
-display using the <tt/%H/ selector in the <ref id="index_format"
-name="$index_format"> variable. (Tip: try <tt/%?H?[%H] ?/
-to display spam tags only when they are defined for a given message.)
-
-Your first step is to define your external filter's spam patterns using
-the <tt/spam/ command. <em/pattern/ should be a regular expression
-that matches a header in a mail message. If any message in the mailbox
-matches this regular expression, it will receive a ``spam tag'' or
-``spam attribute'' (unless it also matches a <tt/nospam/ pattern -- see
-below.) The appearance of this attribute is entirely up to you, and is
-governed by the <em/format/ parameter. <em/format/ can be any static
-text, but it also can include back-references from the <em/pattern/
-expression. (A regular expression ``back-reference'' refers to a
-sub-expression contained within parentheses.) <tt/%1/ is replaced with
-the first back-reference in the regex, <tt/%2/ with the second, etc.
-
-If you're using multiple spam filters, a message can have more than
-one spam-related header. You can define <tt/spam/ patterns for each
-filter you use. If a message matches two or more of these patterns, and
-the $spam_separator variable is set to a string, then the
-message's spam tag will consist of all the <em/format/ strings joined
-together, with the value of $spam_separator separating
-them.
-
-For example, suppose I use DCC, SpamAssassin, and PureMessage. I might
-define these spam settings:
-<tscreen><verb>
-spam "X-DCC-.*-Metrics:.*(....)=many" "90+/DCC-%1"
-spam "X-Spam-Status: Yes" "90+/SA"
-spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM"
-set spam_separator=", "
-</verb></tscreen>
-
-If I then received a message that DCC registered with ``many'' hits
-under the ``Fuz2'' checksum, and that PureMessage registered with a
-97% probability of being spam, that message's spam tag would read
-<tt>90+/DCC-Fuz2, 97/PM</tt>. (The four characters before ``=many'' in a
-DCC report indicate the checksum used -- in this case, ``Fuz2''.)
-
-If the $spam_separator variable is unset, then each
-spam pattern match supersedes the previous one. Instead of getting
-joined <em/format/ strings, you'll get only the last one to match.
-
-The spam tag is what will be displayed in the index when you use
-<tt/%H/ in the <tt/$index_format/ variable. It's also the
-string that the <tt/~H/ pattern-matching expression matches against for
-<em/search/ and <em/limit/ functions. And it's what sorting by spam
-attribute will use as a sort key.
-
-That's a pretty complicated example, and most people's actual
-environments will have only one spam filter. The simpler your
-configuration, the more effective mutt can be, especially when it comes
-to sorting.
-
-Generally, when you sort by spam tag, mutt will sort <em/lexically/ --
-that is, by ordering strings alphnumerically. However, if a spam tag
-begins with a number, mutt will sort numerically first, and lexically
-only when two numbers are equal in value. (This is like UNIX's
-<tt/sort -n/.) A message with no spam attributes at all -- that is, one
-that didn't match <em/any/ of your <tt/spam/ patterns -- is sorted at
-lowest priority. Numbers are sorted next, beginning with 0 and ranging
-upward. Finally, non-numeric strings are sorted, with ``a'' taking lower
-priority than ``z''. Clearly, in general, sorting by spam tags is most
-effective when you can coerce your filter to give you a raw number. But
-in case you can't, mutt can still do something useful.
-
-The <tt/nospam/ command can be used to write exceptions to <tt/spam/
-patterns. If a header pattern matches something in a <tt/spam/ command,
-but you nonetheless do not want it to receive a spam tag, you can list a
-more precise pattern under a <tt/nospam/ command.
-
-If the <em/pattern/ given to <tt/nospam/ is exactly the same as the
-<em/pattern/ on an existing <tt/spam/ list entry, the effect will be to
-remove the entry from the spam list, instead of adding an exception.
-Likewise, if the <em/pattern/ for a <tt/spam/ command matches an entry
-on the <tt/nospam/ list, that <tt/nospam/ entry will be removed. If the
-<em/pattern/ for <tt/nospam/ is ``*'', <em/all entries on both lists/
-will be removed. This might be the default action if you use <tt/spam/
-and <tt/nospam/ in conjunction with a <tt/folder-hook/.
-
-You can have as many <tt/spam/ or <tt/nospam/ commands as you like.
-You can even do your own primitive spam detection within mutt -- for
-example, if you consider all mail from <tt/MAILER-DAEMON/ to be spam,
-you can use a <tt/spam/ command like this:
-
-<tscreen><verb>
-spam "^From: .*MAILER-DAEMON" "999"
-</verb></tscreen>
-
-
-<sect1>Setting variables<label id="set">
-<p>
-Usage: <tt/set/ [no|inv]<em/variable/[=<em/value/] [ <em/variable/ ... ]<newline>
-Usage: <tt/toggle/ <em/variable/ [<em/variable/ ... ]<newline>
-Usage: <tt/unset/ <em/variable/ [<em/variable/ ... ]<newline>
-Usage: <tt/reset/ <em/variable/ [<em/variable/ ... ]
-
-This command is used to set (and unset) <ref id="variables"
-name="configuration variables">. There are four basic types of variables:
-boolean, number, string and quadoption. <em/boolean/ variables can be
-<em/set/ (true) or <em/unset/ (false). <em/number/ variables can be
-assigned a positive integer value.
-
-<em/string/ variables consist of any number of printable characters.
-<em/strings/ must be enclosed in quotes if they contain spaces or tabs. You
-may also use the ``C'' escape sequences <bf/\n/ and <bf/\t/ for
-newline and tab, respectively.
-
-<em/quadoption/ variables are used to control whether or not to be prompted
-for certain actions, or to specify a default action. A value of <em/yes/
-will cause the action to be carried out automatically as if you had answered
-yes to the question. Similarly, a value of <em/no/ will cause the the
-action to be carried out as if you had answered ``no.'' A value of
-<em/ask-yes/ will cause a prompt with a default answer of ``yes'' and
-<em/ask-no/ will provide a default answer of ``no.''
-
-Prefixing a variable with ``no'' will unset it. Example: <tt/set noaskbcc/.
-
-For <em/boolean/ variables, you may optionally prefix the variable name with
-<tt/inv/ to toggle the value (on or off). This is useful when writing
-macros. Example: <tt/set invsmart_wrap/.
-
-The <tt/toggle/ command automatically prepends the <tt/inv/ prefix to all
-specified variables.
-
-The <tt/unset/ command automatically prepends the <tt/no/ prefix to all
-specified variables.
-
-Using the enter-command function in the <em/index/ menu, you can query the
-value of a variable by prefixing the name of the variable with a question
-mark:
-
-<tscreen><verb>
-set ?allow_8bit
-</verb></tscreen>
-
-The question mark is actually only required for boolean and quadoption
-variables.
-
-The <tt/reset/ command resets all given variables to the compile time
-defaults (hopefully mentioned in this manual). If you use the command
-<tt/set/ and prefix the variable with ``&'' this has the same
-behavior as the reset command.
-
-With the <tt/reset/ command there exists the special variable ``all'',
-which allows you to reset all variables to their system defaults.
-
-<sect1>Reading initialization commands from another file<label id="source">
-<p>
-Usage: <tt/source/ <em/filename/ [ <em/filename/ ... ]
-
-This command allows the inclusion of initialization commands
-from other files. For example, I place all of my aliases in
-<tt>˜/.mail_aliases</tt> so that I can make my
-<tt>˜/.muttrc</tt> readable and keep my aliases private.
-
-If the filename begins with a tilde (``˜''), it will be expanded to the
-path of your home directory.
-
-If the filename ends with a vertical bar (|), then <em/filename/ is
-considered to be an executable program from which to read input (eg.
-<tt>source ~/bin/myscript|</tt>).
-
-<sect1>Configuring features conditionally<label id="ifdef">
-<p>
-Usage: <tt/ifdef/ <em/item/ <em/command/<newline>
-Usage: <tt/ifndef/ <em/item/ <em/command/
-
-<p>
-These commands allow testing for a variable, function or certain feature
-being available or not respectively, before actually executing the
-command given.
-
-<p>
-<tt/ifdef/ (short for ``if defined'') only executes the command upon
-availability while <tt/ifndef/ (short for ``if not defined'') does if
-not. The <em/command/ may be any valid fraction of a configuration file.
-
-<p>
-All names of variables, functions and menus may be tested. Additionally, the
-following compile-features may be tested when prefixed with
-'<tt/feature_/':
-<tt/ncurses/, <tt/slang/, <tt/iconv/, <tt/idn/, <tt/dotlock/,
-<tt/standalone/, <tt/pop/, <tt/nntp/, <tt/imap/, <tt/ssl/, <tt/gnutls/,
-<tt/sasl/, <tt/sasl2/, <tt/libesmtp/, <tt/compressed/, <tt/color/,
-<tt/classic_pgp/, <tt/classic_smime/, <tt/gpgme/, <tt/header_cache/,
-<tt/gdbm/, <tt/qdbm/ and <tt/db4/.
-
-<p>
-Examples follow.
-
-<p>
-To only source a file with IMAP related settings if IMAP support is
-compiled in, use:
-<tscreen><verb>
-ifdef feature_imap 'source ~/.mutt-ng/imap_setup'
-# or
-# ifdef imap_user 'source ~/.mutt-ng/imap_setup'
-# or
-# ...
-</verb></tscreen>
-
-<p>
-To exit mutt-ng directly if no NNTP support is compiled in:
-<tscreen><verb>
-ifndef feature_nntp 'push q'
-# or
-# ifndef newsrc 'push q'
-# or
-# ...
-</verb></tscreen>
-
-<p>
-To only set the <ref id="imap_mail_check"
-name="$imap_mail_check"> variable if
-the system's mutt-ng is aware of it, use:
-<tscreen><verb>
-ifdef imap_mail_check 'set imap_mail_check=500'
-</verb></tscreen>
-
-<sect1>Removing hooks<label id="unhook">
-<p>
-Usage: <tt/unhook/ [ * | <em/hook-type/ ]
-
-This command permits you to flush hooks you have previously defined.
-You can either remove all hooks by giving the ``*'' character as an
-argument, or you can remove all hooks of a specific type by saying
-something like <tt/unhook send-hook/.
-
-<sect>Advanced Usage
-
-<sect1>Regular Expressions<label id="regexp">
-<p>
-All string patterns in Mutt-ng including those in more complex
-<ref id="patterns" name="patterns"> must be specified
-using regular expressions (regexp) in the ``POSIX extended'' syntax (which
-is more or less the syntax used by egrep and GNU awk). For your
-convenience, we have included below a brief description of this syntax.
-
-The search is case sensitive if the pattern contains at least one upper
-case letter, and case insensitive otherwise. Note that ``\''
-must be quoted if used for a regular expression in an initialization
-command: ``\\''.
-
-A regular expression is a pattern that describes a set of strings.
-Regular expressions are constructed analogously to arithmetic
-expressions, by using various operators to combine smaller expressions.
-
-Note that the regular expression can be enclosed/delimited by either &dquot;
-or ' which is useful if the regular expression includes a white-space
-character. See <ref id="muttrc-syntax" name="Syntax of Initialization Files">
-for more information on &dquot; and ' delimiter processing. To match a
-literal &dquot; or ' you must preface it with \ (backslash).
-
-The fundamental building blocks are the regular expressions that match
-a single character. Most characters, including all letters and digits,
-are regular expressions that match themselves. Any metacharacter with
-special meaning may be quoted by preceding it with a backslash.
-
-The period ``.'' matches any single character. The caret ``ˆ'' and
-the dollar sign ``&dollar'' are metacharacters that respectively match
-the empty string at the beginning and end of a line.
-
-A list of characters enclosed by ``['' and ``]'' matches any
-single character in that list; if the first character of the list
-is a caret ``ˆ'' then it matches any character <bf/not/ in the
-list. For example, the regular expression <bf/[0123456789]/
-matches any single digit. A range of ASCII characters may be specified
-by giving the first and last characters, separated by a hyphen
-``-''. Most metacharacters lose their special meaning inside
-lists. To include a literal ``]'' place it first in the list.
-Similarly, to include a literal ``ˆ'' place it anywhere but first.
-Finally, to include a literal hyphen ``-'' place it last.
-
-Certain named classes of characters are predefined. Character classes
-consist of ``[:'', a keyword denoting the class, and ``:]''.
-The following classes are defined by the POSIX standard:
-
-<descrip>
-<tag/[:alnum:]/
-Alphanumeric characters.
-<tag/[:alpha:]/
-Alphabetic characters.
-<tag/[:blank:]/
-Space or tab characters.
-<tag/[:cntrl:]/
-Control characters.
-<tag/[:digit:]/
-Numeric characters.
-<tag/[:graph:]/
-Characters that are both printable and visible. (A space is printable,
-but not visible, while an ``a'' is both.)
-<tag/[:lower:]/
-Lower-case alphabetic characters.
-<tag/[:print:]/
-Printable characters (characters that are not control characters.)
-<tag/[:punct:]/
-Punctuation characters (characters that are not letter, digits, control
-characters, or space characters).
-<tag/[:space:]/
-Space characters (such as space, tab and formfeed, to name a few).
-<tag/[:upper:]/
-Upper-case alphabetic characters.
-<tag/[:xdigit:]/
-Characters that are hexadecimal digits.
-</descrip>
-
-A character class is only valid in a regular expression inside the
-brackets of a character list. Note that the brackets in these
-class names are part of the symbolic names, and must be included
-in addition to the brackets delimiting the bracket list. For
-example, <bf/[[:digit:]]/ is equivalent to
-<bf/[0-9]/.
-
-Two additional special sequences can appear in character lists. These
-apply to non-ASCII character sets, which can have single symbols (called
-collating elements) that are represented with more than one character,
-as well as several characters that are equivalent for collating or
-sorting purposes:
-
-<descrip>
-<tag/Collating Symbols/
-A collating symbol is a multi-character collating element enclosed in
-``[.'' and ``.]''. For example, if ``ch'' is a collating
-element, then <bf/[[.ch.]]/ is a regexp that matches
-this collating element, while <bf/[ch]/ is a regexp that
-matches either ``c'' or ``h''.
-<tag/Equivalence Classes/
-An equivalence class is a locale-specific name for a list of
-characters that are equivalent. The name is enclosed in ``[=''
-and ``=]''. For example, the name ``e'' might be used to
-represent all of ``è'' ``é'' and ``e''. In this case,
-<bf/[[=e=]]/ is a regexp that matches any of
-``è'', ``é'' and ``e''.
-</descrip>
-
-A regular expression matching a single character may be followed by one
-of several repetition operators:
-
-<descrip>
-<tag/?/
-The preceding item is optional and matched at most once.
-<tag/*/
-The preceding item will be matched zero or more times.
-<tag/+/
-The preceding item will be matched one or more times.
-<tag/{n}/
-The preceding item is matched exactly <em/n/ times.
-<tag/{n,}/
-The preceding item is matched <em/n/ or more times.
-<tag/{,m}/
-The preceding item is matched at most <em/m/ times.
-<tag/{n,m}/
-The preceding item is matched at least <em/n/ times, but no more than
-<em/m/ times.
-</descrip>
-
-Two regular expressions may be concatenated; the resulting regular
-expression matches any string formed by concatenating two substrings
-that respectively match the concatenated subexpressions.
-
-Two regular expressions may be joined by the infix operator ``|'';
-the resulting regular expression matches any string matching either
-subexpression.
-
-Repetition takes precedence over concatenation, which in turn takes
-precedence over alternation. A whole subexpression may be enclosed in
-parentheses to override these precedence rules.
-
-<bf/Note:/ If you compile Mutt-ng with the GNU <em/rx/ package, the
-following operators may also be used in regular expressions:
-
-<descrip>
-<tag/\\y/
-Matches the empty string at either the beginning or the end of a word.
-<tag/\\B/
-Matches the empty string within a word.
-<tag/\\</
-Matches the empty string at the beginning of a word.
-<tag/\\>/
-Matches the empty string at the end of a word.
-<tag/\\w/
-Matches any word-constituent character (letter, digit, or underscore).
-<tag/\\W/
-Matches any character that is not word-constituent.
-<tag/\\`/
-Matches the empty string at the beginning of a buffer (string).
-<tag/\\'/
-Matches the empty string at the end of a buffer.
-</descrip>
-
-Please note however that these operators are not defined by POSIX, so
-they may or may not be available in stock libraries on various systems.
-
-<sect1>Patterns<label id="patterns">
-<p>
-Many of Mutt-ng's commands allow you to specify a pattern to match
-(limit, tag-pattern, delete-pattern, etc.). There are several ways to select
-messages:
-
-<tscreen><verb>
-~A all messages
-~b EXPR messages which contain EXPR in the message body
-~B EXPR messages which contain EXPR in the whole message
-~c USER messages carbon-copied to USER
-~C EXPR message is either to: or cc: EXPR
-~D deleted messages
-~d [MIN]-[MAX] messages with ``date-sent'' in a Date range
-~E expired messages
-~e EXPR message which contains EXPR in the ``Sender'' field
-~F flagged messages
-~f USER messages originating from USER
-~g cryptographically signed messages
-~G cryptographically encrypted messages
-~H EXPR messages with a spam attribute matching EXPR
-~h EXPR messages which contain EXPR in the message header
-~k message contains PGP key material
-~i ID message which match ID in the ``Message-ID'' field
-~L EXPR message is either originated or received by EXPR
-~l message is addressed to a known mailing list
-~m [MIN]-[MAX] message in the range MIN to MAX *)
-~n [MIN]-[MAX] messages with a score in the range MIN to MAX *)
-~N new messages
-~O old messages
-~p message is addressed to you (consults alternates)
-~P message is from you (consults alternates)
-~Q messages which have been replied to
-~R read messages
-~r [MIN]-[MAX] messages with ``date-received'' in a Date range
-~S superseded messages
-~s SUBJECT messages having SUBJECT in the ``Subject'' field.
-~T tagged messages
-~t USER messages addressed to USER
-~U unread messages
-~v message is part of a collapsed thread.
-~V cryptographically verified messages
-~w EXPR messages which contain EXPR in the `Newsgroups' field
- (if compiled with NNTP support)
-~x EXPR messages which contain EXPR in the `References' field
-~y EXPR messages which contain EXPR in the `X-Label' field
-~z [MIN]-[MAX] messages with a size in the range MIN to MAX *)
-~= duplicated messages (see $duplicate_threads)
-~$ unreferenced messages (requires threaded view)
-~* ``From'' contains realname and (syntactically) valid
- address (excluded are addresses matching against
- alternates or any alias)
-</verb></tscreen>
-
-Where EXPR, USER, ID, and SUBJECT are
-<ref id="regexp" name="regular expressions">. Special attention has to be
-made when using regular expressions inside of patterns. Specifically,
-Mutt-ng's parser for these patterns will strip one level of backslash (\),
-which is normally used for quoting. If it is your intention to use a
-backslash in the regular expression, you will need to use two backslashes
-instead (\\).
-
-*) The forms <tt/<[MAX]/, <tt/>[MIN]/,
-<tt/[MIN]-/ and <tt/-[MAX]/
-are allowed, too.
-
-<sect2>Pattern Modifier
-<p>
-
-Note that patterns matching 'lists' of addresses (notably c,C,p,P and t)
-match if there is at least one match in the whole list. If you want to
-make sure that all elements of that list match, you need to prefix your
-pattern with ^.
-This example matches all mails which only has recipients from Germany.
-
-<tscreen><verb>
-^~C \.de$
-</verb></tscreen>
-
-<sect2>Complex Patterns
-<p>
-
-Logical AND is performed by specifying more than one criterion. For
-example:
-
-<tscreen><verb>
-~t mutt ~f elkins
-</verb></tscreen>
-
-would select messages which contain the word ``mutt'' in the list of
-recipients <bf/and/ that have the word ``elkins'' in the ``From'' header
-field.
-
-Mutt-ng also recognizes the following operators to create more complex search
-patterns:
-
-<itemize>
-<item>! -- logical NOT operator
-<item>| -- logical OR operator
-<item>() -- logical grouping operator
-</itemize>
-
-Here is an example illustrating a complex search pattern. This pattern will
-select all messages which do not contain ``mutt'' in the ``To'' or ``Cc''
-field and which are from ``elkins''.
-
-<tscreen><verb>
-!(~t mutt|~c mutt) ~f elkins
-</verb></tscreen>
-
-Here is an example using white space in the regular expression (note
-the ' and &dquot; delimiters). For this to match, the mail's subject must
-match the ``^Junk +From +Me$'' and it must be from either ``Jim +Somebody''
-or ``Ed +SomeoneElse'':
-
-<tscreen><verb>
- '~s "^Junk +From +Me$" ~f ("Jim +Somebody"|"Ed +SomeoneElse")'
-</verb></tscreen>
-
-Note that if a regular expression contains parenthesis, or a vertical bar
-("|"), you <bf/must/ enclose the expression in double or single quotes since
-those characters are also used to separate different parts of Mutt-ng's
-pattern language. For example,
-
-<tscreen><verb>
-~f "me@(mutt\.org|cs\.hmc\.edu)"
-</verb></tscreen>
-
-Without the quotes, the parenthesis wouldn't end.
-This would be separated to two OR'd patterns: <em/˜f me@(mutt\.org/
-and <em/cs\.hmc\.edu)/. They are never what you want.
-
-<sect2>Searching by Date
-<p>
-Mutt-ng supports two types of dates, <em/absolute/ and <em/relative/.
-
-<bf/Absolute/. Dates <bf/must/ be in DD/MM/YY format (month and year are
-optional, defaulting to the current month and year). An example of a valid
-range of dates is:
-
-<tscreen><verb>
-Limit to messages matching: ~d 20/1/95-31/10
-</verb></tscreen>
-
-If you omit the minimum (first) date, and just specify ``-DD/MM/YY'', all
-messages <em/before/ the given date will be selected. If you omit the maximum
-(second) date, and specify ``DD/MM/YY-'', all messages <em/after/ the given
-date will be selected. If you specify a single date with no dash (``-''),
-only messages sent on the given date will be selected.
-
-<bf/Error Margins/. You can add error margins to absolute dates.
-An error margin is a sign (+ or -), followed by a digit, followed by
-one of the following units:
-<verb>
-y years
-m months
-w weeks
-d days
-</verb>
-As a special case, you can replace the sign by a ``*'' character,
-which is equivalent to giving identical plus and minus error margins.
-
-Example: To select any messages two weeks around January 15, 2001,
-you'd use the following pattern:
-<tscreen><verb>
-Limit to messages matching: ~d 15/1/2001*2w
-</verb></tscreen>
-
-
-<bf/Relative/. This type of date is relative to the current date, and may
-be specified as:
-<itemize>
-<item>><em/offset/ (messages older than <em/offset/ units)
-<item><<em/offset/ (messages newer than <em/offset/ units)
-<item>=<em/offset/ (messages exactly <em/offset/ units old)
-</itemize>
-
-<em/offset/ is specified as a positive number with one of the following
-units:
-<verb>
-y years
-m months
-w weeks
-d days
-</verb>
-
-Example: to select messages less than 1 month old, you would use
-<tscreen><verb>
-Limit to messages matching: ~d <1m
-</verb></tscreen>
-
-
-
-<bf/Note:/ all dates used when searching are relative to the
-<bf/local/ time zone, so unless you change the setting of your <ref
-id="index_format" name="$index_format"> to include a
-<tt/%[...]/ format, these are <bf/not/ the dates shown
-in the main index.
-
-<sect1>Using Tags
-<p>
-
-Sometimes it is desirable to perform an operation on a group of
-messages all at once rather than one at a time. An example might be
-to save messages to a mailing list to a separate folder, or to
-delete all messages with a given subject. To tag all messages
-matching a pattern, use the tag-pattern function, which is bound to
-``shift-T'' by default. Or you can select individual messages by
-hand using the ``tag-message'' function, which is bound to ``t'' by
-default. See <ref id="patterns" name="patterns"> for Mutt-ng's pattern
-matching syntax.
-
-Once you have tagged the desired messages, you can use the
-``tag-prefix'' operator, which is the ``;'' (semicolon) key by default.
-When the ``tag-prefix'' operator is used, the <bf/next/ operation will
-be applied to all tagged messages if that operation can be used in that
-manner. If the <ref id="auto_tag" name="$auto_tag">
-variable is set, the next operation applies to the tagged messages
-automatically, without requiring the ``tag-prefix''.
-
-In <ref id="macro" name="macros"> or <ref id="push" name="push"> commands,
-you can use the ``tag-prefix-cond'' operator. If there are no tagged
-messages, mutt will "eat" the rest of the macro to abort it's execution.
-Mutt-ng will stop "eating" the macro when it encounters the ``end-cond''
-operator; after this operator the rest of the macro will be executed as
-normal.
-
-<sect1>Using Hooks<label id="hooks">
-<p>
-A <em/hook/ is a concept borrowed from the EMACS editor which allows you to
-execute arbitrary commands before performing some operation. For example,
-you may wish to tailor your configuration based upon which mailbox you are
-reading, or to whom you are sending mail. In the Mutt-ng world, a <em/hook/
-consists of a <ref id="regexp" name="regular expression"> or
-<ref id="patterns" name="pattern"> along with a
-configuration option/command. See
-<itemize>
-<item><ref id="folder-hook" name="folder-hook">
-<item><ref id="send-hook" name="send-hook">
-<item><ref id="message-hook" name="message-hook">
-<item><ref id="save-hook" name="save-hook">
-<item><ref id="mbox-hook" name="mbox-hook">
-<item><ref id="fcc-hook" name="fcc-hook">
-<item><ref id="fcc-save-hook" name="fcc-save-hook">
-</itemize>
-for specific details on each type of <em/hook/ available.
-
-<bf/Note:/ if a hook changes configuration settings, these changes remain
-effective until the end of the current mutt session. As this is generally
-not desired, a default hook needs to be added before all other hooks to
-restore configuration defaults. Here is an example with send-hook and the
-my_hdr directive:
-
-<tscreen><verb>
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+
+<book>
+
+<bookinfo>
+ <title>The Mutt Next Generation E-Mail Client</title>
+ <author>
+ <firstname>Andreas</firstname><surname>Krennmair</surname>
+ <email>ak@synflood.at</email>
+ </author>
+ <author>
+ <firstname>Michael</firstname><surname>Elkins</surname>
+ <email>me@cs.hmc.edu</email>
+ </author>
+ <pubdate>version devel-r473</pubdate>
+ <abstract>
+ <para>
+ Michael Elinks on mutt, circa 1995:
+ ``All mail clients suck. This one just sucks less.''
+ </para>
+ <para>
+ Sven Guckes on mutt, ca. 2003: ``But it still sucks!''
+ </para>
+ </abstract>
+</bookinfo>
+
+<chapter> <!--{{{-->
+ <title>Introduction </title>
+
+ <sect1>
+ <title>Overview </title>
+
+ <para>
+ <emphasis role="bold">Mutt-ng</emphasis> is a small but very
+ powerful text-based MIME mail client. Mutt-ng is highly
+ configurable, and is well suited to the mail power user with
+ advanced features like key bindings, keyboard macros, mail
+ threading, regular expression searches and a powerful pattern
+ matching language for selecting groups of messages.
+ </para>
+
+ <para>
+ This documentation additionally contains documentation to
+ <emphasis role="bold"> Mutt-NG </emphasis> ,a fork from Mutt
+ with the goal to fix all the little annoyances of Mutt, to
+ integrate all the Mutt patches that are floating around in the
+ web, and to add other new features. Features specific to Mutt-ng
+ will be discussed in an extra section. Don't be confused when
+ most of the documentation talk about Mutt and not Mutt-ng,
+ Mutt-ng contains all Mutt features, plus many more.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Mutt-ng Home Page </title>
+
+ <para>
+ <ulink url="http://www.muttng.org/">http://www.muttng.org</ulink>
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Mailing Lists </title>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <email>mutt-ng-users@lists.berlios.de</email>: This is
+ where the mutt-ng user support happens.
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <email>mutt-ng-devel@lists.berlios.de</email>: The
+ development mailing list for mutt-ng
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Software Distribution Sites </title>
+
+ <para>
+ So far, there are no official releases of Mutt-ng, but you can
+ download daily snapshots from <ulink
+ url="http://mutt-ng.berlios.de/snapshots/"
+ >http://mutt-ng.berlios.de/snapshots/</ulink>
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>IRC </title>
+
+ <para>
+ Visit channel <emphasis>#muttng</emphasis> on <ulink
+ url="http://www.freenode.net/">irc.freenode.net
+ (www.freenode.net) </ulink> to chat with other people
+ interested in Mutt-ng.
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Weblog </title>
+
+ <para>
+ If you want to read fresh news about the latest development in
+ Mutt-ng, and get informed about stuff like interesting,
+ Mutt-ng-related articles and packages for your favorite
+ distribution, you can read and/or subscribe to our <ulink
+ url="http://mutt-ng.supersized.org/">Mutt-ng development
+ weblog</ulink>.
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Copyright </title>
+
+ <para>
+ Mutt is Copyright (C) 1996-2000 Michael R. Elkins
+ <me@cs.hmc.edu> and others
+ </para>
+
+ <para>
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ </para>
+
+ <para>
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ </para>
+
+ <para>
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ </para>
+
+ </sect1>
+
+</chapter>
+ <!--}}}-->
+
+<chapter>
+ <title>Getting Started </title>
+
+ <sect1> <!--{{{-->
+ <title>Basic Concepts </title>
+
+ <sect2> <!--{{{-->
+ <title>Screens and Menus </title>
+
+ <para>
+ mutt-ng offers different screens of which every has its special
+ purpose:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ The <emphasis>index</emphasis> displays the contents of the
+ currently opened
+ mailbox.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>pager</emphasis> is responsible for displaying
+ messages, that
+ is, the header, the body and all attached parts.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>file browser</emphasis> offers operations on and
+ displays
+ information of all folders mutt-ng should watch for mail.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>sidebar</emphasis> offers a permanent view of
+ which mailboxes
+ contain how many total, new and/or flagged mails.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>help screen</emphasis> lists for all currently
+ available
+ commands how to invoke them as well as a short description.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>compose</emphasis> menu is a comfortable
+ interface take last
+ actions before sending mail: change subjects, attach files,
+ remove
+ attachements, etc.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>attachement</emphasis> menu gives a summary and
+ the tree
+ structure of the attachements of the current message.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>alias</emphasis> menu lists all or a fraction of
+ the aliases
+ a user has defined.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>key</emphasis> menu used in connection with
+ encryption lets
+ users choose the right key to encrypt with.
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ When mutt-ng is started without any further options, it'll open
+ the users default mailbox and display the index.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Configuration </title>
+
+ <para>
+ Mutt-ng does <emphasis>not</emphasis> feature an internal
+ configuration
+ interface or menu due to the simple fact that this would be too
+ complex to handle (currently there are several <emphasis>hundred</emphasis>
+ variables which fine-tune the behaviour.)
+ </para>
+
+ <para>
+ Mutt-ng is configured using configuration files which allow
+ users to add comments or manage them via version control systems
+ to ease maintenance.
+ </para>
+
+ <para>
+ Also, mutt-ng comes with a shell script named <literal>grml-muttng</literal>
+ kindly contributed by users which really helps and eases the
+ creation of a user's configuration file. When downloading the
+ source code via a snapshot or via subversion, it can be found in
+ the <literal>contrib</literal> directory.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Functions </title>
+
+ <para>
+ Mutt-ng offers great flexibility due to the use of functions:
+ internally, every action a user can make mutt-ng perform is named
+ ``function.'' Those functions are assigned to keys (or even key
+ sequences) and may be completely adjusted to user's needs. The
+ basic idea is that the impatient users get a very intuitive
+ interface to start off with and advanced users virtually get no
+ limits to adjustments.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Interaction </title>
+
+ <para>
+ Mutt-ng has two basic concepts of user interaction:
+ </para>
+
+ <para>
+
+ <orderedlist>
+ <listitem>
+
+ <para>
+ There is one dedicated line on the screen used to query
+ the user for input, issue any command, query variables and
+ display error and informational messages. As for every type of
+ user input, this requires manual action leading to the need of
+ input.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The automatized interface for interaction are the so
+ called <emphasis>hooks</emphasis>. Hooks specify actions the
+ user wants to be
+ performed at well-defined situations: what to do when entering
+ which folder, what to do when displaying or replying to what
+ kind of message, etc. These are optional, i.e. a user doesn't
+ need to specify them but can do so.
+
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Modularization </title>
+
+ <para>
+ Although mutt-ng has many functionality built-in, many
+ features can be delegated to external tools to increase
+ flexibility: users can define programs to filter a message through
+ before displaying, users can use any program they want for
+ displaying a message, message types (such as PDF or PostScript)
+ for which mutt-ng doesn't have a built-in filter can be rendered
+ by arbitrary tools and so forth. Although mutt-ng has an alias
+ mechanism built-in, it features using external tools to query for
+ nearly every type of addresses from sources like LDAP, databases
+ or just the list of locally known users.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Patterns </title>
+
+ <para>
+ Mutt-ng has a built-in pattern matching ``language'' which is
+ as widely used as possible to present a consistent interface to
+ users. The same ``pattern terms'' can be used for searching,
+ scoring, message selection and much more.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ </sect1>
+
+ <!--}}}-->
+
+ <sect1> <!--{{{-->
+ <title>Screens and Menus </title>
+
+ <sect2>
+ <title>Index </title>
+
+ <para>
+ The index is the screen that you usually see first when you
+ start mutt-ng. It gives an overview over your emails in the
+ currently opened mailbox. By default, this is your system mailbox.
+ The information you see in the index is a list of emails, each with
+ its number on the left, its flags (new email, important email,
+ email that has been forwarded or replied to, tagged email, ...),
+ the date when email was sent, its sender, the email size, and the
+ subject. Additionally, the index also shows thread hierarchies:
+ when you reply to an email, and the other person replies back, you
+ can see the other's person email in a "sub-tree" below. This is
+ especially useful for personal email between a group of people or
+ when you've subscribed to mailing lists.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Pager </title>
+
+ <para>
+ The pager is responsible for showing the email content. On the
+ top of the pager you have an overview over the most important email
+ headers like the sender, the recipient, the subject, and much more
+ information. How much information you actually see depends on your
+ configuration, which we'll describe below.
+ </para>
+
+ <para>
+ Below the headers, you see the email body which usually contains
+ the message. If the email contains any attachments, you will see
+ more information about them below the email body, or, if the
+ attachments are text files, you can view them directly in the
+ pager.
+ </para>
+
+ <para>
+ To give the user a good overview, it is possible to configure
+ mutt-ng to show different things in the pager with different
+ colors. Virtually everything that can be described with a regular
+ expression can be colored, e.g. URLs, email addresses or smileys.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>File Browser </title>
+
+ <para>
+ The file browser is the interface to the local or remote
+ file system. When selecting a mailbox to open, the browser allows
+ custom sorting of items, limiting the items shown by a regular
+ expression and a freely adjustable format of what to display in
+ which way. It also allows for easy navigation through the
+ file system when selecting file(s) to attach to a message, select
+ multiple files to attach and many more.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Sidebar </title>
+
+ <para>
+ The sidebar comes in handy to manage mails which are spread
+ over different folders. All folders users setup mutt-ng to watch
+ for new mail will be listed. The listing includes not only the
+ name but also the number of total messages, the number of new and
+ flagged messages. Items with new mail may be colored different
+ from those with flagged mail, items may be shortened or compress
+ if they're they to long to be printed in full form so that by
+ abbreviated names, user still now what the name stands for.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Help </title>
+
+ <para>
+ The help screen is meant to offer a quick help to the user. It
+ lists the current configuration of key bindings and their
+ associated commands including a short description, and currently
+ unbound functions that still need to be associated with a key
+ binding (or alternatively, they can be called via the mutt-ng
+ command prompt).
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Compose Menu </title>
+
+ <para>
+ The compose menu features a split screen containing the
+ information which really matter before actually sending a
+ message by mail or posting an article to a newsgroup: who gets
+ the message as what (recipient, newsgroup, who gets what kind of
+ copy). Additionally, users may set security options like
+ deciding whether to sign, encrypt or sign and encrypt a message
+ with/for what keys.
+ </para>
+
+ <para>
+ Also, it's used to attach messages, news articles or files to
+ a message, to re-edit any attachment including the message
+ itself.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Alias Menu </title>
+
+ <para>
+ The alias menu is used to help users finding the recipients
+ of messages. For users who need to contact many people, there's
+ no need to remember addresses or names completely because it
+ allows for searching, too. The alias mechanism and thus the
+ alias menu also features grouping several addresses by a shorter
+ nickname, the actual alias, so that users don't have to select
+ each single recipient manually.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Attachment Menu </title>
+
+ <para>
+ As will be later discussed in detail, mutt-ng features a good
+ and stable MIME implementation, that is, is greatly supports
+ sending and receiving messages of arbitrary type. The
+ attachment menu displays a message's structure in detail: what
+ content parts are attached to which parent part (which gives a
+ true tree structure), which type is of what type and what size.
+ Single parts may saved, deleted or modified to offer great and
+ easy access to message's internals.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Key Menu </title>
+
+ <para>
+ <literal>FIXME</literal>
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+ <!--}}}-->
+
+ <sect1> <!--{{{-->
+ <title>Moving Around in Menus </title>
+
+ <para>
+ Information is presented in menus, very similar to ELM. Here is a
+ tableshowing the common keys used to navigate menus in Mutt-ng.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Menu Movement Keys</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><code>j</code> or <code>Down</code></entry>
+ <entry><code>next-entry</code></entry>
+ <entry>move to the next entry</entry>
+ </row>
+ <row>
+ <entry><code>k</code> or <code>Up</code></entry>
+ <entry><code>previous-entry</code></entry>
+ <entry>move to the previous entry</entry>
+ </row>
+ <row>
+ <entry><code>z</code> or <code>PageDn</code></entry>
+ <entry><code>page-down</code></entry>
+ <entry>go to the next page</entry>
+ </row>
+ <row>
+ <entry><code>Z</code> or <code>PageUp</code></entry>
+ <entry><code>page-up</code></entry>
+ <entry>go to the previous page</entry>
+ </row>
+ <row>
+ <entry><code>=</code> or <code>Home</code></entry>
+ <entry><code>first-entry</code></entry>
+ <entry>jump to the first entry</entry>
+ </row>
+ <row>
+ <entry><code>*</code> or <code>End</code></entry>
+ <entry><code>last-entry</code></entry>
+ <entry>jump to the last entry</entry>
+ </row>
+ <row>
+ <entry><code>q</code></entry>
+ <entry><code>quit</code></entry>
+ <entry>exit the current menu</entry>
+ </row>
+ <row>
+ <entry><code>?</code></entry>
+ <entry><code>help</code></entry>
+ <entry>list all key bindings for the current menu</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+ <!--}}}-->
+
+ <sect1 id="editing"> <!--{{{-->
+ <title>Editing Input Fields </title>
+
+ <para>
+ Mutt-ng has a builtin line editor which is used as the primary way to
+ input
+ textual data such as email addresses or filenames. The keys used to
+ move
+ around while editing are very similar to those of Emacs.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Built-In Editor Functions</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><code>^A or <Home> </code></entry>
+ <entry><code>bol </code></entry>
+ <entry>move to the start of the line</entry>
+ </row>
+ <row>
+ <entry><code>^B or <Left> </code></entry>
+ <entry><code>backward-char </code>
+ </entry><entry>move back one char</entry>
+ </row>
+ <row>
+ <entry><code>Esc B </code></entry>
+ <entry><code>backward-word </code></entry>
+ <entry>move back one word</entry>
+ </row>
+ <row>
+ <entry><code>^D or <Delete> </code></entry>
+ <entry><code>delete-char </code></entry>
+ <entry>delete the char under the cursor</entry>
+ </row>
+ <row>
+ <entry><code>^E or <End> </code></entry>
+ <entry><code>eol </code></entry>
+ <entry>move to the end of the line</entry>
+ </row>
+ <row>
+ <entry><code>^F or <Right> </code></entry>
+ <entry><code>forward-char </code></entry>
+ <entry>move forward one char</entry>
+ </row>
+ <row>
+ <entry><code>Esc F </code></entry>
+ <entry><code>forward-word </code></entry>
+ <entry>move forward one word</entry>
+ </row>
+ <row>
+ <entry><code><Tab> </code></entry>
+ <entry><code>complete </code></entry>
+ <entry>complete filename or alias</entry>
+ </row>
+ <row>
+ <entry><code>^T </code></entry>
+ <entry><code>complete-query </code></entry>
+ <entry>complete address with query</entry>
+ </row>
+ <row>
+ <entry><code>^K </code></entry>
+ <entry><code>kill-eol </code></entry>
+ <entry>delete to the end of the line</entry>
+ </row>
+ <row>
+ <entry><code>ESC d </code></entry>
+ <entry><code>kill-eow </code></entry>
+ <entry>delete to the end of the word</entry>
+ </row>
+ <row>
+ <entry><code>^W </code></entry>
+ <entry><code>kill-word </code></entry>
+ <entry>kill the word in front of the cursor</entry>
+ </row>
+ <row>
+ <entry><code>^U </code></entry>
+ <entry><code>kill-line </code></entry>
+ <entry>delete entire line</entry>
+ </row>
+ <row>
+ <entry><code>^V </code></entry>
+ <entry><code>quote-char </code></entry>
+ <entry>quote the next typed key</entry>
+ </row>
+ <row>
+ <entry><code><Up> </code></entry>
+ <entry><code>history-up </code></entry>
+ <entry>recall previous string from history</entry>
+ </row>
+ <row>
+ <entry><code><Down> </code></entry>
+ <entry><code>history-down </code></entry>
+ <entry>recall next string from history</entry>
+ </row>
+ <row>
+ <entry><code><BackSpace> </code></entry>
+ <entry><code>backspace </code></entry>
+ <entry>kill the char in front of the cursor</entry>
+ </row>
+ <row>
+ <entry><code>Esc u </code></entry>
+ <entry><code>upcase-word </code></entry>
+ <entry>convert word to upper case</entry>
+ </row>
+ <row>
+ <entry><code>Esc l </code></entry>
+ <entry><code>downcase-word </code></entry>
+ <entry>convert word to lower case</entry>
+ </row>
+ <row>
+ <entry><code>Esc c </code></entry>
+ <entry><code>capitalize-word </code></entry>
+ <entry>capitalize the word</entry>
+ </row>
+ <row>
+ <entry><code>^G </code></entry>
+ <entry><code>n/a </code></entry>
+ <entry>abort</entry>
+ </row>
+ <row>
+ <entry><code><Return> </code></entry>
+ <entry><code>n/a </code></entry>
+ <entry>finish editing</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ You can remap the <emphasis>editor</emphasis> functions using the <link linkend="bind">
+ bind
+ </link>
+ command. For example, to make the <emphasis>Delete</emphasis> key
+ delete the character in
+ front of the cursor rather than under, you could use
+ </para>
+
+ <para>
+ <literal>bind editor <delete> backspace</literal>
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+ <!--}}}-->
+
+ <sect1>
+ <title>Reading Mail - The Index and Pager </title> <!--{{{-->
+
+ <para>
+ Similar to many other mail clients, there are two modes in which mail
+ isread in Mutt-ng. The first is the index of messages in the mailbox,
+ which is
+ called the ``index'' in Mutt-ng. The second mode is the display of the
+ message contents. This is called the ``pager.''
+ </para>
+
+ <para>
+ The next few sections describe the functions provided in each of these
+ modes.
+ </para>
+
+ <sect2>
+ <title>The Message Index</title> <!--{{{-->
+
+ <para>
+
+ <table>
+ <title>Default Index Menu Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>c </code></entry><entry><code></code></entry><entry>change to a different mailbox</entry></row>
+ <row><entry><code>ESC c </code></entry><entry><code></code></entry><entry>change to a folder in read-only mode</entry></row>
+ <row><entry><code>C </code></entry><entry><code></code></entry><entry>copy the current message to another mailbox</entry></row>
+ <row><entry><code>ESC C </code></entry><entry><code></code></entry><entry>decode a message and copy it to a folder</entry></row>
+ <row><entry><code>ESC s </code></entry><entry><code></code></entry><entry>decode a message and save it to a folder</entry></row>
+ <row><entry><code>D </code></entry><entry><code></code></entry><entry>delete messages matching a pattern</entry></row>
+ <row><entry><code>d </code></entry><entry><code></code></entry><entry>delete the current message</entry></row>
+ <row><entry><code>F </code></entry><entry><code></code></entry><entry>mark as important</entry></row>
+ <row><entry><code>l </code></entry><entry><code></code></entry><entry>show messages matching a pattern</entry></row>
+ <row><entry><code>N </code></entry><entry><code></code></entry><entry>mark message as new</entry></row>
+ <row><entry><code>o </code></entry><entry><code></code></entry><entry>change the current sort method</entry></row>
+ <row><entry><code>O </code></entry><entry><code></code></entry><entry>reverse sort the mailbox</entry></row>
+ <row><entry><code>q </code></entry><entry><code></code></entry><entry>save changes and exit</entry></row>
+ <row><entry><code>s </code></entry><entry><code></code></entry><entry>save-message</entry></row>
+ <row><entry><code>T </code></entry><entry><code></code></entry><entry>tag messages matching a pattern</entry></row>
+ <row><entry><code>t </code></entry><entry><code></code></entry><entry>toggle the tag on a message</entry></row>
+ <row><entry><code>ESC t </code></entry><entry><code></code></entry><entry>toggle tag on entire message thread</entry></row>
+ <row><entry><code>U </code></entry><entry><code></code></entry><entry>undelete messages matching a pattern</entry></row>
+ <row><entry><code>u </code></entry><entry><code></code></entry><entry>undelete-message</entry></row>
+ <row><entry><code>v </code></entry><entry><code></code></entry><entry>view-attachments</entry></row>
+ <row><entry><code>x </code></entry><entry><code></code></entry><entry>abort changes and exit</entry></row>
+ <row><entry><code><Return> </code></entry><entry><code></code></entry><entry>display-message</entry></row>
+ <row><entry><code><Tab> </code></entry><entry><code></code></entry><entry>jump to the next new message</entry></row>
+ <row><entry><code>@ </code></entry><entry><code></code></entry><entry>show the author's full e-mail address</entry></row>
+ <row><entry><code>$ </code></entry><entry><code></code></entry><entry>save changes to mailbox</entry></row>
+ <row><entry><code>/ </code></entry><entry><code></code></entry><entry>search</entry></row>
+ <row><entry><code>ESC / </code></entry><entry><code></code></entry><entry>search-reverse</entry></row>
+ <row><entry><code>^L </code></entry><entry><code></code></entry><entry>clear and redraw the screen</entry></row>
+ <row><entry><code>^T </code></entry><entry><code></code></entry><entry>untag messages matching a pattern</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <sect3>
+ <title>Status Flags</title> <!--{{{-->
+
+ <para>
+ In addition to who sent the message and the subject, a short
+ summary of
+ the disposition of each message is printed beside the message
+ number.
+ Zero or more of the following ``flags'' may appear, which mean:
+ </para>
+
+ <para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>D</term>
+ <listitem>
+ <para>
+ message is deleted (is marked for deletion)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d</term>
+ <listitem>
+ <para>
+ message have attachments marked for deletion
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>K</term>
+ <listitem>
+ <para>
+ contains a PGP public key
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para>
+ message is new
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>O</term>
+ <listitem>
+ <para>
+ message is old
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>P</term>
+ <listitem>
+ <para>
+ message is PGP encrypted
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>r</term>
+ <listitem>
+ <para>
+ message has been replied to
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S</term>
+ <listitem>
+ <para>
+ message is signed, and the signature is succesfully
+ verified
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>s</term>
+ <listitem>
+ <para>
+ message is signed
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>!</term>
+ <listitem>
+ <para>
+ message is flagged
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>*</term>
+ <listitem>
+ <para>
+ message is tagged
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ Some of the status flags can be turned on or off using
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <emphasis role="bold">set-flag</emphasis> (default: w)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <emphasis role="bold">clear-flag</emphasis> (default: W)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ Furthermore, the following flags reflect who the message is
+ addressed
+ to. They can be customized with the
+ <link linkend="to-chars">$to_chars</link> variable.
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>+</term>
+ <listitem>
+ <para>
+ message is to you and you only
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>T</term>
+ <listitem>
+ <para>
+ message is to you, but also to or cc'ed to others
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>C</term>
+ <listitem>
+ <para>
+ message is cc'ed to you
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>F</term>
+ <listitem>
+ <para>
+ message is from you
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>L</term>
+ <listitem>
+ <para>
+ message is sent to a subscribed mailing list
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <!--}}}-->
+ </sect3>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2>
+ <title>The Pager</title> <!--{{{-->
+
+ <para>
+ By default, Mutt-ng uses its builtin pager to display the body of
+ messages.
+ The pager is very similar to the Unix program <emphasis>less</emphasis> though not nearly as
+ featureful.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Pager Menu Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code><Return> </code></entry><entry><code></code></entry><entry>go down one line</entry></row>
+ <row><entry><code><Space> </code></entry><entry><code></code></entry><entry>display the next page (or next message if at the end of a message)</entry></row>
+ <row><entry><code>- </code></entry><entry><code></code></entry><entry>go back to the previous page</entry></row>
+ <row><entry><code>n </code></entry><entry><code></code></entry><entry>search for next match</entry></row>
+ <row><entry><code>S </code></entry><entry><code></code></entry><entry>skip beyond quoted text</entry></row>
+ <row><entry><code>T </code></entry><entry><code></code></entry><entry>toggle display of quoted text</entry></row>
+ <row><entry><code>? </code></entry><entry><code></code></entry><entry>show key bindings</entry></row>
+ <row><entry><code>/ </code></entry><entry><code></code></entry><entry>search for a regular expression (pattern)</entry></row>
+ <row><entry><code>ESC / </code></entry><entry><code></code></entry><entry>search backwards for a regular expression</entry></row>
+ <row><entry><code>\ </code></entry><entry><code></code></entry><entry>toggle search pattern coloring</entry></row>
+ <row><entry><code>^ </code></entry><entry><code></code></entry><entry>jump to the top of the message</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ </para>
+
+ <para>
+ In addition, many of the functions from the <emphasis>index</emphasis> are available in
+ the pager, such as <emphasis>delete-message</emphasis> or <emphasis>
+ copy-message
+ </emphasis>
+ (this is one
+ advantage over using an external pager to view messages).
+ </para>
+
+ <para>
+ Also, the internal pager supports a couple other advanced features.
+ For
+ one, it will accept and translate the ``standard'' nroff sequences
+ forbold and underline. These sequences are a series of either the
+ letter,
+ backspace (ˆH), the letter again for bold or the letter,
+ backspace,
+ ``_'' for denoting underline. Mutt-ng will attempt to display
+ these
+ in bold and underline respectively if your terminal supports them. If
+ not, you can use the bold and underline <link
+linkend="color">color</link>
+ objects to specify a color or mono attribute for them.
+ </para>
+
+ <para>
+ Additionally, the internal pager supports the ANSI escape
+ sequences for character attributes. Mutt-ng translates them
+ into the correct color and character settings. The sequences
+ Mutt-ng supports are: <literal>ESC [ Ps;Ps;Ps;...;Ps
+ m</literal> (see table below for possible values for
+ <code>Ps</code>).
+ </para>
+
+ <para>
+
+ <table>
+ <title>ANSI Escape Sequences</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Value</entry>
+ <entry>Attribute</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>0 </code></entry><entry>All Attributes Off</entry></row>
+ <row><entry><code>1 </code></entry><entry>Bold on</entry></row>
+ <row><entry><code>4 </code></entry><entry>Underline on</entry></row>
+ <row><entry><code>5 </code></entry><entry>Blink on</entry></row>
+ <row><entry><code>7 </code></entry><entry>Reverse video on</entry></row>
+ <row><entry><code>3x </code></entry><entry>Foreground color is x (see table below)</entry></row>
+ <row><entry><code>4x </code></entry><entry>Background color is x (see table below)</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ <table>
+ <title>ANSI Colors</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Number</entry>
+ <entry>Color</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>0 </code></entry><entry>black</entry></row>
+ <row><entry><code>1 </code></entry><entry>red</entry></row>
+ <row><entry><code>2 </code></entry><entry>green</entry></row>
+ <row><entry><code>3 </code></entry><entry>yellow</entry></row>
+ <row><entry><code>4 </code></entry><entry>blue</entry></row>
+ <row><entry><code>5 </code></entry><entry>magenta</entry></row>
+ <row><entry><code>6 </code></entry><entry>cyan</entry></row>
+ <row><entry><code>7 </code></entry><entry>white</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ </para>
+
+ <para>
+ Mutt-ng uses these attributes for handling text/enriched messages,
+ and they
+ can also be used by an external <link
+ linkend="auto-view">autoview</link>
+ script for highlighting purposes. <emphasis role="bold">Note:</emphasis> If you change the colors for your
+ display, for example by changing the color associated with color2 for
+ your xterm, then that color will be used instead of green.
+ </para>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2 id="threads">
+ <title>Threaded Mode</title> <!--{{{-->
+
+ <para>
+ When the mailbox is <link linkend="sort">sorted</link> by <emphasis>
+ threads
+ </emphasis>
+ ,there are
+ a few additional functions available in the <emphasis>index</emphasis> and <emphasis>
+ pager
+ </emphasis>
+ modes.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Thread Function Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>^D </code></entry><entry><code>delete-thread </code></entry><entry>delete all messages in the current thread</entry></row>
+ <row><entry><code>^U </code></entry><entry><code>undelete-thread </code></entry><entry>undelete all messages in the current thread</entry></row>
+ <row><entry><code>^N </code></entry><entry><code>next-thread </code></entry><entry>jump to the start of the next thread</entry></row>
+ <row><entry><code>^P </code></entry><entry><code>previous-thread </code></entry><entry>jump to the start of the previous thread</entry></row>
+ <row><entry><code>^R </code></entry><entry><code>read-thread </code></entry><entry>mark the current thread as read</entry></row>
+ <row><entry><code>ESC d </code></entry><entry><code>delete-subthread </code></entry><entry>delete all messages in the current subthread</entry></row>
+ <row><entry><code>ESC u </code></entry><entry><code>undelete-subthread </code></entry><entry>undelete all messages in the current subthread</entry></row>
+ <row><entry><code>ESC n </code></entry><entry><code>next-subthread </code></entry><entry>jump to the start of the next subthread</entry></row>
+ <row><entry><code>ESC p </code></entry><entry><code>previous-subthread </code></entry><entry>jump to the start of the previous subthread</entry></row>
+ <row><entry><code>ESC r </code></entry><entry><code>read-subthread </code></entry><entry>mark the current subthread as read </entry></row>
+ <row><entry><code>ESC t </code></entry><entry><code>tag-thread </code></entry><entry>toggle the tag on the current thread</entry></row>
+ <row><entry><code>ESC v </code></entry><entry><code>collapse-thread </code></entry><entry>toggle collapse for the current thread</entry></row>
+ <row><entry><code>ESC V </code></entry><entry><code>collapse-all </code></entry><entry>toggle collapse for all threads</entry></row>
+ <row><entry><code>P </code></entry><entry><code>parent-message </code></entry><entry>jump to parent message in thread</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> Collapsing a thread displays
+ only the first message
+ in the thread and hides the others. This is useful when threads
+ contain so many messages that you can only see a handful of threads
+ onthe screen. See %M in <link
+ linkend="index-format">
+ index-format
+ </link>
+ .
+ For example, you could use
+ "%?M?(#%03M)&(%4l)?" in <link linkend="index-format">
+ index-format
+ </link>
+ to optionally
+ display the number of hidden messages if the thread is collapsed.
+ </para>
+
+ <para>
+ See also: <link linkend="strict-threads">strict-threads</link>.
+ </para>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2>
+ <title>Miscellaneous Functions</title> <!--{{{-->
+
+ <para>
+ <emphasis role="bold">create-alias</emphasis><anchor id="create-alias"/>
+ (default: a)
+
+ </para>
+
+ <para>
+ Creates a new alias based upon the current message (or prompts for a
+ new one). Once editing is complete, an <link linkend="alias">alias</link>
+ command is added to the file specified by the <link linkend="alias-file">
+ alias-file
+ </link>
+ variable for future use. <emphasis role="bold">Note:</emphasis>
+ Specifying an <link linkend="alias-file">alias-file</link>
+ does not add the aliases specified there-in, you must also <link linkend="source">
+ source
+ </link>
+ the file.
+ </para>
+
+ <para>
+ <emphasis role="bold">check-traditional-pgp</emphasis><anchor id="check-traditional-pgp"/>
+ (default: ESC P)
+
+ </para>
+
+ <para>
+ This function will search the current message for content signed or
+ encrypted with PGP the "traditional" way, that is, without proper
+ MIME tagging. Technically, this function will temporarily change
+ the MIME content types of the body parts containing PGP data; this
+ is similar to the <link linkend="edit-type">edit-type</link>
+ function's
+ effect.
+ </para>
+
+ <para>
+ <emphasis role="bold">display-toggle-weed</emphasis><anchor id="display-toggle-weed"/>
+ (default: h)
+
+ </para>
+
+ <para>
+ Toggles the weeding of message header fields specified by <link linkend="ignore">
+ ignore
+ </link>
+ commands.
+ </para>
+
+ <para>
+ <emphasis role="bold">edit</emphasis><anchor id="edit"/>
+ (default: e)
+
+ </para>
+
+ <para>
+ This command (available in the ``index'' and ``pager'') allows you to
+ edit the raw current message as it's present in the mail folder.
+ After you have finished editing, the changed message will be
+ appended to the current folder, and the original message will be
+ marked for deletion.
+ </para>
+
+ <para>
+ <emphasis role="bold">edit-type</emphasis><anchor id="edit-type"/>
+
+ (default: ˆE on the attachment menu, and in the pager and index
+ menus; ˆT on the
+ compose menu)
+ </para>
+
+ <para>
+ This command is used to temporarily edit an attachment's content
+ type to fix, for instance, bogus character set parameters. When
+ invoked from the index or from the pager, you'll have the
+ opportunity to edit the top-level attachment's content type. On the
+ <link linkend="attach-menu">attach-menu</link>, you can change any
+ attachment's content type. These changes are not persistent, and get
+ lost upon changing folders.
+ </para>
+
+ <para>
+ Note that this command is also available on the <link linkend="compose-menu">
+ compose-menu
+ </link>
+ .There, it's used to
+ fine-tune the properties of attachments you are going to send.
+ </para>
+
+ <para>
+ <emphasis role="bold">enter-command</emphasis><anchor id="enter-command"/>
+ (default: ``:'')
+
+ </para>
+
+ <para>
+ This command is used to execute any command you would normally put in
+ a
+ configuration file. A common use is to check the settings of
+ variables, or
+ in conjunction with <link linkend="macro">macro</link> to change
+ settings on the
+ fly.
+ </para>
+
+ <para>
+ <emphasis role="bold">extract-keys</emphasis><anchor id="extract-keys"/>
+ (default: ˆK)
+
+ </para>
+
+ <para>
+ This command extracts PGP public keys from the current or tagged
+ message(s) and adds them to your PGP public key ring.
+ </para>
+
+ <para>
+ <emphasis role="bold">forget-passphrase</emphasis><anchor id="forget-passphrase"/>
+ (default:
+ ˆF)
+
+ </para>
+
+ <para>
+ This command wipes the passphrase(s) from memory. It is useful, if
+ you misspelled the passphrase.
+ </para>
+
+ <para>
+ <emphasis role="bold">list-reply</emphasis><anchor id="func-list-reply"/>
+ (default: L)
+
+ </para>
+
+ <para>
+ Reply to the current or tagged message(s) by extracting any addresses
+ which
+ match the regular expressions given by the <link linkend="lists">
+ lists
+ </link>
+ commands, but also honor any <literal>Mail-Followup-To</literal>
+ header(s) if the
+ <link linkend="honor-followup-to">honor-followup-to</link>
+ configuration variable is set. Using this when replying to messages
+ posted
+ to mailing lists helps avoid duplicate copies being sent to the
+ author of
+ the message you are replying to.
+ </para>
+
+ <para>
+ <emphasis role="bold">pipe-message</emphasis><anchor id="pipe-message"/>
+ (default: |)
+
+ </para>
+
+ <para>
+ Asks for an external Unix command and pipes the current or
+ tagged message(s) to it. The variables <link linkend="pipe-decode">
+ pipe-decode
+ </link>
+ ,<link linkend="pipe-split">pipe-split</link>, <link linkend="pipe-sep">
+ pipe-sep
+ </link>
+ and <link linkend="wait-key">wait-key</link> control the exact
+ behavior of this
+ function.
+ </para>
+
+ <para>
+ <emphasis role="bold">resend-message</emphasis><anchor id="resend-message"/>
+ (default: ESC e)
+
+ </para>
+
+ <para>
+ With resend-message, mutt takes the current message as a template for
+ a
+ new message. This function is best described as "recall from
+ arbitrary
+ folders". It can conveniently be used to forward MIME messages while
+ preserving the original mail structure. Note that the amount of
+ headers
+ included here depends on the value of the <link linkend="weed">weed</link>
+ variable.
+ </para>
+
+ <para>
+ This function is also available from the attachment menu. You can use
+ this
+ to easily resend a message which was included with a bounce message
+ as a message/rfc822 body part.
+ </para>
+
+ <para>
+ <emphasis role="bold">shell-escape</emphasis><anchor id="shell-escape"/>
+ (default: !)
+
+ </para>
+
+ <para>
+ Asks for an external Unix command and executes it. The <link linkend="wait-key">
+ wait-key
+ </link>
+ can be used to control
+ whether Mutt-ng will wait for a key to be pressed when the command
+ returns
+ (presumably to let the user read the output of the command), based on
+ the return status of the named command.
+ </para>
+
+ <para>
+ <emphasis role="bold">toggle-quoted</emphasis><anchor id="toggle-quoted"/>
+ (default: T)
+
+ </para>
+
+ <para>
+ The <emphasis>pager</emphasis> uses the <link linkend="quote-regexp">
+ quote-regexp
+ </link>
+ variable to detect quoted text when
+ displaying the body of the message. This function toggles the
+ displayof the quoted material in the message. It is particularly
+ useful when
+ are interested in just the response and there is a large amount of
+ quoted text in the way.
+ </para>
+
+ <para>
+ <emphasis role="bold">skip-quoted</emphasis><anchor id="skip-quoted"/>
+ (default: S)
+
+ </para>
+
+ <para>
+ This function will go to the next line of non-quoted text which come
+ after a line of quoted text in the internal pager.
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect2>
+
+ <!--}}}-->
+ </sect1>
+
+ <sect1>
+ <title>Sending Mail </title> <!--{{{-->
+
+ <para>
+ The following bindings are available in the <emphasis>index</emphasis>
+ for sending
+ messages.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Mail Composition Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>m </code></entry><entry><code>compose </code></entry><entry>compose a new message</entry></row>
+ <row><entry><code>r </code></entry><entry><code>reply </code></entry><entry>reply to sender</entry></row>
+ <row><entry><code>g </code></entry><entry><code>group-reply </code></entry><entry>reply to all recipients</entry></row>
+ <row><entry><code>L </code></entry><entry><code>list-reply </code></entry><entry>reply to mailing list address</entry></row>
+ <row><entry><code>f </code></entry><entry><code>forward </code></entry><entry>forward message</entry></row>
+ <row><entry><code>b </code></entry><entry><code>bounce </code></entry><entry>bounce (remail) message</entry></row>
+ <row><entry><code>ESC k </code></entry><entry><code>mail-key </code></entry><entry>mail a PGP public key to someone</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ Bouncing a message sends the message as is to the recipient you
+ specify. Forwarding a message allows you to add comments or
+ modify the message you are forwarding. These items are discussed
+ in greater detail in the next chapter <link linkend="forwarding-mail">
+ forwarding-mail
+ </link>
+ .
+ </para>
+
+ <sect2>
+ <title>Composing new messages </title> <!--{{{-->
+
+ <para>
+ When you want to send an email using mutt-ng, simply press <literal>m</literal> on
+ your keyboard. Then, mutt-ng asks for the recipient via a prompt in
+ the last line:
+ </para>
+
+ <para>
+
+ <screen>
+To:</screen>
+
+ </para>
+
+ <para>
+ After you've finished entering the recipient(s), press return. If you
+ want to send an email to more than one recipient, separate the email
+ addresses using the comma "<literal>,</literal>". Mutt-ng then asks
+ you for the email
+ subject. Again, press return after you've entered it. After that,
+ mutt-ng
+ got the most important information from you, and starts up an editor
+ where you can then enter your email.
+ </para>
+
+ <para>
+ The editor that is called is selected in the following way: you
+ can e.g. set it in the mutt-ng configuration:
+ </para>
+
+ <para>
+
+ <screen>
+set editor = "vim +/^$/ -c ':set tw=72'"
+set editor = "nano"
+set editor = "emacs"</screen>
+
+ </para>
+
+ <para>
+ If you don't set your preferred editor in your configuration, mutt-ng
+ first looks whether the environment variable <literal>$VISUAL</literal> is set, and if
+ so, it takes its value as editor command. Otherwise, it has a look
+ at <literal>$EDITOR</literal> and takes its value if it is set. If no
+ editor command
+ can be found, mutt-ng simply assumes <literal>vi</literal> to be the
+ default editor,
+ since it's the most widespread editor in the Unix world and it's
+ pretty
+ safe to assume that it is installed and available.
+ </para>
+
+ <para>
+ When you've finished entering your message, save it and quit your
+ editor. Mutt-ng will then present you with a summary screen, the
+ compose menu.
+ On the top, you see a summary of the most important available key
+ commands.
+ Below that, you see the sender, the recipient(s), Cc and/or Bcc
+ recipient(s), the subject, the reply-to address, and optionally
+ information where the sent email will be stored and whether it should
+ be digitally signed and/or encrypted.
+ </para>
+
+ <para>
+ Below that, you see a list of "attachments". The mail you've just
+ entered before is also an attachment, but due to its special type
+ (it's plain text), it will be displayed as the normal message on
+ the receiver's side.
+ </para>
+
+ <para>
+ At this point, you can add more attachments, pressing <literal>a</literal>, you
+ can edit the recipient addresses, pressing <literal>t</literal> for
+ the "To:" field,
+ <literal>c</literal> for the "Cc:" field, and <literal>b</literal>
+ for the "Bcc: field. You can
+ also edit the subject the subject by simply pressing <literal>s</literal> or the
+ email message that you've entered before by pressing <literal>e</literal>. You will
+ then again return to the editor. You can even edit the sender, by
+ pressing
+ <literal><esc>f</literal>, but this shall only be used with
+ caution.
+ </para>
+
+ <para>
+ Alternatively, you can configure mutt-ng in a way that most of the
+ above settings can be edited using the editor. Therefore, you only
+ need to add the following to your configuration:
+ </para>
+
+ <para>
+
+ <screen>
+set edit_headers</screen>
+
+ </para>
+
+ <para>
+ Once you have finished editing the body of your mail message, you are
+ returned to the <emphasis>compose</emphasis> menu. The following
+ options are available:
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Compose Menu Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>a </code></entry><entry><code>attach-file </code></entry><entry>attach a file</entry></row>
+ <row><entry><code>A </code></entry><entry><code>attach-message </code></entry><entry>attach message(s) to the message</entry></row>
+ <row><entry><code>ESC k </code></entry><entry><code>attach-key </code></entry><entry>attach a PGP public key</entry></row>
+ <row><entry><code>d </code></entry><entry><code>edit-description </code></entry><entry>edit description on attachment</entry></row>
+ <row><entry><code>D </code></entry><entry><code>detach-file </code></entry><entry>detach a file</entry></row>
+ <row><entry><code>t </code></entry><entry><code>edit-to </code></entry><entry>edit the To field</entry></row>
+ <row><entry><code>ESC f </code></entry><entry><code>edit-from </code></entry><entry>edit the From field</entry></row>
+ <row><entry><code>r </code></entry><entry><code>edit-reply-to </code></entry><entry>edit the Reply-To field</entry></row>
+ <row><entry><code>c </code></entry><entry><code>edit-cc </code></entry><entry>edit the Cc field</entry></row>
+ <row><entry><code>b </code></entry><entry><code>edit-bcc </code></entry><entry>edit the Bcc field</entry></row>
+ <row><entry><code>y </code></entry><entry><code>send-message </code></entry><entry>send the message</entry></row>
+ <row><entry><code>s </code></entry><entry><code>edit-subject </code></entry><entry>edit the Subject</entry></row>
+ <row><entry><code>S </code></entry><entry><code>smime-menu </code></entry><entry>select S/MIME options</entry></row>
+ <row><entry><code>f </code></entry><entry><code>edit-fcc </code></entry><entry>specify an ``Fcc'' mailbox</entry></row>
+ <row><entry><code>p </code></entry><entry><code>pgp-menu </code></entry><entry>select PGP options</entry></row>
+ <row><entry><code>P </code></entry><entry><code>postpone-message </code></entry><entry>postpone this message until later</entry></row>
+ <row><entry><code>q </code></entry><entry><code>quit </code></entry><entry>quit (abort) sending the message</entry></row>
+ <row><entry><code>w </code></entry><entry><code>write-fcc </code></entry><entry>write the message to a folder</entry></row>
+ <row><entry><code>i </code></entry><entry><code>ispell </code></entry><entry>check spelling (if available on your system)</entry></row>
+ <row><entry><code>^F </code></entry><entry><code>forget-passphrase </code></entry><entry>wipe passphrase(s) from memory</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> The attach-message function
+ will prompt you for a folder to
+ attach messages from. You can now tag messages in that folder and
+ theywill be attached to the message you are sending. Note that
+ certainoperations like composing a new mail, replying, forwarding,
+ etc. are
+ not permitted when you are in that folder. The %r in <link linkend="status-format">
+ status-format
+ </link>
+ will change to
+ a 'A' to indicate that you are in attach-message mode.
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2>
+ <title>Replying </title> <!--{{{-->
+
+ <sect3>
+ <title>Simple Replies </title> <!--{{{-->
+
+ <para>
+ When you want to reply to an email message, select it in the index
+ menu and then press <literal>r</literal>. Mutt-ng's behaviour is
+ then similar to the
+ behaviour when you compose a message: first, you will be asked for
+ the recipient, then for the subject, and then, mutt-ng will start
+ the editor with the quote attribution and the quoted message. This
+ can e.g. look like the example below.
+ </para>
+
+ <para>
+
+ <screen>
+On Mon, Mar 07, 2005 at 05:02:12PM +0100, Michael Svensson wrote:
+> Bill, can you please send last month's progress report to Mr.
+> Morgan? We also urgently need the cost estimation for the new
+> production server that we want to set up before our customer's
+> project will go live.</screen>
+
+ </para>
+
+ <para>
+ You can start editing the email message. It is strongly
+ recommended to put your answer <emphasis>below</emphasis> the
+ quoted text and to
+ only quote what is really necessary and that you refer to. Putting
+ your answer on top of the quoted message, is, although very
+ widespread, very often not considered to be a polite way to answer
+ emails.
+ </para>
+
+ <para>
+ The quote attribution is configurable, by default it is set to
+
+ <screen>
+set attribution = "On %d, %n wrote:"</screen>
+
+ </para>
+
+ <para>
+ It can also be set to something more compact, e.g.
+
+ <screen>
+set attribution = "attribution="* %n <%a> [%(%y-%m-%d %H:%M)]:"</screen>
+
+ </para>
+
+ <para>
+ The example above results in the following attribution:
+
+ <screen>
+* Michael Svensson <svensson@foobar.com> [05-03-06 17:02]:
+> Bill, can you please send last month's progress report to Mr.
+> Morgan? We also urgently need the cost estimation for the new
+> production server that we want to set up before our customer's
+> project will go live.</screen>
+
+ </para>
+
+ <para>
+ Generally, try to keep your attribution short yet
+ information-rich. It is <emphasis>not</emphasis> the right place
+ for witty quotes,
+ long "attribution" novels or anything like that: the right place
+ for such things is - if at all - the email signature at the very
+ bottom of the message.
+ </para>
+
+ <para>
+ When you're done with writing your message, save and quit the
+ editor. As before, you will return to the compose menu, which is
+ used in the same way as before.
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect3>
+
+ <sect3>
+ <title>Group Replies </title> <!--{{{-->
+
+ <para>
+ In the situation where a group of people uses email as a
+ discussion, most of the emails will have one or more recipients,
+ and probably several "Cc:" recipients. The group reply
+ functionalityensures that when you press <literal>g</literal>
+ instead of <literal>r</literal> to do a reply,
+ each and every recipient that is contained in the original message
+ will receive a copy of the message, either as normal recipient or
+ as "Cc:" recipient.
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect3>
+
+ <sect3>
+ <title>List Replies </title> <!--{{{-->
+
+ <para>
+ When you use mailing lists, it's generally better to send your
+ reply to a message only to the list instead of the list and the
+ original author. To make this easy to use, mutt-ng features list
+ replies.
+ </para>
+
+ <para>
+ To do a list reply, simply press <literal>L</literal>. If the email
+ contains
+ a <literal>Mail-Followup-To:</literal> header, its value will be
+ used as reply
+ address. Otherwise, mutt-ng searches through all mail addresses in
+ the original message and tries to match them a list of regular
+ expressions which can be specified using the <literal>lists</literal> command.
+ If any of the regular expression matches, a mailing
+ list address has been found, and it will be used as reply address.
+ </para>
+
+ <para>
+
+ <screen>
+lists linuxevent@luga\.at vuln-dev@ mutt-ng-users@</screen>
+
+ </para>
+
+ <para>
+ Nowadays, most mailing list software like GNU Mailman adds a
+ <literal>Mail-Followup-To:</literal> header to their emails anyway,
+ so setting
+ <literal>lists</literal> is hardly ever necessary in practice.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect3>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2>
+ <title>Editing the message header </title>
+
+ <para>
+ When editing the header of your outgoing message, there are a couple
+ of
+ special features available.
+ </para>
+
+ <para>
+ If you specify
+
+ <literal>Fcc:</literal> <emphasis>filename</emphasis>
+
+ Mutt-ng will pick up <emphasis>filename</emphasis>
+ just as if you had used the <emphasis>edit-fcc</emphasis> function in
+ the <emphasis>compose</emphasis> menu.
+ </para>
+
+ <para>
+ You can also attach files to your message by specifying
+
+ <literal>Attach:</literal> <emphasis>filename</emphasis> [ <emphasis>
+ description
+ </emphasis>
+ ]
+
+ where <emphasis>filename</emphasis> is the file to attach and <emphasis>
+ description
+ </emphasis>
+ is an
+ optional string to use as the description of the attached file.
+ </para>
+
+ <para>
+ When replying to messages, if you remove the <emphasis>In-Reply-To:</emphasis> field from
+ the header field, Mutt-ng will not generate a <emphasis>References:</emphasis> field, which
+ allows you to create a new message thread.
+ </para>
+
+ <para>
+ Also see <link linkend="edit-headers">edit-headers</link>.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Using Mutt-ng with PGP </title>
+
+ <para>
+ If you want to use PGP, you can specify
+ </para>
+
+ <para>
+ <literal>Pgp:</literal> [ <literal>E</literal> | <literal>
+ S
+ </literal>
+ | <literal>S</literal><emphasis><id></emphasis> ]
+
+ </para>
+
+ <para>
+ ``E'' encrypts, ``S'' signs and
+ ``S<id>'' signs with the given key, setting <link linkend="pgp-sign-as">
+ pgp-sign-as
+ </link>
+ permanently.
+ </para>
+
+ <para>
+ If you have told mutt to PGP encrypt a message, it will guide you
+ through a key selection process when you try to send the message.
+ Mutt-ng will not ask you any questions about keys which have a
+ certified user ID matching one of the message recipients' mail
+ addresses. However, there may be situations in which there are
+ several keys, weakly certified user ID fields, or where no matching
+ keys can be found.
+ </para>
+
+ <para>
+ In these cases, you are dropped into a menu with a list of keys from
+ which you can select one. When you quit this menu, or mutt can't
+ find any matching keys, you are prompted for a user ID. You can, as
+ usually, abort this prompt using <literal>ˆG</literal>. When
+ you do so, mutt will
+ return to the compose screen.
+ </para>
+
+ <para>
+ Once you have successfully finished the key selection, the message
+ will be encrypted using the selected public keys, and sent out.
+ </para>
+
+ <para>
+ Most fields of the entries in the key selection menu (see also <link linkend="pgp-entry-format">
+ pgp-entry-format
+ </link>
+ )
+ have obvious meanings. But some explanations on the capabilities,
+ flags,
+ and validity fields are in order.
+ </para>
+
+ <para>
+ The flags sequence (%f) will expand to one of the following
+ flags:
+
+
+ <table>
+ <title>PGP Key Menu Flags</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Flag</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>R </code></entry><entry>The key has been revoked and can't be used.</entry></row>
+ <row><entry><code>X </code></entry><entry>The key is expired and can't be used.</entry></row>
+ <row><entry><code>d </code></entry><entry>You have marked the key as disabled.</entry></row>
+ <row><entry><code>c </code></entry><entry>There are unknown critical self-signature packets.</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ The capabilities field (%c) expands to a two-character
+ sequencerepresenting a key's capabilities. The first character gives
+ the key's encryption capabilities: A minus sign (<emphasis role="bold">
+ -
+ </emphasis>
+ )means
+ that the key cannot be used for encryption. A dot (<emphasis role="bold">
+ .
+ </emphasis>
+ )means that
+ it's marked as a signature key in one of the user IDs, but may
+ also be used for encryption. The letter <emphasis role="bold">e</emphasis> indicates that
+ this key can be used for encryption.
+ </para>
+
+ <para>
+ The second character indicates the key's signing capabilities. Once
+ again, a ``<emphasis role="bold">-</emphasis>'' implies ``not for
+ signing'', ``<emphasis role="bold">.</emphasis>'' implies
+ that the key is marked as an encryption key in one of the user-ids,
+ and
+ ``<emphasis role="bold">s</emphasis>'' denotes a key which can be
+ used for signing.
+ </para>
+
+ <para>
+ Finally, the validity field (%t) indicates how well-certified
+ a user-id
+ is. A question mark (<emphasis role="bold">?</emphasis>) indicates
+ undefined validity, a minus
+ character (<emphasis role="bold">-</emphasis>) marks an untrusted
+ association, a space character
+ means a partially trusted association, and a plus character (<emphasis role="bold">
+ +
+ </emphasis>
+ )
+ indicates complete validity.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Sending anonymous messages via mixmaster </title>
+
+ <para>
+ You may also have configured mutt to co-operate with Mixmaster, an
+ anonymous remailer. Mixmaster permits you to send your messages
+ anonymously using a chain of remailers. Mixmaster support in mutt is
+ for
+ mixmaster version 2.04 (beta 45 appears to be the latest) and 2.03.
+ It does not support earlier versions or the later so-called version 3
+ betas,
+ of which the latest appears to be called 2.9b23.
+ </para>
+
+ <para>
+ To use it, you'll have to obey certain restrictions. Most
+ important, you cannot use the <literal>Cc</literal> and <literal>Bcc</literal> headers. To tell
+ Mutt-ng to use mixmaster, you have to select a remailer chain, using
+ the mix function on the compose menu.
+ </para>
+
+ <para>
+ The chain selection screen is divided into two parts. In the
+ (larger) upper part, you get a list of remailers you may use. In
+ the lower part, you see the currently selected chain of remailers.
+ </para>
+
+ <para>
+ You can navigate in the chain using the <literal>chain-prev</literal>
+ and
+ <literal>chain-next</literal> functions, which are by default bound
+ to the left
+ and right arrows and to the <literal>h</literal> and <literal>l</literal> keys (think vi
+ keyboard bindings). To insert a remailer at the current chain
+ position, use the <literal>insert</literal> function. To append a
+ remailer behind
+ the current chain position, use <literal>select-entry</literal> or <literal>
+ append
+ </literal>
+ .
+ You can also delete entries from the chain, using the corresponding
+ function. Finally, to abandon your changes, leave the menu, or
+ <literal>accept</literal> them pressing (by default) the <literal>
+ Return
+ </literal>
+ key.
+ </para>
+
+ <para>
+ Note that different remailers do have different capabilities,
+ indicated in the %c entry of the remailer menu lines (see
+ <link linkend="mix-entry-format">mix-entry-format</link>). Most
+ important is
+ the ``middleman'' capability, indicated by a capital ``M'': This
+ means that the remailer in question cannot be used as the final
+ element of a chain, but will only forward messages to other
+ mixmaster remailers. For details on the other capabilities, please
+ have a look at the mixmaster documentation.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="forwarding-mail">
+ <title>Forwarding and Bouncing Mail </title>
+
+ <para>
+ Often, it is necessary to forward mails to other people.
+ Therefore, mutt-ng supports forwarding messages in two different
+ ways.
+ </para>
+
+ <para>
+ The first one is regular forwarding, as you probably know it from
+ other mail clients. You simply press <literal>f</literal>, enter the
+ recipient
+ email address, the subject of the forwarded email, and then you can
+ edit the message to be forwarded in the editor. The forwarded
+ message is separated from the rest of the message via the two
+ following markers:
+ </para>
+
+ <para>
+
+ <screen>
+----- Forwarded message from Lucas User <luser@example.com> -----
+
+From: Lucas User <luser@example.com>
+Date: Thu, 02 Dec 2004 03:08:34 +0100
+To: Michael Random <mrandom@example.com>
+Subject: Re: blackmail
+
+Pay me EUR 50,000.- cash or your favorite stuffed animal will die
+a horrible death.
+
+----- End forwarded message -----</screen>
+
+ </para>
+
+ <para>
+ When you're done with editing the mail, save and quit the editor,
+ and you will return to the compose menu, the same menu you also
+ encounter when composing or replying to mails.
+ </para>
+
+ <para>
+ The second mode of forwarding emails with mutt-ng is the
+ so-called <emphasis>bouncing</emphasis>: when you bounce an email to
+ another
+ address, it will be sent in practically the same format you send it
+ (except for headers that are created during transporting the
+ message). To bounce a message, press <literal>b</literal> and enter the
+ recipient
+ email address. By default, you are then asked whether you really
+ want to bounce the message to the specified recipient. If you answer
+ with yes, the message will then be bounced.
+ </para>
+
+ <para>
+ To the recipient, the bounced email will look as if he got it
+ like a regular email where he was <literal>Bcc:</literal> recipient.
+ The only
+ possibility to find out whether it was a bounced email is to
+ carefully study the email headers and to find out which host really
+ sent the email.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="postponing-mail">
+ <title>Postponing Mail </title>
+
+ <para>
+ At times it is desirable to delay sending a message that you have
+ already begun to compose. When the <emphasis>postpone-message</emphasis> function is
+ used in the <emphasis>compose</emphasis> menu, the body of your message
+ and attachments
+ are stored in the mailbox specified by the <link linkend="postponed">
+ postponed
+ </link>
+ variable. This means that you can recall the
+ message even if you exit Mutt-ng and then restart it at a later time.
+ </para>
+
+ <para>
+ Once a message is postponed, there are several ways to resume it. From
+ the
+ command line you can use the ``-p'' option, or if you <emphasis>compose</emphasis> a new
+ message from the <emphasis>index</emphasis> or <emphasis>pager</emphasis> you will be prompted if postponed
+ messages exist. If multiple messages are currently postponed, the
+ <emphasis>postponed</emphasis> menu will pop up and you can select
+ which message you would
+ like to resume.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> If you postpone a reply to a
+ message, the reply setting of
+ the message is only updated when you actually finish the message and
+ send it. Also, you must be in the same folder with the message you
+ replied to for the status of the message to be updated.
+ </para>
+
+ <para>
+ See also the <link linkend="postpone">postpone</link> quad-option.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <chapter>
+ <title>Configuration </title>
+
+ <sect1>
+ <title>Locations of Configuration Files </title>
+
+ <para>
+ While the default configuration (or ``preferences'') make Mutt-ng
+ usable right out
+ of the box, it is often desirable to tailor Mutt-ng to suit your own
+ tastes. When
+ Mutt-ng is first invoked, it will attempt to read the ``system''
+ configuration
+ file (defaults set by your local system administrator), unless the
+ ``-n'' <link linkend="commandline">commandline</link> option is
+ specified. This file is
+ typically <literal>/usr/local/share/muttng/Muttngrc</literal> or <literal>
+ /etc/Muttngrc
+ </literal>
+ ,
+ Mutt-ng users will find this file in <literal>
+ /usr/local/share/muttng/Muttrc
+ </literal>
+ or
+ <literal>/etc/Muttngrc</literal>. Mutt will next look for a file named <literal>
+ .muttrc
+ </literal>
+ in your home directory, Mutt-ng will look for <literal>.muttngrc</literal>. If this file
+ does not exist and your home directory has a subdirectory named <literal>
+ .mutt
+ </literal>
+ ,
+ mutt try to load a file named <literal>.muttng/muttngrc</literal>.
+ </para>
+
+ <para>
+ <literal>.muttrc</literal> (or <literal>.muttngrc</literal> for
+ Mutt-ng) is the file where you will
+ usually place your <link linkend="commands">commands</link> to
+ configure Mutt-ng.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="muttrc-syntax">
+ <title>Basic Syntax of Initialization Files </title>
+
+ <para>
+ An initialization file consists of a series of <link linkend="commands">
+ commands
+ </link>
+ .Each line of the file may contain one or more commands.
+ When multiple commands are used, they must be separated by a semicolon
+ (;).
+
+ <screen>
+set realname='Mutt-ng user' ; ignore x-</screen>
+
+ The hash mark, or pound sign
+ (``#''), is used as a ``comment'' character. You can use it to
+ annotate your initialization file. All text after the comment character
+ to the end of the line is ignored. For example,
+ </para>
+
+ <para>
+
+ <screen>
+my_hdr X-Disclaimer: Why are you listening to me? # This is a comment</screen>
+
+ </para>
+
+ <para>
+ Single quotes (') and double quotes (") can be used to quote
+ strings
+ which contain spaces or other special characters. The difference
+ between
+ the two types of quotes is similar to that of many popular shell
+ programs,
+ namely that a single quote is used to specify a literal string (one
+ that is
+ not interpreted for shell variables or quoting with a backslash
+ [see
+ next paragraph]), while double quotes indicate a string for which
+ should be evaluated. For example, backtics are evaluated inside of
+ double
+ quotes, but <emphasis role="bold">not</emphasis> for single quotes.
+ </para>
+
+ <para>
+ \ quotes the next character, just as in shells such as bash and
+ zsh.
+ For example, if want to put quotes ``"'' inside of a string, you
+ can use
+ ``\'' to force the next character to be a literal instead of
+ interpreted
+ character.
+
+ <screen>
+set realname="Michael \"MuttDude\" Elkins"</screen>
+
+ </para>
+
+ <para>
+ ``\\'' means to insert a literal ``\'' into the line.
+ ``\n'' and ``\r'' have their usual C meanings of linefeed and
+ carriage-return, respectively.
+ </para>
+
+ <para>
+ A \ at the end of a line can be used to split commands over
+ multiple lines, provided that the split points don't appear in the
+ middle of command names.
+ </para>
+
+ <para>
+ Please note that, unlike the various shells, mutt-ng interprets a
+ ``\''
+ at the end of a line also in comments. This allows you to disable a
+ command
+ split over multiple lines with only one ``#''.
+ </para>
+
+ <para>
+
+ <screen>
+# folder-hook . \
+set realname="Michael \"MuttDude\" Elkins"</screen>
+
+ </para>
+
+ <para>
+ When testing your config files, beware the following caveat. The
+ backslash
+ at the end of the commented line extends the current line with the next
+ line
+ - then referred to as a ``continuation line''. As the first line is
+ commented with a hash (#) all following continuation lines are also
+ part of a comment and therefore are ignored, too. So take care of
+ comments
+ when continuation lines are involved within your setup files!
+ </para>
+
+ <para>
+ Abstract example:
+ </para>
+
+ <para>
+
+ <screen>
+line1\
+line2a # line2b\
+line3\
+line4
+line5</screen>
+
+ </para>
+
+ <para>
+ line1 ``continues'' until line4. however, the part after the # is a
+ comment which includes line3 and line4. line5 is a new line of its own
+ and
+ thus is interpreted again.
+ </para>
+
+ <para>
+ The commands understood by mutt are explained in the next paragraphs.
+ For a complete list, see the <link linkend="commands">commands</link>.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Expansion within variables </title>
+
+ <para>
+ Besides just assign static content to variables, there's plenty of
+ ways of adding external and more or less dynamic content.
+ </para>
+
+ <sect2>
+ <title>Commands' Output </title>
+
+ <para>
+ It is possible to substitute the output of a Unix command in an
+ initialization file. This is accomplished by enclosing the command
+ in backquotes (``) as in, for example:
+ </para>
+
+ <para>
+
+ <screen>
+my_hdr X-Operating-System: `uname -a`</screen>
+
+ </para>
+
+ <para>
+ The output of the Unix command ``uname -a'' will be substituted
+ before the line is parsed. Note that since initialization files are
+ line oriented, only the first line of output from the Unix command
+ will be substituted.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Environment Variables </title>
+
+ <para>
+ UNIX environments can be accessed like the way it is done in
+ shells like sh and bash: Prepend the name of the environment by a
+ ``$'' sign. For example,
+ </para>
+
+ <para>
+
+ <screen>
+set record=+sent_on_$HOSTNAME</screen>
+
+ </para>
+
+ <para>
+ sets the <link linkend="record">record</link> variable to the
+ string <emphasis>+sent_on_</emphasis> and appends the
+ value of the evironment
+ variable <literal>$HOSTNAME</literal>.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> There will be no warning if an
+ environment variable
+ is not defined. The result will of the expansion will then be empty.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Configuration Variables </title>
+
+ <para>
+ As for environment variables, the values of all configuration
+ variables as string can be used in the same way, too. For example,
+ </para>
+
+ <para>
+
+ <screen>
+set imap_home_namespace = $folder</screen>
+
+ </para>
+
+ <para>
+ would set the value of <link linkend="imap-home-namespace">
+ imap-home-namespace
+ </link>
+ to the value to
+ which <link linkend="folder">folder</link> is <emphasis>currently</emphasis> set
+ to.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> There're no logical links
+ established in such cases so
+ that the the value for <link linkend="imap-home-namespace">
+ imap-home-namespace
+ </link>
+ won't change even
+ if <link linkend="folder">folder</link> gets changed.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> There will be no warning if a
+ configuration variable
+ is not defined or is empty. The result will of the expansion will
+ then be empty.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Self-Defined Variables </title>
+
+ <para>
+ Mutt-ng flexibly allows users to define their own variables. To
+ avoid conflicts with the standard set and to prevent misleading
+ error messages, there's a reserved namespace for them: all
+ user-defined variables must be prefixed with <literal>user_</literal> and can be
+ used just like any ordinary configuration or environment
+ variable.
+ </para>
+
+ <para>
+ For example, to view the manual, users can either define two
+ macros like the following
+ </para>
+
+ <para>
+
+ <screen>
+macro generic <F1> "!less -r /path/to/manual" "Show manual"
+macro pager <F1> "!less -r /path/to/manual" "Show manual"</screen>
+
+ </para>
+
+ <para>
+ for <literal>generic</literal>, <literal>pager</literal> and <literal>
+ index
+ </literal>
+ .The alternative is to
+ define a custom variable like so:
+ </para>
+
+ <para>
+
+ <screen>
+set user_manualcmd = "!less -r /path/to_manual"
+macro generic <F1> "$user_manualcmd<enter>" "Show manual"
+macro pager <F1> "$user_manualcmd<enter>" "Show manual"
+macro index <F1> "$user_manualcmd<enter>" "Show manual"</screen>
+
+ </para>
+
+ <para>
+ to re-use the command sequence as in:
+ </para>
+
+ <para>
+
+ <screen>
+macro index <F2> "$user_manualcmd | grep '\^[ ]\\+~. '" "Show Patterns"</screen>
+
+ </para>
+
+ <para>
+ Using this feature, arbitrary sequences can be defined once and
+ recalled and reused where necessary. More advanced scenarios could
+ include to save a variable's value at the beginning of macro
+ sequence and restore it at end.
+ </para>
+
+ <para>
+ When the variable is first defined, the first value it gets
+ assigned is also the initial value to which it can be reset using
+ the <literal>reset</literal> command.
+ </para>
+
+ <para>
+ The complete removal is done via the <literal>unset</literal>
+ keyword.
+ </para>
+
+ <para>
+ After the following sequence:
+ </para>
+
+ <para>
+
+ <screen>
+set user_foo = 42
+set user_foo = 666</screen>
+
+ </para>
+
+ <para>
+ the variable <literal>$user_foo</literal> has a current value
+ of 666 and an
+ initial of 42. The query
+ </para>
+
+ <para>
+
+ <screen>
+set ?user_foo</screen>
+
+ </para>
+
+ <para>
+ will show 666. After doing the reset via
+ </para>
+
+ <para>
+
+ <screen>
+reset user_foo</screen>
+
+ </para>
+
+ <para>
+ a following query will give 42 as the result. After unsetting it
+ via
+ </para>
+
+ <para>
+
+ <screen>
+unset user_foo</screen>
+
+ </para>
+
+ <para>
+ any query or operation (except the noted expansion within other
+ statements) will lead to an error message.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Pre-Defined Variables </title>
+
+ <para>
+ In order to allow users to share one setup over a number of
+ different machines without having to change its contents, there's a
+ number of pre-defined variables. These are prefixed with
+ <literal>muttng_</literal> and are read-only, i.e. they cannot
+ be set, unset or
+ reset. The reference chapter lists all available variables.
+ </para>
+
+ <para>
+ <emphasis> Please consult the local copy of your manual for their
+ values as they may differ from different manual sources.
+ </emphasis>
+ Where
+ the manual is installed in can be queried (already using such a
+ variable) by running:
+ </para>
+
+ <para>
+
+ <screen>
+muttng -Q muttng_docdir</screen>
+
+ </para>
+
+ <para>
+ To extend the example for viewing the manual via self-defined
+ variables, it can be made more readable and more portable by
+ changing the real path in:
+ </para>
+
+ <para>
+
+ <screen>
+set user_manualcmd = '!less -r /path/to_manual'</screen>
+
+ </para>
+
+ <para>
+ to:
+ </para>
+
+ <para>
+
+ <screen>
+set user_manualcmd = "!less -r $muttng_docdir/manual.txt"</screen>
+
+ </para>
+
+ <para>
+ which works everywhere if a manual is installed.
+ </para>
+
+ <para>
+ Please note that by the type of quoting, muttng determines when
+ to expand these values: when it finds double quotes, the value will
+ be expanded during reading the setup files but when it finds single
+ quotes, it'll expand it at runtime as needed.
+ </para>
+
+ <para>
+ For example, the statement
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . "set user_current_folder = $muttng_folder_name"</screen>
+
+ </para>
+
+ <para>
+ will be already be translated to the following when reading the
+ startup files:
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . "set user_current_folder = some_folder"</screen>
+
+ </para>
+
+ <para>
+ with <literal>some_folder</literal> being the name of the
+ first folder muttng
+ opens. On the contrary,
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . 'set user_current_folder = $muttng_folder_name'</screen>
+
+ </para>
+
+ <para>
+ will be executed at runtime because of the single quotes so that
+ <literal>user_current_folder</literal> will always have
+ the value of the currently
+ opened folder.
+ </para>
+
+ <para>
+ A more practical example is:
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . 'source ~/.mutt/score-$muttng_folder_name'</screen>
+
+ </para>
+
+ <para>
+ which can be used to source files containing score commands
+ depending on the folder the user enters.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Type Conversions </title>
+
+ <para>
+ A note about variable's types during conversion: internally
+ values are stored in internal types but for any dump/query or set
+ operation they're converted to and from string. That means that
+ there's no need to worry about types when referencing any variable.
+ As an example, the following can be used without harm (besides
+ makeing muttng very likely behave strange):
+ </para>
+
+ <para>
+
+ <screen>
+set read_inc = 100
+set folder = $read_inc
+set read_inc = $folder
+set user_magic_number = 42
+set folder = $user_magic_number</screen>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="alias">
+ <title>Defining/Using aliases </title>
+
+ <para>
+ Usage: <literal>alias</literal> <emphasis>key</emphasis> <emphasis>
+ address
+ </emphasis>
+ [ , <emphasis>address</emphasis>, ... ]
+ </para>
+
+ <para>
+ It's usually very cumbersome to remember or type out the address of
+ someone
+ you are communicating with. Mutt-ng allows you to create ``aliases''
+ which map
+ a short string to a full address.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> if you want to create an alias
+ for a group (by specifying more than
+ one address), you <emphasis role="bold">must</emphasis> separate the
+ addresses with a comma (``,'').
+ </para>
+
+ <para>
+ To remove an alias or aliases (``*'' means all aliases):
+ </para>
+
+ <para>
+ <literal>unalias</literal> [ * | <emphasis>key</emphasis> <emphasis>
+ ...
+ </emphasis>
+ ]
+ </para>
+
+ <para>
+
+ <screen>
+alias muttdude me@cs.hmc.edu (Michael Elkins)
+alias theguys manny, moe, jack</screen>
+
+ </para>
+
+ <para>
+ Unlike other mailers, Mutt-ng doesn't require aliases to be defined
+ in a special file. The <literal>alias</literal> command can appear
+ anywhere in
+ a configuration file, as long as this file is <link linkend="source">
+ source
+ </link>
+ .Consequently, you can have multiple alias files, or
+ you can have all aliases defined in your muttrc.
+ </para>
+
+ <para>
+ On the other hand, the <link linkend="create-alias">create-alias</link>
+ function can use only one file, the one pointed to by the <link linkend="alias-file">
+ alias-file
+ </link>
+ variable (which is
+ <literal>˜/.muttrc</literal> by default). This file is not
+ special either,
+ in the sense that Mutt-ng will happily append aliases to any file, but
+ in
+ order for the new aliases to take effect you need to explicitly <link linkend="source">
+ source
+ </link>
+ this file too.
+ </para>
+
+ <para>
+ For example:
+ </para>
+
+ <para>
+
+ <screen>
+source /usr/local/share/Mutt-ng.aliases
+source ~/.mail_aliases
+set alias_file=~/.mail_aliases</screen>
+
+ </para>
+
+ <para>
+ To use aliases, you merely use the alias at any place in mutt where
+ muttprompts for addresses, such as the <emphasis>To:</emphasis> or <emphasis>
+ Cc:
+ </emphasis>
+ prompt. You can
+ also enter aliases in your editor at the appropriate headers if you
+ have the
+ <link linkend="edit-headers">edit-headers</link> variable set.
+ </para>
+
+ <para>
+ In addition, at the various address prompts, you can use the tab
+ character
+ to expand a partial alias to the full alias. If there are multiple
+ matches,
+ mutt will bring up a menu with the matching aliases. In order to be
+ presented with the full list of aliases, you must hit tab with out a
+ partial
+ alias, such as at the beginning of the prompt or after a comma denoting
+ multiple addresses.
+ </para>
+
+ <para>
+ In the alias menu, you can select as many aliases as you want with the
+ <emphasis>select-entry</emphasis> key (default: RET), and use the <emphasis>
+ exit
+ </emphasis>
+ key
+ (default: q) to return to the address prompt.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="bind">
+ <title>Changing the default key bindings </title>
+
+ <para>
+ Usage: <literal>bind</literal> <emphasis>map</emphasis> <emphasis>key</emphasis> <emphasis>
+ function
+ </emphasis>
+ </para>
+
+ <para>
+ This command allows you to change the default key bindings (operation
+ invoked when pressing a key).
+ </para>
+
+ <para>
+ <emphasis>map</emphasis> specifies in which menu the binding belongs.
+ Multiple maps may
+ be specified by separating them with commas (no additional whitespace
+ isallowed). The currently defined maps are:
+ </para>
+
+ <para>
+ <anchor id="maps"/>
+ <variablelist>
+
+ <varlistentry>
+ <term>generic</term>
+ <listitem>
+ <para>
+ This is not a real menu, but is used as a fallback for all of
+ the other
+ menus except for the pager and editor modes. If a key is not
+ defined in
+ another menu, Mutt-ng will look for a binding to use in this
+ menu. This allows
+ you to bind a key to a certain function in multiple menus
+ instead of having
+ multiple bind statements to accomplish the same task.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>alias</term>
+ <listitem>
+ <para>
+ The alias menu is the list of your personal aliases as defined
+ in your
+ muttrc. It is the mapping from a short alias name to the full
+ email
+ address(es) of the recipient(s).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>attach</term>
+ <listitem>
+ <para>
+ The attachment menu is used to access the attachments on
+ received messages.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>browser</term>
+ <listitem>
+ <para>
+ The browser is used for both browsing the local directory
+ structure, and for
+ listing all of your incoming mailboxes.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>editor</term>
+ <listitem>
+ <para>
+ The editor is the line-based editor the user enters text data.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>index</term>
+ <listitem>
+ <para>
+ The index is the list of messages contained in a mailbox.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>compose</term>
+ <listitem>
+ <para>
+ The compose menu is the screen used when sending a new message.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>pager</term>
+ <listitem>
+ <para>
+ The pager is the mode used to display message/attachment data,
+ and help
+ listings.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>pgp</term>
+ <listitem>
+ <para>
+ The pgp menu is used to select the OpenPGP keys used for
+ encrypting outgoing
+ messages.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>postpone</term>
+ <listitem>
+ <para>
+ The postpone menu is similar to the index menu, except is used
+ when
+ recalling a message the user was composing, but saved until
+ later.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ <emphasis>key</emphasis> is the key (or key sequence) you wish to bind.
+ To specify a
+ control character, use the sequence <emphasis>\Cx</emphasis>,
+ where <emphasis>x</emphasis> is the
+ letter of the control character (for example, to specify control-A use
+ ``\Ca''). Note that the case of <emphasis>x</emphasis> as well as
+ <emphasis>\C</emphasis> is
+ ignored, so that <emphasis>\CA</emphasis>, <emphasis>\Ca</emphasis>, <emphasis>
+ \cA
+ </emphasis>
+ and <emphasis>\ca</emphasis> are all
+ equivalent. An alternative form is to specify the key as a three digit
+ octal number prefixed with a ``\'' (for example <emphasis>
+ \177
+ </emphasis>
+ is
+ equivalent to <emphasis>\c?</emphasis>).
+ </para>
+
+ <para>
+ In addition, <emphasis>key</emphasis> may consist of:
+ </para>
+
+ <para>
+
+ <table>
+ <title>Alternative Key Names</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Sequence</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>\t </code></entry><entry>tab</entry></row>
+ <row><entry><code><tab> </code></entry><entry>tab</entry></row>
+ <row><entry><code><backtab> </code></entry><entry>backtab / shift-tab</entry></row>
+ <row><entry><code>\r </code></entry><entry>carriage return</entry></row>
+ <row><entry><code>\n </code></entry><entry>newline</entry></row>
+ <row><entry><code>\e </code></entry><entry>escape</entry></row>
+ <row><entry><code><esc> </code></entry><entry>escape</entry></row>
+ <row><entry><code><up> </code></entry><entry>up arrow</entry></row>
+ <row><entry><code><down> </code></entry><entry>down arrow</entry></row>
+ <row><entry><code><left> </code></entry><entry>left arrow</entry></row>
+ <row><entry><code><right> </code></entry><entry>right arrow</entry></row>
+ <row><entry><code><pageup> </code></entry><entry>Page Up</entry></row>
+ <row><entry><code><pagedown> </code></entry><entry>Page Down</entry></row>
+ <row><entry><code><backspace> </code></entry><entry>Backspace</entry></row>
+ <row><entry><code><delete> </code></entry><entry>Delete</entry></row>
+ <row><entry><code><insert> </code></entry><entry>Insert</entry></row>
+ <row><entry><code><enter> </code></entry><entry>Enter</entry></row>
+ <row><entry><code><return> </code></entry><entry>Return</entry></row>
+ <row><entry><code><home> </code></entry><entry>Home</entry></row>
+ <row><entry><code><end> </code></entry><entry>End</entry></row>
+ <row><entry><code><space> </code></entry><entry>Space bar</entry></row>
+ <row><entry><code><f1> </code></entry><entry>function key 1</entry></row>
+ <row><entry><code><f10> </code></entry><entry>function key 10</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ <emphasis>key</emphasis> does not need to be enclosed in quotes unless
+ it contains a
+ space (`` '').
+ </para>
+
+ <para>
+ <emphasis>function</emphasis> specifies which action to take when <emphasis>
+ key
+ </emphasis>
+ is pressed.
+ For a complete list of functions, see the <link linkend="functions">
+ functions
+ </link>
+ .The special function <literal>noop</literal> unbinds the specified key
+ sequence.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="charset-hook">
+ <title>Defining aliases for character sets </title>
+
+ <para>
+ Usage: <literal>charset-hook</literal> <emphasis>alias</emphasis> <emphasis>
+ charset
+ </emphasis>
+
+ Usage: <literal>iconv-hook</literal> <emphasis>charset</emphasis> <emphasis>
+ local-charset
+ </emphasis>
+ </para>
+
+ <para>
+ The <literal>charset-hook</literal> command defines an alias for a
+ character set.
+ This is useful to properly display messages which are tagged with a
+ character set name not known to mutt.
+ </para>
+
+ <para>
+ The <literal>iconv-hook</literal> command defines a system-specific
+ name for a
+ character set. This is helpful when your systems character
+ conversion library insists on using strange, system-specific names
+ for character sets.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="folder-hook">
+ <title>Setting variables based upon mailbox </title>
+
+ <para>
+ Usage: <literal>folder-hook</literal> [!]<emphasis>regexp</emphasis> <emphasis>
+ command
+ </emphasis>
+ </para>
+
+ <para>
+ It is often desirable to change settings based on which mailbox you are
+ reading. The folder-hook command provides a method by which you can
+ execute
+ any configuration command. <emphasis>regexp</emphasis> is a regular
+ expression specifying
+ in which mailboxes to execute <emphasis>command</emphasis> before
+ loading. If a mailbox
+ matches multiple folder-hook's, they are executed in the order given in
+ the
+ muttrc.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> if you use the ``!'' shortcut
+ for <link linkend="spoolfile">spoolfile</link> at the beginning of the
+ pattern, you must place it
+ inside of double or single quotes in order to distinguish it from the
+ logical <emphasis>not</emphasis> operator for the expression.
+ </para>
+
+ <para>
+ Note that the settings are <emphasis>not</emphasis> restored when you
+ leave the mailbox.
+ For example, a command action to perform is to change the sorting
+ methodbased upon the mailbox being read:
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook mutt set sort=threads</screen>
+
+ </para>
+
+ <para>
+ However, the sorting method is not restored to its previous value when
+ reading a different mailbox. To specify a <emphasis>default</emphasis>
+ command, use the
+ pattern ``.'':
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . set sort=date-sent</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="macro">
+ <title>Keyboard macros </title>
+
+ <para>
+ Usage: <literal>macro</literal> <emphasis>menu</emphasis> <emphasis>key</emphasis> <emphasis>
+ sequence
+ </emphasis>
+ [ <emphasis>description</emphasis> ]
+ </para>
+
+ <para>
+ Macros are useful when you would like a single key to perform a series
+ of
+ actions. When you press <emphasis>key</emphasis> in menu <emphasis>
+ menu
+ </emphasis>
+ ,Mutt-ng will behave as if
+ you had typed <emphasis>sequence</emphasis>. So if you have a common
+ sequence of commands
+ you type, you can create a macro to execute those commands with a
+ singlekey.
+ </para>
+
+ <para>
+ <emphasis>menu</emphasis> is the <link linkend="maps">maps</link> which
+ the macro will be bound.
+ Multiple maps may be specified by separating multiple menu arguments by
+ commas. Whitespace may not be used in between the menu arguments and
+ thecommas separating them.
+ </para>
+
+ <para>
+ <emphasis>key</emphasis> and <emphasis>sequence</emphasis> are expanded
+ by the same rules as the <link linkend="bind">bind</link>. There are
+ some additions however. The
+ first is that control characters in <emphasis>sequence</emphasis> can
+ also be specified
+ as <emphasis>ˆx</emphasis>. In order to get a caret (`ˆ'')
+ you need to use
+ <emphasis>ˆˆ</emphasis>. Secondly, to specify a certain key
+ such as <emphasis>up</emphasis>
+ or to invoke a function directly, you can use the format
+ <emphasis><key name></emphasis> and <emphasis><function
+ name>
+ </emphasis>
+ .For a listing of key
+ names see the section on <link linkend="bind">bind</link>. Functions
+ are listed in the <link linkend="functions">functions</link>.
+ </para>
+
+ <para>
+ The advantage with using function names directly is that the macros
+ willwork regardless of the current key bindings, so they are not
+ dependent on
+ the user having particular key definitions. This makes them more
+ robustand portable, and also facilitates defining of macros in files
+ used by more
+ than one user (eg. the system Muttngrc).
+ </para>
+
+ <para>
+ Optionally you can specify a descriptive text after <emphasis>sequence</emphasis>,
+ which is shown in the help screens.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> Macro definitions (if any)
+ listed in the help screen(s), are
+ silently truncated at the screen width, and are not wrapped.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="color">
+ <title>Using color and mono video attributes </title>
+
+ <para>
+ Usage: <literal>color</literal> <emphasis>object</emphasis> <emphasis>
+ foreground
+ </emphasis>
+ <emphasis>background</emphasis> [ <emphasis>regexp</emphasis>
+ ]
+
+ Usage: <literal>color</literal> index <emphasis>foreground</emphasis> <emphasis>
+ background
+ </emphasis>
+ <emphasis>pattern</emphasis>
+
+ Usage: <literal>uncolor</literal> index <emphasis>pattern</emphasis>
+ [ <emphasis>pattern</emphasis> ... ]
+
+ </para>
+
+ <para>
+ If your terminal supports color, you can spice up Mutt-ng by creating
+ your own
+ color scheme. To define the color of an object (type of information),
+ you
+ must specify both a foreground color <emphasis role="bold">and</emphasis> a background color (it is not
+ possible to only specify one or the other).
+ </para>
+
+ <para>
+ <emphasis>object</emphasis> can be one of:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ attachment
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ body (match <emphasis>regexp</emphasis> in the body of messages)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ bold (highlighting bold patterns in the body of messages)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ error (error messages printed by Mutt-ng)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ header (match <emphasis>regexp</emphasis> in the message header)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ hdrdefault (default color of the message header in the pager)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ index (match <emphasis>pattern</emphasis> in the message index)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ indicator (arrow or bar used to indicate the current item in a
+ menu)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ markers (the ``+'' markers at the beginning of wrapped lines in
+ the pager)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ message (informational messages)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ normal
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ quoted (text matching <link linkend="quote-regexp">quote-regexp</link> in the body of a message)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ quoted1, quoted2, ..., quoted<emphasis role="bold">N</emphasis>
+ (higher levels of quoting)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ search (highlighting of words in the pager)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ signature
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ status (mode lines used to display info about the mailbox or
+ message)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ tilde (the ``˜'' used to pad blank lines in the pager)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ tree (thread tree drawn in the message index and attachment menu)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ underline (highlighting underlined patterns in the body of
+ messages)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ <emphasis>foreground</emphasis> and <emphasis>background</emphasis> can
+ be one of the following:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ white
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ black
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ green
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ magenta
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ blue
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ cyan
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ yellow
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ red
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ default
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ color<emphasis>x</emphasis>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ <emphasis>foreground</emphasis> can optionally be prefixed with the
+ keyword <literal>bright</literal> to make
+ the foreground color boldfaced (e.g., <literal>brightred</literal>).
+ </para>
+
+ <para>
+ If your terminal supports it, the special keyword <emphasis>default</emphasis> can be
+ used as a transparent color. The value <emphasis>brightdefault</emphasis> is also valid.
+ If Mutt-ng is linked against the <emphasis>S-Lang</emphasis> library,
+ you also need to set
+ the <emphasis>COLORFGBG</emphasis> environment variable to the default
+ colors of your
+ terminal for this to work; for example (for Bourne-like shells):
+ </para>
+
+ <para>
+
+ <screen>
+set COLORFGBG="green;black"
+export COLORFGBG</screen>
+
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> The <emphasis>S-Lang</emphasis>
+ library requires you to use the <emphasis>lightgray</emphasis>
+ and <emphasis>brown</emphasis> keywords instead of <emphasis>white</emphasis> and <emphasis>
+ yellow
+ </emphasis>
+ when
+ setting this variable.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> The uncolor command can be
+ applied to the index object only. It
+ removes entries from the list. You <emphasis role="bold">must</emphasis> specify the same pattern
+ specified in the color command for it to be removed. The pattern ``*''
+ is
+ a special token which means to clear the color index list of all
+ entries.
+ </para>
+
+ <para>
+ Mutt-ng also recognizes the keywords <emphasis>color0</emphasis>, <emphasis>
+ color1
+ </emphasis>
+ ,…,
+ <emphasis>color</emphasis><emphasis role="bold">N-1</emphasis> (<emphasis role="bold">
+ N
+ </emphasis>
+ being the number of colors supported
+ by your terminal). This is useful when you remap the colors for your
+ display (for example by changing the color associated with <emphasis>
+ color2
+ </emphasis>
+ for your xterm), since color names may then lose their normal meaning.
+ </para>
+
+ <para>
+ If your terminal does not support color, it is still possible change
+ the video
+ attributes through the use of the ``mono'' command:
+ </para>
+
+ <para>
+ Usage: <literal>mono</literal> <emphasis><object>
+ <attribute>
+ </emphasis>
+ [ <emphasis>regexp</emphasis> ]
+
+ Usage: <literal>mono</literal> index <emphasis>attribute</emphasis> <emphasis>
+ pattern
+ </emphasis>
+
+ Usage: <literal>unmono</literal> index <emphasis>pattern</emphasis>
+ [ <emphasis>pattern</emphasis> ... ]
+
+ </para>
+
+ <para>
+ where <emphasis>attribute</emphasis> is one of the following:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ none
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ bold
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ underline
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ reverse
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ standout
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="ignore">
+ <title>Ignoring (weeding) unwanted message headers </title>
+
+ <para>
+ Usage: <literal>[un]ignore</literal> <emphasis>pattern</emphasis> [ <emphasis>
+ pattern
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ Messages often have many header fields added by automatic processing
+ systems,
+ or which may not seem useful to display on the screen. This command
+ allows
+ you to specify header fields which you don't normally want to see.
+ </para>
+
+ <para>
+ You do not need to specify the full header field name. For example,
+ ``ignore content-'' will ignore all header fields that begin with the
+ pattern
+ ``content-''. ``ignore *'' will ignore all headers.
+ </para>
+
+ <para>
+ To remove a previously added token from the list, use the ``unignore''
+ command.
+ The ``unignore'' command will make Mutt-ng display headers with the
+ given pattern.
+ For example, if you do ``ignore x-'' it is possible to ``unignore
+ x-mailer''.
+ </para>
+
+ <para>
+ ``unignore *'' will remove all tokens from the ignore list.
+ </para>
+
+ <para>
+ For example:
+
+ <screen>
+# Sven's draconian header weeding
+ignore *
+unignore from date subject to cc
+unignore organization organisation x-mailer: x-newsreader: x-mailing-list:
+unignore posted-to:</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="alternates">
+ <title>Alternative addresses </title>
+
+ <para>
+ Usage: <literal>[un]alternates</literal> <emphasis>regexp</emphasis> [ <emphasis>
+ regexp
+ </emphasis>
+ ... ]
+
+ </para>
+
+ <para>
+ With various functions, mutt will treat messages differently,
+ depending on whether you sent them or whether you received them from
+ someone else. For instance, when replying to a message that you
+ sent to a different party, mutt will automatically suggest to send
+ the response to the original message's recipients -- responding to
+ yourself won't make much sense in many cases. (See <link linkend="reply-to">
+ reply-to
+ </link>
+ .)
+ </para>
+
+ <para>
+ Many users receive e-mail under a number of different addresses. To
+ fully use mutt's features here, the program must be able to
+ recognize what e-mail addresses you receive mail under. That's the
+ purpose of the <literal>alternates</literal> command: It takes a list
+ of regular
+ expressions, each of which can identify an address under which you
+ receive e-mail.
+ </para>
+
+ <para>
+ The <literal>unalternates</literal> command can be used to write
+ exceptions to
+ <literal>alternates</literal> patterns. If an address matches something
+ in an
+ <literal>alternates</literal> command, but you nonetheless do not think
+ it is
+ from you, you can list a more precise pattern under an <literal>
+ unalternates
+ </literal>
+ command.
+ </para>
+
+ <para>
+ To remove a regular expression from the <literal>alternates</literal>
+ list, use the
+ <literal>unalternates</literal> command with exactly the same <emphasis>
+ regexp
+ </emphasis>
+ .
+ Likewise, if the <emphasis>regexp</emphasis> for a <literal>alternates</literal> command matches
+ an entry on the <literal>unalternates</literal> list, that <literal>
+ unalternates
+ </literal>
+ entry will be removed. If the <emphasis>regexp</emphasis> for <literal>
+ unalternates
+ </literal>
+ is ``*'', <emphasis>all entries</emphasis> on <literal>alternates</literal> will be removed.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Format = Flowed </title>
+
+ <sect2>
+ <title>Introduction </title>
+
+ <para>
+ Mutt-ng contains support for so-called <literal>format=flowed</literal> messages.
+ In the beginning of email, each message had a fixed line width, and
+ it was enough for displaying them on fixed-size terminals. But times
+ changed, and nowadays hardly anybody still uses fixed-size terminals:
+ more people nowaydays use graphical user interfaces, with dynamically
+ resizable windows. This led to the demand of a new email format that
+ makes it possible for the email client to make the email look nice
+ in a resizable window without breaking quoting levels and creating
+ an incompatible email format that can also be displayed nicely on
+ old fixed-size terminals.
+ </para>
+
+ <para>
+ For introductory information on <literal>format=flowed</literal>
+ messages, see
+ <ulink URL="http://www.joeclark.org/ffaq.html"><http://www.joeclark.org/ffaq.html></ulink>.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Receiving: Display Setup </title>
+
+ <para>
+ When you receive emails that are marked as <literal>format=flowed</literal>
+ messages, and is formatted correctly, mutt-ng will try to reformat
+ the message to optimally fit on your terminal. If you want a fixed
+ margin on the right side of your terminal, you can set the
+ following:
+ </para>
+
+ <para>
+
+ <screen>
+set wrapmargin = 10</screen>
+
+ </para>
+
+ <para>
+ The code above makes the line break 10 columns before the right
+ side of the terminal.
+ </para>
+
+ <para>
+ If your terminal is so wide that the lines are embarrassingly long,
+ you can also set a maximum line length:
+ </para>
+
+ <para>
+
+ <screen>
+set max_line_length = 120</screen>
+
+ </para>
+
+ <para>
+ The example above will give you lines not longer than 120
+ characters.
+ </para>
+
+ <para>
+ When you view at <literal>format=flowed</literal> messages, you will
+ often see
+ the quoting hierarchy like in the following example:
+ </para>
+
+ <para>
+
+ <screen>
+>Bill, can you please send last month's progress report to Mr.
+>Morgan? We also urgently need the cost estimation for the new
+>production server that we want to set up before our customer's
+>project will go live.</screen>
+
+ </para>
+
+ <para>
+ This obviously doesn't look very nice, and it makes it very
+ hard to differentiate between text and quoting character. The
+ solution is to configure mutt-ng to "stuff" the quoting:
+ </para>
+
+ <para>
+
+ <screen>
+set stuff_quoted</screen>
+
+ </para>
+
+ <para>
+ This will lead to a nicer result that is easier to read:
+ </para>
+
+ <para>
+
+ <screen>
+> Bill, can you please send last month's progress report to Mr.
+> Morgan? We also urgently need the cost estimation for the new
+> production server that we want to set up before our customer's
+> project will go live.</screen>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Sending </title>
+
+ <para>
+ If you want mutt-ng to send emails with <literal>format=flowed</literal> set, you
+ need to explicitly set it:
+ </para>
+
+ <para>
+
+ <screen>
+set text_flowed</screen>
+
+ </para>
+
+ <para>
+ Additionally, you have to use an editor which supports writing
+ <literal>format=flowed</literal>-conforming emails. For vim, this is
+ done by
+ adding <literal>w</literal> to the formatoptions (see <literal>:h
+ formatoptions
+ </literal>
+ and
+ <literal>:h fo-table</literal>) when writing emails.
+ </para>
+
+ <para>
+ Also note that <emphasis>format=flowed</emphasis> knows about
+ ``space-stuffing'',
+ that is, when sending messages, some kinds of lines have to be
+ indented with a single space on the sending side. On the receiving
+ side, the first space (if any) is removed. As a consequence and in
+ addition to the above simple setting, please keep this in mind when
+ making manual formattings within the editor. Also note that mutt-ng
+ currently violates the standard (RfC 3676) as it does not
+ space-stuff lines starting with:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <literal>></literal> This is <emphasis>not</emphasis> the
+ quote character but a right
+ angle used for other reasons
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>From</literal> with a trailing space.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ just a space for formatting reasons
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ Please make sure that you manually prepend a space to each of them.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Additional Notes</title>
+
+ <para>
+ For completeness, the <link linkend="delete-space">delete-space</link> variable provides the mechanism
+ to generate a <literal>DelSp=yes</literal> parameter on <emphasis>
+ outgoing
+ </emphasis>
+ messages.
+ According to the standard, clients receiving a <literal>format=flowed</literal>
+ messages should delete the last space of a flowed line but still
+ interpret the line as flowed. Because flowed lines usually contain
+ only one space at the end, this parameter would make the receiving
+ client concatenate the last word of the previous with the first of
+ the current line <emphasis>without</emphasis> a space. This makes
+ ordinary text
+ unreadable and is intended for languages rarely using spaces. So
+ please use this setting only if you're sure what you're doing.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="lists">
+ <title>Mailing lists </title>
+
+ <para>
+ Usage: <literal>[un]lists</literal> <emphasis>regexp</emphasis> [ <emphasis>
+ regexp
+ </emphasis>
+ ... ]
+
+ Usage: <literal>[un]subscribe</literal> <emphasis>regexp</emphasis> [ <emphasis>
+ regexp
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ Mutt-ng has a few nice features for <link linkend="using-lists">
+ using-lists
+ </link>
+ .In order to take advantage of them, you must
+ specify which addresses belong to mailing lists, and which mailing
+ lists you are subscribed to. Once you have done this, the <link linkend="func-list-reply">
+ list-reply
+ </link>
+ function will work for all known lists.
+ Additionally, when you send a message to a subscribed list, mutt will
+ add a Mail-Followup-To header to tell other users' mail user agents
+ not to send copies of replies to your personal address. Note that
+ the Mail-Followup-To header is a non-standard extension which is not
+ supported by all mail user agents. Adding it is not bullet-proof
+ against
+ receiving personal CCs of list messages. Also note that the generation
+ of the Mail-Followup-To header is controlled by the <link linkend="followup-to">
+ followup-to
+ </link>
+ configuration variable.
+ </para>
+
+ <para>
+ More precisely, Mutt-ng maintains lists of patterns for the addresses
+ of known and subscribed mailing lists. Every subscribed mailing
+ list is known. To mark a mailing list as known, use the ``lists''
+ command. To mark it as subscribed, use ``subscribe''.
+ </para>
+
+ <para>
+ You can use regular expressions with both commands. To mark all
+ messages sent to a specific bug report's address on mutt's bug
+ tracking system as list mail, for instance, you could say
+ ``subscribe [0-9]*@bugs.guug.de''. Often, it's sufficient to just
+ give a portion of the list's e-mail address.
+ </para>
+
+ <para>
+ Specify as much of the address as you need to to remove ambiguity. For
+ example, if you've subscribed to the Mutt-ng mailing list, you will
+ receive mail
+ addressed to <emphasis>mutt-users@mutt.org</emphasis>. So, to tell
+ Mutt-ng that this is a
+ mailing list, you could add ``lists mutt-users'' to your
+ initialization file. To tell mutt that you are subscribed to it,
+ add ``subscribe mutt-users'' to your initialization file instead.
+ If you also happen to get mail from someone whose address is
+ <emphasis>mutt-users@example.com</emphasis>, you could use ``lists
+ mutt-users@mutt\\.org''
+ or ``subscribe mutt-users@mutt\\.org'' to
+ match only mail from the actual list.
+ </para>
+
+ <para>
+ The ``unlists'' command is used to remove a token from the list of
+ known and subscribed mailing-lists. Use ``unlists *'' to remove all
+ tokens.
+ </para>
+
+ <para>
+ To remove a mailing list from the list of subscribed mailing lists,
+ but keep it on the list of known mailing lists, use ``unsubscribe''.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="mbox-hook">
+ <title>Using Multiple spool mailboxes </title>
+
+ <para>
+ Usage: <literal>mbox-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ mailbox
+ </emphasis>
+ </para>
+
+ <para>
+ This command is used to move read messages from a specified mailbox to
+ adifferent mailbox automatically when you quit or change folders.
+ <emphasis>pattern</emphasis> is a regular expression specifying the
+ mailbox to treat as a
+ ``spool'' mailbox and <emphasis>mailbox</emphasis> specifies where mail
+ should be saved when
+ read.
+ </para>
+
+ <para>
+ Unlike some of the other <emphasis>hook</emphasis> commands, only the <emphasis>
+ first
+ </emphasis>
+ matching
+ pattern is used (it is not possible to save read mail in more than a
+ single
+ mailbox).
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="mailboxes">
+ <title>Defining mailboxes which receive mail </title>
+
+ <para>
+ Usage: <literal>[un]mailboxes</literal> [!]<emphasis>
+ filename
+ </emphasis>
+ [ <emphasis>filename</emphasis> ... ]
+ </para>
+
+ <para>
+ This command specifies folders which can receive mail and
+ which will be checked for new messages. By default, the
+ main menu status bar displays how many of these folders have
+ new messages.
+ </para>
+
+ <para>
+ When changing folders, pressing <emphasis>space</emphasis> will cycle
+ through folders with new mail.
+ </para>
+
+ <para>
+ Pressing TAB in the directory browser will bring up a menu showing the
+ files
+ specified by the <literal>mailboxes</literal> command, and indicate
+ which contain new
+ messages. Mutt-ng will automatically enter this mode when invoked from
+ the
+ command line with the <literal>-y</literal> option.
+ </para>
+
+ <para>
+ The ``unmailboxes'' command is used to remove a token from the list
+ of folders which receive mail. Use ``unmailboxes *'' to remove all
+ tokens.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> new mail is detected by
+ comparing the last modification time to
+ the last access time. Utilities like <literal>biff</literal> or <literal>
+ frm
+ </literal>
+ or any other
+ program which accesses the mailbox might cause Mutt-ng to never detect
+ new mail
+ for that mailbox if they do not properly reset the access time. Backup
+ tools are another common reason for updated access times.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> the filenames in the <literal>
+ mailboxes
+ </literal>
+ command are resolved when
+ the command is executed, so if these names contain <link linkend="shortcuts">
+ shortcuts
+ </link>
+ (such as ``='' and ``!''), any variable
+ definition that affect these characters (like <link linkend="folder">
+ folder
+ </link>
+ and <link linkend="spoolfile">spoolfile</link>)
+ should be executed before the <literal>mailboxes</literal> command.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="my-hdr">
+ <title>User defined headers </title>
+
+ <para>
+ Usage:
+
+ <literal>my_hdr</literal> <emphasis>string</emphasis>
+
+ <literal>unmy_hdr</literal> <emphasis>field</emphasis> [ <emphasis>
+ field
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ The ``my_hdr'' command allows you to create your own header
+ fields which will be added to every message you send.
+ </para>
+
+ <para>
+ For example, if you would like to add an ``Organization:'' header field
+ to
+ all of your outgoing messages, you can put the command
+ </para>
+
+ <para>
+ <screen>
+my_hdr Organization: A Really Big Company, Anytown, USA</screen>
+ </para>
+
+ <para>
+ in your <literal>.muttrc</literal>.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> space characters are <emphasis>
+ not
+ </emphasis>
+ allowed between the keyword and
+ the colon (``:''). The standard for electronic mail (RFC822) says that
+ space is illegal there, so Mutt-ng enforces the rule.
+ </para>
+
+ <para>
+ If you would like to add a header field to a single message, you should
+ either set the <link linkend="edit-headers">edit-headers</link>
+ variable,
+ or use the <emphasis>edit-headers</emphasis> function (default: ``E'')
+ in the send-menu so
+ that you can edit the header of your message along with the body.
+ </para>
+
+ <para>
+ To remove user defined header fields, use the ``unmy_hdr''
+ command. You may specify an asterisk (``*'') to remove all header
+ fields, or the fields to remove. For example, to remove all ``To'' and
+ ``Cc'' header fields, you could use:
+ </para>
+
+ <para>
+ <screen>
+unmy_hdr to cc</screen>
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="hdr-order">
+ <title>Defining the order of headers when viewing messages </title>
+
+ <para>
+ Usage: <literal>hdr_order</literal> <emphasis>header1</emphasis>
+ <emphasis>header2</emphasis> <emphasis>header3</emphasis>
+ </para>
+
+ <para>
+ With this command, you can specify an order in which mutt will attempt
+ to present headers to you when viewing messages.
+ </para>
+
+ <para>
+ ``unhdr_order *'' will clear all previous headers from the order
+ list,
+ thus removing the header order effects set by the system-wide startup
+ file.
+ </para>
+
+ <para>
+
+ <screen>
+hdr_order From Date: From: To: Cc: Subject:</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="save-hook">
+ <title>Specify default save filename </title>
+
+ <para>
+ Usage: <literal>save-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ filename
+ </emphasis>
+ </para>
+
+ <para>
+ This command is used to override the default filename used when saving
+ messages. <emphasis>filename</emphasis> will be used as the default
+ filename if the message is
+ <emphasis>From:</emphasis> an address matching <emphasis>regexp</emphasis> or if you are the author and the
+ message is addressed <emphasis>to:</emphasis> something matching <emphasis>
+ regexp
+ </emphasis>
+ .
+ </para>
+
+ <para>
+ See <link linkend="pattern-hook">pattern-hook</link> for information on
+ the exact format of <emphasis>pattern</emphasis>.
+ </para>
+
+ <para>
+ Examples:
+ </para>
+
+ <para>
+
+ <screen>
+save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins
+save-hook aol\\.com$ +spam</screen>
+
+ </para>
+
+ <para>
+ Also see the <link linkend="fcc-save-hook">fcc-save-hook</link>
+ command.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="fcc-hook">
+ <title>Specify default Fcc: mailbox when composing </title>
+
+ <para>
+ Usage: <literal>fcc-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ mailbox
+ </emphasis>
+ </para>
+
+ <para>
+ This command is used to save outgoing mail in a mailbox other than
+ <link linkend="record">record</link>. Mutt-ng searches the initial
+ list of
+ message recipients for the first matching <emphasis>regexp</emphasis>
+ and uses <emphasis>mailbox</emphasis>
+ as the default Fcc: mailbox. If no match is found the message will be
+ saved
+ to <link linkend="record">record</link> mailbox.
+ </para>
+
+ <para>
+ See <link linkend="pattern-hook">pattern-hook</link> for information on
+ the exact format of <emphasis>pattern</emphasis>.
+ </para>
+
+ <para>
+ Example: <literal>fcc-hook [@.]aol\\.com$
+ +spammers
+ </literal>
+ </para>
+
+ <para>
+ The above will save a copy of all messages going to the aol.com domain
+ to
+ the `+spammers' mailbox by default. Also see the <link linkend="fcc-save-hook">
+ fcc-save-hook
+ </link>
+ command.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="fcc-save-hook">
+ <title>Specify default save filename and default Fcc: mailbox at once </title>
+
+ <para>
+ Usage: <literal>fcc-save-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ mailbox
+ </emphasis>
+ </para>
+
+ <para>
+ This command is a shortcut, equivalent to doing both a <link linkend="fcc-hook">
+ fcc-hook
+ </link>
+ and a <link linkend="save-hook">save-hook</link> with its arguments.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="send-hook">
+ <title>Change settings based upon message recipients </title>
+
+ <para>
+ Usage: <literal>reply-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ command
+ </emphasis>
+
+ Usage: <literal>send-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ command
+ </emphasis>
+
+ Usage: <literal>send2-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ command
+ </emphasis>
+ </para>
+
+ <para>
+ These commands can be used to execute arbitrary configuration commands
+ based
+ upon recipients of the message. <emphasis>pattern</emphasis> is a
+ regular expression
+ matching the desired address. <emphasis>command</emphasis> is executed
+ when <emphasis>regexp</emphasis>
+ matches recipients of the message.
+ </para>
+
+ <para>
+ <literal>reply-hook</literal> is matched against the message you are <emphasis>
+ replying
+ </emphasis>
+ <emphasis role="bold">to</emphasis>, instead of the message you are <emphasis>
+ sending
+ </emphasis>
+ .<literal>send-hook</literal> is
+ matched against all messages, both <emphasis>new</emphasis> and <emphasis>
+ replies
+ </emphasis>
+ .<emphasis role="bold">Note:</emphasis>
+ <literal>reply-hook</literal>s are matched <emphasis role="bold">before</emphasis> the <literal>
+ send-hook
+ </literal>
+ ,<emphasis role="bold">regardless</emphasis>
+ of the order specified in the users's configuration file.
+ </para>
+
+ <para>
+ <literal>send2-hook</literal> is matched every time a message is
+ changed, either
+ by editing it, or by using the compose menu to change its recipients
+ or subject. <literal>send2-hook</literal> is executed after <literal>
+ send-hook
+ </literal>
+ ,and
+ can, e.g., be used to set parameters such as the <link linkend="sendmail">
+ sendmail
+ </link>
+ variable depending on the message's sender
+ address.
+ </para>
+
+ <para>
+ For each type of <literal>send-hook</literal> or <literal>reply-hook</literal>, when multiple matches
+ occur, commands are executed in the order they are specified in the
+ muttrc
+ (for that type of hook).
+ </para>
+
+ <para>
+ See <link linkend="pattern-hook">pattern-hook</link> for information on
+ the exact format of <emphasis>pattern</emphasis>.
+ </para>
+
+ <para>
+ Example: <literal>send-hook mutt "set mime_forward
+ signature=''"
+ </literal>
+ </para>
+
+ <para>
+ Another typical use for this command is to change the values of the
+ <link linkend="attribution">attribution</link>, <link linkend="signature">
+ signature
+ </link>
+ and <link linkend="locale">locale</link>
+ variables in order to change the language of the attributions and
+ signatures based upon the recipients.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> the send-hook's are only
+ executed ONCE after getting the initial
+ list of recipients. Adding a recipient after replying or editing the
+ message will NOT cause any send-hook to be executed. Also note that
+ my_hdr commands which modify recipient headers, or the message's
+ subject, don't have any effect on the current message when executed
+ from a send-hook.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="message-hook">
+ <title>Change settings before formatting a message </title>
+
+ <para>
+ Usage: <literal>message-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ command
+ </emphasis>
+ </para>
+
+ <para>
+ This command can be used to execute arbitrary configuration commands
+ before viewing or formatting a message based upon information about the
+ message.
+ <emphasis>command</emphasis> is executed if the <emphasis>pattern</emphasis> matches the message to be
+ displayed. When multiple matches occur, commands are executed in the
+ order
+ they are specified in the muttrc.
+ </para>
+
+ <para>
+ See <link linkend="pattern-hook">pattern-hook</link> for
+ information on the exact format of <emphasis>pattern</emphasis>.
+ </para>
+
+ <para>
+ Example:
+
+ <screen>
+message-hook ~A 'set pager=builtin'
+message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject:.*\""'</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="crypt-hook">
+ <title>Choosing the cryptographic key of the recipient </title>
+
+ <para>
+ Usage: <literal>crypt-hook</literal> <emphasis>pattern</emphasis> <emphasis>
+ keyid
+ </emphasis>
+ </para>
+
+ <para>
+ When encrypting messages with PGP or OpenSSL, you may want to associate
+ a certain
+ key with a given e-mail address automatically, either because the
+ recipient's public key can't be deduced from the destination address,
+ or because, for some reasons, you need to override the key Mutt-ng
+ wouldnormally use. The crypt-hook command provides a method by which
+ you can
+ specify the ID of the public key to be used when encrypting messages to
+ a certain recipient.
+ </para>
+
+ <para>
+ The meaning of "key id" is to be taken broadly in this context: You
+ can either put a numerical key ID here, an e-mail address, or even
+ just a real name.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="push">
+ <title>Adding key sequences to the keyboard buffer </title>
+
+ <para>
+ Usage: <literal>push</literal> <emphasis>string</emphasis>
+ </para>
+
+ <para>
+ This command adds the named string to the keyboard buffer. The string
+ may
+ contain control characters, key names and function names like the
+ sequence
+ string in the <link linkend="macro">macro</link> command. You may use
+ it to
+ automatically run a sequence of commands at startup, or when entering
+ certain folders.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="exec">
+ <title>Executing functions </title>
+
+ <para>
+ Usage: <literal>exec</literal> <emphasis>function</emphasis> [ <emphasis>
+ function
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ This command can be used to execute any function. Functions are
+ listed in the <link linkend="functions">functions</link>.
+ ``exec function'' is equivalent to ``push <function>''.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="score-command">
+ <title>Message Scoring </title>
+
+ <para>
+ Usage: <literal>score</literal> <emphasis>pattern</emphasis> <emphasis>
+ value
+ </emphasis>
+
+ Usage: <literal>unscore</literal> <emphasis>pattern</emphasis> [ <emphasis>
+ pattern
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ In situations where you have to cope with a lot of emails, e.g.
+ when you read many different mailing lists, and take part in
+ discussions, it is always useful to have the important messages
+ marked and the annoying messages or the ones that you aren't
+ interested in deleted. For this purpose, mutt-ng features a
+ mechanism called ``scoring''.
+ </para>
+
+ <para>
+ When you use scoring, every message has a base score of 0. You
+ can then use the <literal>score</literal> command to define patterns
+ and a
+ positive or negative value associated with it. When a pattern
+ matches a message, the message's score will be raised or lowered by
+ the amount of the value associated with the pattern.
+ </para>
+
+ <para>
+
+ <screen>
+score "~f nion@muttng\.org" 50
+score "~f @sco\.com" -100</screen>
+
+ </para>
+
+ <para>
+ If the pattern matches, it is also possible to set the score
+ value of the current message to a certain value and then stop
+ evaluation:
+ </para>
+
+ <para>
+
+ <screen>
+score "~f santaclaus@northpole\.int" =666</screen>
+
+ </para>
+
+ <para>
+ What is important to note is that negative score values will be
+ rounded up to 0.
+ </para>
+
+ <para>
+ To make scoring actually useful, the score must be applied in
+ some way. That's what the <emphasis>score thresholds</emphasis> are
+ for. Currently,
+ there are three score thresholds:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ flag threshold: when a message has a score value equal or higher
+ than the flag threshold, it will be flagged.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ read threshold: when a message has a score value equal or lower
+ than the read threshold, it will be marked as read.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ delete threshold: when a message has a score value equal or
+ lower than the delete threshold, it will be marked as deleted.
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ These three thresholds can be set via the variables <link linkend="score-threshold-flag">
+ score-threshold-flag
+ </link>
+ ,<link linkend="score-threshold-read">score-threshold-read</link>, <link linkend="score-threshold-delete">
+ score-threshold-delete
+ </link>
+ and. By
+ default, <link linkend="score-threshold-read">score-threshold-read</link> and <link linkend="score-threshold-delete">
+ score-threshold-delete
+ </link>
+ are set to
+ <literal>-1</literal>, which means that in the default threshold
+ configuration no
+ message will ever get marked as read or deleted.
+ </para>
+
+ <para>
+ Scoring gets especially interesting when combined with the <literal>
+ color
+ </literal>
+ command
+ and the <literal>˜n</literal> pattern:
+ </para>
+
+ <para>
+
+ <screen>
+color index black yellow "~n 10-"
+color index red yellow "~n 100-"</screen>
+
+ </para>
+
+ <para>
+ The rules above mark all messages with a score between 10 and 99
+ with black and yellow, and messages with a score greater or equal
+ 100 with red and yellow. This might be unusual to you if you're used
+ to e.g. slrn's scoring mechanism, but it is more flexible, as it
+ visually marks different scores.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="spam">
+ <title>Spam detection </title>
+
+ <para>
+ Usage: <literal>spam</literal> <emphasis>pattern</emphasis> <emphasis>
+ format
+ </emphasis>
+
+ Usage: <literal>nospam</literal> <emphasis>pattern</emphasis>
+ </para>
+
+ <para>
+ Mutt-ng has generalized support for external spam-scoring filters.
+ By defining your spam patterns with the <literal>spam</literal> and <literal>
+ nospam
+ </literal>
+ commands, you can <emphasis>limit</emphasis>, <emphasis>search</emphasis>, and <emphasis>
+ sort
+ </emphasis>
+ your
+ mail based on its spam attributes, as determined by the external
+ filter. You also can display the spam attributes in your index
+ display using the <literal>%H</literal> selector in the <link linkend="index-format">
+ index-format
+ </link>
+ variable. (Tip: try <literal>%?H?[%H] ?</literal>
+ to display spam tags only when they are defined for a given message.)
+ </para>
+
+ <para>
+ Your first step is to define your external filter's spam patterns using
+ the <literal>spam</literal> command. <emphasis>pattern</emphasis>
+ should be a regular expression
+ that matches a header in a mail message. If any message in the mailbox
+ matches this regular expression, it will receive a ``spam tag'' or
+ ``spam attribute'' (unless it also matches a <literal>nospam</literal>
+ pattern -- see
+ below.) The appearance of this attribute is entirely up to you, and is
+ governed by the <emphasis>format</emphasis> parameter. <emphasis>format</emphasis> can be any static
+ text, but it also can include back-references from the <emphasis>
+ pattern
+ </emphasis>
+ expression. (A regular expression ``back-reference'' refers to a
+ sub-expression contained within parentheses.) <literal>%1</literal> is replaced with
+ the first back-reference in the regex, <literal>%2</literal>
+ with the second, etc.
+ </para>
+
+ <para>
+ If you're using multiple spam filters, a message can have more than
+ one spam-related header. You can define <literal>spam</literal>
+ patterns for each
+ filter you use. If a message matches two or more of these patterns, and
+ the $spam_separator variable is set to a string, then the
+ message's spam tag will consist of all the <emphasis>format</emphasis>
+ strings joined
+ together, with the value of $spam_separator separating
+ them.
+ </para>
+
+ <para>
+ For example, suppose I use DCC, SpamAssassin, and PureMessage. I might
+ define these spam settings:
+
+ <screen>
+spam "X-DCC-.*-Metrics:.*(....)=many" "90+/DCC-%1"
+spam "X-Spam-Status: Yes" "90+/SA"
+spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM"
+set spam_separator=", "</screen>
+
+ </para>
+
+ <para>
+ If I then received a message that DCC registered with ``many'' hits
+ under the ``Fuz2'' checksum, and that PureMessage registered with a
+ 97% probability of being spam, that message's spam tag would
+ read<literal>90+/DCC-Fuz2, 97/PM</literal>. (The four characters before
+ ``=many'' in a
+ DCC report indicate the checksum used -- in this case, ``Fuz2''.)
+ </para>
+
+ <para>
+ If the $spam_separator variable is unset, then each
+ spam pattern match supersedes the previous one. Instead of getting
+ joined <emphasis>format</emphasis> strings, you'll get only the last
+ one to match.
+ </para>
+
+ <para>
+ The spam tag is what will be displayed in the index when you use
+ <literal>%H</literal> in the <literal>
+ $index_format
+ </literal>
+ variable. It's also the
+ string that the <literal>˜H</literal> pattern-matching expression
+ matches against for
+ <emphasis>search</emphasis> and <emphasis>limit</emphasis> functions.
+ And it's what sorting by spam
+ attribute will use as a sort key.
+ </para>
+
+ <para>
+ That's a pretty complicated example, and most people's actual
+ environments will have only one spam filter. The simpler your
+ configuration, the more effective mutt can be, especially when it comes
+ to sorting.
+ </para>
+
+ <para>
+ Generally, when you sort by spam tag, mutt will sort <emphasis>
+ lexically
+ </emphasis>
+ --
+ that is, by ordering strings alphnumerically. However, if a spam tag
+ begins with a number, mutt will sort numerically first, and lexically
+ only when two numbers are equal in value. (This is like UNIX's
+ <literal>sort -n</literal>.) A message with no spam attributes at all
+ -- that is, one
+ that didn't match <emphasis>any</emphasis> of your <literal>spam</literal> patterns -- is sorted at
+ lowest priority. Numbers are sorted next, beginning with 0 and ranging
+ upward. Finally, non-numeric strings are sorted, with ``a'' taking
+ lowerpriority than ``z''. Clearly, in general, sorting by spam tags is
+ most
+ effective when you can coerce your filter to give you a raw number. But
+ in case you can't, mutt can still do something useful.
+ </para>
+
+ <para>
+ The <literal>nospam</literal> command can be used to write exceptions
+ to <literal>spam</literal>
+ patterns. If a header pattern matches something in a <literal>spam</literal> command,
+ but you nonetheless do not want it to receive a spam tag, you can list
+ amore precise pattern under a <literal>nospam</literal> command.
+ </para>
+
+ <para>
+ If the <emphasis>pattern</emphasis> given to <literal>nospam</literal>
+ is exactly the same as the
+ <emphasis>pattern</emphasis> on an existing <literal>spam</literal>
+ list entry, the effect will be to
+ remove the entry from the spam list, instead of adding an exception.
+ Likewise, if the <emphasis>pattern</emphasis> for a <literal>spam</literal> command matches an entry
+ on the <literal>nospam</literal> list, that <literal>nospam</literal>
+ entry will be removed. If the
+ <emphasis>pattern</emphasis> for <literal>nospam</literal> is ``*'', <emphasis>
+ all entries on both lists
+ </emphasis>
+ will be removed. This might be the default action if you use <literal>
+ spam
+ </literal>
+ and <literal>nospam</literal> in conjunction with a <literal>
+ folder-hook
+ </literal>
+ .
+ </para>
+
+ <para>
+ You can have as many <literal>spam</literal> or <literal>nospam</literal> commands as you like.
+ You can even do your own primitive spam detection within mutt -- for
+ example, if you consider all mail from <literal>MAILER-DAEMON</literal>
+ to be spam,
+ you can use a <literal>spam</literal> command like this:
+ </para>
+
+ <para>
+
+ <screen>
+spam "^From: .*MAILER-DAEMON" "999"</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="set">
+ <title>Setting variables </title>
+
+ <para>
+ Usage: <literal>set</literal> [no|inv]<emphasis>
+ variable
+ </emphasis>
+ [=<emphasis>value</emphasis>] [ <emphasis>variable</emphasis> ... ]
+
+ Usage: <literal>toggle</literal> <emphasis>variable</emphasis> [<emphasis>
+ variable
+ </emphasis>
+ ... ]
+
+ Usage: <literal>unset</literal> <emphasis>variable</emphasis> [<emphasis>
+ variable
+ </emphasis>
+ ... ]
+
+ Usage: <literal>reset</literal> <emphasis>variable</emphasis> [<emphasis>
+ variable
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ This command is used to set (and unset) <link linkend="variables">
+ variables
+ </link>
+ .There are four basic types of variables:
+ boolean, number, string and quadoption. <emphasis>boolean</emphasis>
+ variables can be
+ <emphasis>set</emphasis> (true) or <emphasis>unset</emphasis> (false).
+ <emphasis>number</emphasis> variables can be
+ assigned a positive integer value.
+ </para>
+
+ <para>
+ <emphasis>string</emphasis> variables consist of any number of
+ printable characters.
+ <emphasis>strings</emphasis> must be enclosed in quotes if they contain
+ spaces or tabs. You
+ may also use the ``C'' escape sequences <emphasis role="bold">\n</emphasis> and <emphasis role="bold">
+ \t
+ </emphasis>
+ for
+ newline and tab, respectively.
+ </para>
+
+ <para>
+ <emphasis>quadoption</emphasis> variables are used to control whether
+ or not to be prompted
+ for certain actions, or to specify a default action. A value of <emphasis>
+ yes
+ </emphasis>
+ will cause the action to be carried out automatically as if you had
+ answered
+ yes to the question. Similarly, a value of <emphasis>no</emphasis>
+ will cause the the
+ action to be carried out as if you had answered ``no.'' A value of
+ <emphasis>ask-yes</emphasis> will cause a prompt with a default answer
+ of ``yes'' and
+ <emphasis>ask-no</emphasis> will provide a default answer of ``no.''
+ </para>
+
+ <para>
+ Prefixing a variable with ``no'' will unset it. Example: <literal>set
+ noaskbcc
+ </literal>
+ .
+ </para>
+
+ <para>
+ For <emphasis>boolean</emphasis> variables, you may optionally prefix
+ the variable name with
+ <literal>inv</literal> to toggle the value (on or off). This is useful
+ when writing
+ macros. Example: <literal>set invsmart_wrap</literal>.
+ </para>
+
+ <para>
+ The <literal>toggle</literal> command automatically prepends the <literal>
+ inv
+ </literal>
+ prefix to all
+ specified variables.
+ </para>
+
+ <para>
+ The <literal>unset</literal> command automatically prepends the <literal>
+ no
+ </literal>
+ prefix to all
+ specified variables.
+ </para>
+
+ <para>
+ Using the enter-command function in the <emphasis>index</emphasis>
+ menu, you can query the
+ value of a variable by prefixing the name of the variable with a
+ question
+ mark:
+ </para>
+
+ <para>
+
+ <screen>
+set ?allow_8bit</screen>
+
+ </para>
+
+ <para>
+ The question mark is actually only required for boolean and quadoption
+ variables.
+ </para>
+
+ <para>
+ The <literal>reset</literal> command resets all given variables to the
+ compile time
+ defaults (hopefully mentioned in this manual). If you use the command
+ <literal>set</literal> and prefix the variable with ``&'' this has
+ the same
+ behavior as the reset command.
+ </para>
+
+ <para>
+ With the <literal>reset</literal> command there exists the special
+ variable ``all'',
+ which allows you to reset all variables to their system defaults.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="source">
+ <title>Reading initialization commands from another file </title>
+
+ <para>
+ Usage: <literal>source</literal> <emphasis>filename</emphasis> [ <emphasis>
+ filename
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ This command allows the inclusion of initialization commands
+ from other files. For example, I place all of my aliases in
+ <literal>˜/.mail_aliases</literal> so that I can make my
+ <literal>˜/.muttrc</literal> readable and keep my aliases
+ private.
+ </para>
+
+ <para>
+ If the filename begins with a tilde (``˜''), it will be expanded
+ to the
+ path of your home directory.
+ </para>
+
+ <para>
+ If the filename ends with a vertical bar (|), then <emphasis>
+ filename
+ </emphasis>
+ is
+ considered to be an executable program from which to read input (eg.
+ <literal>source ˜/bin/myscript|</literal>).
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="unhook">
+ <title>Removing hooks </title>
+
+ <para>
+ Usage: <literal>unhook</literal> [ * | <emphasis>hook-type</emphasis> ]
+ </para>
+
+ <para>
+ This command permits you to flush hooks you have previously defined.
+ You can either remove all hooks by giving the ``*'' character as an
+ argument, or you can remove all hooks of a specific type by saying
+ something like <literal>unhook send-hook</literal>.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="sect:sharingsetups">
+ <title>Sharing Setups </title>
+
+ <sect2>
+ <title>Character Sets </title>
+
+ <para>
+ As users may run mutt-ng on different systems, the configuration
+ must be maintained because it's likely that people want to use the
+ setup everywhere they use mutt-ng. And mutt-ng tries to help where it
+ can.
+ </para>
+
+ <para>
+ To not produce conflicts with different character sets, mutt-ng
+ allows users to specify in which character set their configuration
+ files are encoded. Please note that while reading the configuration
+ files, this is only respected after the corresponding declaration
+ appears. It's advised to put the following at the very beginning of a
+ users muttngrc:
+ </para>
+
+ <para>
+
+ <screen>
+set config_charset = "..."</screen>
+
+ </para>
+
+ <para>
+ and replacing the dots with the actual character set. To avoid
+ problems while maintaining the setup, vim user's may want to use
+ modelines as show in:
+ </para>
+
+ <para>
+
+ <screen>
+# vim:fileencoding=...:</screen>
+
+ </para>
+
+ <para>
+ while, again, replacing the dots with the appropriate name. This
+ tells vim as which character set to read and save the file.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Modularization </title>
+
+ <para>
+ ``Modularization'' means to divide the setup into several files
+ while sorting the options or commands by topic. Especially for
+ longer setups (e.g. with many hooks), this helps maintaining it
+ and solving trouble.
+ </para>
+
+ <para>
+ When using separation, setups may be, as a whole or in
+ fractions, shared over different systems.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Conditional parts </title>
+
+ <para>
+ When using a configuration on different systems, the user may not
+ always have influence on how mutt-ng is installed and which features
+ it includes.
+ </para>
+
+ <para>
+ To solve this, mutt-ng contain a feature based on the ``ifdef''
+ patch written for mutt. Its basic syntax is:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef <item> <command>
+ifndef <item> <command></screen>
+
+ </para>
+
+ <para>
+ ...whereby <literal><item></literal> can be one of:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ a function name
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ a variable name
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ a menu name
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ a feature name
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ All available functions, variables and menus are documented
+ elsewhere in this manual but ``features'' is specific to these
+ two commands. To test for one, prefix one of the following
+ keywords with <literal>feature_</literal>: ncurses,
+ slang, iconv, idn, dotlock, standalone, pop, nntp, imap, ssl,
+ gnutls, sasl, sasl2, libesmtp, compressed, color, classic_pgp,
+ classic_smime, gpgme, header_cache
+ </para>
+
+ <para>
+ As an example, one can use the following in
+ <literal>˜/.muttngrc</literal>:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef feature_imap 'source ~/.mutt-ng/setup-imap'
+ifdef feature_pop 'source ~/.mutt-ng/setup-pop'
+ifdef feature_nntp 'source ~/.mutt-ng/setup-nntp'</screen>
+
+ </para>
+
+ <para>
+ ...to only source <literal>˜/.mutt-ng/setup-imap</literal> if
+ IMAP
+ support is built in, only source <literal>˜/.mutt-ng/setup-pop</literal>
+ if POP support is built in and only source
+ <literal>˜/.mutt-ng/setup-nntp</literal> if NNTP support is
+ built in.
+ </para>
+
+ <para>
+ An example for testing for variable names can be used if users
+ use different revisions of mutt-ng whereby the older one may not
+ have a certain variable. To test for the availability of <link linkend="imap-mail-check">
+ imap-mail-check
+ </link>
+ ,
+ use:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef imap_mail_check 'set imap_mail_check = 300'</screen>
+
+ </para>
+
+ <para>
+ Provided for completeness is the test for menu names. To set <link linkend="pager-index-lines">
+ pager-index-lines
+ </link>
+ only if the pager
+ menu is available, use:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef pager 'set pager_index_lines = 10'</screen>
+
+ </para>
+
+ <para>
+ For completeness, too, the opposite of <literal>ifdef</literal> is
+ provided:
+ <literal>ifndef</literal> which only executes the command if the test
+ fails. For
+ example, the following two examples are equivalent:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef feature_ncurses 'source ~/.mutt-ng/setup-ncurses'
+ifndef feature_ncurses 'source ~/.mutt-ng/setup-slang'</screen>
+
+ </para>
+
+ <para>
+ ...and...
+ </para>
+
+ <para>
+
+ <screen>
+ifdef feature_slang 'source ~/.mutt-ng/setup-slang'
+ifndef feature_slang 'source ~/.mutt-ng/setup-ncurses'</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>Obsolete Variables </title>
+
+ <para>
+ In the process of ensuring and creating more consistency, many
+ variables have been renamed and some of the old names were already
+ removed. Please see <link linkend="sect-obsolete">sect-obsolete</link>
+ for a complete list.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <chapter>
+ <title>Advanced Usage </title>
+
+ <sect1 id="regexp">
+ <title>Regular Expressions </title>
+
+ <para>
+ All string patterns in Mutt-ng including those in more complex
+ <link linkend="patterns">patterns</link> must be specified
+ using regular expressions (regexp) in the ``POSIX extended'' syntax
+ (which
+ is more or less the syntax used by egrep and GNU awk). For your
+ convenience, we have included below a brief description of this syntax.
+ </para>
+
+ <para>
+ The search is case sensitive if the pattern contains at least one upper
+ case letter, and case insensitive otherwise. Note that ``\''
+ must be quoted if used for a regular expression in an initialization
+ command: ``\\''.
+ </para>
+
+ <para>
+ A regular expression is a pattern that describes a set of strings.
+ Regular expressions are constructed analogously to arithmetic
+ expressions, by using various operators to combine smaller expressions.
+ </para>
+
+ <para>
+ Note that the regular expression can be enclosed/delimited by either
+ "
+ or ' which is useful if the regular expression includes a white-space
+ character. See <link linkend="muttrc-syntax">muttrc-syntax</link>
+ for more information on " and ' delimiter processing. To match a
+ literal " or ' you must preface it with \ (backslash).
+ </para>
+
+ <para>
+ The fundamental building blocks are the regular expressions that match
+ a single character. Most characters, including all letters and digits,
+ are regular expressions that match themselves. Any metacharacter with
+ special meaning may be quoted by preceding it with a backslash.
+ </para>
+
+ <para>
+ The period ``.'' matches any single character. The caret ``ˆ''
+ andthe dollar sign ``$'' are metacharacters that respectively
+ match
+ the empty string at the beginning and end of a line.
+ </para>
+
+ <para>
+ A list of characters enclosed by ``['' and ``]'' matches any
+ single character in that list; if the first character of the list
+ is a caret ``ˆ'' then it matches any character <emphasis role="bold">
+ not
+ </emphasis>
+ in the
+ list. For example, the regular expression <emphasis role="bold">
+ [0123456789]
+ </emphasis>
+ matches any single digit. A range of ASCII characters may be specified
+ by giving the first and last characters, separated by a hyphen
+ ``-''. Most metacharacters lose their special meaning inside
+ lists. To include a literal ``]'' place it first in the list.
+ Similarly, to include a literal ``ˆ'' place it anywhere but first.
+ Finally, to include a literal hyphen ``-'' place it last.
+ </para>
+
+ <para>
+ Certain named classes of characters are predefined. Character classes
+ consist of ``[:'', a keyword denoting the class, and ``:]''.
+ The following classes are defined by the POSIX standard:
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>[:alnum:]</term>
+ <listitem>
+ <para>
+ Alphanumeric characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:alpha:]</term>
+ <listitem>
+ <para>
+ Alphabetic characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:blank:]</term>
+ <listitem>
+ <para>
+ Space or tab characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:cntrl:]</term>
+ <listitem>
+ <para>
+ Control characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:digit:]</term>
+ <listitem>
+ <para>
+ Numeric characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:graph:]</term>
+ <listitem>
+ <para>
+ Characters that are both printable and visible. (A space is
+ printable,
+ but not visible, while an ``a'' is both.)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:lower:]</term>
+ <listitem>
+ <para>
+ Lower-case alphabetic characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:print:]</term>
+ <listitem>
+ <para>
+ Printable characters (characters that are not control
+ characters.)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:punct:]</term>
+ <listitem>
+ <para>
+ Punctuation characters (characters that are not letter, digits,
+ control
+ characters, or space characters).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:space:]</term>
+ <listitem>
+ <para>
+ Space characters (such as space, tab and formfeed, to name a
+ few).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:upper:]</term>
+ <listitem>
+ <para>
+ Upper-case alphabetic characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:xdigit:]</term>
+ <listitem>
+ <para>
+ Characters that are hexadecimal digits.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ A character class is only valid in a regular expression inside the
+ brackets of a character list. Note that the brackets in these
+ class names are part of the symbolic names, and must be included
+ in addition to the brackets delimiting the bracket list. For
+ example, <emphasis role="bold">[[:digit:]]</emphasis> is equivalent to
+ <emphasis role="bold">[0-9]</emphasis>.
+ </para>
+
+ <para>
+ Two additional special sequences can appear in character lists. These
+ apply to non-ASCII character sets, which can have single symbols
+ (calledcollating elements) that are represented with more than one
+ character,
+ as well as several characters that are equivalent for collating or
+ sorting purposes:
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>Collating Symbols</term>
+ <listitem>
+ <para>
+ A collating symbol is a multi-character collating element
+ enclosed in
+ ``[.'' and ``.]''. For example, if ``ch'' is a
+ collating
+ element, then <emphasis role="bold">
+ [[.ch.]]
+ </emphasis>
+ is a regexp that matches
+ this collating element, while <emphasis role="bold">
+ [ch]
+ </emphasis>
+ is a regexp that
+ matches either ``c'' or ``h''.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Equivalence Classes</term>
+ <listitem>
+ <para>
+ An equivalence class is a locale-specific name for a list of
+ characters that are equivalent. The name is enclosed in
+ ``[=''
+ and ``=]''. For example, the name ``e'' might be used to
+ represent all of ``è'' ``é'' and ``e''. In this
+ case,
+ <emphasis role="bold">[[=e=]]</emphasis> is
+ a regexp that matches any of
+ ``è'', ``é'' and ``e''.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ A regular expression matching a single character may be followed by one
+ of several repetition operators:
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>?</term>
+ <listitem>
+ <para>
+ The preceding item is optional and matched at most once.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>*</term>
+ <listitem>
+ <para>
+ The preceding item will be matched zero or more times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>+</term>
+ <listitem>
+ <para>
+ The preceding item will be matched one or more times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{n}</term>
+ <listitem>
+ <para>
+ The preceding item is matched exactly <emphasis>n</emphasis>
+ times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{n,}</term>
+ <listitem>
+ <para>
+ The preceding item is matched <emphasis>n</emphasis> or more
+ times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{,m}</term>
+ <listitem>
+ <para>
+ The preceding item is matched at most <emphasis>m</emphasis>
+ times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{n,m}</term>
+ <listitem>
+ <para>
+ The preceding item is matched at least <emphasis>n</emphasis>
+ times, but no more than
+ <emphasis>m</emphasis> times.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ Two regular expressions may be concatenated; the resulting regular
+ expression matches any string formed by concatenating two substrings
+ that respectively match the concatenated subexpressions.
+ </para>
+
+ <para>
+ Two regular expressions may be joined by the infix operator
+ ``|'';
+ the resulting regular expression matches any string matching either
+ subexpression.
+ </para>
+
+ <para>
+ Repetition takes precedence over concatenation, which in turn takes
+ precedence over alternation. A whole subexpression may be enclosed in
+ parentheses to override these precedence rules.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> If you compile Mutt-ng with the
+ GNU <emphasis>rx</emphasis> package, the
+ following operators may also be used in regular expressions:
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>\\y</term>
+ <listitem>
+ <para>
+ Matches the empty string at either the beginning or the end of
+ a word.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\B</term>
+ <listitem>
+ <para>
+ Matches the empty string within a word.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\<</term>
+ <listitem>
+ <para>
+ Matches the empty string at the beginning of a word.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\></term>
+ <listitem>
+ <para>
+ Matches the empty string at the end of a word.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\w</term>
+ <listitem>
+ <para>
+ Matches any word-constituent character (letter, digit, or
+ underscore).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\W</term>
+ <listitem>
+ <para>
+ Matches any character that is not word-constituent.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\`</term>
+ <listitem>
+ <para>
+ Matches the empty string at the beginning of a buffer (string).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\'</term>
+ <listitem>
+ <para>
+ Matches the empty string at the end of a buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ Please note however that these operators are not defined by POSIX, so
+ they may or may not be available in stock libraries on various systems.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Patterns </title>
+
+ <para>
+ Mutt-ng's pattern language provides a simple yet effective way to
+ set up rules to match messages, e.g. for operations like tagging and
+ scoring. A pattern consists of one or more sub-pattern, which can be
+ logically grouped, ORed, and negated. For a complete listing of
+ these patterns, please refer to table <link linkend="patterns">patterns</link> in the Reference chapter.
+ </para>
+
+ <para>
+ It must be noted that in this table, <literal>EXPR</literal> is
+ a regular expression. For ranges, the forms
+ <literal><[MAX]</literal>, <literal>>>[MIN]</literal>,
+ <literal> [MIN]- </literal> and <literal>-[MAX]</literal> are
+ also possible.
+ </para>
+
+ <sect2>
+ <title>Complex Patterns </title>
+
+ <para>
+ It is possible to combine several sub-patterns to a more complex
+ pattern. The most simple possibility is to logically AND several
+ patterns by stringing them together:
+ </para>
+
+ <para>
+
+ <screen>
+~s 'SPAM' ~U</screen>
+
+ </para>
+
+ <para>
+ The pattern above matches all messages that contain ``SPAM'' in
+ the subject and are unread.
+ </para>
+
+ <para>
+ To logical OR patterns, simply use the <literal>|</literal>
+ operator. This one
+ especially useful when using local groups:
+ </para>
+
+ <para>
+
+ <screen>
+~f ("nion@muttng\.org"|"ak@muttng\.org"|"pdmef@muttng\.org")
+(~b mutt-ng|~s Mutt-ng)
+!~x '@synflood\.at'</screen>
+
+ </para>
+
+ <para>
+ The first pattern matches all messages that were sent by one of
+ the mutt-ng maintainers, while the seconds pattern matches all
+ messages that contain ``mutt-ng'' in the message body or ``Mutt-ng''
+ in the subject. The third pattern matches all messages that do not
+ contain ``@synflood\.at'' in the <literal>References:</literal>
+ header, i.e.
+ messages that are not an (indirect) reply to one of my messages. A
+ pattern can be logicall negated using the <literal>!</literal>
+ operator.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Patterns and Dates </title>
+
+ <para>
+ When using dates in patterns, the dates must be specified in a
+ special format, i.e. <literal>DD/MM/YYYY</literal>. If you don't
+ specify
+ month or year, they default to the current month or year. When using
+ date ranges, and you specify only the minimum or the maximum, the
+ specified date will be excluded, e.g. <literal>01/06/2005-</literal>
+ matches
+ against all messages <emphasis>after</emphasis> Juni 1st, 2005.
+ </para>
+
+ <para>
+ It is also possible to use so-called ``error margins'' when
+ specifying date ranges. You simply specify a date, and then the
+ error margin. This margin needs to contain the information whether
+ it goes ``forth'' or ``back'' in time, by using <literal>+</literal>
+ and <literal>-</literal>.
+ Then follows a number and a unit, i.e. <literal>y</literal> for
+ years, <literal>m</literal> for
+ months, <literal>w</literal> for weeks and <literal>d</literal> for
+ days. If you use the special
+ <literal>*</literal> sign, it means that the error margin goes to
+ both``directions'' in time.
+ </para>
+
+ <para>
+
+ <screen>
+~d 01/01/2005+1y
+~d 18/10/2004-2w
+~d 28/12/2004*1d</screen>
+
+ </para>
+
+ <para>
+ The first pattern matches all dates between January 1st, 2005 and
+ January 1st 2006. The second pattern matches all dates between
+ October 18th, 2004 and October 4th 2004 (2 weeks before 18/10/2004),
+ while the third pattern matches all dates 1 day around December
+ 28th, 2004 (i.e. Dec 27th, 28th and 29th).
+ </para>
+
+ <para>
+ Relative dates are also very important, as they make it possible
+ to specify date ranges between a fixed number of units and the
+ current date. How this works can be seen in the following example:
+ </para>
+
+ <para>
+
+ <screen>
+~d >2w # messages older than two weeks
+~d <3d # messages newer than 3 days
+~d =1m # messages that are exactly one month old</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>Format Strings </title>
+
+ <sect2>
+ <title>Introduction </title>
+
+ <para>
+ The so called <emphasis>Format Strings</emphasis> offer great
+ flexibility when
+ configuring mutt-ng. In short, they describe what items to print
+ out how in menus and status messages.
+ </para>
+
+ <para>
+ Basically, they work as this: for different menus and bars,
+ there's a variable specifying the layout. For every item
+ available, there is a so called <emphasis>expando</emphasis>.
+ </para>
+
+ <para>
+ For example, when running mutt-ng on different machines or
+ different versions for testing purposes, it may be interesting to
+ have the following information always printed on screen when one
+ is in the index:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ the current hostname
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ the current mutt-ng version number
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ The setting for the status bar of the index is controlled via the
+ <link linkend="status-format">status-format</link>
+ variable. For the hostname and version string, there's an expando
+ for <literal>$status_format</literal>: <literal>
+ %h
+ </literal>
+ expands to the
+ hostname and <literal>%v</literal> to the version string. When
+ just configuring:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: ..."</screen>
+
+ </para>
+
+ <para>
+ mutt-ng will replace the sequence <literal>%v</literal> with
+ the version string
+ and <literal>%h</literal> with the host's name. When you are,
+ for example, running
+ mutt-ng version <literal>1.5.9i</literal> on host <literal>mailhost</literal>, you'll see the
+ following when you're in the index:
+ </para>
+
+ <para>
+
+ <screen>
+Mutt-ng 1.5.9i on mailhost: ...</screen>
+
+ </para>
+
+ <para>
+ In the index, there're more useful information one could want to
+ see:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ which mailbox is open
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ how man new, flagged or postponed messages
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ ...
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ To include the mailbox' name is as easy as:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B: ...</screen>
+
+ </para>
+
+ <para>
+ When the currently opened mailbox is <literal>Inbox</literal>, this
+ will be expanded
+ to:
+ </para>
+
+ <para>
+
+ <screen>
+Mutt-ng 1.5.9i on mailhost: Inbox: ...</screen>
+
+ </para>
+
+ <para>
+ For the number of certain types of messages, one more feature of the
+ format
+ strings is extremely useful. If there aren't messages of a certain
+ type, it
+ may not be desired to print just that there aren't any but instead
+ only
+ print something if there are any.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Conditional Expansion </title>
+
+ <para>
+ To only print the number of messages if there are new messages in
+ the current mailbox, further extend
+ <literal>$status_format</literal> to:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B %?n?%n new? ...</screen>
+
+ </para>
+
+ <para>
+ This feature is called <emphasis>nonzero-printing</emphasis> and
+ works as this:
+ some expandos may be optionally printed nonzero, i.e. a portion
+ of the format string is only evaluated if the value of the expando
+ is different from zero. The basic syntax is:
+ </para>
+
+ <para>
+
+ <screen>
+%?<item>?<string if nonzero>?</screen>
+
+ </para>
+
+ <para>
+ which tells mutt-ng to only look at <literal><string if
+ nonzero>
+ </literal>
+ if the value of the <literal>%<item%gt;</literal>
+ expando is different from zero. In our example, we used <literal>n</literal> as
+ the expando to check for and <literal>%n new</literal> as the
+ optional nonzero
+ string.
+ </para>
+
+ <para>
+ But this is not all: this feature only offers one alternative:
+ ``print something if not zero.'' Mutt-ng does, as you might guess,
+ also provide a logically complete version: ``if zero, print
+ something and else print something else.'' This is achieved by the
+ following syntax for those expandos which may be printed nonzero:
+ </para>
+
+ <para>
+
+ <screen>
+%?<item>?<string if nonzero>&<string if zero>?</screen>
+
+ </para>
+
+ <para>
+ Using this we can make mutt-ng to do the following:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ make it print ``<emphasis>n</emphasis> new messages'' whereby <emphasis>
+ n
+ </emphasis>
+ is the
+ count but only if there new ones
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ and make it print ``no new messages'' if there aren't any
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ The corresponding configuration is:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B: %?n?%n new messages&no new messages? ...</screen>
+
+ </para>
+
+ <para>
+ This doubles the use of the ``new messages'' string because it'll get
+ always printed. Thus, it can be shortened to:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B: %?n?%n&no? new messages ...</screen>
+
+ </para>
+
+ <para>
+ As you might see from this rather simple example, one can create
+ very complex but fancy status messages. Please see the reference
+ chapter for expandos and those which may be printed nonzero.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Modifications and Padding </title>
+
+ <para>
+ Besides the information given so far, there're even more features of
+ format strings:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ When specifying <literal>%_<item></literal>
+ instead of
+ just <literal>%<item></literal>, mutt-ng will
+ convert all
+ characters in the expansion of <literal><item></literal>
+ to
+ lowercase.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ When specifying <literal>%:<item></literal>
+ instead of just
+ <literal>%<item></literal>, mutt-ng will convert
+ all dots in the
+ expansion of <literal><item></literal> to underscores
+ (<literal>_</literal>).
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ Also, there's a feature called <emphasis>Padding</emphasis> supplied
+ by the
+ following two expandos: <literal>%|X</literal> and <literal>
+ %>X
+ </literal>
+ .
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>%|X</literal>
+ </term>
+ <listitem>
+ <para>
+ When this occurs, mutt-ng will fill the
+ rest of the line with the character <literal>X</literal>. In
+ our example,
+ filling the rest of the line with dashes is done by setting:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B: %?n?%n&no? new messages %|-"</screen>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <literal>%>X</literal>
+ </term>
+ <listitem>
+ <para>
+ Since the previous expando stops at
+ the end of line, there must be a way to fill the gap between
+ two items via the <literal>%>X</literal> expando:
+ it puts as many
+ characters <literal>X</literal> in between two items so that
+ the rest of
+ the line will be right-justified. For example, to not put the
+ version string and hostname of our example on the left but on
+ the right and fill the gap with spaces, one might use (note
+ the space after <literal>%></literal>):
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%B: %?n?%n&no? new messages %> (%v on %h)"</screen>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>Using Tags </title>
+
+ <para>
+ Sometimes it is desirable to perform an operation on a group of
+ messages all at once rather than one at a time. An example might be
+ to save messages to a mailing list to a separate folder, or to
+ delete all messages with a given subject. To tag all messages
+ matching a pattern, use the tag-pattern function, which is bound to
+ ``shift-T'' by default. Or you can select individual messages by
+ hand using the ``tag-message'' function, which is bound to ``t'' by
+ default. See <link linkend="patterns">patterns</link> for Mutt-ng's
+ pattern
+ matching syntax.
+ </para>
+
+ <para>
+ Once you have tagged the desired messages, you can use the
+ ``tag-prefix'' operator, which is the ``;'' (semicolon) key by default.
+ When the ``tag-prefix'' operator is used, the <emphasis role="bold">
+ next
+ </emphasis>
+ operation will
+ be applied to all tagged messages if that operation can be used in that
+ manner. If the <link linkend="auto-tag">auto-tag</link>
+ variable is set, the next operation applies to the tagged messages
+ automatically, without requiring the ``tag-prefix''.
+ </para>
+
+ <para>
+ In <link linkend="macro">macro</link> or <link linkend="push">push</link> commands,
+ you can use the ``tag-prefix-cond'' operator. If there are no tagged
+ messages, mutt will "eat" the rest of the macro to abort it's
+ execution.Mutt-ng will stop "eating" the macro when it encounters the
+ ``end-cond''
+ operator; after this operator the rest of the macro will be executed
+ asnormal.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="hooks">
+ <title>Using Hooks </title>
+
+ <para>
+ A <emphasis>hook</emphasis> is a concept borrowed from the EMACS editor
+ which allows you to
+ execute arbitrary commands before performing some operation. For
+ example,
+ you may wish to tailor your configuration based upon which mailbox you
+ are
+ reading, or to whom you are sending mail. In the Mutt-ng world, a <emphasis>
+ hook
+ </emphasis>
+ consists of a <link linkend="regexp">regexp</link> or
+ <link linkend="patterns">patterns</link> along with a
+ configuration option/command. See
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <link linkend="folder-hook">folder-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="send-hook">send-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="message-hook">message-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="save-hook">save-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="mbox-hook">mbox-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="fcc-hook">fcc-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="fcc-save-hook">fcc-save-hook</link>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ for specific details on each type of <emphasis>hook</emphasis>
+ available.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> if a hook changes configuration
+ settings, these changes remain
+ effective until the end of the current mutt session. As this is
+ generally
+ not desired, a default hook needs to be added before all other hooks to
+ restore configuration defaults. Here is an example with send-hook and
+ the
+ my_hdr directive:
+ </para>
+
+ <para>
+
+ <screen>
send-hook . 'unmy_hdr From:'
-send-hook ~C'^b@b\.b$' my_hdr from: c@c.c
-</verb></tscreen>
-
-<sect2>Message Matching in Hooks<label id="pattern_hook">
-<p>
-Hooks that act upon messages (<tt/send-hook, save-hook, fcc-hook,
-message-hook/) are evaluated in a slightly different manner. For the other
-types of hooks, a <ref id="regexp" name="regular expression"> is
-sufficient. But in dealing with messages a finer grain of control is
-needed for matching since for different purposes you want to match
-different criteria.
-
-Mutt-ng allows the use of the <ref id="patterns" name="search pattern">
-language for matching messages in hook commands. This works in
-exactly the same way as it would when <em/limiting/ or
-<em/searching/ the mailbox, except that you are restricted to those
-operators which match information mutt extracts from the header of
-the message (i.e. from, to, cc, date, subject, etc.).
-
-For example, if you wanted to set your return address based upon sending
-mail to a specific address, you could do something like:
-<tscreen><verb>
-send-hook '~t ^me@cs\.hmc\.edu$' 'my_hdr From: Mutt-ng User <user@host>'
-</verb></tscreen>
-which would execute the given command when sending mail to
-<em/me@cs.hmc.edu/.
-
-However, it is not required that you write the pattern to match using the
-full searching language. You can still specify a simple <em/regular
-expression/ like the other hooks, in which case Mutt-ng will translate your
-pattern into the full language, using the translation specified by the
-<ref id="default_hook" name="$default_hook"> variable. The
-pattern is translated at the time the hook is declared, so the value of
-<ref id="default_hook" name="$default_hook"> that is in effect
-at that time will be used.
-
-<sect1>Using the sidebar<label id="sidebar">
-<p>
-The sidebar, a feature specific to Mutt-ng, allows you to use a mailbox listing
-which looks very similar to the ones you probably know from GUI mail clients.
-The sidebar lists all specified mailboxes, shows the number in each
-and highlights the ones with new email
-Use the following configuration commands:
-<tscreen><verb>
+send-hook ~C'^b@b\.b$' my_hdr from: c@c.c</screen>
+
+ </para>
+
+ <sect2 id="pattern-hook">
+ <title>Message Matching in Hooks</title>
+
+ <para>
+ Hooks that act upon messages (<literal>send-hook, save-hook,
+ fcc-hook,message-hook
+ </literal>
+ )are evaluated in a slightly different manner. For the other
+ types of hooks, a <link linkend="regexp">regexp</link> is
+ sufficient. But in dealing with messages a finer grain of control is
+ needed for matching since for different purposes you want to match
+ different criteria.
+ </para>
+
+ <para>
+ Mutt-ng allows the use of the <link linkend="patterns">patterns</link>
+ language for matching messages in hook commands. This works in
+ exactly the same way as it would when <emphasis>limiting</emphasis>
+ or<emphasis>searching</emphasis> the mailbox, except that you are
+ restricted to those
+ operators which match information mutt extracts from the header of
+ the message (i.e. from, to, cc, date, subject, etc.).
+ </para>
+
+ <para>
+ For example, if you wanted to set your return address based upon
+ sending
+ mail to a specific address, you could do something like:
+
+ <screen>
+send-hook '~t ^me@cs\.hmc\.edu$' 'my_hdr From: Mutt-ng User <user@host>'</screen>
+
+ which would execute the given command when sending mail to
+ <emphasis>me@cs.hmc.edu</emphasis>.
+ </para>
+
+ <para>
+ However, it is not required that you write the pattern to match using
+ the
+ full searching language. You can still specify a simple <emphasis>
+ regular
+ expression
+ </emphasis>
+ like the other hooks, in which case Mutt-ng will translate your
+ pattern into the full language, using the translation specified by
+ the
+ <link linkend="default-hook">default-hook</link> variable. The
+ pattern is translated at the time the hook is declared, so the value
+ of
+ <link linkend="default-hook">default-hook</link> that is in effect
+ at that time will be used.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="sidebar">
+ <title>Using the sidebar </title>
+
+ <para>
+ The sidebar, a feature specific to Mutt-ng, allows you to use a mailbox
+ listing
+ which looks very similar to the ones you probably know from GUI mail
+ clients.
+ The sidebar lists all specified mailboxes, shows the number in each
+ and highlights the ones with new email
+ Use the following configuration commands:
+
+ <screen>
set sidebar_visible="yes"
-set sidebar_width=25
-</verb></tscreen>
-
-If you want to specify the mailboxes you can do so with:
-<tscreen><verb>
+set sidebar_width=25</screen>
+
+ </para>
+
+ <para>
+ If you want to specify the mailboxes you can do so with:
+
+ <screen>
set mbox='=INBOX'
mailboxes INBOX \
- MBOX1 \
- MBOX2 \
- ...
-</verb></tscreen>
-
-You can also specify the colors for mailboxes with new mails by using:
-<tscreen><verb>
+MBOX1 \
+MBOX2 \
+...</screen>
+
+ </para>
+
+ <para>
+ You can also specify the colors for mailboxes with new mails by using:
+
+ <screen>
color sidebar_new red black
-color sidebar white black
-</verb></tscreen>
-
-The available functions are:
-<tscreen><verb>
-sidebar-scroll-up Scrolls the mailbox list up 1 page
-sidebar-scroll-down Scrolls the mailbox list down 1 page
-sidebar-next Highlights the next mailbox
-sidebar-next-new Highlights the next mailbox with new mail
-sidebar-previous Highlights the previous mailbox
-sidebar-open Opens the currently highlighted mailbox
-</verb></tscreen>
-
-Reasonable key bindings look e.g. like this:
-<tscreen><verb>
+color sidebar white black</screen>
+
+ </para>
+
+ <para>
+ The available functions are:
+
+ <table>
+ <title>Default Sidebar Function Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>none</code></entry><entry><code>sidebar-scroll-up </code></entry><entry>Scrolls the mailbox list up 1 page</entry></row>
+ <row><entry><code>none</code></entry><entry><code>sidebar-scroll-down </code></entry><entry>Scrolls the mailbox list down 1 page</entry></row>
+ <row><entry><code>none</code></entry><entry><code>sidebar-next </code></entry><entry>Highlights the next mailbox</entry></row>
+ <row><entry><code>none</code></entry><entry><code>sidebar-next-new </code></entry><entry>Highlights the next mailbox with new mail</entry></row>
+ <row><entry><code>none</code></entry><entry><code>sidebar-previous </code></entry><entry>Highlights the previous mailbox</entry></row>
+ <row><entry><code>none</code></entry><entry><code>sidebar-open </code></entry><entry>Opens the currently highlighted mailbox</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ Reasonable key bindings look e.g. like this:
+
+ <screen>
bind index \Cp sidebar-prev
bind index \Cn sidebar-next
bind index \Cb sidebar-open
bind pager \Cb sidebar-open
macro index B ':toggle sidebar_visible^M'
-macro pager B ':toggle sidebar_visible^M'
-</verb></tscreen>
-
-You can then go up and down by pressing Ctrl-P and Ctrl-N, and
-switch on and off the sidebar simply by pressing 'B'.
-
-<sect1>External Address Queries<label id="query">
-<p>
-Mutt-ng supports connecting to external directory databases such as LDAP,
-ph/qi, bbdb, or NIS through a wrapper script which connects to mutt
-using a simple interface. Using the <ref id="query_command"
-name="$query_command"> variable, you specify the wrapper
-command to use. For example:
-
-<tscreen><verb>
-set query_command = "mutt_ldap_query.pl '%s'"
-</verb></tscreen>
-
-The wrapper script should accept the query on the command-line. It
-should return a one line message, then each matching response on a
-single line, each line containing a tab separated address then name then
-some other optional information. On error, or if there are no matching
-addresses, return a non-zero exit code and a one line error message.
-
-An example multiple response output:
-<tscreen><verb>
+macro pager B ':toggle sidebar_visible^M'</screen>
+
+ </para>
+
+ <para>
+ You can then go up and down by pressing Ctrl-P and Ctrl-N, and
+ switch on and off the sidebar simply by pressing 'B'.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="query">
+ <title>External Address Queries </title>
+
+ <para>
+ Mutt-ng supports connecting to external directory databases such as
+ LDAP,
+ ph/qi, bbdb, or NIS through a wrapper script which connects to mutt
+ using a simple interface. Using the <link linkend="query-command">
+ query-command
+ </link>
+ variable, you specify the wrapper
+ command to use. For example:
+ </para>
+
+ <para>
+
+ <screen>
+set query_command = "mutt_ldap_query.pl '%s'"</screen>
+
+ </para>
+
+ <para>
+ The wrapper script should accept the query on the command-line. It
+ should return a one line message, then each matching response on a
+ single line, each line containing a tab separated address then name
+ thensome other optional information. On error, or if there are no
+ matching
+ addresses, return a non-zero exit code and a one line error message.
+ </para>
+
+ <para>
+ An example multiple response output:
+
+ <screen>
Searching database ... 20 entries ... 3 matching:
me@cs.hmc.edu Michael Elkins mutt dude
blong@fiction.net Brandon Long mutt and more
-roessler@guug.de Thomas Roessler mutt pgp
-</verb></tscreen>
-
-There are two mechanisms for accessing the query function of mutt. One
-is to do a query from the index menu using the query function (default: Q).
-This will prompt for a query, then bring up the query menu which will
-list the matching responses. From the query menu, you can select
-addresses to create aliases, or to mail. You can tag multiple addresses
-to mail, start a new query, or have a new query appended to the current
-responses.
-
-The other mechanism for accessing the query function is for address
-completion, similar to the alias completion. In any prompt for address
-entry, you can use the complete-query function (default: ^T) to run a
-query based on the current address you have typed. Like aliases, mutt
-will look for what you have typed back to the last space or comma. If
-there is a single response for that query, mutt will expand the address
-in place. If there are multiple responses, mutt will activate the query
-menu. At the query menu, you can select one or more addresses to be
-added to the prompt.
-
-<sect1>Mailbox Formats
-<p>
-Mutt-ng supports reading and writing of four different mailbox formats:
-mbox, MMDF, MH and Maildir. The mailbox type is autodetected, so there
-is no need to use a flag for different mailbox types. When creating new
-mailboxes, Mutt-ng uses the default specified with the <ref id="mbox_type"
-name="$mbox_type"> variable.
-
-<bf/mbox/. This is the most widely used mailbox format for UNIX. All
-messages are stored in a single file. Each message has a line of the form:
-
-<tscreen><verb>
-From me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST
-</verb></tscreen>
-
-to denote the start of a new message (this is often referred to as the
-``From_'' line).
-
-<bf/MMDF/. This is a variant of the <em/mbox/ format. Each message is
-surrounded by lines containing ``^A^A^A^A'' (four control-A's).
-
-<bf/MH/. A radical departure from <em/mbox/ and <em/MMDF/, a mailbox
-consists of a directory and each message is stored in a separate file.
-The filename indicates the message number (however, this is may not
-correspond to the message number Mutt-ng displays). Deleted messages are
-renamed with a comma (,) prepended to the filename. <bf/Note:/ Mutt
-detects this type of mailbox by looking for either <tt/.mh_sequences/
-or <tt/.xmhcache/ (needed to distinguish normal directories from MH
-mailboxes).
-
-<bf/Maildir/. The newest of the mailbox formats, used by the Qmail MTA (a
-replacement for sendmail). Similar to <em/MH/, except that it adds three
-subdirectories of the mailbox: <em/tmp/, <em/new/ and <em/cur/. Filenames
-for the messages are chosen in such a way they are unique, even when two
-programs are writing the mailbox over NFS, which means that no file locking
-is needed.
-
-<sect1>Mailbox Shortcuts<label id="shortcuts">
-<p>
-There are a number of built in shortcuts which refer to specific mailboxes.
-These shortcuts can be used anywhere you are prompted for a file or mailbox
-path.
-
-<itemize>
-<item>! -- refers to your <ref id="spoolfile" name="$spoolfile"> (incoming) mailbox
-<item>> -- refers to your <ref id="mbox" name="$mbox"> file
-<item>< -- refers to your <ref id="record" name="$record"> file
-<item>^ -- refers to the current mailbox
-<item>- or !! -- refers to the file you've last visited
-<item>˜ -- refers to your home directory
-<item>= or + -- refers to your <ref id="folder" name="$folder"> directory
-<item>@<em/alias/ -- refers to the <ref id="save-hook"
-name="default save folder"> as determined by the address of the alias
-</itemize>
-
-<sect1>Handling Mailing Lists<label id="using_lists">
-<p>
-
-Mutt-ng has a few configuration options that make dealing with large
-amounts of mail easier. The first thing you must do is to let Mutt
-know what addresses you consider to be mailing lists (technically
-this does not have to be a mailing list, but that is what it is most
-often used for), and what lists you are subscribed to. This is
-accomplished through the use of the <ref id="lists"
-name="lists and subscribe"> commands in your muttrc.
-
-Now that Mutt-ng knows what your mailing lists are, it can do several
-things, the first of which is the ability to show the name of a list
-through which you received a message (i.e., of a subscribed list) in
-the <em/index/ menu display. This is useful to distinguish between
-personal and list mail in the same mailbox. In the <ref id="index_format"
-name="$index_format"> variable, the escape ``%L''
-will return the string ``To <list>'' when ``list'' appears in the
-``To'' field, and ``Cc <list>'' when it appears in the ``Cc''
-field (otherwise it returns the name of the author).
-
-Often times the ``To'' and ``Cc'' fields in mailing list messages
-tend to get quite large. Most people do not bother to remove the
-author of the message they are reply to from the list, resulting in
-two or more copies being sent to that person. The ``list-reply''
-function, which by default is bound to ``L'' in the <em/index/ menu
-and <em/pager/, helps reduce the clutter by only replying to the
-known mailing list addresses instead of all recipients (except as
-specified by <tt/Mail-Followup-To/, see below).
-
-Mutt-ng also supports the <tt/Mail-Followup-To/ header. When you send
-a message to a list of recipients which includes one or several
-subscribed mailing lists, and if the <ref id="followup_to"
-name="$followup_to"> option is set, mutt will generate
-a Mail-Followup-To header which contains all the recipients to whom
-you send this message, but not your address. This indicates that
-group-replies or list-replies (also known as ``followups'') to this
-message should only be sent to the original recipients of the
-message, and not separately to you - you'll receive your copy through
-one of the mailing lists you are subscribed to.
-
-Conversely, when group-replying or list-replying to a message which
-has a <tt/Mail-Followup-To/ header, mutt will respect this header if
-the <ref id="honor_followup_to"
-name="$honor_followup_to"> configuration
-variable is set. Using list-reply will in this case also make sure
-that the reply goes to the mailing list, even if it's not specified
-in the list of recipients in the <tt/Mail-Followup-To/.
-
-Note that, when header editing is enabled, you can create a
-<tt/Mail-Followup-To/ header manually. Mutt-ng will only auto-generate
-this header if it doesn't exist when you send the message.
-
-
-The other method some mailing list admins use is to generate a
-``Reply-To'' field which points back to the mailing list address rather
-than the author of the message. This can create problems when trying
-to reply directly to the author in private, since most mail clients
-will automatically reply to the address given in the ``Reply-To''
-field. Mutt-ng uses the <ref id="reply_to" name="$reply_to">
-variable to help decide which address to use. If set to <em/ask-yes/ or
-<em/ask-no/, you will be
-prompted as to whether or not you would like to use the address given in
-the ``Reply-To'' field, or reply directly to the address given in the
-``From'' field. When set to <em/yes/, the ``Reply-To'' field will be used when
-present.
-
-The ``X-Label:'' header field can be used to further identify mailing
-lists or list subject matter (or just to annotate messages
-individually). The <ref id="index_format"
-name="$index_format"> variable's ``%y'' and
-``%Y'' escapes can be used to expand ``X-Label:'' fields in the
-index, and Mutt-ng's pattern-matcher can match regular expressions to
-``X-Label:'' fields with the ``~y'' selector. ``X-Label:'' is not a
-standard message header field, but it can easily be inserted by procmail
-and other mail filtering agents.
-
-Lastly, Mutt-ng has the ability to <ref id="sort" name="sort"> the mailbox into
-<ref id="threads" name="threads">. A thread is a group of messages which all relate to the same
-subject. This is usually organized into a tree-like structure where a
-message and all of its replies are represented graphically. If you've ever
-used a threaded news client, this is the same concept. It makes dealing
-with large volume mailing lists easier because you can easily delete
-uninteresting threads and quickly find topics of value.
-
-<sect1>Editing threads
-<p>
-Mutt-ng has the ability to dynamically restructure threads that are broken
-either by misconfigured software or bad behavior from some
-correspondents. This allows to clean your mailboxes formats) from these
-annoyances which make it hard to follow a discussion.
-
-<sect2>Linking threads
-<p>
-
-Some mailers tend to "forget" to correctly set the "In-Reply-To:" and
-"References:" headers when replying to a message. This results in broken
-discussions because Mutt-ng has not enough information to guess the correct
-threading.
-You can fix this by tagging the reply, then moving to the parent message
-and using the ``link-threads'' function (bound to & by default). The
-reply will then be connected to this "parent" message.
-
-You can also connect multiple children at once, tagging them and using the
-tag-prefix command (';') or the auto_tag option.
-
-<sect2>Breaking threads
-<p>
-
-On mailing lists, some people are in the bad habit of starting a new
-discussion by hitting "reply" to any message from the list and changing
-the subject to a totally unrelated one.
-You can fix such threads by using the ``break-thread'' function (bound
-by default to #), which will turn the subthread starting from the
-current message into a whole different thread.
-
-<sect1>Delivery Status Notification (DSN) Support
-<p>
-
-RFC1894 defines a set of MIME content types for relaying information
-about the status of electronic mail messages. These can be thought of as
-``return receipts.'' Berkeley sendmail 8.8.x currently has some command
-line options in which the mail client can make requests as to what type
-of status messages should be returned.
-
-To support this, there are two variables. <ref id="dsn_notify"
-name="$dsn_notify"> is used to request receipts for
-different results (such as failed message, message delivered, etc.).
-<ref id="dsn_return" name="$dsn_return"> requests how much
-of your message should be returned with the receipt (headers or full
-message). Refer to the man page on sendmail for more details on DSN.
-
-<sect1>POP3 Support (OPTIONAL)
-<p>
-
-If Mutt-ng was compiled with POP3 support (by running the <em/configure/
-script with the <em/--enable-pop/ flag), it has the ability to work
-with mailboxes located on a remote POP3 server and fetch mail for local
-browsing.
-
-You can access the remote POP3 mailbox by selecting the folder
-<tt>pop://popserver/</tt>.
-
-You can select an alternative port by specifying it with the server, i.e.:
-<tt>pop://popserver:port/</tt>.
-
-You can also specify different username for each folder, i.e.:
-<tt>pop://username@popserver[:port]/</tt>.
-
-Polling for new mail is more expensive over POP3 than locally. For this
-reason the frequency at which Mutt-ng will check for mail remotely can be
-controlled by the
-<ref id="pop_mail_check" name="$pop_mail_check">
-variable, which defaults to every 60 seconds.
-
-If Mutt-ng was compiled with SSL support (by running the <em/configure/
-script with the <em/--with-ssl/ flag), connections to POP3 servers
-can be encrypted. This naturally requires that the server supports
-SSL encrypted connections. To access a folder with POP3/SSL, you should
-use pops: prefix, ie:
-<tt>pops://[username@]popserver[:port]/</tt>.
-
-Another way to access your POP3 mail is the <em/fetch-mail/ function
-(default: G). It allows to connect to <ref id="pop_host"
-name="pop_host">, fetch all your new mail and place it in the
-local <ref id="spoolfile" name="spoolfile">. After this
-point, Mutt-ng runs exactly as if the mail had always been local.
-
-<bf/Note:/ If you only need to fetch all messages to local mailbox
-you should consider using a specialized program, such as <htmlurl
-url="http://www.ccil.org/~esr/fetchmail" name="fetchmail">
-
-<sect1>IMAP Support (OPTIONAL)
-<p>
-
-If Mutt-ng was compiled with IMAP support (by running the <em/configure/
-script with the <em/--enable-imap/ flag), it has the ability to work
-with folders located on a remote IMAP server.
-
-You can access the remote inbox by selecting the folder
-<tt>imap://imapserver/INBOX</tt>, where <tt/imapserver/ is the name of the
-IMAP server and <tt/INBOX/ is the special name for your spool mailbox on
-the IMAP server. If you want to access another mail folder at the IMAP
-server, you should use <tt>imap://imapserver/path/to/folder</tt> where
-<tt>path/to/folder</tt> is the path of the folder you want to access.
-
-You can select an alternative port by specifying it with the server, i.e.:
-<tt>imap://imapserver:port/INBOX</tt>.
-
-You can also specify different username for each folder, i.e.:
-<tt>imap://username@imapserver[:port]/INBOX</tt>.
-
-If Mutt-ng was compiled with SSL support (by running the <em/configure/
-script with the <em/--with-ssl/ flag), connections to IMAP servers
-can be encrypted. This naturally requires that the server supports
-SSL encrypted connections. To access a folder with IMAP/SSL, you should
-use <tt>imaps://[username@]imapserver[:port]/path/to/folder</tt> as your
-folder path.
-
-Pine-compatible notation is also supported, i.e.
-<tt>{[username@]imapserver[:port][/ssl]}path/to/folder</tt>
-
-Note that not all servers use / as the hierarchy separator. Mutt-ng should
-correctly notice which separator is being used by the server and convert
-paths accordingly.
-
-When browsing folders on an IMAP server, you can toggle whether to look
-at only the folders you are subscribed to, or all folders with the
-<em/toggle-subscribed/ command. See also the
-<ref id="imap_list_subscribed"
-name="$imap_list_subscribed"> variable.
-
-Polling for new mail on an IMAP server can cause noticeable delays. So, you'll
-want to carefully tune the
-<ref id="imap_mail_check" name="$imap_mail_check">
-and
-<ref id="timeout" name="$timeout">
-variables.
-
-Note that if you are using mbox as the mail store on UW servers prior to
-v12.250, the server has been reported to disconnect a client if another client
-selects the same folder.
-
-<sect2>The Folder Browser
-<p>
-
-As of version 1.2, mutt supports browsing mailboxes on an IMAP
-server. This is mostly the same as the local file browser, with the
-following differences:
-<itemize>
-<item>Instead of file permissions, mutt displays the string "IMAP",
- possibly followed by the symbol "+", indicating
- that the entry contains both messages and subfolders. On
- Cyrus-like servers folders will often contain both messages and
- subfolders.
-<item>For the case where an entry can contain both messages and
- subfolders, the selection key (bound to <tt>enter</tt> by default)
- will choose to descend into the subfolder view. If you wish to view
- the messages in that folder, you must use <tt>view-file</tt> instead
- (bound to <tt>space</tt> by default).
-<item>You can create, delete and rename mailboxes with the
- <tt>create-mailbox</tt>, <tt>delete-mailbox</tt>, and
- <tt>rename-mailbox</tt> commands (default bindings: <tt>C</tt>,
- <tt>d</tt> and <tt>r</tt>, respectively). You may also
- <tt>subscribe</tt> and <tt>unsubscribe</tt> to mailboxes (normally
- these are bound to <tt>s</tt> and <tt>u</tt>, respectively).
-</itemize>
-
-<sect2>Authentication
-<p>
-
-Mutt-ng supports four authentication methods with IMAP servers: SASL,
-GSSAPI, CRAM-MD5, and LOGIN (there is a patch by Grant Edwards to add
-NTLM authentication for you poor exchange users out there, but it has
-yet to be integrated into the main tree). There is also support for
-the pseudo-protocol ANONYMOUS, which allows you to log in to a public
-IMAP server without having an account. To use ANONYMOUS, simply make
-your username blank or "anonymous".
-<p>
-SASL is a special super-authenticator, which selects among several protocols
-(including GSSAPI, CRAM-MD5, ANONYMOUS, and DIGEST-MD5) the most secure
-method available on your host and the server. Using some of these methods
-(including DIGEST-MD5 and possibly GSSAPI), your entire session will be
-encrypted and invisible to those teeming network snoops. It is the best
-option if you have it. To use it, you must have the Cyrus SASL library
-installed on your system and compile mutt with the <em/--with-sasl/ flag.
-<p>
-Mutt-ng will try whichever methods are compiled in and available on the server,
-in the following order: SASL, ANONYMOUS, GSSAPI, CRAM-MD5, LOGIN.
-
-There are a few variables which control authentication:
-<itemize>
-<item><ref id="imap_user" name="$imap_user"> - controls
- the username under which you request authentication on the IMAP server,
- for all authenticators. This is overridden by an explicit username in
- the mailbox path (i.e. by using a mailbox name of the form
- <tt/{user@host}/).
-<item><ref id="imap_pass" name="$imap_pass"> - a
- password which you may preset, used by all authentication methods where
- a password is needed.
-<item><ref id="imap_authenticators"
- name="$imap_authenticators"> - a colon-delimited list of IMAP
- authentication methods to try, in the order you wish to try them. If
- specified, this overrides mutt's default (attempt everything, in the order
- listed above).
-</itemize>
-
-<sect1>Managing multiple IMAP/POP accounts (OPTIONAL)<label id="account-hook">
-<p>
-
-If you happen to have accounts on multiple IMAP and/or POP servers,
-you may find managing all the authentication settings inconvenient and
-error-prone. The account-hook command may help. This hook works like
-folder-hook but is invoked whenever you access a remote mailbox
-(including inside the folder browser), not just when you open the
-mailbox.
-<p>
-Some examples:
-
-<tscreen><verb>
+roessler@guug.de Thomas Roessler mutt pgp</screen>
+
+ </para>
+
+ <para>
+ There are two mechanisms for accessing the query function of mutt. One
+ is to do a query from the index menu using the query function (default:
+ Q).
+ This will prompt for a query, then bring up the query menu which will
+ list the matching responses. From the query menu, you can select
+ addresses to create aliases, or to mail. You can tag multiple
+ addressesto mail, start a new query, or have a new query appended to
+ the current
+ responses.
+ </para>
+
+ <para>
+ The other mechanism for accessing the query function is for address
+ completion, similar to the alias completion. In any prompt for address
+ entry, you can use the complete-query function (default: ˆT) to
+ run a
+ query based on the current address you have typed. Like aliases, mutt
+ will look for what you have typed back to the last space or comma. If
+ there is a single response for that query, mutt will expand the address
+ in place. If there are multiple responses, mutt will activate the
+ querymenu. At the query menu, you can select one or more addresses to
+ be
+ added to the prompt.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Mailbox Formats </title>
+
+ <para>
+ Mutt-ng supports reading and writing of four different mailbox formats:
+ mbox, MMDF, MH and Maildir. The mailbox type is autodetected, so there
+ is no need to use a flag for different mailbox types. When creating
+ newmailboxes, Mutt-ng uses the default specified with the <link linkend="mbox-type">
+ mbox-type
+ </link>
+ variable.
+ </para>
+
+ <para>
+ <emphasis role="bold">mbox</emphasis>. This is the most widely used
+ mailbox format for UNIX. All
+ messages are stored in a single file. Each message has a line of the
+ form:
+ </para>
+
+ <para>
+
+ <screen>
+From me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST</screen>
+
+ </para>
+
+ <para>
+ to denote the start of a new message (this is often referred to as the
+ ``From_'' line).
+ </para>
+
+ <para>
+ <emphasis role="bold">MMDF</emphasis>. This is a variant of the <emphasis>
+ mbox
+ </emphasis>
+ format. Each message is
+ surrounded by lines containing ``ˆAˆAˆAˆA'' (four
+ control-A's).
+ </para>
+
+ <para>
+ <emphasis role="bold">MH</emphasis>. A radical departure from <emphasis>
+ mbox
+ </emphasis>
+ and <emphasis>MMDF</emphasis>, a mailbox
+ consists of a directory and each message is stored in a separate file.
+ The filename indicates the message number (however, this is may not
+ correspond to the message number Mutt-ng displays). Deleted messages
+ arerenamed with a comma (,) prepended to the filename. <emphasis role="bold">
+ Note:
+ </emphasis>
+ Mutt
+ detects this type of mailbox by looking for either <literal>
+ .mh_sequences
+ </literal>
+ or <literal>.xmhcache</literal> (needed to distinguish normal
+ directories from MH
+ mailboxes).
+ </para>
+
+ <para>
+ <emphasis role="bold">Maildir</emphasis>. The newest of the mailbox
+ formats, used by the Qmail MTA (a
+ replacement for sendmail). Similar to <emphasis>MH</emphasis>, except
+ that it adds three
+ subdirectories of the mailbox: <emphasis>tmp</emphasis>, <emphasis>new</emphasis> and <emphasis>
+ cur
+ </emphasis>
+ .Filenames
+ for the messages are chosen in such a way they are unique, even when
+ twoprograms are writing the mailbox over NFS, which means that no file
+ locking
+ is needed.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="shortcuts">
+ <title>Mailbox Shortcuts </title>
+
+ <para>
+ There are a number of built in shortcuts which refer to specific
+ mailboxes.
+ These shortcuts can be used anywhere you are prompted for a file or
+ mailbox
+ path.
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ ! -- refers to your <link linkend="spoolfile">spoolfile</link>
+ (incoming) mailbox
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ > -- refers to your <link linkend="mbox">mbox</link> file
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ < -- refers to your <link linkend="record">record</link> file
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ ˆ -- refers to the current mailbox
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ - or !! -- refers to the file you've last visited
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ ˜ -- refers to your home directory
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ = or + -- refers to your <link linkend="folder">folder</link>
+ directory
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ @<emphasis>alias</emphasis> -- refers to the <link linkend="save-hook">
+ save-hook
+ </link>
+ as determined by the address of the alias
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="using-lists">
+ <title>Handling Mailing Lists </title>
+
+ <para>
+ Mutt-ng has a few configuration options that make dealing with large
+ amounts of mail easier. The first thing you must do is to let Mutt
+ know what addresses you consider to be mailing lists (technically
+ this does not have to be a mailing list, but that is what it is most
+ often used for), and what lists you are subscribed to. This is
+ accomplished through the use of the <link linkend="lists">lists</link>
+ commands in your muttrc.
+ </para>
+
+ <para>
+ Now that Mutt-ng knows what your mailing lists are, it can do several
+ things, the first of which is the ability to show the name of a list
+ through which you received a message (i.e., of a subscribed list) in
+ the <emphasis>index</emphasis> menu display. This is useful to
+ distinguish between
+ personal and list mail in the same mailbox. In the <link linkend="index-format">
+ index-format
+ </link>
+ variable, the escape ``%L''
+ will return the string ``To <list>'' when ``list'' appears in the
+ ``To'' field, and ``Cc <list>'' when it appears in the ``Cc''
+ field (otherwise it returns the name of the author).
+ </para>
+
+ <para>
+ Often times the ``To'' and ``Cc'' fields in mailing list messages
+ tend to get quite large. Most people do not bother to remove the
+ author of the message they are reply to from the list, resulting in
+ two or more copies being sent to that person. The ``list-reply''
+ function, which by default is bound to ``L'' in the <emphasis>index</emphasis> menu
+ and <emphasis>pager</emphasis>, helps reduce the clutter by only
+ replying to the
+ known mailing list addresses instead of all recipients (except as
+ specified by <literal>Mail-Followup-To</literal>, see below).
+ </para>
+
+ <para>
+ Mutt-ng also supports the <literal>Mail-Followup-To</literal> header.
+ When you send
+ a message to a list of recipients which includes one or several
+ subscribed mailing lists, and if the <link linkend="followup-to">
+ followup-to
+ </link>
+ option is set, mutt will generate
+ a Mail-Followup-To header which contains all the recipients to whom
+ you send this message, but not your address. This indicates that
+ group-replies or list-replies (also known as ``followups'') to this
+ message should only be sent to the original recipients of the
+ message, and not separately to you - you'll receive your copy through
+ one of the mailing lists you are subscribed to.
+ </para>
+
+ <para>
+ Conversely, when group-replying or list-replying to a message which
+ has a <literal>Mail-Followup-To</literal> header, mutt will respect
+ this header if
+ the <link linkend="honor-followup-to">honor-followup-to</link>
+ configuration
+ variable is set. Using list-reply will in this case also make sure
+ that the reply goes to the mailing list, even if it's not specified
+ in the list of recipients in the <literal>Mail-Followup-To</literal>.
+ </para>
+
+ <para>
+ Note that, when header editing is enabled, you can create a
+ <literal>Mail-Followup-To</literal> header manually. Mutt-ng will only
+ auto-generate
+ this header if it doesn't exist when you send the message.
+ </para>
+
+ <para>
+ The other method some mailing list admins use is to generate a
+ ``Reply-To'' field which points back to the mailing list address rather
+ than the author of the message. This can create problems when trying
+ to reply directly to the author in private, since most mail clients
+ will automatically reply to the address given in the ``Reply-To''
+ field. Mutt-ng uses the <link linkend="reply-to">reply-to</link>
+ variable to help decide which address to use. If set to <emphasis>
+ ask-yes
+ </emphasis>
+ or
+ <emphasis>ask-no</emphasis>, you will be
+ prompted as to whether or not you would like to use the address given
+ inthe ``Reply-To'' field, or reply directly to the address given in the
+ ``From'' field. When set to <emphasis>yes</emphasis>, the ``Reply-To''
+ field will be used when
+ present.
+ </para>
+
+ <para>
+ The ``X-Label:'' header field can be used to further identify mailing
+ lists or list subject matter (or just to annotate messages
+ individually). The <link linkend="index-format">index-format</link>
+ variable's ``%y'' and
+ ``%Y'' escapes can be used to expand ``X-Label:'' fields in the
+ index, and Mutt-ng's pattern-matcher can match regular expressions to
+ ``X-Label:'' fields with the ``˜y'' selector. ``X-Label:'' is
+ not a
+ standard message header field, but it can easily be inserted by
+ procmailand other mail filtering agents.
+ </para>
+
+ <para>
+ Lastly, Mutt-ng has the ability to <link linkend="sort">sort</link> the
+ mailbox into
+ <link linkend="threads">threads</link>. A thread is a group of
+ messages which all relate to the same
+ subject. This is usually organized into a tree-like structure where a
+ message and all of its replies are represented graphically. If you've
+ ever
+ used a threaded news client, this is the same concept. It makes
+ dealingwith large volume mailing lists easier because you can easily
+ delete
+ uninteresting threads and quickly find topics of value.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Editing threads </title>
+
+ <para>
+ Mutt-ng has the ability to dynamically restructure threads that are
+ broken
+ either by misconfigured software or bad behavior from some
+ correspondents. This allows to clean your mailboxes formats) from these
+ annoyances which make it hard to follow a discussion.
+ </para>
+
+ <sect2>
+ <title>Linking threads</title>
+
+ <para>
+ Some mailers tend to "forget" to correctly set the "In-Reply-To:" and
+ "References:" headers when replying to a message. This results in
+ broken
+ discussions because Mutt-ng has not enough information to guess the
+ correct
+ threading.
+ You can fix this by tagging the reply, then moving to the parent
+ message
+ and using the ``link-threads'' function (bound to & by default).
+ The
+ reply will then be connected to this "parent" message.
+ </para>
+
+ <para>
+ You can also connect multiple children at once, tagging them and
+ using the
+ tag-prefix command (';') or the auto_tag option.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Breaking threads</title>
+
+ <para>
+ On mailing lists, some people are in the bad habit of starting a new
+ discussion by hitting "reply" to any message from the list and
+ changing
+ the subject to a totally unrelated one.
+ You can fix such threads by using the ``break-thread'' function
+ (boundby default to #), which will turn the subthread starting
+ from the
+ current message into a whole different thread.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="dsn">
+ <title>Delivery Status Notification (DSN) Support </title>
+
+ <para>
+ RFC1894 defines a set of MIME content types for relaying information
+ about the status of electronic mail messages. These can be thought of
+ as
+ ``return receipts.''
+ </para>
+
+ <para>
+ Users can make use of it in one of the following two ways:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ Berkeley sendmail 8.8.x currently has some command line options
+ in which the mail client can make requests as to what type of
+ status
+ messages should be returned.
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The SMTP support via libESMTP supports it, too.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ To support this, there are two variables:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <link linkend="dsn-notify">dsn-notify</link> is used
+ to request receipts for different results (such as failed
+ message,message delivered, etc.).
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="dsn-return">dsn-return</link> requests
+ how much of your message should be returned with the receipt
+ (headers or full message).
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ Please see the reference chapter for possible values.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>POP3 Support (OPTIONAL) </title>
+
+ <para>
+ If Mutt-ng was compiled with POP3 support (by running the <emphasis>
+ configure
+ </emphasis>
+ script with the <emphasis>--enable-pop</emphasis> flag), it has the
+ ability to work
+ with mailboxes located on a remote POP3 server and fetch mail for local
+ browsing.
+ </para>
+
+ <para>
+ You can access the remote POP3 mailbox by selecting the folder
+ <literal>pop://popserver/</literal>.
+ </para>
+
+ <para>
+ You can select an alternative port by specifying it with the server,
+ i.e.:
+ <literal>pop://popserver:port/</literal>.
+ </para>
+
+ <para>
+ You can also specify different username for each folder, i.e.:
+ <literal>pop://username@popserver[:port]/</literal>.
+ </para>
+
+ <para>
+ Polling for new mail is more expensive over POP3 than locally. For this
+ reason the frequency at which Mutt-ng will check for mail remotely can
+ be
+ controlled by the
+ <link linkend="pop-mail-check">pop-mail-check</link>
+ variable, which defaults to every 60 seconds.
+ </para>
+
+ <para>
+ If Mutt-ng was compiled with SSL support (by running the <emphasis>
+ configure
+ </emphasis>
+ script with the <emphasis>--with-ssl</emphasis> flag), connections to
+ POP3 servers
+ can be encrypted. This naturally requires that the server supports
+ SSL encrypted connections. To access a folder with POP3/SSL, you should
+ use pops: prefix, ie:
+ <literal>pops://[username@]popserver[:port]/</literal>.
+ </para>
+
+ <para>
+ Another way to access your POP3 mail is the <emphasis>fetch-mail</emphasis> function
+ (default: G). It allows to connect to <link linkend="pop-host">
+ pop-host
+ </link>
+ ,fetch all your new mail and place it in the
+ local <link linkend="spoolfile">spoolfile</link>. After this
+ point, Mutt-ng runs exactly as if the mail had always been local.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> If you only need to fetch all
+ messages to local mailbox
+ you should consider using a specialized program, such as
+ <ulink
+ URL="http://www.ccil.org/~esr/fetchmail">fetchmail</ulink>
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>IMAP Support (OPTIONAL) </title>
+
+ <para>
+ If Mutt-ng was compiled with IMAP support (by running the <emphasis>
+ configure
+ </emphasis>
+ script with the <emphasis>--enable-imap</emphasis> flag), it has the
+ ability to work
+ with folders located on a remote IMAP server.
+ </para>
+
+ <para>
+ You can access the remote inbox by selecting the folder
+ <literal>imap://imapserver/INBOX</literal>, where <literal>imapserver</literal> is the name of the
+ IMAP server and <literal>INBOX</literal> is the special name for your
+ spool mailbox on
+ the IMAP server. If you want to access another mail folder at the IMAP
+ server, you should use <literal>imap://imapserver/path/to/folder</literal> where
+ <literal>path/to/folder</literal> is the path of the folder you want to
+ access.
+ </para>
+
+ <para>
+ You can select an alternative port by specifying it with the server,
+ i.e.:
+ <literal>imap://imapserver:port/INBOX</literal>.
+ </para>
+
+ <para>
+ You can also specify different username for each folder, i.e.:
+ <literal>imap://username@imapserver[:port]/INBOX</literal>.
+ </para>
+
+ <para>
+ If Mutt-ng was compiled with SSL support (by running the <emphasis>
+ configure
+ </emphasis>
+ script with the <emphasis>--with-ssl</emphasis> flag), connections to
+ IMAP servers
+ can be encrypted. This naturally requires that the server supports
+ SSL encrypted connections. To access a folder with IMAP/SSL, you should
+ use <literal>imaps://[username@]imapserver[:port]/path/to/folder</literal> as your
+ folder path.
+ </para>
+
+ <para>
+ Pine-compatible notation is also supported, i.e.
+ <literal>{[username@]imapserver[:port][/ssl]}path/to/folder</literal>
+ </para>
+
+ <para>
+ Note that not all servers use / as the hierarchy separator. Mutt-ng
+ should
+ correctly notice which separator is being used by the server and
+ convertpaths accordingly.
+ </para>
+
+ <para>
+ When browsing folders on an IMAP server, you can toggle whether to look
+ at only the folders you are subscribed to, or all folders with the
+ <emphasis>toggle-subscribed</emphasis> command. See also the
+ <link linkend="imap-list-subscribed">imap-list-subscribed</link>
+ variable.
+ </para>
+
+ <para>
+ Polling for new mail on an IMAP server can cause noticeable delays. So,
+ you'll
+ want to carefully tune the
+ <link linkend="imap-mail-check">imap-mail-check</link>
+ and
+ <link linkend="timeout">timeout</link>
+ variables.
+ </para>
+
+ <para>
+ Note that if you are using mbox as the mail store on UW servers prior
+ tov12.250, the server has been reported to disconnect a client if
+ another client
+ selects the same folder.
+ </para>
+
+ <sect2>
+ <title>The Folder Browser</title>
+
+ <para>
+ As of version 1.2, mutt supports browsing mailboxes on an IMAP
+ server. This is mostly the same as the local file browser, with the
+ following differences:
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ Instead of file permissions, mutt displays the string "IMAP",
+ possibly followed by the symbol "+", indicating
+ that the entry contains both messages and subfolders. On
+ Cyrus-like servers folders will often contain both messages and
+ subfolders.
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ For the case where an entry can contain both messages and
+ subfolders, the selection key (bound to <literal>enter</literal> by default)
+ will choose to descend into the subfolder view. If you wish to
+ view
+ the messages in that folder, you must use <literal>view-file</literal> instead
+ (bound to <literal>space</literal> by default).
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ You can create, delete and rename mailboxes with the
+ <literal>create-mailbox</literal>, <literal>delete-mailbox</literal>, and
+ <literal>rename-mailbox</literal> commands (default bindings: <literal>
+ C
+ </literal>
+ ,
+ <literal>d</literal> and <literal>r</literal>, respectively).
+ You may also
+ <literal>subscribe</literal> and <literal>unsubscribe</literal>
+ to mailboxes (normally
+ these are bound to <literal>s</literal> and <literal>u</literal>, respectively).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Authentication</title>
+
+ <para>
+ Mutt-ng supports four authentication methods with IMAP servers: SASL,
+ GSSAPI, CRAM-MD5, and LOGIN (there is a patch by Grant Edwards to add
+ NTLM authentication for you poor exchange users out there, but it has
+ yet to be integrated into the main tree). There is also support for
+ the pseudo-protocol ANONYMOUS, which allows you to log in to a public
+ IMAP server without having an account. To use ANONYMOUS, simply make
+ your username blank or "anonymous".
+ </para>
+
+ <para>
+ SASL is a special super-authenticator, which selects among several
+ protocols
+ (including GSSAPI, CRAM-MD5, ANONYMOUS, and DIGEST-MD5) the most
+ secure
+ method available on your host and the server. Using some of these
+ methods
+ (including DIGEST-MD5 and possibly GSSAPI), your entire session will
+ be
+ encrypted and invisible to those teeming network snoops. It is the
+ best
+ option if you have it. To use it, you must have the Cyrus SASL
+ libraryinstalled on your system and compile mutt with the <emphasis>
+ --with-sasl
+ </emphasis>
+ flag.
+ </para>
+
+ <para>
+ Mutt-ng will try whichever methods are compiled in and available on
+ the server,
+ in the following order: SASL, ANONYMOUS, GSSAPI, CRAM-MD5, LOGIN.
+ </para>
+
+ <para>
+ There are a few variables which control authentication:
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <link linkend="imap-user">imap-user</link> - controls
+ the username under which you request authentication on the IMAP
+ server,
+ for all authenticators. This is overridden by an explicit
+ username in
+ the mailbox path (i.e. by using a mailbox name of the form
+ <literal>{user@host}</literal>).
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="imap-pass">imap-pass</link> - a
+ password which you may preset, used by all authentication
+ methods where
+ a password is needed.
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="imap-authenticators">imap-authenticators</link>
+ - a colon-delimited list of IMAP
+ authentication methods to try, in the order you wish to try
+ them. If
+ specified, this overrides mutt's default (attempt everything,
+ in the order
+ listed above).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="reading-news">
+ <title>NNTP Support (OPTIONAL) </title>
+
+ <para>
+ If compiled with ``--enable-nntp'' option, Mutt-ng can read news from
+ a newsserver via NNTP. You can open a newsgroup with the
+ ``change-newsgroup'' function from the index/pager which is by default
+ bound to <literal>i</literal>.
+ </para>
+
+ <para>
+ The Default newsserver can be obtained from the
+ <literal>$NNTPSERVER</literal> environment variable. Like other
+ news readers,
+ info about subscribed newsgroups is saved in a file as specified by the
+ <link linkend="nntp-newsrc">nntp-newsrc</link> variable.
+ Article headers are cached and can be loaded from a file when a
+ newsgroup is entered instead loading from newsserver; currently, this
+ caching mechanism still is different from the header caching for
+ maildir/IMAP.
+ </para>
+
+ <sect2>
+ <title>Again: Scoring </title>
+
+ <para>
+ Especially for Usenet, people often ask for advanced filtering
+ and scoring functionality. Of course, mutt-ng has scoring and
+ allows a killfile, too. How to use a killfile has been discussed
+ in <link linkend="score-command">score-command</link>.
+ </para>
+
+ <para>
+ What has not been discusses in detail is mutt-ng's built-in
+ realname filter. For may newsreaders including those for
+ ``advanced users'' like <emphasis>slrn</emphasis> or <emphasis>tin</emphasis>, there are frequent
+ request for such functionality. The solutions offered often are
+ complicated regular expressions.
+ </para>
+
+ <para>
+ In mutt-ng this is as easy as
+ </para>
+
+ <para>
+
+ <screen>
+score ~* =42</screen>
+
+ </para>
+
+ <para>
+ This tells mutt-ng to apply a score of 42 to all messages whose
+ sender specified a valid realname and a valid email address. Using
+ </para>
+
+ <para>
+
+ <screen>
+score !~* =42</screen>
+
+ </para>
+
+ <para>
+ on the contrary applies a score of 42 to all messages <emphasis>not</emphasis>
+ matching those criteria which are very strict:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ Email addresses must be valid according to RFC 2822, see
+ <ulink
+ URL="ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt"><ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt>
+ </ulink>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ the name must consist of at least 2 fields whereby a field
+ must not end in a dot. This means that ``Joe User'' and ``Joe
+ A.User'' are valid while ``J. User'' and ``J. A. User'' aren't.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ it's assumed that users are interested in reading their
+ own mail and mail from people who they have defined an alias
+ forso that those 2 groups of messages are excluded from the
+ strict
+ rules.
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>SMTP Support (OPTIONAL) </title>
+
+ <para>
+ Mutt-ng can be built using a library called ``libESMTP'' which
+ provides SMTP functionality. When <literal>configure</literal> was
+ called with
+ <literal>--with-libesmtp</literal> or the output <literal>muttng -v</literal> contains
+ <literal>+USE_LIBESMTP</literal>, this will be or is the case
+ already. The SMTP
+ support includes support for Delivery Status Notification (see <link linkend="dsn">
+ dsn
+ </link>
+ section) as well as
+ handling the <literal>8BITMIME</literal> flag controlled via <link linkend="use-8bitmime">
+ use-8bitmime
+ </link>
+ .
+ </para>
+
+ <para>
+ To enable sending mail directly via SMTP without an MTA such as
+ Postfix or SSMTP and the like, simply set the <link linkend="smtp-host">
+ smtp-host
+ </link>
+ variable pointing to your SMTP server.
+ </para>
+
+ <para>
+ Authentication mechanisms are available via the <link linkend="smtp-user">
+ smtp-user
+ </link>
+ and <link linkend="smtp-pass">smtp-pass</link> variables.
+ </para>
+
+ <para>
+ Transport Encryption via the StartTLS command is also available. For
+ this to work, first of all Mutt-ng must be built with SSL or GNUTLS.
+ Secondly, the <link linkend="smtp-use-tls">smtp-use-tls</link> variable
+ must be either set
+ to ``enabled'' or ``required.'' In both cases, StartTLS will be used if
+ the server supports it: for the second case, the connection will fail
+ ifit doesn't while switching back to unencrypted communication for the
+ first one.
+ </para>
+
+ <para>
+ Some mail providers require user's to set a particular envelope
+ sender, i.e. they allow for only one value which may not be what the
+ user wants to send as the <literal>From:</literal> header. In this
+ case, the variable
+ <link linkend="smtp-envelope">smtp-envelope</link> may be used
+ to set the envelope different from the <literal>From:</literal> header.
+ </para>
+
+ </sect1>
+
+ <sect1 id="account-hook">
+ <title>Managing multiple IMAP/POP/NNTP accounts (OPTIONAL) </title>
+
+ <para>
+ If you happen to have accounts on multiple IMAP and/or POP servers,
+ you may find managing all the authentication settings inconvenient and
+ error-prone. The account-hook command may help. This hook works like
+ folder-hook but is invoked whenever you access a remote mailbox
+ (including inside the folder browser), not just when you open the
+ mailbox.
+ </para>
+
+ <para>
+ Some examples:
+ </para>
+
+ <para>
+
+ <screen>
account-hook . 'unset imap_user; unset imap_pass; unset tunnel'
account-hook imap://host1/ 'set imap_user=me1 imap_pass=foo'
-account-hook imap://host2/ 'set tunnel="ssh host2 /usr/libexec/imapd"'
-</verb></tscreen>
-
-<sect1>Start a WWW Browser on URLs (EXTERNAL)<label id="urlview">
-<p>
-If a message contains URLs (<em/unified resource locator/ = address in the
-WWW space like <em>http://www.mutt.org/</em>), it is efficient to get
-a menu with all the URLs and start a WWW browser on one of them. This
-functionality is provided by the external urlview program which can be
-retrieved at <htmlurl url="ftp://ftp.mutt.org/mutt/contrib/"
-name="ftp://ftp.mutt.org/mutt/contrib/"> and the configuration commands:
-<tscreen><verb>
+account-hook imap://host2/ 'set tunnel="ssh host2 /usr/libexec/imapd"'</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="urlview">
+ <title>Start a WWW Browser on URLs (EXTERNAL) </title>
+
+ <para>
+ If a message contains URLs (<emphasis>unified resource locator</emphasis> = address in the
+ WWW space like <emphasis>http://www.mutt.org/</emphasis>), it is
+ efficient to get
+ a menu with all the URLs and start a WWW browser on one of them. This
+ functionality is provided by the external urlview program which can be
+ retrieved at <ulink URL="ftp://ftp.mutt.org/mutt/contrib/">ftp://ftp.mutt.org/mutt/contrib/</ulink>
+>
+ and the configuration commands:
+
+ <screen>
macro index \cb |urlview\n
-macro pager \cb |urlview\n
-</verb></tscreen>
-
-<sect1>Compressed folders Support (OPTIONAL)
-<p>
-
-If Mutt-ng was compiled with compressed folders support (by running the
-<em/configure/ script with the <em/--enable-compressed/ flag), Mutt
-can open folders stored in an arbitrary format, provided that the user
-has a script to convert from/to this format to one of the accepted.
-
-The most common use is to open compressed archived folders e.g. with
-gzip.
-
-In addition, the user can provide a script that gets a folder in an
-accepted format and appends its context to the folder in the
-user-defined format, which may be faster than converting the entire
-folder to the accepted format, appending to it and converting back to
-the user-defined format.
-
-There are three hooks defined (<ref id="open-hook" name="open-hook">,
-<ref id="close-hook" name="close-hook"> and <ref id="append-hook"
-name="append-hook">) which define commands to uncompress and compress
-a folder and to append messages to an existing compressed folder
-respectively.
-
-For example:
-
-<tscreen><verb>
-open-hook \\.gz$ "gzip -cd %f > %t"
-close-hook \\.gz$ "gzip -c %t > %f"
-append-hook \\.gz$ "gzip -c %t >> %f"
-</verb></tscreen>
-
-You do not have to specify all of the commands. If you omit <ref
-id="append-hook" name="append-hook">, the folder will be open and
-closed again each time you will add to it. If you omit <ref
-id="close-hook" name="close-hook"> (or give empty command) , the
-folder will be open in the mode. If you specify <ref
-id="append-hook" name="append-hook"> though you'll be able to append
-to the folder.
-
-Note that Mutt-ng will only try to use hooks if the file is not in one of
-the accepted formats. In particular, if the file is empty, mutt
-supposes it is not compressed. This is important because it allows the
-use of programs that do not have well defined extensions. Just use
-&dquot;.&dquot; as a regexp. But this may be surprising if your
-compressing script produces empty files. In this situation, unset <ref
-id="save_empty" name="$save_empty">, so that the compressed file
-will be removed if you delete all of the messages.
-
-<sect2>Open a compressed mailbox for reading<label id="open-hook">
-<p>
-Usage: <tt/open-hook/ <em/regexp/ &dquot;<em/command/&dquot;
-
-The <em/command/ is the command that can be used for opening the
-folders whose names match <em/regexp/.
-
-The <em/command/ string is the printf-like format string, and it
-should accept two parameters: %f, which is replaced with the
-(compressed) folder name, and %t which is replaced with the
-name of the temporary folder to which to write.
-
-%f and %t can be repeated any number of times in the
-command string, and all of the entries are replaced with the
-appropriate folder name. In addition, %% is replaced by
-%, as in printf, and any other %anything is left as is.
-
-The <em/command/ should <bf/not/ remove the original compressed file.
-The <em/command/ should return non-zero exit status if it fails, so
-mutt knows something's wrong.
-
-Example:
-
-<tscreen><verb>
-open-hook \\.gz$ "gzip -cd %f > %t"
-</verb></tscreen>
-
-If the <em/command/ is empty, this operation is disabled for this file
-type.
-
-<sect2>Write a compressed mailbox<label id="close-hook">
-<p>
-Usage: <tt/close-hook/ <em/regexp/ &dquot;<em/command/&dquot;
-
-This is used to close the folder that was open with the <ref id="open-hook"
-name="open-hook"> command after some changes were made to it.
-
-The <em/command/ string is the command that can be used for closing the
-folders whose names match <em/regexp/. It has the same format as in
-the <ref id="open-hook" name="open-hook"> command. Temporary folder
-in this case is the folder previously produced by the <<ref id="open-hook"
-name="open-hook"> command.
-
-The <em/command/ should <bf/not/ remove the decompressed file. The
-<em/command/ should return non-zero exit status if it fails, so mutt
-knows something's wrong.
-
-Example:
-
-<tscreen><verb>
-close-hook \\.gz$ "gzip -c %t > %f"
-</verb></tscreen>
-
-If the <em/command/ is empty, this operation is disabled for this file
-type, and the file can only be open in the readonly mode.
-
-<ref id="close-hook" name ="close-hook"> is not called when you exit
-from the folder if the folder was not changed.
-
-<sect2>Append a message to a compressed mailbox<label id="append-hook">
-<p>
-Usage: <tt/append-hook/ <em/regexp/ &dquot;<em/command/&dquot;
-
-This command is used for saving to an existing compressed folder.
-The <em/command/ is the command that can be used for appending to the
-folders whose names match <em/regexp/. It has the same format as in
- the <ref id="open-hook" name="open-hook"> command.
-The temporary folder in this case contains the messages that are being
-appended.
-
-The <em/command/ should <bf/not/ remove the decompressed file. The
-<em/command/ should return non-zero exit status if it fails, so mutt
-knows something's wrong.
-
-Example:
-
-<tscreen><verb>
-append-hook \\.gz$ "gzip -c %t >> %f"
-</verb></tscreen>
-
-When <ref id="append-hook" name="append-hook"> is used, the folder is
-not opened, which saves time, but this means that we can not find out
-what the folder type is. Thus the default (<ref id="mbox_type"
-name="$mbox_type">) type is always supposed (i.e.
-this is the format used for the temporary folder).
-
-If the file does not exist when you save to it, <ref id="close-hook"
-name="close-hook"> is called, and not <ref id="append-hook"
-name="append-hook">. <ref id="append-hook" name="append-hook"> is only
-for appending to existing folders.
-
-If the <em/command/ is empty, this operation is disabled for this file
-type. In this case, the folder will be open and closed again (using
-<ref id="open-hook" name="open-hook"> and <ref id="close-hook"
-name="close-hook">respectively) each time you will add to it.
-
-<sect2>Encrypted folders
-<p>
-The compressed folders support can also be used to handle encrypted
-folders. If you want to encrypt a folder with PGP, you may want to use
-the following hooks:
-
-<tscreen><verb>
-open-hook \\.pgp$ "pgp -f < %f > %t"
-close-hook \\.pgp$ "pgp -fe YourPgpUserIdOrKeyId < %t > %f"
-</verb></tscreen>
-
-Please note, that PGP does not support appending to an encrypted
-folder, so there is no append-hook defined.
-
-<bf/Note:/ the folder is temporary stored decrypted in the /tmp
-directory, where it can be read by your system administrator. So think
-about the security aspects of this.
-
-<sect>Mutt-ng's MIME Support
-<p>
-Quite a bit of effort has been made to make Mutt-ng the premier text-mode
-MIME MUA. Every effort has been made to provide the functionality that
-the discerning MIME user requires, and the conformance to the standards
-wherever possible. When configuring Mutt-ng for MIME, there are two extra
-types of configuration files which Mutt-ng uses. One is the
-<tt/mime.types/ file, which contains the mapping of file extensions to
-IANA MIME types. The other is the <tt/mailcap/ file, which specifies
-the external commands to use for handling specific MIME types.
-
-<sect1>Using MIME in Mutt
-<p>
-There are three areas/menus in Mutt-ng which deal with MIME, they are the
-pager (while viewing a message), the attachment menu and the compose
-menu.
-
-<sect2>Viewing MIME messages in the pager
-<p>
-When you select a message from the index and view it in the pager, Mutt
-decodes the message to a text representation. Mutt-ng internally supports
-a number of MIME types, including <tt>text/plain, text/enriched,
-message/rfc822, and message/news</tt>. In addition, the export
-controlled version of Mutt-ng recognizes a variety of PGP MIME types,
-including PGP/MIME and application/pgp.
-
-Mutt-ng will denote attachments with a couple lines describing them.
-These lines are of the form:
-<tscreen><verb>
+macro pager \cb |urlview\n</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Compressed folders Support (OPTIONAL) </title>
+
+ <para>
+ If Mutt-ng was compiled with compressed folders support (by running the
+ <emphasis>configure</emphasis> script with the <emphasis>
+ --enable-compressed
+ </emphasis>
+ flag), Mutt
+ can open folders stored in an arbitrary format, provided that the user
+ has a script to convert from/to this format to one of the accepted.
+ </para>
+
+ <para>
+ The most common use is to open compressed archived folders e.g. with
+ gzip.
+ </para>
+
+ <para>
+ In addition, the user can provide a script that gets a folder in an
+ accepted format and appends its context to the folder in the
+ user-defined format, which may be faster than converting the entire
+ folder to the accepted format, appending to it and converting back to
+ the user-defined format.
+ </para>
+
+ <para>
+ There are three hooks defined (<link linkend="open-hook">open-hook</link>,
+ <link linkend="close-hook">close-hook</link> and <link linkend="append-hook">
+ append-hook
+ </link>
+ )which define commands to uncompress and compress
+ a folder and to append messages to an existing compressed folder
+ respectively.
+ </para>
+
+ <para>
+ For example:
+ </para>
+
+ <para>
+
+ <screen>
+open-hook \\.gz$ "gzip -cd %f > %t"
+close-hook \\.gz$ "gzip -c %t > %f"
+append-hook \\.gz$ "gzip -c %t >> %f" </screen>
+
+ </para>
+
+ <para>
+ You do not have to specify all of the commands. If you omit <link linkend="append-hook">
+ append-hook
+ </link>
+ ,the folder will be open and
+ closed again each time you will add to it. If you omit <link linkend="close-hook">
+ close-hook
+ </link>
+ (or give empty command) , the
+ folder will be open in the mode. If you specify <link linkend="append-hook">
+ append-hook
+ </link>
+ though you'll be able to append
+ to the folder.
+ </para>
+
+ <para>
+ Note that Mutt-ng will only try to use hooks if the file is not in one
+ of
+ the accepted formats. In particular, if the file is empty, mutt
+ supposes it is not compressed. This is important because it allows the
+ use of programs that do not have well defined extensions. Just use
+ "." as a regexp. But this may be surprising if your
+ compressing script produces empty files. In this situation, unset <link linkend="save-empty">
+ save-empty
+ </link>
+ ,so that the compressed file
+ will be removed if you delete all of the messages.
+ </para>
+
+ <sect2 id="open-hook">
+ <title>Open a compressed mailbox for reading</title>
+
+ <para>
+ Usage: <literal>open-hook</literal> <emphasis>regexp</emphasis>
+ "<emphasis>command</emphasis>"
+ </para>
+
+ <para>
+ The <emphasis>command</emphasis> is the command that can be used for
+ opening the
+ folders whose names match <emphasis>regexp</emphasis>.
+ </para>
+
+ <para>
+ The <emphasis>command</emphasis> string is the printf-like format
+ string, and it
+ should accept two parameters: %f, which is replaced with the
+ (compressed) folder name, and %t which is replaced with the
+ name of the temporary folder to which to write.
+ </para>
+
+ <para>
+ %f and %t can be repeated any number of times in the
+ command string, and all of the entries are replaced with the
+ appropriate folder name. In addition, %% is replaced by
+ %, as in printf, and any other %anything is left as is.
+ </para>
+
+ <para>
+ The <emphasis>command</emphasis> should <emphasis role="bold">not</emphasis> remove the original compressed file.
+ The <emphasis>command</emphasis> should return non-zero exit status
+ if it fails, so
+ mutt knows something's wrong.
+ </para>
+
+ <para>
+ Example:
+ </para>
+
+ <para>
+
+ <screen>
+open-hook \\.gz$ "gzip -cd %f > %t"
+</screen>
+
+ </para>
+
+ <para>
+ If the <emphasis>command</emphasis> is empty, this operation is
+ disabled for this file
+ type.
+ </para>
+
+ </sect2>
+
+ <sect2 id="close-hook">
+ <title>Write a compressed mailbox</title>
+
+ <para>
+ Usage: <literal>close-hook</literal> <emphasis>regexp</emphasis>
+ "<emphasis>command</emphasis>"
+ </para>
+
+ <para>
+ This is used to close the folder that was open with the <link linkend="open-hook">
+ open-hook
+ </link>
+ command after some changes were made to it.
+ </para>
+
+ <para>
+ The <emphasis>command</emphasis> string is the command that can be
+ used for closing the
+ folders whose names match <emphasis>regexp</emphasis>. It has the
+ same format as in
+ the <link linkend="open-hook">open-hook</link> command. Temporary
+ folder
+ in this case is the folder previously produced by the <<link linkend="open-hook">
+ open-hook
+ </link>
+ command.
+ </para>
+
+ <para>
+ The <emphasis>command</emphasis> should <emphasis role="bold">not</emphasis> remove the decompressed file. The
+ <emphasis>command</emphasis> should return non-zero exit status if it
+ fails, so mutt
+ knows something's wrong.
+ </para>
+
+ <para>
+ Example:
+ </para>
+
+ <para>
+
+ <screen>
+close-hook \\.gz$ "gzip -c %t > %f"</screen>
+
+ </para>
+
+ <para>
+ If the <emphasis>command</emphasis> is empty, this operation is
+ disabled for this file
+ type, and the file can only be open in the readonly mode.
+ </para>
+
+ <para>
+ <link linkend="close-hook">close-hook</link> is not called when you
+ exit
+ from the folder if the folder was not changed.
+ </para>
+
+ </sect2>
+
+ <sect2 id="append-hook">
+ <title>Append a message to a compressed mailbox</title>
+
+ <para>
+ Usage: <literal>append-hook</literal> <emphasis>regexp</emphasis>
+ "<emphasis>command</emphasis>"
+ </para>
+
+ <para>
+ This command is used for saving to an existing compressed folder.
+ The <emphasis>command</emphasis> is the command that can be used for
+ appending to the
+ folders whose names match <emphasis>regexp</emphasis>. It has the
+ same format as in
+ the <link linkend="open-hook">open-hook</link> command.
+ The temporary folder in this case contains the messages that are
+ beingappended.
+ </para>
+
+ <para>
+ The <emphasis>command</emphasis> should <emphasis role="bold">not</emphasis> remove the decompressed file. The
+ <emphasis>command</emphasis> should return non-zero exit status if it
+ fails, so mutt
+ knows something's wrong.
+ </para>
+
+ <para>
+ Example:
+ </para>
+
+ <para>
+
+ <screen>
+append-hook \\.gz$ "gzip -c %t >> %f" </screen>
+
+ </para>
+
+ <para>
+ When <link linkend="append-hook">append-hook</link> is used, the
+ folder is
+ not opened, which saves time, but this means that we can not find out
+ what the folder type is. Thus the default (<link linkend="mbox-type">
+ mbox-type
+ </link>
+ )type is always supposed (i.e.
+ this is the format used for the temporary folder).
+ </para>
+
+ <para>
+ If the file does not exist when you save to it, <link linkend="close-hook">
+ close-hook
+ </link>
+ is called, and not <link linkend="append-hook">append-hook</link>. <link linkend="append-hook">
+ append-hook
+ </link>
+ is only
+ for appending to existing folders.
+ </para>
+
+ <para>
+ If the <emphasis>command</emphasis> is empty, this operation is
+ disabled for this file
+ type. In this case, the folder will be open and closed again (using
+ <link linkend="open-hook">open-hook</link> and <link linkend="close-hook">
+ close-hook
+ </link>
+ respectively) each time you will add to it.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Encrypted folders</title>
+
+ <para>
+ The compressed folders support can also be used to handle encrypted
+ folders. If you want to encrypt a folder with PGP, you may want to
+ usethe following hooks:
+ </para>
+
+ <para>
+
+ <screen>
+open-hook \\.pgp$ "pgp -f < %f > %t"
+close-hook \\.pgp$ "pgp -fe YourPgpUserIdOrKeyId < %t > %f"
+</screen>
+
+ </para>
+
+ <para>
+ Please note, that PGP does not support appending to an encrypted
+ folder, so there is no append-hook defined.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> the folder is temporary stored
+ decrypted in the /tmp
+ directory, where it can be read by your system administrator. So
+ thinkabout the security aspects of this.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ </chapter>
+
+ <chapter>
+ <title>Mutt-ng's MIME Support </title>
+
+ <para>
+ Quite a bit of effort has been made to make Mutt-ng the premier text-mode
+ MIME MUA. Every effort has been made to provide the functionality that
+ the discerning MIME user requires, and the conformance to the standards
+ wherever possible. When configuring Mutt-ng for MIME, there are two
+ extratypes of configuration files which Mutt-ng uses. One is the
+ <literal>mime.types</literal> file, which contains the mapping of file
+ extensions to
+ IANA MIME types. The other is the <literal>mailcap</literal> file, which
+ specifies
+ the external commands to use for handling specific MIME types.
+ </para>
+
+ <sect1>
+ <title>Using MIME in Mutt </title>
+
+ <para>
+ There are three areas/menus in Mutt-ng which deal with MIME, they are
+ the
+ pager (while viewing a message), the attachment menu and the compose
+ menu.
+ </para>
+
+ <sect2>
+ <title>Viewing MIME messages in the pager</title>
+
+ <para>
+ When you select a message from the index and view it in the pager,
+ Mutt
+ decodes the message to a text representation. Mutt-ng internally
+ supports
+ a number of MIME types, including <literal>text/plain, text/enriched,
+ message/rfc822, and message/news
+ </literal>
+ .In addition, the export
+ controlled version of Mutt-ng recognizes a variety of PGP MIME types,
+ including PGP/MIME and application/pgp.
+ </para>
+
+ <para>
+ Mutt-ng will denote attachments with a couple lines describing them.
+ These lines are of the form:
+
+ <screen>
[-- Attachment #1: Description --]
-[-- Type: text/plain, Encoding: 7bit, Size: 10000 --]
-</verb></tscreen>
-Where the <tt/Description/ is the description or filename given for the
-attachment, and the <tt/Encoding/ is one of
-<tt>7bit/8bit/quoted-printable/base64/binary</tt>.
-
-If Mutt-ng cannot deal with a MIME type, it will display a message like:
-<tscreen><verb>
-[-- image/gif is unsupported (use 'v' to view this part) --]
-</verb></tscreen>
-
-<sect2>The Attachment Menu<label id="attach_menu">
-<p>
-The default binding for <tt/view-attachments/ is `v', which displays the
-attachment menu for a message. The attachment menu displays a list of
-the attachments in a message. From the attachment menu, you can save,
-print, pipe, delete, and view attachments. You can apply these
-operations to a group of attachments at once, by tagging the attachments
-and by using the ``tag-prefix'' operator. You can also reply to the
-current message from this menu, and only the current attachment (or the
-attachments tagged) will be quoted in your reply. You can view
-attachments as text, or view them using the mailcap viewer definition.
-
-Finally, you can apply the usual message-related functions (like
-<ref id="resend-message" name="resend-message">, and the reply
-and forward functions) to attachments of type <tt>message/rfc822</tt>.
-
-See the help on the attachment menu for more information.
-
-<sect2>The Compose Menu<label id="compose_menu">
-<p>
-The compose menu is the menu you see before you send a message. It
-allows you to edit the recipient list, the subject, and other aspects
-of your message. It also contains a list of the attachments of your
-message, including the main body. From this menu, you can print, copy,
-filter, pipe, edit, compose, review, and rename an attachment or a
-list of tagged attachments. You can also modifying the attachment
-information, notably the type, encoding and description.
-
-Attachments appear as follows:
-<verb>
-- 1 [text/plain, 7bit, 1K] /tmp/mutt-euler-8082-0 <no description>
- 2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz <no description>
-</verb>
-
-The '-' denotes that Mutt-ng will delete the file after sending (or
-postponing, or canceling) the message. It can be toggled with the
-<tt/toggle-unlink/ command (default: u). The next field is the MIME
-content-type, and can be changed with the <tt/edit-type/ command
-(default: ^T). The next field is the encoding for the attachment,
-which allows a binary message to be encoded for transmission on 7bit
-links. It can be changed with the <tt/edit-encoding/ command
-(default: ^E). The next field is the size of the attachment,
-rounded to kilobytes or megabytes. The next field is the filename,
-which can be changed with the <tt/rename-file/ command (default: R).
-The final field is the description of the attachment, and can be
-changed with the <tt/edit-description/ command (default: d).
-
-<sect1>MIME Type configuration with <tt/mime.types/
-<p>
-When you add an attachment to your mail message, Mutt-ng searches your
-personal mime.types file at <tt>${HOME}/.mime.types</tt>, and then
-the system mime.types file at <tt>/usr/local/share/mutt/mime.types</tt> or
-<tt>/etc/mime.types</tt>
-
-The mime.types file consist of lines containing a MIME type and a space
-separated list of extensions. For example:
-<tscreen><verb>
+[-- Type: text/plain, Encoding: 7bit, Size: 10000 --]</screen>
+
+ Where the <literal>Description</literal> is the description or
+ filename given for the
+ attachment, and the <literal>Encoding</literal> is one of
+ <literal>7bit/8bit/quoted-printable/base64/binary</literal>.
+ </para>
+
+ <para>
+ If Mutt-ng cannot deal with a MIME type, it will display a message
+ like:
+
+ <screen>
+[-- image/gif is unsupported (use 'v' to view this part) --]</screen>
+
+ </para>
+
+ </sect2>
+
+ <sect2 id="attach-menu">
+ <title>The Attachment Menu</title>
+
+ <para>
+ The default binding for <literal>view-attachments</literal> is `v',
+ which displays the
+ attachment menu for a message. The attachment menu displays a list
+ ofthe attachments in a message. From the attachment menu, you can
+ save,
+ print, pipe, delete, and view attachments. You can apply these
+ operations to a group of attachments at once, by tagging the
+ attachments
+ and by using the ``tag-prefix'' operator. You can also reply to the
+ current message from this menu, and only the current attachment (or
+ the
+ attachments tagged) will be quoted in your reply. You can view
+ attachments as text, or view them using the mailcap viewer
+ definition.
+ </para>
+
+ <para>
+ Finally, you can apply the usual message-related functions (like
+ <link linkend="resend-message">resend-message</link>, and the reply
+ and forward functions) to attachments of type <literal>message/rfc822</literal>.
+ </para>
+
+ <para>
+ See the help on the attachment menu for more information.
+ </para>
+
+ </sect2>
+
+ <sect2 id="compose-menu">
+ <title>The Compose Menu</title>
+
+ <para>
+ The compose menu is the menu you see before you send a message. It
+ allows you to edit the recipient list, the subject, and other aspects
+ of your message. It also contains a list of the attachments of your
+ message, including the main body. From this menu, you can print,
+ copy,
+ filter, pipe, edit, compose, review, and rename an attachment or a
+ list of tagged attachments. You can also modifying the attachment
+ information, notably the type, encoding and description.
+ </para>
+
+ <para>
+ Attachments appear as follows:
+
+ <screen>
+1 [text/plain, 7bit, 1K] /tmp/mutt-euler-8082-0 <no description>
+2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz <no description></screen>
+
+ </para>
+
+ <para>
+ The '-' denotes that Mutt-ng will delete the file after sending (or
+ postponing, or canceling) the message. It can be toggled with the
+ <literal>toggle-unlink</literal> command (default: u). The next
+ field is the MIME
+ content-type, and can be changed with the <literal>edit-type</literal> command
+ (default: ˆT). The next field is the encoding for the
+ attachment,
+ which allows a binary message to be encoded for transmission on 7bit
+ links. It can be changed with the <literal>edit-encoding</literal>
+ command
+ (default: ˆE). The next field is the size of the attachment,
+ rounded to kilobytes or megabytes. The next field is the filename,
+ which can be changed with the <literal>rename-file</literal> command
+ (default: R).
+ The final field is the description of the attachment, and can be
+ changed with the <literal>edit-description</literal> command
+ (default: d).
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>
+ MIME Type configuration with <literal>mime.types</literal>
+ </title>
+
+ <para>
+ When you add an attachment to your mail message, Mutt-ng searches your
+ personal mime.types file at <literal>
+ ${HOME}/.mime.types
+ </literal>
+ ,and then
+ the system mime.types file at <literal>/usr/local/share/mutt/mime.types</literal> or
+ <literal>/etc/mime.types</literal>
+ </para>
+
+ <para>
+ The mime.types file consist of lines containing a MIME type and a space
+ separated list of extensions. For example:
+
+ <screen>
application/postscript ps eps
application/pgp pgp
-audio/x-aiff aif aifc aiff
-</verb></tscreen>
-A sample <tt/mime.types/ file comes with the Mutt-ng distribution, and
-should contain most of the MIME types you are likely to use.
-
-If Mutt-ng can not determine the mime type by the extension of the file you
-attach, it will look at the file. If the file is free of binary
-information, Mutt-ng will assume that the file is plain text, and mark it
-as <tt>text/plain</tt>. If the file contains binary information, then Mutt-ng will
-mark it as <tt>application/octet-stream</tt>. You can change the MIME
-type that Mutt-ng assigns to an attachment by using the <tt/edit-type/
-command from the compose menu (default: ^T). The MIME type is actually a
-major mime type followed by the sub-type, separated by a '/'. 6 major
-types: application, text, image, video, audio, and model have been approved
-after various internet discussions. Mutt-ng recognises all of these if the
-appropriate entry is found in the mime.types file. It also recognises other
-major mime types, such as the chemical type that is widely used in the
-molecular modelling community to pass molecular data in various forms to
-various molecular viewers. Non-recognised mime types should only be used
-if the recipient of the message is likely to be expecting such attachments.
-
-<sect1>MIME Viewer configuration with <tt/mailcap/
-<p>
-Mutt-ng supports RFC 1524 MIME Configuration, in particular the Unix
-specific format specified in Appendix A of RFC 1524. This file format
-is commonly referred to as the mailcap format. Many MIME compliant
-programs utilize the mailcap format, allowing you to specify handling
-for all MIME types in one place for all programs. Programs known to
-use this format include Netscape, XMosaic, lynx and metamail.
-
-In order to handle various MIME types that Mutt-ng can not handle
-internally, Mutt-ng parses a series of external configuration files to
-find an external handler. The default search string for these files
-is a colon delimited list set to
-<tscreen><verb>
-${HOME}/.mailcap:/usr/local/share/mutt/mailcap:/etc/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap
-</verb></tscreen>
-where <tt/$HOME/ is your home directory.
-
-In particular, the metamail distribution will install a mailcap file,
-usually as <tt>/usr/local/etc/mailcap</tt>, which contains some baseline
-entries.
-
-<sect2>The Basics of the mailcap file
-<p>
-A mailcap file consists of a series of lines which are comments, blank,
-or definitions.
-
-A comment line consists of a # character followed by anything you want.
-
-A blank line is blank.
-
-A definition line consists of a content type, a view command, and any
-number of optional fields. Each field of a definition line is divided
-by a semicolon ';' character.
-
-The content type is specified in the MIME standard type/subtype method.
-For example,
-<tt>text/plain, text/html, image/gif, </tt>
-etc. In addition, the mailcap format includes two formats for
-wildcards, one using the special '*' subtype, the other is the implicit
-wild, where you only include the major type. For example, <tt>image/*</tt>, or
-<tt>video,</tt> will match all image types and video types,
-respectively.
-
-The view command is a Unix command for viewing the type specified. There
-are two different types of commands supported. The default is to send
-the body of the MIME message to the command on stdin. You can change
-this behavior by using %s as a parameter to your view command.
-This will cause Mutt-ng to save the body of the MIME message to a temporary
-file, and then call the view command with the %s replaced by
-the name of the temporary file. In both cases, Mutt-ng will turn over the
-terminal to the view program until the program quits, at which time Mutt
-will remove the temporary file if it exists.
-
-So, in the simplest form, you can send a text/plain message to the
-external pager more on stdin:
-<tscreen><verb>
-text/plain; more
-</verb></tscreen>
-Or, you could send the message as a file:
-<tscreen><verb>
-text/plain; more %s
-</verb></tscreen>
-Perhaps you would like to use lynx to interactively view a text/html
-message:
-<tscreen><verb>
-text/html; lynx %s
-</verb></tscreen>
-In this case, lynx does not support viewing a file from stdin, so you
-must use the %s syntax.
-<bf/Note:/ <em>Some older versions of lynx contain a bug where they
-will check the mailcap file for a viewer for text/html. They will find
-the line which calls lynx, and run it. This causes lynx to continuously
-spawn itself to view the object.</em>
-
-On the other hand, maybe you don't want to use lynx interactively, you
-just want to have it convert the text/html to text/plain, then you can
-use:
-<tscreen><verb>
-text/html; lynx -dump %s | more
-</verb></tscreen>
-
-Perhaps you wish to use lynx to view text/html files, and a pager on
-all other text formats, then you would use the following:
-<tscreen><verb>
+audio/x-aiff aif aifc aiff</screen>
+
+ A sample <literal>mime.types</literal> file comes with the Mutt-ng
+ distribution, and
+ should contain most of the MIME types you are likely to use.
+ </para>
+
+ <para>
+ If Mutt-ng can not determine the mime type by the extension of the file
+ you
+ attach, it will look at the file. If the file is free of binary
+ information, Mutt-ng will assume that the file is plain text, and mark
+ it
+ as <literal>text/plain</literal>. If the file contains binary
+ information, then Mutt-ng will
+ mark it as <literal>application/octet-stream</literal>. You can change
+ the MIME
+ type that Mutt-ng assigns to an attachment by using the <literal>
+ edit-type
+ </literal>
+ command from the compose menu (default: ˆT). The MIME type is
+ actually a
+ major mime type followed by the sub-type, separated by a '/'. 6 major
+ types: application, text, image, video, audio, and model have been
+ approved
+ after various internet discussions. Mutt-ng recognises all of these if
+ the
+ appropriate entry is found in the mime.types file. It also recognises
+ other
+ major mime types, such as the chemical type that is widely used in the
+ molecular modelling community to pass molecular data in various forms
+ to
+ various molecular viewers. Non-recognised mime types should only be
+ used
+ if the recipient of the message is likely to be expecting such
+ attachments.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>
+ MIME Viewer configuration with <literal>mailcap</literal>
+ </title>
+
+ <para>
+ Mutt-ng supports RFC 1524 MIME Configuration, in particular the Unix
+ specific format specified in Appendix A of RFC 1524. This file format
+ is commonly referred to as the mailcap format. Many MIME compliant
+ programs utilize the mailcap format, allowing you to specify handling
+ for all MIME types in one place for all programs. Programs known to
+ use this format include Netscape, XMosaic, lynx and metamail.
+ </para>
+
+ <para>
+ In order to handle various MIME types that Mutt-ng can not handle
+ internally, Mutt-ng parses a series of external configuration files to
+ find an external handler. The default search string for these files
+ is a colon delimited list set to
+
+ <screen>
+${HOME}/.mailcap:/usr/local/share/mutt/mailcap:/etc/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap</screen>
+
+ where <literal>$HOME</literal> is your home directory.
+ </para>
+
+ <para>
+ In particular, the metamail distribution will install a mailcap file,
+ usually as <literal>/usr/local/etc/mailcap</literal>, which contains
+ some baseline
+ entries.
+ </para>
+
+ <sect2>
+ <title>The Basics of the mailcap file</title>
+
+ <para>
+ A mailcap file consists of a series of lines which are comments,
+ blank,
+ or definitions.
+ </para>
+
+ <para>
+ A comment line consists of a # character followed by anything you
+ want.
+ </para>
+
+ <para>
+ A blank line is blank.
+ </para>
+
+ <para>
+ A definition line consists of a content type, a view command, and any
+ number of optional fields. Each field of a definition line is
+ dividedby a semicolon ';' character.
+ </para>
+
+ <para>
+ The content type is specified in the MIME standard type/subtype
+ method.
+ For example,
+ <literal>text/plain, text/html, image/gif, </literal>
+ etc. In addition, the mailcap format includes two formats for
+ wildcards, one using the special '*' subtype, the other is the
+ implicit
+ wild, where you only include the major type. For example, <literal>
+ image/*
+ </literal>
+ ,or
+ <literal>video,</literal> will match all image types and video types,
+ respectively.
+ </para>
+
+ <para>
+ The view command is a Unix command for viewing the type specified.
+ There
+ are two different types of commands supported. The default is to send
+ the body of the MIME message to the command on stdin. You can change
+ this behavior by using %s as a parameter to your view command.
+ This will cause Mutt-ng to save the body of the MIME message to a
+ temporary
+ file, and then call the view command with the %s replaced by
+ the name of the temporary file. In both cases, Mutt-ng will turn over
+ the
+ terminal to the view program until the program quits, at which time
+ Mutt
+ will remove the temporary file if it exists.
+ </para>
+
+ <para>
+ So, in the simplest form, you can send a text/plain message to the
+ external pager more on stdin:
+
+ <screen>
+text/plain; more</screen>
+
+ Or, you could send the message as a file:
+
+ <screen>
+text/plain; more %s</screen>
+
+ Perhaps you would like to use lynx to interactively view a text/html
+ message:
+
+ <screen>
+text/html; lynx %s</screen>
+
+ In this case, lynx does not support viewing a file from stdin, so you
+ must use the %s syntax.
+ <emphasis role="bold">Note:</emphasis> <emphasis>Some older versions
+ of lynx contain a bug where they
+ will check the mailcap file for a viewer for text/html. They will
+ find
+ the line which calls lynx, and run it. This causes lynx to
+ continuously
+ spawn itself to view the object.
+ </emphasis>
+ </para>
+
+ <para>
+ On the other hand, maybe you don't want to use lynx interactively,
+ youjust want to have it convert the text/html to text/plain, then you
+ can
+ use:
+
+ <screen>
+text/html; lynx -dump %s | more</screen>
+
+ </para>
+
+ <para>
+ Perhaps you wish to use lynx to view text/html files, and a pager on
+ all other text formats, then you would use the following:
+
+ <screen>
text/html; lynx %s
-text/*; more
-</verb></tscreen>
-This is the simplest form of a mailcap file.
-
-<sect2>Secure use of mailcap
-<p>
-The interpretation of shell meta-characters embedded in MIME parameters
-can lead to security problems in general. Mutt-ng tries to quote parameters
-in expansion of %s syntaxes properly, and avoids risky characters by
-substituting them, see the <ref id="mailcap_sanitize"
-name="mailcap_sanitize"> variable.
-
-Although mutt's procedures to invoke programs with mailcap seem to be
-safe, there are other applications parsing mailcap, maybe taking less care
-of it. Therefore you should pay attention to the following rules:
-
-<em/Keep the %-expandos away from shell quoting./
-Don't quote them with single or double quotes. Mutt-ng does this for
-you, the right way, as should any other program which interprets
-mailcap. Don't put them into backtick expansions. Be highly careful
-with eval statements, and avoid them if possible at all. Trying to fix
-broken behaviour with quotes introduces new leaks - there is no
-alternative to correct quoting in the first place.
-
-If you have to use the %-expandos' values in context where you need
-quoting or backtick expansions, put that value into a shell variable
-and reference the shell variable where necessary, as in the following
-example (using <tt/$charset/ inside the backtick expansion is safe,
-since it is not itself subject to any further expansion):
-
-<tscreen><verb>
+text/*; more</screen>
+
+ This is the simplest form of a mailcap file.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Secure use of mailcap</title>
+
+ <para>
+ The interpretation of shell meta-characters embedded in MIME
+ parameters
+ can lead to security problems in general. Mutt-ng tries to quote
+ parameters
+ in expansion of %s syntaxes properly, and avoids risky
+ characters by
+ substituting them, see the <link linkend="mailcap-sanitize">
+ mailcap-sanitize
+ </link>
+ variable.
+ </para>
+
+ <para>
+ Although mutt's procedures to invoke programs with mailcap seem to be
+ safe, there are other applications parsing mailcap, maybe taking less
+ care
+ of it. Therefore you should pay attention to the following rules:
+ </para>
+
+ <para>
+ <emphasis>Keep the %-expandos away from shell quoting.</emphasis>
+ Don't quote them with single or double quotes. Mutt-ng does this for
+ you, the right way, as should any other program which interprets
+ mailcap. Don't put them into backtick expansions. Be highly careful
+ with eval statements, and avoid them if possible at all. Trying to
+ fix
+ broken behaviour with quotes introduces new leaks - there is no
+ alternative to correct quoting in the first place.
+ </para>
+
+ <para>
+ If you have to use the %-expandos' values in context where you
+ need
+ quoting or backtick expansions, put that value into a shell variable
+ and reference the shell variable where necessary, as in the following
+ example (using <literal>$charset</literal> inside the backtick
+ expansion is safe,
+ since it is not itself subject to any further expansion):
+ </para>
+
+ <para>
+
+ <screen>
text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \
- && test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1
-</verb></tscreen>
-
-<sect2>Advanced mailcap Usage
-<p>
-
-<sect3>Optional Fields
-<p>
-In addition to the required content-type and view command fields, you
-can add semi-colon ';' separated fields to set flags and other options.
-Mutt-ng recognizes the following optional fields:
-<descrip>
-<tag/copiousoutput/
-This flag tells Mutt-ng that the command passes possibly large amounts of
-text on stdout. This causes Mutt-ng to invoke a pager (either the internal
-pager or the external pager defined by the pager variable) on the output
-of the view command. Without this flag, Mutt-ng assumes that the command
-is interactive. One could use this to replace the pipe to <tt>more</tt>
-in the <tt>lynx -dump</tt> example in the Basic section:
-<tscreen><verb>
-text/html; lynx -dump %s ; copiousoutput
-</verb></tscreen>
-This will cause lynx to format the text/html output as text/plain
-and Mutt-ng will use your standard pager to display the results.
-<tag/needsterminal/
-Mutt-ng uses this flag when viewing attachments with <ref id="auto_view"
-name="autoview">, in order to decide whether it should honor the setting
-of the <ref id="wait_key" name="$wait_key"> variable or
-not. When an attachment is viewed using an interactive program, and the
-corresponding mailcap entry has a <em/needsterminal/ flag, Mutt-ng will use
-<ref id="wait_key" name="$wait_key"> and the exit status
-of the program to decide if it will ask you to press a key after the
-external program has exited. In all other situations it will not prompt
-you for a key.
-<tag>compose=<command></tag>
-This flag specifies the command to use to create a new attachment of a
-specific MIME type. Mutt-ng supports this from the compose menu.
-<tag>composetyped=<command></tag>
-This flag specifies the command to use to create a new attachment of a
-specific MIME type. This command differs from the compose command in
-that mutt will expect standard MIME headers on the data. This can be
-used to specify parameters, filename, description, etc. for a new
-attachment. Mutt-ng supports this from the compose menu.
-<tag>print=<command></tag>
-This flag specifies the command to use to print a specific MIME type.
-Mutt-ng supports this from the attachment and compose menus.
-<tag>edit=<command></tag>
-This flag specifies the command to use to edit a specific MIME type.
-Mutt-ng supports this from the compose menu, and also uses it to compose
-new attachments. Mutt-ng will default to the defined editor for text
-attachments.
-<tag>nametemplate=<template></tag>
-This field specifies the format for the file denoted by %s in the
-command fields. Certain programs will require a certain file extension,
-for instance, to correctly view a file. For instance, lynx will only
-interpret a file as <tt>text/html</tt> if the file ends in <tt/.html/.
-So, you would specify lynx as a <tt>text/html</tt> viewer with a line in
-the mailcap file like:
-<tscreen><verb>
-text/html; lynx %s; nametemplate=%s.html
-</verb></tscreen>
-<tag>test=<command></tag>
-This field specifies a command to run to test whether this mailcap
-entry should be used. The command is defined with the command expansion
-rules defined in the next section. If the command returns 0, then the
-test passed, and Mutt-ng uses this entry. If the command returns non-zero,
-then the test failed, and Mutt-ng continues searching for the right entry.
-<bf/Note:/ <em>the content-type must match before Mutt-ng performs the test.</em>
-For example:
-<tscreen><verb>
+&& test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1</screen>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Advanced mailcap Usage</title>
+
+ <sect3>
+ <title>Optional Fields</title>
+
+ <para>
+ In addition to the required content-type and view command fields,
+ you
+ can add semi-colon ';' separated fields to set flags and other
+ options.
+ Mutt-ng recognizes the following optional fields:
+ <variablelist>
+
+ <varlistentry>
+ <term>copiousoutput</term>
+ <listitem>
+ <para>
+ This flag tells Mutt-ng that the command passes possibly
+ large amounts of
+ text on stdout. This causes Mutt-ng to invoke a pager
+ (either the internal
+ pager or the external pager defined by the pager variable)
+ on the output
+ of the view command. Without this flag, Mutt-ng assumes
+ that the command
+ is interactive. One could use this to replace the pipe to <literal>
+ more
+ </literal>
+ in the <literal>lynx -dump</literal> example in the Basic
+ section:
+
+ <screen>
+text/html; lynx -dump %s ; copiousoutput</screen>
+
+ This will cause lynx to format the text/html output as
+ text/plain
+ and Mutt-ng will use your standard pager to display the
+ results.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>needsterminal</term>
+ <listitem>
+ <para>
+ Mutt-ng uses this flag when viewing attachments with <link linkend="auto-view">
+ auto-view
+ </link>
+ ,in order to decide whether it should honor the setting
+ of the <link linkend="wait-key">wait-key</link> variable or
+ not. When an attachment is viewed using an interactive
+ program, and the
+ corresponding mailcap entry has a <emphasis>needsterminal</emphasis> flag, Mutt-ng will use
+ <link linkend="wait-key">wait-key</link> and the exit
+ statusof the program to decide if it will ask you to press
+ a key after the
+ external program has exited. In all other situations it
+ will not prompt
+ you for a key.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>compose=<command></term>
+ <listitem>
+ <para>
+ This flag specifies the command to use to create a new
+ attachment of a
+ specific MIME type. Mutt-ng supports this from the compose
+ menu.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>composetyped=<command></term>
+ <listitem>
+ <para>
+ This flag specifies the command to use to create a new
+ attachment of a
+ specific MIME type. This command differs from the compose
+ command in
+ that mutt will expect standard MIME headers on the data.
+ This can be
+ used to specify parameters, filename, description, etc. for
+ a new
+ attachment. Mutt-ng supports this from the compose menu.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>print=<command></term>
+ <listitem>
+ <para>
+ This flag specifies the command to use to print a specific
+ MIME type.
+ Mutt-ng supports this from the attachment and compose
+ menus.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>edit=<command></term>
+ <listitem>
+ <para>
+ This flag specifies the command to use to edit a specific
+ MIME type.
+ Mutt-ng supports this from the compose menu, and also uses
+ it to compose
+ new attachments. Mutt-ng will default to the defined
+ editor for text
+ attachments.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nametemplate=<template></term>
+ <listitem>
+ <para>
+ This field specifies the format for the file denoted by
+ %s in the
+ command fields. Certain programs will require a certain
+ file extension,
+ for instance, to correctly view a file. For instance, lynx
+ will only
+ interpret a file as <literal>text/html</literal> if the
+ file ends in <literal>.html</literal>.
+ So, you would specify lynx as a <literal>text/html</literal> viewer with a line in
+ the mailcap file like:
+
+ <screen>
+text/html; lynx %s; nametemplate=%s.html</screen>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>test=<command></term>
+ <listitem>
+ <para>
+ This field specifies a command to run to test whether this
+ mailcap
+ entry should be used. The command is defined with the
+ command expansion
+ rules defined in the next section. If the command returns
+ 0, then the
+ test passed, and Mutt-ng uses this entry. If the command
+ returns non-zero,
+ then the test failed, and Mutt-ng continues searching for
+ the right entry.
+ <emphasis role="bold">Note:</emphasis> <emphasis>the
+ content-type must match before Mutt-ng performs the test.
+ </emphasis>
+ For example:
+
+ <screen>
text/html; netscape -remote 'openURL(%s)' ; test=RunningX
-text/html; lynx %s
-</verb></tscreen>
-In this example, Mutt-ng will run the program RunningX which will return 0
-if the X Window manager is running, and non-zero if it isn't. If
-RunningX returns 0, then Mutt-ng will call netscape to display the
-text/html object. If RunningX doesn't return 0, then Mutt-ng will go on
-to the next entry and use lynx to display the text/html object.
-</descrip>
-
-<sect3>Search Order
-<p>
-When searching for an entry in the mailcap file, Mutt-ng will search for
-the most useful entry for its purpose. For instance, if you are
-attempting to print an <tt>image/gif</tt>, and you have the following
-entries in your mailcap file, Mutt-ng will search for an entry with the
-print command:
-<tscreen><verb>
+text/html; lynx %s</screen>
+
+ In this example, Mutt-ng will run the program RunningX
+ which will return 0
+ if the X Window manager is running, and non-zero if it
+ isn't. If
+ RunningX returns 0, then Mutt-ng will call netscape to
+ display the
+ text/html object. If RunningX doesn't return 0, then
+ Mutt-ng will go on
+ to the next entry and use lynx to display the text/html
+ object.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ </sect3>
+
+ <sect3>
+ <title>Search Order</title>
+
+ <para>
+ When searching for an entry in the mailcap file, Mutt-ng will
+ search for
+ the most useful entry for its purpose. For instance, if you are
+ attempting to print an <literal>image/gif</literal>, and you have
+ the following
+ entries in your mailcap file, Mutt-ng will search for an entry with
+ the
+ print command:
+
+ <screen>
image/*; xv %s
image/gif; ; print= anytopnm %s | pnmtops | lpr; \
- nametemplate=%s.gif
-</verb></tscreen>
-Mutt-ng will skip the <tt>image/*</tt> entry and use the <tt>image/gif</tt>
-entry with the print command.
-
-In addition, you can use this with <ref id="auto_view" name="Autoview">
-to denote two commands for viewing an attachment, one to be viewed
-automatically, the other to be viewed interactively from the attachment
-menu. In addition, you can then use the test feature to determine which
-viewer to use interactively depending on your environment.
-<tscreen><verb>
+nametemplate=%s.gif</screen>
+
+ Mutt-ng will skip the <literal>image/*</literal> entry and use the <literal>
+ image/gif
+ </literal>
+ entry with the print command.
+ </para>
+
+ <para>
+ In addition, you can use this with <link linkend="auto-view">
+ auto-view
+ </link>
+ to denote two commands for viewing an attachment, one to be viewed
+ automatically, the other to be viewed interactively from the
+ attachment
+ menu. In addition, you can then use the test feature to determine
+ which
+ viewer to use interactively depending on your environment.
+
+ <screen>
text/html; netscape -remote 'openURL(%s)' ; test=RunningX
text/html; lynx %s; nametemplate=%s.html
-text/html; lynx -dump %s; nametemplate=%s.html; copiousoutput
-</verb></tscreen>
-For <ref id="auto_view" name="Autoview">, Mutt-ng will choose the third
-entry because of the copiousoutput tag. For interactive viewing, Mutt
-will run the program RunningX to determine if it should use the first
-entry. If the program returns non-zero, Mutt-ng will use the second entry
-for interactive viewing.
-
-<sect3>Command Expansion
-<p>
-The various commands defined in the mailcap files are passed to the
-<tt>/bin/sh</tt> shell using the system() function. Before the
-command is passed to <tt>/bin/sh -c</tt>, it is parsed to expand
-various special parameters with information from Mutt-ng. The keywords
-Mutt-ng expands are:
-<descrip>
-<tag/%s/
-As seen in the basic mailcap section, this variable is expanded
-to a filename specified by the calling program. This file contains
-the body of the message to view/print/edit or where the composing
-program should place the results of composition. In addition, the
-use of this keyword causes Mutt-ng to not pass the body of the message
-to the view/print/edit program on stdin.
-<tag/%t/
-Mutt-ng will expand %t to the text representation of the content
-type of the message in the same form as the first parameter of the
-mailcap definition line, ie <tt>text/html</tt> or
-<tt>image/gif</tt>.
-<tag>%{<parameter>}</tag>
-Mutt-ng will expand this to the value of the specified parameter
-from the Content-Type: line of the mail message. For instance, if
-Your mail message contains:
-<tscreen><verb>
-Content-Type: text/plain; charset=iso-8859-1
-</verb></tscreen>
-then Mutt-ng will expand %{charset} to iso-8859-1. The default metamail
-mailcap file uses this feature to test the charset to spawn an xterm
-using the right charset to view the message.
-<tag>\%</tag>
-This will be replaced by a %
-</descrip>
-Mutt-ng does not currently support the %F and %n keywords
-specified in RFC 1524. The main purpose of these parameters is for
-multipart messages, which is handled internally by Mutt-ng.
-
-<sect2>Example mailcap files
-<p>
-This mailcap file is fairly simple and standard:
-<code>
+text/html; lynx -dump %s; nametemplate=%s.html; copiousoutput</screen>
+
+ For <link linkend="auto-view">auto-view</link>, Mutt-ng will choose
+ the third
+ entry because of the copiousoutput tag. For interactive viewing,
+ Mutt
+ will run the program RunningX to determine if it should use the
+ first
+ entry. If the program returns non-zero, Mutt-ng will use the
+ second entry
+ for interactive viewing.
+ </para>
+
+ </sect3>
+
+ <sect3>
+ <title>Command Expansion</title>
+
+ <para>
+ The various commands defined in the mailcap files are passed to the
+ <literal>/bin/sh</literal> shell using the system() function.
+ Before the
+ command is passed to <literal>/bin/sh -c</literal>, it is parsed to
+ expand
+ various special parameters with information from Mutt-ng. The
+ keywords
+ Mutt-ng expands are:
+ <variablelist>
+
+ <varlistentry>
+ <term>%s</term>
+ <listitem>
+ <para>
+ As seen in the basic mailcap section, this variable is
+ expanded
+ to a filename specified by the calling program. This file
+ contains
+ the body of the message to view/print/edit or where the
+ composing
+ program should place the results of composition. In
+ addition, the
+ use of this keyword causes Mutt-ng to not pass the body of
+ the message
+ to the view/print/edit program on stdin.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>%t</term>
+ <listitem>
+ <para>
+ Mutt-ng will expand %t to the text representation of
+ the content
+ type of the message in the same form as the first parameter
+ of the
+ mailcap definition line, ie <literal>text/html</literal> or
+ <literal>image/gif</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>%{<parameter>}</term>
+ <listitem>
+ <para>
+ Mutt-ng will expand this to the value of the specified
+ parameter
+ from the Content-Type: line of the mail message. For
+ instance, if
+ Your mail message contains:
+
+ <screen>
+Content-Type: text/plain; charset=iso-8859-1</screen>
+
+ then Mutt-ng will expand %{charset} to
+ iso-8859-1. The default metamail
+ mailcap file uses this feature to test the charset to spawn
+ an xterm
+ using the right charset to view the message.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\%</term>
+ <listitem>
+ <para>
+ This will be replaced by a %
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ Mutt-ng does not currently support the %F and %n
+ keywords
+ specified in RFC 1524. The main purpose of these parameters is for
+ multipart messages, which is handled internally by Mutt-ng.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2>
+ <title>Example mailcap files</title>
+
+ <para>
+ This mailcap file is fairly simple and standard:
+
+ <screen>>
# I'm always running X :)
-video/*; xanim %s > /dev/null
-image/*; xv %s > /dev/null
+video/*; xanim %s > /dev/null
+image/*; xv %s > /dev/null
# I'm always running netscape (if my computer had more memory, maybe)
-text/html; netscape -remote 'openURL(%s)'
-</code>
-
-This mailcap file shows quite a number of examples:
-
-<code>
+text/html; netscape -remote 'openURL(%s)'</screen>
+
+ </para>
+
+ <para>
+ This mailcap file shows quite a number of examples:
+ </para>
+
+ <para>
+
+ <screen>
# Use xanim to view all videos Xanim produces a header on startup,
# send that to /dev/null so I don't see it
-video/*; xanim %s > /dev/null
+video/*; xanim %s > /dev/null
# Send html to a running netscape by remote
text/html; netscape -remote 'openURL(%s)'; test=RunningNetscape
-
# If I'm not running netscape but I am running X, start netscape on the
# object
text/html; netscape %s; test=RunningX
# Use xv to view images if I'm running X
# In addition, this uses the \ to extend the line and set my editor
# for images
-image/*;xv %s; test=RunningX; \
- edit=xpaint %s
+image/*;xv %s; test=RunningX; edit=xpaint %s
# Convert images to text using the netpbm tools
image/*; (anytopnm %s | pnmscale -xysize 80 46 | ppmtopgm | pgmtopbm |
-pbmtoascii -1x2 ) 2>&1 ; copiousoutput
+pbmtoascii -1x2 ) 2>&1 ; copiousoutput
# Send excel spreadsheets to my NT box
-application/ms-excel; open.pl %s
-</code>
-
-<sect1>MIME Autoview<label id="auto_view">
-<p>
-In addition to explicitly telling Mutt-ng to view an attachment with the
-MIME viewer defined in the mailcap file, Mutt-ng has support for
-automatically viewing MIME attachments while in the pager.
-
-To work, you must define a viewer in the mailcap file which uses the
-<tt/copiousoutput/ option to denote that it is non-interactive.
-Usually, you also use the entry to convert the attachment to a text
-representation which you can view in the pager.
-
-You then use the <tt/auto_view/ muttrc command to list the
-content-types that you wish to view automatically.
-
-For instance, if you set auto_view to:
-<tscreen><verb>
-auto_view text/html application/x-gunzip application/postscript image/gif application/x-tar-gz
-</verb></tscreen>
-
-Mutt-ng could use the following mailcap entries to automatically view
-attachments of these types.
-<tscreen><verb>
+application/ms-excel; open.pl %s</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="auto-view">
+ <title>MIME Autoview </title>
+
+ <para>
+ In addition to explicitly telling Mutt-ng to view an attachment with
+ theMIME viewer defined in the mailcap file, Mutt-ng has support for
+ automatically viewing MIME attachments while in the pager.
+ </para>
+
+ <para>
+ To work, you must define a viewer in the mailcap file which uses the
+ <literal>copiousoutput</literal> option to denote that it is
+ non-interactive.
+ Usually, you also use the entry to convert the attachment to a text
+ representation which you can view in the pager.
+ </para>
+
+ <para>
+ You then use the <literal>auto_view</literal> muttrc command to
+ list the
+ content-types that you wish to view automatically.
+ </para>
+
+ <para>
+ For instance, if you set auto_view to:
+
+ <screen>
+auto_view text/html application/x-gunzip application/postscript
+image/gif application/x-tar-gz</screen>
+
+ </para>
+
+ <para>
+ Mutt-ng could use the following mailcap entries to automatically view
+ attachments of these types.
+
+ <screen>
text/html; lynx -dump %s; copiousoutput; nametemplate=%s.html
image/*; anytopnm %s | pnmscale -xsize 80 -ysize 50 | ppmtopgm | pgmtopbm | pbmtoascii ; copiousoutput
application/x-gunzip; gzcat; copiousoutput
application/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput
-application/postscript; ps2ascii %s; copiousoutput
-</verb></tscreen>
-
-``unauto_view'' can be used to remove previous entries from the autoview list.
-This can be used with message-hook to autoview messages based on size, etc.
-``unauto_view *'' will remove all previous entries.
-
-<sect1>MIME Multipart/Alternative<label id="alternative_order">
-<p>
-Mutt-ng has some heuristics for determining which attachment of a
-multipart/alternative type to display. First, mutt will check the
-alternative_order list to determine if one of the available types
-is preferred. The alternative_order list consists of a number of
-MIME types in order, including support for implicit and explicit
-wildcards, for example:
-<tscreen><verb>
-alternative_order text/enriched text/plain text application/postscript image/*
-</verb></tscreen>
-
-Next, mutt will check if any of the types have a defined
-<ref id="auto_view" name="auto_view">, and use that. Failing
-that, Mutt-ng will look for any text type. As a last attempt, mutt will
-look for any type it knows how to handle.
-
-To remove a MIME type from the <tt/alternative_order/ list, use the
-<tt/unalternative_order/ command.
-
-<sect1>MIME Lookup<label id="mime_lookup">
-<p>
-Mutt-ng's mime_lookup list specifies a list of mime-types that should not
-be treated according to their mailcap entry. This option is designed to
-deal with binary types such as application/octet-stream. When an attachment's
-mime-type is listed in mime_lookup, then the extension of the filename will
-be compared to the list of extensions in the mime.types file. The mime-type
-associated with this extension will then be used to process the attachment
-according to the rules in the mailcap file and according to any other configuration
-options (such as auto_view) specified. Common usage would be:
-<tscreen><verb>
-mime_lookup application/octet-stream application/X-Lotus-Manuscript
-</verb></tscreen>
-
-In addition, the unmime_lookup command may be used to disable this feature
-for any particular mime-type if it had been set, for example, in a global
-muttrc.
-
-<sect>Reference
-<sect1>Command line options<label id="commandline">
-<p>
-Running <tt/mutt/ with no arguments will make Mutt-ng attempt to read your spool
-mailbox. However, it is possible to read other mailboxes and
-to send messages from the command line as well.
-
-<tscreen><verb>
--A expand an alias
--a attach a file to a message
--b specify a blind carbon-copy (BCC) address
--c specify a carbon-copy (Cc) address
--D print the value of all variables on stdout
--e specify a config command to be run after initialization files are read
--f specify a mailbox to load
--F specify an alternate file to read initialization commands
--h print help on command line options
--H specify a draft file from which to read a header and body
--i specify a file to include in a message composition
--m specify a default mailbox type
--n do not read the system Muttngrc
--p recall a postponed message
--Q query a configuration variable
--R open mailbox in read-only mode
--s specify a subject (enclose in quotes if it contains spaces)
--v show version number and compile-time definitions
--x simulate the mailx(1) compose mode
--y show a menu containing the files specified by the mailboxes command
--z exit immediately if there are no messages in the mailbox
--Z open the first folder with new message,exit immediately if none
-</verb></tscreen>
-
-To read messages in a mailbox
-
-<tt/mutt/ [ -nz ] [ -F <em/muttrc/ ] [ -m <em/type/ ] [ -f <em/mailbox/ ]
-
-To compose a new message
-
-<tt/mutt/ [ -n ] [ -F <em/muttrc/ ] [ -a <em/file/ ] [ -c <em/address/ ] [ -i <em/filename/ ] [ -s <em/subject/ ] <em/address/ [ <em/address/ ... ]
-
-Mutt-ng also supports a ``batch'' mode to send prepared messages. Simply redirect
-input from the file you wish to send. For example,
-
-<tt>mutt -s &dquot;data set for run #2&dquot; professor@bigschool.edu
-< ˜/run2.dat</tt>
-
-This command will send a message to ``professor@bigschool.edu'' with a subject
-of ``data set for run #2''. In the body of the message will be the contents
-of the file ``˜/run2.dat''.
-
-<sect1>Configuration Commands<label id="commands">
-<p>
-The following are the commands understood by mutt.
-
-<itemize>
-<item>
-<tt><ref id="account-hook" name="account-hook"></tt> <em/pattern/ <em/command/
-<item>
-<tt><ref id="alias" name="alias"></tt> <em/key/ <em/address/ [ , <em/address/, ... ]
-<item>
-<tt><ref id="alias" name="unalias"></tt> [ * | <em/key/ ... ]
-<item>
-<tt><ref id="alternates" name="alternates"></tt> <em/regexp/ [ <em/regexp/ ... ]
-<item>
-<tt><ref id="alternates" name="unalternates"></tt> [ * | <em/regexp/ ... ]
-<item>
-<tt><ref id="alternative_order" name="alternative_order"></tt> <em/mimetype/ [ <em/mimetype/ ... ]
-<item>
-<tt><ref id="alternative_order" name="unalternative_order"></tt> <em/mimetype/ [ <em/mimetype/ ... ]
-<item>
-<tt><ref id="append-hook" name="append-hook"></tt> <em/regexp/ <em/command/
-<item>
-<tt><ref id="auto_view" name="auto_view"></tt> <em/mimetype/ [ <em/mimetype/ ... ]
-<item>
-<tt><ref id="auto_view" name="unauto_view"></tt> <em/mimetype/ [ <em/mimetype/ ... ]
-<item>
-<tt><ref id="bind" name="bind"></tt> <em/map/ <em/key/ <em/function/
-<item>
-<tt><ref id="charset-hook" name="charset-hook"></tt> <em/alias/ <em/charset/
-<item>
-<tt><ref id="close-hook" name="close-hook"></tt> <em/regexp/ <em/command/
-<item>
-<tt><ref id="color" name="color"></tt> <em/object/ <em/foreground/ <em/background/ [ <em/regexp/ ]
-<item>
-<tt><ref id="color" name="uncolor"></tt> <em/index/ <em/pattern/ [ <em/pattern/ ... ]
-<item>
-<tt><ref id="exec" name="exec"></tt> <em/function/ [ <em/function/ ... ]
-<item>
-<tt><ref id="fcc-hook" name="fcc-hook"></tt> <em/pattern/ <em/mailbox/
-<item>
-<tt><ref id="fcc-save-hook" name="fcc-save-hook"></tt> <em/pattern/ <em/mailbox/
-<item>
-<tt><ref id="folder-hook" name="folder-hook"></tt> <em/pattern/ <em/command/
-<item>
-<tt><ref id="hdr_order" name="hdr_order"></tt> <em/header/ [ <em/header/ ... ]
-<item>
-<tt><ref id="hdr_order" name="unhdr_order"></tt> <em/header/ [ <em/header/ ... ]
-<item>
-<tt><ref id="charset-hook" name="iconv-hook"></tt> <em/charset/ <em/local-charset/
-<item>
-<tt><ref id="ignore" name="ignore"></tt> <em/pattern/ [ <em/pattern/ ... ]
-<item>
-<tt><ref id="ignore" name="unignore"></tt> <em/pattern/ [ <em/pattern/ ... ]
-<item>
-<tt><ref id="lists" name="lists"></tt> <em/regexp/ [ <em/regexp/ ... ]
-<item>
-<tt><ref id="lists" name="unlists"></tt> <em/regexp/ [ <em/regexp/ ... ]
-<item>
-<tt><ref id="macro" name="macro"></tt> <em/menu/ <em/key/ <em/sequence/ [ <em/description/ ]
-<item>
-<tt><ref id="mailboxes" name="mailboxes"></tt> <em/filename/ [ <em/filename/ ... ]
-<item>
-<tt><ref id="mbox-hook" name="mbox-hook"></tt> <em/pattern/ <em/mailbox/
-<item>
-<tt><ref id="message-hook" name="message-hook"></tt> <em/pattern/ <em/command/
-<item>
-<tt><ref id="mime_lookup" name="mime_lookup"></tt> <em/mimetype/ [ <em/mimetype/ ... ]
-<item>
-<tt><ref id="mime_lookup" name="unmime_lookup"></tt> <em/mimetype/ [ <em/mimetype/ ... ]
-<item>
-<tt><ref id="color" name="mono"></tt> <em/object attribute/ [ <em/regexp/ ]
-<item>
-<tt><ref id="color" name="unmono"></tt> <em/index/ <em/pattern/ [ <em/pattern/ ... ]
-<item>
-<tt><ref id="my_hdr" name="my_hdr"></tt> <em/string/
-<item>
-<tt><ref id="my_hdr" name="unmy_hdr"></tt> <em/field/ [ <em/field/ ... ]
-<item>
-<tt><ref id="open-hook" name="open-hook"></tt> <em/regexp/ <em/command/
-<item>
-<tt><ref id="crypt-hook" name="crypt-hook"></tt> <em/pattern/ <em/key-id/
-<item>
-<tt><ref id="push" name="push"></tt> <em/string/
-<item>
-<tt><ref id="set" name="reset"></tt> <em/variable/ [<em/variable/ ... ]
-<item>
-<tt><ref id="save-hook" name="save-hook"></tt> <em/regexp/ <em/filename/
-<item>
-<tt><ref id="score-command" name="score"></tt> <em/pattern/ <em/value/
-<item>
-<tt><ref id="score-command" name="unscore"></tt> <em/pattern/ [ <em/pattern/ ... ]
-<item>
-<tt><ref id="send-hook" name="send-hook"></tt> <em/regexp/ <em/command/
-<item>
-<tt><ref id="reply-hook" name="reply-hook"></tt> <em/regexp/ <em/command/
-<item>
-<tt><ref id="set" name="set"></tt> [no|inv]<em/variable/[=<em/value/] [ <em/variable/ ... ]
-<item>
-<tt><ref id="set" name="unset"></tt> <em/variable/ [<em/variable/ ... ]
-<item>
-<tt><ref id="source" name="source"></tt> <em/filename/
-<item>
-<tt><ref id="spam" name="spam"></tt> <em/pattern/ <em/format/
-<item>
-<tt><ref id="spam" name="nospam"></tt> <em/pattern/
-<item>
-<tt><ref id="lists" name="subscribe"></tt> <em/regexp/ [ <em/regexp/ ... ]
-<item>
-<tt><ref id="lists" name="unsubscribe"></tt> <em/regexp/ [ <em/regexp/ ... ]
-<item>
-<tt><ref id="set" name="toggle"></tt> <em/variable/ [<em/variable/ ... ]
-<item>
-<tt><ref id="unhook" name="unhook"></tt> <em/hook-type/
-</itemize>
-
-<sect1>Configuration variables<label id="variables">
-<p>
-
+application/postscript; ps2ascii %s; copiousoutput</screen>
+
+ </para>
+
+ <para>
+ ``unauto_view'' can be used to remove previous entries from the
+ autoview list.
+ This can be used with message-hook to autoview messages based on size,
+ etc.
+ ``unauto_view *'' will remove all previous entries.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="alternative-order">
+ <title>MIME Multipart/Alternative </title>
+
+ <para>
+ Mutt-ng has some heuristics for determining which attachment of a
+ multipart/alternative type to display. First, mutt will check the
+ alternative_order list to determine if one of the available
+ typesis preferred. The alternative_order list consists of a
+ number of
+ MIME types in order, including support for implicit and explicit
+ wildcards, for example:
+
+ <screen>
+alternative_order text/enriched text/plain text
+application/postscript image/*</screen>
+
+ </para>
+
+ <para>
+ Next, mutt will check if any of the types have a defined
+ <link linkend="auto-view">auto-view</link>, and use that. Failing
+ that, Mutt-ng will look for any text type. As a last attempt, mutt
+ willlook for any type it knows how to handle.
+ </para>
+
+ <para>
+ To remove a MIME type from the <literal>alternative_order</literal> list, use the
+ <literal>unalternative_order</literal> command.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="mime-lookup">
+ <title>MIME Lookup </title>
+
+ <para>
+ Mutt-ng's mime_lookup list specifies a list of mime-types that
+ should not
+ be treated according to their mailcap entry. This option is designed
+ todeal with binary types such as application/octet-stream. When an
+ attachment's
+ mime-type is listed in mime_lookup, then the extension of the
+ filename will
+ be compared to the list of extensions in the mime.types file. The
+ mime-type
+ associated with this extension will then be used to process the
+ attachment
+ according to the rules in the mailcap file and according to any other
+ configuration
+ options (such as auto_view) specified. Common usage would be:
+
+ <screen>
+mime_lookup application/octet-stream application/X-Lotus-Manuscript</screen>
+
+ </para>
+
+ <para>
+ In addition, the unmime_lookup command may be used to disable
+ this feature
+ for any particular mime-type if it had been set, for example, in a
+ global
+ muttrc.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <chapter>
+ <title>Security Considerations </title>
+
+ <para>
+ First of all, mutt-ng contains no security holes included by
+ intention but may contain unknown security holes. As a consequence,
+ please run mutt-ng only with as few permissions as possible.
+ </para>
+
+ <para>
+ Please do not run mutt-ng as the super user.
+ </para>
+
+ <para>
+ When configuring mutt-ng, there're some points to note about secure
+ setups.
+ </para>
+
+ <para>
+ In practice, mutt-ng can be easily made as vulnerable as even the
+ most insecure mail user agents (in their default configuration) just
+ by changing mutt-ng's configuration files: it then can execute
+ arbitrary programs and scripts attached to messages, send out private
+ data on its own, etc. Although this is not believed to the common type
+ of setup, please read this chapter carefully.
+ </para>
+
+ <sect1>
+ <title>Passwords </title>
+
+ <para>
+ Although mutt-ng can be told the various passwords for accounts,
+ please never store passwords in configuration files. Besides the
+ fact that the system's operator can always read them, you could
+ forget to replace the actual password with asterisks when reporting
+ a bug or asking for help via, for example, a mailing list so that
+ your mail including your password could be archived by internet
+ search engines, etc. Please never store passwords on disk.
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Temporary Files </title>
+
+ <para>
+ Mutt-ng uses many temporary files for viewing messages, verifying
+ digital signatures, etc. The <link linkend="umask">umask</link>
+ variable can be used to change the default permissions of these
+ files. Please only change it if you really know what you are doing.
+ Also, a different location for these files may be desired which can
+ be changed via the <link linkend="tmpdir">tmpdir</link> variable.
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Information Leaks </title>
+
+ <sect2>
+ <title>Message-ID: headers </title>
+
+ <para>
+ In the default configuration, mutt-ng will leak some information
+ to the outside world when sending messages: the generation of
+ <literal>Message-ID:</literal> headers includes a step counter which
+ is increased
+ (and rotated) with every message sent. If you'd like to hide this
+ information probably telling others how many mail you sent in which
+ time, you at least need to remove the <literal>%P</literal>
+ expando from the
+ default setting of the <link linkend="msgid-format">msgid-format</link> variable. Please make sure that
+ you really know how local parts of these <literal>Message-ID:</literal> headers
+ are composed.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>mailto:-style links </title>
+
+ <para>
+ As mutt-ng be can be set up to be the mail client to handle
+ <literal>mailto:</literal> style links in websites, there're security
+ considerations, too. To keep the old behavior by default, mutt-ng
+ will be strict in interpreting them which means that arbitrary
+ header fields can be embedded in these links which could override
+ existing header fields or attach arbitrary files. This may be
+ problematic if the <link linkend="edit-headers">edit-headers</link>
+ variable is <emphasis>unset</emphasis>, i.e. the
+ user doesn't want to see header fields while editing the message.
+ </para>
+
+ <para>
+ For example, following a link like
+ </para>
+
+ <para>
+
+ <screen>
+mailto:joe@host?Attach=~/.gnupg/secring.gpg</screen>
+
+ </para>
+
+ <para>
+ will send out the user's private gnupg keyring to <literal>joe@host</literal> if
+ the user doesn't follow the information on screen carefully
+ enough.
+ </para>
+
+ <para>
+ When <emphasis>unsetting</emphasis> the <link linkend="strict-mailto">
+ strict-mailto
+ </link>
+ variable, mutt-ng will
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ be less strict when interpreting these links by
+ prepending a <literal>X-Mailto-</literal> string to all header
+ fields
+ embedded in such a link <emphasis>and</emphasis>
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ turn on the <link linkend="edit-headers">edit-headers</link>
+ variable by
+ force to let the user see all the headers
+ (because they still may leak information.)
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>External applications </title>
+
+ <para>
+ Mutt-ng in many places has to rely on external applications or
+ for convenience supports mechanisms involving external
+ applications.
+ </para>
+
+ <sect2>
+ <title>mailcap </title>
+
+ <para>
+ One of these is the <literal>mailcap</literal> mechanism as defined
+ by RfC
+ 1524. Mutt-ng can be set up to <emphasis>automatically</emphasis>
+ execute any
+ given utility as listed in one of the mailcap files (see the
+ <link linkend="mailcap-path">mailcap-path</link>
+ variable for details.)
+ </para>
+
+ <para>
+ These utilities may have a variety of security vulnerabilities,
+ including overwriting of arbitrary files, information leaks or
+ other exploitable bugs. These vulnerabilities may go unnoticed by
+ the user, especially when they are called automatically (and
+ without interactive prompting) from the mailcap file(s). When
+ using mutt-ng's autoview mechanism in combination with mailcap
+ files, please be sure to...
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ manually select trustworth applications with a reasonable
+ calling sequence
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ periodically check the contents of mailcap files,
+ especially after software installations or upgrades
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ keep the software packages referenced in the mailcap file up to
+ date
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ leave the <link linkend="mailcap-sanitize">mailcap-sanitize</link> variable in its default
+ state to restrict mailcap expandos to a safe set of characters
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Other </title>
+
+ <para>
+ Besides the mailcap mechanism, mutt-ng uses a number of other
+ external utilities for operation.
+ </para>
+
+ <para>
+ The same security considerations apply for these as for tools
+ involved via mailcap (for example, mutt-ng is vulnerable to Denial
+ of Service Attacks with compressed folders support if the
+ uncompressed mailbox is too large for the disk it is saved to.)
+ </para>
+
+ <para>
+ As already noted, most of these problems are not built in but
+ caused by wrong configuration, so please check your configuration.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ </chapter>
+
+ <chapter>
+ <title>Reference </title>
+
+ <sect1 id="commandline">
+ <title>Command line options </title>
+
+ <para>
+ Running <literal>mutt</literal> with no arguments will make Mutt-ng
+ attempt to read your spool
+ mailbox. However, it is possible to read other mailboxes and
+ to send messages from the command line as well.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Mutt-NG Command Line Options</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Option</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>-A </code></entry><entry>expand an alias</entry></row>
+ <row><entry><code>-a </code></entry><entry>attach a file to a message</entry></row>
+ <row><entry><code>-b </code></entry><entry>specify a blind carbon-copy (BCC) address</entry></row>
+ <row><entry><code>-c </code></entry><entry>specify a carbon-copy (Cc) address</entry></row>
+ <row><entry><code>-e </code></entry><entry>specify a config command to be run after initialization files are read</entry></row>
+ <row><entry><code>-f </code></entry><entry>specify a mailbox to load</entry></row>
+ <row><entry><code>-F </code></entry><entry>specify an alternate file to read initialization commands</entry></row>
+ <row><entry><code>-h </code></entry><entry>print help on command line options</entry></row>
+ <row><entry><code>-H </code></entry><entry>specify a draft file from which to read a header and body</entry></row>
+ <row><entry><code>-i </code></entry><entry>specify a file to include in a message composition</entry></row>
+ <row><entry><code>-m </code></entry><entry>specify a default mailbox type</entry></row>
+ <row><entry><code>-n </code></entry><entry>do not read the system Muttngrc</entry></row>
+ <row><entry><code>-p </code></entry><entry>recall a postponed message</entry></row>
+ <row><entry><code>-Q </code></entry><entry>query a configuration variable</entry></row>
+ <row><entry><code>-R </code></entry><entry>open mailbox in read-only mode</entry></row>
+ <row><entry><code>-s </code></entry><entry>specify a subject (enclose in quotes if it contains spaces)</entry></row>
+ <row><entry><code>-t </code></entry><entry>dump the value of all variables to stdout</entry></row>
+ <row><entry><code>-T </code></entry><entry>dump the value of all changed variables to stdout</entry></row>
+ <row><entry><code>-v </code></entry><entry>show version number and compile-time definitions</entry></row>
+ <row><entry><code>-x </code></entry><entry>simulate the mailx(1) compose mode</entry></row>
+ <row><entry><code>-y </code></entry><entry>show a menu containing the files specified by the mailboxes command</entry></row>
+ <row><entry><code>-z </code></entry><entry>exit immediately if there are no messages in the mailbox</entry></row>
+ <row><entry><code>-Z </code></entry><entry>open the first folder with new message,exit immediately if none</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ To read messages in a mailbox
+ </para>
+
+ <para>
+ <literal>mutt</literal> [ -nz ] [ -F <emphasis>muttrc</emphasis> ] [ -m <emphasis>
+ type
+ </emphasis>
+ ] [ -f <emphasis>mailbox</emphasis> ]
+ </para>
+
+ <para>
+ To compose a new message
+ </para>
+
+ <para>
+ <literal>mutt</literal> [ -n ] [ -F <emphasis>muttrc</emphasis> ] [ -a <emphasis>
+ file
+ </emphasis>
+ ] [ -c <emphasis>address</emphasis> ] [ -i <emphasis>
+ filename
+ </emphasis>
+ ] [ -s <emphasis>subject</emphasis> ] <emphasis>address</emphasis> [ <emphasis>
+ address
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ Mutt-ng also supports a ``batch'' mode to send prepared messages.
+ Simply redirect
+ input from the file you wish to send. For example,
+ </para>
+
+ <para>
+ <literal>mutt -s "data set for run #2"
+ professor@bigschool.edu
+ < ˜/run2.dat
+ </literal>
+ </para>
+
+ <para>
+ This command will send a message to ``professor@bigschool.edu'' with a
+ subject
+ of ``data set for run #2''. In the body of the message will be the
+ contents
+ of the file ``˜/run2.dat''.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="patterns">
+ <title>Patterns </title>
+
+ <para>
+
+ <table>
+ <title>Patterns</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Pattern Modifier</entry>
+ <entry>Argument</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>~A </code></entry><entry><code></code></entry><entry>all messages</entry></row>
+ <row><entry><code>~b </code></entry><entry><code>EXPR </code></entry><entry>messages which contain EXPR in the message body</entry></row>
+ <row><entry><code>~B </code></entry><entry><code>EXPR </code></entry><entry>messages which contain EXPR in the whole message</entry></row>
+ <row><entry><code>~c </code></entry><entry><code>EXPR </code></entry><entry>messages carbon-copied to EXPR</entry></row>
+ <row><entry><code>~C </code></entry><entry><code>EXPR </code></entry><entry>message is either to: or cc: EXPR</entry></row>
+ <row><entry><code>~D </code></entry><entry><code></code></entry><entry>deleted messages</entry></row>
+ <row><entry><code>~d </code></entry><entry><code>[MIN]-[MAX] </code></entry><entry>messages with ``date-sent'' in a Date range</entry></row>
+ <row><entry><code>~E </code></entry><entry><code></code></entry><entry>expired messages</entry></row>
+ <row><entry><code>~e </code></entry><entry><code>EXPR </code></entry><entry>message which contains EXPR in the ``Sender'' field</entry></row>
+ <row><entry><code>~F </code></entry><entry><code></code></entry><entry>flagged messages</entry></row>
+ <row><entry><code>~f </code></entry><entry><code>EXPR </code></entry><entry>messages originating from EXPR</entry></row>
+ <row><entry><code>~g </code></entry><entry><code></code></entry><entry>cryptographically signed messages</entry></row>
+ <row><entry><code>~G </code></entry><entry><code></code></entry><entry>cryptographically encrypted messages</entry></row>
+ <row><entry><code>~H </code></entry><entry><code>EXPR </code></entry><entry>messages with a spam attribute matching EXPR</entry></row>
+ <row><entry><code>~h </code></entry><entry><code>EXPR </code></entry><entry>messages which contain EXPR in the message header</entry></row>
+ <row><entry><code>~k </code></entry><entry><code></code></entry><entry>message contains PGP key material</entry></row>
+ <row><entry><code>~i </code></entry><entry><code>EXPR </code></entry><entry>message which match ID in the ``Message-ID'' field</entry></row>
+ <row><entry><code>~L </code></entry><entry><code>EXPR </code></entry><entry>message is either originated or received by EXPR</entry></row>
+ <row><entry><code>~l </code></entry><entry><code></code></entry><entry>message is addressed to a known mailing list</entry></row>
+ <row><entry><code>~m </code></entry><entry><code>[MIN]-[MAX] </code></entry><entry>message in the range MIN to MAX *)</entry></row>
+ <row><entry><code>~M </code></entry><entry><code></code></entry><entry>multipart messages</entry></row>
+ <row><entry><code>~n </code></entry><entry><code>[MIN]-[MAX] </code></entry><entry>messages with a score in the range MIN to MAX *)</entry></row>
+ <row><entry><code>~N </code></entry><entry><code></code></entry><entry>new messages</entry></row>
+ <row><entry><code>~O </code></entry><entry><code></code></entry><entry>old messages</entry></row>
+ <row><entry><code>~p </code></entry><entry><code></code></entry><entry>message is addressed to you (consults alternates)</entry></row>
+ <row><entry><code>~P </code></entry><entry><code></code></entry><entry>message is from you (consults alternates)</entry></row>
+ <row><entry><code>~Q </code></entry><entry><code></code></entry><entry>messages which have been replied to</entry></row>
+ <row><entry><code>~R </code></entry><entry><code></code></entry><entry>read messages</entry></row>
+ <row><entry><code>~r </code></entry><entry><code>[MIN]-[MAX] </code></entry><entry>messages with ``date-received'' in a Date range</entry></row>
+ <row><entry><code>~S </code></entry><entry><code></code></entry><entry>superseded messages</entry></row>
+ <row><entry><code>~s </code></entry><entry><code>EXPR </code></entry><entry>messages having EXPR in the ``Subject'' field.</entry></row>
+ <row><entry><code>~T </code></entry><entry><code></code></entry><entry>tagged messages</entry></row>
+ <row><entry><code>~t </code></entry><entry><code>EXPR </code></entry><entry>messages addressed to EXPR</entry></row>
+ <row><entry><code>~U </code></entry><entry><code></code></entry><entry>unread messages</entry></row>
+ <row><entry><code>~u </code></entry><entry><code></code></entry><entry>message is addressed to a subscribed mailing list</entry></row>
+ <row><entry><code>~v </code></entry><entry><code></code></entry><entry>message is part of a collapsed thread.</entry></row>
+ <row><entry><code>~V </code></entry><entry><code></code></entry><entry>cryptographically verified messages</entry></row>
+ <row><entry><code>~w </code></entry><entry><code>EXPR </code></entry><entry>messages which contain EXPR in the `Newsgroups' field (if compiled with NNTP support)</entry></row>
+ <row><entry><code>~x </code></entry><entry><code>EXPR </code></entry><entry>messages which contain EXPR in the `References' field</entry></row>
+ <row><entry><code>~y </code></entry><entry><code>EXPR </code></entry><entry>messages which contain EXPR in the `X-Label' field</entry></row>
+ <row><entry><code>~z </code></entry><entry><code>[MIN]-[MAX] </code></entry><entry>messages with a size in the range MIN to MAX *)</entry></row>
+ <row><entry><code>~= </code></entry><entry><code></code></entry><entry>duplicated messages (see $duplicate_threads)</entry></row>
+ <row><entry><code>~$ </code></entry><entry><code></code></entry><entry>unreferenced messages (requires threaded view)</entry></row>
+ <row><entry><code>~* </code></entry><entry><code></code></entry><entry>``From'' contains realname and (syntactically) valid address (excluded are addresses matching against alternates or any alias)</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+
+ <para>
+ Where EXPR are
+ <link linkend="regexp">regexp</link>. Special attention has to be
+ made when using regular expressions inside of patterns. Specifically,
+ Mutt-ng's parser for these patterns will strip one level of backslash
+ (\),
+ which is normally used for quoting. If it is your intention to use a
+ backslash in the regular expression, you will need to use two
+ backslashes
+ instead (\\).
+ </para>
+
+ <para>
+ *) The forms <literal><[MAX]</literal>, <literal>
+ >[MIN]
+ </literal>
+ ,
+ <literal>[MIN]-</literal> and <literal>-[MAX]</literal>
+ are allowed, too.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="commands">
+ <title>Configuration Commands </title>
+
+ <para>
+ The following are the commands understood by mutt.
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="account-hook">account-hook</link>
+ </literal>
+ <emphasis>pattern</emphasis> <emphasis>command</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="alias">alias</link>
+ </literal>
+ <emphasis>key</emphasis> <emphasis>address</emphasis> [ , <emphasis>
+ address
+ </emphasis>
+ ,... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="alias">alias</link>
+ </literal>
+ [ * | <emphasis>key</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="alternates">alternates</link>
+ </literal>
+ <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="alternates">alternates</link>
+ </literal>
+ [ * | <emphasis>regexp</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="alternative-order">alternative-order</link>
+ </literal>
+ <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="alternative-order">alternative-order</link>
+ </literal>
+ <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="append-hook">append-hook</link>
+ </literal>
+ <emphasis>regexp</emphasis> <emphasis>command</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="auto-view">auto-view</link>
+ </literal>
+ <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="auto-view">auto-view</link>
+ </literal>
+ <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="bind">bind</link>
+ </literal>
+ <emphasis>map</emphasis> <emphasis>key</emphasis> <emphasis>
+ function
+ </emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="charset-hook">charset-hook</link>
+ </literal>
+ <emphasis>alias</emphasis> <emphasis>charset</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="close-hook">close-hook</link>
+ </literal>
+ <emphasis>regexp</emphasis> <emphasis>command</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="color">color</link>
+ </literal>
+ <emphasis>object</emphasis> <emphasis>foreground</emphasis> <emphasis>
+ background
+ </emphasis>
+ [ <emphasis>regexp</emphasis> ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="color">color</link>
+ </literal>
+ <emphasis>index</emphasis> <emphasis>pattern</emphasis> [ <emphasis>
+ pattern
+ </emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="exec">exec</link>
+ </literal>
+ <emphasis>function</emphasis> [ <emphasis>function</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="fcc-hook">fcc-hook</link>
+ </literal>
+ <emphasis>pattern</emphasis> <emphasis>mailbox</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="fcc-save-hook">fcc-save-hook</link>
+ </literal>
+ <emphasis>pattern</emphasis> <emphasis>mailbox</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="folder-hook">folder-hook</link>
+ </literal>
+ <emphasis>pattern</emphasis> <emphasis>command</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="hdr-order">hdr-order</link>
+ </literal>
+ <emphasis>header</emphasis> [ <emphasis>header</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="hdr-order">hdr-order</link>
+ </literal>
+ <emphasis>header</emphasis> [ <emphasis>header</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="charset-hook">charset-hook</link>
+ </literal>
+ <emphasis>charset</emphasis> <emphasis>local-charset</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="ignore">ignore</link>
+ </literal>
+ <emphasis>pattern</emphasis> [ <emphasis>pattern</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="ignore">ignore</link>
+ </literal>
+ <emphasis>pattern</emphasis> [ <emphasis>pattern</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="lists">lists</link>
+ </literal>
+ <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="lists">lists</link>
+ </literal>
+ <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="macro">macro</link>
+ </literal>
+ <emphasis>menu</emphasis> <emphasis>key</emphasis> <emphasis>
+ sequence
+ </emphasis>
+ [ <emphasis>description</emphasis> ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="mailboxes">mailboxes</link>
+ </literal>
+ <emphasis>filename</emphasis> [ <emphasis>filename</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="mbox-hook">mbox-hook</link>
+ </literal>
+ <emphasis>pattern</emphasis> <emphasis>mailbox</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="message-hook">message-hook</link>
+ </literal>
+ <emphasis>pattern</emphasis> <emphasis>command</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="mime-lookup">mime-lookup</link>
+ </literal>
+ <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="mime-lookup">mime-lookup</link>
+ </literal>
+ <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="color">color</link>
+ </literal>
+ <emphasis>object attribute</emphasis> [ <emphasis>regexp</emphasis> ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="color">color</link>
+ </literal>
+ <emphasis>index</emphasis> <emphasis>pattern</emphasis> [ <emphasis>
+ pattern
+ </emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="my-hdr">my-hdr</link>
+ </literal>
+ <emphasis>string</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="my-hdr">my-hdr</link>
+ </literal>
+ <emphasis>field</emphasis> [ <emphasis>field</emphasis> ...
+ ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="open-hook">open-hook</link>
+ </literal>
+ <emphasis>regexp</emphasis> <emphasis>command</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="crypt-hook">crypt-hook</link>
+ </literal>
+ <emphasis>pattern</emphasis> <emphasis>key-id</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="push">push</link>
+ </literal>
+ <emphasis>string</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="set">set</link>
+ </literal>
+ <emphasis>variable</emphasis> [<emphasis>variable</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="save-hook">save-hook</link>
+ </literal>
+ <emphasis>regexp</emphasis> <emphasis>filename</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="score-command">score-command</link>
+ </literal>
+ <emphasis>pattern</emphasis> <emphasis>value</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="score-command">score-command</link>
+ </literal>
+ <emphasis>pattern</emphasis> [ <emphasis>pattern</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="send-hook">send-hook</link>
+ </literal>
+ <emphasis>regexp</emphasis> <emphasis>command</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="reply-hook">reply-hook</link>
+ </literal>
+ <emphasis>regexp</emphasis> <emphasis>command</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="set">set</link>
+ </literal>
+ [no|inv]<emphasis>variable</emphasis>[=<emphasis>
+ value
+ </emphasis>
+ ] [ <emphasis>variable</emphasis> ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="set">set</link>
+ </literal>
+ <emphasis>variable</emphasis> [<emphasis>variable</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="source">source</link>
+ </literal>
+ <emphasis>filename</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="spam">spam</link>
+ </literal>
+ <emphasis>pattern</emphasis> <emphasis>format</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="spam">spam</link>
+ </literal>
+ <emphasis>pattern</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="lists">lists</link>
+ </literal>
+ <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="lists">lists</link>
+ </literal>
+ <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="set">set</link>
+ </literal>
+ <emphasis>variable</emphasis> [<emphasis>variable</emphasis>
+ ... ]
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>
+ <link linkend="unhook">unhook</link>
+ </literal>
+ <emphasis>hook-type</emphasis>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="variables">
+ <title>Configuration variables</title>
+
+ <para>
+ The following list contains all variables which, in the process of
+ providing more consistency, have been renamed and are partially even
+ removed already. The left column contains the old synonym variables,
+ the right column the full/new name:
+ </para>
+
+ <para>
+ <anchor id="sect-obsolete"/>
+
+ <table>
+ <title>Obsolete Variables</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Old Name</entry>
+ <entry>New Name</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>edit_hdrs</code></entry><entry><code>edit_headers</code></entry></row>
+ <row><entry><code>forw_decode</code></entry><entry><code>forward_decode</code></entry></row>
+ <row><entry><code>forw_format</code></entry><entry><code>forward_format</code></entry></row>
+ <row><entry><code>forw_quote</code></entry><entry><code>forward_quote</code></entry></row>
+ <row><entry><code>hdr_format</code></entry><entry><code>index_format</code></entry></row>
+ <row><entry><code>indent_str</code></entry><entry><code>indent_string</code></entry></row>
+ <row><entry><code>mime_fwd</code></entry><entry><code>mime_forward</code></entry></row>
+ <row><entry><code>msg_format</code></entry><entry><code>message_format</code></entry></row>
+ <row><entry><code>pgp_autosign</code></entry><entry><code>crypt_autosign</code></entry></row>
+ <row><entry><code>pgp_autoencrypt</code></entry><entry><code>crypt_autoencrypt</code></entry></row>
+ <row><entry><code>pgp_replyencrypt</code></entry><entry><code>crypt_replyencrypt</code></entry></row>
+ <row><entry><code>pgp_replysign</code></entry><entry><code>crypt_replysign</code></entry></row>
+ <row><entry><code>pgp_replysignencrypted</code></entry><entry><code>crypt_replysignencrypted</code></entry></row>
+ <row><entry><code>pgp_verify_sig</code></entry><entry><code>crypt_verify_sig</code></entry></row>
+ <row><entry><code>pgp_create_traditional</code></entry><entry><code>pgp_autoinline</code></entry></row>
+ <row><entry><code>pgp_auto_traditional</code></entry><entry><code>pgp_replyinline</code></entry></row>
+ <row><entry><code>forw_decrypt</code></entry><entry><code>forward_decrypt</code></entry></row>
+ <row><entry><code>smime_sign_as</code></entry><entry><code>smime_default_key</code></entry></row>
+ <row><entry><code>post_indent_str</code></entry><entry><code>post_indent_string</code></entry></row>
+ <row><entry><code>print_cmd</code></entry><entry><code>print_command</code></entry></row>
+ <row><entry><code>shorten_hierarchy</code></entry><entry><code>sidebar_shorten_hierarchy</code></entry></row>
+ <row><entry><code>ask_followup_to</code></entry><entry><code>nntp_ask_followup_to</code></entry></row>
+ <row><entry><code>ask_x_comment_to</code></entry><entry><code>nntp_ask_x_comment_to</code></entry></row>
+ <row><entry><code>catchup_newsgroup</code></entry><entry><code>nntp_catchup</code></entry></row>
+ <row><entry><code>followup_to_poster</code></entry><entry><code>nntp_followup_to_poster</code></entry></row>
+ <row><entry><code>group_index_format</code></entry><entry><code>nntp_group_index_format</code></entry></row>
+ <row><entry><code>inews</code></entry><entry><code>nntp_inews</code></entry></row>
+ <row><entry><code>mime_subject</code></entry><entry><code>nntp_mime_subject</code></entry></row>
+ <row><entry><code>news_cache_dir</code></entry><entry><code>nntp_cache_dir</code></entry></row>
+ <row><entry><code>news_server</code></entry><entry><code>nntp_host</code></entry></row>
+ <row><entry><code>newsrc</code></entry><entry><code>nntp_newsrc</code></entry></row>
+ <row><entry><code>nntp_poll</code></entry><entry><code>nntp_mail_check</code></entry></row>
+ <row><entry><code>pop_checkinterval</code></entry><entry><code>pop_mail_check</code></entry></row>
+ <row><entry><code>post_moderated</code></entry><entry><code>nntp_post_moderated</code></entry></row>
+ <row><entry><code>save_unsubscribed</code></entry><entry><code>nntp_save_unsubscribed</code></entry></row>
+ <row><entry><code>show_new_news</code></entry><entry><code>nntp_show_new_news</code></entry></row>
+ <row><entry><code>show_only_unread</code></entry><entry><code>nntp_show_only_unread</code></entry></row>
+ <row><entry><code>x_comment_to</code></entry><entry><code>nntp_x_comment_to</code></entry></row>
+ <row><entry><code>smtp_auth_username</code></entry><entry><code>smtp_user</code></entry></row>
+ <row><entry><code>smtp_auth_password</code></entry><entry><code>smtp_pass</code></entry></row>
+ <row><entry><code>user_agent</code></entry><entry><code>agent_string</code></entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ The <literal>contrib</literal> subdirectory contains a script named
+ <literal>update-config.pl</literal> which eases migration.
+ </para>
+
+ <para>
+ A complete list of current variables follows.
+ </para>