]> git.llucax.com Git - software/mutt-debian.git/blob - doc/manual.xml.head
Merge commit 'upstream/1.5.20'
[software/mutt-debian.git] / doc / manual.xml.head
1 <?xml version="1.0" standalone="no"?>
2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3   "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4 <book>
5
6 <bookinfo>
7 <title>The Mutt E-Mail Client</title>
8 <author>
9 <firstname>Michael</firstname><surname>Elkins</surname>
10 <email>me@cs.hmc.edu</email>
11 </author>
12 <releaseinfo>version @VERSION@</releaseinfo>
13
14 <abstract>
15 <para>
16 <quote>All mail clients suck.  This one just sucks less.</quote> &mdash; me, circa 1995
17 </para>
18 </abstract>
19 </bookinfo>
20
21 <chapter id="intro">
22 <title>Introduction</title>
23
24 <para>
25 <emphasis role="bold">Mutt</emphasis> is a small but very powerful text-based MIME mail client.  Mutt is
26 highly configurable, and is well suited to the mail power user with advanced
27 features like key bindings, keyboard macros, mail threading, regular
28 expression searches and a powerful pattern matching language for selecting
29 groups of messages.
30 </para>
31
32 <sect1 id="homepage">
33 <title>Mutt Home Page</title>
34
35 <para>
36 The official homepage can be found at
37 <ulink url="http://www.mutt.org/">http://www.mutt.org/</ulink>.
38 </para>
39
40 </sect1>
41
42 <sect1 id="muttlists">
43 <title>Mailing Lists</title>
44
45 <para>
46 To subscribe to one of the following mailing lists, send a message with the
47 word <emphasis>subscribe</emphasis> in the body to
48 <literal>list-name</literal><emphasis>-request</emphasis><literal>@mutt.org</literal>.
49 </para>
50
51 <itemizedlist>
52 <listitem>
53
54 <para>
55 <email>mutt-announce-request@mutt.org</email> -- low traffic list for announcements
56 </para>
57 </listitem>
58 <listitem>
59
60 <para>
61 <email>mutt-users-request@mutt.org</email> -- help, bug reports and feature requests
62 </para>
63 </listitem>
64 <listitem>
65
66 <para>
67 <email>mutt-dev-request@mutt.org</email> -- development mailing list
68 </para>
69 </listitem>
70
71 </itemizedlist>
72
73 <note>
74 <para>
75 All messages posted to
76 <emphasis>mutt-announce</emphasis> are automatically forwarded to
77 <emphasis>mutt-users</emphasis>, so you do not need to be subscribed to
78 both lists.
79 </para>
80 </note>
81
82 </sect1>
83
84 <sect1 id="distribution">
85 <title>Getting Mutt</title>
86
87 <para>
88 Mutt releases can be downloaded from
89 <ulink url="ftp://ftp.mutt.org/mutt/">ftp://ftp.mutt.org/mutt/</ulink>.
90 For a list of mirror sites, please refer to
91 <ulink url="http://www.mutt.org/download.html">http://www.mutt.org/download.html</ulink>.
92 </para>
93
94 <para>
95 For nightly tarballs and version control access, please refer to the
96 <ulink url="http://dev.mutt.org/">Mutt development site</ulink>.
97 </para>
98
99 </sect1>
100
101 <sect1 id="irc">
102 <title>Mutt Online Resources</title>
103
104 <variablelist>
105
106 <varlistentry>
107 <term>Bug Tracking System</term>
108 <listitem>
109 <para>
110 The official Mutt bug tracking system can be found at
111 <ulink url="http://bugs.mutt.org/">http://bugs.mutt.org/</ulink>
112 </para>
113 </listitem>
114 </varlistentry>
115
116 <varlistentry>
117 <term>Wiki</term>
118 <listitem>
119 <para>
120 An (unofficial) wiki can be found
121 at <ulink url="http://wiki.mutt.org/">http://wiki.mutt.org/</ulink>.
122 </para>
123 </listitem>
124 </varlistentry>
125
126 <varlistentry>
127 <term>IRC</term>
128 <listitem>
129 <para>
130 For the IRC user community, visit channel <emphasis>&num;mutt</emphasis> on
131 <ulink url="http://www.freenode.net/">irc.freenode.net</ulink>.
132 </para>
133 </listitem>
134 </varlistentry>
135
136 <varlistentry>
137 <term>USENET</term>
138 <listitem>
139 <para>
140 For USENET, see the newsgroup <ulink url="news:comp.mail.mutt">comp.mail.mutt</ulink>.
141 </para>
142 </listitem>
143 </varlistentry>
144
145 </variablelist>
146
147 </sect1>
148
149 <sect1 id="contrib">
150 <title>Contributing to Mutt</title>
151
152 <para>
153 There are various ways to contribute to the Mutt project.
154 </para>
155
156 <para>
157 Especially for new users it may be helpful to meet other new and
158 experienced users to chat about Mutt, talk about problems and share
159 tricks.
160 </para>
161
162 <para>
163 Since translations of Mutt into other languages are highly appreciated,
164 the Mutt developers always look for skilled translators that help
165 improve and continue to maintain stale translations.
166 </para>
167
168 <para>
169 For contributing code patches for new features and bug fixes, please
170 refer to the developer pages at
171 <ulink url="http://dev.mutt.org/">http://dev.mutt.org/</ulink> for more details.
172 </para>
173
174 </sect1>
175
176 <sect1 id="typo">
177 <title>Typograhical Conventions</title>
178
179 <para>
180 This section lists typographical conventions followed throughout this
181 manual. See table <xref linkend="tab-typo"/> for typographical
182 conventions for special terms.
183 </para>
184
185 <table id="tab-typo">
186 <title>Typographical conventions for special terms</title>
187 <tgroup cols="2">
188 <thead>
189 <row><entry>Item</entry><entry>Refers to...</entry></row>
190 </thead>
191 <tbody>
192 <row><entry><literal>printf(3)</literal></entry><entry>UNIX manual pages, execute <literal>man 3 printf</literal></entry></row>
193 <row><entry><literal>&lt;PageUp&gt;</literal></entry><entry>named keys</entry></row>
194 <row><entry><literal>&lt;create-alias&gt;</literal></entry><entry>named Mutt function</entry></row>
195 <row><entry><literal>&circ;G</literal></entry><entry>Control+G key combination</entry></row>
196 <row><entry>&dollar;mail&lowbar;check</entry><entry>Mutt configuration option</entry></row>
197 <row><entry><literal>&dollar;HOME</literal></entry><entry>environment variable</entry></row>
198 </tbody>
199 </tgroup>
200 </table>
201
202 <para>
203 Examples are presented as:
204 </para>
205
206 <screen>
207 mutt -v
208 </screen>
209
210 <para>
211 Within command synopsis, curly brackets (<quote>&lcub;&rcub;</quote>) denote a set
212 of options of which one is mandatory, square brackets
213 (<quote>&lsqb;&rsqb;</quote>) denote optional arguments, three dots
214 denote that the argument may be repeated arbitrary times.
215 </para>
216
217 </sect1>
218
219 <sect1 id="copyright">
220 <title>Copyright</title>
221
222 <para>
223 Mutt is Copyright &copy; 1996-2009 Michael R. Elkins
224 <email>me@mutt.org</email> and others.
225 </para>
226
227 <para>
228 This program is free software; you can redistribute it and/or modify
229 it under the terms of the GNU General Public License as published by
230 the Free Software Foundation; either version 2 of the License, or
231 (at your option) any later version.
232 </para>
233
234 <para>
235 This program is distributed in the hope that it will be useful,
236 but WITHOUT ANY WARRANTY; without even the implied warranty of
237 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
238 GNU General Public License for more details.
239 </para>
240
241 <para>
242 You should have received a copy of the GNU General Public License
243 along with this program; if not, write to the Free Software
244 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
245 </para>
246
247 </sect1>
248
249 </chapter>
250
251 <chapter id="gettingstarted">
252 <title>Getting Started</title>
253
254 <para>
255 This section is intended as a brief overview of how to use Mutt.  There are
256 many other features which are described elsewhere in the manual.  There
257 is even more information available in the Mutt FAQ and various web
258 pages. See the <ulink url="http://www.mutt.org/">Mutt homepage</ulink> for more details.
259 </para>
260
261 <para>
262 The keybindings described in this section are the defaults as distributed.
263 Your local system administrator may have altered the defaults for your site.
264 You can always type <quote>?</quote> in any menu to display the current bindings.
265 </para>
266
267 <para>
268 The first thing you need to do is invoke Mutt, simply by typing <literal>mutt</literal>
269 at the command line.  There are various command-line options, see
270 either the Mutt man page or the <link linkend="commandline">reference</link>.
271 </para>
272
273 <sect1 id="core-concepts">
274 <title>Core Concepts</title>
275
276 <para>
277 Mutt is a text-based application which interacts with users through
278 different menus which are mostly line-/entry-based or page-based. A
279 line-based menu is the so-called <quote>index</quote> menu (listing all messages of
280 the currently opened folder) or the <quote>alias</quote> menu (allowing you to
281 select recipients from a list). Examples for page-based menus are the
282 <quote>pager</quote> (showing one message at a time) or the <quote>help</quote> menu listing
283 all available key bindings.
284 </para>
285
286 <para>
287 The user interface consists of a context sensitive help line at the top,
288 the menu's contents followed by a context sensitive status line and
289 finally the command line. The command line is used to display
290 informational and error messages as well as for prompts and for entering
291 interactive commands.
292 </para>
293
294 <para>
295 Mutt is configured through variables which, if the user wants to
296 permanently use a non-default value, are written to configuration
297 files. Mutt supports a rich config file syntax to make even complex
298 configuration files readable and commentable.
299 </para>
300
301 <para>
302 Because Mutt allows for customizing almost all key bindings, there are
303 so-called <quote>functions</quote> which can be executed manually (using the
304 command line) or in macros. Macros allow the user to bind a sequence of
305 commands to a single key or a short key sequence instead of repeating a
306 sequence of actions over and over.
307 </para>
308
309 <para>
310 Many commands (such as saving or copying a message to another folder)
311 can be applied to a single message or a set of messages (so-called
312 <quote>tagged</quote> messages). To help selecting messages, Mutt provides a rich
313 set of message patterns (such as recipients, sender, body contents, date
314 sent/received, etc.) which can be combined into complex expressions
315 using the boolean <emphasis>and</emphasis> and <emphasis>or</emphasis>
316 operations as well as negating. These patterns can also be used to (for
317 example) search for messages or to limit the index to show only matching
318 messages.
319 </para>
320
321 <para>
322 Mutt supports a <quote>hook</quote> concept which allows the user to execute
323 arbitrary configuration commands and functions in certain situations
324 such as entering a folder, starting a new message or replying to an
325 existing one. These hooks can be used to highly customize Mutt's
326 behaviour including managing multiple identities, customizing the
327 display for a folder or even implementing auto-archiving based on a
328 per-folder basis and much more.
329 </para>
330
331 <para>
332 Besides an interactive mode, Mutt can also be used as a command-line
333 tool only send messages. It also supports a
334 <literal>mailx(1)</literal>-compatible interface, see <xref
335 linkend="tab-commandline-options"/> for a complete list of command-line
336 options.
337 </para>
338
339 </sect1>
340
341 <sect1 id="concept-screens-and-menus">
342 <title>Screens and Menus</title>
343
344 <sect2 id="intro-index">
345 <title>Index</title>
346
347 <para>
348 The index is the screen that you usually see first when you start
349 Mutt. It gives an overview over your emails in the currently opened
350 mailbox. By default, this is your system mailbox.  The information you
351 see in the index is a list of emails, each with its number on the left,
352 its flags (new email, important email, email that has been forwarded or
353 replied to, tagged email, ...), the date when email was sent, its
354 sender, the email size, and the subject. Additionally, the index also
355 shows thread hierarchies: when you reply to an email, and the other
356 person replies back, you can see the other's person email in a
357 "sub-tree" below.  This is especially useful for personal email between
358 a group of people or when you've subscribed to mailing lists.
359 </para>
360
361 </sect2>
362
363 <sect2 id="intro-pager">
364 <title>Pager</title>
365
366 <para>
367 The pager is responsible for showing the email content. On the top of
368 the pager you have an overview over the most important email headers
369 like the sender, the recipient, the subject, and much more
370 information. How much information you actually see depends on your
371 configuration, which we'll describe below.
372 </para>
373
374 <para>
375 Below the headers, you see the email body which usually contains the
376 message. If the email contains any attachments, you will see more
377 information about them below the email body, or, if the attachments are
378 text files, you can view them directly in the pager.
379 </para>
380
381 <para>
382 To give the user a good overview, it is possible to configure Mutt to
383 show different things in the pager with different colors. Virtually
384 everything that can be described with a regular expression can be
385 colored, e.g. URLs, email addresses or smileys.
386 </para>
387
388 </sect2>
389
390 <sect2 id="intro-browser">
391 <title>File Browser</title>
392
393 <para>
394 The file browser is the interface to the local or remote file
395 system. When selecting a mailbox to open, the browser allows custom
396 sorting of items, limiting the items shown by a regular expression and a
397 freely adjustable format of what to display in which way. It also allows
398 for easy navigation through the file system when selecting file(s) to
399 attach to a message, select multiple files to attach and many more.
400 </para>
401
402 </sect2>
403
404 <sect2 id="intro-help">
405 <title>Help</title>
406
407 <para>
408 The help screen is meant to offer a quick help to the user. It lists the
409 current configuration of key bindings and their associated commands
410 including a short description, and currently unbound functions that
411 still need to be associated with a key binding (or alternatively, they
412 can be called via the Mutt command prompt).
413 </para>
414
415 </sect2>
416
417 <sect2 id="intro-compose">
418 <title>Compose Menu</title>
419
420 <para>
421 The compose menu features a split screen containing the information
422 which really matter before actually sending a message by mail: who gets
423 the message as what (recipients and who gets what kind of
424 copy). Additionally, users may set security options like deciding
425 whether to sign, encrypt or sign and encrypt a message with/for what
426 keys. Also, it's used to attach messages, to re-edit any attachment
427 including the message itself.
428 </para>
429
430 </sect2>
431
432 <sect2 id="intro-alias">
433 <title>Alias Menu</title>
434
435 <para>
436 The alias menu is used to help users finding the recipients of
437 messages. For users who need to contact many people, there's no need to
438 remember addresses or names completely because it allows for searching,
439 too. The alias mechanism and thus the alias menu also features grouping
440 several addresses by a shorter nickname, the actual alias, so that users
441 don't have to select each single recipient manually.
442 </para>
443
444 </sect2>
445
446 <sect2 id="intro-attach">
447 <title>Attachment Menu</title>
448
449 <para>
450 As will be later discussed in detail, Mutt features a good and stable
451 MIME implementation, that is, it supports sending and receiving messages
452 of arbitrary MIME types. The attachment menu displays a message's
453 structure in detail: what content parts are attached to which parent
454 part (which gives a true tree structure), which type is of what type and
455 what size.  Single parts may saved, deleted or modified to offer great
456 and easy access to message's internals.
457 </para>
458
459 </sect2>
460
461 </sect1>
462
463 <sect1 id="menus">
464 <title>Moving Around in Menus</title>
465
466 <para>
467 The most important navigation keys common to line- or entry-based menus
468 are shown in <xref linkend="tab-keys-nav-line"/> and in
469 <xref linkend="tab-keys-nav-page"/> for page-based menus.
470 </para>
471
472 <table id="tab-keys-nav-line">
473 <title>Most common navigation keys in entry-based menus</title>
474 <tgroup cols="3">
475 <thead>
476 <row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>
477 </thead>
478 <tbody>
479 <row><entry>j or &lt;Down&gt;</entry><entry><literal>&lt;next-entry&gt;</literal></entry><entry>move to the next entry</entry></row>
480 <row><entry>k or &lt;Up&gt;</entry><entry><literal>&lt;previous-entry&gt;</literal></entry><entry>move to the previous entry</entry></row>
481 <row><entry>z or &lt;PageDn&gt;</entry><entry><literal>&lt;page-down&gt;</literal></entry><entry>go to the next page</entry></row>
482 <row><entry>Z or &lt;PageUp&gt;</entry><entry><literal>&lt;page-up&gt;</literal></entry><entry>go to the previous page</entry></row>
483 <row><entry>= or &lt;Home&gt;</entry><entry><literal>&lt;first-entry&gt;</literal></entry><entry>jump to the first entry</entry></row>
484 <row><entry>* or &lt;End&gt;</entry><entry><literal>&lt;last-entry&gt;</literal></entry><entry>jump to the last entry</entry></row>
485 <row><entry>q</entry><entry><literal>&lt;quit&gt;</literal></entry><entry>exit the current menu</entry></row>
486 <row><entry>?</entry><entry><literal>&lt;help&gt;</literal></entry><entry>list all keybindings for the current menu</entry></row>
487 </tbody>
488 </tgroup>
489 </table>
490
491 <table id="tab-keys-nav-page">
492 <title>Most common navigation keys in page-based menus</title>
493 <tgroup cols="3">
494 <thead>
495 <row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>
496 </thead>
497 <tbody>
498 <row><entry>J or &lt;Return&gt;</entry><entry><literal>&lt;next-line&gt;</literal></entry><entry>scroll down one line</entry></row>
499 <row><entry>&lt;Backspace&gt;</entry><entry><literal>&lt;previous-line&gt;</literal></entry><entry>sroll up one line</entry></row>
500 <row><entry>K, &lt;Space&gt; or &lt;PageDn&gt;</entry><entry><literal>&lt;next-page&gt;</literal></entry><entry>move to the next page</entry></row>
501 <row><entry>- or &lt;PageUp&gt;</entry><entry><literal>&lt;previous-page&gt;</literal></entry><entry>move the previous page</entry></row>
502 <row><entry>&lt;Home&gt;</entry><entry><literal>&lt;top&gt;</literal></entry><entry>move to the top</entry></row>
503 <row><entry>&lt;End&gt;</entry><entry><literal>&lt;bottom&gt;</literal></entry><entry>move to the bottom</entry></row>
504 </tbody>
505 </tgroup>
506 </table>
507
508 </sect1>
509
510 <sect1 id="editing">
511 <title>Editing Input Fields</title>
512
513 <sect2 id="editing-intro">
514 <title>Introduction</title>
515
516 <para>
517 Mutt has a built-in line editor for inputting text, e.g. email
518 addresses or filenames. The keys used to manipulate text input are
519 very similar to those of Emacs. See <xref linkend="tab-keys-editor"/> for a full
520 reference of available functions, their default key bindings, and
521 short descriptions.
522 </para>
523
524 <table id="tab-keys-editor">
525 <title>Most common line editor keys</title>
526 <tgroup cols="3">
527 <thead>
528 <row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>
529 </thead>
530 <tbody>
531 <row><entry>&circ;A or &lt;Home&gt;</entry><entry><literal>&lt;bol&gt;</literal></entry><entry>move to the start of the line</entry></row>
532 <row><entry>&circ;B or &lt;Left&gt;</entry><entry><literal>&lt;backward-char&gt;</literal></entry><entry>move back one char</entry></row>
533 <row><entry>Esc B</entry><entry><literal>&lt;backward-word&gt;</literal></entry><entry>move back one word</entry></row>
534 <row><entry>&circ;D or &lt;Delete&gt;</entry><entry><literal>&lt;delete-char&gt;</literal></entry><entry>delete the char under the cursor</entry></row>
535 <row><entry>&circ;E or &lt;End&gt;</entry><entry><literal>&lt;eol&gt;</literal></entry><entry>move to the end of the line</entry></row>
536 <row><entry>&circ;F or &lt;Right&gt;</entry><entry><literal>&lt;forward-char&gt;</literal></entry><entry>move forward one char</entry></row>
537 <row><entry>Esc F</entry><entry><literal>&lt;forward-word&gt;</literal></entry><entry>move forward one word</entry></row>
538 <row><entry>&lt;Tab&gt;</entry><entry><literal>&lt;complete&gt;</literal></entry><entry>complete filename or alias</entry></row>
539 <row><entry>&circ;T</entry><entry><literal>&lt;complete-query&gt;</literal></entry><entry>complete address with query</entry></row>
540 <row><entry>&circ;K</entry><entry><literal>&lt;kill-eol&gt;</literal></entry><entry>delete to the end of the line</entry></row>
541 <row><entry>Esc d</entry><entry><literal>&lt;kill-eow&gt;</literal></entry><entry>delete to the end of the word</entry></row>
542 <row><entry>&circ;W</entry><entry><literal>&lt;kill-word&gt;</literal></entry><entry>kill the word in front of the cursor</entry></row>
543 <row><entry>&circ;U</entry><entry><literal>&lt;kill-line&gt;</literal></entry><entry>delete entire line</entry></row>
544 <row><entry>&circ;V</entry><entry><literal>&lt;quote-char&gt;</literal></entry><entry>quote the next typed key</entry></row>
545 <row><entry>&lt;Up&gt;</entry><entry><literal>&lt;history-up&gt;</literal></entry><entry>recall previous string from history</entry></row>
546 <row><entry>&lt;Down&gt;</entry><entry><literal>&lt;history-down&gt;</literal></entry><entry>recall next string from history</entry></row>
547 <row><entry>&lt;BackSpace&gt;</entry><entry><literal>&lt;backspace&gt;</literal></entry><entry>kill the char in front of the cursor</entry></row>
548 <row><entry>Esc u</entry><entry><literal>&lt;upcase-word&gt;</literal></entry><entry>convert word to upper case</entry></row>
549 <row><entry>Esc l</entry><entry><literal>&lt;downcase-word&gt;</literal></entry><entry>convert word to lower case</entry></row>
550 <row><entry>Esc c</entry><entry><literal>&lt;capitalize-word&gt;</literal></entry><entry>capitalize the word</entry></row>
551 <row><entry>&circ;G</entry><entry>n/a</entry><entry>abort</entry></row>
552 <row><entry>&lt;Return&gt;</entry><entry>n/a</entry><entry>finish editing</entry></row>
553 </tbody>
554 </tgroup>
555 </table>
556
557 <para>
558 You can remap the <emphasis>editor</emphasis> functions using the
559 <link linkend="bind"><command>bind</command></link> command.  For example, to make
560 the &lt;Delete&gt; key delete the character in front of
561 the cursor rather than under, you could use:
562 </para>
563
564 <screen>
565 bind editor &lt;delete&gt; backspace
566 </screen>
567
568 </sect2>
569
570 <sect2 id="editing-history">
571 <title>History</title>
572
573 <para>
574 Mutt maintains a history for the built-in editor.  The number of items
575 is controlled by the <link linkend="history">&dollar;history</link>
576 variable and can be made persistent using an external file specified
577 using <link linkend="history-file">&dollar;history&lowbar;file</link>.
578 You may cycle through them at an editor prompt by using the
579 <literal>&lt;history-up&gt;</literal> and/or
580 <literal>&lt;history-down&gt;</literal> commands. But notice that Mutt
581 does not remember the currently entered text, it only cycles through
582 history and wraps around at the end or beginning.
583 </para>
584
585 <para>
586 Mutt maintains several distinct history lists, one for each of the
587 following categories:
588 </para>
589
590 <itemizedlist>
591 <listitem><para><literal>.muttrc</literal> commands</para></listitem>
592 <listitem><para>addresses and aliases</para></listitem>
593 <listitem><para>shell commands</para></listitem>
594 <listitem><para>filenames</para></listitem>
595 <listitem><para>patterns</para></listitem>
596 <listitem><para>everything else</para></listitem>
597 </itemizedlist>
598
599 <para>
600 Mutt automatically filters out consecutively repeated items from the history. It
601 also mimics the behavior of some shells by ignoring items starting
602 with a space. The latter feature can be useful in macros to not clobber
603 the history's valuable entries with unwanted entries.
604 </para>
605
606 </sect2>
607
608 </sect1>
609
610 <sect1 id="reading">
611 <title>Reading Mail</title>
612
613 <para>
614 Similar to many other mail clients, there are two modes in which mail is
615 read in Mutt.  The first is a list of messages in the mailbox, which is
616 called the <quote>index</quote> menu in Mutt.  The second mode is the display of the
617 message contents.  This is called the <quote>pager.</quote>
618 </para>
619
620 <para>
621 The next few sections describe the functions provided in each of these
622 modes.
623 </para>
624
625 <sect2 id="index-menu">
626 <title>The Message Index</title>
627
628 <para>
629 Common keys used to navigate through and manage messages in the index
630 are shown in <xref linkend="tab-key-index"/>. How messages are presented
631 in the index menu can be customized using the
632 <link linkend="index-format">&dollar;index&lowbar;format</link> variable.
633 </para>
634
635 <table id="tab-key-index">
636 <title>Most common message index keys</title>
637 <tgroup cols="2">
638 <thead>
639 <row><entry>Key</entry><entry>Description</entry></row>
640 </thead>
641 <tbody>
642 <row><entry>c</entry><entry>change to a different mailbox</entry></row>
643 <row><entry>Esc c</entry><entry>change to a folder in read-only mode</entry></row>
644 <row><entry>C</entry><entry>copy the current message to another mailbox</entry></row>
645 <row><entry>Esc C</entry><entry>decode a message and copy it to a folder</entry></row>
646 <row><entry>Esc s</entry><entry>decode a message and save it to a folder</entry></row>
647 <row><entry>D</entry><entry>delete messages matching a pattern</entry></row>
648 <row><entry>d</entry><entry>delete the current message</entry></row>
649 <row><entry>F</entry><entry>mark as important</entry></row>
650 <row><entry>l</entry><entry>show messages matching a pattern</entry></row>
651 <row><entry>N</entry><entry>mark message as new</entry></row>
652 <row><entry>o</entry><entry>change the current sort method</entry></row>
653 <row><entry>O</entry><entry>reverse sort the mailbox</entry></row>
654 <row><entry>q</entry><entry>save changes and exit</entry></row>
655 <row><entry>s</entry><entry>save-message</entry></row>
656 <row><entry>T</entry><entry>tag messages matching a pattern</entry></row>
657 <row><entry>t</entry><entry>toggle the tag on a message</entry></row>
658 <row><entry>Esc t</entry><entry>toggle tag on entire message thread</entry></row>
659 <row><entry>U</entry><entry>undelete messages matching a pattern</entry></row>
660 <row><entry>u</entry><entry>undelete-message</entry></row>
661 <row><entry>v</entry><entry>view-attachments</entry></row>
662 <row><entry>x</entry><entry>abort changes and exit</entry></row>
663 <row><entry>&lt;Return&gt;</entry><entry>display-message</entry></row>
664 <row><entry>&lt;Tab&gt;</entry><entry>jump to the next new or unread message</entry></row>
665 <row><entry>@</entry><entry>show the author's full e-mail address</entry></row>
666 <row><entry>$</entry><entry>save changes to mailbox</entry></row>
667 <row><entry>/</entry><entry>search</entry></row>
668 <row><entry>Esc /</entry><entry>search-reverse</entry></row>
669 <row><entry>&circ;L</entry><entry>clear and redraw the screen</entry></row>
670 <row><entry>&circ;T</entry><entry>untag messages matching a pattern</entry></row>
671 </tbody>
672 </tgroup>
673 </table>
674
675 <para>
676 In addition to who sent the message and the subject, a short summary of
677 the disposition of each message is printed beside the message number.
678 Zero or more of the <quote>flags</quote> in <xref linkend="tab-msg-status-flags"/>
679 may appear, some of which can be turned on or off using these functions:
680 <literal>&lt;set-flag&gt;</literal> and
681 <literal>&lt;clear-flag&gt;</literal>
682 bound by default to <quote>w</quote> and <quote>W</quote> respectively.
683 </para>
684
685 <para>
686 Furthermore, the flags in <xref linkend="tab-msg-recip-flags"/> reflect
687 who the message is addressed to. They can be customized with the
688 <link linkend="to-chars">&dollar;to&lowbar;chars</link> variable.
689 </para>
690
691 <table id="tab-msg-status-flags">
692 <title>Message status flags</title>
693 <tgroup cols="2">
694 <thead>
695 <row><entry>Flag</entry><entry>Description</entry></row>
696 </thead>
697 <tbody>
698 <row><entry>D</entry><entry>message is deleted (is marked for deletion)</entry></row>
699 <row><entry>d</entry><entry>message has attachments marked for deletion</entry></row>
700 <row><entry>K</entry><entry>contains a PGP public key</entry></row>
701 <row><entry>N</entry><entry>message is new</entry></row>
702 <row><entry>O</entry><entry>message is old</entry></row>
703 <row><entry>P</entry><entry>message is PGP encrypted</entry></row>
704 <row><entry>r</entry><entry>message has been replied to</entry></row>
705 <row><entry>S</entry><entry>message is signed, and the signature is successfully verified</entry></row>
706 <row><entry>s</entry><entry>message is signed</entry></row>
707 <row><entry>!</entry><entry>message is flagged</entry></row>
708 <row><entry>*</entry><entry>message is tagged</entry></row>
709 </tbody>
710 </tgroup>
711 </table>
712
713 <table id="tab-msg-recip-flags">
714 <title>Message recipient flags</title>
715 <tgroup cols="2">
716 <thead>
717 <row><entry>Flag</entry><entry>Description</entry></row>
718 </thead>
719 <tbody>
720 <row><entry>+</entry><entry>message is to you and you only</entry></row>
721 <row><entry>T</entry><entry>message is to you, but also to or cc'ed to others</entry></row>
722 <row><entry>C</entry><entry>message is cc'ed to you</entry></row>
723 <row><entry>F</entry><entry>message is from you</entry></row>
724 <row><entry>L</entry><entry>message is sent to a subscribed mailing list</entry></row>
725 </tbody>
726 </tgroup>
727 </table>
728
729 </sect2>
730
731 <sect2 id="pager-menu">
732 <title>The Pager</title>
733
734 <para>
735 By default, Mutt uses its builtin pager to display the contents of
736 messages (an external pager such as <literal>less(1)</literal> can be
737 configured, see <link linkend="pager">&dollar;pager</link> variable).
738 The pager is very similar to the Unix program <literal>less(1)</literal>
739 though not nearly as featureful.
740 </para>
741
742 <table id="tab-key-pager">
743 <title>Most common pager keys</title>
744 <tgroup cols="2">
745 <thead>
746 <row><entry>Key</entry><entry>Description</entry></row>
747 </thead>
748 <tbody>
749 <row><entry>&lt;Return&gt;</entry><entry>go down one line</entry></row>
750 <row><entry>&lt;Space&gt;</entry><entry>display the next page (or next message if at the end of a message)</entry></row>
751 <row><entry>-</entry><entry>go back to the previous page</entry></row>
752 <row><entry>n</entry><entry>search for next match</entry></row>
753 <row><entry>S</entry><entry>skip beyond quoted text</entry></row>
754 <row><entry>T</entry><entry>toggle display of quoted text</entry></row>
755 <row><entry>?</entry><entry>show keybindings</entry></row>
756 <row><entry>/</entry><entry>regular expression search</entry></row>
757 <row><entry>Esc /</entry><entry>backward regular expression search</entry></row>
758 <row><entry>&bsol;</entry><entry>toggle highlighting of search matches</entry></row>
759 <row><entry>&circ;</entry><entry>jump to the top of the message</entry></row>
760 </tbody>
761 </tgroup>
762 </table>
763
764 <para>
765 In addition to key bindings in <xref linkend="tab-key-pager"/>,
766 many of the functions from the index menu are also available in
767 the pager, such as <literal>&lt;delete-message&gt;</literal> or <literal>&lt;copy-message&gt;</literal>
768 (this is one advantage over using an external pager to view messages).
769 </para>
770
771 <para>
772 Also, the internal pager supports a couple other advanced features. For
773 one, it will accept and translate the <quote>standard</quote> nroff sequences for
774 bold and underline. These sequences are a series of either the letter,
775 backspace (<quote>&circ;H</quote>), the letter again for bold or the letter, backspace,
776 <quote>&lowbar;</quote> for denoting underline. Mutt will attempt to display these
777 in bold and underline respectively if your terminal supports them. If
778 not, you can use the bold and underline <link linkend="color">color</link>
779 objects to specify a <command>color</command> or mono attribute for them.
780 </para>
781
782 <para>
783 Additionally, the internal pager supports the ANSI escape sequences for
784 character attributes.  Mutt translates them into the correct color and
785 character settings.  The sequences Mutt supports are:
786 </para>
787
788 <screen>
789 &bsol;e&lsqb;<emphasis>Ps</emphasis>;<emphasis>Ps</emphasis>;..<emphasis>Ps</emphasis>;m
790 </screen>
791
792 <para>
793 where <emphasis>Ps</emphasis> can be one of the codes shown in
794 <xref linkend="tab-ansi-esc"/>.
795 </para>
796
797 <table id="tab-ansi-esc">
798 <title>ANSI escape sequences</title>
799 <tgroup cols="2">
800 <thead>
801 <row><entry>Escape code</entry><entry>Description</entry></row>
802 </thead>
803 <tbody>
804 <row><entry>0</entry><entry>All attributes off</entry></row>
805 <row><entry>1</entry><entry>Bold on</entry></row>
806 <row><entry>4</entry><entry>Underline on</entry></row>
807 <row><entry>5</entry><entry>Blink on</entry></row>
808 <row><entry>7</entry><entry>Reverse video on</entry></row>
809 <row><entry>3<emphasis>&lt;color&gt;</emphasis></entry><entry>Foreground color is <emphasis>&lt;color&gt;</emphasis> (see <xref linkend="tab-color"/>)</entry></row>
810 <row><entry>4<emphasis>&lt;color&gt;</emphasis></entry><entry>Background color is <emphasis>&lt;color&gt;</emphasis> (see <xref linkend="tab-color"/>)</entry></row>
811 </tbody>
812 </tgroup>
813 </table>
814
815 <table id="tab-color">
816 <title>Color sequences</title>
817 <tgroup cols="2">
818 <thead>
819 <row><entry>Color code</entry><entry>Color</entry></row>
820 </thead>
821 <tbody>
822 <row><entry>0</entry><entry>Black</entry></row>
823 <row><entry>1</entry><entry>Red</entry></row>
824 <row><entry>2</entry><entry>Green</entry></row>
825 <row><entry>3</entry><entry>Yellow</entry></row>
826 <row><entry>4</entry><entry>Blue</entry></row>
827 <row><entry>5</entry><entry>Magenta</entry></row>
828 <row><entry>6</entry><entry>Cyan</entry></row>
829 <row><entry>7</entry><entry>White</entry></row>
830 </tbody>
831 </tgroup>
832 </table>
833
834 <para>
835 Mutt uses these attributes for handling <literal>text/enriched</literal>
836 messages, and they can also be used by an external
837 <link linkend="auto-view">autoview</link> script for highlighting
838 purposes.
839 </para>
840
841 <note>
842 <para>
843 If you change the colors for your
844 display, for example by changing the color associated with color2 for
845 your xterm, then that color will be used instead of green.
846 </para>
847 </note>
848
849 <note>
850 <para>
851 Note that the search commands in the pager take regular expressions,
852 which are not quite the same as the more
853 complex <link linkend="patterns">patterns</link> used by the search
854 command in the index. This is because patterns are used to select messages by
855 criteria whereas the pager already displays a selected message.
856 </para>
857 </note>
858
859 </sect2>
860
861 <sect2 id="threads">
862 <title>Threaded Mode</title>
863
864 <para>
865 So-called <quote>threads</quote> provide a hierarchy of messages where
866 replies are linked to their parent message(s). This organizational form
867 is extremely useful in mailing lists where different parts of the
868 discussion diverge. Mutt displays threads as a tree structure.
869 </para>
870
871 <para>
872 In Mutt, when a mailbox is <link linkend="sort">sorted</link>
873 by <emphasis>threads</emphasis>, there are a few additional functions
874 available in the <emphasis>index</emphasis>
875 and <emphasis>pager</emphasis> modes as shown in
876 <xref linkend="tab-key-threads"/>.
877 </para>
878
879 <table id="tab-key-threads">
880 <title>Most common thread mode keys</title>
881 <tgroup cols="3">
882 <thead>
883 <row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>
884 </thead>
885 <tbody>
886 <row><entry>&circ;D</entry><entry><literal>&lt;delete-thread&gt;</literal></entry><entry>delete all messages in the current thread</entry></row>
887 <row><entry>&circ;U</entry><entry><literal>&lt;undelete-thread&gt;</literal></entry><entry>undelete all messages in the current thread</entry></row>
888 <row><entry>&circ;N</entry><entry><literal>&lt;next-thread&gt;</literal></entry><entry>jump to the start of the next thread</entry></row>
889 <row><entry>&circ;P</entry><entry><literal>&lt;previous-thread&gt;</literal></entry><entry>jump to the start of the previous thread</entry></row>
890 <row><entry>&circ;R</entry><entry><literal>&lt;read-thread&gt;</literal></entry><entry>mark the current thread as read</entry></row>
891 <row><entry>Esc d</entry><entry><literal>&lt;delete-subthread&gt;</literal></entry><entry>delete all messages in the current subthread</entry></row>
892 <row><entry>Esc u</entry><entry><literal>&lt;undelete-subthread&gt;</literal></entry><entry>undelete all messages in the current subthread</entry></row>
893 <row><entry>Esc n</entry><entry><literal>&lt;next-subthread&gt;</literal></entry><entry>jump to the start of the next subthread</entry></row>
894 <row><entry>Esc p</entry><entry><literal>&lt;previous-subthread&gt;</literal></entry><entry>jump to the start of the previous subthread</entry></row>
895 <row><entry>Esc r</entry><entry><literal>&lt;read-subthread&gt;</literal></entry><entry>mark the current subthread as read</entry></row>
896 <row><entry>Esc t</entry><entry><literal>&lt;tag-thread&gt;</literal></entry><entry>toggle the tag on the current thread</entry></row>
897 <row><entry>Esc v</entry><entry><literal>&lt;collapse-thread&gt;</literal></entry><entry>toggle collapse for the current thread</entry></row>
898 <row><entry>Esc V</entry><entry><literal>&lt;collapse-all&gt;</literal></entry><entry>toggle collapse for all threads</entry></row>
899 <row><entry>P</entry><entry><literal>&lt;parent-message&gt;</literal></entry><entry>jump to parent message in thread</entry></row>
900 </tbody>
901 </tgroup>
902 </table>
903
904 <para>
905 Collapsing a thread displays only the first message
906 in the thread and hides the others. This is useful when threads
907 contain so many messages that you can only see a handful of threads on
908 the screen. See &percnt;M in <link linkend="index-format">&dollar;index&lowbar;format</link>.
909 For example, you could use <quote>&percnt;?M?(&num;&percnt;03M)&amp;(&percnt;4l)?</quote> in <link linkend="index-format">&dollar;index&lowbar;format</link> to optionally
910 display the number of hidden messages if the thread is
911 collapsed. The <literal>&percnt;?&lt;char&gt;?&lt;if-part&gt;&amp;&lt;else-part&gt;?</literal>
912 syntax is explained in detail in
913 <link linkend="formatstrings-conditionals">format string conditionals</link>.
914 </para>
915
916 <para>
917 Technically, every reply should contain a list of its parent messages in
918 the thread tree, but not all do. In these cases, Mutt groups them by
919 subject which can be controlled using the
920 <link linkend="strict-threads">&dollar;strict&lowbar;threads</link> variable.
921 </para>
922
923 </sect2>
924
925 <sect2 id="reading-misc">
926 <title>Miscellaneous Functions</title>
927
928 <para>
929 In addition, the <emphasis>index</emphasis> and <emphasis>pager</emphasis>
930 menus have these interesting functions:
931 </para>
932
933 <variablelist>
934
935 <varlistentry>
936 <term>
937 <literal>&lt;create-alias&gt;</literal><anchor id="create-alias"/> (default: a)
938 </term>
939 <listitem>
940 <para>
941 Creates a new alias based upon the current message (or prompts for a
942 new one).  Once editing is complete, an <link linkend="alias"><command>alias</command></link>
943 command is added to the file specified by
944 the <link linkend="alias-file">&dollar;alias&lowbar;file</link> variable
945 for future use
946 </para>
947
948 <note>
949 <para>
950 Mutt does not read the <link linkend="alias-file">&dollar;alias&lowbar;file</link>
951 upon startup so you must explicitly <link linkend="source"><command>source</command></link> the file.
952 </para>
953 </note>
954 </listitem>
955 </varlistentry>
956
957 <varlistentry>
958 <term>
959 <literal>&lt;check-traditional-pgp&gt;</literal><anchor id="check-traditional-pgp"/> (default: Esc P)
960 </term>
961 <listitem>
962 <para>
963 This function will search the current message for content signed or
964 encrypted with PGP the <quote>traditional</quote> way, that is, without proper
965 MIME tagging.  Technically, this function will temporarily change
966 the MIME content types of the body parts containing PGP data; this
967 is similar to the <link linkend="edit-type"><literal>&lt;edit-type&gt;</literal></link> function's
968 effect.
969 </para>
970 </listitem>
971 </varlistentry>
972
973 <varlistentry>
974 <term>
975 <literal>&lt;edit&gt;</literal><anchor id="edit"/> (default: e)
976 </term>
977 <listitem>
978 <para>
979 This command (available in the index and pager) allows you to
980 edit the raw current message as it's present in the mail folder.
981 After you have finished editing, the changed message will be
982 appended to the current folder, and the original message will be
983 marked for deletion; if the message is unchanged it won't be replaced.
984 </para>
985 </listitem>
986 </varlistentry>
987
988 <varlistentry>
989 <term>
990 <literal>&lt;edit-type&gt;</literal><anchor id="edit-type"/> (default:
991 &circ;E on the attachment menu, and in the pager and index menus;
992 &circ;T on the compose menu)
993 </term>
994 <listitem>
995 <para>
996 This command is used to temporarily edit an attachment's content
997 type to fix, for instance, bogus character set parameters.  When
998 invoked from the index or from the pager, you'll have the
999 opportunity to edit the top-level attachment's content type.  On the
1000 <link linkend="attach-menu">attachment menu</link>, you can change any
1001 attachment's content type. These changes are not persistent, and get
1002 lost upon changing folders.
1003 </para>
1004
1005 <para>
1006 Note that this command is also available on the <link linkend="compose-menu">compose
1007 menu</link>.  There, it's used to fine-tune the properties of attachments you are going
1008 to send.
1009 </para>
1010 </listitem>
1011 </varlistentry>
1012
1013 <varlistentry>
1014 <term>
1015 <literal>&lt;enter-command&gt;</literal><anchor id="enter-command"/> (default: <quote>:</quote>)
1016 </term>
1017 <listitem>
1018 <para>
1019 This command is used to execute any command you would normally put in a
1020 configuration file.  A common use is to check the settings of variables, or
1021 in conjunction with <link linkend="macro">macros</link> to change settings on the
1022 fly.
1023 </para>
1024 </listitem>
1025 </varlistentry>
1026
1027 <varlistentry>
1028 <term>
1029 <literal>&lt;extract-keys&gt;</literal><anchor id="extract-keys"/> (default: &circ;K)
1030 </term>
1031 <listitem>
1032 <para>
1033 This command extracts PGP public keys from the current or tagged
1034 message(s) and adds them to your PGP public key ring.
1035 </para>
1036 </listitem>
1037 </varlistentry>
1038
1039 <varlistentry>
1040 <term>
1041 <literal>&lt;forget-passphrase&gt;</literal><anchor id="forget-passphrase"/> (default:
1042 &circ;F)
1043 </term>
1044 <listitem>
1045 <para>
1046 This command wipes the passphrase(s) from memory. It is useful, if
1047 you misspelled the passphrase.
1048 </para>
1049 </listitem>
1050 </varlistentry>
1051
1052 <varlistentry>
1053 <term>
1054 <literal>&lt;list-reply&gt;</literal><anchor id="list-reply"/> (default: L)
1055 </term>
1056 <listitem>
1057 <para>
1058 Reply to the current or tagged message(s) by extracting any addresses which
1059 match the regular expressions given by the <link linkend="lists"><command>lists</command> or <command>subscribe</command></link>
1060 commands, but also honor any <literal>Mail-Followup-To</literal> header(s) if the
1061 <link linkend="honor-followup-to">&dollar;honor&lowbar;followup&lowbar;to</link>
1062 configuration variable is set.  Using this when replying to messages posted
1063 to mailing lists helps avoid duplicate copies being sent to the author of
1064 the message you are replying to.
1065 </para>
1066 </listitem>
1067 </varlistentry>
1068
1069 <varlistentry>
1070 <term>
1071 <literal>&lt;pipe-message&gt;</literal><anchor id="pipe-message"/> (default: &verbar;)
1072 </term>
1073 <listitem>
1074 <para>
1075 Asks for an external Unix command and pipes the current or
1076 tagged message(s) to it.  The variables <link linkend="pipe-decode">&dollar;pipe&lowbar;decode</link>, <link linkend="pipe-split">&dollar;pipe&lowbar;split</link>,
1077 <link linkend="pipe-sep">&dollar;pipe&lowbar;sep</link> and <link linkend="wait-key">&dollar;wait&lowbar;key</link> control the exact behavior of this function.
1078 </para>
1079 </listitem>
1080 </varlistentry>
1081
1082 <varlistentry>
1083 <term>
1084 <literal>&lt;resend-message&gt;</literal><anchor id="resend-message"/> (default: Esc e)
1085 </term>
1086 <listitem>
1087 <para>
1088 Mutt takes the current message as a template for a
1089 new message.  This function is best described as "recall from arbitrary
1090 folders".  It can conveniently be used to forward MIME messages while
1091 preserving the original mail structure. Note that the amount of headers
1092 included here depends on the value of the <link linkend="weed">&dollar;weed</link>
1093 variable.
1094 </para>
1095
1096 <para>
1097 This function is also available from the attachment menu. You can use this
1098 to easily resend a message which was included with a bounce message
1099 as a <literal>message/rfc822</literal> body part.
1100 </para>
1101 </listitem>
1102 </varlistentry>
1103
1104 <varlistentry>
1105 <term>
1106 <literal>&lt;shell-escape&gt;</literal><anchor id="shell-escape"/> (default: !)
1107 </term>
1108 <listitem>
1109 <para>
1110 Asks for an external Unix command and executes it.  The <link linkend="wait-key">&dollar;wait&lowbar;key</link> can be used to control
1111 whether Mutt will wait for a key to be pressed when the command returns
1112 (presumably to let the user read the output of the command), based on
1113 the return status of the named command. If no command is given, an
1114 interactive shell is executed.
1115 </para>
1116 </listitem>
1117 </varlistentry>
1118
1119 <varlistentry>
1120 <term>
1121 <literal>&lt;toggle-quoted&gt;</literal><anchor id="toggle-quoted"/> (default: T)
1122 </term>
1123 <listitem>
1124 <para>
1125 The pager uses the <link linkend="quote-regexp">&dollar;quote&lowbar;regexp</link> variable to detect quoted text when
1126 displaying the body of the message.  This function toggles the display
1127 of the quoted material in the message.  It is particularly useful when
1128 being interested in just the response and there is a large amount of
1129 quoted text in the way.
1130 </para>
1131 </listitem>
1132 </varlistentry>
1133
1134 <varlistentry>
1135 <term>
1136 <literal>&lt;skip-quoted&gt;</literal><anchor id="skip-quoted"/> (default: S)
1137 </term>
1138 <listitem>
1139 <para>
1140 This function will go to the next line of non-quoted text which comes
1141 after a line of quoted text in the internal pager.
1142 </para>
1143 </listitem>
1144 </varlistentry>
1145
1146 </variablelist>
1147
1148 </sect2>
1149
1150 </sect1>
1151
1152 <sect1 id="sending">
1153 <title>Sending Mail</title>
1154
1155 <sect2 id="sending-intro">
1156 <title>Introduction</title>
1157
1158 <para>
1159 The bindings shown in <xref linkend="tab-key-send"/> are available in the
1160 <emphasis>index</emphasis> and <emphasis>pager</emphasis> to start a new message.
1161 </para>
1162
1163 <table id="tab-key-send">
1164 <title>Most common mail sending keys</title>
1165 <tgroup cols="3">
1166 <thead>
1167 <row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>
1168 </thead>
1169 <tbody>
1170 <row><entry>m</entry><entry><literal>&lt;compose&gt;</literal></entry><entry>compose a new message</entry></row>
1171 <row><entry>r</entry><entry><literal>&lt;reply&gt;</literal></entry><entry>reply to sender</entry></row>
1172 <row><entry>g</entry><entry><literal>&lt;group-reply&gt;</literal></entry><entry>reply to all recipients</entry></row>
1173 <row><entry>L</entry><entry><literal>&lt;list-reply&gt;</literal></entry><entry>reply to mailing list address</entry></row>
1174 <row><entry>f</entry><entry><literal>&lt;forward&gt;</literal></entry><entry>forward message</entry></row>
1175 <row><entry>b</entry><entry><literal>&lt;bounce&gt;</literal></entry><entry>bounce (remail) message</entry></row>
1176 <row><entry>Esc k</entry><entry><literal>&lt;mail-key&gt;</literal></entry><entry>mail a PGP public key to someone</entry></row>
1177 </tbody>
1178 </tgroup>
1179 </table>
1180
1181 <para>
1182 <emphasis>Bouncing</emphasis> a message sends the message as-is to the recipient you
1183 specify.  <emphasis>Forwarding</emphasis> a message allows you to add comments or
1184 modify the message you are forwarding.  These items are discussed
1185 in greater detail in the next section <quote><link linkend="forwarding-mail">Forwarding
1186 and Bouncing Mail</link>.</quote>
1187 </para>
1188
1189 <para>
1190 Mutt will then enter the <emphasis>compose</emphasis> menu and prompt you for the
1191 recipients to place on the <quote>To:</quote> header field when you hit <literal>m</literal> to start a new message. Next, it will ask
1192 you for the <quote>Subject:</quote> field for the message, providing a default if
1193 you are replying to or forwarding a message. You again
1194 have the chance to adjust recipients, subject, and security settings
1195 right before actually sending the message. See also
1196 <link linkend="askcc">&dollar;askcc</link>,
1197 <link linkend="askbcc">&dollar;askbcc</link>,
1198 <link linkend="autoedit">&dollar;autoedit</link>,
1199 <link linkend="bounce">&dollar;bounce</link>,
1200 <link linkend="fast-reply">&dollar;fast&lowbar;reply</link>,
1201 and <link linkend="include">&dollar;include</link>
1202 for changing how and if Mutt asks these questions.
1203 </para>
1204
1205 <para>
1206 When replying, Mutt fills these fields with proper values depending on
1207 the reply type.  The types of replying supported are:
1208 </para>
1209
1210 <variablelist>
1211 <varlistentry>
1212 <term>Simple reply</term>
1213 <listitem>
1214 <para>
1215 Reply to the author directly.
1216 </para>
1217 </listitem>
1218 </varlistentry>
1219 <varlistentry>
1220 <term>Group reply</term>
1221 <listitem>
1222 <para>
1223 Reply to the author as well to all recipients except you; this consults
1224 <link linkend="alternates"><command>alternates</command></link>.
1225 </para>
1226 </listitem>
1227 </varlistentry>
1228 <varlistentry>
1229 <term>List reply</term>
1230 <listitem>
1231 <para>
1232 Reply to all mailing list addresses found, either specified via
1233 configuration or auto-detected.  See <xref linkend="lists"/> for
1234 details.
1235 </para>
1236 </listitem>
1237 </varlistentry>
1238 </variablelist>
1239
1240 <para>
1241 After getting recipients for new messages, forwards or replies, Mutt
1242 will then automatically start your <link
1243 linkend="editor">&dollar;editor</link> on the message body. If the <link
1244 linkend="edit-headers">&dollar;edit&lowbar;headers</link> variable is
1245 set, the headers will be at the top of the message in your editor.  Any
1246 messages you are replying to will be added in sort order to the message,
1247 with appropriate <link linkend="attribution">&dollar;attribution</link>,
1248 <link linkend="indent-string">&dollar;indent&lowbar;string</link> and
1249 <link
1250 linkend="post-indent-string">&dollar;post&lowbar;indent&lowbar;string</link>.
1251 When forwarding a message, if the <link
1252 linkend="mime-forward">&dollar;mime&lowbar;forward</link> variable is
1253 unset, a copy of the forwarded message will be included.  If you have
1254 specified a <link linkend="signature">&dollar;signature</link>, it will
1255 be appended to the message.
1256 </para>
1257
1258 <para>
1259 Once you have finished editing the body of your mail message, you are
1260 returned to the <emphasis>compose</emphasis> menu providing the functions
1261 shown in <xref linkend="tab-func-compose"/> to modify, send or postpone the
1262 message.
1263 </para>
1264
1265 <table id="tab-func-compose">
1266 <title>Most common compose menu keys</title>
1267 <tgroup cols="3">
1268 <thead>
1269 <row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>
1270 </thead>
1271 <tbody>
1272 <row><entry>a</entry><entry><literal>&lt;attach-file&gt;</literal></entry><entry>attach a file</entry></row>
1273 <row><entry>A</entry><entry><literal>&lt;attach-message&gt;</literal></entry><entry>attach message(s) to the message</entry></row>
1274 <row><entry>Esc k</entry><entry><literal>&lt;attach-key&gt;</literal></entry><entry>attach a PGP public key</entry></row>
1275 <row><entry>d</entry><entry><literal>&lt;edit-description&gt;</literal></entry><entry>edit description on attachment</entry></row>
1276 <row><entry>D</entry><entry><literal>&lt;detach-file&gt;</literal></entry><entry>detach a file</entry></row>
1277 <row><entry>t</entry><entry><literal>&lt;edit-to&gt;</literal></entry><entry>edit the To field</entry></row>
1278 <row><entry>Esc f</entry><entry><literal>&lt;edit-from&gt;</literal></entry><entry>edit the From field</entry></row>
1279 <row><entry>r</entry><entry><literal>&lt;edit-reply-to&gt;</literal></entry><entry>edit the Reply-To field</entry></row>
1280 <row><entry>c</entry><entry><literal>&lt;edit-cc&gt;</literal></entry><entry>edit the Cc field</entry></row>
1281 <row><entry>b</entry><entry><literal>&lt;edit-bcc&gt;</literal></entry><entry>edit the Bcc field</entry></row>
1282 <row><entry>y</entry><entry><literal>&lt;send-message&gt;</literal></entry><entry>send the message</entry></row>
1283 <row><entry>s</entry><entry><literal>&lt;edit-subject&gt;</literal></entry><entry>edit the Subject</entry></row>
1284 <row><entry>S</entry><entry><literal>&lt;smime-menu&gt;</literal></entry><entry>select S/MIME options</entry></row>
1285 <row><entry>f</entry><entry><literal>&lt;edit-fcc&gt;</literal></entry><entry>specify an <quote>Fcc</quote> mailbox</entry></row>
1286 <row><entry>p</entry><entry><literal>&lt;pgp-menu&gt;</literal></entry><entry>select PGP options</entry></row>
1287 <row><entry>P</entry><entry><literal>&lt;postpone-message&gt;</literal></entry><entry>postpone this message until later</entry></row>
1288 <row><entry>q</entry><entry><literal>&lt;quit&gt;</literal></entry><entry>quit (abort) sending the message</entry></row>
1289 <row><entry>w</entry><entry><literal>&lt;write-fcc&gt;</literal></entry><entry>write the message to a folder</entry></row>
1290 <row><entry>i</entry><entry><literal>&lt;ispell&gt;</literal></entry><entry>check spelling (if available on your system)</entry></row>
1291 <row><entry>&circ;F</entry><entry><literal>&lt;forget-passphrase&gt;</literal></entry><entry>wipe passphrase(s) from memory</entry></row>
1292 </tbody>
1293 </tgroup>
1294 </table>
1295
1296 <para>
1297 The compose menu is also used to edit the attachments for a message which can be either files
1298 or other messages. The <literal>&lt;attach-message&gt;</literal> function to will prompt you for a folder to
1299 attach messages from. You can now tag messages in that folder and they
1300 will be attached to the message you are sending.
1301 </para>
1302
1303 <note>
1304 <para>
1305 Note that certain
1306 operations like composing a new mail, replying, forwarding, etc. are
1307 not permitted when you are in that folder. The &percnt;r in
1308 <link linkend="status-format">&dollar;status&lowbar;format</link> will change to
1309 a <quote>A</quote> to indicate that you are in attach-message mode.
1310 </para>
1311 </note>
1312
1313 </sect2>
1314
1315 <sect2 id="edit-header">
1316 <title>Editing the Message Header</title>
1317
1318 <para>
1319 When editing the header because of <link linkend="edit-headers">&dollar;edit&lowbar;headers</link>
1320 being set, there are a several pseudo headers available which
1321 will not be included in sent messages but trigger special Mutt behavior.
1322 </para>
1323
1324 <sect3 id="fcc-header">
1325 <title>Fcc: Pseudo Header</title>
1326
1327 <para>
1328 If you specify
1329 </para>
1330
1331 <para>
1332 <literal>Fcc:</literal> <emphasis>filename</emphasis>
1333 </para>
1334
1335 <para>
1336 as a header, Mutt will pick up <emphasis>filename</emphasis>
1337 just as if you had used the <literal>&lt;edit-fcc&gt;</literal> function in the <emphasis>compose</emphasis> menu.
1338 It can later be changed from the compose menu.
1339 </para>
1340
1341 </sect3>
1342
1343 <sect3 id="attach-header">
1344 <title>Attach: Pseudo Header</title>
1345
1346 <para>
1347 You can also attach files to your message by specifying
1348 </para>
1349
1350 <para>
1351 <literal>Attach:</literal> <emphasis>filename</emphasis>
1352 &lsqb; <emphasis>description</emphasis> &rsqb;
1353 </para>
1354
1355 <para>
1356 where <emphasis>filename</emphasis> is the file to attach and <emphasis>description</emphasis> is an
1357 optional string to use as the description of the attached file. Spaces
1358 in filenames have to be escaped using backslash (<quote>&bsol;</quote>).
1359 The file can be removed as well as more added from the compose menu.
1360 </para>
1361
1362 </sect3>
1363
1364 <sect3 id="pgp-header">
1365 <title>Pgp: Pseudo Header</title>
1366
1367 <para>
1368 If you want to use PGP, you can specify
1369 </para>
1370
1371 <para>
1372 <literal>Pgp:</literal> &lsqb; <literal>E</literal> &verbar; <literal>S</literal> &verbar; <literal>S</literal><emphasis>&lt;id&gt;</emphasis> &rsqb;
1373
1374 </para>
1375
1376 <para>
1377 <quote>E</quote> selects encryption, <quote>S</quote> selects signing and
1378 <quote>S&lt;id&gt;</quote> selects signing with the given key, setting
1379 <link linkend="pgp-sign-as">&dollar;pgp&lowbar;sign&lowbar;as</link>
1380 permanently. The selection can later be changed in the compose menu.
1381 </para>
1382
1383 </sect3>
1384
1385 <sect3 id="in-reply-to-header">
1386 <title>In-Reply-To: Header</title>
1387
1388 <para>
1389 When replying to messages, the <emphasis>In-Reply-To:</emphasis> header contains the
1390 Message-Id of the message(s) you reply to. If you remove or modify its value, Mutt will not generate a
1391 <emphasis>References:</emphasis> field, which allows you to create a new message thread, for example
1392 to create a new message to a mailing list without having to enter the mailing list's address.
1393 </para>
1394
1395 </sect3>
1396
1397 </sect2>
1398
1399 <sect2 id="sending-crypto">
1400 <title>Sending Cryptographically Signed/Encrypted Messages</title>
1401
1402 <para>
1403 If you have told Mutt to PGP or S/MIME encrypt a message, it will guide you
1404 through a key selection process when you try to send the message.
1405 Mutt will not ask you any questions about keys which have a
1406 certified user ID matching one of the message recipients' mail
1407 addresses.  However, there may be situations in which there are
1408 several keys, weakly certified user ID fields, or where no matching
1409 keys can be found.
1410 </para>
1411
1412 <para>
1413 In these cases, you are dropped into a menu with a list of keys from
1414 which you can select one.  When you quit this menu, or Mutt can't
1415 find any matching keys, you are prompted for a user ID.  You can, as
1416 usually, abort this prompt using <literal>&circ;G</literal>.  When you do so, Mutt will
1417 return to the compose screen.
1418 </para>
1419
1420 <para>
1421 Once you have successfully finished the key selection, the message
1422 will be encrypted using the selected public keys when sent out.
1423 </para>
1424
1425 <para>
1426 Most fields of the entries in the key selection menu (see also <link linkend="pgp-entry-format">&dollar;pgp&lowbar;entry&lowbar;format</link>)
1427 have obvious meanings.  But some explanations on the capabilities, flags,
1428 and validity fields are in order.
1429 </para>
1430
1431 <para>
1432 The flags sequence (<quote>&percnt;f</quote>) will expand to one of the flags in
1433 <xref linkend="tab-pgp-menuflags"/>.
1434 </para>
1435
1436 <table id="tab-pgp-menuflags">
1437 <title>PGP key menu flags</title>
1438 <tgroup cols="2">
1439 <thead>
1440 <row><entry>Flag</entry><entry>Description</entry></row>
1441 </thead>
1442 <tbody>
1443 <row><entry>R</entry><entry>The key has been revoked and can't be used.</entry></row>
1444 <row><entry>X</entry><entry>The key is expired and can't be used.</entry></row>
1445 <row><entry>d</entry><entry>You have marked the key as disabled.</entry></row>
1446 <row><entry>c</entry><entry>There are unknown critical self-signature packets.</entry></row>
1447 </tbody>
1448 </tgroup>
1449 </table>
1450
1451 <para>
1452 The capabilities field (<quote>&percnt;c</quote>) expands to a two-character sequence
1453 representing a key's capabilities.  The first character gives
1454 the key's encryption capabilities: A minus sign (<quote>-</quote>) means
1455 that the key cannot be used for encryption.  A dot (<quote>.</quote>) means that
1456 it's marked as a signature key in one of the user IDs, but may
1457 also be used for encryption.  The letter <quote>e</quote> indicates that
1458 this key can be used for encryption.
1459 </para>
1460
1461 <para>
1462 The second character indicates the key's signing capabilities.  Once
1463 again, a <quote>-</quote> implies <quote>not for signing</quote>, <quote>.</quote> implies
1464 that the key is marked as an encryption key in one of the user-ids, and
1465 <quote>s</quote> denotes a key which can be used for signing.
1466 </para>
1467
1468 <para>
1469 Finally, the validity field (<quote>&percnt;t</quote>) indicates how well-certified a user-id
1470 is.  A question mark (<quote>?</quote>) indicates undefined validity, a minus
1471 character (<quote>-</quote>) marks an untrusted association, a space character
1472 means a partially trusted association, and a plus character (<quote>+</quote>)
1473 indicates complete validity.
1474 </para>
1475
1476 </sect2>
1477
1478 <sect2 id="ff">
1479 <title>Sending Format=Flowed Messages</title>
1480
1481 <sect3 id="ff-concept">
1482 <title>Concept</title>
1483
1484 <para>
1485 <literal>format=flowed</literal>-style messages (or <literal>f=f</literal>
1486 for short) are <literal>text/plain</literal> messages that consist of paragraphs which a receiver's
1487 mail client may reformat to its own needs which mostly means to
1488 customize line lengths regardless of what the sender sent. Technically this is
1489 achieved by letting lines of a <quote>flowable</quote> paragraph end in spaces
1490 except for the last line.
1491 </para>
1492
1493 <para>
1494 While for text-mode clients like Mutt it's the best way to assume only a
1495 standard 80x25 character cell terminal, it may be desired to let the
1496 receiver decide completely how to view a message.
1497 </para>
1498
1499 </sect3>
1500
1501 <sect3 id="ff-support">
1502 <title>Mutt Support</title>
1503
1504 <para>
1505 Mutt only supports setting the required <literal>format=flowed</literal>
1506 MIME parameter on outgoing messages if the <link
1507 linkend="text-flowed">&dollar;text&lowbar;flowed</link>
1508 variable is set, specifically it does not add the
1509 trailing spaces.
1510 </para>
1511
1512 <para>
1513 After editing the initial message text and before entering
1514 the compose menu, Mutt properly space-stuffes the message.
1515 <emphasis>Space-stuffing</emphasis> is required by RfC3676 defining
1516 <literal>format=flowed</literal> and means to prepend a space to:
1517 </para>
1518
1519 <itemizedlist>
1520 <listitem><para>all lines starting with a space</para></listitem>
1521 <listitem><para>lines starting with the word <quote><literal>From</literal></quote>
1522 followed by space</para></listitem>
1523 <listitem><para>all lines starting with <quote><literal>&gt;</literal></quote> which
1524 is not intended to be a quote character</para></listitem>
1525 </itemizedlist>
1526
1527 <note>
1528 <para>
1529 Mutt only supports space-stuffing
1530 for the first two types of lines but not for the third: It is impossible to
1531 safely detect whether a leading <literal>&gt;</literal> character starts a
1532 quote or not. Furthermore, Mutt only applies space-stuffing
1533 <emphasis>once</emphasis> after the initial edit is finished.
1534 </para>
1535 </note>
1536
1537 <para>
1538 All leading spaces are to be removed by receiving clients to restore
1539 the original message prior to further processing.
1540 </para>
1541
1542 </sect3>
1543
1544 <sect3 id="ff-editor">
1545 <title>Editor Considerations</title>
1546
1547 <para>
1548 As Mutt provides no additional features to compose <literal>f=f</literal>
1549 messages, it's completely up to the user and his editor to produce
1550 proper messages. Please consider your editor's documentation if you
1551 intend to send <literal>f=f</literal> messages.
1552 </para>
1553
1554 <para>
1555 Please note that when editing messages from the compose menu several
1556 times before really sending a mail, it's up to the user to ensure that
1557 the message is properly space-stuffed.
1558 </para>
1559
1560 <para>
1561 For example, <emphasis>vim</emphasis> provides the <literal>w</literal>
1562 flag for its <literal>formatoptions</literal> setting to assist in
1563 creating <literal>f=f</literal> messages, see <literal>:help
1564 fo-table</literal> for details.
1565 </para>
1566
1567 </sect3>
1568
1569 </sect2>
1570
1571 </sect1>
1572
1573 <sect1 id="forwarding-mail">
1574 <title>Forwarding and Bouncing Mail</title>
1575
1576 <para>
1577 Bouncing and forwarding let you send an existing message to recipients
1578 that you specify. Bouncing a message sends a verbatim copy of a message
1579 to alternative addresses as if they were the message's original
1580 recipients specified in the Bcc header.
1581 Forwarding a message, on the other hand, allows you to modify the message
1582 before it is resent (for example, by adding your own comments). Bouncing
1583 is done using the <literal>&lt;bounce&gt;</literal> function and forwarding
1584 using the <literal>&lt;forward&gt;</literal> function bound to <quote>b</quote> and <quote>f</quote>
1585 respectively.
1586 </para>
1587
1588 <para>
1589 Forwarding can be done by including the original message in the new
1590 message's body (surrounded by indicating lines) or including it as a MIME
1591 attachment, depending on the value of the <link linkend="mime-forward">&dollar;mime&lowbar;forward</link> variable.  Decoding of attachments,
1592 like in the pager, can be controlled by the <link linkend="forward-decode">&dollar;forward&lowbar;decode</link> and <link linkend="mime-forward-decode">&dollar;mime&lowbar;forward&lowbar;decode</link> variables,
1593 respectively.  The desired forwarding format may depend on the content,
1594 therefore <link linkend="mime-forward">&dollar;mime&lowbar;forward</link> is a quadoption which, for
1595 example, can be set to <quote>ask-no</quote>.
1596 </para>
1597
1598 <para>
1599 The inclusion of headers is controlled by the current setting of the
1600 <link linkend="weed">&dollar;weed</link> variable, unless <link linkend="mime-forward">&dollar;mime&lowbar;forward</link> is set.
1601 </para>
1602
1603 <para>
1604 Editing the message to forward follows the same procedure as sending or
1605 replying to a message does.
1606 </para>
1607
1608 </sect1>
1609
1610 <sect1 id="postponing-mail">
1611 <title>Postponing Mail</title>
1612
1613 <para>
1614 At times it is desirable to delay sending a message that you have
1615 already begun to compose.  When the <literal>&lt;postpone-message&gt;</literal> function is
1616 used in the <emphasis>compose</emphasis> menu, the body of your message and attachments
1617 are stored in the mailbox specified by the <link linkend="postponed">&dollar;postponed</link> variable.  This means that you can recall the
1618 message even if you exit Mutt and then restart it at a later time.
1619 </para>
1620
1621 <para>
1622 Once a message is postponed, there are several ways to resume it.  From the
1623 command line you can use the <quote>-p</quote> option, or if you compose a new
1624 message from the <emphasis>index</emphasis> or <emphasis>pager</emphasis> you will be prompted if postponed
1625 messages exist.  If multiple messages are currently postponed, the
1626 <emphasis>postponed</emphasis> menu will pop up and you can select which message you would
1627 like to resume.
1628 </para>
1629
1630 <note>
1631 <para>
1632 If you postpone a reply to a message, the reply setting of
1633 the message is only updated when you actually finish the message and
1634 send it.  Also, you must be in the same folder with the message you
1635 replied to for the status of the message to be updated.
1636 </para>
1637 </note>
1638
1639 <para>
1640 See also the <link linkend="postpone">&dollar;postpone</link> quad-option.
1641 </para>
1642
1643 </sect1>
1644
1645 </chapter>
1646
1647 <chapter id="configuration">
1648 <title>Configuration</title>
1649
1650 <sect1 id="configuration-files">
1651 <title>Location of Initialization Files</title>
1652
1653 <para>
1654 While the default configuration (or <quote>preferences</quote>) make Mutt
1655 usable right out of the box, it is often desirable to tailor Mutt to
1656 suit your own tastes. When Mutt is first invoked, it will attempt to
1657 read the <quote>system</quote> configuration file (defaults set by your local
1658 system administrator), unless the <quote>-n</quote> <link linkend="commandline">command line</link> option is specified.  This file is typically
1659 <literal>/usr/local/share/mutt/Muttrc</literal> or <literal>/etc/Muttrc</literal>. Mutt
1660 will next look for a file named <literal>.muttrc</literal> in your home
1661 directory.  If this file does not exist and your home directory has
1662 a subdirectory named <literal>.mutt</literal>, Mutt tries to load a file named
1663 <literal>.mutt/muttrc</literal>.
1664 </para>
1665
1666 <para>
1667 <literal>.muttrc</literal> is the file where you will usually place your <link linkend="commands">commands</link> to configure Mutt.
1668 </para>
1669
1670 <para>
1671 In addition, Mutt supports version specific configuration files that are
1672 parsed instead of the default files as explained above.  For instance, if
1673 your system has a <literal>Muttrc-0.88</literal> file in the system configuration
1674 directory, and you are running version 0.88 of Mutt, this file will be
1675 sourced instead of the <literal>Muttrc</literal> file.  The same is true of the user
1676 configuration file, if you have a file <literal>.muttrc-0.88.6</literal> in your home
1677 directory, when you run Mutt version 0.88.6, it will source this file
1678 instead of the default <literal>.muttrc</literal> file.  The version number is the
1679 same which is visible using the <quote>-v</quote> <link linkend="commandline">command line</link> switch or using the <literal>show-version</literal> key (default:
1680 V) from the index menu.
1681 </para>
1682
1683 </sect1>
1684
1685 <sect1 id="muttrc-syntax" xreflabel="Syntax of Initialization Files">
1686 <title>Syntax of Initialization Files</title>
1687
1688 <para>
1689 An initialization file consists of a series of <link linkend="commands">commands</link>.  Each line of the file may contain one or more commands.
1690 When multiple commands are used, they must be separated by a semicolon
1691 (<quote>;</quote>).
1692 </para>
1693
1694 <example id="ex-rc-multiple-cmds">
1695 <title>Multiple configuration commands per line</title>
1696 <screen>
1697 set realname='Mutt user' ; ignore x-
1698 </screen>
1699 </example>
1700
1701 <para>
1702 The hash mark, or pound sign
1703 (<quote>&num;</quote>), is used as a <quote>comment</quote> character. You can use it to
1704 annotate your initialization file. All text after the comment character
1705 to the end of the line is ignored.
1706 </para>
1707
1708 <example id="ex-ec-comment">
1709 <title>Commenting configuration files</title>
1710 <screen>
1711 my_hdr X-Disclaimer: Why are you listening to me? &num; This is a comment
1712 </screen>
1713 </example>
1714
1715 <para>
1716 Single quotes (<quote>'</quote>) and double quotes (<quote>&quot;</quote>) can be used to quote strings
1717 which contain spaces or other special characters.  The difference between
1718 the two types of quotes is similar to that of many popular shell programs,
1719 namely that a single quote is used to specify a literal string (one that is
1720 not interpreted for shell variables or quoting with a backslash &lsqb;see
1721 next paragraph&rsqb;), while double quotes indicate a string for which
1722 should be evaluated.  For example, backticks are evaluated inside of double
1723 quotes, but <emphasis>not</emphasis> for single quotes.
1724 </para>
1725
1726 <para>
1727 <quote>&bsol;</quote> quotes the next character, just as in shells such as bash and zsh.
1728 For example, if want to put quotes <quote>&quot;</quote> inside of a string, you can use
1729 <quote>&bsol;</quote> to force the next character to be a literal instead of interpreted
1730 character.
1731 </para>
1732
1733 <example id="ex-rc-quote">
1734 <title>Escaping quotes in congfiguration files</title>
1735 <screen>
1736 set realname="Michael \"MuttDude\" Elkins"
1737 </screen>
1738 </example>
1739
1740 <para>
1741 <quote>&bsol;&bsol;</quote> means to insert a literal <quote>&bsol;</quote> into the line.
1742 <quote>&bsol;n</quote> and <quote>&bsol;r</quote> have their usual C meanings of linefeed and
1743 carriage-return, respectively.
1744 </para>
1745
1746 <para>
1747 A <quote>&bsol;</quote> at the end of a line can be used to split commands over
1748 multiple lines as it <quote>escapes</quote> the line end, provided that the split points don't appear in the
1749 middle of command names. Lines are first concatenated before
1750 interpretation so that a multi-line can be commented by commenting out
1751 the first line only.
1752 </para>
1753
1754 <example id="ex-rc-split">
1755 <title>Splitting long configuration commands over several lines</title>
1756 <screen>
1757 set status_format="some very \
1758 long value split \
1759 over several lines"
1760 </screen>
1761 </example>
1762
1763 <para>
1764 It is also possible to substitute the output of a Unix command in an
1765 initialization file.  This is accomplished by enclosing the command in
1766 backticks (``). In <xref linkend="ex-rc-backtick"/>, the output of the
1767 Unix command <quote>uname -a</quote> will be substituted before the
1768 line is parsed.
1769 Since initialization files are line oriented, only
1770 the first line of output from the Unix command will be substituted.
1771 </para>
1772
1773 <example id="ex-rc-backtick">
1774 <title>Using external command's output in configuration files</title>
1775 <screen>
1776 my_hdr X-Operating-System: `uname -a`
1777 </screen>
1778 </example>
1779
1780 <para>
1781 Both environment variables and Mutt variables can be accessed by
1782 prepending <quote>&dollar;</quote> to the name of the variable. For example,
1783 </para>
1784
1785 <example id="ex-rc-env">
1786 <title>Using environment variables in configuration files</title>
1787 <screen>
1788 set record=+sent_on_$HOSTNAME
1789 </screen>
1790 </example>
1791
1792 <para>
1793 will cause Mutt to save outgoing messages to a folder named
1794 <quote>sent_on_kremvax</quote> if the environment variable <literal>&dollar;HOSTNAME</literal> is set to
1795 <quote>kremvax.</quote> (See <link linkend="record">&dollar;record</link> for
1796 details.)
1797 </para>
1798
1799 <para>
1800 Mutt expands the variable when it is assigned, not when it is used. If
1801 the value of a variable on the right-hand side of an assignment
1802 changes after the assignment, the variable on the left-hand side will
1803 not be affected.
1804 </para>
1805
1806 <para>
1807 The commands understood by Mutt are explained in the next paragraphs.
1808 For a complete list, see the <link linkend="commands">command reference</link>.
1809 </para>
1810
1811 <para>
1812 All configuration files are expected to be in the current locale as
1813 specified by the <link linkend="charset">&dollar;charset</link> variable
1814 which doesn't have a default value since it's determined by Mutt at startup.
1815 If a configuration file is not encoded in the same character set the
1816 <link linkend="config-charset">&dollar;config&lowbar;charset</link>
1817 variable should be used: all lines starting with the next are recoded
1818 from <link linkend="config-charset">&dollar;config&lowbar;charset</link>
1819 to <link linkend="charset">&dollar;charset</link>.
1820 </para>
1821
1822 <para>
1823 This mechanism should be avoided if possible as it has the
1824 following implications:
1825 </para>
1826
1827 <itemizedlist>
1828
1829 <listitem><para>These variables should be set early in a configuration
1830 file with <link linkend="charset">&dollar;charset</link> preceding
1831 <link linkend="config-charset">&dollar;config&lowbar;charset</link> so Mutt
1832 knows what character set to convert to.</para></listitem>
1833
1834 <listitem><para>If <link linkend="config-charset">&dollar;config&lowbar;charset</link> is set, it should be set
1835 in each configuration file because the value is global and <emphasis>not</emphasis>
1836 per configuration file.</para></listitem>
1837
1838 <listitem><para>Because Mutt first recodes a line before it attempts to parse it,
1839 a conversion introducing question marks or other characters as
1840 part of errors (unconvertable characters, transliteration) may introduce syntax
1841 errors or silently change the meaning of certain tokens (e.g. inserting
1842 question marks into regular expressions).</para></listitem>
1843
1844 </itemizedlist>
1845
1846 </sect1>
1847
1848 <sect1 id="addrgroup">
1849 <title>Address Groups</title>
1850
1851 <para>Usage:</para>
1852
1853 <cmdsynopsis>
1854 <command>group</command>
1855 <arg choice="opt" rep="repeat">
1856 <option>-group</option>
1857 <replaceable class="parameter">name</replaceable>
1858 </arg>
1859 <group choice="req">
1860 <arg choice="plain" rep="repeat">
1861 <option>-rx</option>
1862 <replaceable class="parameter">expr</replaceable>
1863 </arg>
1864 <arg choice="plain" rep="repeat">
1865 <option>-addr</option>
1866 <replaceable class="parameter">expr</replaceable>
1867 </arg>
1868 </group>
1869
1870 <command>ungroup</command>
1871 <arg choice="opt" rep="repeat">
1872 <option>-group</option>
1873 <replaceable class="parameter">name</replaceable>
1874 </arg>
1875 <group choice="req">
1876 <arg choice="plain">
1877 <replaceable class="parameter">*</replaceable>
1878 </arg>
1879 <arg choice="plain" rep="repeat">
1880 <option>-rx</option>
1881 <replaceable class="parameter">expr</replaceable>
1882 </arg>
1883 <arg choice="plain" rep="repeat">
1884 <option>-addr</option>
1885 <replaceable class="parameter">expr</replaceable>
1886 </arg>
1887 </group>
1888 </cmdsynopsis>
1889
1890 <para>
1891 <command>group</command> is used to directly add either addresses or
1892 regular expressions to the specified group or groups. The different
1893 categories of arguments to the <command>group</command> command can be
1894 in any order. The flags <literal>-rx</literal> and
1895 <literal>-addr</literal> specify what the following strings (that cannot
1896 begin with a hyphen) should be interpreted as: either a regular
1897 expression or an email address, respectively.
1898 </para>
1899
1900 <para>
1901 These address groups can also be created implicitly by the
1902 <link linkend="alias"><command>alias</command></link>, <link linkend="lists">lists</link>,
1903 <link linkend="lists">subscribe</link> and
1904 <link linkend="alternates"><command>alternates</command></link> commands by specifying the
1905 optional <literal>-group</literal> option.
1906 </para>
1907
1908 <para>
1909 Once defined, these address groups can be used in
1910 <link linkend="patterns">patterns</link> to search for and limit the
1911 display to messages matching a group.
1912 </para>
1913
1914 <para>
1915 <command>ungroup</command> is used to remove addresses or regular
1916 expressions from the specified group or groups. The syntax is similar to
1917 the <command>group</command> command, however the special character
1918 <literal>*</literal> can be used to empty a group of all of its
1919 contents.
1920 </para>
1921
1922 </sect1>
1923
1924 <sect1 id="alias">
1925 <title>Defining/Using Aliases</title>
1926
1927 <para>Usage:</para>
1928
1929 <cmdsynopsis>
1930 <command>alias</command>
1931 <arg choice="opt" rep="repeat">
1932 <option>-group</option>
1933 <replaceable class="parameter">name</replaceable>
1934 </arg>
1935 <arg choice="plain">
1936 <replaceable class="parameter">key</replaceable>
1937 </arg>
1938 <arg choice="plain">
1939 <replaceable class="parameter">address</replaceable>
1940 </arg>
1941 <arg choice="opt" rep="repeat">
1942 <replaceable class="parameter">address</replaceable>
1943 </arg>
1944
1945 <command>unalias</command>
1946 <arg choice="opt" rep="repeat">
1947 <option>-group</option>
1948 <replaceable>name</replaceable>
1949 </arg>
1950 <group choice="req">
1951 <arg choice="plain">
1952 <replaceable class="parameter">*</replaceable>
1953 </arg>
1954 <arg choice="plain" rep="repeat">
1955 <replaceable class="parameter">key</replaceable>
1956 </arg>
1957 </group>
1958 </cmdsynopsis>
1959
1960 <para>
1961 It's usually very cumbersome to remember or type out the address of someone
1962 you are communicating with.  Mutt allows you to create <quote>aliases</quote> which map
1963 a short string to a full address.
1964 </para>
1965
1966 <note>
1967 <para>
1968 If you want to create an alias for more than
1969 one address, you <emphasis>must</emphasis> separate the addresses with a comma (<quote>,</quote>).
1970 </para>
1971 </note>
1972
1973 <para>
1974 The optional <literal>-group</literal> argument to
1975 <command>alias</command> causes the aliased address(es) to be added to
1976 the named <emphasis>group</emphasis>.
1977 </para>
1978
1979 <para>
1980 To remove an alias or aliases (<quote>*</quote> means all aliases):
1981 </para>
1982
1983 <screen>
1984 alias muttdude me@cs.hmc.edu (Michael Elkins)
1985 alias theguys manny, moe, jack
1986 </screen>
1987
1988 <para>
1989 Unlike other mailers, Mutt doesn't require aliases to be defined
1990 in a special file.  The <command>alias</command> command can appear anywhere in
1991 a configuration file, as long as this file is <link linkend="source"><command>source</command>d</link>.  Consequently, you can have multiple alias files, or
1992 you can have all aliases defined in your <literal>.muttrc</literal>.
1993 </para>
1994
1995 <para>
1996 On the other hand, the <link linkend="create-alias"><literal>&lt;create-alias&gt;</literal></link>
1997 function can use only one file, the one pointed to by the <link linkend="alias-file">&dollar;alias&lowbar;file</link> variable (which is
1998 <literal>&tilde;/.muttrc</literal> by default). This file is not special either,
1999 in the sense that Mutt will happily append aliases to any file, but in
2000 order for the new aliases to take effect you need to explicitly <link linkend="source"><command>source</command></link> this file too.
2001 </para>
2002
2003 <example id="ex-alias-external">
2004 <title>Configuring external alias files</title>
2005 <screen>
2006 source /usr/local/share/Mutt.aliases
2007 source ~/.mail_aliases
2008 set alias_file=~/.mail_aliases
2009 </screen>
2010 </example>
2011
2012 <para>
2013 To use aliases, you merely use the alias at any place in Mutt where Mutt
2014 prompts for addresses, such as the <emphasis>To:</emphasis> or <emphasis>Cc:</emphasis> prompt.  You can
2015 also enter aliases in your editor at the appropriate headers if you have the
2016 <link linkend="edit-headers">&dollar;edit&lowbar;headers</link> variable set.
2017 </para>
2018
2019 <para>
2020 In addition, at the various address prompts, you can use the tab character
2021 to expand a partial alias to the full alias.  If there are multiple matches,
2022 Mutt will bring up a menu with the matching aliases.  In order to be
2023 presented with the full list of aliases, you must hit tab without a partial
2024 alias, such as at the beginning of the prompt or after a comma denoting
2025 multiple addresses.
2026 </para>
2027
2028 <para>
2029 In the alias menu, you can select as many aliases as you want with the
2030 <literal>select-entry</literal> key (default: &lt;Return&gt;), and use the
2031 <emphasis>exit</emphasis> key (default: q) to return to the address prompt.
2032 </para>
2033
2034 </sect1>
2035
2036 <sect1 id="bind">
2037 <title>Changing the Default Key Bindings</title>
2038
2039 <para>Usage:</para>
2040
2041 <cmdsynopsis>
2042 <command>bind</command>
2043 <arg choice="plain">
2044 <replaceable class="parameter">map</replaceable>
2045 </arg>
2046 <arg choice="plain">
2047 <replaceable class="parameter">key</replaceable>
2048 </arg>
2049 <arg choice="plain">
2050 <replaceable class="parameter">function</replaceable>
2051 </arg>
2052 </cmdsynopsis>
2053
2054 <para>
2055 This command allows you to change the default key bindings (operation
2056 invoked when pressing a key).
2057 </para>
2058
2059 <para>
2060 <emphasis>map</emphasis> specifies in which menu the binding belongs.  Multiple maps may
2061 be specified by separating them with commas (no additional whitespace is
2062 allowed). The currently defined maps are:
2063 </para>
2064
2065 <anchor id="maps"/>
2066 <variablelist>
2067
2068 <varlistentry>
2069 <term>generic</term>
2070 <listitem>
2071 <para>
2072 This is not a real menu, but is used as a fallback for all of the other
2073 menus except for the pager and editor modes.  If a key is not defined in
2074 another menu, Mutt will look for a binding to use in this menu.  This allows
2075 you to bind a key to a certain function in multiple menus instead of having
2076 multiple <command>bind</command> statements to accomplish the same task.
2077 </para>
2078 </listitem>
2079 </varlistentry>
2080 <varlistentry>
2081 <term>alias</term>
2082 <listitem>
2083 <para>
2084 The alias menu is the list of your personal aliases as defined in your
2085 <literal>.muttrc</literal>.  It is the mapping from a short alias name to the full email
2086 address(es) of the recipient(s).
2087 </para>
2088 </listitem>
2089 </varlistentry>
2090 <varlistentry>
2091 <term>attach</term>
2092 <listitem>
2093 <para>
2094 The attachment menu is used to access the attachments on received messages.
2095 </para>
2096 </listitem>
2097 </varlistentry>
2098 <varlistentry>
2099 <term>browser</term>
2100 <listitem>
2101 <para>
2102 The browser is used for both browsing the local directory structure, and for
2103 listing all of your incoming mailboxes.
2104 </para>
2105 </listitem>
2106 </varlistentry>
2107 <varlistentry>
2108 <term>editor</term>
2109 <listitem>
2110 <para>
2111 The editor is the line-based editor the user enters text data.
2112 </para>
2113 </listitem>
2114 </varlistentry>
2115 <varlistentry>
2116 <term>index</term>
2117 <listitem>
2118 <para>
2119 The index is the list of messages contained in a mailbox.
2120 </para>
2121 </listitem>
2122 </varlistentry>
2123 <varlistentry>
2124 <term>compose</term>
2125 <listitem>
2126 <para>
2127 The compose menu is the screen used when sending a new message.
2128 </para>
2129 </listitem>
2130 </varlistentry>
2131 <varlistentry>
2132 <term>pager</term>
2133 <listitem>
2134 <para>
2135 The pager is the mode used to display message/attachment data, and help
2136 listings.
2137 </para>
2138 </listitem>
2139 </varlistentry>
2140 <varlistentry>
2141 <term>pgp</term>
2142 <listitem>
2143 <para>
2144 The pgp menu is used to select the OpenPGP keys used to encrypt outgoing
2145 messages.
2146 </para>
2147 </listitem>
2148 </varlistentry>
2149 <varlistentry>
2150 <term>smime</term>
2151 <listitem>
2152 <para>
2153 The smime menu is used to select the OpenSSL certificates used to encrypt outgoing
2154 messages.
2155 </para>
2156 </listitem>
2157 </varlistentry>
2158 <varlistentry>
2159 <term>postpone</term>
2160 <listitem>
2161 <para>
2162 The postpone menu is similar to the index menu, except is used when
2163 recalling a message the user was composing, but saved until later.
2164 </para>
2165 </listitem>
2166 </varlistentry>
2167 <varlistentry>
2168 <term>query</term>
2169 <listitem>
2170 <para>
2171 The query menu is the browser for results returned by
2172 <link linkend="query-command">&dollar;query&lowbar;command</link>.
2173 </para>
2174 </listitem>
2175 </varlistentry>
2176 <varlistentry>
2177 <term>mix</term>
2178 <listitem>
2179 <para>
2180 The mixmaster screen is used to select remailer options for outgoing
2181 messages (if Mutt is compiled with Mixmaster support).
2182 </para>
2183 </listitem>
2184 </varlistentry>
2185 </variablelist>
2186
2187 <para>
2188 <emphasis>key</emphasis> is the key (or key sequence) you wish to bind.  To specify a
2189 control character, use the sequence <emphasis>&bsol;Cx</emphasis>, where <emphasis>x</emphasis> is the
2190 letter of the control character (for example, to specify control-A use
2191 <quote>&bsol;Ca</quote>).  Note that the case of <emphasis>x</emphasis> as well as <emphasis>&bsol;C</emphasis> is
2192 ignored, so that <emphasis>&bsol;CA</emphasis>, <emphasis>&bsol;Ca</emphasis>, <emphasis>&bsol;cA</emphasis> and <emphasis>&bsol;ca</emphasis> are all
2193 equivalent.  An alternative form is to specify the key as a three digit
2194 octal number prefixed with a <quote>&bsol;</quote> (for example <emphasis>&bsol;177</emphasis> is
2195 equivalent to <emphasis>&bsol;c?</emphasis>). In addition, <emphasis>key</emphasis> may
2196 be a symbolic name as shown in <xref linkend="tab-key-names"/>.
2197 </para>
2198
2199 <table id="tab-key-names">
2200 <title>Symbolic key names</title>
2201 <tgroup cols="2">
2202 <thead>
2203 <row><entry>Symbolic name</entry><entry>Meaning</entry></row>
2204 </thead>
2205 <tbody>
2206 <row><entry>&bsol;t</entry><entry>tab</entry></row>
2207 <row><entry>&lt;tab&gt;</entry><entry>tab</entry></row>
2208 <row><entry>&lt;backtab&gt;</entry><entry>backtab / shift-tab</entry></row>
2209 <row><entry>&bsol;r</entry><entry>carriage return</entry></row>
2210 <row><entry>&bsol;n</entry><entry>newline</entry></row>
2211 <row><entry>&bsol;e</entry><entry>escape</entry></row>
2212 <row><entry>&lt;esc&gt;</entry><entry>escape</entry></row>
2213 <row><entry>&lt;up&gt;</entry><entry>up arrow</entry></row>
2214 <row><entry>&lt;down&gt;</entry><entry>down arrow</entry></row>
2215 <row><entry>&lt;left&gt;</entry><entry>left arrow</entry></row>
2216 <row><entry>&lt;right&gt;</entry><entry>right arrow</entry></row>
2217 <row><entry>&lt;pageup&gt;</entry><entry>Page Up</entry></row>
2218 <row><entry>&lt;pagedown&gt;</entry><entry>Page Down</entry></row>
2219 <row><entry>&lt;backspace&gt;</entry><entry>Backspace</entry></row>
2220 <row><entry>&lt;delete&gt;</entry><entry>Delete</entry></row>
2221 <row><entry>&lt;insert&gt;</entry><entry>Insert</entry></row>
2222 <row><entry>&lt;enter&gt;</entry><entry>Enter</entry></row>
2223 <row><entry>&lt;return&gt;</entry><entry>Return</entry></row>
2224 <row><entry>&lt;home&gt;</entry><entry>Home</entry></row>
2225 <row><entry>&lt;end&gt;</entry><entry>End</entry></row>
2226 <row><entry>&lt;space&gt;</entry><entry>Space bar</entry></row>
2227 <row><entry>&lt;f1&gt;</entry><entry>function key 1</entry></row>
2228 <row><entry>&lt;f10&gt;</entry><entry>function key 10</entry></row>
2229 </tbody>
2230 </tgroup>
2231 </table>
2232
2233 <para>
2234 <emphasis>key</emphasis> does not need to be enclosed in quotes unless it contains a
2235 space (<quote>&puncsp;</quote>) or semi-colon (<quote>;</quote>).
2236 </para>
2237
2238 <para>
2239 <emphasis>function</emphasis> specifies which action to take when <emphasis>key</emphasis> is pressed.
2240 For a complete list of functions, see the <link linkend="functions">reference</link>.  The special function <literal>&lt;noop&gt;</literal> unbinds the specified key
2241 sequence.
2242 </para>
2243
2244 </sect1>
2245
2246 <sect1 id="charset-hook">
2247 <title>Defining Aliases for Character Sets</title>
2248
2249 <para>Usage:</para>
2250
2251 <cmdsynopsis>
2252 <command>charset-hook</command>
2253 <arg choice="plain">
2254 <replaceable class="parameter">alias</replaceable>
2255 </arg>
2256 <arg choice="plain">
2257 <replaceable class="parameter">charset</replaceable>
2258 </arg>
2259
2260 <command>iconv-hook<anchor id="iconv-hook"/></command>
2261 <arg choice="plain">
2262 <replaceable class="parameter">charset</replaceable>
2263 </arg>
2264 <arg choice="plain">
2265 <replaceable class="parameter">local-charset</replaceable>
2266 </arg>
2267 </cmdsynopsis>
2268
2269 <para>
2270 The <command>charset-hook</command> command defines an alias for a character set.
2271 This is useful to properly display messages which are tagged with a
2272 character set name not known to Mutt.
2273 </para>
2274
2275 <para>
2276 The <command>iconv-hook</command> command defines a system-specific name for a
2277 character set.  This is helpful when your systems character
2278 conversion library insists on using strange, system-specific names
2279 for character sets.
2280 </para>
2281
2282 </sect1>
2283
2284 <sect1 id="folder-hook">
2285 <title>Setting Variables Based Upon Mailbox</title>
2286
2287 <para>Usage:</para>
2288
2289 <cmdsynopsis>
2290 <command>folder-hook</command>
2291 <arg choice="plain">
2292 <replaceable class="parameter">&lsqb;!&rsqb;regexp</replaceable>
2293 </arg>
2294 <arg choice="plain">
2295 <replaceable class="parameter">command</replaceable>
2296 </arg>
2297 </cmdsynopsis>
2298
2299 <para>
2300 It is often desirable to change settings based on which mailbox you are
2301 reading.  The <command>folder-hook</command> command provides a method by which you can execute
2302 any configuration command.  <emphasis>regexp</emphasis> is a regular expression specifying
2303 in which mailboxes to execute <emphasis>command</emphasis> before loading.  If a mailbox
2304 matches multiple <command>folder-hook</command>s, they are executed in the order given in the
2305 <literal>.muttrc</literal>.
2306 </para>
2307
2308 <note>
2309 <para>
2310 If you use the <quote>!</quote> shortcut for <link linkend="spoolfile">&dollar;spoolfile</link> at the beginning of the pattern, you must place it
2311 inside of double or single quotes in order to distinguish it from the
2312 logical <emphasis>not</emphasis> operator for the expression.
2313 </para>
2314 </note>
2315
2316 <note>
2317 <para>
2318 Settings are <emphasis>not</emphasis> restored when you leave the mailbox.
2319 For example, a command action to perform is to change the sorting method
2320 based upon the mailbox being read:
2321
2322 <screen>
2323 folder-hook mutt "set sort=threads"</screen>
2324
2325 However, the sorting method is not restored to its previous value when
2326 reading a different mailbox.  To specify a <emphasis>default</emphasis> command, use the
2327 pattern <quote>.</quote> before other <command>folder-hook</command>s adjusting a value on a per-folder basis
2328 because <command>folder-hook</command>s are evaluated in the order given in the
2329 configuration file.
2330 </para>
2331 </note>
2332
2333 <para>
2334 The following example will set the <link linkend="sort">sort</link> variable
2335 to <literal>date-sent</literal> for all folders but to <literal>threads</literal>
2336 for all folders containing <quote>mutt</quote> in their name.
2337 </para>
2338
2339 <example id="ex-folder-sorting">
2340 <title>Setting sort method based on mailbox name</title>
2341 <screen>
2342 folder-hook . "set sort=date-sent"
2343 folder-hook mutt "set sort=threads"
2344 </screen>
2345 </example>
2346
2347 </sect1>
2348
2349 <sect1 id="macro">
2350 <title>Keyboard Macros</title>
2351
2352 <para>Usage:</para>
2353
2354 <cmdsynopsis>
2355 <command>macro</command>
2356 <arg choice="plain">
2357 <replaceable class="parameter">menu</replaceable>
2358 </arg>
2359 <arg choice="plain">
2360 <replaceable class="parameter">key</replaceable>
2361 </arg>
2362 <arg choice="plain">
2363 <replaceable class="parameter">sequence</replaceable>
2364 </arg>
2365 <arg choice="opt">
2366 <replaceable class="parameter">description</replaceable>
2367 </arg>
2368 </cmdsynopsis>
2369
2370 <para>
2371 Macros are useful when you would like a single key to perform a series of
2372 actions.  When you press <emphasis>key</emphasis> in menu <emphasis>menu</emphasis>, Mutt will behave as if
2373 you had typed <emphasis>sequence</emphasis>.  So if you have a common sequence of commands
2374 you type, you can create a macro to execute those commands with a single
2375 key or fewer keys.
2376 </para>
2377
2378 <para>
2379 <emphasis>menu</emphasis> is the <link linkend="maps">map</link> which the macro will be bound in.
2380 Multiple maps may be specified by separating multiple menu arguments by
2381 commas. Whitespace may not be used in between the menu arguments and the
2382 commas separating them.
2383 </para>
2384
2385 <para>
2386 <emphasis>key</emphasis> and <emphasis>sequence</emphasis> are expanded by the same rules as the
2387 <link linkend="bind">key bindings</link> with some additions.  The
2388 first is that control characters in <emphasis>sequence</emphasis> can also be specified
2389 as <emphasis>&circ;x</emphasis>.  In order to get a caret (<quote>&circ;</quote>) you need to use
2390 <emphasis>&circ;&circ;</emphasis>.  Secondly, to specify a certain key such as <emphasis>up</emphasis>
2391 or to invoke a function directly, you can use the format
2392 <emphasis>&lt;key name&gt;</emphasis> and <emphasis>&lt;function name&gt;</emphasis>.  For a listing of key
2393 names see the section on <link linkend="bind">key bindings</link>.  Functions
2394 are listed in the <link linkend="functions">reference</link>.
2395 </para>
2396
2397 <para>
2398 The advantage with using function names directly is that the macros will
2399 work regardless of the current key bindings, so they are not dependent on
2400 the user having particular key definitions.  This makes them more robust
2401 and portable, and also facilitates defining of macros in files used by more
2402 than one user (e.g., the system Muttrc).
2403 </para>
2404
2405 <para>
2406 Optionally you can specify a descriptive text after <emphasis>sequence</emphasis>,
2407 which is shown in the help screens if they contain a description.
2408 </para>
2409
2410 <note>
2411 <para>
2412 Macro definitions (if any) listed in the help screen(s), are
2413 silently truncated at the screen width, and are not wrapped.
2414 </para>
2415 </note>
2416
2417 </sect1>
2418
2419 <sect1 id="color">
2420 <title>Using Color and Mono Video Attributes</title>
2421
2422 <para>Usage:</para>
2423
2424 <cmdsynopsis>
2425 <command>color</command>
2426 <arg choice="plain">
2427 <replaceable class="parameter">object</replaceable>
2428 </arg>
2429 <arg choice="plain">
2430 <replaceable class="parameter">foreground</replaceable>
2431 </arg>
2432 <arg choice="plain">
2433 <replaceable class="parameter">background</replaceable>
2434 </arg>
2435
2436 <command>color</command>
2437 <group choice="req">
2438 <arg choice="plain">
2439 <option>header</option>
2440 </arg>
2441 <arg choice="plain">
2442 <option>body</option>
2443 </arg>
2444 </group>
2445 <arg choice="plain">
2446 <replaceable class="parameter">foreground</replaceable>
2447 </arg>
2448 <arg choice="plain">
2449 <replaceable class="parameter">background</replaceable>
2450 </arg>
2451 <arg choice="plain">
2452 <replaceable class="parameter">regexp</replaceable>
2453 </arg>
2454
2455 <command>color</command>
2456 <arg choice="plain">
2457 <option>index</option>
2458 </arg>
2459 <arg choice="plain">
2460 <replaceable class="parameter">foreground</replaceable>
2461 </arg>
2462 <arg choice="plain">
2463 <replaceable class="parameter">background</replaceable>
2464 </arg>
2465 <arg choice="plain">
2466 <replaceable class="parameter">pattern</replaceable>
2467 </arg>
2468
2469 <command>uncolor</command>
2470 <group choice="req">
2471 <arg choice="plain">
2472 <option>index</option>
2473 </arg>
2474 <arg choice="plain">
2475 <option>header</option>
2476 </arg>
2477 <arg choice="plain">
2478 <option>body</option>
2479 </arg>
2480 </group>
2481 <group choice="req">
2482 <arg choice="plain">
2483 <replaceable>*</replaceable>
2484 </arg>
2485 <arg choice="plain" rep="repeat">
2486 <replaceable>pattern</replaceable>
2487 </arg>
2488 </group>
2489 </cmdsynopsis>
2490
2491 <para>
2492 If your terminal supports color, you can spice up Mutt by creating your own
2493 color scheme.  To define the color of an object (type of information), you
2494 must specify both a foreground color <emphasis>and</emphasis> a background color (it is not
2495 possible to only specify one or the other).
2496 </para>
2497
2498 <para>
2499 <emphasis>header</emphasis> and <emphasis>body</emphasis> match <emphasis>regexp</emphasis>
2500 in the header/body of a message, <emphasis>index</emphasis> matches <emphasis>pattern</emphasis>
2501 (see <xref linkend="patterns"/>) in the message index.
2502 </para>
2503
2504 <para>
2505 <emphasis>object</emphasis> can be one of:
2506 </para>
2507
2508 <itemizedlist>
2509 <listitem><para>attachment</para></listitem>
2510 <listitem><para>bold (hiliting bold patterns in the body of messages)</para></listitem>
2511 <listitem><para>error (error messages printed by Mutt)</para></listitem>
2512 <listitem><para>hdrdefault (default color of the message header in the pager)</para></listitem>
2513 <listitem><para>indicator (arrow or bar used to indicate the current item in a menu)</para></listitem>
2514 <listitem><para>markers (the <quote>+</quote> markers at the beginning of wrapped lines in the pager)</para></listitem>
2515 <listitem><para>message (informational messages)</para></listitem>
2516 <listitem><para>normal</para></listitem>
2517 <listitem><para>quoted (text matching <link linkend="quote-regexp">&dollar;quote&lowbar;regexp</link> in the body of a message)</para></listitem>
2518 <listitem><para>quoted1, quoted2, ..., quoted<emphasis>N</emphasis> (higher levels of quoting)</para></listitem>
2519 <listitem><para>search (hiliting of words in the pager)</para></listitem>
2520 <listitem><para>signature</para></listitem><listitem><para>status (mode lines used to display info about the mailbox or message)</para></listitem>
2521 <listitem><para>tilde (the <quote>&tilde;</quote> used to pad blank lines in the pager)</para></listitem>
2522 <listitem><para>tree (thread tree drawn in the message index and attachment menu)</para></listitem>
2523 <listitem><para>underline (hiliting underlined patterns in the body of messages)</para></listitem>
2524 </itemizedlist>
2525
2526 <para>
2527 <emphasis>foreground</emphasis> and <emphasis>background</emphasis> can be one of the following:
2528 </para>
2529
2530 <itemizedlist>
2531 <listitem><para>white</para></listitem>
2532 <listitem><para>black</para></listitem>
2533 <listitem><para>green</para></listitem>
2534 <listitem><para>magenta</para></listitem>
2535 <listitem><para>blue</para></listitem>
2536 <listitem><para>cyan</para></listitem>
2537 <listitem><para>yellow</para></listitem>
2538 <listitem><para>red</para></listitem>
2539 <listitem><para>default</para></listitem>
2540 <listitem><para>color<emphasis>x</emphasis></para>
2541 </listitem>
2542 </itemizedlist>
2543
2544 <para>
2545 <emphasis>foreground</emphasis> can optionally be prefixed with the keyword <literal>bright</literal> to make
2546 the foreground color boldfaced (e.g., <literal>brightred</literal>).
2547 </para>
2548
2549 <para>
2550 If your terminal supports it, the special keyword <emphasis>default</emphasis> can be
2551 used as a transparent color.  The value <emphasis>brightdefault</emphasis> is also valid.
2552 If Mutt is linked against the <emphasis>S-Lang</emphasis> library, you also need to set
2553 the <literal>&dollar;COLORFGBG</literal> environment variable to the default colors of your
2554 terminal for this to work; for example (for Bourne-like shells):
2555 </para>
2556
2557 <screen>
2558 set COLORFGBG="green;black"
2559 export COLORFGBG
2560 </screen>
2561
2562 <note>
2563 <para>
2564 The <emphasis>S-Lang</emphasis> library requires you to use the <emphasis>lightgray</emphasis>
2565 and <emphasis>brown</emphasis> keywords instead of <emphasis>white</emphasis> and <emphasis>yellow</emphasis> when
2566 setting this variable.
2567 </para>
2568 </note>
2569
2570 <note>
2571 <para>
2572 The <command>uncolor</command> command can be applied to the index, header and body objects only.  It
2573 removes entries from the list. You <emphasis>must</emphasis> specify the same pattern
2574 specified in the <command>color</command> command for it to be removed.  The pattern <quote>*</quote> is
2575 a special token which means to clear the color list of all entries.
2576 </para>
2577 </note>
2578
2579 <para>
2580 Mutt also recognizes the keywords <emphasis>color0</emphasis>, <emphasis>color1</emphasis>, &hellip;,
2581 <emphasis>color</emphasis><emphasis>N-1</emphasis> (<emphasis>N</emphasis> being the number of colors supported
2582 by your terminal).  This is useful when you remap the colors for your
2583 display (for example by changing the color associated with <emphasis>color2</emphasis>
2584 for your xterm), since color names may then lose their normal meaning.
2585 </para>
2586
2587 <anchor id="mono"/>
2588 <para>
2589 If your terminal does not support color, it is still possible change the video
2590 attributes through the use of the <quote>mono</quote> command. Usage:
2591 </para>
2592
2593 <cmdsynopsis>
2594 <command>mono</command>
2595 <arg choice="plain">
2596 <replaceable class="parameter">object</replaceable>
2597 </arg>
2598 <arg choice="plain">
2599 <replaceable class="parameter">attribute</replaceable>
2600 </arg>
2601
2602 <command>mono</command>
2603 <group choice="req">
2604 <arg choice="plain">
2605 <option>header</option>
2606 </arg>
2607 <arg choice="plain">
2608 <option>body</option>
2609 </arg>
2610 </group>
2611 <arg choice="plain">
2612 <replaceable class="parameter">attribute</replaceable>
2613 </arg>
2614 <arg choice="plain">
2615 <replaceable class="parameter">regexp</replaceable>
2616 </arg>
2617
2618 <command>mono</command>
2619 <arg choice="plain">
2620 <option>index</option>
2621 </arg>
2622 <arg choice="plain">
2623 <replaceable class="parameter">attribute</replaceable>
2624 </arg>
2625 <arg choice="plain">
2626 <replaceable class="parameter">pattern</replaceable>
2627 </arg>
2628
2629 <command>unmono</command>
2630 <group choice="req">
2631 <arg choice="plain">
2632 <option>index</option>
2633 </arg>
2634 <arg choice="plain">
2635 <option>header</option>
2636 </arg>
2637 <arg choice="plain">
2638 <option>body</option>
2639 </arg>
2640 </group>
2641 <group choice="req">
2642 <arg choice="plain">
2643 <replaceable>*</replaceable>
2644 </arg>
2645 <arg choice="plain" rep="repeat">
2646 <replaceable>pattern</replaceable>
2647 </arg>
2648 </group>
2649 </cmdsynopsis>
2650
2651 <para>
2652 For <emphasis>object</emphasis>, see the <command>color</command> command. <emphasis>attribute</emphasis>
2653 can be one of the following:
2654 </para>
2655
2656 <itemizedlist>
2657 <listitem><para>none</para></listitem>
2658 <listitem><para>bold</para></listitem>
2659 <listitem><para>underline</para></listitem>
2660 <listitem><para>reverse</para></listitem>
2661 <listitem><para>standout</para></listitem>
2662 </itemizedlist>
2663
2664 </sect1>
2665
2666 <sect1 id="msg-hdr-display">
2667 <title>Message Header Display</title>
2668
2669 <sect2 id="ignore">
2670 <title>Selecting Headers</title>
2671
2672 <para>Usage:</para>
2673
2674 <cmdsynopsis>
2675 <command>ignore</command>
2676 <arg choice="plain">
2677 <replaceable class="parameter">pattern</replaceable>
2678 </arg>
2679 <arg choice="opt" rep="repeat">
2680 <replaceable class="parameter">pattern</replaceable>
2681 </arg>
2682
2683 <command>unignore</command>
2684 <group choice="req">
2685 <arg choice="plain">
2686 <replaceable>*</replaceable>
2687 </arg>
2688 <arg choice="plain" rep="repeat">
2689 <replaceable>pattern</replaceable>
2690 </arg>
2691 </group>
2692 </cmdsynopsis>
2693
2694 <para>
2695 Messages often have many header fields added by automatic processing systems,
2696 or which may not seem useful to display on the screen.  This command allows
2697 you to specify header fields which you don't normally want to see in the pager.
2698 </para>
2699
2700 <para>
2701 You do not need to specify the full header field name.  For example,
2702 <quote>ignore content-</quote> will ignore all header fields that begin with the pattern
2703 <quote>content-</quote>. <quote>ignore *</quote> will ignore all headers.
2704 </para>
2705
2706 <para>
2707 To remove a previously added token from the list, use the <quote>unignore</quote> command.
2708 The <quote>unignore</quote> command will make Mutt display headers with the given pattern.
2709 For example, if you do <quote>ignore x-</quote> it is possible to <quote>unignore x-mailer</quote>.
2710 </para>
2711
2712 <para>
2713 <quote>unignore *</quote> will remove all tokens from the ignore list.
2714 </para>
2715
2716 <example id="ex-header-weeding">
2717 <title>Header weeding</title>
2718 <screen>
2719 # Sven's draconian header weeding
2720 ignore *
2721 unignore from date subject to cc
2722 unignore organization organisation x-mailer: x-newsreader: x-mailing-list:
2723 unignore posted-to:
2724 </screen>
2725 </example>
2726
2727 </sect2>
2728
2729 <sect2 id="hdr-order">
2730 <title>Ordering Displayed Headers</title>
2731
2732 <para>Usage:</para>
2733
2734 <cmdsynopsis>
2735 <command>hdr&lowbar;order</command>
2736 <arg choice="plain">
2737 <replaceable class="parameter">header</replaceable>
2738 </arg>
2739 <arg choice="opt" rep="repeat">
2740 <replaceable class="parameter">header</replaceable>
2741 </arg>
2742
2743 <command>unhdr&lowbar;order</command>
2744 <group choice="req">
2745 <arg choice="plain">
2746 <replaceable>*</replaceable>
2747 </arg>
2748 <arg choice="plain" rep="repeat">
2749 <replaceable>header</replaceable>
2750 </arg>
2751 </group>
2752 </cmdsynopsis>
2753
2754 <para>
2755 With the <command>hdr&lowbar;order</command> command you can specify an order in
2756 which Mutt will attempt to present these headers to you when viewing messages.
2757 </para>
2758
2759 <para>
2760 <quote><command>unhdr&lowbar;order</command> *</quote> will clear all previous headers from the order list,
2761 thus removing the header order effects set by the system-wide startup file.
2762 </para>
2763
2764 <example id="ex-hdr-order">
2765 <title>Configuring header display order</title>
2766 <screen>
2767 hdr&lowbar;order From Date: From: To: Cc: Subject:
2768 </screen>
2769 </example>
2770
2771 </sect2>
2772 </sect1>
2773
2774 <sect1 id="alternates">
2775 <title>Alternative Addresses</title>
2776
2777 <para>Usage:</para>
2778
2779 <cmdsynopsis>
2780 <command>alternates</command>
2781 <arg choice="opt" rep="repeat">
2782 <option>-group</option>
2783 <replaceable>name</replaceable>
2784 </arg>
2785 <arg choice="plain">
2786 <replaceable>regexp</replaceable>
2787 </arg>
2788 <arg choice="opt" rep="repeat">
2789 <replaceable>regexp</replaceable>
2790 </arg>
2791
2792 <command>unalternates</command>
2793 <arg choice="opt" rep="repeat">
2794 <option>-group</option>
2795 <replaceable>name</replaceable>
2796 </arg>
2797 <group choice="req">
2798 <arg choice="plain">
2799 <replaceable>*</replaceable>
2800 </arg>
2801 <arg choice="plain" rep="repeat">
2802 <replaceable>regexp</replaceable>
2803 </arg>
2804 </group>
2805 </cmdsynopsis>
2806
2807 <para>
2808 With various functions, Mutt will treat messages differently,
2809 depending on whether you sent them or whether you received them from
2810 someone else.  For instance, when replying to a message that you
2811 sent to a different party, Mutt will automatically suggest to send
2812 the response to the original message's recipients &mdash; responding to
2813 yourself won't make much sense in many cases.  (See <link linkend="reply-to">&dollar;reply&lowbar;to</link>.)
2814 </para>
2815
2816 <para>
2817 Many users receive e-mail under a number of different addresses. To
2818 fully use Mutt's features here, the program must be able to
2819 recognize what e-mail addresses you receive mail under. That's the
2820 purpose of the <command>alternates</command> command: It takes a list of regular
2821 expressions, each of which can identify an address under which you
2822 receive e-mail.
2823 </para>
2824
2825 <para>
2826 As addresses are matched using regular expressions and not exact strict
2827 comparisons, you should make sure you specify your addresses as precise
2828 as possible to avoid mismatches. For example, if you specify:
2829 </para>
2830
2831 <screen>
2832 alternates user@example
2833 </screen>
2834
2835 <para>
2836 Mutt will consider <quote><literal>some-user@example</literal></quote> as
2837 being your address, too which may not be desired. As a solution, in such
2838 cases addresses should be specified as:
2839 </para>
2840
2841 <screen>
2842 alternates '^user@example$'
2843 </screen>
2844
2845 <para>
2846 The <literal>-group</literal> flag causes all of the subsequent regular expressions
2847 to be added to the named group.
2848 </para>
2849
2850 <para>
2851 The <command>unalternates</command> command can be used to write exceptions to
2852 <command>alternates</command> patterns. If an address matches something in an
2853 <command>alternates</command> command, but you nonetheless do not think it is
2854 from you, you can list a more precise pattern under an <command>unalternates</command>
2855 command.
2856 </para>
2857
2858 <para>
2859 To remove a regular expression from the <command>alternates</command> list, use the
2860 <command>unalternates</command> command with exactly the same <emphasis>regexp</emphasis>.
2861 Likewise, if the <emphasis>regexp</emphasis> for an <command>alternates</command> command matches
2862 an entry on the <command>unalternates</command> list, that <command>unalternates</command>
2863 entry will be removed. If the <emphasis>regexp</emphasis> for <command>unalternates</command>
2864 is <quote>*</quote>, <emphasis>all entries</emphasis> on <command>alternates</command> will be removed.
2865 </para>
2866
2867 </sect1>
2868
2869 <sect1 id="lists">
2870 <title>Mailing Lists</title>
2871
2872 <anchor id="subscribe"/>
2873 <para>Usage:</para>
2874
2875 <cmdsynopsis>
2876 <command>lists</command>
2877 <arg choice="opt" rep="repeat">
2878 <option>-group</option>
2879 <replaceable class="parameter">name</replaceable>
2880 </arg>
2881 <arg choice="plain">
2882 <replaceable class="parameter">regexp</replaceable>
2883 </arg>
2884 <arg choice="opt" rep="repeat">
2885 <replaceable class="parameter">regexp</replaceable>
2886 </arg>
2887
2888 <command>unlists</command>
2889 <arg choice="opt" rep="repeat">
2890 <option>-group</option>
2891 <replaceable class="parameter">name</replaceable>
2892 </arg>
2893 <group choice="req">
2894 <arg choice="plain">
2895 <replaceable class="parameter">*</replaceable>
2896 </arg>
2897 <arg choice="plain" rep="repeat">
2898 <replaceable class="parameter">regexp</replaceable>
2899 </arg>
2900 </group>
2901
2902 <command>subscribe</command>
2903 <arg choice="opt" rep="repeat">
2904 <option>-group</option>
2905 <replaceable class="parameter">name</replaceable>
2906 </arg>
2907 <arg choice="plain">
2908 <replaceable class="parameter">regexp</replaceable>
2909 </arg>
2910 <arg choice="opt" rep="repeat">
2911 <replaceable class="parameter">regexp</replaceable>
2912 </arg>
2913
2914 <command>unsubscribe</command>
2915 <arg choice="opt" rep="repeat">
2916 <option>-group</option>
2917 <replaceable class="parameter">name</replaceable>
2918 </arg>
2919 <group choice="req">
2920 <arg choice="plain">
2921 <replaceable class="parameter">*</replaceable>
2922 </arg>
2923 <arg choice="plain" rep="repeat">
2924 <replaceable class="parameter">regexp</replaceable>
2925 </arg>
2926 </group>
2927 </cmdsynopsis>
2928
2929 <para>
2930 Mutt has a few nice features for <link linkend="using-lists">handling mailing lists</link>.  In order to take advantage of them, you must
2931 specify which addresses belong to mailing lists, and which mailing
2932 lists you are subscribed to. Mutt also has limited support for
2933 auto-detecting mailing lists: it supports parsing
2934 <literal>mailto:</literal> links in the common
2935 <literal>List-Post:</literal> header which has the same effect as
2936 specifying the list address via the <command>lists</command> command
2937 (except the group feature). Once you have done this, the
2938 <link linkend="list-reply"><literal>&lt;list-reply&gt;</literal></link>
2939 function will work for all known lists.
2940 Additionally, when you send a message to a subscribed list, Mutt will
2941 add a Mail-Followup-To header to tell other users' mail user agents
2942 not to send copies of replies to your personal address.
2943 </para>
2944
2945 <note>
2946 <para>
2947 The Mail-Followup-To header is a non-standard extension which is not
2948 supported by all mail user agents.  Adding it is not bullet-proof against
2949 receiving personal CCs of list messages.  Also note that the generation
2950 of the Mail-Followup-To header is controlled by the
2951 <link linkend="followup-to">&dollar;followup&lowbar;to</link>
2952 configuration variable since it's common practice on some mailing lists
2953 to send Cc upons replies (which is more a group- than a list-reply).
2954 </para>
2955 </note>
2956
2957 <para>
2958 More precisely, Mutt maintains lists of patterns for the addresses
2959 of known and subscribed mailing lists.  Every subscribed mailing
2960 list is known. To mark a mailing list as known, use the <command>list</command>
2961 command.  To mark it as subscribed, use <command>subscribe</command>.
2962 </para>
2963
2964 <para>
2965 You can use regular expressions with both commands. To mark all
2966 messages sent to a specific bug report's address on Debian's bug
2967 tracking system as list mail, for instance, you could say
2968 </para>
2969
2970 <screen>
2971 subscribe &lsqb;0-9&rsqb;*.*@bugs.debian.org</screen>
2972
2973 <para>
2974 as it's often, it's sufficient to just give a portion of the list's e-mail address.
2975 </para>
2976
2977 <para>
2978 Specify as much of the address as you need to to remove ambiguity.  For
2979 example, if you've subscribed to the Mutt mailing list, you will receive mail
2980 addressed to <literal>mutt-users@mutt.org</literal>.  So, to tell Mutt
2981 that this is a mailing list, you could add <literal>lists mutt-users@</literal> to your
2982 initialization file.  To tell Mutt that you are subscribed to it,
2983 add <literal><command>subscribe</command> mutt-users</literal> to your initialization file instead.
2984 If you also happen to get mail from someone whose address is
2985 <literal>mutt-users@example.com</literal>, you could use
2986 <literal><command>lists</command> ^mutt-users@mutt&bsol;&bsol;.org$</literal>
2987 or <literal><command>subscribe</command> ^mutt-users@mutt&bsol;&bsol;.org$</literal> to
2988 match only mail from the actual list.
2989 </para>
2990
2991 <para>
2992 The <literal>-group</literal> flag adds all of the subsequent regular expressions
2993 to the named group.
2994 </para>
2995
2996 <para>
2997 The <quote>unlists</quote> command is used to remove a token from the list of
2998 known and subscribed mailing-lists. Use <quote>unlists *</quote> to remove all
2999 tokens.
3000 </para>
3001
3002 <para>
3003 To remove a mailing list from the list of subscribed mailing lists,
3004 but keep it on the list of known mailing lists, use <command>unsubscribe</command>.
3005 </para>
3006
3007 </sect1>
3008
3009 <sect1 id="mbox-hook">
3010 <title>Using Multiple Spool Mailboxes</title>
3011
3012 <para>Usage:</para>
3013
3014 <cmdsynopsis>
3015 <command>mbox-hook</command>
3016 <arg choice="plain">
3017 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
3018 </arg>
3019 <arg choice="plain">
3020 <replaceable class="parameter">mailbox</replaceable>
3021 </arg>
3022 </cmdsynopsis>
3023
3024 <para>
3025 This command is used to move read messages from a specified mailbox to a
3026 different mailbox automatically when you quit or change folders.
3027 <emphasis>pattern</emphasis> is a regular expression specifying the mailbox to treat as a
3028 <quote>spool</quote> mailbox and <emphasis>mailbox</emphasis> specifies where mail should be saved when
3029 read.
3030 </para>
3031
3032 <para>
3033 Unlike some of the other <emphasis>hook</emphasis> commands, only the <emphasis>first</emphasis> matching
3034 pattern is used (it is not possible to save read mail in more than a single
3035 mailbox).
3036 </para>
3037
3038 </sect1>
3039
3040 <sect1 id="mailboxes">
3041 <title>Monitoring Incoming Mail</title>
3042
3043 <para>Usage:</para>
3044
3045 <cmdsynopsis>
3046 <command>mailboxes</command>
3047 <arg choice="plain">
3048 <replaceable class="parameter">mailbox</replaceable>
3049 </arg>
3050 <arg choice="opt" rep="repeat">
3051 <replaceable class="parameter">mailbox</replaceable>
3052 </arg>
3053
3054 <command>unmailboxes</command>
3055 <group choice="req">
3056 <arg choice="plain">
3057 <replaceable class="parameter">*</replaceable>
3058 </arg>
3059 <arg choice="plain" rep="repeat">
3060 <replaceable class="parameter">mailbox</replaceable>
3061 </arg>
3062 </group>
3063 </cmdsynopsis>
3064
3065 <para>
3066 This command specifies folders which can receive mail and
3067 which will be checked for new messages periodically.
3068 </para>
3069
3070 <para>
3071 <emphasis>folder</emphasis> can either be a local file or directory
3072 (Mbox/Mmdf or Maildir/Mh). If Mutt was built with POP and/or IMAP
3073 support, <emphasis>folder</emphasis> can also be a POP/IMAP folder
3074 URL. The URL syntax is described in <xref linkend="url-syntax"/>,
3075 POP and IMAP are described in <xref linkend="pop"/> and <xref linkend="imap"/>
3076 respectively.
3077 </para>
3078
3079 <para>
3080 Mutt provides a number of advanced features for handling (possibly many)
3081 folders and new mail within them, please refer to
3082 <xref linkend="handling-folders"/> for details (including in what
3083 situations and how often Mutt checks for new mail).
3084 </para>
3085
3086 <para>
3087 The <quote>unmailboxes</quote> command is used to remove a token from the list
3088 of folders which receive mail. Use <quote>unmailboxes *</quote> to remove all
3089 tokens.
3090 </para>
3091
3092 <note>
3093 <para>
3094 The folders in the <command>mailboxes</command> command are resolved when
3095 the command is executed, so if these names contain <link linkend="shortcuts">shortcut characters</link> (such as <quote>=</quote> and <quote>!</quote>), any variable
3096 definition that affects these characters (like <link linkend="folder">&dollar;folder</link> and <link linkend="spoolfile">&dollar;spoolfile</link>)
3097 should be set before the <command>mailboxes</command> command. If
3098 none of these shorcuts are used, a local path should be absolute as
3099 otherwise Mutt tries to find it relative to the directory
3100 from where Mutt was started which may not always be desired.
3101 </para>
3102 </note>
3103
3104 <para>
3105 For Mbox and Mmdf folders, new mail is detected by comparing access and/or
3106 modification times of files: Mutt assumes a folder has new mail if it wasn't
3107 accessed after it was last modified. Utilities like <literal>biff</literal> or
3108 <literal>frm</literal> or any other program which accesses the mailbox might cause
3109 Mutt to never detect new mail for that mailbox if they do not properly reset the
3110 access time. Other possible causes of Mutt not detecting new mail in these folders
3111 are backup tools (updating access times) or filesystems mounted without
3112 access time update support.
3113 </para>
3114
3115 <para>
3116 In cases where new mail detection for Mbox or Mmdf folders appears to be
3117 unreliable, the
3118 <link linkend="check-mbox-size">&dollar;check&lowbar;mbox&lowbar;size</link>
3119 option can be used to make Mutt track and consult file sizes for new
3120 mail detection instead which won't work for size-neutral changes.
3121 </para>
3122
3123 </sect1>
3124
3125 <sect1 id="my-hdr">
3126 <title>User-Defined Headers</title>
3127
3128 <para>Usage:</para>
3129
3130 <cmdsynopsis>
3131 <command>my&lowbar;hdr</command>
3132 <arg choice="plain">
3133 <replaceable class="parameter">string</replaceable>
3134 </arg>
3135
3136 <command>unmy&lowbar;hdr</command>
3137 <group choice="req">
3138 <arg choice="plain">
3139 <replaceable class="parameter">*</replaceable>
3140 </arg>
3141 <arg choice="plain" rep="repeat">
3142 <replaceable class="parameter">field</replaceable>
3143 </arg>
3144 </group>
3145 </cmdsynopsis>
3146
3147 <para>
3148 The <command>my&lowbar;hdr</command> command allows you to create your own header
3149 fields which will be added to every message you send and appear in the
3150 editor if <link linkend="edit-headers">&dollar;edit&lowbar;headers</link> is set.
3151 </para>
3152
3153 <para>
3154 For example, if you would like to add an <quote>Organization:</quote> header field to
3155 all of your outgoing messages, you can put the command something like
3156 shown in <xref linkend="ex-my-hdr"/> in your <literal>.muttrc</literal>.
3157 </para>
3158
3159 <example id="ex-my-hdr">
3160 <title>Defining custom headers</title>
3161 <screen>
3162 my&lowbar;hdr Organization: A Really Big Company, Anytown, USA
3163 </screen>
3164 </example>
3165
3166 <note>
3167 <para>
3168 Space characters are <emphasis>not</emphasis> allowed between the keyword and
3169 the colon (<quote>:</quote>). The standard for electronic mail (RFC2822) says that
3170 space is illegal there, so Mutt enforces the rule.
3171 </para>
3172 </note>
3173
3174 <para>
3175 If you would like to add a header field to a single message, you should
3176 either set the <link linkend="edit-headers">&dollar;edit&lowbar;headers</link> variable,
3177 or use the <literal>&lt;edit-headers&gt;</literal> function (default: <quote>E</quote>) in the compose menu so
3178 that you can edit the header of your message along with the body.
3179 </para>
3180
3181 <para>
3182 To remove user defined header fields, use the <command>unmy&lowbar;hdr</command>
3183 command. You may specify an asterisk (<quote>*</quote>) to remove all header
3184 fields, or the fields to remove. For example, to remove all <quote>To</quote> and
3185 <quote>Cc</quote> header fields, you could use:
3186 </para>
3187
3188 <screen>
3189 unmy&lowbar;hdr to cc
3190 </screen>
3191
3192 </sect1>
3193
3194 <sect1 id="save-hook">
3195 <title>Specify Default Save Mailbox</title>
3196
3197 <para>Usage:</para>
3198
3199 <cmdsynopsis>
3200 <command>save-hook</command>
3201 <arg choice="plain">
3202 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
3203 </arg>
3204 <arg choice="plain">
3205 <replaceable class="parameter">mailbox</replaceable>
3206 </arg>
3207 </cmdsynopsis>
3208
3209 <para>
3210 This command is used to override the default mailbox used when saving
3211 messages. <emphasis>mailbox</emphasis> will be used as the default if the message
3212 matches <emphasis>pattern</emphasis>, see <xref linkend="pattern-hook"/> for information
3213 on the exact format.
3214 </para>
3215
3216 <para>
3217 To provide more flexibility and good defaults, Mutt applies the
3218 expandos of <link linkend="index-format">&dollar;index&lowbar;format</link> to
3219 <emphasis>mailbox</emphasis> after it was expanded.
3220 </para>
3221
3222 <example id="ex-save-hook-exando">
3223 <title>Using %-expandos in <command>save-hook</command></title>
3224 <screen>
3225 # default: save all to ~/Mail/&lt;author name&gt;
3226 save-hook . ~/Mail/%F
3227
3228 # save from me@turing.cs.hmc.edu and me@cs.hmc.edu to $folder/elkins
3229 save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins
3230
3231 # save from aol.com to $folder/spam
3232 save-hook aol\\.com$ +spam
3233 </screen>
3234 </example>
3235
3236 <para>
3237 Also see the <link linkend="fcc-save-hook"><command>fcc-save-hook</command></link> command.
3238 </para>
3239
3240 </sect1>
3241
3242 <sect1 id="fcc-hook">
3243 <title>Specify Default Fcc: Mailbox When Composing</title>
3244
3245 <para>Usage:</para>
3246
3247 <cmdsynopsis>
3248 <command>fcc-hook</command>
3249 <arg choice="plain">
3250 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
3251 </arg>
3252 <arg choice="plain">
3253 <replaceable class="parameter">mailbox</replaceable>
3254 </arg>
3255 </cmdsynopsis>
3256
3257 <para>
3258 This command is used to save outgoing mail in a mailbox other than
3259 <link linkend="record">&dollar;record</link>.  Mutt searches the initial list of
3260 message recipients for the first matching <emphasis>regexp</emphasis> and uses <emphasis>mailbox</emphasis>
3261 as the default Fcc: mailbox.  If no match is found the message will be saved
3262 to <link linkend="record">&dollar;record</link> mailbox.
3263 </para>
3264
3265 <para>
3266 To provide more flexibility and good defaults, Mutt applies the
3267 expandos of <link linkend="index-format">&dollar;index&lowbar;format</link> to
3268 <emphasis>mailbox</emphasis> after it was expanded.
3269 </para>
3270
3271 <para>
3272 See <xref linkend="pattern-hook"/> for information on the exact format of <emphasis>pattern</emphasis>.
3273 </para>
3274
3275 <screen>fcc-hook &lsqb;@.&rsqb;aol&bsol;&bsol;.com&dollar; +spammers</screen>
3276
3277 <para>
3278 ...will save a copy of all messages going to the aol.com domain to
3279 the `+spammers' mailbox by default.  Also see the <link linkend="fcc-save-hook"><command>fcc-save-hook</command></link> command.
3280 </para>
3281
3282 </sect1>
3283
3284 <sect1 id="fcc-save-hook">
3285 <title>Specify Default Save Filename and Default Fcc: Mailbox at Once</title>
3286
3287 <para>Usage:</para>
3288
3289 <cmdsynopsis>
3290 <command>fcc-save-hook</command>
3291 <arg choice="plain">
3292 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
3293 </arg>
3294 <arg choice="plain">
3295 <replaceable class="parameter">mailbox</replaceable>
3296 </arg>
3297 </cmdsynopsis>
3298
3299 <para>
3300 This command is a shortcut, equivalent to doing both a <link linkend="fcc-hook"><command>fcc-hook</command></link>
3301 and a <link linkend="save-hook"><command>save-hook</command></link> with its arguments,
3302 including &percnt;-expansion on <emphasis>mailbox</emphasis> according
3303 to <link linkend="index-format">&dollar;index&lowbar;format</link>.
3304 </para>
3305
3306 </sect1>
3307
3308 <sect1 id="send-hook">
3309 <title>Change Settings Based Upon Message Recipients</title>
3310
3311 <anchor id="reply-hook"/>
3312 <anchor id="send2-hook"/>
3313
3314 <para>Usage:</para>
3315
3316 <cmdsynopsis>
3317 <command>reply-hook</command>
3318 <arg choice="plain">
3319 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
3320 </arg>
3321 <arg choice="plain">
3322 <replaceable class="parameter">command</replaceable>
3323 </arg>
3324
3325 <command>send-hook</command>
3326 <arg choice="plain">
3327 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
3328 </arg>
3329 <arg choice="plain">
3330 <replaceable class="parameter">command</replaceable>
3331 </arg>
3332
3333 <command>send2-hook</command>
3334 <arg choice="plain">
3335 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
3336 </arg>
3337 <arg choice="plain">
3338 <replaceable class="parameter">command</replaceable>
3339 </arg>
3340 </cmdsynopsis>
3341
3342 <para>
3343 These commands can be used to execute arbitrary configuration commands based
3344 upon recipients of the message.  <emphasis>pattern</emphasis> is used to match
3345 the message, see <xref linkend="pattern-hook"/> for details. <emphasis>command</emphasis>
3346 is executed when <emphasis>pattern</emphasis> matches.
3347 </para>
3348
3349 <para>
3350 <command>reply-hook</command> is matched against the message you are <emphasis>replying to</emphasis>,
3351 instead of the message you are <emphasis>sending</emphasis>.  <command>send-hook</command> is
3352 matched against all messages, both <emphasis>new</emphasis>
3353 and <emphasis>replies</emphasis>.
3354 </para>
3355
3356 <note>
3357 <para>
3358 <command>reply-hook</command>s are matched <emphasis>before</emphasis> the <command>send-hook</command>, <emphasis>regardless</emphasis>
3359 of the order specified in the user's configuration file.
3360 </para>
3361 </note>
3362
3363 <para>
3364 <command>send2-hook</command> is matched every time a message is changed, either
3365 by editing it, or by using the compose menu to change its recipients
3366 or subject.  <command>send2-hook</command> is executed after <command>send-hook</command>, and
3367 can, e.g., be used to set parameters such as the <link linkend="sendmail">&dollar;sendmail</link> variable depending on the message's sender
3368 address.
3369 </para>
3370
3371 <para>
3372 For each type of <command>send-hook</command> or <command>reply-hook</command>, when multiple matches
3373 occur, commands are executed in the order they are specified in the <literal>.muttrc</literal>
3374 (for that type of hook).
3375 </para>
3376
3377 <para>
3378 Example: <literal><command>send-hook</command> mutt &quot;<command>set</command> mime&lowbar;forward signature=''&quot;</literal>
3379 </para>
3380
3381 <para>
3382 Another typical use for this command is to change the values of the
3383 <link linkend="attribution">&dollar;attribution</link>, <link linkend="signature">&dollar;signature</link> and <link linkend="locale">&dollar;locale</link>
3384 variables in order to change the language of the attributions and
3385 signatures based upon the recipients.
3386 </para>
3387
3388 <note>
3389 <para>
3390 <command>send-hook</command>'s are only executed once after getting the
3391 initial list of recipients.  Adding a recipient after replying or
3392 editing the message will not cause any <command>send-hook</command> to be executed,
3393 similarily if <link linkend="autoedit">&dollar;autoedit</link> is set
3394 (as then the initial list of recipients is empty). Also note that <link
3395 linkend="my-hdr"><command>my&lowbar;hdr</command></link> commands which
3396 modify recipient headers, or the message's subject, don't have any
3397 effect on the current message when executed from a
3398 <command>send-hook</command>.
3399 </para>
3400 </note>
3401
3402 </sect1>
3403
3404 <sect1 id="message-hook">
3405 <title>Change Settings Before Formatting a Message</title>
3406
3407 <para>Usage:</para>
3408
3409 <cmdsynopsis>
3410 <command>message-hook</command>
3411 <arg choice="plain">
3412 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
3413 </arg>
3414 <arg choice="plain">
3415 <replaceable class="parameter">command</replaceable>
3416 </arg>
3417 </cmdsynopsis>
3418
3419 <para>
3420 This command can be used to execute arbitrary configuration commands
3421 before viewing or formatting a message based upon information about the message.
3422 <emphasis>command</emphasis> is executed if the <emphasis>pattern</emphasis> matches the message to be
3423 displayed. When multiple matches occur, commands are executed in the order
3424 they are specified in the <literal>.muttrc</literal>.
3425 </para>
3426
3427 <para>
3428 See <xref linkend="pattern-hook"/> for
3429 information on the exact format of <emphasis>pattern</emphasis>.
3430 </para>
3431
3432 <para>
3433 Example:
3434 </para>
3435
3436 <screen>
3437 message-hook ~A 'set pager=builtin'
3438 message-hook '~f freshmeat-news' 'set pager="less \"+/^  subject: .*\""'
3439 </screen>
3440
3441 </sect1>
3442
3443 <sect1 id="crypt-hook">
3444 <title>Choosing the Cryptographic Key of the Recipient</title>
3445
3446 <para>Usage:</para>
3447
3448 <cmdsynopsis>
3449 <command>crypt-hook</command>
3450 <arg choice="plain">
3451 <replaceable class="parameter">pattern</replaceable>
3452 </arg>
3453 <arg choice="plain">
3454 <replaceable class="parameter">keyid</replaceable>
3455 </arg>
3456 </cmdsynopsis>
3457
3458 <para>
3459 When encrypting messages with PGP/GnuPG or OpenSSL, you may want to associate a certain
3460 key with a given e-mail address automatically, either because the
3461 recipient's public key can't be deduced from the destination address,
3462 or because, for some reasons, you need to override the key Mutt would
3463 normally use.  The <command>crypt-hook</command> command provides a
3464 method by which you can specify the ID of the public key to be used
3465 when encrypting messages to a certain recipient.
3466 </para>
3467
3468 <para>
3469 The meaning of <emphasis>keyid</emphasis> is to be taken broadly in this context:  You
3470 can either put a numerical key ID here, an e-mail address, or even
3471 just a real name.
3472 </para>
3473
3474 </sect1>
3475
3476 <sect1 id="push">
3477 <title>Adding Key Sequences to the Keyboard Buffer</title>
3478
3479 <para>Usage:</para>
3480
3481 <cmdsynopsis>
3482 <command>push</command>
3483 <arg choice="plain">
3484 <replaceable class="parameter">string</replaceable>
3485 </arg>
3486 </cmdsynopsis>
3487
3488 <para>
3489 This command adds the named string to the keyboard buffer. The string may
3490 contain control characters, key names and function names like the sequence
3491 string in the <link linkend="macro">macro</link> command. You may use it to
3492 automatically run a sequence of commands at startup, or when entering
3493 certain folders. For example, <xref linkend="ex-folder-hook-push"/>
3494 shows how to automatically collapse all threads when entering a folder.
3495 </para>
3496
3497 <example id="ex-folder-hook-push">
3498 <title>Embedding <command>push</command> in <command>folder-hook</command></title>
3499 <screen>
3500 folder-hook . 'push &lt;collapse-all&gt;'
3501 </screen>
3502 </example>
3503
3504 </sect1>
3505
3506 <sect1 id="exec">
3507 <title>Executing Functions</title>
3508
3509 <para>Usage:</para>
3510
3511 <cmdsynopsis>
3512 <command>exec</command>
3513 <arg choice="plain">
3514 <replaceable class="parameter">function</replaceable>
3515 </arg>
3516 <arg choice="opt" rep="repeat">
3517 <replaceable class="parameter">function</replaceable>
3518 </arg>
3519 </cmdsynopsis>
3520
3521 <para>
3522 This command can be used to execute any function. Functions are
3523 listed in the <link linkend="functions">function reference</link>.
3524 <quote><command>exec</command><literal>function</literal></quote> is equivalent to
3525 <quote><literal>push &lt;function&gt;</literal></quote>.
3526 </para>
3527
3528 </sect1>
3529
3530 <sect1 id="score-command">
3531 <title>Message Scoring</title>
3532
3533 <para>Usage:</para>
3534
3535 <cmdsynopsis>
3536 <command>score</command>
3537 <arg choice="plain">
3538 <replaceable class="parameter">pattern</replaceable>
3539 </arg>
3540 <arg choice="plain">
3541 <replaceable class="parameter">value</replaceable>
3542 </arg>
3543
3544 <command>unscore</command>
3545 <group choice="req">
3546 <arg choice="plain">
3547 <replaceable class="parameter">*</replaceable>
3548 </arg>
3549 <arg choice="plain" rep="repeat">
3550 <replaceable class="parameter">pattern</replaceable>
3551 </arg>
3552 </group>
3553 </cmdsynopsis>
3554
3555 <para>
3556 The <command>score</command> commands adds <emphasis>value</emphasis> to a message's score if <emphasis>pattern</emphasis>
3557 matches it.  <emphasis>pattern</emphasis> is a string in the format described in the <link linkend="patterns">patterns</link> section (note: For efficiency reasons, patterns
3558 which scan information not available in the index, such as <literal>&tilde;b</literal>,
3559 <literal>&tilde;B</literal> or <literal>&tilde;h</literal>, may not be used).  <emphasis>value</emphasis> is a
3560 positive or negative integer.  A message's final score is the sum total of all
3561 matching <command>score</command> entries.  However, you may optionally prefix <emphasis>value</emphasis> with
3562 an equal sign (<quote>=</quote>) to cause evaluation to stop at a particular entry if there is
3563 a match.  Negative final scores are rounded up to 0.
3564 </para>
3565
3566 <para>
3567 The <command>unscore</command> command removes score entries from the list.  You <emphasis>must</emphasis>
3568 specify the same pattern specified in the <command>score</command> command for it to be
3569 removed.  The pattern <quote>*</quote> is a special token which means to clear the list
3570 of all score entries.
3571 </para>
3572
3573 </sect1>
3574
3575 <sect1 id="spam">
3576 <title>Spam Detection</title>
3577
3578 <para>Usage:</para>
3579
3580 <cmdsynopsis>
3581 <command>spam</command>
3582 <arg choice="plain">
3583 <replaceable class="parameter">pattern</replaceable>
3584 </arg>
3585 <arg choice="plain">
3586 <replaceable class="parameter">format</replaceable>
3587 </arg>
3588
3589 <command>nospam</command>
3590 <group choice="req">
3591 <arg choice="plain">
3592 <replaceable class="parameter">*</replaceable>
3593 </arg>
3594 <arg choice="plain">
3595 <replaceable class="parameter">pattern</replaceable>
3596 </arg>
3597 </group>
3598 </cmdsynopsis>
3599
3600 <para>
3601 Mutt has generalized support for external spam-scoring filters.
3602 By defining your spam patterns with the <command>spam</command> and <literal>nospam</literal>
3603 commands, you can <emphasis>limit</emphasis>, <emphasis>search</emphasis>, and <emphasis>sort</emphasis> your
3604 mail based on its spam attributes, as determined by the external
3605 filter. You also can display the spam attributes in your index
3606 display using the <literal>&percnt;H</literal> selector in the <link linkend="index-format">&dollar;index&lowbar;format</link> variable. (Tip: try <literal>&percnt;?H?[&percnt;H] ?</literal>
3607 to display spam tags only when they are defined for a given message.)
3608 </para>
3609
3610 <para>
3611 Your first step is to define your external filter's spam patterns using
3612 the <command>spam</command> command. <emphasis>pattern</emphasis> should be a regular expression
3613 that matches a header in a mail message. If any message in the mailbox
3614 matches this regular expression, it will receive a <quote>spam tag</quote> or
3615 <quote>spam attribute</quote> (unless it also matches a <command>nospam</command> pattern &mdash; see
3616 below.) The appearance of this attribute is entirely up to you, and is
3617 governed by the <emphasis>format</emphasis> parameter. <emphasis>format</emphasis> can be any static
3618 text, but it also can include back-references from the <emphasis>pattern</emphasis>
3619 expression. (A regular expression <quote>back-reference</quote> refers to a
3620 sub-expression contained within parentheses.) <literal>&percnt;1</literal> is replaced with
3621 the first back-reference in the regex, <literal>&percnt;2</literal> with the second, etc.
3622 </para>
3623
3624 <para>
3625 To match spam tags, mutt needs the corresponding header information
3626 which is always the case for local and POP folders but not for IMAP in
3627 the default configuration. Depending on the spam header to be analyzed,
3628 <link linkend="imap-headers">&dollar;imap&lowbar;headers</link> may need
3629 to be adjusted.
3630 </para>
3631
3632 <para>
3633 If you're using multiple spam filters, a message can have more than
3634 one spam-related header. You can define <command>spam</command> patterns for each
3635 filter you use. If a message matches two or more of these patterns, and
3636 the <link linkend="spam-separator">&dollar;spam&lowbar;separator</link> variable is set to a string, then the
3637 message's spam tag will consist of all the <emphasis>format</emphasis> strings joined
3638 together, with the value of <link linkend="spam-separator">&dollar;spam&lowbar;separator</link> separating
3639 them.
3640 </para>
3641
3642 <para>
3643 For example, suppose one uses DCC, SpamAssassin, and PureMessage, then
3644 the configuration might look like in <xref linkend="ex-spam"/>.
3645 </para>
3646
3647 <example id="ex-spam">
3648 <title>Configuring spam detection</title>
3649 <screen>
3650 spam "X-DCC-.*-Metrics:.*(....)=many"         "90+/DCC-%1"
3651 spam "X-Spam-Status: Yes"                     "90+/SA"
3652 spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM"
3653 set spam_separator=", "
3654 </screen>
3655 </example>
3656
3657 <para>
3658 If then a message is received that DCC registered with <quote>many</quote> hits
3659 under the <quote>Fuz2</quote> checksum, and that PureMessage registered with a
3660 97&percnt; probability of being spam, that message's spam tag would read
3661 <literal>90+/DCC-Fuz2, 97/PM</literal>. (The four characters before <quote>=many</quote> in a
3662 DCC report indicate the checksum used &mdash; in this case, <quote>Fuz2</quote>.)
3663 </para>
3664
3665 <para>
3666 If the <link linkend="spam-separator">&dollar;spam&lowbar;separator</link> variable is unset, then each
3667 spam pattern match supersedes the previous one. Instead of getting
3668 joined <emphasis>format</emphasis> strings, you'll get only the last one to match.
3669 </para>
3670
3671 <para>
3672 The spam tag is what will be displayed in the index when you use
3673 <literal>&percnt;H</literal> in the <link linkend="index-format">&dollar;index&lowbar;format</link> variable. It's also the
3674 string that the <literal>&tilde;H</literal> pattern-matching expression matches against for
3675 <literal>&lt;search&gt;</literal> and <literal>&lt;limit&gt;</literal> functions. And it's what sorting by spam
3676 attribute will use as a sort key.
3677 </para>
3678
3679 <para>
3680 That's a pretty complicated example, and most people's actual
3681 environments will have only one spam filter. The simpler your
3682 configuration, the more effective Mutt can be, especially when it comes
3683 to sorting.
3684 </para>
3685
3686 <para>
3687 Generally, when you sort by spam tag, Mutt will sort <emphasis>lexically</emphasis> &mdash;
3688 that is, by ordering strings alphanumerically. However, if a spam tag
3689 begins with a number, Mutt will sort numerically first, and lexically
3690 only when two numbers are equal in value. (This is like UNIX's
3691 <literal>sort -n</literal>.) A message with no spam attributes at all &mdash; that is, one
3692 that didn't match <emphasis>any</emphasis> of your <command>spam</command> patterns &mdash; is sorted at
3693 lowest priority. Numbers are sorted next, beginning with 0 and ranging
3694 upward. Finally, non-numeric strings are sorted, with <quote>a</quote> taking lower
3695 priority than <quote>z</quote>. Clearly, in general, sorting by spam tags is most
3696 effective when you can coerce your filter to give you a raw number. But
3697 in case you can't, Mutt can still do something useful.
3698 </para>
3699
3700 <para>
3701 The <command>nospam</command> command can be used to write exceptions to <command>spam</command>
3702 patterns. If a header pattern matches something in a <command>spam</command> command,
3703 but you nonetheless do not want it to receive a spam tag, you can list a
3704 more precise pattern under a <command>nospam</command> command.
3705 </para>
3706
3707 <para>
3708 If the <emphasis>pattern</emphasis> given to <command>nospam</command> is exactly the same as the
3709 <emphasis>pattern</emphasis> on an existing <command>spam</command> list entry, the effect will be to
3710 remove the entry from the spam list, instead of adding an exception.
3711 Likewise, if the <emphasis>pattern</emphasis> for a <command>spam</command> command matches an entry
3712 on the <command>nospam</command> list, that nospam entry will be removed. If the
3713 <emphasis>pattern</emphasis> for <command>nospam</command> is <quote>*</quote>, <emphasis>all entries on both lists</emphasis>
3714 will be removed. This might be the default action if you use <command>spam</command>
3715 and <command>nospam</command> in conjunction with a <command>folder-hook</command>.
3716 </para>
3717
3718 <para>
3719 You can have as many <command>spam</command> or <command>nospam</command> commands as you like.
3720 You can even do your own primitive <command>spam</command> detection within Mutt &mdash; for
3721 example, if you consider all mail from <literal>MAILER-DAEMON</literal> to be spam,
3722 you can use a <command>spam</command> command like this:
3723 </para>
3724
3725 <screen>
3726 spam "^From: .*MAILER-DAEMON"       "999"
3727 </screen>
3728
3729 </sect1>
3730
3731 <sect1 id="set">
3732 <title>Setting and Querying Variables</title>
3733
3734 <sect2 id="var-types">
3735 <title>Variable Types</title>
3736
3737 <para>
3738 Mutt supports these types of configuration variables:
3739 </para>
3740
3741 <variablelist>
3742 <varlistentry>
3743 <term>boolean</term>
3744 <listitem>
3745 <para>
3746 A boolean expression, either <quote>yes</quote> or <quote>no</quote>.
3747 </para>
3748 </listitem>
3749 </varlistentry>
3750 <varlistentry>
3751 <term>number</term>
3752 <listitem>
3753 <para>
3754 A signed integer number in the range -32768 to 32767.
3755 </para>
3756 </listitem>
3757 </varlistentry>
3758 <varlistentry>
3759 <term>string</term>
3760 <listitem>
3761 <para>
3762 Arbitrary text.
3763 </para>
3764 </listitem>
3765 </varlistentry>
3766 <varlistentry>
3767 <term>path</term>
3768 <listitem>
3769 <para>
3770 A specialized string for representing paths including support for
3771 mailbox shortcuts (see <xref linkend="shortcuts"/>) as well as tilde
3772 (<quote>&tilde;</quote>) for a user's home directory and more.
3773 </para>
3774 </listitem>
3775 </varlistentry>
3776 <varlistentry>
3777 <term>quadoption</term>
3778 <listitem>
3779 <para>
3780 Like a boolean but triggers a prompt when set to <quote>ask-yes</quote>
3781 or <quote>ask-no</quote> with <quote>yes</quote> and <quote>no</quote>
3782 preselected respectively.
3783 </para>
3784 </listitem>
3785 </varlistentry>
3786 <varlistentry>
3787 <term>sort order</term>
3788 <listitem>
3789 <para>
3790 A specialized string allowing only particular words as values depending
3791 on the variable.
3792 </para>
3793 </listitem>
3794 </varlistentry>
3795 <varlistentry>
3796 <term>regular expression</term>
3797 <listitem>
3798 <para>
3799 A regular expression, see <xref linkend="regexp"/> for an introduction.
3800 </para>
3801 </listitem>
3802 </varlistentry>
3803 <varlistentry>
3804 <term>folder magic</term>
3805 <listitem>
3806 <para>
3807 Specifies the type of folder to use: <emphasis>mbox</emphasis>,
3808 <emphasis>mmdf</emphasis>, <emphasis>mh</emphasis>
3809 or <emphasis>maildir</emphasis>.
3810 Currently only used to determine the type for newly created folders.
3811 </para>
3812 </listitem>
3813 </varlistentry>
3814 <varlistentry>
3815 <term>e-mail address</term>
3816 <listitem>
3817 <para>
3818 An e-mail address either with or without
3819 realname. The older <quote><literal>user@example.org (Joe User)</literal></quote>
3820 form is supported but strongly deprecated.
3821 </para>
3822 </listitem>
3823 </varlistentry>
3824 <varlistentry>
3825 <term>user-defined</term>
3826 <listitem>
3827 <para>
3828 Arbitrary text, see <xref linkend="set-myvar"/> for details.
3829 </para>
3830 </listitem>
3831 </varlistentry>
3832 </variablelist>
3833
3834 </sect2>
3835
3836 <sect2 id="set-commands">
3837 <title>Commands</title>
3838
3839 <para>
3840 The following commands are available to manipulate and query variables:
3841 </para>
3842
3843 <para>Usage:</para>
3844
3845 <cmdsynopsis>
3846 <command>set</command>
3847 <group choice="req">
3848 <arg choice="plain">
3849 <group choice="opt">
3850 <arg choice="plain"><option>no</option></arg>
3851 <arg choice="plain"><option>inv</option></arg>
3852 </group>
3853 <replaceable class="parameter">variable</replaceable>
3854 </arg>
3855 <arg choice="plain">
3856 <replaceable class="parameter">variable=value</replaceable>
3857 </arg>
3858 </group>
3859 <arg choice="opt" rep="repeat"></arg>
3860
3861 <command>toggle</command>
3862 <arg choice="plain">
3863 <replaceable class="parameter">variable</replaceable>
3864 </arg>
3865 <arg choice="opt" rep="repeat">
3866 <replaceable class="parameter">variable</replaceable>
3867 </arg>
3868
3869 <command>unset</command>
3870 <arg choice="plain">
3871 <replaceable class="parameter">variable</replaceable>
3872 </arg>
3873 <arg choice="opt" rep="repeat">
3874 <replaceable class="parameter">variable</replaceable>
3875 </arg>
3876
3877 <command>reset</command>
3878 <arg choice="plain">
3879 <replaceable class="parameter">variable</replaceable>
3880 </arg>
3881 <arg choice="opt" rep="repeat">
3882 <replaceable class="parameter">variable</replaceable>
3883 </arg>
3884 </cmdsynopsis>
3885
3886 <para>
3887 This command is used to set (and unset) <link linkend="variables">configuration variables</link>.  There are four basic types of variables:
3888 boolean, number, string and quadoption.  <emphasis>boolean</emphasis> variables can be
3889 <emphasis>set</emphasis> (true) or <emphasis>unset</emphasis> (false).  <emphasis>number</emphasis> variables can be
3890 assigned a positive integer value.
3891 <emphasis>string</emphasis> variables consist of any number of printable characters and
3892 must be enclosed in quotes if they contain spaces or tabs.  You
3893 may also use the escape sequences <quote>&bsol;n</quote> and <quote>&bsol;t</quote> for newline and tab, respectively.
3894 <emphasis>quadoption</emphasis> variables are used to control whether or not to be prompted
3895 for certain actions, or to specify a default action.  A value of <emphasis>yes</emphasis>
3896 will cause the action to be carried out automatically as if you had answered
3897 yes to the question.  Similarly, a value of <emphasis>no</emphasis> will cause the
3898 action to be carried out as if you had answered <quote>no.</quote>  A value of
3899 <emphasis>ask-yes</emphasis> will cause a prompt with a default answer of <quote>yes</quote> and
3900 <emphasis>ask-no</emphasis> will provide a default answer of <quote>no.</quote>
3901 </para>
3902
3903 <para>
3904 Prefixing a variable with <quote>no</quote> will unset it.  Example: <literal><command>set</command> noaskbcc</literal>.
3905 </para>
3906
3907 <para>
3908 For <emphasis>boolean</emphasis> variables, you may optionally prefix the variable name with
3909 <literal>inv</literal> to toggle the value (on or off).  This is useful when writing
3910 macros.  Example: <literal><command>set</command> invsmart&lowbar;wrap</literal>.
3911 </para>
3912
3913 <para>
3914 The <command>toggle</command> command automatically prepends the <literal>inv</literal> prefix to all
3915 specified variables.
3916 </para>
3917
3918 <para>
3919 The <command>unset</command> command automatically prepends the <literal>no</literal> prefix to all
3920 specified variables.
3921 </para>
3922
3923 <para>
3924 Using the <literal>&lt;enter-command&gt;</literal> function in the <emphasis>index</emphasis> menu, you can query the
3925 value of a variable by prefixing the name of the variable with a question
3926 mark:
3927 </para>
3928
3929 <screen>
3930 set ?allow_8bit
3931 </screen>
3932
3933 <para>
3934 The question mark is actually only required for boolean and quadoption
3935 variables.
3936 </para>
3937
3938 <para>
3939 The <command>reset</command> command resets all given variables to the compile time
3940 defaults (hopefully mentioned in this manual). If you use the command
3941 <command>set</command> and prefix the variable with <quote>&amp;</quote> this has the same
3942 behavior as the <command>reset</command> command.
3943 </para>
3944
3945 <para>
3946 With the <command>reset</command> command there exists the special variable <quote>all</quote>,
3947 which allows you to reset all variables to their system defaults.
3948 </para>
3949
3950 </sect2>
3951
3952 <sect2 id="set-myvar">
3953 <title>User-Defined Variables</title>
3954
3955 <sect3 id="set-myvar-intro">
3956 <title>Introduction</title>
3957
3958 <para>
3959 Along with the variables listed in the
3960 <link linkend="variables">Configuration variables</link> section, Mutt
3961 supports user-defined variables with names starting
3962 with <literal>my&lowbar;</literal> as in, for
3963 example, <literal>my&lowbar;cfgdir</literal>.
3964 </para>
3965
3966 <para>
3967 The <command>set</command> command either creates a
3968 custom <literal>my&lowbar;</literal> variable or changes its
3969 value if it does exist already. The <command>unset</command> and <command>reset</command>
3970 commands remove the variable entirely.
3971 </para>
3972
3973 <para>
3974 Since user-defined variables are expanded in the same way that
3975 environment variables are (except for
3976 the <link linkend="shell-escape">shell-escape</link> command and
3977 backtick expansion), this feature can be used to make configuration
3978 files more readable.
3979 </para>
3980
3981 </sect3>
3982
3983 <sect3 id="set-myvar-examples">
3984 <title>Examples</title>
3985
3986 <para>
3987 The following example defines and uses the variable <literal>my&lowbar;cfgdir</literal>
3988 to abbreviate the calls of the <link linkend="source"><command>source</command></link> command:
3989 </para>
3990
3991 <example id="ex-myvar1">
3992 <title>Using user-defined variables for config file readability</title>
3993 <screen>
3994 set my_cfgdir = $HOME/mutt/config
3995
3996 source $my_cfgdir/hooks
3997 source $my_cfgdir/macros
3998 # more source commands...
3999 </screen>
4000 </example>
4001
4002 <para>
4003 A custom variable can also be used in macros to backup the current value
4004 of another variable. In the following example, the value of the
4005 <link linkend="delete">&dollar;delete</link> is changed temporarily
4006 while its original value is saved as <literal>my&lowbar;delete</literal>.
4007 After the macro has executed all commands, the original value of <link
4008 linkend="delete">&dollar;delete</link> is restored.
4009 </para>
4010
4011 <example id="ex-myvar2">
4012 <title>Using user-defined variables for backing up other config option values</title>
4013 <screen>
4014 macro pager ,x '&bsol;
4015 &lt;enter-command&gt;set my_delete=$delete&lt;enter&gt;&bsol;
4016 &lt;enter-command&gt;set delete=yes&lt;enter&gt;&bsol;
4017 ...&bsol;
4018 &lt;enter-command&gt;set delete=$my_delete&lt;enter&gt;'
4019 </screen>
4020 </example>
4021
4022 <para>
4023 Since Mutt expands such values already when parsing the configuration
4024 file(s), the value of <literal>&dollar;my&lowbar;delete</literal> in the
4025 last example would be the value of <link linkend="delete">&dollar;delete</link> exactly
4026 as it was at that point during parsing the configuration file. If
4027 another statement would change the value for <link linkend="delete">&dollar;delete</link>
4028 later in the same or another file, it would have no effect on
4029 <literal>&dollar;my&lowbar;delete</literal>. However, the expansion can
4030 be deferred to runtime, as shown in the next example, when escaping the
4031 dollar sign.
4032 </para>
4033
4034 <example id="ex-myvar3">
4035 <title>Deferring user-defined variable expansion to runtime</title>
4036 <screen>
4037 macro pager &lt;PageDown&gt; "&bsol;
4038 &lt;enter-command&gt; set my&lowbar;old&lowbar;pager&lowbar;stop=&bsol;&dollar;pager&lowbar;stop pager&lowbar;stop&lt;Enter&gt;&bsol;
4039 &lt;next-page&gt;&bsol;
4040 &lt;enter-command&gt; set pager&lowbar;stop=&bsol;&dollar;my&lowbar;old&lowbar;pager&lowbar;stop&lt;Enter&gt;&bsol;
4041 &lt;enter-command&gt; unset my&lowbar;old&lowbar;pager&lowbar;stop&lt;Enter&gt;"
4042 </screen>
4043 </example>
4044
4045 <para>
4046 Note that there is a space
4047 between <literal>&lt;enter-command&gt;</literal> and
4048 the <command>set</command> configuration command, preventing Mutt from
4049 recording the <command>macro</command>'s commands into its history.
4050 </para>
4051
4052 </sect3>
4053
4054 </sect2>
4055
4056 </sect1>
4057
4058 <sect1 id="source">
4059 <title>Reading Initialization Commands From Another File</title>
4060
4061 <para>Usage:</para>
4062
4063 <cmdsynopsis>
4064 <command>source</command>
4065 <arg choice="plain">
4066 <replaceable class="parameter">filename</replaceable>
4067 </arg>
4068 </cmdsynopsis>
4069
4070 <para>
4071 This command allows the inclusion of initialization commands
4072 from other files.  For example, I place all of my aliases in
4073 <literal>&tilde;/.mail&lowbar;aliases</literal> so that I can make my
4074 <literal>&tilde;/.muttrc</literal> readable and keep my aliases private.
4075 </para>
4076
4077 <para>
4078 If the filename begins with a tilde (<quote>&tilde;</quote>), it will be expanded to the
4079 path of your home directory.
4080 </para>
4081
4082 <para>
4083 If the filename ends with a vertical bar (<quote>&verbar;</quote>), then <emphasis>filename</emphasis> is
4084 considered to be an executable program from which to read input (eg.
4085 <literal><command>source</command> &tilde;/bin/myscript&verbar;</literal>).
4086 </para>
4087
4088 </sect1>
4089
4090 <sect1 id="unhook">
4091 <title>Removing Hooks</title>
4092
4093 <para>Usage:</para>
4094
4095 <cmdsynopsis>
4096 <command>unhook</command>
4097 <group choice="req">
4098 <arg choice="plain">
4099 <replaceable class="parameter">*</replaceable>
4100 </arg>
4101 <arg choice="plain">
4102 <replaceable class="parameter">hook-type</replaceable>
4103 </arg>
4104 </group>
4105 </cmdsynopsis>
4106
4107 <para>
4108 This command permits you to flush hooks you have previously defined.
4109 You can either remove all hooks by giving the <quote>*</quote> character as an
4110 argument, or you can remove all hooks of a specific type by saying
4111 something like <literal><command>unhook</command> send-hook</literal>.
4112 </para>
4113
4114 </sect1>
4115
4116 <sect1 id="formatstrings">
4117 <title>Format Strings</title>
4118
4119 <sect2 id="formatstrings-basics">
4120 <title>Basic usage</title>
4121
4122 <para>
4123 Format strings are a general concept you'll find in several locations
4124 through the Mutt configuration, especially in the
4125 <link linkend="index-format">&dollar;index&lowbar;format</link>,
4126 <link linkend="pager-format">&dollar;pager&lowbar;format</link>,
4127 <link linkend="status-format">&dollar;status&lowbar;format</link>,
4128 and other related variables. These can be very straightforward,
4129 and it's quite possible you already know how to use them.
4130 </para>
4131
4132 <para>
4133 The most basic format string element is a percent symbol followed
4134 by another character. For example, <literal>%s</literal>
4135 represents a message's Subject: header in the <link
4136 linkend="index-format">&dollar;index&lowbar;format</link> variable. The
4137 <quote>expandos</quote> available are documented with each format variable, but
4138 there are general modifiers available with all formatting expandos,
4139 too. Those are our concern here.
4140 </para>
4141
4142 <para>
4143 Some of the modifiers are borrowed right out of C (though you might
4144 know them from Perl, Python, shell, or another language). These are
4145 the <literal>&lsqb;-&rsqb;m.n</literal> modifiers, as in <literal>%-12.12s</literal>. As with
4146 such programming languages, these modifiers allow you to specify the
4147 minimum and maximum size of the resulting string, as well as its
4148 justification. If the <quote>-</quote> sign follows the percent, the string will
4149 be left-justified instead of right-justified. If there's a number
4150 immediately following that, it's the minimum amount of space the
4151 formatted string will occupy &mdash; if it's naturally smaller than that, it
4152 will be padded out with spaces.  If a decimal point and another number
4153 follow, that's the maximum space allowable &mdash; the string will not be
4154 permitted to exceed that width, no matter its natural size. Each of
4155 these three elements is optional, so that all these are legal format
4156 strings: <literal>%-12s</literal>, <literal>%4c</literal>,
4157 <literal>%.15F</literal> and <literal>%-12.15L</literal>.
4158 </para>
4159
4160 <para>
4161 Mutt adds some other modifiers to format strings. If you use an equals
4162 symbol (<literal>=</literal>) as a numeric prefix (like the minus
4163 above), it will force the string to be centered within its minimum
4164 space range. For example, <literal>%=14y</literal> will reserve 14
4165 characters for the %y expansion &mdash; that's the X-Label: header, in
4166 <link linkend="index-format">&dollar;index&lowbar;format</link>. If the expansion
4167 results in a string less than 14 characters, it will be centered in a
4168 14-character space.  If the X-Label for a message were <quote>test</quote>, that
4169 expansion would look like <quote>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</quote>.
4170 </para>
4171
4172 <para>
4173 There are two very little-known modifiers that affect the way that an
4174 expando is replaced. If there is an underline (<quote>&lowbar;</quote>) character
4175 between any format modifiers (as above) and the expando letter, it will
4176 expands in all lower case. And if you use a colon (<quote>:</quote>), it will
4177 replace all decimal points with underlines.
4178 </para>
4179
4180 </sect2>
4181
4182 <sect2 id="formatstrings-conditionals">
4183 <title>Conditionals</title>
4184
4185 <para>
4186 Depending on the format string variable, some of its sequences can be
4187 used to optionally print a string if their value is nonzero. For
4188 example, you may only want to see the number of flagged messages if such
4189 messages exist, since zero is not particularly meaningful. To optionally
4190 print a string based upon one of the above sequences, the following
4191 construct is used:
4192 </para>
4193
4194 <screen>
4195 &percnt;?&lt;sequence_char&gt;?&lt;optional_string&gt;?</screen>
4196
4197 <para>
4198 where <emphasis>sequence_char</emphasis> is an expando, and
4199 <emphasis>optional_string</emphasis> is the string you would like printed if
4200 <emphasis>sequence_char</emphasis> is nonzero.
4201 <emphasis>optional_string</emphasis> may contain other
4202 sequences as well as normal text, but you may not nest optional
4203 strings.
4204 </para>
4205
4206 <para>
4207 Here is an example illustrating how to optionally print the number of
4208 new messages in a mailbox in
4209 <link linkend="status-format">&dollar;status&lowbar;format</link>:
4210 </para>
4211
4212 <screen>
4213 &percnt;?n?&percnt;n new messages.?</screen>
4214
4215 <para>
4216 You can also switch between two strings using the following construct:
4217 </para>
4218
4219 <screen>
4220 &percnt;?&lt;sequence_char&gt;?&lt;if_string&gt;&amp;&lt;else_string&gt;?</screen>
4221
4222 <para>
4223 If the value of <emphasis>sequence_char</emphasis> is
4224 non-zero, <emphasis>if_string</emphasis> will be expanded,
4225 otherwise <emphasis>else_string</emphasis> will be expanded.
4226 </para>
4227
4228 </sect2>
4229
4230 <sect2 id="formatstrings-filters">
4231 <title>Filters</title>
4232
4233 <para>
4234 Any format string ending in a vertical bar (<quote>&verbar;</quote>) will be
4235 expanded and piped through the first word in the string, using spaces
4236 as separator. The string returned will be used for display.
4237 If the returned string ends in &percnt;, it will be passed through
4238 the formatter a second time. This allows the filter to generate a
4239 replacement format string including &percnt; expandos.
4240 </para>
4241
4242 <para>
4243 All &percnt; expandos in a format string are expanded before the script
4244 is called so that:
4245 </para>
4246
4247 <example id="ex-fmtpipe">
4248 <title>Using external filters in format strings</title>
4249 <screen>
4250 set status_format="script.sh '%r %f (%L)'|"
4251 </screen>
4252 </example>
4253
4254 <para>
4255 will make Mutt expand <literal>&percnt;r</literal>,
4256 <literal>&percnt;f</literal> and <literal>&percnt;L</literal>
4257 before calling the script. The example also shows that arguments can be
4258 quoted: the script will receive the expanded string between the single quotes
4259 as the only argument.
4260 </para>
4261
4262 <para>
4263 A practical example is the <literal>mutt&lowbar;xtitle</literal>
4264 script installed in the <literal>samples</literal>
4265 subdirectory of the Mutt documentation: it can be used as filter for
4266 <link linkend="status-format">&dollar;status&lowbar;format</link> to set the current
4267 terminal's title, if supported.
4268 </para>
4269
4270 </sect2>
4271
4272 <sect2 id="formatstrings-padding">
4273 <title>Padding</title>
4274
4275 <para>
4276 In most format strings, Mutt supports different types of padding using
4277 special &percnt;-expandos:
4278 </para>
4279
4280 <variablelist>
4281 <varlistentry>
4282 <term><literal>%|X</literal></term>
4283 <listitem>
4284 <para>
4285 When this occurs, Mutt will fill the rest of the
4286 line with the character <literal>X</literal>. For
4287 example, filling the rest of the line with dashes is
4288 done by setting:
4289 </para>
4290 <screen>
4291 set status_format = "%v on %h: %B: %?n?%n&amp;no? new messages %|-"</screen>
4292 </listitem>
4293 </varlistentry>
4294 <varlistentry>
4295 <term>
4296 <literal>%&gt;X</literal>
4297 </term>
4298 <listitem>
4299 <para>
4300 Since the previous expando stops at the end of line, there must be a way
4301 to fill the gap between two items via the <literal>&percnt;&gt;X</literal>
4302 expando: it puts as many characters <literal>X</literal> in between two
4303 items so that the rest of the line will be right-justified. For example,
4304 to not put the version string and hostname the above example on the left
4305 but on the right and fill the gap with spaces, one might use (note the
4306 space after <literal>&percnt;&gt;</literal>):
4307 </para>
4308 <screen>
4309 set status_format = "%B: %?n?%n&amp;no? new messages %&gt; (%v on %h)"</screen>
4310 </listitem>
4311 </varlistentry>
4312 <varlistentry>
4313 <term><literal>%*X</literal>
4314 </term>
4315 <listitem>
4316 <para>
4317 Normal right-justification will print everything to the left of the
4318 <literal>%&gt;</literal>, displaying padding and whatever lies to the
4319 right only if there's room. By contrast, <quote>soft-fill</quote> gives
4320 priority to the right-hand side, guaranteeing space to display it and
4321 showing padding only if there's still room. If necessary, soft-fill will
4322 eat text leftwards to make room for rightward text. For example, to
4323 right-justify the subject making sure as much as possible of it fits on
4324 screen, one might use (note two spaces after <literal>&percnt;*
4325 </literal>: the second ensures there's a space between the truncated
4326 right-hand side and the subject):
4327 </para>
4328 <screen>
4329 set index_format="%4C %Z %{%b %d} %-15.15L (%?l?%4l&amp;%4c?)%*  %s"</screen>
4330 </listitem>
4331 </varlistentry>
4332 </variablelist>
4333
4334 </sect2>
4335
4336 </sect1>
4337
4338 </chapter>
4339
4340 <chapter id="advancedusage">
4341 <title>Advanced Usage</title>
4342
4343 <sect1 id="regexp">
4344 <title>Regular Expressions</title>
4345
4346 <para>
4347 All string patterns in Mutt including those in more complex
4348 <link linkend="patterns">patterns</link> must be specified
4349 using regular expressions (regexp) in the <quote>POSIX extended</quote> syntax (which
4350 is more or less the syntax used by egrep and GNU awk).  For your
4351 convenience, we have included below a brief description of this syntax.
4352 </para>
4353
4354 <para>
4355 The search is case sensitive if the pattern contains at least one upper
4356 case letter, and case insensitive otherwise.
4357 </para>
4358
4359 <note>
4360 <para>
4361 <quote>&bsol;</quote>
4362 must be quoted if used for a regular expression in an initialization
4363 command: <quote>&bsol;&bsol;</quote>.
4364 </para>
4365 </note>
4366
4367 <para>
4368 A regular expression is a pattern that describes a set of strings.
4369 Regular expressions are constructed analogously to arithmetic
4370 expressions, by using various operators to combine smaller expressions.
4371 </para>
4372
4373 <note>
4374 <para>
4375 The regular expression can be enclosed/delimited by either &quot;
4376 or ' which is useful if the regular expression includes a white-space
4377 character.  See <xref linkend="muttrc-syntax"/>
4378 for more information on &quot; and ' delimiter processing.  To match a
4379 literal &quot; or ' you must preface it with \ (backslash).
4380 </para>
4381 </note>
4382
4383 <para>
4384 The fundamental building blocks are the regular expressions that match
4385 a single character.  Most characters, including all letters and digits,
4386 are regular expressions that match themselves.  Any metacharacter with
4387 special meaning may be quoted by preceding it with a backslash.
4388 </para>
4389
4390 <para>
4391 The period <quote>.</quote> matches any single character.  The caret <quote>&circ;</quote> and
4392 the dollar sign <quote>&dollar;</quote> are metacharacters that respectively match
4393 the empty string at the beginning and end of a line.
4394 </para>
4395
4396 <para>
4397 A list of characters enclosed by <quote>&lsqb;</quote> and <quote>&rsqb;</quote> matches any
4398 single character in that list; if the first character of the list
4399 is a caret <quote>&circ;</quote> then it matches any character <emphasis>not</emphasis> in the
4400 list.  For example, the regular expression <emphasis>&lsqb;0123456789&rsqb;</emphasis>
4401 matches any single digit.  A range of ASCII characters may be specified
4402 by giving the first and last characters, separated by a hyphen
4403 <quote>-</quote>.  Most metacharacters lose their special meaning inside
4404 lists.  To include a literal <quote>&rsqb;</quote> place it first in the list.
4405 Similarly, to include a literal <quote>&circ;</quote> place it anywhere but first.
4406 Finally, to include a literal hyphen <quote>-</quote> place it last.
4407 </para>
4408
4409 <para>
4410 Certain named classes of characters are predefined.  Character classes
4411 consist of <quote>&lsqb;:</quote>, a keyword denoting the class, and <quote>:&rsqb;</quote>.
4412 The following classes are defined by the POSIX standard in
4413 <xref linkend="posix-regex-char-classes"/>
4414 </para>
4415
4416 <table id="posix-regex-char-classes">
4417 <title>POSIX regular expression character classes</title>
4418 <tgroup cols="2">
4419 <thead>
4420 <row><entry>Character class</entry><entry>Description</entry></row>
4421 </thead>
4422 <tbody>
4423 <row><entry>&lsqb;:alnum:&rsqb;</entry><entry>Alphanumeric characters</entry></row>
4424 <row><entry>&lsqb;:alpha:&rsqb;</entry><entry>Alphabetic characters</entry></row>
4425 <row><entry>&lsqb;:blank:&rsqb;</entry><entry>Space or tab characters</entry></row>
4426 <row><entry>&lsqb;:cntrl:&rsqb;</entry><entry>Control characters</entry></row>
4427 <row><entry>&lsqb;:digit:&rsqb;</entry><entry>Numeric characters</entry></row>
4428 <row><entry>&lsqb;:graph:&rsqb;</entry><entry>Characters that are both printable and visible. (A space is printable, but not visible, while an <quote>a</quote> is both)</entry></row>
4429 <row><entry>&lsqb;:lower:&rsqb;</entry><entry>Lower-case alphabetic characters</entry></row>
4430 <row><entry>&lsqb;:print:&rsqb;</entry><entry>Printable characters (characters that are not control characters)</entry></row>
4431 <row><entry>&lsqb;:punct:&rsqb;</entry><entry>Punctuation characters (characters that are not letter, digits, control characters, or space characters)</entry></row>
4432 <row><entry>&lsqb;:space:&rsqb;</entry><entry>Space characters (such as space, tab and formfeed, to name a few)</entry></row>
4433 <row><entry>&lsqb;:upper:&rsqb;</entry><entry>Upper-case alphabetic characters</entry></row>
4434 <row><entry>&lsqb;:xdigit:&rsqb;</entry><entry>Characters that are hexadecimal digits</entry></row>
4435 </tbody>
4436 </tgroup>
4437 </table>
4438
4439 <para>
4440 A character class is only valid in a regular expression inside the
4441 brackets of a character list.
4442 </para>
4443
4444 <note>
4445 <para>
4446 Note that the brackets in these
4447 class names are part of the symbolic names, and must be included
4448 in addition to the brackets delimiting the bracket list. For
4449 example, <emphasis>&lsqb;&lsqb;:digit:&rsqb;&rsqb;</emphasis> is equivalent to
4450 <emphasis>&lsqb;0-9&rsqb;</emphasis>.
4451 </para>
4452 </note>
4453
4454 <para>
4455 Two additional special sequences can appear in character lists.  These
4456 apply to non-ASCII character sets, which can have single symbols (called
4457 collating elements) that are represented with more than one character,
4458 as well as several characters that are equivalent for collating or
4459 sorting purposes:
4460 </para>
4461
4462 <variablelist>
4463
4464 <varlistentry>
4465 <term>Collating Symbols</term>
4466 <listitem>
4467 <para>
4468 A collating symbol is a multi-character collating element enclosed in
4469 <quote>&lsqb;.</quote> and <quote>.&rsqb;</quote>.  For example, if <quote>ch</quote> is a collating
4470 element, then <emphasis>&lsqb;&lsqb;.ch.&rsqb;&rsqb;</emphasis> is a regexp that matches
4471 this collating element, while <emphasis>&lsqb;ch&rsqb;</emphasis> is a regexp that
4472 matches either <quote>c</quote> or <quote>h</quote>.
4473 </para>
4474 </listitem>
4475 </varlistentry>
4476 <varlistentry>
4477 <term>Equivalence Classes</term>
4478 <listitem>
4479 <para>
4480 An equivalence class is a locale-specific name for a list of
4481 characters that are equivalent. The name is enclosed in <quote>&lsqb;=</quote>
4482 and <quote>=&rsqb;</quote>.  For example, the name <quote>e</quote> might be used to
4483 represent all of <quote>&egrave;</quote> <quote>&eacute;</quote> and <quote>e</quote>.  In this case,
4484 <emphasis>&lsqb;&lsqb;=e=&rsqb;&rsqb;</emphasis> is a regexp that matches any of
4485 <quote>&egrave;</quote>, <quote>&eacute;</quote> and <quote>e</quote>.
4486 </para>
4487 </listitem>
4488 </varlistentry>
4489 </variablelist>
4490
4491 <para>
4492 A regular expression matching a single character may be followed by one
4493 of several repetition operators described in <xref linkend="regex-repeat"/>.
4494 </para>
4495
4496 <table id="regex-repeat">
4497 <title>Regular expression repetition operators</title>
4498 <tgroup cols="2">
4499 <thead>
4500 <row><entry>Operator</entry><entry>Description</entry></row>
4501 </thead>
4502 <tbody>
4503 <row><entry>?</entry><entry>The preceding item is optional and matched at most once</entry></row>
4504 <row><entry>*</entry><entry>The preceding item will be matched zero or more times</entry></row>
4505 <row><entry>+</entry><entry>The preceding item will be matched one or more times</entry></row>
4506 <row><entry>&lcub;n&rcub;</entry><entry>The preceding item is matched exactly <emphasis>n</emphasis> times</entry></row>
4507 <row><entry>&lcub;n,&rcub;</entry><entry>The preceding item is matched <emphasis>n</emphasis> or more times</entry></row>
4508 <row><entry>&lcub;,m&rcub;</entry><entry>The preceding item is matched at most <emphasis>m</emphasis> times</entry></row>
4509 <row><entry>&lcub;n,m&rcub;</entry><entry>The preceding item is matched at least <emphasis>n</emphasis> times, but no more than <emphasis>m</emphasis> times</entry></row>
4510 </tbody>
4511 </tgroup>
4512 </table>
4513
4514 <para>
4515 Two regular expressions may be concatenated; the resulting regular
4516 expression matches any string formed by concatenating two substrings
4517 that respectively match the concatenated subexpressions.
4518 </para>
4519
4520 <para>
4521 Two regular expressions may be joined by the infix operator <quote>&verbar;</quote>;
4522 the resulting regular expression matches any string matching either
4523 subexpression.
4524 </para>
4525
4526 <para>
4527 Repetition takes precedence over concatenation, which in turn takes
4528 precedence over alternation.  A whole subexpression may be enclosed in
4529 parentheses to override these precedence rules.
4530 </para>
4531
4532 <note>
4533 <para>
4534 If you compile Mutt with the included regular expression engine, the
4535 following operators may also be used in regular expressions as described in <xref linkend="regex-gnu-ext"/>.
4536 </para>
4537 </note>
4538
4539 <table id="regex-gnu-ext">
4540 <title>GNU regular expression extensions</title>
4541 <tgroup cols="2">
4542 <thead>
4543 <row><entry>Expression</entry><entry>Description</entry></row>
4544 </thead>
4545 <tbody>
4546 <row><entry>&bsol;&bsol;y</entry><entry>Matches the empty string at either the beginning or the end of a word</entry></row>
4547 <row><entry>&bsol;&bsol;B</entry><entry>Matches the empty string within a word</entry></row>
4548 <row><entry>&bsol;&bsol;&lt;</entry><entry>Matches the empty string at the beginning of a word</entry></row>
4549 <row><entry>&bsol;&bsol;&gt;</entry><entry>Matches the empty string at the end of a word</entry></row>
4550 <row><entry>&bsol;&bsol;w</entry><entry>Matches any word-constituent character (letter, digit, or underscore)</entry></row>
4551 <row><entry>&bsol;&bsol;W</entry><entry>Matches any character that is not word-constituent</entry></row>
4552 <row><entry>&bsol;&bsol;`</entry><entry>Matches the empty string at the beginning of a buffer (string)</entry></row>
4553 <row><entry>&bsol;&bsol;'</entry><entry>Matches the empty string at the end of a buffer</entry></row>
4554 </tbody>
4555 </tgroup>
4556 </table>
4557
4558 <para>
4559 Please note however that these operators are not defined by POSIX, so
4560 they may or may not be available in stock libraries on various systems.
4561 </para>
4562
4563 </sect1>
4564
4565 <sect1 id="patterns">
4566 <title>Patterns: Searching, Limiting and Tagging</title>
4567
4568 <sect2 id="patterns-modifier">
4569 <title>Pattern Modifier</title>
4570
4571 <para>
4572 Many of Mutt's commands allow you to specify a pattern to match
4573 (<literal>limit</literal>, <literal>tag-pattern</literal>,
4574 <literal>delete-pattern</literal>, etc.). <xref linkend="tab-patterns"/>
4575 shows several ways to select messages.
4576 </para>
4577
4578 <table id="tab-patterns">
4579 <title>Pattern modifiers</title>
4580 <tgroup cols="2">
4581 <thead>
4582 <row><entry>Pattern modifier</entry><entry>Description</entry></row>
4583 </thead>
4584 <tbody>
4585 <row><entry>~A</entry><entry>all messages</entry></row>
4586 <row><entry>~b <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the message body</entry></row>
4587 <row><entry>=b <emphasis>STRING</emphasis></entry><entry>messages which contain <emphasis>STRING</emphasis> in the message body. If IMAP is enabled, searches for <emphasis>STRING</emphasis> on the server, rather than downloading each message and searching it locally.</entry></row>
4588 <row><entry>~B <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the whole message</entry></row>
4589 <row><entry>~c <emphasis>EXPR</emphasis></entry><entry>messages carbon-copied to <emphasis>EXPR</emphasis></entry></row>
4590 <row><entry>%c <emphasis>GROUP</emphasis></entry><entry>messages carbon-copied to any member of <emphasis>GROUP</emphasis></entry></row>
4591 <row><entry>~C <emphasis>EXPR</emphasis></entry><entry>messages either to: or cc: <emphasis>EXPR</emphasis></entry></row>
4592 <row><entry>%C <emphasis>GROUP</emphasis></entry><entry>messages either to: or cc: to any member of <emphasis>GROUP</emphasis></entry></row>
4593 <row><entry>~d &lsqb;<emphasis>MIN</emphasis>&rsqb;-&lsqb;<emphasis>MAX</emphasis>&rsqb;</entry><entry>messages with <quote>date-sent</quote> in a Date range</entry></row>
4594 <row><entry>~D</entry><entry>deleted messages</entry></row>
4595 <row><entry>~e <emphasis>EXPR</emphasis></entry><entry>messages which contains <emphasis>EXPR</emphasis> in the <quote>Sender</quote> field</entry></row>
4596 <row><entry>%e <emphasis>GROUP</emphasis></entry><entry>messages which contain a member of <emphasis>GROUP</emphasis> in the <quote>Sender</quote> field</entry></row>
4597 <row><entry>~E</entry><entry>expired messages</entry></row>
4598 <row><entry>~F</entry><entry>flagged messages</entry></row>
4599 <row><entry>~f <emphasis>EXPR</emphasis></entry><entry>messages originating from <emphasis>EXPR</emphasis></entry></row>
4600 <row><entry>%f <emphasis>GROUP</emphasis></entry><entry>messages originating from any member of <emphasis>GROUP</emphasis></entry></row>
4601 <row><entry>~g</entry><entry>cryptographically signed messages</entry></row>
4602 <row><entry>~G</entry><entry>cryptographically encrypted messages</entry></row>
4603 <row><entry>~h <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the message header</entry></row>
4604 <row><entry>~H <emphasis>EXPR</emphasis></entry><entry>messages with a spam attribute matching <emphasis>EXPR</emphasis></entry></row>
4605 <row><entry>~i <emphasis>EXPR</emphasis></entry><entry>messages which match <emphasis>EXPR</emphasis> in the <quote>Message-ID</quote> field</entry></row>
4606 <row><entry>~k</entry><entry>messages which contain PGP key material</entry></row>
4607 <row><entry>~L <emphasis>EXPR</emphasis></entry><entry>messages either originated or received by <emphasis>EXPR</emphasis></entry></row>
4608 <row><entry>%L <emphasis>GROUP</emphasis></entry><entry>message either originated or received by any member of <emphasis>GROUP</emphasis></entry></row>
4609 <row><entry>~l</entry><entry>messages addressed to a known mailing list</entry></row>
4610 <row><entry>~m &lsqb;<emphasis>MIN</emphasis>&rsqb;-&lsqb;<emphasis>MAX</emphasis>&rsqb;</entry><entry>messages in the range <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> *)</entry></row>
4611 <row><entry>~n &lsqb;<emphasis>MIN</emphasis>&rsqb;-&lsqb;<emphasis>MAX</emphasis>&rsqb;</entry><entry>messages with a score in the range <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> *)</entry></row>
4612 <row><entry>~N</entry><entry>new messages</entry></row>
4613 <row><entry>~O</entry><entry>old messages</entry></row>
4614 <row><entry>~p</entry><entry>messages addressed to you (consults <command>alternates</command>)</entry></row>
4615 <row><entry>~P</entry><entry>messages from you (consults <command>alternates</command>)</entry></row>
4616 <row><entry>~Q</entry><entry>messages which have been replied to</entry></row>
4617 <row><entry>~r &lsqb;<emphasis>MIN</emphasis>&rsqb;-&lsqb;<emphasis>MAX</emphasis>&rsqb;</entry><entry>messages with <quote>date-received</quote> in a Date range</entry></row>
4618 <row><entry>~R</entry><entry>read messages</entry></row>
4619 <row><entry>~s <emphasis>EXPR</emphasis></entry><entry>messages having <emphasis>EXPR</emphasis> in the <quote>Subject</quote> field.</entry></row>
4620 <row><entry>~S</entry><entry>superseded messages</entry></row>
4621 <row><entry>~t <emphasis>EXPR</emphasis></entry><entry>messages addressed to <emphasis>EXPR</emphasis></entry></row>
4622 <row><entry>~T</entry><entry>tagged messages</entry></row>
4623 <row><entry>~u</entry><entry>messages addressed to a subscribed mailing list</entry></row>
4624 <row><entry>~U</entry><entry>unread messages</entry></row>
4625 <row><entry>~v</entry><entry>messages part of a collapsed thread.</entry></row>
4626 <row><entry>~V</entry><entry>cryptographically verified messages</entry></row>
4627 <row><entry>~x <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the <quote>References</quote> or <quote>In-Reply-To</quote> field</entry></row>
4628 <row><entry>~X &lsqb;<emphasis>MIN</emphasis>&rsqb;-&lsqb;<emphasis>MAX</emphasis>&rsqb;</entry><entry>messages with <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> attachments *)</entry></row>
4629 <row><entry>~y <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the <quote>X-Label</quote> field</entry></row>
4630 <row><entry>~z &lsqb;<emphasis>MIN</emphasis>&rsqb;-&lsqb;<emphasis>MAX</emphasis>&rsqb;</entry><entry>messages with a size in the range <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> *) **)</entry></row>
4631 <row><entry>~=</entry><entry>duplicated messages (see <link linkend="duplicate-threads">&dollar;duplicate&lowbar;threads</link>)</entry></row>
4632 <row><entry>~$</entry><entry>unreferenced messages (requires threaded view)</entry></row>
4633 <row><entry>~(<emphasis>PATTERN</emphasis>)</entry><entry>messages in threads
4634 containing messages matching <emphasis>PATTERN</emphasis>, e.g. all
4635 threads containing messages from you: ~(~P)</entry></row>
4636 </tbody>
4637 </tgroup>
4638 </table>
4639
4640 <para>
4641 Where <emphasis>EXPR</emphasis> is a
4642 <link linkend="regexp">regular expression</link>. 
4643 </para>
4644
4645 <para>
4646 *) The forms <quote>&lt;&lsqb;<emphasis>MAX</emphasis>&rsqb;</quote>, <quote>&gt;&lsqb;<emphasis>MIN</emphasis>&rsqb;</quote>,
4647 <quote>&lsqb;<emphasis>MIN</emphasis>&rsqb;-</quote> and <quote>-&lsqb;<emphasis>MAX</emphasis>&rsqb;</quote>
4648 are allowed, too.
4649 </para>
4650
4651 <para>
4652 **) The suffixes <quote>K</quote> and <quote>M</quote> are allowed to specify kilobyte and megabyte respectively.
4653 </para>
4654
4655 <para>
4656 Special attention has to be
4657 payed when using regular expressions inside of patterns.  Specifically,
4658 Mutt's parser for these patterns will strip one level of backslash (<quote>\</quote>),
4659 which is normally used for quoting.  If it is your intention to use a
4660 backslash in the regular expression, you will need to use two backslashes
4661 instead (<quote>\\</quote>). You can force Mutt to treat <emphasis>EXPR</emphasis> as a simple string
4662 instead of a regular expression by using = instead of &tilde; in the
4663 pattern name. For example, <literal>=b *.*</literal> will find all messages that contain
4664 the literal string <quote>*.*</quote>. Simple string matches are less powerful than
4665 regular expressions but can be considerably faster. This is especially
4666 true for IMAP folders, because string matches can be performed on the
4667 server instead of by fetching every message. IMAP treats <literal>=h</literal> specially:
4668 it must be of the form <quote>header: substring</quote> and will not partially
4669 match header names. The substring part may be omitted if you simply
4670 wish to find messages containing a particular header without regard to
4671 its value.
4672 </para>
4673
4674 <para>
4675 Patterns matching lists of addresses (notably c, C, p, P and t)
4676 match if there is at least one match in the whole list. If you want to
4677 make sure that all elements of that list match, you need to prefix your
4678 pattern with <quote>&circ;</quote>.
4679 This example matches all mails which only has recipients from Germany.
4680 </para>
4681
4682 <example id="ex-recips">
4683 <title>Matching all addresses in address lists</title>
4684 <screen>
4685 ^~C \.de$
4686 </screen>
4687 </example>
4688
4689 </sect2>
4690
4691 <sect2 id="simple-searches">
4692 <title>Simple Searches</title>
4693
4694 <para>
4695 Mutt supports two versions of so called <quote>simple searches</quote>. These are
4696 issued if the query entered for searching, limiting and similar
4697 operations does not seem to contain a valid pattern modifier (i.e. it does not contain
4698 one of these characters: <quote>&tilde;</quote>, <quote>=</quote> or <quote>&percnt;</quote>). If the query is
4699 supposed to contain one of these special characters, they must be escaped
4700 by prepending a backslash (<quote>\</quote>).
4701 </para>
4702
4703 <para>
4704 The first type is by checking whether the query string equals
4705 a keyword case-insensitively from <xref linkend="tab-simplesearch-keywords"/>:
4706 If that is the case, Mutt will use the shown pattern modifier instead.
4707 If a keyword would conflict with your search keyword, you need to turn
4708 it into a regular expression to avoid matching the keyword table. For
4709 example, if you want to find all messages matching <quote>flag</quote>
4710 (using <link linkend="simple-search">&dollar;simple&lowbar;search</link>)
4711 but don't want to match flagged messages, simply search for
4712 <quote><literal>&lsqb;f&rsqb;lag</literal></quote>.
4713 </para>
4714
4715 <table id="tab-simplesearch-keywords">
4716 <title>Simple search keywords</title>
4717 <tgroup cols="2">
4718 <thead>
4719 <row><entry>Keyword</entry><entry>Pattern modifier</entry></row>
4720 </thead>
4721 <tbody>
4722 <row><entry>all</entry><entry>~A</entry></row>
4723 <row><entry>.</entry><entry>~A</entry></row>
4724 <row><entry>&circ;</entry><entry>~A</entry></row>
4725 <row><entry>del</entry><entry>~D</entry></row>
4726 <row><entry>flag</entry><entry>~F</entry></row>
4727 <row><entry>new</entry><entry>~N</entry></row>
4728 <row><entry>old</entry><entry>~O</entry></row>
4729 <row><entry>repl</entry><entry>~Q</entry></row>
4730 <row><entry>read</entry><entry>~R</entry></row>
4731 <row><entry>tag</entry><entry>~T</entry></row>
4732 <row><entry>unread</entry><entry>~U</entry></row>
4733 </tbody>
4734 </tgroup>
4735 </table>
4736
4737 <para>
4738 The second type of simple search is to build a complex search
4739 pattern using <link linkend="simple-search">&dollar;simple&lowbar;search</link>
4740 as a template. Mutt will insert your query properly quoted and search
4741 for the composed complex query.
4742 </para>
4743
4744 </sect2>
4745
4746 <sect2 id="complex-patterns">
4747 <title>Nesting and Boolean Operators</title>
4748
4749 <para>
4750 Logical AND is performed by specifying more than one criterion.  For
4751 example:
4752 </para>
4753
4754 <screen>
4755 ~t mutt ~f elkins
4756 </screen>
4757
4758 <para>
4759 would select messages which contain the word <quote>mutt</quote> in the list of
4760 recipients <emphasis>and</emphasis> that have the word <quote>elkins</quote> in the <quote>From</quote> header
4761 field.
4762 </para>
4763
4764 <para>
4765 Mutt also recognizes the following operators to create more complex search
4766 patterns:
4767 </para>
4768
4769 <itemizedlist>
4770 <listitem>
4771
4772 <para>
4773 ! &mdash; logical NOT operator
4774 </para>
4775 </listitem>
4776 <listitem>
4777
4778 <para>
4779 &verbar; &mdash; logical OR operator
4780 </para>
4781 </listitem>
4782 <listitem>
4783
4784 <para>
4785 () &mdash; logical grouping operator
4786 </para>
4787 </listitem>
4788
4789 </itemizedlist>
4790
4791 <para>
4792 Here is an example illustrating a complex search pattern.  This pattern will
4793 select all messages which do not contain <quote>mutt</quote> in the <quote>To</quote> or <quote>Cc</quote>
4794 field and which are from <quote>elkins</quote>.
4795 </para>
4796
4797 <example id="ex-pattern-bool">
4798 <title>Using boolean operators in patterns</title>
4799 <screen>
4800 !(~t mutt|~c mutt) ~f elkins
4801 </screen>
4802 </example>
4803
4804 <para>
4805 Here is an example using white space in the regular expression (note
4806 the ' and &quot; delimiters).  For this to match, the mail's subject must
4807 match the <quote>&circ;Junk +From +Me$</quote> and it must be from either <quote>Jim +Somebody</quote>
4808 or <quote>Ed +SomeoneElse</quote>:
4809 </para>
4810
4811 <screen>
4812  '~s "^Junk +From +Me$" ~f ("Jim +Somebody"|"Ed +SomeoneElse")'
4813 </screen>
4814
4815 <note>
4816 <para>
4817 If a regular expression contains parenthesis, or a vertical bar
4818 ("&verbar;"), you <emphasis>must</emphasis> enclose the expression in double or single quotes since
4819 those characters are also used to separate different parts of Mutt's
4820 pattern language.  For example: <literal>~f "me@(mutt\.org|cs\.hmc\.edu)"</literal>
4821 Without the quotes, the parenthesis wouldn't end.
4822 This would be separated to two OR'd patterns: <emphasis>&tilde;f me@(mutt\.org</emphasis>
4823 and <emphasis>cs\.hmc\.edu)</emphasis>. They are never what you want.
4824 </para>
4825 </note>
4826
4827 </sect2>
4828
4829 <sect2 id="date-patterns">
4830 <title>Searching by Date</title>
4831
4832 <para>
4833 Mutt supports two types of dates, <emphasis>absolute</emphasis> and <emphasis>relative</emphasis>.
4834 </para>
4835
4836 <sect3 id="date-absolute">
4837 <title>Absolute Dates</title>
4838
4839 <para>
4840 Dates <emphasis>must</emphasis> be in DD/MM/YY format (month and year are
4841 optional, defaulting to the current month and year).  An example of a valid
4842 range of dates is:
4843 </para>
4844
4845 <screen>
4846 Limit to messages matching: ~d 20/1/95-31/10
4847 </screen>
4848
4849 <para>
4850 If you omit the minimum (first) date, and just specify <quote>-DD/MM/YY</quote>, all
4851 messages <emphasis>before</emphasis> the given date will be selected.  If you omit the maximum
4852 (second) date, and specify <quote>DD/MM/YY-</quote>, all messages <emphasis>after</emphasis> the given
4853 date will be selected.  If you specify a single date with no dash (<quote>-</quote>),
4854 only messages sent on the given date will be selected.
4855 </para>
4856
4857 <para>
4858 You can add error margins to absolute dates.
4859 An error margin is a sign (+ or -), followed by a digit, followed by
4860 one of the units in <xref linkend="tab-date-units"/>. As a special case, you can replace the
4861 sign by a <quote>*</quote> character, which is equivalent to giving identical plus and minus error margins.
4862 </para>
4863
4864 <table id="tab-date-units">
4865 <title>Date units</title>
4866 <tgroup cols="2">
4867 <thead>
4868 <row><entry>Unit</entry><entry>Description</entry></row>
4869 </thead>
4870 <tbody>
4871 <row><entry>y</entry><entry>Years</entry></row>
4872 <row><entry>m</entry><entry>Months</entry></row>
4873 <row><entry>w</entry><entry>Weeks</entry></row>
4874 <row><entry>d</entry><entry>Days</entry></row>
4875 </tbody>
4876 </tgroup>
4877 </table>
4878
4879 <para>
4880 Example: To select any messages two weeks around January 15, 2001,
4881 you'd use the following pattern:
4882 </para>
4883
4884 <screen>
4885 Limit to messages matching: ~d 15/1/2001*2w
4886 </screen>
4887
4888 </sect3>
4889
4890 <sect3 id="dates-relative">
4891 <title>Relative Dates</title>
4892
4893 <para>
4894 This type of date is relative to the current date, and may
4895 be specified as:
4896 </para>
4897
4898 <itemizedlist>
4899 <listitem>
4900
4901 <para>
4902 &gt;<emphasis>offset</emphasis> for messages older than <emphasis>offset</emphasis> units
4903 </para>
4904 </listitem>
4905 <listitem>
4906
4907 <para>
4908 &lt;<emphasis>offset</emphasis> for messages newer than <emphasis>offset</emphasis> units
4909 </para>
4910 </listitem>
4911 <listitem>
4912
4913 <para>
4914 =<emphasis>offset</emphasis> for messages exactly <emphasis>offset</emphasis> units old
4915 </para>
4916 </listitem>
4917
4918 </itemizedlist>
4919
4920 <para>
4921 <emphasis>offset</emphasis> is specified as a positive number with one of the units from <xref linkend="tab-date-units"/>.
4922 </para>
4923
4924 <para>
4925 Example: to select messages less than 1 month old, you would use
4926 </para>
4927
4928 <screen>
4929 Limit to messages matching: ~d &lt;1m
4930 </screen>
4931
4932 <note>
4933 <para>
4934 All dates used when searching are relative to the
4935 <emphasis>local</emphasis> time zone, so unless you change the setting of your <link linkend="index-format">&dollar;index&lowbar;format</link> to include a
4936 <literal>&percnt;&lsqb;...&rsqb;</literal> format, these are <emphasis>not</emphasis> the dates shown
4937 in the main index.
4938 </para>
4939 </note>
4940
4941 </sect3>
4942
4943 </sect2>
4944
4945 </sect1>
4946
4947 <sect1 id="tags">
4948 <title>Using Tags</title>
4949
4950 <para>
4951 Sometimes it is desirable to perform an operation on a group of
4952 messages all at once rather than one at a time.  An example might be
4953 to save messages to a mailing list to a separate folder, or to
4954 delete all messages with a given subject.  To tag all messages
4955 matching a pattern, use the <literal>&lt;tag-pattern&gt;</literal> function, which is bound to
4956 <quote>shift-T</quote> by default.  Or you can select individual messages by
4957 hand using the <literal>&lt;tag-message&gt;</literal> function, which is bound to <quote>t</quote> by
4958 default.  See <link linkend="patterns">patterns</link> for Mutt's pattern
4959 matching syntax.
4960 </para>
4961
4962 <para>
4963 Once you have tagged the desired messages, you can use the
4964 <quote>tag-prefix</quote> operator, which is the <quote>;</quote> (semicolon) key by default.
4965 When the <quote>tag-prefix</quote> operator is used, the <emphasis>next</emphasis> operation will
4966 be applied to all tagged messages if that operation can be used in that
4967 manner.  If the <link linkend="auto-tag">&dollar;auto&lowbar;tag</link>
4968 variable is set, the next operation applies to the tagged messages
4969 automatically, without requiring the <quote>tag-prefix</quote>.
4970 </para>
4971
4972 <para>
4973 In <link linkend="macro"><command>macro</command>s</link> or <link linkend="push"><command>push</command></link> commands,
4974 you can use the <literal>&lt;tag-prefix-cond&gt;</literal> operator.  If there are no tagged
4975 messages, Mutt will <quote>eat</quote> the rest of the macro to abort it's execution.
4976 Mutt will stop <quote>eating</quote> the macro when it encounters the <literal>&lt;end-cond&gt;</literal>
4977 operator; after this operator the rest of the macro will be executed as
4978 normal.
4979 </para>
4980
4981 </sect1>
4982
4983 <sect1 id="hooks">
4984 <title>Using Hooks</title>
4985
4986 <para>
4987 A <emphasis>hook</emphasis> is a concept found in many other programs which allows you to
4988 execute arbitrary commands before performing some operation.  For example,
4989 you may wish to tailor your configuration based upon which mailbox you are
4990 reading, or to whom you are sending mail.  In the Mutt world, a <emphasis>hook</emphasis>
4991 consists of a <link linkend="regexp">regular expression</link> or
4992 <link linkend="patterns">pattern</link> along with a
4993 configuration option/command.  See:
4994
4995 <itemizedlist>
4996
4997 <listitem>
4998 <para>
4999 <link linkend="account-hook"><command>account-hook</command></link>
5000 </para>
5001 </listitem>
5002
5003 <listitem>
5004 <para>
5005 <link linkend="charset-hook"><command>charset-hook</command></link>
5006 </para>
5007 </listitem>
5008
5009 <listitem>
5010 <para>
5011 <link linkend="crypt-hook"><command>crypt-hook</command></link>
5012 </para>
5013 </listitem>
5014
5015 <listitem>
5016 <para>
5017 <link linkend="fcc-hook"><command>fcc-hook</command></link>
5018 </para>
5019 </listitem>
5020
5021 <listitem>
5022 <para>
5023 <link linkend="fcc-save-hook"><command>fcc-save-hook</command></link>
5024 </para>
5025 </listitem>
5026
5027 <listitem>
5028 <para>
5029 <link linkend="folder-hook"><command>folder-hook</command></link>
5030 </para>
5031 </listitem>
5032
5033 <listitem>
5034 <para>
5035 <link linkend="iconv-hook"><command>iconv-hook</command></link>
5036 </para>
5037 </listitem>
5038
5039 <listitem>
5040 <para>
5041 <link linkend="mbox-hook"><command>mbox-hook</command></link>
5042 </para>
5043 </listitem>
5044
5045 <listitem>
5046 <para>
5047 <link linkend="message-hook"><command>message-hook</command></link>
5048 </para>
5049 </listitem>
5050
5051 <listitem>
5052 <para>
5053 <link linkend="reply-hook"><command>reply-hook</command></link>
5054 </para>
5055 </listitem>
5056
5057 <listitem>
5058 <para>
5059 <link linkend="save-hook"><command>save-hook</command></link>
5060 </para>
5061 </listitem>
5062
5063 <listitem>
5064 <para>
5065 <link linkend="send-hook"><command>send-hook</command></link>
5066 </para>
5067 </listitem>
5068
5069 <listitem>
5070 <para>
5071 <link linkend="send2-hook"><command>send2-hook</command></link>
5072 </para>
5073 </listitem>
5074
5075 </itemizedlist>
5076
5077 for specific details on each type of <emphasis>hook</emphasis> available.
5078 </para>
5079
5080 <note>
5081 <para>
5082 If a hook changes configuration settings, these changes remain
5083 effective until the end of the current Mutt session. As this is generally
5084 not desired, a <quote>default</quote> hook needs to be added before all
5085 other hooks  of that type to restore configuration defaults.
5086 </para>
5087 </note>
5088
5089 <example id="ex-default-hook">
5090 <title>Specifying a <quote>default</quote> hook</title>
5091 <screen>
5092 send-hook . 'unmy_hdr From:'
5093 send-hook ~C'^b@b\.b$' my_hdr from: c@c.c
5094 </screen>
5095 </example>
5096
5097 <para>
5098 In <xref linkend="ex-default-hook"/>, by default the value of
5099 <link linkend="from">&dollar;from</link>
5100 and <link linkend="realname">&dollar;realname</link>
5101 is not overridden. When sending messages either To: or Cc:
5102 to <literal>&lt;b@b.b&gt;</literal>, the From: header is changed to
5103 <literal>&lt;c@c.c&gt;</literal>.
5104 </para>
5105
5106 <sect2 id="pattern-hook" xreflabel="Message Matching in Hooks">
5107 <title>Message Matching in Hooks</title>
5108
5109 <para>
5110 Hooks that act upon messages (<command>message-hook</command>, <command>reply-hook</command>,
5111 <command>send-hook</command>, <command>send2-hook</command>, <command>save-hook</command>, <command>fcc-hook</command>) are evaluated in a
5112 slightly different manner. For the other
5113 types of hooks, a <link linkend="regexp">regular expression</link> is
5114 sufficient.  But in dealing with messages a finer grain of control is
5115 needed for matching since for different purposes you want to match
5116 different criteria.
5117 </para>
5118
5119 <para>
5120 Mutt allows the use of the <link linkend="patterns">search pattern</link>
5121 language for matching messages in hook commands.  This works in
5122 exactly the same way as it would when <emphasis>limiting</emphasis> or
5123 <emphasis>searching</emphasis> the mailbox, except that you are restricted to those
5124 operators which match information Mutt extracts from the header of
5125 the message (i.e., from, to, cc, date, subject, etc.).
5126 </para>
5127
5128 <para>
5129 For example, if you wanted to set your return address based upon sending
5130 mail to a specific address, you could do something like:
5131 </para>
5132
5133 <screen>
5134 send-hook '~t ^me@cs\.hmc\.edu$' 'my_hdr From: Mutt User &lt;user@host&gt;'
5135 </screen>
5136
5137 <para>
5138 which would execute the given command when sending mail to
5139 <emphasis>me@cs.hmc.edu</emphasis>.
5140 </para>
5141
5142 <para>
5143 However, it is not required that you write the pattern to match using the
5144 full searching language.  You can still specify a simple <emphasis>regular
5145 expression</emphasis> like the other hooks, in which case Mutt will translate your
5146 pattern into the full language, using the translation specified by the
5147 <link linkend="default-hook">&dollar;default&lowbar;hook</link> variable.  The
5148 pattern is translated at the time the hook is declared, so the value of
5149 <link linkend="default-hook">&dollar;default&lowbar;hook</link> that is in effect
5150 at that time will be used.
5151 </para>
5152
5153 </sect2>
5154
5155 </sect1>
5156
5157 <sect1 id="query">
5158 <title>External Address Queries</title>
5159
5160 <para>
5161 Mutt supports connecting to external directory databases such as LDAP,
5162 ph/qi, bbdb, or NIS through a wrapper script which connects to Mutt
5163 using a simple interface.  Using the <link linkend="query-command">&dollar;query&lowbar;command</link> variable, you specify the wrapper
5164 command to use.  For example:
5165 </para>
5166
5167 <screen>
5168 set query_command = "mutt_ldap_query.pl '%s'"
5169 </screen>
5170
5171 <para>
5172 The wrapper script should accept the query on the command-line.  It
5173 should return a one line message, then each matching response on a
5174 single line, each line containing a tab separated address then name then
5175 some other optional information.  On error, or if there are no matching
5176 addresses, return a non-zero exit code and a one line error message.
5177 </para>
5178
5179 <para>
5180 An example multiple response output:
5181 </para>
5182
5183 <screen>
5184 Searching database ... 20 entries ... 3 matching:
5185 me@cs.hmc.edu           Michael Elkins  mutt dude
5186 blong@fiction.net       Brandon Long    mutt and more
5187 roessler@does-not-exist.org        Thomas Roessler mutt pgp
5188 </screen>
5189
5190 <para>
5191 There are two mechanisms for accessing the query function of Mutt.  One
5192 is to do a query from the index menu using the <literal>&lt;query&gt;</literal> function (default: Q).
5193 This will prompt for a query, then bring up the query menu which will
5194 list the matching responses.  From the query menu, you can select
5195 addresses to create aliases, or to mail.  You can tag multiple addresses
5196 to mail, start a new query, or have a new query appended to the current
5197 responses.
5198 </para>
5199
5200 <para>
5201 The other mechanism for accessing the query function is for address
5202 completion, similar to the alias completion.  In any prompt for address
5203 entry, you can use the <literal>&lt;complete-query&gt;</literal> function (default: &circ;T) to run a
5204 query based on the current address you have typed.  Like aliases, Mutt
5205 will look for what you have typed back to the last space or comma.  If
5206 there is a single response for that query, Mutt will expand the address
5207 in place.  If there are multiple responses, Mutt will activate the query
5208 menu.  At the query menu, you can select one or more addresses to be
5209 added to the prompt.
5210 </para>
5211
5212 </sect1>
5213
5214 <sect1 id="mailbox-formats">
5215 <title>Mailbox Formats</title>
5216
5217 <para>
5218 Mutt supports reading and writing of four different local mailbox formats:
5219 mbox, MMDF, MH and Maildir.  The mailbox type is autodetected, so there
5220 is no need to use a flag for different mailbox types.  When creating new
5221 mailboxes, Mutt uses the default specified with the
5222 <link linkend="mbox-type">&dollar;mbox&lowbar;type</link> variable. A
5223 short description of the formats follows.
5224 </para>
5225
5226 <para>
5227 <emphasis>mbox</emphasis>.  This is a widely used mailbox format for UNIX.  All
5228 messages are stored in a single file.  Each message has a line of the form:
5229 </para>
5230
5231 <screen>
5232 From me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST
5233 </screen>
5234
5235 <para>
5236 to denote the start of a new message (this is often referred to as the
5237 <quote>From&lowbar;</quote> line). The mbox format requires mailbox
5238 locking, is prone to mailbox corruption with concurrently writing
5239 clients or misinterpreted From&lowbar; lines. Depending on the
5240 environment, new mail detection can be unreliable. Mbox folders are fast
5241 to open and easy to archive.
5242 </para>
5243
5244 <para>
5245 <emphasis>MMDF</emphasis>.  This is a variant of
5246 the <emphasis>mbox</emphasis> format.  Each message is surrounded by
5247 lines containing <quote>&circ;A&circ;A&circ;A&circ;A</quote> (four
5248 control-A's). The same problems as for mbox apply (also with finding the
5249 right message separator as four control-A's may appear in message
5250 bodies).
5251 </para>
5252
5253 <para>
5254 <emphasis>MH</emphasis>. A radical departure from <emphasis>mbox</emphasis> and <emphasis>MMDF</emphasis>, a mailbox
5255 consists of a directory and each message is stored in a separate file.
5256 The filename indicates the message number (however, this is may not
5257 correspond to the message number Mutt displays). Deleted messages are
5258 renamed with a comma (<quote>,</quote>) prepended to the filename. Mutt
5259 detects this type of mailbox by looking for either <literal>.mh&lowbar;sequences</literal>
5260 or <literal>.xmhcache</literal> files (needed to distinguish normal directories from MH
5261 mailboxes). MH is more robust with concurrent clients writing the mailbox,
5262 but still may suffer from lost flags; message corruption is less likely
5263 to occur than with mbox/mmdf. It's usually slower to open compared to
5264 mbox/mmdf since many small files have to be read (Mutt provides
5265 <xref linkend="header-caching"/> to greatly speed this process up).
5266 Depending on the environment, MH is not very disk-space efficient.
5267 </para>
5268
5269 <para>
5270 <emphasis>Maildir</emphasis>.  The newest of the mailbox formats, used by the Qmail MTA (a
5271 replacement for sendmail).  Similar to <emphasis>MH</emphasis>, except that it adds three
5272 subdirectories of the mailbox: <emphasis>tmp</emphasis>, <emphasis>new</emphasis> and <emphasis>cur</emphasis>.  Filenames
5273 for the messages are chosen in such a way they are unique, even when two
5274 programs are writing the mailbox over NFS, which means that no file locking
5275 is needed and corruption is very unlikely. Maildir maybe
5276 slower to open without caching in Mutt, it too is not very
5277 disk-space efficient depending on the environment. Since no additional
5278 files are used for metadata (which is embedded in the message filenames)
5279 and Maildir is locking-free, it's easy to sync across different machines
5280 using file-level synchronization tools.
5281 </para>
5282
5283 </sect1>
5284
5285 <sect1 id="shortcuts">
5286 <title>Mailbox Shortcuts</title>
5287
5288 <para>
5289 There are a number of built in shortcuts which refer to specific mailboxes.
5290 These shortcuts can be used anywhere you are prompted for a file or mailbox
5291 path or in path-related configuration variables. Note that these only
5292 work at the beginning of a string.
5293 </para>
5294
5295 <itemizedlist>
5296 <listitem>
5297
5298 <para>
5299 ! &mdash; refers to your <link linkend="spoolfile">&dollar;spoolfile</link> (incoming) mailbox
5300 </para>
5301 </listitem>
5302 <listitem>
5303
5304 <para>
5305 &gt; &mdash; refers to your <link linkend="mbox">&dollar;mbox</link> file
5306 </para>
5307 </listitem>
5308 <listitem>
5309
5310 <para>
5311 &lt; &mdash; refers to your <link linkend="record">&dollar;record</link> file
5312 </para>
5313 </listitem>
5314 <listitem>
5315
5316 <para>
5317 &circ; &mdash; refers to the current mailbox
5318 </para>
5319 </listitem>
5320 <listitem>
5321
5322 <para>
5323 - or !! &mdash; refers to the file you've last visited
5324 </para>
5325 </listitem>
5326 <listitem>
5327
5328 <para>
5329 &tilde; &mdash; refers to your home directory
5330 </para>
5331 </listitem>
5332 <listitem>
5333
5334 <para>
5335 = or + &mdash; refers to your <link linkend="folder">&dollar;folder</link> directory
5336 </para>
5337 </listitem>
5338 <listitem>
5339
5340 <para>
5341 @<emphasis>alias</emphasis> &mdash; refers to the <link linkend="save-hook">default save folder</link> as determined by the address of the alias
5342 </para>
5343 </listitem>
5344
5345 </itemizedlist>
5346
5347 <para>
5348 For example, to store a copy of outgoing messages in the folder they
5349 were composed in,
5350 a <link linkend="folder-hook"><command>folder-hook</command></link> can
5351 be used to set <link linkend="record">&dollar;record</link>:
5352 </para>
5353
5354 <screen>
5355 folder-hook . 'set record=&circ;'</screen>
5356
5357 </sect1>
5358
5359 <sect1 id="using-lists">
5360 <title>Handling Mailing Lists</title>
5361
5362 <para>
5363 Mutt has a few configuration options that make dealing with large
5364 amounts of mail easier.  The first thing you must do is to let Mutt
5365 know what addresses you consider to be mailing lists (technically
5366 this does not have to be a mailing list, but that is what it is most
5367 often used for), and what lists you are subscribed to.  This is
5368 accomplished through the use of the <link linkend="lists"><command>lists</command> and <command>subscribe</command></link> commands in your <literal>.muttrc</literal>.
5369 </para>
5370
5371 <para>
5372 Now that Mutt knows what your mailing lists are, it can do several
5373 things, the first of which is the ability to show the name of a list
5374 through which you received a message (i.e., of a subscribed list) in
5375 the <emphasis>index</emphasis> menu display.  This is useful to distinguish between
5376 personal and list mail in the same mailbox.  In the <link linkend="index-format">&dollar;index&lowbar;format</link> variable, the expando <quote>&percnt;L</quote>
5377 will print the string <quote>To &lt;list&gt;</quote> when <quote>list</quote> appears in the
5378 <quote>To</quote> field, and <quote>Cc &lt;list&gt;</quote> when it appears in the <quote>Cc</quote>
5379 field (otherwise it prints the name of the author).
5380 </para>
5381
5382 <para>
5383 Often times the <quote>To</quote> and <quote>Cc</quote> fields in mailing list messages
5384 tend to get quite large. Most people do not bother to remove the
5385 author of the message they reply to from the list, resulting in
5386 two or more copies being sent to that person.  The <literal>&lt;list-reply&gt;</literal>
5387 function, which by default is bound to <quote>L</quote> in the <emphasis>index</emphasis> menu
5388 and <emphasis>pager</emphasis>, helps reduce the clutter by only replying to the
5389 known mailing list addresses instead of all recipients (except as
5390 specified by <literal>Mail-Followup-To</literal>, see below).
5391 </para>
5392
5393 <para>
5394 Mutt also supports the <literal>Mail-Followup-To</literal> header.  When you send
5395 a message to a list of recipients which includes one or several
5396 subscribed mailing lists, and if the <link linkend="followup-to">&dollar;followup&lowbar;to</link> option is set, Mutt will generate
5397 a Mail-Followup-To header which contains all the recipients to whom
5398 you send this message, but not your address. This indicates that
5399 group-replies or list-replies (also known as <quote>followups</quote>) to this
5400 message should only be sent to the original recipients of the
5401 message, and not separately to you - you'll receive your copy through
5402 one of the mailing lists you are subscribed to.
5403 </para>
5404
5405 <para>
5406 Conversely, when group-replying or list-replying to a message which
5407 has a <literal>Mail-Followup-To</literal> header, Mutt will respect this header if
5408 the <link linkend="honor-followup-to">&dollar;honor&lowbar;followup&lowbar;to</link> configuration
5409 variable is set.  Using <link linkend="list-reply">list-reply</link> will in this case also make sure
5410 that the reply goes to the mailing list, even if it's not specified
5411 in the list of recipients in the <literal>Mail-Followup-To</literal>.
5412 </para>
5413
5414 <note>
5415 <para>
5416 When header editing is enabled, you can create a
5417 <literal>Mail-Followup-To</literal> header manually.  Mutt will only auto-generate
5418 this header if it doesn't exist when you send the message.
5419 </para>
5420 </note>
5421
5422 <para>
5423 The other method some mailing list admins use is to generate a
5424 <quote>Reply-To</quote> field which points back to the mailing list address rather
5425 than the author of the message.  This can create problems when trying
5426 to reply directly to the author in private, since most mail clients
5427 will automatically reply to the address given in the <quote>Reply-To</quote>
5428 field.  Mutt uses the <link linkend="reply-to">&dollar;reply&lowbar;to</link>
5429 variable to help decide which address to use.  If set to <emphasis>ask-yes</emphasis> or
5430 <emphasis>ask-no</emphasis>, you will be
5431 prompted as to whether or not you would like to use the address given in
5432 the <quote>Reply-To</quote> field, or reply directly to the address given in the
5433 <quote>From</quote> field.  When set to <emphasis>yes</emphasis>, the <quote>Reply-To</quote> field will be used when
5434 present.
5435 </para>
5436
5437 <para>
5438 The <quote>X-Label:</quote> header field can be used to further identify mailing
5439 lists or list subject matter (or just to annotate messages
5440 individually).  The <link linkend="index-format">&dollar;index&lowbar;format</link> variable's <quote>&percnt;y</quote> and
5441 <quote>&percnt;Y</quote> expandos can be used to expand <quote>X-Label:</quote> fields in the
5442 index, and Mutt's pattern-matcher can match regular expressions to
5443 <quote>X-Label:</quote> fields with the <quote>&tilde;y</quote> selector.  <quote>X-Label:</quote> is not a
5444 standard message header field, but it can easily be inserted by procmail
5445 and other mail filtering agents.
5446 </para>
5447
5448 <para>
5449 Lastly, Mutt has the ability to <link linkend="sort">sort</link> the mailbox into
5450 <link linkend="threads">threads</link>.  A thread is a group of messages which all relate to the same
5451 subject.  This is usually organized into a tree-like structure where a
5452 message and all of its replies are represented graphically.  If you've ever
5453 used a threaded news client, this is the same concept.  It makes dealing
5454 with large volume mailing lists easier because you can easily delete
5455 uninteresting threads and quickly find topics of value.
5456 </para>
5457
5458 </sect1>
5459
5460 <sect1 id="handling-folders">
5461 <title>Handling multiple folders</title>
5462
5463 <para>
5464 Mutt supports setups with multiple folders, allowing all of them to
5465 be monitored for new mail (see <xref linkend="mailboxes"/> for details).
5466 </para>
5467
5468 <para>
5469 When in the index menu and being idle (also see
5470 <link linkend="timeout">&dollar;timeout</link>), Mutt periodically checks
5471 for new mail in all folders which have been configured via the
5472 <command>mailboxes</command> command. The interval depends on the folder
5473 type: for local/IMAP folders it consults
5474 <link linkend="mail-check">&dollar;mail&lowbar;check</link> and
5475 <link linkend="pop-checkinterval">&dollar;pop&lowbar;checkinterval</link>
5476 for POP folders.
5477 </para>
5478
5479 <para>
5480 Outside the index menu the directory browser supports checking
5481 for new mail using the <literal>&lt;check-new&gt;</literal> function which is
5482 unbound by default. Pressing TAB will bring up a
5483 menu showing the files specified by the <command>mailboxes</command> command,
5484 and indicate which contain new messages. Mutt will automatically enter this
5485 mode when invoked from the command line with the <literal>-y</literal> option.
5486 </para>
5487
5488 <para>
5489 For the pager, index and directory browser menus, Mutt contains the
5490 <literal>&lt;buffy-list&gt;</literal> function (bound to <quote>.</quote> by default)
5491 which will print a list of folders with new mail in the command line at
5492 the bottom of the screen.
5493 </para>
5494
5495 <para>
5496 For the index, by default Mutt displays the number of mailboxes with new
5497 mail in the status bar, please refer to the
5498 <link linkend="status-format">&dollar;status&lowbar;format</link>
5499 variable for details.
5500 </para>
5501
5502 <para>
5503 When changing folders, Mutt fills the prompt with the first folder from
5504 the mailboxes list containing new mail (if any), pressing
5505 <emphasis>space</emphasis> will cycle through folders with new mail.
5506 </para>
5507
5508 </sect1>
5509
5510 <sect1 id="editing-threads">
5511 <title>Editing Threads</title>
5512
5513 <para>
5514 Mutt has the ability to dynamically restructure threads that are broken
5515 either by misconfigured software or bad behavior from some
5516 correspondents. This allows to clean your mailboxes from these
5517 annoyances which make it hard to follow a discussion.
5518 </para>
5519
5520 <sect2 id="link-threads">
5521 <title>Linking Threads</title>
5522
5523 <para>
5524 Some mailers tend to <quote>forget</quote> to correctly set the <quote>In-Reply-To:</quote> and
5525 <quote>References:</quote> headers when replying to a message. This results in broken
5526 discussions because Mutt has not enough information to guess the correct
5527 threading.
5528 You can fix this by tagging the reply, then moving to the parent message
5529 and using the <literal>&lt;link-threads&gt;</literal> function (bound to &amp; by default). The
5530 reply will then be connected to this parent message.
5531 </para>
5532
5533 <para>
5534 You can also connect multiple children at once, tagging them and using the
5535 <literal>&lt;tag-prefix&gt;</literal> command (';') or the <link linkend="auto-tag">&dollar;auto&lowbar;tag</link> option.
5536 </para>
5537
5538 </sect2>
5539
5540 <sect2 id="break-threads">
5541 <title>Breaking Threads</title>
5542
5543 <para>
5544 On mailing lists, some people are in the bad habit of starting a new
5545 discussion by hitting <quote>reply</quote> to any message from the list and changing
5546 the subject to a totally unrelated one.
5547 You can fix such threads by using the <literal>&lt;break-thread&gt;</literal> function (bound
5548 by default to &num;), which will turn the subthread starting from the
5549 current message into a whole different thread.
5550 </para>
5551
5552 </sect2>
5553
5554 </sect1>
5555
5556 <sect1 id="dsn">
5557 <title>Delivery Status Notification (DSN) Support</title>
5558
5559 <para>
5560 RFC1894 defines a set of MIME content types for relaying information
5561 about the status of electronic mail messages.  These can be thought of as
5562 <quote>return receipts.</quote>
5563 </para>
5564
5565 <para>
5566 To support DSN, there are two variables. <link linkend="dsn-notify">&dollar;dsn&lowbar;notify</link> is used to request receipts for
5567 different results (such as failed message, message delivered, etc.).
5568 <link linkend="dsn-return">&dollar;dsn&lowbar;return</link> requests how much
5569 of your message should be returned with the receipt (headers or full
5570 message).
5571 </para>
5572
5573 <para>
5574 When using <link linkend="sendmail">&dollar;sendmail</link> for mail
5575 delivery, you need to use either Berkeley sendmail 8.8.x (or greater) a MTA
5576 supporting DSN command line options compatible to Sendmail: The -N and -R
5577 options can be used by the mail client to make requests as to what type of
5578 status messages should be returned. Please consider your MTA documentation
5579 whether DSN is supported.
5580 </para>
5581
5582 <para>
5583 For SMTP delivery using <link
5584   linkend="smtp-url">&dollar;smtp&lowbar;url</link>, it depends on the
5585 capabilities announced by the server whether Mutt will attempt to
5586 request DSN or not.
5587 </para>
5588
5589 </sect1>
5590
5591 <sect1 id="urlview">
5592 <title>Start a WWW Browser on URLs</title>
5593
5594 <para>
5595 If a message contains URLs, it is efficient to get
5596 a menu with all the URLs and start a WWW browser on one of them.  This
5597 functionality is provided by the external urlview program which can be
5598 retrieved at
5599 <ulink url="ftp://ftp.mutt.org/mutt/contrib/">ftp://ftp.mutt.org/mutt/contrib/</ulink>
5600 and the configuration commands:
5601 </para>
5602
5603 <screen>
5604 macro index \cb |urlview\n
5605 macro pager \cb |urlview\n
5606 </screen>
5607
5608 </sect1>
5609
5610 <sect1 id="misc-topics">
5611 <title>Miscellany</title>
5612
5613 <para>
5614 This section documents various features that fit nowhere else.
5615 </para>
5616
5617 <variablelist>
5618 <varlistentry>
5619 <term>
5620 Address normalization
5621 </term>
5622 <listitem>
5623 <para>
5624 Mutt normalizes all e-mail addresses to the simplest form possible. If
5625 an address contains a realname, the form
5626 <emphasis>Joe User &lt;joe@example.com&gt;</emphasis> is used and the
5627 pure e-mail address without angle brackets otherwise, i.e. just
5628 <emphasis>joe@example.com</emphasis>.
5629 </para>
5630 <para>
5631 This normalization affects all headers Mutt generates including aliases.
5632 </para>
5633 </listitem>
5634 </varlistentry>
5635 <varlistentry>
5636 <term>
5637 Initial folder selection
5638 </term>
5639 <listitem>
5640 <para>
5641 The folder Mutt opens at startup is determined as follows: the folder
5642 specified in the <literal>&dollar;MAIL</literal> environment variable if
5643 present. Otherwise, the value of <literal>&dollar;MAILDIR</literal> is taken
5644 into account. If that isn't present either, Mutt takes the user's
5645 mailbox in the mailspool as determined at compile-time (which may also
5646 reside in the home directory). The
5647 <link linkend="spoolfile">&dollar;spoolfile</link> setting overrides
5648 this selection. Highest priority has the mailbox given with the
5649 <literal>-f</literal> command line option.
5650 </para>
5651 </listitem>
5652 </varlistentry>
5653 </variablelist>
5654
5655 </sect1>
5656
5657 </chapter>
5658
5659 <chapter id="mimesupport">
5660 <title>Mutt's MIME Support</title>
5661
5662 <para>
5663 Quite a bit of effort has been made to make Mutt the premier text-mode
5664 MIME MUA.  Every effort has been made to provide the functionality that
5665 the discerning MIME user requires, and the conformance to the standards
5666 wherever possible.  When configuring Mutt for MIME, there are two extra
5667 types of configuration files which Mutt uses.  One is the
5668 <literal>mime.types</literal> file, which contains the mapping of file extensions to
5669 IANA MIME types.  The other is the <literal>mailcap</literal> file, which specifies
5670 the external commands to use for handling specific MIME types.
5671 </para>
5672
5673 <sect1 id="using-mime">
5674 <title>Using MIME in Mutt</title>
5675
5676 <para>
5677 There are three areas/menus in Mutt which deal with MIME, they are the
5678 pager (while viewing a message), the attachment menu and the compose
5679 menu.
5680 </para>
5681
5682 <sect2 id="mime-pager">
5683 <title>Viewing MIME Messages in the Pager</title>
5684
5685 <para>
5686 When you select a message from the index and view it in the pager, Mutt
5687 decodes the message to a text representation.  Mutt internally supports
5688 a number of MIME types, including <literal>text/plain, text/enriched,
5689 message/rfc822, and message/news</literal>.  In addition, the export
5690 controlled version of Mutt recognizes a variety of PGP MIME types,
5691 including PGP/MIME and application/pgp.
5692 </para>
5693
5694 <para>
5695 Mutt will denote attachments with a couple lines describing them.
5696 These lines are of the form:
5697 </para>
5698
5699 <screen>
5700 [-- Attachment #1: Description --]
5701 [-- Type: text/plain, Encoding: 7bit, Size: 10000 --]
5702 </screen>
5703
5704 <para>
5705 Where the <literal>Description</literal> is the description or filename given for the
5706 attachment, and the <literal>Encoding</literal> is one of
5707 <literal>7bit/8bit/quoted-printable/base64/binary</literal>.
5708 </para>
5709
5710 <para>
5711 If Mutt cannot deal with a MIME type, it will display a message like:
5712 </para>
5713
5714 <screen>
5715 [-- image/gif is unsupported (use 'v' to view this part) --]
5716 </screen>
5717
5718 </sect2>
5719
5720 <sect2 id="attach-menu">
5721 <title>The Attachment Menu</title>
5722
5723 <para>
5724 The default binding for <literal>&lt;view-attachments&gt;</literal> is <quote>v</quote>, which displays the
5725 attachment menu for a message.  The attachment menu displays a list of
5726 the attachments in a message.  From the attachment menu, you can save,
5727 print, pipe, delete, and view attachments.  You can apply these
5728 operations to a group of attachments at once, by tagging the attachments
5729 and by using the <literal>&lt;tag-prefix&gt;</literal> operator.  You can also reply to the
5730 current message from this menu, and only the current attachment (or the
5731 attachments tagged) will be quoted in your reply.  You can view
5732 attachments as text, or view them using the mailcap viewer definition.
5733 </para>
5734
5735 <para>
5736 Finally, you can apply the usual message-related functions (like
5737 <link linkend="resend-message"><literal>&lt;resend-message&gt;</literal></link>, and the
5738 <literal>&lt;reply&gt;</literal> and <literal>&lt;forward&gt;</literal>
5739 functions) to attachments of type <literal>message/rfc822</literal>.
5740 </para>
5741
5742 <para>
5743 See the help on the attachment menu for more information.
5744 </para>
5745
5746 </sect2>
5747
5748 <sect2 id="compose-menu">
5749 <title>The Compose Menu</title>
5750
5751 <para>
5752 The compose menu is the menu you see before you send a message.  It
5753 allows you to edit the recipient list, the subject, and other aspects
5754 of your message.  It also contains a list of the attachments of your
5755 message, including the main body.  From this menu, you can print, copy,
5756 filter, pipe, edit, compose, review, and rename an attachment or a
5757 list of tagged attachments.  You can also modifying the attachment
5758 information, notably the type, encoding and description.
5759 </para>
5760
5761 <para>
5762 Attachments appear as follows:
5763 </para>
5764
5765 <screen>
5766 - 1 [text/plain, 7bit, 1K]           /tmp/mutt-euler-8082-0 &lt;no description&gt;
5767   2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz &lt;no description&gt;
5768 </screen>
5769
5770 <para>
5771 The '-' denotes that Mutt will delete the file after sending (or
5772 postponing, or canceling) the message.  It can be toggled with the
5773 <literal>&lt;toggle-unlink&gt;</literal> command (default: u).  The next field is the MIME
5774 content-type, and can be changed with the <literal>&lt;edit-type&gt;</literal> command
5775 (default: &circ;T).  The next field is the encoding for the attachment,
5776 which allows a binary message to be encoded for transmission on 7bit
5777 links.  It can be changed with the <literal>&lt;edit-encoding&gt;</literal> command
5778 (default: &circ;E).  The next field is the size of the attachment,
5779 rounded to kilobytes or megabytes.  The next field is the filename,
5780 which can be changed with the <literal>&lt;rename-file&gt;</literal> command (default: R).
5781 The final field is the description of the attachment, and can be
5782 changed with the <literal>&lt;edit-description&gt;</literal> command (default: d).
5783 </para>
5784
5785 </sect2>
5786
5787 </sect1>
5788
5789 <sect1 id="mime-types">
5790 <title>MIME Type Configuration with <literal>mime.types</literal></title>
5791
5792 <para>
5793 When you add an attachment to your mail message, Mutt searches your
5794 personal <literal>mime.types</literal> file at <literal>&dollar;&lcub;HOME&rcub;/.mime.types</literal>, and then
5795 the system <literal>mime.types</literal> file at <literal>/usr/local/share/mutt/mime.types</literal> or
5796 <literal>/etc/mime.types</literal>
5797 </para>
5798
5799 <para>
5800 The <literal>mime.types</literal> file consist of lines containing a MIME type and a space
5801 separated list of extensions.  For example:
5802 </para>
5803
5804 <screen>
5805 application/postscript          ps eps
5806 application/pgp                 pgp
5807 audio/x-aiff                    aif aifc aiff
5808 </screen>
5809
5810 <para>
5811 A sample <literal>mime.types</literal> file comes with the Mutt distribution, and
5812 should contain most of the MIME types you are likely to use.
5813 </para>
5814
5815 <para>
5816 If Mutt can not determine the mime type by the extension of the file you
5817 attach, it will look at the file.  If the file is free of binary
5818 information, Mutt will assume that the file is plain text, and mark it
5819 as <literal>text/plain</literal>.  If the file contains binary information, then Mutt will
5820 mark it as <literal>application/octet-stream</literal>.  You can change the MIME
5821 type that Mutt assigns to an attachment by using the <literal>&lt;edit-type&gt;</literal>
5822 command from the compose menu (default: &circ;T). The MIME type is actually a
5823 major mime type followed by the sub-type, separated by a '/'. 6 major
5824 types: application, text, image, video, audio, and model have been approved
5825 after various internet discussions. Mutt recognizes all of these if the
5826 appropriate entry is found in the <literal>mime.types</literal> file. It also recognizes other
5827 major mime types, such as the chemical type that is widely used in the
5828 molecular modeling community to pass molecular data in various forms to
5829 various molecular viewers. Non-recognized mime types should only be used
5830 if the recipient of the message is likely to be expecting such attachments.
5831 </para>
5832
5833 </sect1>
5834
5835 <sect1 id="mailcap">
5836 <title>MIME Viewer Configuration with Mailcap</title>
5837
5838 <para>
5839 Mutt supports RFC 1524 MIME Configuration, in particular the Unix
5840 specific format specified in Appendix A of RFC 1524.  This file format
5841 is commonly referred to as the mailcap format.  Many MIME compliant
5842 programs utilize the mailcap format, allowing you to specify handling
5843 for all MIME types in one place for all programs.  Programs known to
5844 use this format include Firefox, lynx and metamail.
5845 </para>
5846
5847 <para>
5848 In order to handle various MIME types that Mutt can not handle
5849 internally, Mutt parses a series of external configuration files to
5850 find an external handler. The default search string for these files
5851 is a colon delimited list containing the following files:
5852 </para>
5853
5854 <orderedlist>
5855 <listitem><para><literal>&dollar;HOME/.mailcap</literal></para></listitem>
5856 <listitem><para><literal>&dollar;PKGDATADIR/mailcap</literal></para></listitem>
5857 <listitem><para><literal>&dollar;SYSCONFDIR/mailcap</literal></para></listitem>
5858 <listitem><para><literal>/etc/mailcap</literal></para></listitem>
5859 <listitem><para><literal>/usr/etc/mailcap</literal></para></listitem>
5860 <listitem><para><literal>/usr/local/etc/mailcap</literal></para></listitem>
5861 </orderedlist>
5862
5863 <para>
5864 where <literal>&dollar;HOME</literal> is your home directory. The
5865 <literal>&dollar;PKGDATADIR</literal> and the
5866 <literal>&dollar;SYSCONFDIR</literal> directories depend on where Mutt
5867 is installed: the former is the default for shared data, the
5868 latter for system configuration files.
5869 </para>
5870
5871 <para>
5872 The default search path can be obtained by running the following
5873 command:
5874 </para>
5875
5876 <screen>
5877 mutt -nF /dev/null -Q mailcap_path
5878 </screen>
5879
5880 <para>
5881 In particular, the metamail distribution will install a mailcap file,
5882 usually as <literal>/usr/local/etc/mailcap</literal>, which contains some baseline
5883 entries.
5884 </para>
5885
5886 <sect2 id="mailcap-basics">
5887 <title>The Basics of the Mailcap File</title>
5888
5889 <para>
5890 A mailcap file consists of a series of lines which are comments, blank,
5891 or definitions.
5892 </para>
5893
5894 <para>
5895 A comment line consists of a &num; character followed by anything you want.
5896 </para>
5897
5898 <para>
5899 A blank line is blank.
5900 </para>
5901
5902 <para>
5903 A definition line consists of a content type, a view command, and any
5904 number of optional fields.  Each field of a definition line is divided
5905 by a semicolon ';' character.
5906 </para>
5907
5908 <para>
5909 The content type is specified in the MIME standard type/subtype method.
5910 For example,
5911 <literal>text/plain, text/html, image/gif, </literal>
5912 etc.  In addition, the mailcap format includes two formats for
5913 wildcards, one using the special '*' subtype, the other is the implicit
5914 wild, where you only include the major type.  For example, <literal>image/*</literal>, or
5915 <literal>video,</literal> will match all image types and video types,
5916 respectively.
5917 </para>
5918
5919 <para>
5920 The view command is a Unix command for viewing the type specified. There
5921 are two different types of commands supported. The default is to send
5922 the body of the MIME message to the command on stdin. You can change
5923 this behavior by using &percnt;s as a parameter to your view command.
5924 This will cause Mutt to save the body of the MIME message to a temporary
5925 file, and then call the view command with the &percnt;s replaced by
5926 the name of the temporary file. In both cases, Mutt will turn over the
5927 terminal to the view program until the program quits, at which time Mutt
5928 will remove the temporary file if it exists.
5929 </para>
5930
5931 <para>
5932 So, in the simplest form, you can send a text/plain message to the
5933 external pager more on stdin:
5934 </para>
5935
5936 <screen>
5937 text/plain; more
5938 </screen>
5939
5940 <para>
5941 Or, you could send the message as a file:
5942 </para>
5943
5944 <screen>
5945 text/plain; more %s
5946 </screen>
5947
5948 <para>
5949 Perhaps you would like to use lynx to interactively view a text/html
5950 message:
5951 </para>
5952
5953 <screen>
5954 text/html; lynx %s
5955 </screen>
5956
5957 <para>
5958 In this case, lynx does not support viewing a file from stdin, so you
5959 must use the &percnt;s syntax.
5960 </para>
5961
5962 <note>
5963 <para>
5964 <emphasis>Some older versions of lynx contain a bug where they
5965 will check the mailcap file for a viewer for text/html.  They will find
5966 the line which calls lynx, and run it.  This causes lynx to continuously
5967 spawn itself to view the object.</emphasis>
5968 </para>
5969 </note>
5970
5971 <para>
5972 On the other hand, maybe you don't want to use lynx interactively, you
5973 just want to have it convert the text/html to text/plain, then you can
5974 use:
5975 </para>
5976
5977 <screen>
5978 text/html; lynx -dump %s | more
5979 </screen>
5980
5981 <para>
5982 Perhaps you wish to use lynx to view text/html files, and a pager on
5983 all other text formats, then you would use the following:
5984 </para>
5985
5986 <screen>
5987 text/html; lynx %s
5988 text/*; more
5989 </screen>
5990
5991 <para>
5992 This is the simplest form of a mailcap file.
5993 </para>
5994
5995 </sect2>
5996
5997 <sect2 id="secure-mailcap">
5998 <title>Secure Use of Mailcap</title>
5999
6000 <para>
6001 The interpretation of shell meta-characters embedded in MIME parameters
6002 can lead to security problems in general.  Mutt tries to quote parameters
6003 in expansion of &percnt;s syntaxes properly, and avoids risky characters by
6004 substituting them, see the <link linkend="mailcap-sanitize">&dollar;mailcap&lowbar;sanitize</link> variable.
6005 </para>
6006
6007 <para>
6008 Although Mutt's procedures to invoke programs with mailcap seem to be
6009 safe, there are other applications parsing mailcap, maybe taking less care
6010 of it.  Therefore you should pay attention to the following rules:
6011 </para>
6012
6013 <para>
6014 <emphasis>Keep the &percnt;-expandos away from shell quoting.</emphasis>
6015 Don't quote them with single or double quotes.  Mutt does this for
6016 you, the right way, as should any other program which interprets
6017 mailcap.  Don't put them into backtick expansions.  Be highly careful
6018 with eval statements, and avoid them if possible at all.  Trying to fix
6019 broken behavior with quotes introduces new leaks - there is no
6020 alternative to correct quoting in the first place.
6021 </para>
6022
6023 <para>
6024 If you have to use the &percnt;-expandos' values in context where you need
6025 quoting or backtick expansions, put that value into a shell variable
6026 and reference the shell variable where necessary, as in the following
6027 example (using <literal>&dollar;charset</literal> inside the backtick expansion is safe,
6028 since it is not itself subject to any further expansion):
6029 </para>
6030
6031 <screen>
6032 text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} &bsol;
6033         &amp;&amp; test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1
6034 </screen>
6035
6036 </sect2>
6037
6038 <sect2 id="advanced-mailcap">
6039 <title>Advanced Mailcap Usage</title>
6040
6041 <sect3 id="optional-mailcap-fields">
6042 <title>Optional Fields</title>
6043
6044 <para>
6045 In addition to the required content-type and view command fields, you
6046 can add semi-colon ';' separated fields to set flags and other options.
6047 Mutt recognizes the following optional fields:
6048 </para>
6049
6050 <variablelist>
6051
6052 <varlistentry>
6053 <term>copiousoutput</term>
6054 <listitem>
6055 <para>
6056 This flag tells Mutt that the command passes possibly large amounts of
6057 text on stdout.  This causes Mutt to invoke a pager (either the internal
6058 pager or the external pager defined by the pager variable) on the output
6059 of the view command.  Without this flag, Mutt assumes that the command
6060 is interactive.  One could use this to replace the pipe to <literal>more</literal>
6061 in the <literal>lynx -dump</literal> example in the Basic section:
6062 </para>
6063
6064 <screen>
6065 text/html; lynx -dump %s ; copiousoutput
6066 </screen>
6067
6068 <para>
6069 This will cause lynx to format the text/html output as text/plain
6070 and Mutt will use your standard pager to display the results.
6071 </para>
6072 </listitem>
6073 </varlistentry>
6074 <varlistentry>
6075 <term>needsterminal</term>
6076 <listitem>
6077 <para>
6078 Mutt uses this flag when viewing attachments with <link linkend="auto-view"><command>auto&lowbar;view</command></link>, in order to decide whether it should honor the setting
6079 of the <link linkend="wait-key">&dollar;wait&lowbar;key</link> variable or
6080 not.  When an attachment is viewed using an interactive program, and the
6081 corresponding mailcap entry has a <emphasis>needsterminal</emphasis> flag, Mutt will use
6082 <link linkend="wait-key">&dollar;wait&lowbar;key</link> and the exit status
6083 of the program to decide if it will ask you to press a key after the
6084 external program has exited.  In all other situations it will not prompt
6085 you for a key.
6086 </para>
6087 </listitem>
6088 </varlistentry>
6089 <varlistentry>
6090 <term>compose=&lt;command&gt;</term>
6091 <listitem>
6092 <para>
6093 This flag specifies the command to use to create a new attachment of a
6094 specific MIME type.  Mutt supports this from the compose menu.
6095 </para>
6096 </listitem>
6097 </varlistentry>
6098 <varlistentry>
6099 <term>composetyped=&lt;command&gt;</term>
6100 <listitem>
6101 <para>
6102 This flag specifies the command to use to create a new attachment of a
6103 specific MIME type.  This command differs from the compose command in
6104 that Mutt will expect standard MIME headers on the data.  This can be
6105 used to specify parameters, filename, description, etc. for a new
6106 attachment.   Mutt supports this from the compose menu.
6107 </para>
6108 </listitem>
6109 </varlistentry>
6110 <varlistentry>
6111 <term>print=&lt;command&gt;</term>
6112 <listitem>
6113 <para>
6114 This flag specifies the command to use to print a specific MIME type.
6115 Mutt supports this from the attachment and compose menus.
6116 </para>
6117 </listitem>
6118 </varlistentry>
6119 <varlistentry>
6120 <term>edit=&lt;command&gt;</term>
6121 <listitem>
6122 <para>
6123 This flag specifies the command to use to edit a specific MIME type.
6124 Mutt supports this from the compose menu, and also uses it to compose
6125 new attachments.  Mutt will default to the defined editor for text
6126 attachments.
6127 </para>
6128 </listitem>
6129 </varlistentry>
6130 <varlistentry>
6131 <term>nametemplate=&lt;template&gt;</term>
6132 <listitem>
6133 <para>
6134 This field specifies the format for the file denoted by &percnt;s in the
6135 command fields.  Certain programs will require a certain file extension,
6136 for instance, to correctly view a file.  For instance, lynx will only
6137 interpret a file as <literal>text/html</literal> if the file ends in <literal>.html</literal>.
6138 So, you would specify lynx as a <literal>text/html</literal> viewer with a line in
6139 the mailcap file like:
6140 </para>
6141
6142 <screen>
6143 text/html; lynx %s; nametemplate=%s.html
6144 </screen>
6145
6146 </listitem>
6147 </varlistentry>
6148 <varlistentry>
6149 <term>test=&lt;command&gt;</term>
6150 <listitem>
6151 <para>
6152 This field specifies a command to run to test whether this mailcap
6153 entry should be used.  The command is defined with the command expansion
6154 rules defined in the next section.  If the command returns 0, then the
6155 test passed, and Mutt uses this entry.  If the command returns non-zero,
6156 then the test failed, and Mutt continues searching for the right entry.
6157 Note that the content-type must match before Mutt performs the test.
6158 For example:
6159 </para>
6160
6161 <screen>
6162 text/html; firefox -remote 'openURL(%s)' ; test=RunningX
6163 text/html; lynx %s
6164 </screen>
6165
6166 <para>
6167 In this example, Mutt will run the program RunningX which will return 0
6168 if the X Window manager is running, and non-zero if it isn't.  If
6169 RunningX returns 0, then Mutt will call firefox to display the
6170 <literal>text/html</literal> object.  If RunningX doesn't return 0, then Mutt will go on
6171 to the next entry and use lynx to display the <literal>text/html</literal> object.
6172 </para>
6173 </listitem>
6174 </varlistentry>
6175 </variablelist>
6176
6177 </sect3>
6178
6179 <sect3 id="mailcap-search-order">
6180 <title>Search Order</title>
6181
6182 <para>
6183 When searching for an entry in the mailcap file, Mutt will search for
6184 the most useful entry for its purpose.  For instance, if you are
6185 attempting to print an <literal>image/gif</literal>, and you have the following
6186 entries in your mailcap file, Mutt will search for an entry with the
6187 print command:
6188 </para>
6189
6190 <screen>
6191 image/*;        xv %s
6192 image/gif;      ; print= anytopnm %s | pnmtops | lpr; &bsol;
6193                 nametemplate=%s.gif
6194 </screen>
6195
6196 <para>
6197 Mutt will skip the <literal>image/*</literal> entry and use the <literal>image/gif</literal>
6198 entry with the print command.
6199 </para>
6200
6201 <para>
6202 In addition, you can use this with <link linkend="auto-view"><command>auto&lowbar;view</command></link>
6203 to denote two commands for viewing an attachment, one to be viewed
6204 automatically, the other to be viewed interactively from the attachment
6205 menu.  In addition, you can then use the test feature to determine which
6206 viewer to use interactively depending on your environment.
6207 </para>
6208
6209 <screen>
6210 text/html;      firefox -remote 'openURL(%s)' ; test=RunningX
6211 text/html;      lynx %s; nametemplate=%s.html
6212 text/html;      lynx -dump %s; nametemplate=%s.html; copiousoutput
6213 </screen>
6214
6215 <para>
6216 For <link linkend="auto-view"><command>auto&lowbar;view</command></link>, Mutt will choose the third
6217 entry because of the copiousoutput tag.  For interactive viewing, Mutt
6218 will run the program RunningX to determine if it should use the first
6219 entry.  If the program returns non-zero, Mutt will use the second entry
6220 for interactive viewing.
6221 </para>
6222
6223 </sect3>
6224
6225 <sect3 id="mailcap-command-expansion">
6226 <title>Command Expansion</title>
6227
6228 <para>
6229 The various commands defined in the mailcap files are passed to the
6230 <literal>/bin/sh</literal> shell using the <literal>system(3)</literal> function.  Before the
6231 command is passed to <literal>/bin/sh -c</literal>, it is parsed to expand
6232 various special parameters with information from Mutt.  The keywords
6233 Mutt expands are:
6234 </para>
6235
6236 <variablelist>
6237
6238 <varlistentry>
6239 <term>&percnt;s</term>
6240 <listitem>
6241 <para>
6242 As seen in the basic mailcap section, this variable is expanded
6243 to a filename specified by the calling program.  This file contains
6244 the body of the message to view/print/edit or where the composing
6245 program should place the results of composition.  In addition, the
6246 use of this keyword causes Mutt to not pass the body of the message
6247 to the view/print/edit program on stdin.
6248 </para>
6249 </listitem>
6250 </varlistentry>
6251 <varlistentry>
6252 <term>&percnt;t</term>
6253 <listitem>
6254 <para>
6255 Mutt will expand &percnt;t to the text representation of the content
6256 type of the message in the same form as the first parameter of the
6257 mailcap definition line, ie <literal>text/html</literal> or
6258 <literal>image/gif</literal>.
6259 </para>
6260 </listitem>
6261 </varlistentry>
6262 <varlistentry>
6263 <term>&percnt;&lcub;&lt;parameter&gt;&rcub;</term>
6264 <listitem>
6265 <para>
6266 Mutt will expand this to the value of the specified parameter
6267 from the Content-Type: line of the mail message.  For instance, if
6268 Your mail message contains:
6269 </para>
6270
6271 <screen>
6272 Content-Type: text/plain; charset=iso-8859-1
6273 </screen>
6274
6275 <para>
6276 then Mutt will expand &percnt;&lcub;charset&rcub; to iso-8859-1.  The default metamail
6277 mailcap file uses this feature to test the charset to spawn an xterm
6278 using the right charset to view the message.
6279 </para>
6280 </listitem>
6281 </varlistentry>
6282 <varlistentry>
6283 <term>&bsol;&percnt;</term>
6284 <listitem>
6285 <para>
6286 This will be replaced by a &percnt;
6287 </para>
6288 </listitem>
6289 </varlistentry>
6290 </variablelist>
6291
6292 <para>
6293 Mutt does not currently support the &percnt;F and &percnt;n keywords
6294 specified in RFC 1524.  The main purpose of these parameters is for
6295 multipart messages, which is handled internally by Mutt.
6296 </para>
6297
6298 </sect3>
6299
6300 </sect2>
6301
6302 <sect2 id="mailcap-example">
6303 <title>Example Mailcap Files</title>
6304
6305 <para>
6306 This mailcap file is fairly simple and standard:
6307 </para>
6308
6309 <screen>
6310 # I'm always running X :)
6311 video/*;        xanim %s &gt; /dev/null
6312 image/*;        xv %s &gt; /dev/null
6313
6314 # I'm always running firefox (if my computer had more memory, maybe)
6315 text/html;      firefox -remote 'openURL(%s)'
6316 </screen>
6317
6318 <para>
6319 This mailcap file shows quite a number of examples:
6320 </para>
6321
6322 <screen>
6323 # Use xanim to view all videos   Xanim produces a header on startup,
6324 # send that to /dev/null so I don't see it
6325 video/*;        xanim %s &gt; /dev/null
6326
6327 # Send html to a running firefox by remote
6328 text/html;      firefox -remote 'openURL(%s)'; test=RunningFirefox
6329
6330 # If I'm not running firefox but I am running X, start firefox on the
6331 # object
6332 text/html;      firefox %s; test=RunningX
6333
6334 # Else use lynx to view it as text
6335 text/html;      lynx %s
6336
6337 # This version would convert the text/html to text/plain
6338 text/html;      lynx -dump %s; copiousoutput
6339
6340 # I use enscript to print text in two columns to a page
6341 text/*;         more %s; print=enscript -2Gr %s
6342
6343 # Firefox adds a flag to tell itself to view jpegs internally
6344 image/jpeg;xv %s; x-mozilla-flags=internal
6345
6346 # Use xv to view images if I'm running X
6347 # In addition, this uses the \ to extend the line and set my editor
6348 # for images
6349 image/*;xv %s; test=RunningX; &bsol;
6350         edit=xpaint %s
6351
6352 # Convert images to text using the netpbm tools
6353 image/*;  (anytopnm %s | pnmscale -xysize 80 46 | ppmtopgm | pgmtopbm |
6354 pbmtoascii -1x2 ) 2&gt;&amp;1 ; copiousoutput
6355
6356 # Send excel spreadsheets to my NT box
6357 application/ms-excel; open.pl %s
6358 </screen>
6359
6360 </sect2>
6361
6362 </sect1>
6363
6364 <sect1 id="auto-view">
6365 <title>MIME Autoview</title>
6366
6367 <para>
6368 Usage:
6369 </para>
6370
6371 <cmdsynopsis>
6372 <command>auto-view</command>
6373 <arg choice="plain">
6374 <replaceable>mimetype</replaceable>
6375 </arg>
6376 <arg choice="opt" rep="repeat">
6377 <replaceable>mimetype</replaceable>
6378 </arg>
6379
6380 <command>unauto-view</command>
6381 <group choice="req">
6382 <arg choice="plain">
6383 <replaceable>*</replaceable>
6384 </arg>
6385 <arg choice="plain" rep="repeat">
6386 <replaceable>mimetype</replaceable>
6387 </arg>
6388 </group>
6389 </cmdsynopsis>
6390
6391 <para>
6392 In addition to explicitly telling Mutt to view an attachment with the
6393 MIME viewer defined in the mailcap file, Mutt has support for
6394 automatically viewing MIME attachments while in the pager.
6395 </para>
6396
6397 <para>
6398 To work, you must define a viewer in the mailcap file which uses the
6399 <literal>copiousoutput</literal> option to denote that it is non-interactive.
6400 Usually, you also use the entry to convert the attachment to a text
6401 representation which you can view in the pager.
6402 </para>
6403
6404 <para>
6405 You then use the <command>auto&lowbar;view</command> <literal>.muttrc</literal> command to list the
6406 content-types that you wish to view automatically.  For instance, if you
6407 set it to:
6408 </para>
6409
6410 <screen>
6411 auto_view text/html application/x-gunzip &bsol;
6412   application/postscript image/gif application/x-tar-gz
6413 </screen>
6414
6415 <para>
6416 Mutt could use the following mailcap entries to automatically view
6417 attachments of these types.
6418 </para>
6419
6420 <screen>
6421 text/html;      lynx -dump %s; copiousoutput; nametemplate=%s.html
6422 image/*;        anytopnm %s | pnmscale -xsize 80 -ysize 50 | ppmtopgm | &bsol;
6423                 pgmtopbm | pbmtoascii ; copiousoutput
6424 application/x-gunzip;   gzcat; copiousoutput
6425 application/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput
6426 application/postscript; ps2ascii %s; copiousoutput
6427 </screen>
6428
6429 <para>
6430 <command>unauto&lowbar;view</command> can be used to remove previous entries from the autoview list.
6431 This can be used with <link linkend="message-hook"><command>message-hook</command></link> to autoview messages based on size, etc.
6432 <quote><command>unauto&lowbar;view</command> *</quote> will remove all previous entries.
6433 </para>
6434
6435 </sect1>
6436
6437 <sect1 id="alternative-order">
6438 <title>MIME Multipart/Alternative</title>
6439
6440 <para>
6441 Mutt has some heuristics for determining which attachment of a
6442 <literal>multipart/alternative</literal> type to display.  First, Mutt will check the
6443 <command>alternative&lowbar;order</command> list
6444 to determine if one of the available types is preferred.  It consists of
6445 a number of mimetypes in order, including support for implicit and
6446 explicit wildcards, for example:
6447 </para>
6448
6449 <screen>
6450 alternative_order text/enriched text/plain text application/postscript image/*
6451 </screen>
6452
6453 <para>
6454 Next, Mutt will check if any of the types have a defined
6455 <link linkend="auto-view"><command>auto&lowbar;view</command></link>, and use that.  Failing
6456 that, Mutt will look for any text type.  As a last attempt, Mutt will
6457 look for any type it knows how to handle.
6458 </para>
6459
6460 <para>
6461 To remove a MIME type from the <command>alternative&lowbar;order</command> list, use the
6462 <command>unalternative&lowbar;order</command> command.
6463 </para>
6464
6465 </sect1>
6466
6467 <sect1 id="attachments">
6468 <title>Attachment Searching and Counting</title>
6469
6470 <para>
6471 If you ever lose track of attachments in your mailboxes, Mutt's
6472 attachment-counting and -searching support might be for you.  You can
6473 make your message index display the number of qualifying attachments in
6474 each message, or search for messages by attachment count.  You also can
6475 configure what kinds of attachments qualify for this feature with the
6476 <command>attachments</command> and <command>unattachments</command> commands.
6477 </para>
6478
6479 <para>
6480 In order to provide this information, Mutt needs to fully MIME-parse
6481 all messages affected first. This can slow down operation especially for
6482 remote mail folders such as IMAP because all messages have to be
6483 downloaded first regardless whether the user really wants to view them
6484 or not.
6485 </para>
6486
6487 <para>
6488 The syntax is:
6489 </para>
6490
6491 <cmdsynopsis>
6492 <command>attachments</command>
6493 <arg choice="plain">
6494 <replaceable>&lcub; + &verbar; - &rcub;disposition</replaceable>
6495 </arg>
6496 <arg choice="plain">
6497 <replaceable>mime-type</replaceable>
6498 </arg>
6499
6500 <command>unattachments</command>
6501 <arg choice="plain">
6502 <replaceable>&lcub; + &verbar; - &rcub;disposition</replaceable>
6503 </arg>
6504 <arg choice="plain">
6505 <replaceable>mime-type</replaceable>
6506 </arg>
6507
6508 <command>attachments</command>
6509 <arg choice="plain">
6510 <replaceable>?</replaceable>
6511 </arg>
6512 </cmdsynopsis>
6513
6514 <para>
6515 <emphasis>disposition</emphasis> is the attachment's Content-Disposition type &mdash; either
6516 <literal>inline</literal> or <literal>attachment</literal>.
6517 You can abbreviate this to <literal>I</literal> or <literal>A</literal>.
6518 </para>
6519
6520 <para>
6521 Disposition is prefixed by either a + symbol or a - symbol.  If it's
6522 a +, you're saying that you want to allow this disposition and MIME
6523 type to qualify.  If it's a -, you're saying that this disposition
6524 and MIME type is an exception to previous + rules.  There are examples
6525 below of how this is useful.
6526 </para>
6527
6528 <para>
6529 <emphasis>mime-type</emphasis> is, unsurprisingly, the MIME type of the attachment you want
6530 to affect.  A MIME type is always of the format <literal>major/minor</literal>, where
6531 <literal>major</literal> describes the broad category of document you're looking at, and
6532 <literal>minor</literal> describes the specific type within that category.  The major
6533 part of mime-type must be literal text (or the special token <quote><literal>*</literal></quote>), but
6534 the minor part may be a regular expression.  (Therefore, <quote><literal>*/.*</literal></quote> matches
6535 any MIME type.)
6536 </para>
6537
6538 <para>
6539 The MIME types you give to the <command>attachments</command> directive are a kind of
6540 pattern.  When you use the <command>attachments</command> directive, the patterns you
6541 specify are added to a list.  When you use <command>unattachments</command>, the pattern
6542 is removed from the list.  The patterns are not expanded and matched
6543 to specific MIME types at this time &mdash; they're just text in a list.
6544 They're only matched when actually evaluating a message.
6545 </para>
6546
6547 <para>
6548 Some examples might help to illustrate.  The examples that are not
6549 commented out define the default configuration of the lists.
6550 </para>
6551
6552 <example id="ex-attach-count">
6553 <title>Attachment counting</title>
6554 <screen>
6555 ## Removing a pattern from a list removes that pattern literally. It
6556 ## does not remove any type matching the pattern.
6557 ##
6558 ##  attachments   +A */.*
6559 ##  attachments   +A image/jpeg
6560 ##  unattachments +A */.*
6561 ##
6562 ## This leaves "attached" image/jpeg files on the allowed attachments
6563 ## list. It does not remove all items, as you might expect, because the
6564 ## second */.* is not a matching expression at this time.
6565 ##
6566 ## Remember: "unattachments" only undoes what "attachments" has done!
6567 ## It does not trigger any matching on actual messages.
6568
6569
6570 ## Qualify any MIME part with an "attachment" disposition, EXCEPT for
6571 ## text/x-vcard and application/pgp parts. (PGP parts are already known
6572 ## to mutt, and can be searched for with ~g, ~G, and ~k.)
6573 ##
6574 ## I've added x-pkcs7 to this, since it functions (for S/MIME)
6575 ## analogously to PGP signature attachments. S/MIME isn't supported
6576 ## in a stock mutt build, but we can still treat it specially here.
6577 ##
6578 attachments   +A */.*
6579 attachments   -A text/x-vcard application/pgp.*
6580 attachments   -A application/x-pkcs7-.*
6581
6582 ## Discount all MIME parts with an "inline" disposition, unless they're
6583 ## text/plain. (Why inline a text/plain part unless it's external to the
6584 ## message flow?)
6585 ##
6586 attachments   +I text/plain
6587
6588 ## These two lines make Mutt qualify MIME containers.  (So, for example,
6589 ## a message/rfc822 forward will count as an attachment.)  The first
6590 ## line is unnecessary if you already have "attach-allow */.*", of
6591 ## course.  These are off by default!  The MIME elements contained
6592 ## within a message/* or multipart/* are still examined, even if the
6593 ## containers themseves don't qualify.
6594 ##
6595 #attachments  +A message/.* multipart/.*
6596 #attachments  +I message/.* multipart/.*
6597
6598 ## You probably don't really care to know about deleted attachments.
6599 attachments   -A message/external-body
6600 attachments   -I message/external-body
6601 </screen>
6602 </example>
6603
6604 <para>
6605 Entering the command <quote><command>attachments</command> ?</quote>
6606 as a command will list your current settings in Muttrc format, so that
6607 it can be pasted elsewhere.
6608 </para>
6609
6610 </sect1>
6611
6612 <sect1 id="mime-lookup">
6613 <title>MIME Lookup</title>
6614
6615 <para>
6616 Usage:
6617 </para>
6618
6619 <cmdsynopsis>
6620 <command>mime-lookup</command>
6621 <arg choice="plain">
6622 <replaceable>mimetype</replaceable>
6623 </arg>
6624 <arg choice="opt" rep="repeat">
6625 <replaceable>mimetype</replaceable>
6626 </arg>
6627
6628 <command>unmime-lookup</command>
6629 <group choice="req">
6630 <arg choice="plain">
6631 <replaceable>*</replaceable>
6632 </arg>
6633 <arg choice="plain" rep="repeat">
6634 <replaceable>mimetype</replaceable>
6635 </arg>
6636 </group>
6637 </cmdsynopsis>
6638
6639 <para>
6640 Mutt's mime&lowbar;lookup list specifies a list of mime-types that should not
6641 be treated according to their mailcap entry.  This option is designed to
6642 deal with binary types such as <literal>application/octet-stream</literal>.  When an attachment's
6643 mime-type is listed in mime&lowbar;lookup, then the extension of the filename will
6644 be compared to the list of extensions in the <literal>mime.types</literal> file.  The mime-type
6645 associated with this extension will then be used to process the attachment
6646 according to the rules in the mailcap file and according to any other configuration
6647 options (such as <command>auto&lowbar;view</command>) specified.  Common usage would be:
6648 </para>
6649
6650 <screen>
6651 mime_lookup application/octet-stream application/X-Lotus-Manuscript
6652 </screen>
6653
6654 <para>
6655 In addition, the <literal>unmime&lowbar;lookup</literal> command may be
6656 used to disable this feature for any particular mime-type if it had been
6657 set, for example, in a global <literal>.muttrc</literal>.
6658 </para>
6659
6660 </sect1>
6661
6662 </chapter>
6663
6664 <chapter id="optionalfeatures">
6665 <title>Optional Features</title>
6666
6667 <sect1 id="optionalfeatures-notes">
6668 <title>General Notes</title>
6669
6670 <sect2 id="compile-time-features">
6671 <title>Enabling/Disabling Features</title>
6672
6673 <para>
6674 Mutt supports several of optional features which can be enabled or
6675 disabled at compile-time by giving the <emphasis>configure</emphasis> script
6676 certain arguments. These are listed in the <quote>Optional features</quote> section of
6677 the <emphasis>configure --help</emphasis> output.
6678 </para>
6679
6680 <para>
6681 Which features are enabled or disabled can later be determined from the
6682 output of <literal>mutt -v</literal>. If a compile option starts with
6683 <quote>+</quote> it is enabled and disabled if prefixed with <quote>-</quote>. For example, if
6684 Mutt was compiled using GnuTLS for encrypted communication instead of
6685 OpenSSL, <literal>mutt -v</literal> would contain:
6686 </para>
6687
6688 <screen>
6689 -USE_SSL_OPENSSL +USE_SSL_GNUTLS</screen>
6690
6691 </sect2>
6692
6693 <sect2 id="url-syntax">
6694 <title>URL Syntax</title>
6695
6696 <para>
6697 Mutt optionally supports the IMAP, POP3 and SMTP protocols which require
6698 to access servers using URLs. The canonical syntax for specifying URLs
6699 in Mutt is (an item enclosed in <literal>[]</literal> means it is optional and
6700 may be omitted):
6701 </para>
6702
6703 <screen>
6704 proto[s]://[username[:password]@]server[:port]/[path]
6705 </screen>
6706
6707 <para>
6708 <emphasis>proto</emphasis> is the communication protocol:
6709 <literal>imap</literal> for IMAP, <literal>pop</literal> for POP3 and
6710 <literal>smtp</literal> for SMTP. If <quote>s</quote> for <quote>secure
6711 communication</quote> is appended, Mutt will attempt to establish an
6712 encrypted communication using SSL or TLS.
6713 </para>
6714
6715 <para>
6716 Since all protocols supported by Mutt support/require authentication,
6717 login credentials may be specified in the URL. This has the advantage
6718 that multiple IMAP, POP3 or SMTP servers may be specified (which isn't
6719 possible using, for example,
6720 <link linkend="imap-user">&dollar;imap&lowbar;user</link>). The username
6721 may contain the <quote>@</quote> symbol being used by many mail systems
6722 as part of the login name. A password can be given, too but is not
6723 recommended if the URL is specified in a configuration file on disk.
6724 </para>
6725
6726 <para>
6727 If no port number is given, Mutt will use the system's default for the
6728 given protocol (usually consulting <literal>/etc/services</literal>).
6729 </para>
6730
6731 <para>
6732 The optional path is only relevant for IMAP.
6733 </para>
6734
6735 <example id="ex-url">
6736 <title>URLs</title>
6737 <screen>
6738 pops://host/
6739 imaps://user@host/INBOX/Sent
6740 smtp://user@host:587/
6741 </screen>
6742 </example>
6743
6744 </sect2>
6745
6746 </sect1>
6747
6748 <sect1 id="ssl">
6749 <title>SSL/TLS Support</title>
6750
6751 <para>
6752 If Mutt is compiled with IMAP, POP3 and/or SMTP support, it can also be
6753 compiled with support for SSL or TLS using either OpenSSL or GnuTLS (
6754 by running the <emphasis>configure</emphasis> script with the
6755 <emphasis>--enable-ssl=...</emphasis> option for OpenSSL or
6756 <emphasis>--enable-gnutls=...</emphasis> for GnuTLS). Mutt can then
6757 attempt to encrypt communication with remote servers if these protocols
6758 are suffixed with <quote>s</quote> for <quote>secure communication</quote>.
6759 </para>
6760
6761 </sect1>
6762
6763 <sect1 id="pop">
6764 <title>POP3 Support</title>
6765
6766 <para>
6767 If Mutt is compiled with POP3 support (by running the <emphasis>configure</emphasis>
6768 script with the <emphasis>--enable-pop</emphasis> flag), it has the ability to work
6769 with mailboxes located on a remote POP3 server and fetch mail for local
6770 browsing.
6771 </para>
6772
6773 <para>
6774 Remote POP3 servers can be accessed using URLs with the <literal>pop</literal> protocol
6775 for unencrypted and <literal>pops</literal> for encrypted
6776 communication, see <xref linkend="url-syntax"/> for details.
6777 </para>
6778
6779 <para>
6780 Polling for new mail is more expensive over POP3 than locally. For this
6781 reason the frequency at which Mutt will check for mail remotely can be
6782 controlled by the
6783 <link linkend="pop-checkinterval">&dollar;pop&lowbar;checkinterval</link>
6784 variable, which defaults to every 60 seconds.
6785 </para>
6786
6787 <para>
6788 POP is read-only which doesn't allow for some features like editing
6789 messages or changing flags. However, using
6790 <xref linkend="header-caching"/> and <xref linkend="body-caching"/>
6791 Mutt simulates the new/old/read flags as well as flagged and replied.
6792 Mutt applies some logic on top of remote messages but cannot change
6793 them so that modifications of flags are lost when
6794 messages are downloaded from the POP server (either by Mutt or other
6795 tools).
6796 </para>
6797
6798 <anchor id="fetch-mail"/>
6799 <para>
6800 Another way to access your POP3 mail is the <literal>&lt;fetch-mail&gt;</literal> function
6801 (default: G).  It allows to connect to <link linkend="pop-host">&dollar;pop&lowbar;host</link>, fetch all your new mail and place it in the
6802 local <link linkend="spoolfile">&dollar;spoolfile</link>.  After this
6803 point, Mutt runs exactly as if the mail had always been local.
6804 </para>
6805
6806 <note>
6807 <para>
6808 If you only need to fetch all messages to a
6809 local mailbox you should consider using a specialized program, such as
6810 <literal>fetchmail(1)</literal>, <literal>getmail(1)</literal> or similar.
6811 </para>
6812 </note>
6813
6814 </sect1>
6815
6816 <sect1 id="imap">
6817 <title>IMAP Support</title>
6818
6819 <para>
6820 If Mutt was compiled with IMAP support (by running the <emphasis>configure</emphasis>
6821 script with the <emphasis>--enable-imap</emphasis> flag), it has the ability to work
6822 with folders located on a remote IMAP server.
6823 </para>
6824
6825 <para>
6826 You can access the remote inbox by selecting the folder by its URL
6827 (see <xref linkend="url-syntax"/> for details) using the
6828 <literal>imap</literal> or <literal>imaps</literal> protocol.
6829 Alternatively, a pine-compatible notation is also supported, ie
6830 <literal>&lcub;[username@]imapserver[:port][/ssl]&rcub;path/to/folder</literal>
6831 </para>
6832
6833 <para>
6834 Note that not all servers use <quote>/</quote> as the hierarchy separator.  Mutt should
6835 correctly notice which separator is being used by the server and convert
6836 paths accordingly.
6837 </para>
6838
6839 <para>
6840 When browsing folders on an IMAP server, you can toggle whether to look
6841 at only the folders you are subscribed to, or all folders with the
6842 <emphasis>toggle-subscribed</emphasis> command.  See also the
6843 <link linkend="imap-list-subscribed">&dollar;imap&lowbar;list&lowbar;subscribed</link> variable.
6844 </para>
6845
6846 <para>
6847 Polling for new mail on an IMAP server can cause noticeable delays. So, you'll
6848 want to carefully tune the
6849 <link linkend="mail-check">&dollar;mail&lowbar;check</link>
6850 and
6851 <link linkend="timeout">&dollar;timeout</link>
6852 variables. Reasonable values are:
6853 </para>
6854
6855 <screen>
6856 set mail_check=90
6857 set timeout=15
6858 </screen>
6859
6860 <para>
6861 with relatively good results even over slow modem lines.
6862 </para>
6863
6864 <note>
6865 <para>
6866 Note that if you are using mbox as the mail store on UW servers prior to
6867 v12.250, the server has been reported to disconnect a client if another client
6868 selects the same folder.
6869 </para>
6870 </note>
6871
6872 <sect2 id="imap-browser">
6873 <title>The IMAP Folder Browser</title>
6874
6875 <para>
6876 As of version 1.2, Mutt supports browsing mailboxes on an IMAP
6877 server. This is mostly the same as the local file browser, with the
6878 following differences:
6879 </para>
6880
6881 <itemizedlist>
6882 <listitem>
6883
6884 <para>
6885 In lieu of file permissions, Mutt displays the string <quote>IMAP</quote>,
6886 possibly followed by the symbol <quote>+</quote>, indicating
6887 that the entry contains both messages and subfolders. On
6888 Cyrus-like servers folders will often contain both messages and
6889 subfolders.
6890 </para>
6891 </listitem>
6892 <listitem>
6893
6894 <para>
6895 For the case where an entry can contain both messages and
6896 subfolders, the selection key (bound to <literal>enter</literal> by default)
6897 will choose to descend into the subfolder view. If you wish to view
6898 the messages in that folder, you must use <literal>view-file</literal> instead
6899 (bound to <literal>space</literal> by default).
6900 </para>
6901 </listitem>
6902 <listitem>
6903
6904 <para>
6905 You can create, delete and rename mailboxes with the
6906 <literal>&lt;create-mailbox&gt;</literal>, <literal>&lt;delete-mailbox&gt;</literal>, and
6907 <literal>&lt;rename-mailbox&gt;</literal> commands (default bindings: <literal>C</literal>,
6908 <literal>d</literal> and <literal>r</literal>, respectively). You may also
6909 <literal>&lt;subscribe&gt;</literal> and <literal>&lt;unsubscribe&gt;</literal> to mailboxes (normally
6910 these are bound to <literal>s</literal> and <literal>u</literal>, respectively).
6911 </para>
6912 </listitem>
6913
6914 </itemizedlist>
6915
6916 </sect2>
6917
6918 <sect2 id="imap-authentication">
6919 <title>Authentication</title>
6920
6921 <para>
6922 Mutt supports four authentication methods with IMAP servers: SASL,
6923 GSSAPI, CRAM-MD5, and LOGIN (there is a patch by Grant Edwards to add
6924 NTLM authentication for you poor exchange users out there, but it has
6925 yet to be integrated into the main tree). There is also support for
6926 the pseudo-protocol ANONYMOUS, which allows you to log in to a public
6927 IMAP server without having an account. To use ANONYMOUS, simply make
6928 your username blank or <quote>anonymous</quote>.
6929 </para>
6930
6931 <para>
6932 SASL is a special super-authenticator, which selects among several protocols
6933 (including GSSAPI, CRAM-MD5, ANONYMOUS, and DIGEST-MD5) the most secure
6934 method available on your host and the server. Using some of these methods
6935 (including DIGEST-MD5 and possibly GSSAPI), your entire session will be
6936 encrypted and invisible to those teeming network snoops. It is the best
6937 option if you have it. To use it, you must have the Cyrus SASL library
6938 installed on your system and compile Mutt with the <emphasis>--with-sasl</emphasis> flag.
6939 </para>
6940
6941 <para>
6942 Mutt will try whichever methods are compiled in and available on the server,
6943 in the following order: SASL, ANONYMOUS, GSSAPI, CRAM-MD5, LOGIN.
6944 </para>
6945
6946 <para>
6947 There are a few variables which control authentication:
6948 </para>
6949
6950 <itemizedlist>
6951 <listitem>
6952
6953 <para>
6954 <link linkend="imap-user">&dollar;imap&lowbar;user</link> - controls
6955 the username under which you request authentication on the IMAP server,
6956 for all authenticators. This is overridden by an explicit username in
6957 the mailbox path (ie by using a mailbox name of the form
6958 <literal>&lcub;user@host&rcub;</literal>).
6959 </para>
6960 </listitem>
6961 <listitem>
6962
6963 <para>
6964 <link linkend="imap-pass">&dollar;imap&lowbar;pass</link> - a
6965 password which you may preset, used by all authentication methods where
6966 a password is needed.
6967 </para>
6968 </listitem>
6969 <listitem>
6970
6971 <para>
6972 <link linkend="imap-authenticators">&dollar;imap&lowbar;authenticators</link> - a colon-delimited list of IMAP
6973 authentication methods to try, in the order you wish to try them. If
6974 specified, this overrides Mutt's default (attempt everything, in the order
6975 listed above).
6976 </para>
6977 </listitem>
6978
6979 </itemizedlist>
6980
6981 </sect2>
6982
6983 </sect1>
6984
6985 <sect1 id="smtp">
6986 <title>SMTP Support</title>
6987
6988 <para>
6989 Besides supporting traditional mail delivery through a
6990 sendmail-compatible program, Mutt supports delivery through SMTP if it
6991 was configured and built with <literal>--enable-smtp</literal>.
6992 </para>
6993
6994 <para>
6995 If the configuration variable
6996 <link linkend="smtp-url">&dollar;smtp&lowbar;url</link> is set, Mutt
6997 will contact the given SMTP server to deliver messages; if it is unset,
6998 Mutt will use the program specified by <link linkend="sendmail">&dollar;sendmail</link>.
6999 </para>
7000
7001 <para>
7002 For details on the URL syntax, please see <xref linkend="url-syntax"/>.
7003 </para>
7004
7005 <para>
7006 The built-in SMTP support supports encryption (the <literal>smtps</literal> protocol
7007 using SSL or TLS) as well as SMTP authentication using SASL. The authentication mechanisms
7008 for SASL are specified in <link linkend="smtp-authenticators">&dollar;smtp&lowbar;authenticators</link>
7009 defaulting to an empty list which makes Mutt try all available methods
7010 from most-secure to least-secure.
7011 </para>
7012
7013 </sect1>
7014
7015 <sect1 id="account-hook">
7016 <title>Managing Multiple Accounts</title>
7017
7018 <para>
7019 Usage:
7020 </para>
7021
7022 <cmdsynopsis>
7023 <command>account-hook</command>
7024 <arg choice="plain">
7025 <replaceable class="parameter">pattern</replaceable>
7026 </arg>
7027 <arg choice="plain">
7028 <replaceable class="parameter">command</replaceable>
7029 </arg>
7030 </cmdsynopsis>
7031
7032 <para>
7033 If you happen to have accounts on multiple IMAP, POP and/or SMTP servers,
7034 you may find managing all the authentication settings inconvenient and
7035 error-prone. The <link linkend="account-hook"><command>account-hook</command></link> command may help. This hook works like
7036 <link linkend="folder-hook"><command>folder-hook</command></link> but is invoked whenever Mutt needs to access a remote mailbox
7037 (including inside the folder browser), not just when you open the
7038 mailbox. This includes (for example) polling for new mail, storing Fcc
7039 messages and saving messages to a folder. As a consequence,
7040 <link linkend="account-hook"><command>account-hook</command></link> should only be used to set connection-related settings such
7041 as passwords or tunnel commands but not settings such as sender
7042 address or name (because in general it should be considered unpredictable
7043 which <link linkend="account-hook"><command>account-hook</command></link> was last used).
7044 </para>
7045
7046 <para>
7047 Some examples:
7048 </para>
7049
7050 <screen>
7051 account-hook . 'unset imap_user; unset imap_pass; unset tunnel'
7052 account-hook imap://host1/ 'set imap_user=me1 imap_pass=foo'
7053 account-hook imap://host2/ 'set tunnel="ssh host2 /usr/libexec/imapd"'
7054 account-hook smtp://user@host3/ 'set tunnel="ssh host3 /usr/libexec/smtpd"'
7055 </screen>
7056
7057 <para>
7058 To manage multiple accounts with, for example, different values of
7059 <link linkend="record">&dollar;record</link> or sender addresses,
7060 <link linkend="folder-hook"><command>folder-hook</command></link>
7061 has to be be used together with
7062 the <link linkend="mailboxes"><command>mailboxes</command></link> command.
7063 </para>
7064
7065 <example id="ex-multiaccount">
7066 <title>Managing multiple accounts</title>
7067 <screen>
7068 mailboxes imap://user@host1/INBOX
7069 folder-hook imap://user@host1/ 'set folder=imap://host1/ ; set record=+INBOX/Sent'
7070
7071 mailboxes imap://user@host2/INBOX
7072 folder-hook imap://user@host2/ 'set folder=imap://host2/ ; set record=+INBOX/Sent'
7073 </screen>
7074 </example>
7075
7076 <para>
7077 In example
7078 <xref linkend="ex-multiaccount"/> the folders are defined using
7079 <link linkend="mailboxes"><command>mailboxes</command></link> so Mutt polls them for new
7080 mail. Each <link linkend="folder-hook"><command>folder-hook</command></link> triggers when
7081 one mailbox below each IMAP account is opened and sets
7082 <link linkend="folder">&dollar;folder</link> to the account's root
7083 folder. Next, it sets <link linkend="record">&dollar;record</link> to
7084 the <emphasis>INBOX/Sent</emphasis> folder below the newly
7085 set <link linkend="folder">&dollar;folder</link>. Please notice that the
7086 value the <quote>+</quote>
7087 <link linkend="shortcuts">mailbox shortcut</link> refers to depends on
7088 the <emphasis>current</emphasis> value
7089 of <link linkend="folder">&dollar;folder</link> and therefore has to be set
7090 separatedly per account. Setting other values
7091 like <link linkend="from">&dollar;from</link>
7092 or <link linkend="signature">&dollar;signature</link> is analogous to setting
7093 <link linkend="record">&dollar;record</link>.
7094 </para>
7095
7096 </sect1>
7097
7098 <sect1 id="caching">
7099 <title>Local Caching</title>
7100
7101 <para>
7102 Mutt contains two types of local caching: <emphasis>(1)</emphasis>
7103 the so-called <quote>header caching</quote> and <emphasis>(2)</emphasis> the
7104 so-called <quote>body caching</quote> which are both described in this section.
7105 </para>
7106
7107 <para>
7108 Header caching is optional as it depends on external libraries, body
7109 caching is always enabled if Mutt is compiled with POP and/or IMAP
7110 support as these use it (body caching requires no external library).
7111 </para>
7112
7113 <sect2 id="header-caching">
7114 <title>Header Caching</title>
7115
7116 <para>
7117 Mutt provides optional support for caching message headers for the
7118 following types of folders: IMAP, POP, Maildir and MH. Header caching
7119 greatly improves speed because for remote folders, headers
7120 usually only need to be downloaded once. For Maildir and MH, reading the
7121 headers from a single file is much faster than looking at possibly
7122 thousands of single files (since Maildir and MH use one file per message.)
7123 </para>
7124
7125 <para>
7126 Header caching can be enabled via the configure script and the
7127 <emphasis>--enable-hcache</emphasis> option. It's not turned on
7128 by default because external database libraries are required: one
7129 of tokyocabinet, qdbm, gdbm or bdb must be present.
7130 </para>
7131
7132 <para>
7133 If enabled, <link
7134 linkend="header-cache">&dollar;header&lowbar;cache</link> can be
7135 used to either point to a file or a directory. If set to point to
7136 a file, one database file for all folders will be used (which may
7137 result in lower performance), but one file per folder if it points
7138 to a directory.
7139 </para>
7140
7141 </sect2>
7142
7143 <sect2 id="body-caching">
7144 <title>Body Caching</title>
7145
7146 <para>
7147 Both cache methods can be combined using the same directory for storage
7148 (and for IMAP/POP even provide meaningful file names) which simplifies
7149 manual maintenance tasks.
7150 </para>
7151
7152
7153 <para>
7154 In addition to caching message headers only, Mutt can also cache
7155 whole message bodies. This results in faster display of messages
7156 for POP and IMAP folders because messages usually have to be
7157 downloaded only once.
7158 </para>
7159
7160 <para>
7161 For configuration, the variable <link linkend="message-cachedir"
7162 >&dollar;message&lowbar;cachedir</link> must point to a
7163 directory. There, Mutt will create a hierarchy of subdirectories
7164 named like: <literal>proto:user@hostname</literal> where
7165 <literal>proto</literal> is either <quote>pop</quote> or <quote>imap.</quote> Within
7166 there for each folder, Mutt stores messages in single files.
7167 All files can be removed as needed if the consumed disk space
7168 becomes an issue as Mutt will silently fetch missing items again.
7169 </para>
7170
7171 </sect2>
7172
7173 <sect2 id="maint-cache">
7174 <title>Maintenance</title>
7175
7176 <para>
7177 Mutt does not (yet) support maintenance features for header cache
7178 database files so that files have to be removed in case they grow too
7179 big. It depends on the database library used for header caching whether
7180 disk space freed by removing messages is re-used.
7181 </para>
7182
7183 <para>
7184 For body caches, Mutt can keep the local cache in sync with the
7185 remote mailbox if the
7186 <link linkend="message-cache-clean">&dollar;message&lowbar;cache&lowbar;clean</link>
7187 variable is set. Cleaning means to remove messages from the cache which
7188 are no longer present in the mailbox which only happens when other mail
7189 clients or instances of Mutt using a different body cache location
7190 delete messages (Mutt itself removes deleted messages from the cache
7191 when syncing a mailbox). As cleaning can take a noticeable amount of time,
7192 it should not be set in general but only occasionally.
7193 </para>
7194
7195 </sect2>
7196
7197 </sect1>
7198
7199 <sect1 id="exact-address">
7200 <title>Exact Address Generation</title>
7201
7202 <para>
7203 Mutt supports the <quote>Name &lt;user@host&gt;</quote> address syntax for reading and
7204 writing messages, the older <quote>user@host (Name)</quote> syntax is only supported when
7205 reading messages. The <emphasis>--enable-exact-address</emphasis>
7206 switch can be given to configure to build it with write-support
7207 for the latter syntax. <literal>EXACT_ADDRESS</literal> in the output of
7208 <literal>mutt -v</literal> indicates whether it's supported.
7209 </para>
7210
7211 </sect1>
7212
7213 <sect1 id="sending-mixmaster">
7214 <title>Sending Anonymous Messages via Mixmaster</title>
7215
7216 <para>
7217 You may also have compiled Mutt to co-operate with Mixmaster, an
7218 anonymous remailer.  Mixmaster permits you to send your messages
7219 anonymously using a chain of remailers. Mixmaster support in Mutt is for
7220 mixmaster version 2.04 (beta 45 appears to be the latest) and 2.03.
7221 It does not support earlier versions or the later so-called version 3 betas,
7222 of which the latest appears to be called 2.9b23.
7223 </para>
7224
7225 <para>
7226 To use it, you'll have to obey certain restrictions.  Most
7227 important, you cannot use the <literal>Cc</literal> and <literal>Bcc</literal> headers.  To tell
7228 Mutt to use mixmaster, you have to select a remailer chain, using
7229 the mix function on the compose menu.
7230 </para>
7231
7232 <para>
7233 The chain selection screen is divided into two parts.  In the
7234 (larger) upper part, you get a list of remailers you may use.  In
7235 the lower part, you see the currently selected chain of remailers.
7236 </para>
7237
7238 <para>
7239 You can navigate in the chain using the <literal>&lt;chain-prev&gt;</literal> and
7240 <literal>&lt;chain-next&gt;</literal> functions, which are by default bound to the left
7241 and right arrows and to the <literal>h</literal> and <literal>l</literal> keys (think vi
7242 keyboard bindings).  To insert a remailer at the current chain
7243 position, use the <literal>&lt;insert&gt;</literal> function.  To append a remailer behind
7244 the current chain position, use <literal>&lt;select-entry&gt;</literal> or <literal>&lt;append&gt;</literal>.
7245 You can also delete entries from the chain, using the corresponding
7246 function.  Finally, to abandon your changes, leave the menu, or
7247 <literal>&lt;accept&gt;</literal> them pressing (by default) the <literal>Return</literal> key.
7248 </para>
7249
7250 <para>
7251 Note that different remailers do have different capabilities,
7252 indicated in the &percnt;c entry of the remailer menu lines (see
7253 <link linkend="mix-entry-format">&dollar;mix&lowbar;entry&lowbar;format</link>).  Most important is
7254 the <quote>middleman</quote> capability, indicated by a capital <quote>M</quote>: This
7255 means that the remailer in question cannot be used as the final
7256 element of a chain, but will only forward messages to other
7257 mixmaster remailers.  For details on the other capabilities, please
7258 have a look at the mixmaster documentation.
7259 </para>
7260
7261 </sect1>
7262
7263 </chapter>
7264
7265 <chapter id="security">
7266 <title>Security Considerations</title>
7267
7268 <para>
7269 First of all, Mutt contains no security holes included by intention but
7270 may contain unknown security holes. As a consequence, please run Mutt
7271 only with as few permissions as possible. Especially, do not run Mutt as
7272 the super user.
7273 </para>
7274
7275 <para>
7276 When configuring Mutt, there're some points to note about secure setups
7277 so please read this chapter carefully.
7278 </para>
7279
7280 <sect1 id="security-passwords">
7281 <title>Passwords</title>
7282
7283 <para>
7284 Although Mutt can be told the various passwords for accounts, please
7285 never store passwords in configuration files. Besides the fact that the
7286 system's operator can always read them, you could forget to mask it out
7287 when reporting a bug or asking for help via a mailing list. Even worse,
7288 your mail including your password could be archived by internet search
7289 engines, mail-to-news gateways etc. It may already be too late before
7290 you notice your mistake.
7291 </para>
7292
7293 </sect1>
7294
7295 <sect1 id="security-tempfiles">
7296 <title>Temporary Files</title>
7297
7298 <para>
7299 Mutt uses many temporary files for viewing messages, verifying digital
7300 signatures, etc. As long as being used, these files are visible by other
7301 users and maybe even readable in case of misconfiguration.  Also, a
7302 different location for these files may be desired which can be changed
7303 via the <link linkend="tmpdir">&dollar;tmpdir</link> variable.
7304 </para>
7305
7306 </sect1>
7307
7308 <sect1 id="security-leaks">
7309 <title>Information Leaks</title>
7310
7311 <sect2 id="security-leaks-mid">
7312 <title>Message-Id: headers</title>
7313
7314 <para>
7315 Message-Id: headers contain a local part that is to be created in a
7316 unique fashion. In order to do so, Mutt will <quote>leak</quote> some
7317 information to the outside world when sending messages: the generation
7318 of this header includes a step counter which is increased (and rotated)
7319 with every message sent. In a longer running mutt session, others can
7320 make assumptions about your mailing habbits depending on the number of
7321 messages sent. If this is not desired, the header can be manually
7322 provided using <link
7323 linkend="edit-headers">&dollar;edit&lowbar;headers</link> (though not
7324 recommended).
7325 </para>
7326
7327 </sect2>
7328
7329 <sect2 id="security-leaks-mailto">
7330 <title><literal>mailto:</literal>-style Links</title>
7331
7332 <para>
7333 As Mutt be can be set up to be the mail client to handle
7334 <literal>mailto:</literal> style links in websites, there're security
7335 considerations, too. Arbitrary header fields can be embedded in these
7336 links which could override existing header fields or attach arbitrary
7337 files using <link linkend="attach-header">the Attach:
7338 psuedoheader</link>. This may be problematic if the <link
7339 linkend="edit-headers">&dollar;edit-headers</link> variable is
7340 <emphasis>unset</emphasis>, i.e. the user doesn't want to see header
7341 fields while editing the message and doesn't pay enough attention to the
7342 compose menu's listing of attachments.
7343 </para>
7344
7345 <para>
7346 For example, following a link like
7347 </para>
7348
7349 <screen>
7350 mailto:joe@host?Attach=~/.gnupg/secring.gpg</screen>
7351
7352 <para>
7353 will send out the user's private gnupg keyring to
7354 <literal>joe@host</literal> if the user doesn't follow the information
7355 on screen carefully enough.
7356 </para>
7357
7358 </sect2>
7359
7360 </sect1>
7361
7362 <sect1 id="security-external">
7363 <title>External Applications</title>
7364
7365 <para>
7366 Mutt in many places has to rely on external applications or for
7367 convenience supports mechanisms involving external applications.
7368 </para>
7369
7370 <para>
7371 One of these is the <literal>mailcap</literal> mechanism as defined by
7372 RfC1524. Details about a secure use of the mailcap mechanisms is given
7373 in <xref linkend="secure-mailcap"/>.
7374 </para>
7375
7376 <para>
7377 Besides the mailcap mechanism, Mutt uses a number of other external
7378 utilities for operation, for example to provide crypto support, in
7379 backtick expansion in configuration files or format string filters.  The
7380 same security considerations apply for these as for tools involved via
7381 mailcap.
7382 </para>
7383
7384 </sect1>
7385
7386 </chapter>
7387
7388
7389 <chapter id="tuning">
7390 <title>Performance Tuning</title>
7391
7392 <sect1 id="tuning-mailboxes">
7393 <title>Reading and Writing Mailboxes</title>
7394
7395 <para>
7396 Mutt's performance when reading mailboxes can be improved in two ways:
7397 </para>
7398
7399 <orderedlist>
7400
7401 <listitem>
7402 <para>
7403 For remote folders (IMAP and POP) as well as folders using
7404 one-file-per message storage (Maildir and MH), Mutt's
7405 performance can be greatly improved using
7406 <link linkend="header-caching">header caching</link>.
7407 using a single database per folder.
7408 </para>
7409 </listitem>
7410
7411 <listitem>
7412 <para>
7413 Mutt provides the <link linkend="read-inc">&dollar;read&lowbar;inc</link>
7414 and <link linkend="write-inc">&dollar;write&lowbar;inc</link>
7415 variables to specify at which rate to update progress
7416 counters. If these values are too low, Mutt may spend more
7417 time on updating the progress counter than it spends on
7418 actually reading/writing folders.
7419 </para>
7420 <para>
7421 For example, when opening a maildir folder with a few
7422 thousand messages, the default value for
7423 <link linkend="read-inc">&dollar;read&lowbar;inc</link>
7424 may be too low. It can be tuned on on a folder-basis using
7425 <link linkend="folder-hook"><command>folder-hook</command>s</link>:
7426 </para>
7427
7428 <screen>
7429 # use very high $read_inc to speed up reading hcache'd maildirs
7430 folder-hook . 'set read_inc=1000'
7431 # use lower value for reading slower remote IMAP folders
7432 folder-hook ^imap 'set read_inc=100'
7433 # use even lower value for reading even slower remote POP folders
7434 folder-hook ^pop 'set read_inc=1'</screen>
7435
7436 </listitem>
7437 </orderedlist>
7438
7439 <para>These settings work on a per-message basis. However, as messages may
7440 greatly differ in size and certain operations are much faster than others,
7441 even per-folder settings of the increment variables may not be
7442 desirable as they produce either too few or too much progress updates.
7443 Thus, Mutt allows to limit the number of progress updates per second it'll
7444 actually send to the terminal using the
7445 <link linkend="time-inc">&dollar;time&lowbar;inc</link> variable.</para>
7446
7447 </sect1>
7448
7449 <sect1 id="tuning-messages">
7450 <title>Reading Messages from Remote Folders</title>
7451
7452 <para>
7453 Reading messages from remote folders such as IMAP an POP can be
7454 slow especially for large mailboxes since Mutt only caches a very
7455 limited number of recently viewed messages (usually 10) per
7456 session (so that it will be gone for the next session.)
7457 </para>
7458
7459 <para>
7460 To improve performance and permanently cache whole messages,
7461 please refer to Mutt's so-called
7462 <link linkend="body-caching">body caching</link> for details.
7463 </para>
7464
7465 </sect1>
7466
7467 <sect1 id="tuning-search">
7468 <title>Searching and Limiting</title>
7469
7470 <para>
7471 When searching mailboxes either via a search or a limit action, for
7472 some patterns Mutt distinguishes between regular expression and string
7473 searches. For regular expressions, patterns are prefixed with
7474 <quote>&tilde;</quote> and with <quote>=</quote> for string searches.
7475 </para>
7476
7477 <para>
7478 Even though a regular expression search is fast, it's several times
7479 slower than a pure string search which is noticeable especially on large
7480 folders. As a consequence, a string search should be used instead of a
7481 regular expression search if the user already knows enough about the
7482 search pattern.
7483 </para>
7484
7485 <para>
7486 For example, when limiting a large folder to all messages sent to or by
7487 an author, it's much faster to search for the initial part of an e-mail
7488 address via <literal>=Luser@</literal> instead of
7489 <literal>&tilde;Luser@</literal>. This is especially true for searching
7490 message bodies since a larger amount of input has to be searched.
7491 </para>
7492
7493 <para>
7494 As for regular expressions, a lower case string search pattern makes
7495 Mutt perform a case-insensitive search except for IMAP (because for IMAP
7496 Mutt performs server-side searches which don't support case-insensivity).
7497 </para>
7498
7499 </sect1>
7500
7501 </chapter>
7502
7503 <chapter id="reference">
7504 <title>Reference</title>
7505
7506 <sect1 id="commandline">
7507 <title>Command-Line Options</title>
7508
7509 <para>
7510 Running <literal>mutt</literal> with no arguments will make Mutt attempt to read your spool
7511 mailbox.  However, it is possible to read other mailboxes and
7512 to send messages from the command line as well.
7513 </para>
7514
7515 <table id="tab-commandline-options">
7516 <title>Command line options</title>
7517 <tgroup cols="2">
7518 <thead>
7519 <row><entry>Option</entry><entry>Description</entry></row>
7520 </thead>
7521 <tbody>
7522 <row><entry>-A</entry><entry>expand an alias</entry></row>
7523 <row><entry>-a</entry><entry>attach a file to a message</entry></row>
7524 <row><entry>-b</entry><entry>specify a blind carbon-copy (BCC) address</entry></row>
7525 <row><entry>-c</entry><entry>specify a carbon-copy (Cc) address</entry></row>
7526 <row><entry>-D</entry><entry>print the value of all Mutt variables to stdout</entry></row>
7527 <row><entry>-e</entry><entry>specify a config command to be run after initialization files are read</entry></row>
7528 <row><entry>-f</entry><entry>specify a mailbox to load</entry></row>
7529 <row><entry>-F</entry><entry>specify an alternate file to read initialization commands</entry></row>
7530 <row><entry>-h</entry><entry>print help on command line options</entry></row>
7531 <row><entry>-H</entry><entry>specify a draft file from which to read a header and body</entry></row>
7532 <row><entry>-i</entry><entry>specify a file to include in a message composition</entry></row>
7533 <row><entry>-m</entry><entry>specify a default mailbox type</entry></row>
7534 <row><entry>-n</entry><entry>do not read the system Muttrc</entry></row>
7535 <row><entry>-p</entry><entry>recall a postponed message</entry></row>
7536 <row><entry>-Q</entry><entry>query a configuration variable</entry></row>
7537 <row><entry>-R</entry><entry>open mailbox in read-only mode</entry></row>
7538 <row><entry>-s</entry><entry>specify a subject (enclose in quotes if it contains spaces)</entry></row>
7539 <row><entry>-v</entry><entry>show version number and compile-time definitions</entry></row>
7540 <row><entry>-x</entry><entry>simulate the mailx(1) compose mode</entry></row>
7541 <row><entry>-y</entry><entry>show a menu containing the files specified by the <command>mailboxes</command> command</entry></row>
7542 <row><entry>-z</entry><entry>exit immediately if there are no messages in the mailbox</entry></row>
7543 <row><entry>-Z</entry><entry>open the first folder with new message, exit immediately if none</entry></row>
7544 </tbody>
7545 </tgroup>
7546 </table>
7547
7548 <para>
7549 To read messages in a mailbox
7550 </para>
7551
7552 <cmdsynopsis>
7553 <command>mutt</command>
7554 <arg choice="opt"><option>-nz</option></arg>
7555 <arg choice="opt"><option>-F</option>
7556 <replaceable>muttrc</replaceable>
7557 </arg>
7558 <arg choice="opt"><option>-m</option>
7559 <replaceable>type</replaceable>
7560 </arg>
7561 <arg choice="opt"><option>-f</option>
7562 <replaceable>mailbox</replaceable>
7563 </arg>
7564 </cmdsynopsis>
7565
7566 <para>
7567 To compose a new message
7568 </para>
7569
7570 <cmdsynopsis>
7571 <command>mutt</command>
7572 <arg choice="opt"><option>-n</option></arg>
7573 <arg choice="opt"><option>-F</option>
7574 <replaceable>muttrc</replaceable>
7575 </arg>
7576 <arg choice="opt"><option>-c</option>
7577 <replaceable>address</replaceable>
7578 </arg>
7579 <arg choice="opt"><option>-i</option>
7580 <replaceable>filename</replaceable>
7581 </arg>
7582 <arg choice="opt"><option>-s</option>
7583 <replaceable>subject</replaceable>
7584 </arg>
7585 <arg choice="opt">
7586 <option>-a</option>
7587 <replaceable>file</replaceable>
7588 <arg choice="opt" rep="repeat"/>
7589 --
7590 </arg>
7591 <arg choice="plain" rep="repeat">
7592 <replaceable>address</replaceable>
7593 </arg>
7594 </cmdsynopsis>
7595
7596 <para>
7597 Mutt also supports a <quote>batch</quote> mode to send prepared messages.  Simply redirect
7598 input from the file you wish to send.  For example,
7599 </para>
7600
7601 <screen>
7602 mutt -s &quot;data set for run &num;2&quot; professor@bigschool.edu &lt; &tilde;/run2.dat</screen>
7603
7604 <para>
7605 will send a message to <literal>&lt;professor@bigschool.edu&gt;</literal> with a subject
7606 of <quote>data set for run &num;2</quote>.  In the body of the message will be the contents
7607 of the file <quote>&tilde;/run2.dat</quote>.
7608 </para>
7609
7610 <para>
7611 All files passed with <literal>-a</literal> <emphasis>file</emphasis> will be attached as a MIME
7612 part to the message. To attach a single or several files, use <quote>--</quote> to separate files and
7613 recipient addresses:
7614 </para>
7615
7616 <screen>
7617 mutt -a image.png -- some@one.org</screen>
7618
7619 <para>
7620 or
7621 </para>
7622
7623 <screen>
7624 mutt -a *.png -- some@one.org</screen>
7625
7626 <note>
7627 <para>
7628 The <literal>-a</literal> option must be last in the option list.
7629 </para>
7630 </note>
7631
7632 </sect1>
7633
7634 <sect1 id="commands">
7635 <title>Configuration Commands</title>
7636
7637 <para>
7638 The following are the commands understood by Mutt:
7639 </para>
7640
7641 <itemizedlist>
7642
7643 <listitem>
7644 <cmdsynopsis>
7645 <command><link linkend="account-hook">account-hook</link></command>
7646 <arg choice="plain">
7647 <replaceable>pattern</replaceable>
7648 <replaceable>command</replaceable>
7649 </arg>
7650 </cmdsynopsis>
7651 </listitem>
7652
7653 <listitem>
7654 <cmdsynopsis>
7655 <command><link linkend="alias">alias</link></command>
7656 <arg choice="opt" rep="repeat">
7657 <option>-group</option>
7658 <replaceable class="parameter">name</replaceable>
7659 </arg>
7660 <arg choice="plain">
7661 <replaceable class="parameter">key</replaceable>
7662 </arg>
7663 <arg choice="plain">
7664 <replaceable class="parameter">address</replaceable>
7665 </arg>
7666 <arg choice="opt" rep="repeat">
7667 <replaceable class="parameter">address</replaceable>
7668 </arg>
7669
7670 <command><link linkend="alias">unalias</link></command>
7671 <arg choice="opt" rep="repeat">
7672 <option>-group</option>
7673 <replaceable>name</replaceable>
7674 </arg>
7675 <group choice="req">
7676 <arg choice="plain">
7677 <replaceable class="parameter">*</replaceable>
7678 </arg>
7679 <arg choice="plain" rep="repeat">
7680 <replaceable class="parameter">key</replaceable>
7681 </arg>
7682 </group>
7683 </cmdsynopsis>
7684 </listitem>
7685
7686 <listitem>
7687 <cmdsynopsis>
7688 <command><link linkend="alternates">alternates</link></command>
7689 <arg choice="opt" rep="repeat">
7690 <option>-group</option>
7691 <replaceable>name</replaceable>
7692 </arg>
7693 <arg choice="plain">
7694 <replaceable>regexp</replaceable>
7695 </arg>
7696 <arg choice="opt" rep="repeat">
7697 <replaceable>regexp</replaceable>
7698 </arg>
7699
7700 <command><link linkend="alternates">unalternates</link></command>
7701 <arg choice="opt" rep="repeat">
7702 <option>-group</option>
7703 <replaceable>name</replaceable>
7704 </arg>
7705 <group choice="req">
7706 <arg choice="plain">
7707 <replaceable>*</replaceable>
7708 </arg>
7709 <arg choice="plain" rep="repeat">
7710 <replaceable>regexp</replaceable>
7711 </arg>
7712 </group>
7713 </cmdsynopsis>
7714 </listitem>
7715
7716 <listitem>
7717 <cmdsynopsis>
7718 <command><link linkend="alternative-order">alternative-order</link></command>
7719 <arg choice="plain">
7720 <replaceable>mimetype</replaceable>
7721 </arg>
7722 <arg choice="opt" rep="repeat">
7723 <replaceable>mimetype</replaceable>
7724 </arg>
7725
7726 <command><link linkend="alternative-order">unalternative-order</link></command>
7727 <group choice="req">
7728 <arg choice="plain">
7729 <replaceable>*</replaceable>
7730 </arg>
7731 <arg choice="plain" rep="repeat">
7732 <replaceable>mimetype</replaceable>
7733 </arg>
7734 </group>
7735 </cmdsynopsis>
7736 </listitem>
7737
7738 <listitem>
7739 <cmdsynopsis>
7740 <command><link linkend="attachments">attachments</link></command>
7741 <arg choice="plain">
7742 <replaceable>&lcub; + &verbar; - &rcub;disposition</replaceable>
7743 </arg>
7744 <arg choice="plain">
7745 <replaceable>mime-type</replaceable>
7746 </arg>
7747
7748 <command><link linkend="attachments">unattachments</link></command>
7749 <arg choice="plain">
7750 <replaceable>&lcub; + &verbar; - &rcub;disposition</replaceable>
7751 </arg>
7752 <arg choice="plain">
7753 <replaceable>mime-type</replaceable>
7754 </arg>
7755 </cmdsynopsis>
7756 </listitem>
7757
7758 <listitem>
7759 <cmdsynopsis>
7760 <command><link linkend="auto-view">auto-view</link></command>
7761 <arg choice="plain">
7762 <replaceable>mimetype</replaceable>
7763 </arg>
7764 <arg choice="opt" rep="repeat">
7765 <replaceable>mimetype</replaceable>
7766 </arg>
7767
7768 <command><link linkend="auto-view">unauto-view</link></command>
7769 <group choice="req">
7770 <arg choice="plain">
7771 <replaceable>*</replaceable>
7772 </arg>
7773 <arg choice="plain" rep="repeat">
7774 <replaceable>mimetype</replaceable>
7775 </arg>
7776 </group>
7777 </cmdsynopsis>
7778 </listitem>
7779
7780 <listitem>
7781 <cmdsynopsis>
7782 <command><link linkend="bind">bind</link></command>
7783 <arg choice="plain">
7784 <replaceable class="parameter">map</replaceable>
7785 </arg>
7786 <arg choice="plain">
7787 <replaceable class="parameter">key</replaceable>
7788 </arg>
7789 <arg choice="plain">
7790 <replaceable class="parameter">function</replaceable>
7791 </arg>
7792 </cmdsynopsis>
7793 </listitem>
7794
7795 <listitem>
7796 <cmdsynopsis>
7797 <command><link linkend="charset-hook">charset-hook</link></command>
7798 <arg choice="plain">
7799 <replaceable class="parameter">alias</replaceable>
7800 </arg>
7801 <arg choice="plain">
7802 <replaceable class="parameter">charset</replaceable>
7803 </arg>
7804 </cmdsynopsis>
7805 </listitem>
7806
7807 <listitem>
7808 <cmdsynopsis>
7809 <command><link linkend="iconv-hook">iconv-hook</link></command>
7810 <arg choice="plain">
7811 <replaceable class="parameter">charset</replaceable>
7812 </arg>
7813 <arg choice="plain">
7814 <replaceable class="parameter">local-charset</replaceable>
7815 </arg>
7816 </cmdsynopsis>
7817 </listitem>
7818
7819 <listitem>
7820 <cmdsynopsis>
7821 <command><link linkend="color">color</link></command>
7822 <arg choice="plain">
7823 <replaceable class="parameter">object</replaceable>
7824 </arg>
7825 <arg choice="plain">
7826 <replaceable class="parameter">foreground</replaceable>
7827 </arg>
7828 <arg choice="plain">
7829 <replaceable class="parameter">background</replaceable>
7830 </arg>
7831
7832 <command><link linkend="color">color</link></command>
7833 <group choice="req">
7834 <arg choice="plain">
7835 <option>header</option>
7836 </arg>
7837 <arg choice="plain">
7838 <option>body</option>
7839 </arg>
7840 </group>
7841 <arg choice="plain">
7842 <replaceable class="parameter">foreground</replaceable>
7843 </arg>
7844 <arg choice="plain">
7845 <replaceable class="parameter">background</replaceable>
7846 </arg>
7847 <arg choice="plain">
7848 <replaceable class="parameter">regexp</replaceable>
7849 </arg>
7850
7851 <command><link linkend="color">color</link></command>
7852 <arg choice="plain">
7853 <option>index</option>
7854 </arg>
7855 <arg choice="plain">
7856 <replaceable class="parameter">foreground</replaceable>
7857 </arg>
7858 <arg choice="plain">
7859 <replaceable class="parameter">background</replaceable>
7860 </arg>
7861 <arg choice="plain">
7862 <replaceable class="parameter">pattern</replaceable>
7863 </arg>
7864
7865 <command><link linkend="color">uncolor</link></command>
7866 <group choice="req">
7867 <arg choice="plain">
7868 <option>index</option>
7869 </arg>
7870 <arg choice="plain">
7871 <option>header</option>
7872 </arg>
7873 <arg choice="plain">
7874 <option>body</option>
7875 </arg>
7876 </group>
7877 <group choice="req">
7878 <arg choice="plain">
7879 <replaceable>*</replaceable>
7880 </arg>
7881 <arg choice="plain" rep="repeat">
7882 <replaceable>pattern</replaceable>
7883 </arg>
7884 </group>
7885 </cmdsynopsis>
7886 </listitem>
7887
7888 <listitem>
7889 <cmdsynopsis>
7890 <command><link linkend="crypt-hook">crypt-hook</link></command>
7891 <arg choice="plain">
7892 <replaceable class="parameter">pattern</replaceable>
7893 </arg>
7894 <arg choice="plain">
7895 <replaceable class="parameter">keyid</replaceable>
7896 </arg>
7897 </cmdsynopsis>
7898 </listitem>
7899
7900 <listitem>
7901 <cmdsynopsis>
7902 <command><link linkend="exec">exec</link></command>
7903 <arg choice="plain">
7904 <replaceable class="parameter">function</replaceable>
7905 </arg>
7906 <arg choice="opt" rep="repeat">
7907 <replaceable class="parameter">function</replaceable>
7908 </arg>
7909 </cmdsynopsis>
7910 </listitem>
7911
7912 <listitem>
7913 <cmdsynopsis>
7914 <command><link linkend="fcc-hook">fcc-hook</link></command>
7915 <arg choice="plain">
7916 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
7917 </arg>
7918 <arg choice="plain">
7919 <replaceable class="parameter">mailbox</replaceable>
7920 </arg>
7921 </cmdsynopsis>
7922 </listitem>
7923
7924 <listitem>
7925 <cmdsynopsis>
7926 <command><link linkend="fcc-save-hook">fcc-save-hook</link></command>
7927 <arg choice="plain">
7928 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
7929 </arg>
7930 <arg choice="plain">
7931 <replaceable class="parameter">mailbox</replaceable>
7932 </arg>
7933 </cmdsynopsis>
7934 </listitem>
7935
7936 <listitem>
7937 <cmdsynopsis>
7938 <command><link linkend="folder-hook">folder-hook</link></command>
7939 <arg choice="plain">
7940 <replaceable class="parameter">&lsqb;!&rsqb;regexp</replaceable>
7941 </arg>
7942 <arg choice="plain">
7943 <replaceable class="parameter">command</replaceable>
7944 </arg>
7945 </cmdsynopsis>
7946 </listitem>
7947
7948 <listitem>
7949 <cmdsynopsis>
7950 <command><link linkend="addrgroup">group</link></command>
7951 <arg choice="opt" rep="repeat">
7952 <option>-group</option>
7953 <replaceable class="parameter">name</replaceable>
7954 </arg>
7955 <group choice="req">
7956 <arg choice="plain" rep="repeat">
7957 <option>-rx</option>
7958 <replaceable class="parameter">expr</replaceable>
7959 </arg>
7960 <arg choice="plain" rep="repeat">
7961 <option>-addr</option>
7962 <replaceable class="parameter">expr</replaceable>
7963 </arg>
7964 </group>
7965
7966 <command><link linkend="addrgroup">ungroup</link></command>
7967 <arg choice="opt" rep="repeat">
7968 <option>-group</option>
7969 <replaceable class="parameter">name</replaceable>
7970 </arg>
7971 <group choice="req">
7972 <arg choice="plain">
7973 <replaceable class="parameter">*</replaceable>
7974 </arg>
7975 <arg choice="plain" rep="repeat">
7976 <option>-rx</option>
7977 <replaceable class="parameter">expr</replaceable>
7978 </arg>
7979 <arg choice="plain" rep="repeat">
7980 <option>-addr</option>
7981 <replaceable class="parameter">expr</replaceable>
7982 </arg>
7983 </group>
7984 </cmdsynopsis>
7985 </listitem>
7986
7987 <listitem>
7988 <cmdsynopsis>
7989 <command><link linkend="hdr-order">hdr&lowbar;order</link></command>
7990 <arg choice="plain">
7991 <replaceable class="parameter">header</replaceable>
7992 </arg>
7993 <arg choice="opt" rep="repeat">
7994 <replaceable class="parameter">header</replaceable>
7995 </arg>
7996
7997 <command><link linkend="hdr-order">unhdr&lowbar;order</link></command>
7998 <group choice="req">
7999 <arg choice="plain">
8000 <replaceable>*</replaceable>
8001 </arg>
8002 <arg choice="plain" rep="repeat">
8003 <replaceable>header</replaceable>
8004 </arg>
8005 </group>
8006 </cmdsynopsis>
8007 </listitem>
8008
8009 <listitem>
8010 <cmdsynopsis>
8011 <command><link linkend="ignore">ignore</link></command>
8012 <arg choice="plain">
8013 <replaceable class="parameter">pattern</replaceable>
8014 </arg>
8015 <arg choice="opt" rep="repeat">
8016 <replaceable class="parameter">pattern</replaceable>
8017 </arg>
8018
8019 <command><link linkend="ignore">unignore</link></command>
8020 <group choice="req">
8021 <arg choice="plain">
8022 <replaceable>*</replaceable>
8023 </arg>
8024 <arg choice="plain" rep="repeat">
8025 <replaceable>pattern</replaceable>
8026 </arg>
8027 </group>
8028 </cmdsynopsis>
8029 </listitem>
8030
8031 <listitem>
8032 <cmdsynopsis>
8033 <command><link linkend="lists">lists</link></command>
8034 <arg>
8035 <option>-group</option>
8036 <replaceable class="parameter">name</replaceable>
8037 </arg>
8038 <arg choice="plain">
8039 <replaceable class="parameter">regexp</replaceable>
8040 </arg>
8041 <arg choice="opt" rep="repeat">
8042 <replaceable class="parameter">regexp</replaceable>
8043 </arg>
8044
8045 <command><link linkend="lists">unlists</link></command>
8046 <arg choice="opt" rep="repeat">
8047 <option>-group</option>
8048 <replaceable>name</replaceable>
8049 </arg>
8050 <group choice="req">
8051 <arg choice="plain">
8052 <replaceable>*</replaceable>
8053 </arg>
8054 <arg choice="plain" rep="repeat">
8055 <replaceable>regexp</replaceable>
8056 </arg>
8057 </group>
8058 </cmdsynopsis>
8059 </listitem>
8060
8061 <listitem>
8062 <cmdsynopsis>
8063 <command><link linkend="macro">macro</link></command>
8064 <arg choice="plain">
8065 <replaceable class="parameter">menu</replaceable>
8066 </arg>
8067 <arg choice="plain">
8068 <replaceable class="parameter">key</replaceable>
8069 </arg>
8070 <arg choice="plain">
8071 <replaceable class="parameter">sequence</replaceable>
8072 </arg>
8073 <arg choice="opt">
8074 <replaceable class="parameter">description</replaceable>
8075 </arg>
8076 </cmdsynopsis>
8077 </listitem>
8078
8079 <listitem>
8080 <cmdsynopsis>
8081 <command><link linkend="mailboxes">mailboxes</link></command>
8082 <arg choice="plain">
8083 <replaceable class="parameter">mailbox</replaceable>
8084 </arg>
8085 <arg choice="opt" rep="repeat">
8086 <replaceable class="parameter">mailbox</replaceable>
8087 </arg>
8088
8089 <command><link linkend="mailboxes">unmailboxes</link></command>
8090 <group choice="req">
8091 <arg choice="plain">
8092 <replaceable class="parameter">*</replaceable>
8093 </arg>
8094 <arg choice="plain" rep="repeat">
8095 <replaceable class="parameter">mailbox</replaceable>
8096 </arg>
8097 </group>
8098 </cmdsynopsis>
8099 </listitem>
8100
8101 <listitem>
8102 <cmdsynopsis>
8103 <command><link linkend="mbox-hook">mbox-hook</link></command>
8104 <arg choice="plain">
8105 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
8106 </arg>
8107 <arg choice="plain">
8108 <replaceable class="parameter">mailbox</replaceable>
8109 </arg>
8110 </cmdsynopsis>
8111 </listitem>
8112
8113 <listitem>
8114 <cmdsynopsis>
8115 <command><link linkend="message-hook">message-hook</link></command>
8116 <arg choice="plain">
8117 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
8118 </arg>
8119 <arg choice="plain">
8120 <replaceable class="parameter">command</replaceable>
8121 </arg>
8122 </cmdsynopsis>
8123 </listitem>
8124
8125 <listitem>
8126 <cmdsynopsis>
8127 <command><link linkend="mime-lookup">mime-lookup</link></command>
8128 <arg choice="plain">
8129 <replaceable>mimetype</replaceable>
8130 </arg>
8131 <arg choice="opt" rep="repeat">
8132 <replaceable>mimetype</replaceable>
8133 </arg>
8134
8135 <command><link linkend="mime-lookup">unmime-lookup</link></command>
8136 <group choice="req">
8137 <arg choice="plain">
8138 <replaceable>*</replaceable>
8139 </arg>
8140 <arg choice="plain" rep="repeat">
8141 <replaceable>mimetype</replaceable>
8142 </arg>
8143 </group>
8144 </cmdsynopsis>
8145 </listitem>
8146
8147 <listitem>
8148 <cmdsynopsis>
8149 <command><link linkend="mono">mono</link></command>
8150 <arg choice="plain">
8151 <replaceable class="parameter">object</replaceable>
8152 </arg>
8153 <arg choice="plain">
8154 <replaceable class="parameter">attribute</replaceable>
8155 </arg>
8156
8157 <command><link linkend="mono">mono</link></command>
8158 <group choice="req">
8159 <arg choice="plain">
8160 <option>header</option>
8161 </arg>
8162 <arg choice="plain">
8163 <option>body</option>
8164 </arg>
8165 </group>
8166 <arg choice="plain">
8167 <replaceable class="parameter">attribute</replaceable>
8168 </arg>
8169 <arg choice="plain">
8170 <replaceable class="parameter">regexp</replaceable>
8171 </arg>
8172
8173 <command><link linkend="mono">mono</link></command>
8174 <arg choice="plain">
8175 <option>index</option>
8176 </arg>
8177 <arg choice="plain">
8178 <replaceable class="parameter">attribute</replaceable>
8179 </arg>
8180 <arg choice="plain">
8181 <replaceable class="parameter">pattern</replaceable>
8182 </arg>
8183
8184 <command><link linkend="mono">unmono</link></command>
8185 <group choice="req">
8186 <arg choice="plain">
8187 <option>index</option>
8188 </arg>
8189 <arg choice="plain">
8190 <option>header</option>
8191 </arg>
8192 <arg choice="plain">
8193 <option>body</option>
8194 </arg>
8195 </group>
8196 <group choice="req">
8197 <arg choice="plain">
8198 <replaceable class="parameter">*</replaceable>
8199 </arg>
8200 <arg choice="plain" rep="repeat">
8201 <replaceable class="parameter">pattern</replaceable>
8202 </arg>
8203 </group>
8204 </cmdsynopsis>
8205 </listitem>
8206
8207 <listitem>
8208 <cmdsynopsis>
8209 <command><link linkend="my-hdr">my&lowbar;hdr</link></command>
8210 <arg choice="plain">
8211 <replaceable class="parameter">string</replaceable>
8212 </arg>
8213
8214 <command><link linkend="my-hdr">unmy&lowbar;hdr</link></command>
8215 <group choice="req">
8216 <arg choice="plain">
8217 <replaceable class="parameter">*</replaceable>
8218 </arg>
8219 <arg choice="plain" rep="repeat">
8220 <replaceable class="parameter">field</replaceable>
8221 </arg>
8222 </group>
8223 </cmdsynopsis>
8224 </listitem>
8225
8226 <listitem>
8227 <cmdsynopsis>
8228 <command><link linkend="push">push</link></command>
8229 <arg choice="plain">
8230 <replaceable class="parameter">string</replaceable>
8231 </arg>
8232 </cmdsynopsis>
8233 </listitem>
8234
8235 <listitem>
8236 <cmdsynopsis>
8237 <command><link linkend="save-hook">save-hook</link></command>
8238 <arg choice="plain">
8239 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
8240 </arg>
8241 <arg choice="plain">
8242 <replaceable class="parameter">mailbox</replaceable>
8243 </arg>
8244 </cmdsynopsis>
8245 </listitem>
8246
8247 <listitem>
8248 <cmdsynopsis>
8249 <command><link linkend="score">score</link></command>
8250 <arg choice="plain">
8251 <replaceable class="parameter">pattern</replaceable>
8252 </arg>
8253 <arg choice="plain">
8254 <replaceable class="parameter">value</replaceable>
8255 </arg>
8256
8257 <command><link linkend="score">unscore</link></command>
8258 <group choice="req">
8259 <arg choice="plain">
8260 <replaceable class="parameter">*</replaceable>
8261 </arg>
8262 <arg choice="plain" rep="repeat">
8263 <replaceable class="parameter">pattern</replaceable>
8264 </arg>
8265 </group>
8266 </cmdsynopsis>
8267 </listitem>
8268
8269 <listitem>
8270 <cmdsynopsis>
8271 <command><link linkend="reply-hook">reply-hook</link></command>
8272 <arg choice="plain">
8273 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
8274 </arg>
8275 <arg choice="plain">
8276 <replaceable class="parameter">command</replaceable>
8277 </arg>
8278 </cmdsynopsis>
8279 </listitem>
8280
8281 <listitem>
8282 <cmdsynopsis>
8283 <command><link linkend="send-hook">send-hook</link></command>
8284 <arg choice="plain">
8285 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
8286 </arg>
8287 <arg choice="plain">
8288 <replaceable class="parameter">command</replaceable>
8289 </arg>
8290 </cmdsynopsis>
8291 </listitem>
8292
8293 <listitem>
8294 <cmdsynopsis>
8295 <command><link linkend="send2-hook">send2-hook</link></command>
8296 <arg choice="plain">
8297 <replaceable class="parameter">&lsqb;!&rsqb;pattern</replaceable>
8298 </arg>
8299 <arg choice="plain">
8300 <replaceable class="parameter">command</replaceable>
8301 </arg>
8302 </cmdsynopsis>
8303 </listitem>
8304
8305 <listitem>
8306 <cmdsynopsis>
8307 <command><link linkend="set">set</link></command>
8308 <group choice="req">
8309 <arg choice="plain">
8310 <group choice="opt">
8311 <arg choice="plain"><option>no</option></arg>
8312 <arg choice="plain"><option>inv</option></arg>
8313 </group>
8314 <replaceable class="parameter">variable</replaceable>
8315 </arg>
8316 <arg choice="plain">
8317 <replaceable class="parameter">variable=value</replaceable>
8318 </arg>
8319 </group>
8320 <arg choice="opt" rep="repeat"></arg>
8321
8322 <command><link linkend="set">toggle</link></command>
8323 <arg choice="plain">
8324 <replaceable class="parameter">variable</replaceable>
8325 </arg>
8326 <arg choice="opt" rep="repeat">
8327 <replaceable class="parameter">variable</replaceable>
8328 </arg>
8329
8330 <command><link linkend="set">unset</link></command>
8331 <arg choice="plain">
8332 <replaceable class="parameter">variable</replaceable>
8333 </arg>
8334 <arg choice="opt" rep="repeat">
8335 <replaceable class="parameter">variable</replaceable>
8336 </arg>
8337
8338 <command><link linkend="set">reset</link></command>
8339 <arg choice="plain">
8340 <replaceable class="parameter">variable</replaceable>
8341 </arg>
8342 <arg choice="opt" rep="repeat">
8343 <replaceable class="parameter">variable</replaceable>
8344 </arg>
8345 </cmdsynopsis>
8346 </listitem>
8347
8348 <listitem>
8349 <cmdsynopsis>
8350 <command><link linkend="source">source</link></command>
8351 <arg choice="plain">
8352 <replaceable class="parameter">filename</replaceable>
8353 </arg>
8354 </cmdsynopsis>
8355 </listitem>
8356
8357 <listitem>
8358 <cmdsynopsis>
8359 <command><link linkend="spam">spam</link></command>
8360 <arg choice="plain">
8361 <replaceable class="parameter">pattern</replaceable>
8362 </arg>
8363 <arg choice="plain">
8364 <replaceable class="parameter">format</replaceable>
8365 </arg>
8366
8367 <command><link linkend="spam">nospam</link></command>
8368 <group choice="req">
8369 <arg choice="plain">
8370 <replaceable class="parameter">*</replaceable>
8371 </arg>
8372 <arg choice="plain">
8373 <replaceable class="parameter">pattern</replaceable>
8374 </arg>
8375 </group>
8376 </cmdsynopsis>
8377 </listitem>
8378
8379 <listitem>
8380 <cmdsynopsis>
8381 <command><link linkend="subscribe">subscribe</link></command>
8382 <arg choice="opt" rep="repeat">
8383 <option>-group</option>
8384 <replaceable class="parameter">name</replaceable>
8385 </arg>
8386 <arg choice="plain">
8387 <replaceable class="parameter">regexp</replaceable>
8388 </arg>
8389 <arg choice="opt" rep="repeat">
8390 <replaceable class="parameter">regexp</replaceable>
8391 </arg>
8392
8393 <command><link linkend="subscribe">unsubscribe</link></command>
8394 <arg choice="opt" rep="repeat">
8395 <option>-group</option>
8396 <replaceable>name</replaceable>
8397 </arg>
8398 <group choice="req">
8399 <arg choice="plain">
8400 <replaceable class="parameter">*</replaceable>
8401 </arg>
8402 <arg choice="plain" rep="repeat">
8403 <replaceable class="parameter">regexp</replaceable>
8404 </arg>
8405 </group>
8406 </cmdsynopsis>
8407 </listitem>
8408
8409 <listitem>
8410 <cmdsynopsis>
8411 <command><link linkend="unhook">unhook</link></command>
8412 <group choice="req">
8413 <arg choice="plain">
8414 <replaceable class="parameter">*</replaceable>
8415 </arg>
8416 <arg choice="plain">
8417 <replaceable class="parameter">hook-type</replaceable>
8418 </arg>
8419 </group>
8420 </cmdsynopsis>
8421 </listitem>
8422
8423 </itemizedlist>
8424
8425 </sect1>
8426
8427 <sect1 id="variables">
8428 <title>Configuration Variables</title>