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