<?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">
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book>
<bookinfo>
-
-<title>The Mutt Next Generation E-Mail Client</title>
-<author>
-<firstname>by Andreas Krennmair and others
- originally based on <emphasis>mutt</emphasis> by Michael Elkins and others</firstname>
-
-<authorblurb>
-
-<para>
-<ulink URL="mailto:ak@synflood.at"><ak@synflood.at>
-</ulink>
-
-<ulink URL="mailto:me@cs.hmc.edu"><me@cs.hmc.edu>
-</ulink>
-</para>
-
-</authorblurb>
-</author>
-
-<pubdate>version devel-r473</pubdate>
-
-<abstract>
-
-<para>
-Michael Elinks on mutt, circa 1995: ``All mail clients suck. This one just sucks less.'' - Sven Guckes on mutt, ca. 2003: ``But it still sucks!''
-</para>
-
-</abstract>
-
+ <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>
-<ulink
-URL="https://lists.berlios.de/mailman/listinfo/mutt-ng-users"
->mutt-ng-users@lists.berlios.de</ulink
-> -- This is where the mutt-ng user support happens.
-</para>
-</listitem>
-<listitem>
-
-<para>
-<ulink
-URL="https://lists.berlios.de/mailman/listinfo/mutt-ng-devel"
->mutt-ng-devel@lists.berlios.de</ulink
-> -- 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>
-
-<para>
-
-</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>
-
-<para>
-
-</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>
-
-<para>
-
-</para>
-
-<para>
-
-</para>
-
-</sect1>
-
-</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 table
-showing the common keys used to navigate menus in Mutt-ng.
-</para>
-
-<para>
-
-<screen>
-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
-</screen>
-
-</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>
-
-<screen>
-^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
-</screen>
+ <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>
-</para>
+
+ <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> -----
-<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>
+From: Lucas User <luser@example.com>
+Date: Thu, 02 Dec 2004 03:08:34 +0100
+To: Michael Random <mrandom@example.com>
+Subject: Re: blackmail
-<para>
-<literal>bind editor <delete> backspace</literal>
-</para>
+Pay me EUR 50,000.- cash or your favorite stuffed animal will die
+a horrible death.
-<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 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.''
-</para>
-
-<para>
-The next few sections describe the functions provided in each of these
-modes.
-</para>
-
-<sect2>
-<title>The Message Index</title> <!--{{{-->
-
-<para>
-
-<screen>
-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
-</screen>
-
-</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>
-
-<screen>
-<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
-</screen>
-
-</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 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 <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:
-</para>
-
-<para>
-
-<screen>
-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
-</screen>
-
-</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>
-
-<screen>
-^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
-</screen>
-
-</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 on
-the 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 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.
-</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>
-
-<screen>
-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
-</screen>
-
-</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>
-
-<screen>
-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
-</screen>
-
-</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 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 <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.
+----- 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>
-</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:"
+ <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>
-</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)]:"
+ </chapter>
+
+ <chapter>
+ <title>Configuration </title>
-</screen>
-
-</para>
-
-<para>
-The example above results in the following attribution:
-
-<screen>
-* Michael Svensson <svensson@foobar.com> [05-03-06 17:02]:
+ <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.
+> 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>
-</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 functionality
-ensures 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@
+ <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>
-</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:
-
-<screen>
-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.
-</screen>
-
-</para>
-
-<para>
-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 (<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 mutt
-prompts 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 is
-allowed). 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>
-
-<screen>
-\t tab
-<tab> tab
-<backtab> backtab / shift-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
-</screen>
-
-</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 method
-based 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 single
-key.
-</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 the
-commas 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 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).
-</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 a
-different 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 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.
-</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 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.
-</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 a
-more 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>:
-</para>
-
-<para>
-
-<screen>
-ncurses, slang, iconv, idn, dotlock, standalone, pop, nntp, imap, ssl,
-gnutls, sasl, sasl2, libesmtp, compressed, color, classic_pgp,
-classic_smime, gpgme, header_cache
-</screen>
-
-</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 ``ˆ'' and
-the 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 (called
-collating 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>, <literal>USER</literal>,
-<literal>ID</literal> and <literal>SUBJECT</literal> are regular expressions. 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 as
-normal.
-</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
-</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
-</screen>
-
-</para>
-
-<para>
-If you want to specify the mailboxes you can do so with:
-
-<screen>
-set mbox='=INBOX'
-mailboxes INBOX \
- 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
-</screen>
-
-</para>
-
-<para>
-The available functions are:
-
-<screen>
-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
-</screen>
-
-</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 \Cp sidebar-prev
-bind pager \Cn sidebar-next
-bind pager \Cb sidebar-open
-
-macro index B ':toggle sidebar_visible^M'
-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 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.
-</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
-</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 addresses
-to 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 query
-menu. 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 new
-mailboxes, 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 are
-renamed 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 two
-programs 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 in
-the ``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 procmail
-and 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 dealing
-with 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 (bound
-by 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 convert
-paths 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 to
-v12.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 library
-installed 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
+ <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>
-</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 for
-so 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 if
-it 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>
+ <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</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</screen>
+
+ </para>
+
+ <para>
+ If you want to specify the mailboxes you can do so with:
+
+ <screen>
+set mbox='=INBOX'
+mailboxes INBOX \
+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</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 \Cp sidebar-prev
+bind pager \Cn sidebar-next
+bind pager \Cb sidebar-open
-<screen>
+macro index B ':toggle sidebar_visible^M'
+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</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"'
-</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>
+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
-</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>
+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>
+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 being
-appended.
-</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 use
-the following hooks:
-</para>
-
-<para>
-
-<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 think
-about 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 extra
-types 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 --]
-</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 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.
-</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
-</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 divided
-by 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, you
-just 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
-</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
-</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 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.
-</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
-</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>
+
+ </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 --]</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</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</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</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</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
-</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>
+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
-</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>>
+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
# I'm always running netscape (if my computer had more memory, maybe)
-text/html; netscape -remote 'openURL(%s)'
-</screen>
-
-</para>
-
-<para>
-This mailcap file shows quite a number of examples:
-</para>
-
-<para>
-
-<screen>
+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
# 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
# Send excel spreadsheets to my NT box
-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 the
-MIME 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>
+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
-</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 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:
-
-<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 will
-look 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 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:
-
-<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>
-
-<screen>
--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
--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)
--t dump the value of all variables to stdout
--T dump the value of all changed variables to stdout
--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
-</screen>
-
-</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>
-
-<screen>
-~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 *)
-~M multipart messages
-~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)
-</screen>
-
-</para>
-
-<para>
-Where EXPR, USER, ID, and SUBJECT 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"/>
-
-<screen>
-edit_hdrs edit_headers
-forw_decode forward_decode
-forw_format forward_format
-forw_quote forward_quote
-hdr_format index_format
-indent_str indent_string
-mime_fwd mime_forward
-msg_format message_format
-pgp_autosign crypt_autosign
-pgp_autoencrypt crypt_autoencrypt
-pgp_replyencrypt crypt_replyencrypt
-pgp_replysign crypt_replysign
-pgp_replysignencrypted crypt_replysignencrypted
-pgp_verify_sig crypt_verify_sig
-pgp_create_traditional pgp_autoinline
-pgp_auto_traditional pgp_replyinline
-forw_decrypt forward_decrypt
-smime_sign_as smime_default_key
-post_indent_str post_indent_string
-print_cmd print_command
-shorten_hierarchy sidebar_shorten_hierarchy
-ask_followup_to nntp_ask_followup_to
-ask_x_comment_to nntp_ask_x_comment_to
-catchup_newsgroup nntp_catchup
-followup_to_poster nntp_followup_to_poster
-group_index_format nntp_group_index_format
-inews nntp_inews
-mime_subject nntp_mime_subject
-news_cache_dir nntp_cache_dir
-news_server nntp_host
-newsrc nntp_newsrc
-nntp_poll nntp_mail_check
-pop_checkinterval pop_mail_check
-post_moderated nntp_post_moderated
-save_unsubscribed nntp_save_unsubscribed
-show_new_news nntp_show_new_news
-show_only_unread nntp_show_only_unread
-x_comment_to nntp_x_comment_to
-smtp_auth_username smtp_user
-smtp_auth_password smtp_pass
-</screen>
-
-</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>
+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>