Rocco Rutte:
[apps/madmutt.git] / doc / manual.xml.head
1 <?xml version="1.0" encoding="utf-8"?>
2 <!-- THIS FILE IST NOT VALID DOCBOOK ! DTD REMOVED -->                                                           
3 <!-- Please don't use html entities like [, ] ^  -->                                                   
4 <!-- etc. they don't work with xml!                             -->                                              
5 <book xmlns:muttng-doc="http://mutt-ng.berlios.de/doc/#NS">
6
7 <bookinfo> <!--{{{-->
8   <title>The Mutt Next Generation E-Mail Client</title>
9   <author>
10     <firstname>Andreas</firstname><surname>Krennmair</surname>
11     <email>ak@synflood.at</email>
12   </author>
13   <author>
14     <firstname>Michael</firstname><surname>Elkins</surname>
15     <email>me@cs.hmc.edu</email>
16   </author>
17   <pubdate>version @VERSION@</pubdate>
18   <abstract>
19     <para>
20       Michael Elinks on mutt, circa 1995:
21       ``All mail clients suck. This one just sucks less.''
22     </para>
23     <para>
24       Sven Guckes on mutt, ca. 2003: ``But it still sucks!''
25     </para>
26   </abstract>
27 </bookinfo> <!--}}}-->
28
29 <chapter id="introduction"> <!--{{{-->
30   <title>Introduction</title>
31
32   <sect1 id="overview">
33     <title>Overview</title>
34     
35     <para>
36       <emphasis role="bold">Mutt-ng</emphasis> is a small but very
37       powerful text-based MIME mail client.  Mutt-ng is highly
38       configurable, and is well suited to the mail power user with
39       advanced features like key bindings, keyboard macros, mail
40       threading, regular expression searches and a powerful pattern
41       matching language for selecting groups of messages.
42     </para>
43     
44     <para>
45       This documentation additionally contains documentation to
46       <emphasis role="bold"> Mutt-NG </emphasis> ,a fork from Mutt
47       with the goal to fix all the little annoyances of Mutt, to
48       integrate all the Mutt patches that are floating around in the
49       web, and to add other new features. Features specific to Mutt-ng
50       will be discussed in an extra section. Don't be confused when
51       most of the documentation talk about Mutt and not Mutt-ng,
52       Mutt-ng contains all Mutt features, plus many more.
53     </para>
54     
55     <para>
56       
57     </para>
58     
59   </sect1>
60   
61   <sect1 id="homepage">
62     <title>Mutt-ng Home Page</title>
63     
64     <para>
65       <muttng-doc:web url="http://www.muttng.org/"/>
66     </para>
67     
68     <para>
69       
70     </para>
71     
72   </sect1>
73   
74   <sect1 id="mailinglists">
75     <title>Mailing Lists</title>
76     
77     <para>
78       
79       <itemizedlist>
80         <listitem>
81           
82           <para>
83             <email>mutt-ng-users@lists.berlios.de</email>: This is
84             where the mutt-ng user support happens.
85           </para>
86         </listitem>
87         <listitem>
88           
89           <para>
90             <email>mutt-ng-devel@lists.berlios.de</email>: The
91             development mailing list for mutt-ng
92           </para>
93         </listitem>
94         
95       </itemizedlist>
96       
97     </para>
98     
99     <para>
100       
101     </para>
102     
103   </sect1>
104   
105   <sect1 id="distrib-sites">
106     <title>Software Distribution Sites</title>
107     
108     <para>
109       So far, there are no official releases of Mutt-ng, but you can
110       download daily snapshots from <muttng-doc:web url="http://mutt-ng.berlios.de/snapshots/"/>
111     </para>
112     
113     <para>
114       
115     </para>
116     
117   </sect1>
118   
119   <sect1 id="irc">
120     <title>IRC</title>
121     
122     <para>
123       Visit channel <emphasis>#muttng</emphasis> on <ulink
124         url="http://www.freenode.net/">irc.freenode.net
125         (www.freenode.net) </ulink> to chat with other people
126       interested in Mutt-ng.  
127     </para>
128     
129   </sect1>
130   
131   <sect1 id="weblog">
132     <title>Weblog</title>
133     
134     <para>
135       If you want to read fresh news about the latest development in
136       Mutt-ng, and get informed about stuff like interesting,
137       Mutt-ng-related articles and packages for your favorite
138       distribution, you can read and/or subscribe to our <ulink
139         url="http://mutt-ng.supersized.org/">Mutt-ng development
140         weblog</ulink>.
141     </para>
142     
143   </sect1>
144   
145   <sect1 id="copyright">
146     <title>Copyright</title>
147     
148     <para>
149       Mutt is Copyright (C) 1996-2000 Michael R. Elkins
150       &lt;me@cs.hmc.edu&gt; and others
151     </para>
152     
153     <para>
154       This program is free software; you can redistribute it and/or modify
155       it under the terms of the GNU General Public License as published by
156       the Free Software Foundation; either version 2 of the License, or
157       (at your option) any later version.
158     </para>
159     
160     <para>
161       This program is distributed in the hope that it will be useful,
162       but WITHOUT ANY WARRANTY; without even the implied warranty of
163       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
164       GNU General Public License for more details.
165     </para>
166     
167     <para>
168       You should have received a copy of the GNU General Public License
169       along with this program; if not, write to the Free Software
170       Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
171     </para>
172     
173   </sect1>
174
175   <sect1 id="conventions">
176     <title>Manual Conventions</title>
177
178     <para>
179       This manual contains several (hopefully consistent) conventions to
180       specially layout different items in different fashions.
181     </para>
182
183     <para>
184       <itemizedlist>
185         <listitem>
186           <para>Configuration and environment variables will be printed
187             in a typewriter font and both prefixed with a dollar sign as
188             it's common for UNIX-like environments. Configuration
189             variables are lower-case only while environment variables
190             are upper-case only.</para>
191         </listitem>
192         <listitem>
193           <para>Muttng-specific commands are enclosed in
194           <literal>&lt;&gt;</literal> and printed in a typewriter font,
195           too.</para>
196         </listitem>
197         <listitem>
198           <para>As common for UNIX-like environments, references to
199             manual pages are printed with the section enclosed in
200             braces, as in <muttng-doc:man name="vi"/> or <muttng-doc:man
201               name="muttngrc" sect="5"/>. Execute <literal>man [section]
202               [name]</literal> to view the manual page.</para>
203         </listitem>
204       </itemizedlist>
205     </para>
206
207     <para>
208       If, while reading this fine manual, you find any inconsistencies
209       of whatever kind, please contact the developers via
210       <email>mutt-ng-devel@lists.berlios.de</email> to report it.
211     </para>
212
213   </sect1>
214
215 </chapter>
216 <!--}}}-->
217
218 <chapter id="getting-started"> <!--{{{-->
219   <title>Getting Started</title>
220   
221   <sect1 id="basic-concepts"> <!--{{{-->
222     <title>Basic Concepts</title>
223     
224     <sect2 id="concept-screens-and-menus"> <!--{{{-->
225       <title>Screens and Menus</title>
226       
227       <para>
228         mutt-ng offers different screens of which every has its special
229         purpose:
230       </para>
231       
232       <para>
233         
234         <itemizedlist>
235           <listitem>
236             
237             <para>
238               The <emphasis>index</emphasis> displays the contents of the
239               currently opened
240               mailbox.
241               
242             </para>
243           </listitem>
244           <listitem>
245             
246             <para>
247               The <emphasis>pager</emphasis> is responsible for displaying
248               messages, that
249               is, the header, the body and all attached parts.
250               
251             </para>
252           </listitem>
253           <listitem>
254             
255             <para>
256               The <emphasis>file browser</emphasis> offers operations on and
257               displays
258               information of all folders mutt-ng should watch for mail.
259               
260             </para>
261           </listitem>
262           <listitem>
263             
264             <para>
265               The <emphasis>sidebar</emphasis> offers a permanent view of
266               which mailboxes
267               contain how many total, new and/or flagged mails.
268               
269             </para>
270           </listitem>
271           <listitem>
272             
273             <para>
274               The <emphasis>help screen</emphasis> lists for all currently
275               available
276               commands how to invoke them as well as a short description.
277               
278             </para>
279           </listitem>
280           <listitem>
281             
282             <para>
283               The <emphasis>compose</emphasis> menu is a comfortable
284               interface take last
285               actions before sending mail: change subjects, attach files,
286               remove
287               attachements, etc.
288               
289             </para>
290           </listitem>
291           <listitem>
292             
293             <para>
294               The <emphasis>attachement</emphasis> menu gives a summary and
295               the tree
296               structure of the attachements of the current message.
297               
298             </para>
299           </listitem>
300           <listitem>
301             
302             <para>
303               The <emphasis>alias</emphasis> menu lists all or a fraction of
304               the aliases
305               a user has defined.
306               
307             </para>
308           </listitem>
309           <listitem>
310             
311             <para>
312               The <emphasis>key</emphasis> menu used in connection with
313               encryption lets
314               users choose the right key to encrypt with.
315               
316             </para>
317           </listitem>
318           
319         </itemizedlist>
320         
321       </para>
322       
323       <para>
324         When mutt-ng is started without any further options, it'll open
325         the users default mailbox and display the index.
326       </para>
327       
328       <para>
329         
330       </para>
331       
332     </sect2>
333       <!--}}}-->
334     
335     <sect2 id="concept-configuration"> <!--{{{-->
336       <title>Configuration</title>
337       
338       <para>
339         Mutt-ng does <emphasis>not</emphasis> feature an internal
340         configuration
341         interface or menu due to the simple fact that this would be too
342         complex to handle (currently there are several <emphasis>hundred</emphasis>
343         variables which fine-tune the behaviour.)
344       </para>
345       
346       <para>
347         Mutt-ng is configured using configuration files which allow
348         users to add comments or manage them via version control systems
349         to ease maintenance.
350       </para>
351       
352       <para>
353         Also, mutt-ng comes with a shell script named <literal>grml-muttng</literal>
354         kindly contributed by users which really helps and eases the
355         creation of a user's configuration file. When downloading the
356         source code via a snapshot or via subversion, it can be found in
357         the <literal>contrib</literal> directory.
358       </para>
359       
360       <para>
361         
362       </para>
363       
364     </sect2>
365       <!--}}}-->
366     
367     <sect2 id="concept-functions"> <!--{{{-->
368       <title>Functions</title>
369       
370       <para>
371         Mutt-ng offers great flexibility due to the use of functions:
372         internally, every action a user can make mutt-ng perform is named
373         ``function.'' Those functions are assigned to keys (or even key
374         sequences) and may be completely adjusted to user's needs. The
375         basic idea is that the impatient users get a very intuitive
376         interface to start off with and advanced users virtually get no
377         limits to adjustments.
378       </para>
379       
380       <para>
381         
382       </para>
383       
384     </sect2>
385       <!--}}}-->
386     
387     <sect2 id="concept-interaction"> <!--{{{-->
388       <title>Interaction</title>
389       
390       <para>
391         Mutt-ng has two basic concepts of user interaction:
392       </para>
393       
394       <para>
395         
396         <orderedlist>
397           <listitem>
398             
399             <para>
400               There is one dedicated line on the screen used to query
401               the user for input, issue any command, query variables and
402               display error and informational messages. As for every type of
403               user input, this requires manual action leading to the need of
404               input.
405               
406             </para>
407           </listitem>
408           <listitem>
409             
410             <para>
411               The automatized interface for interaction are the so
412               called <emphasis>hooks</emphasis>. Hooks specify actions the
413               user wants to be
414               performed at well-defined situations: what to do when entering
415               which folder, what to do when displaying or replying to what
416               kind of message, etc. These are optional, i.e. a user doesn't
417               need to specify them but can do so.
418               
419             </para>
420           </listitem>
421           
422         </orderedlist>
423         
424       </para>
425       
426       <para>
427         
428       </para>
429       
430     </sect2>
431       <!--}}}-->
432     
433     <sect2 id="concept-modularization"> <!--{{{-->
434       <title>Modularization</title>
435       
436       <para>
437         Although mutt-ng has many functionality built-in, many
438         features can be delegated to external tools to increase
439         flexibility: users can define programs to filter a message through
440         before displaying, users can use any program they want for
441         displaying a message, message types (such as PDF or PostScript)
442         for which mutt-ng doesn't have a built-in filter can be rendered
443         by arbitrary tools and so forth. Although mutt-ng has an alias
444         mechanism built-in, it features using external tools to query for
445         nearly every type of addresses from sources like LDAP, databases
446         or just the list of locally known users.
447       </para>
448       
449       <para>
450         
451       </para>
452       
453     </sect2>
454       <!--}}}-->
455     
456     <sect2 id="concept-patterns"> <!--{{{-->
457       <title>Patterns</title>
458       
459       <para>
460         Mutt-ng has a built-in pattern matching ``language'' which is
461         as widely used as possible to present a consistent interface to
462         users. The same ``pattern terms'' can be used for searching,
463         scoring, message selection and much more.
464       </para>
465       
466       <para>
467         
468       </para>
469       
470       <para>
471         
472       </para>
473       
474     </sect2>
475       <!--}}}-->
476     
477   </sect1>
478   
479   <!--}}}-->
480   
481   <sect1 id="screens-and-menus"> <!--{{{-->
482     <title>Screens and Menus</title>
483     
484     <sect2 id="intro-index">
485       <title>Index</title>
486       
487       <para>
488         The index is the screen that you usually see first when you
489         start mutt-ng. It gives an overview over your emails in the
490         currently opened mailbox. By default, this is your system mailbox.
491         The information you see in the index is a list of emails, each with
492         its number on the left, its flags (new email, important email,
493         email that has been forwarded or replied to, tagged email, ...),
494         the date when email was sent, its sender, the email size, and the
495         subject. Additionally, the index also shows thread hierarchies:
496         when you reply to an email, and the other person replies back, you
497         can see the other's person email in a "sub-tree" below.  This is
498         especially useful for personal email between a group of people or
499         when you've subscribed to mailing lists.
500       </para>
501       
502       <para>
503         
504       </para>
505       
506     </sect2>
507     
508     <sect2 id="intro-pager">
509       <title>Pager</title>
510       
511       <para>
512         The pager is responsible for showing the email content. On the
513         top of the pager you have an overview over the most important email
514         headers like the sender, the recipient, the subject, and much more
515         information. How much information you actually see depends on your
516         configuration, which we'll describe below.
517       </para>
518       
519       <para>
520         Below the headers, you see the email body which usually contains
521         the message. If the email contains any attachments, you will see
522         more information about them below the email body, or, if the
523         attachments are text files, you can view them directly in the
524         pager.
525       </para>
526       
527       <para>
528         To give the user a good overview, it is possible to configure
529         mutt-ng to show different things in the pager with different
530         colors. Virtually everything that can be described with a regular
531         expression can be colored, e.g. URLs, email addresses or smileys.
532       </para>
533       
534       <para>
535         
536       </para>
537       
538     </sect2>
539     
540     <sect2 id="intro-browser">
541       <title>File Browser</title>
542       
543       <para>
544         The file browser is the interface to the local or remote
545         file system. When selecting a mailbox to open, the browser allows
546         custom sorting of items, limiting the items shown by a regular
547         expression and a freely adjustable format of what to display in
548         which way. It also allows for easy navigation through the
549         file system when selecting file(s) to attach to a message, select
550         multiple files to attach and many more.
551       </para>
552       
553       <para>
554         
555       </para>
556       
557     </sect2>
558     
559     <sect2 id="intro-sidebar">
560       <title>Sidebar</title>
561       
562       <para>
563         The sidebar comes in handy to manage mails which are spread
564         over different folders. All folders users setup mutt-ng to watch
565         for new mail will be listed. The listing includes not only the
566         name but also the number of total messages, the number of new and
567         flagged messages. Items with new mail may be colored different
568         from those with flagged mail, items may be shortened or compress
569         if they're they to long to be printed in full form so that by
570         abbreviated names, user still now what the name stands for.
571       </para>
572       
573       <para>
574         
575       </para>
576       
577     </sect2>
578     
579     <sect2 id="intro-help">
580       <title>Help</title>
581       
582       <para>
583         The help screen is meant to offer a quick help to the user. It
584         lists the current configuration of key bindings and their
585         associated commands including a short description, and currently
586         unbound functions that still need to be associated with a key
587         binding (or alternatively, they can be called via the mutt-ng
588         command prompt).
589       </para>
590       
591       <para>
592         
593       </para>
594       
595     </sect2>
596     
597     <sect2 id="intro-compose">
598       <title>Compose Menu</title>
599       
600       <para>
601         The compose menu features a split screen containing the
602         information which really matter before actually sending a
603         message by mail or posting an article to a newsgroup: who gets
604         the message as what (recipient, newsgroup, who gets what kind of
605         copy). Additionally, users may set security options like
606         deciding whether to sign, encrypt or sign and encrypt a message
607         with/for what keys.
608       </para>
609       
610       <para>
611         Also, it's used to attach messages, news articles or files to
612         a message, to re-edit any attachment including the message
613         itself.
614       </para>
615       
616       <para>
617         
618       </para>
619       
620     </sect2>
621     
622     <sect2 id="intro-alias">
623       <title>Alias Menu</title>
624       
625       <para>
626         The alias menu is used to help users finding the recipients
627         of messages. For users who need to contact many people, there's
628         no need to remember addresses or names completely because it
629         allows for searching, too. The alias mechanism and thus the
630         alias menu also features grouping several addresses by a shorter
631         nickname, the actual alias, so that users don't have to select
632         each single recipient manually.
633       </para>
634       
635       <para>
636         
637       </para>
638       
639     </sect2>
640     
641     <sect2 id="intro-attach">
642       <title>Attachment Menu</title>
643       
644       <para>
645         As will be later discussed in detail, mutt-ng features a good
646         and stable MIME implementation, that is, is greatly supports
647         sending and receiving messages of arbitrary type. The
648         attachment menu displays a message's structure in detail: what
649         content parts are attached to which parent part (which gives a
650         true tree structure), which type is of what type and what size.
651         Single parts may saved, deleted or modified to offer great and
652         easy access to message's internals.
653       </para>
654       
655       <para>
656         
657       </para>
658       
659     </sect2>
660     
661     <sect2 id="intro-keysel">
662       <title>Key Menu</title>
663       
664       <para>
665         <literal>FIXME</literal>
666       </para>
667       
668       <para>
669         
670       </para>
671       
672       <para>
673         
674       </para>
675       
676     </sect2>
677     
678   </sect1>
679     <!--}}}-->
680   
681   <sect1 id="moving"> <!--{{{-->
682     <title>Moving Around in Menus</title>
683     
684     <para>
685       Information is presented in menus, very similar to ELM.  Here is a
686       tableshowing the common keys used to navigate menus in Mutt-ng.
687     </para>
688     
689     <para>
690
691       <table frame="none" rowsep="1">
692         <title>Most commonly used movement bindings</title>
693         <tgroup cols="3" align="left" colsep="1" rowsep="1">
694         <thead>
695           <row>
696             <entry>Key</entry>
697             <entry>Function</entry>
698             <entry>Description</entry>
699           </row>
700         </thead>
701         <tbody>
702           <row>
703             <entry><literal>j</literal> or <literal>Down</literal></entry>
704             <entry><muttng-doc:funcref name="next-entry"/></entry>
705             <entry>move to the next entry</entry>
706           </row>
707           <row>
708             <entry><literal>k</literal> or <literal>Up</literal></entry>
709             <entry><muttng-doc:funcref name="previous-entry"/></entry>
710             <entry>move to the previous entry</entry>
711           </row>
712           <row>
713             <entry><literal>z</literal> or <literal>PageDn</literal></entry>
714             <entry><muttng-doc:funcref name="page-down"/></entry>
715             <entry>go to the next page</entry>
716           </row>
717           <row>
718             <entry><literal>Z</literal> or <literal>PageUp</literal></entry>
719             <entry><muttng-doc:funcref name="page-up"/></entry>
720             <entry>go to the previous page</entry>
721           </row>
722           <row>
723             <entry><literal>=</literal> or <literal>Home</literal></entry>
724             <entry><muttng-doc:funcref name="first-entry"/></entry>
725             <entry>jump to the first entry</entry>
726           </row>
727           <row>
728             <entry><literal>*</literal> or <literal>End</literal></entry>
729             <entry><muttng-doc:funcref name="last-entry"/></entry>
730             <entry>jump to the last entry</entry>
731           </row>
732           <row>
733             <entry><literal>q</literal></entry>
734             <entry><muttng-doc:funcref name="quit"/></entry>
735             <entry>exit the current menu</entry>
736           </row>
737           <row>
738             <entry><literal>?</literal></entry>
739             <entry><muttng-doc:funcref name="help"/></entry>
740             <entry>list all key bindings for the current menu</entry>
741           </row>
742         </tbody>
743       </tgroup>
744     </table>
745
746
747     </para>
748     
749     <para>
750       
751     </para>
752     
753   </sect1>
754     <!--}}}-->
755   
756   <sect1 id="editing"> <!--{{{-->
757     <title>Editing Input Fields</title>
758     
759     <para>
760       Mutt-ng has a builtin line editor which is used as the primary way to
761       input
762       textual data such as email addresses or filenames.  The keys used to
763       move
764       around while editing are very similar to those of Emacs.
765     </para>
766     
767     <para>
768
769       <table frame="none" rowsep="1">
770         <title>Line Editor Functions</title>
771         <tgroup cols="3" align="left" colsep="1" rowsep="1">
772         <thead>
773           <row>
774             <entry>Key</entry>
775             <entry>Function</entry>
776             <entry>Description</entry>
777           </row>
778         </thead>
779         <tbody>
780           <row>
781             <entry><literal>^A or &#60;Home&#62;  </literal></entry>
782             <entry><muttng-doc:funcref name="bol"/></entry>
783             <entry>move to the start of the line</entry>
784           </row>
785           <row>
786             <entry><literal>^B or &#60;Left&#62;   </literal></entry>
787             <entry><muttng-doc:funcref name="backward-char"/>
788             </entry><entry>move back one char</entry>
789           </row>
790           <row>
791             <entry><literal>Esc B  </literal></entry>
792             <entry><muttng-doc:funcref name="backward-word"/></entry>
793             <entry>move back one word</entry>
794           </row>
795           <row>
796             <entry><literal>^D or &#60;Delete&#62;  </literal></entry>
797             <entry><muttng-doc:funcref name="delete-char"/></entry>
798             <entry>delete the char under the cursor</entry>
799           </row>
800           <row>
801             <entry><literal>^E or &#60;End&#62;   </literal></entry>
802             <entry><muttng-doc:funcref name="eol"/></entry>
803             <entry>move to the end of the line</entry>
804           </row>
805           <row>
806             <entry><literal>^F or &#60;Right&#62;  </literal></entry>
807             <entry><muttng-doc:funcref name="forward-char"/></entry>
808             <entry>move forward one char</entry>
809           </row>
810           <row>
811             <entry><literal>Esc F </literal></entry>
812             <entry><muttng-doc:funcref name="forward-word"/></entry>
813             <entry>move forward one word</entry>
814           </row>
815           <row>
816             <entry><literal>&#60;Tab&#62;</literal></entry>
817             <entry><muttng-doc:funcref name="complete"/></entry>
818             <entry>complete filename or alias</entry>
819           </row>
820           <row>
821             <entry><literal>^T</literal></entry>
822             <entry><muttng-doc:funcref name="complete-query"/></entry>
823             <entry>complete address with query</entry>
824           </row>
825           <row>
826             <entry><literal>^K</literal></entry>
827             <entry><muttng-doc:funcref name="kill-eol"/></entry>
828             <entry>delete to the end of the line</entry>
829           </row>
830           <row>
831             <entry><literal>ESC d </literal></entry>
832             <entry><muttng-doc:funcref name="kill-eow"/></entry>
833             <entry>delete to the end of the word</entry>
834           </row>
835           <row>
836             <entry><literal>^W</literal></entry>
837             <entry><muttng-doc:funcref name="kill-word"/></entry>
838             <entry>kill the word in front of the cursor</entry>
839           </row>
840           <row>
841             <entry><literal>^U</literal></entry>
842             <entry><muttng-doc:funcref name="kill-line"/></entry>
843             <entry>delete entire line</entry>
844           </row>
845           <row>
846             <entry><literal>^V</literal></entry>
847             <entry><muttng-doc:funcref name="quote-char"/></entry>
848             <entry>quote the next typed key</entry>
849           </row>
850           <row>
851             <entry><literal>&#60;Up&#62;</literal></entry>
852             <entry><muttng-doc:funcref name="history-up"/></entry>
853             <entry>recall previous string from history</entry>
854           </row>
855           <row>
856             <entry><literal>&#60;Down&#62;</literal></entry>
857             <entry><muttng-doc:funcref name="history-down"/></entry>
858             <entry>recall next string from history</entry>
859           </row>
860           <row>
861             <entry><literal>&#60;BackSpace&#62;</literal></entry>
862             <entry><muttng-doc:funcref name="backspace"/></entry>
863             <entry>kill the char in front of the cursor</entry>
864           </row>
865           <row>
866             <entry><literal>Esc u        </literal></entry>
867             <entry><muttng-doc:funcref name="upcase-word"/></entry>
868             <entry>convert word to upper case</entry>
869           </row>
870           <row>
871             <entry><literal>Esc l        </literal></entry>
872             <entry><muttng-doc:funcref name="downcase-word"/></entry>
873             <entry>convert word to lower case</entry>
874           </row>
875           <row>
876             <entry><literal>Esc c        </literal></entry>
877             <entry><muttng-doc:funcref name="capitalize-word"/></entry>
878             <entry>capitalize the word</entry>
879           </row>
880           <row>
881             <entry><literal>^G</literal></entry>
882             <entry><literal>n/a</literal></entry>
883             <entry>abort</entry>
884           </row>
885           <row>
886             <entry><literal>&#60;Return&#62;</literal></entry>
887             <entry><literal>n/a</literal></entry>
888             <entry>finish editing</entry>
889           </row>
890         </tbody>
891       </tgroup>
892     </table>
893
894     </para>
895     
896     <para>
897       You can remap the <emphasis>editor</emphasis> functions using the
898       <muttng-doc:command name="bind"/> command.  For example, to make
899       the <emphasis>Delete</emphasis> key delete the character in front
900       of the cursor rather than under, you could use
901     </para>
902     
903     <para>
904       <literal>bind editor &lt;delete&gt; backspace</literal>
905     </para>
906     
907   </sect1>
908     <!--}}}-->
909   
910   <sect1 id="reading"> <!--{{{-->
911     <title>Reading Mail - The Index and Pager</title>
912     
913     <para>
914       Similar to many other mail clients, there are two modes in which mail
915       isread in Mutt-ng.  The first is the index of messages in the mailbox,
916       which is
917       called the ``index'' in Mutt-ng.  The second mode is the display of the
918       message contents.  This is called the ``pager.''
919     </para>
920     
921     <para>
922       The next few sections describe the functions provided in each of these
923       modes.
924     </para>
925     
926     <sect2 id="reading-index">
927       <title>The Message Index</title>
928       
929       <para>
930
931       <table frame="none" rowsep="1">
932         <title>Most commonly used Index Bindings</title>
933         <tgroup cols="3" align="left" colsep="1" rowsep="1">
934         <thead>
935           <row>
936             <entry>Key</entry>
937             <entry>Function</entry>
938             <entry>Description</entry>
939           </row>
940         </thead>
941         <tbody>
942           <row>
943             <entry><literal>c</literal></entry>
944             <entry><literal></literal></entry>
945             <entry>change to a different mailbox</entry>
946           </row>
947           <row>
948             <entry><literal>ESC c    </literal></entry>
949             <entry><literal></literal></entry>
950             <entry>change to a folder in read-only mode</entry>
951           </row>
952           <row>
953             <entry><literal>C</literal></entry>
954             <entry><literal></literal></entry>
955             <entry>copy the current message to another mailbox</entry>
956           </row>
957           <row>
958             <entry><literal>ESC C     </literal></entry>
959             <entry><literal></literal></entry>
960             <entry>decode a message and copy it to a folder</entry>
961           </row>
962           <row>
963             <entry><literal>ESC s    </literal></entry>
964             <entry><literal></literal></entry>
965             <entry>decode a message and save it to a folder</entry>
966           </row>
967           <row>
968             <entry><literal>D</literal></entry>
969             <entry><literal></literal></entry>
970             <entry>delete messages matching a pattern</entry>
971           </row>
972           <row>
973             <entry><literal>d</literal></entry>
974             <entry><literal></literal></entry>
975             <entry>delete the current message</entry>
976           </row>
977           <row>
978             <entry><literal>F</literal></entry>
979             <entry><literal></literal></entry>
980             <entry>mark as important</entry>
981           </row>
982           <row>
983             <entry><literal>l</literal></entry>
984             <entry><literal></literal></entry>
985             <entry>show messages matching a pattern</entry>
986           </row>
987           <row>
988             <entry><literal>N</literal></entry>
989             <entry><literal></literal></entry>
990             <entry>mark message as new</entry>
991           </row>
992           <row>
993             <entry><literal>o</literal></entry>
994             <entry><literal></literal></entry>
995             <entry>change the current sort method</entry>
996           </row>
997           <row>
998             <entry><literal>O</literal></entry>
999             <entry><literal></literal></entry>
1000             <entry>reverse sort the mailbox</entry>
1001           </row>
1002           <row>
1003             <entry><literal>q</literal></entry>
1004             <entry><literal></literal></entry>
1005             <entry>save changes and exit</entry>
1006           </row>
1007           <row>
1008             <entry><literal>s</literal></entry>
1009             <entry><literal></literal></entry>
1010             <entry>save-message</entry>
1011           </row>
1012           <row>
1013             <entry><literal>T</literal></entry>
1014             <entry><literal></literal></entry>
1015             <entry>tag messages matching a pattern</entry>
1016           </row>
1017           <row>
1018             <entry><literal>t</literal></entry>
1019             <entry><literal></literal></entry>
1020             <entry>toggle the tag on a message</entry>
1021           </row>
1022           <row>
1023             <entry><literal>ESC t  </literal></entry>
1024             <entry><literal></literal></entry>
1025             <entry>toggle tag on entire message thread</entry>
1026           </row>
1027           <row>
1028             <entry><literal>U</literal></entry>
1029             <entry><literal></literal></entry>
1030             <entry>undelete messages matching a pattern</entry>
1031           </row>
1032           <row>
1033             <entry><literal>u</literal></entry>
1034             <entry><literal></literal></entry>
1035             <entry>undelete-message</entry>
1036           </row>
1037           <row>
1038             <entry><literal>v</literal></entry>
1039             <entry><literal></literal></entry>
1040             <entry>view-attachments</entry>
1041           </row>
1042           <row>
1043             <entry><literal>x</literal></entry>
1044             <entry><literal></literal></entry>
1045             <entry>abort changes and exit</entry>
1046           </row>
1047           <row>
1048             <entry><literal>&#60;Return&#62;</literal></entry>
1049             <entry><literal></literal></entry>
1050             <entry>display-message</entry>
1051           </row>
1052           <row>
1053             <entry><literal>&#60;Tab&#62;</literal></entry>
1054             <entry><literal></literal></entry>
1055             <entry>jump to the next new or unread message</entry>
1056           </row>
1057           <row>
1058             <entry><literal>@</literal></entry>
1059             <entry><literal></literal></entry>
1060             <entry>show the author's full e-mail address</entry>
1061           </row>
1062           <row>
1063             <entry><literal>$</literal></entry>
1064             <entry><literal></literal></entry>
1065             <entry>save changes to mailbox</entry>
1066           </row>
1067           <row>
1068             <entry><literal>/</literal></entry>
1069             <entry><literal></literal></entry>
1070             <entry>search</entry>
1071           </row>
1072           <row>
1073             <entry><literal>ESC /     </literal></entry>
1074             <entry><literal></literal></entry>
1075             <entry>search-reverse</entry>
1076           </row>
1077           <row>
1078             <entry><literal>^L</literal></entry>
1079             <entry><literal></literal></entry>
1080             <entry>clear and redraw the screen</entry>
1081           </row>
1082           <row>
1083             <entry><literal>^T</literal></entry>
1084             <entry><literal></literal></entry>
1085             <entry>untag messages matching a pattern</entry>
1086           </row>
1087         </tbody>
1088       </tgroup>
1089     </table>
1090
1091       </para>
1092       
1093       <sect3>
1094         <title>Status Flags</title> <!--{{{-->
1095         
1096         <para>
1097           In addition to who sent the message and the subject, a short
1098           summary of
1099           the disposition of each message is printed beside the message
1100           number.
1101           Zero or more of the following ``flags'' may appear, which mean:
1102         </para>
1103         
1104         <para>
1105
1106           <variablelist>
1107             
1108             <varlistentry>
1109               <term>D</term>
1110               <listitem>
1111                 <para>
1112                   message is deleted (is marked for deletion)
1113                 </para>
1114               </listitem>
1115             </varlistentry>
1116             <varlistentry>
1117               <term>d</term>
1118               <listitem>
1119                 <para>
1120                   message have attachments marked for deletion
1121                 </para>
1122               </listitem>
1123             </varlistentry>
1124             <varlistentry>
1125               <term>K</term>
1126               <listitem>
1127                 <para>
1128                   contains a PGP public key
1129                 </para>
1130               </listitem>
1131             </varlistentry>
1132             <varlistentry>
1133               <term>N</term>
1134               <listitem>
1135                 <para>
1136                   message is new
1137                 </para>
1138               </listitem>
1139             </varlistentry>
1140             <varlistentry>
1141               <term>O</term>
1142               <listitem>
1143                 <para>
1144                   message is old
1145                 </para>
1146               </listitem>
1147             </varlistentry>
1148             <varlistentry>
1149               <term>P</term>
1150               <listitem>
1151                 <para>
1152                   message is PGP encrypted
1153                 </para>
1154               </listitem>
1155             </varlistentry>
1156             <varlistentry>
1157               <term>r</term>
1158               <listitem>
1159                 <para>
1160                   message has been replied to
1161                 </para>
1162               </listitem>
1163             </varlistentry>
1164             <varlistentry>
1165               <term>S</term>
1166               <listitem>
1167                 <para>
1168                   message is signed, and the signature is succesfully
1169                   verified
1170                 </para>
1171               </listitem>
1172             </varlistentry>
1173             <varlistentry>
1174               <term>s</term>
1175               <listitem>
1176                 <para>
1177                   message is signed
1178                 </para>
1179               </listitem>
1180             </varlistentry>
1181             <varlistentry>
1182               <term>!</term>
1183               <listitem>
1184                 <para>
1185                   message is flagged
1186                 </para>
1187               </listitem>
1188             </varlistentry>
1189             <varlistentry>
1190               <term>*</term>
1191               <listitem>
1192                 <para>
1193                   message is tagged
1194                 </para>
1195               </listitem>
1196             </varlistentry>
1197           </variablelist>
1198         </para>
1199         
1200         <para>
1201           Some of the status flags can be turned on or off using
1202           
1203           <itemizedlist>
1204             <listitem>
1205               
1206               <para>
1207                 <emphasis role="bold">set-flag</emphasis> (default: w)
1208               </para>
1209             </listitem>
1210             <listitem>
1211               
1212               <para>
1213                 <emphasis role="bold">clear-flag</emphasis> (default: W)
1214               </para>
1215             </listitem>
1216             
1217           </itemizedlist>
1218           
1219         </para>
1220         
1221         <para>
1222           Furthermore, the following flags reflect who the message is
1223           addressed
1224           to.  They can be customized with the
1225           <muttng-doc:varref name="to_chars" link="to-chars"/> variable.
1226         </para>
1227         
1228         <para>
1229           <variablelist>
1230             
1231             <varlistentry>
1232               <term>+</term>
1233               <listitem>
1234                 <para>
1235                   message is to you and you only
1236                 </para>
1237               </listitem>
1238             </varlistentry>
1239             <varlistentry>
1240               <term>T</term>
1241               <listitem>
1242                 <para>
1243                   message is to you, but also to or cc'ed to others
1244                 </para>
1245               </listitem>
1246             </varlistentry>
1247             <varlistentry>
1248               <term>C</term>
1249               <listitem>
1250                 <para>
1251                   message is cc'ed to you
1252                 </para>
1253               </listitem>
1254             </varlistentry>
1255             <varlistentry>
1256               <term>F</term>
1257               <listitem>
1258                 <para>
1259                   message is from you
1260                 </para>
1261               </listitem>
1262             </varlistentry>
1263             <varlistentry>
1264               <term>L</term>
1265               <listitem>
1266                 <para>
1267                   message is sent to a subscribed mailing list
1268                 </para>
1269               </listitem>
1270             </varlistentry>
1271           </variablelist>
1272         </para>
1273         
1274       </sect3>
1275       
1276     </sect2>
1277     
1278     <sect2 id="reading-pager">
1279       <title>The Pager</title>
1280       
1281       <para>
1282         By default, Mutt-ng uses its builtin pager to display the body of
1283         messages.
1284         The pager is very similar to the Unix program <emphasis>less</emphasis> though not nearly as
1285         featureful.
1286       </para>
1287       
1288       <para>
1289
1290       <table frame="none" rowsep="1">
1291         <title>Most commonly used Pager Bindings</title>
1292         <tgroup cols="3" align="left" colsep="1" rowsep="1">
1293         <thead>
1294           <row>
1295             <entry>Key</entry>
1296             <entry>Function</entry>
1297             <entry>Description</entry>
1298           </row>
1299         </thead>
1300         <tbody>
1301           <row>
1302             <entry><literal>&#60;Return&#62;</literal></entry>
1303             <entry><literal></literal></entry>
1304             <entry>go down one line</entry>
1305           </row>
1306           <row>
1307             <entry><literal>&#60;Space&#62;</literal></entry>
1308             <entry><literal></literal></entry>
1309             <entry>display the next page (or next message if at the end of a message)</entry>
1310           </row>
1311           <row>
1312             <entry><literal>-</literal></entry>
1313             <entry><literal></literal></entry>
1314             <entry>go back to the previous page</entry>
1315           </row>
1316           <row>
1317             <entry><literal>n</literal></entry>
1318             <entry><literal></literal></entry>
1319             <entry>search for next match</entry>
1320           </row>
1321           <row>
1322             <entry><literal>S</literal></entry>
1323             <entry><literal></literal></entry>
1324             <entry>skip beyond quoted text</entry>
1325           </row>
1326           <row>
1327             <entry><literal>T</literal></entry>
1328             <entry><literal></literal></entry>
1329             <entry>toggle display of quoted text</entry>
1330           </row>
1331           <row>
1332             <entry><literal>?</literal></entry>
1333             <entry><literal></literal></entry>
1334             <entry>show key bindings</entry>
1335           </row>
1336           <row>
1337             <entry><literal>/</literal></entry>
1338             <entry><literal></literal></entry>
1339             <entry>search for a regular expression (pattern)</entry>
1340           </row>
1341           <row>
1342             <entry><literal>ESC /   </literal></entry>
1343             <entry><literal></literal></entry>
1344             <entry>search backwards for a regular expression</entry>
1345           </row>
1346           <row>
1347             <entry><literal>\</literal></entry>
1348             <entry><literal></literal></entry>
1349             <entry>toggle search pattern coloring</entry>
1350           </row>
1351           <row>
1352             <entry><literal>^</literal></entry>
1353             <entry><literal></literal></entry>
1354             <entry>jump to the top of the message</entry>
1355           </row>
1356         </tbody>
1357       </tgroup>
1358     </table>
1359
1360
1361       </para>
1362       
1363       <para>
1364         In addition, many of the functions from the <emphasis>index</emphasis> are available in
1365         the pager, such as <emphasis>delete-message</emphasis> or <emphasis>
1366           copy-message
1367         </emphasis>
1368         (this is one
1369         advantage over using an external pager to view messages).
1370       </para>
1371       
1372       <para>
1373         Also, the internal pager supports a couple other advanced features.
1374         For
1375         one, it will accept and translate the ``standard'' nroff sequences
1376         forbold and underline. These sequences are a series of either the
1377         letter,
1378         backspace (^H), the letter again for bold or the letter,
1379         backspace,
1380         ``_'' for denoting underline. Mutt-ng will attempt to display
1381         these
1382         in bold and underline respectively if your terminal supports them. If
1383         not, you can use the bold and underline <muttng-doc:command name="color"/>
1384         objects to specify a color or mono attribute for them.
1385       </para>
1386       
1387       <para>
1388         Additionally, the internal pager supports the ANSI escape
1389         sequences for character attributes.  Mutt-ng translates them
1390         into the correct color and character settings.  The sequences
1391         Mutt-ng supports are: <literal>ESC [ Ps;Ps;Ps;...;Ps
1392           m</literal> (see table below for possible values for
1393         <literal>Ps</literal>).
1394       </para>
1395       
1396       <para>
1397
1398       <table frame="none" rowsep="1">
1399         <title>ANSI Escape Sequences</title>
1400         <tgroup cols="2" align="left" colsep="1" rowsep="1">
1401         <thead>
1402           <row>
1403             <entry>Value</entry>
1404             <entry>Attribute</entry>
1405           </row>
1406         </thead>
1407         <tbody>
1408           <row>
1409             <entry><literal>0</literal></entry>
1410             <entry>All Attributes Off</entry>
1411           </row>
1412           <row>
1413             <entry><literal>1</literal></entry>
1414             <entry>Bold on</entry>
1415           </row>
1416           <row>
1417             <entry><literal>4</literal></entry>
1418             <entry>Underline on</entry>
1419           </row>
1420           <row>
1421             <entry><literal>5</literal></entry>
1422             <entry>Blink on</entry>
1423           </row>
1424           <row>
1425             <entry><literal>7</literal></entry>
1426             <entry>Reverse video on</entry>
1427           </row>
1428           <row>
1429             <entry><literal>3x</literal></entry>
1430             <entry>Foreground color is x (see table below)</entry>
1431           </row>
1432           <row>
1433             <entry><literal>4x</literal></entry>
1434             <entry>Background color is x (see table below)</entry>
1435           </row>
1436         </tbody>
1437       </tgroup>
1438     </table>
1439
1440     
1441       <table frame="none" rowsep="1">
1442         <title>ANSI Colors</title>
1443         <tgroup cols="2" align="left" colsep="1" rowsep="1">
1444         <thead>
1445           <row>
1446             <entry>Number</entry>
1447             <entry>Color</entry>
1448           </row>
1449         </thead>
1450         <tbody>
1451           <row>
1452             <entry><literal>0</literal></entry>
1453             <entry>black</entry>
1454           </row>
1455           <row>
1456             <entry><literal>1</literal></entry>
1457             <entry>red</entry>
1458           </row>
1459           <row>
1460             <entry><literal>2</literal></entry>
1461             <entry>green</entry>
1462           </row>
1463           <row>
1464             <entry><literal>3</literal></entry>
1465             <entry>yellow</entry>
1466           </row>
1467           <row>
1468             <entry><literal>4</literal></entry>
1469             <entry>blue</entry>
1470           </row>
1471           <row>
1472             <entry><literal>5</literal></entry>
1473             <entry>magenta</entry>
1474           </row>
1475           <row>
1476             <entry><literal>6</literal></entry>
1477             <entry>cyan</entry>
1478           </row>
1479           <row>
1480             <entry><literal>7</literal></entry>
1481             <entry>white</entry>
1482           </row>
1483         </tbody>
1484       </tgroup>
1485     </table>
1486
1487
1488         </para>
1489         
1490         <para>
1491           Mutt-ng uses these attributes for handling text/enriched messages,
1492           and they
1493           can also be used by an external <muttng-doc:command name="auto_view"/>
1494           script for highlighting purposes.  <emphasis role="bold">Note:</emphasis> If you change the colors for your
1495           display, for example by changing the color associated with color2 for
1496           your xterm, then that color will be used instead of green.
1497         </para>
1498         
1499       </sect2>
1500       
1501       <sect2 id="threads">
1502         <title>Threaded Mode</title>
1503         
1504         <para>
1505           When the mailbox is <link linkend="sort">sorted</link> by <emphasis>
1506             threads
1507           </emphasis>
1508           ,there are
1509           a few additional functions available in the <emphasis>index</emphasis> and <emphasis>
1510             pager
1511           </emphasis>
1512           modes.
1513         </para>
1514         
1515         <para>
1516
1517         <table frame="none" rowsep="1">
1518           <title>Most commonly used thread-related bindings</title>
1519           <tgroup cols="3" align="left" colsep="1" rowsep="1">
1520           <thead>
1521             <row>
1522               <entry>Key</entry>
1523               <entry>Function</entry>
1524               <entry>Description</entry>
1525             </row>
1526           </thead>
1527           <tbody>
1528             <row>
1529               <entry><literal>^D</literal></entry>
1530               <entry><muttng-doc:funcref name="delete-thread"/></entry>
1531                 <entry>delete all messages in the current  thread</entry>
1532               </row>
1533             <row>
1534               <entry><literal>^U</literal></entry>
1535               <entry><muttng-doc:funcref name="undelete-thread"/></entry>
1536                 <entry>undelete all messages in the current thread</entry>
1537               </row>
1538             <row>
1539               <entry><literal>^N</literal></entry>
1540               <entry><muttng-doc:funcref name="next-thread"/></entry>
1541                 <entry>jump to the start of the next thread</entry>
1542               </row>
1543             <row>
1544               <entry><literal>^P</literal></entry>
1545               <entry><muttng-doc:funcref name="previous-thread"/></entry>
1546                 <entry>jump to the start of the previous thread</entry>
1547               </row>
1548             <row>
1549               <entry><literal>^R</literal></entry>
1550               <entry><muttng-doc:funcref name="read-thread"/></entry>
1551                 <entry>mark the current thread as read</entry>
1552               </row>
1553             <row>
1554               <entry><literal>ESC d </literal></entry>
1555               <entry><muttng-doc:funcref name="delete-subthread"/></entry>
1556                 <entry>delete all messages in the current subthread</entry>
1557               </row>
1558             <row>
1559               <entry><literal>ESC u </literal></entry>
1560               <entry><muttng-doc:funcref name="undelete-subthread"/></entry>
1561                 <entry>undelete all messages in the current subthread</entry>
1562               </row>
1563             <row>
1564               <entry><literal>ESC n </literal></entry>
1565               <entry><muttng-doc:funcref name="next-subthread"/></entry>
1566                 <entry>jump to the start of the next subthread</entry>
1567               </row>
1568             <row>
1569               <entry><literal>ESC p </literal></entry>
1570               <entry><muttng-doc:funcref name="previous-subthread"/></entry>
1571                 <entry>jump to the start of the previous subthread</entry>
1572               </row>
1573             <row>
1574               <entry><literal>ESC r </literal></entry>
1575               <entry><muttng-doc:funcref name="read-subthread"/></entry>
1576                 <entry>mark the current subthread as read </entry>
1577               </row>
1578             <row>
1579               <entry><literal>ESC t </literal></entry>
1580               <entry><muttng-doc:funcref name="tag-thread"/></entry>
1581                 <entry>toggle the tag on the current thread</entry>
1582               </row>
1583             <row>
1584               <entry><literal>ESC v </literal></entry>
1585               <entry><muttng-doc:funcref name="collapse-thread"/></entry>
1586                 <entry>toggle collapse for the current thread</entry>
1587               </row>
1588             <row>
1589               <entry><literal>ESC V </literal></entry>
1590               <entry><muttng-doc:funcref name="collapse-all"/></entry>
1591                 <entry>toggle collapse for all threads</entry>
1592               </row>
1593             <row>
1594               <entry><literal>P</literal></entry>
1595               <entry><muttng-doc:funcref name="parent-message"/></entry>
1596                 <entry>jump to parent message in thread</entry>
1597               </row>
1598           </tbody>
1599         </tgroup>
1600       </table>
1601
1602           
1603         </para>
1604         
1605         <para>
1606           <emphasis role="bold">Note:</emphasis> Collapsing a thread displays
1607           only the first message
1608           in the thread and hides the others. This is useful when threads
1609           contain so many messages that you can only see a handful of threads
1610           onthe screen. See <literal>%M</literal> in
1611           <muttng-doc:varref name="index_format" link="index-format"/>.
1612         </para>
1613
1614         <para>
1615           For example, you could use
1616           <literal>%?M?(#%03M)&amp;(%4l)?</literal> in <muttng-doc:varref name="index_format" link="index-format"/>
1617           to optionally
1618           display the number of hidden messages if the thread is collapsed.
1619         </para>
1620         
1621         <para>
1622           See also the <muttng-doc:varref name="strict_threads" link="strict-threads"/> variable.
1623         </para>
1624         
1625       </sect2>
1626       
1627       <sect2 id="pager-functions">
1628         <title>Miscellaneous Functions</title>
1629         
1630         <para>
1631           <muttng-doc:funcdef name="create-alias" key="a"/>
1632         </para>
1633         
1634         <para>
1635           Creates a new alias based upon the current message (or prompts for a
1636           new one).  Once editing is complete, an <muttng-doc:command name="alias"/>
1637           command is added to the file specified by the <muttng-doc:varref name="alias_file" link="alias-file"/>
1638           variable for future use. <emphasis role="bold">Note:</emphasis>
1639           Specifying an <muttng-doc:varref name="alias_file" link="alias-file"/>
1640           does not add the aliases specified there-in, you must also <muttng-doc:command name="source"/>
1641           the file.
1642         </para>
1643         
1644         <para>
1645           <muttng-doc:funcdef name="check-traditional-pgp" key="ESC P"/>
1646         </para>
1647         
1648         <para>
1649           This function will search the current message for content signed or
1650           encrypted with PGP the "traditional" way, that is, without proper
1651           MIME tagging.  Technically, this function will temporarily change
1652           the MIME content types of the body parts containing PGP data; this
1653           is similar to the <muttng-doc:funcref name="edit-type"/>
1654           function's
1655           effect.
1656         </para>
1657         
1658         <para>
1659           <muttng-doc:funcdef name="display-toggle-weed" key="h"/>
1660         </para>
1661         
1662         <para>
1663           Toggles the weeding of message header fields specified by <muttng-doc:command name="ignore"/>
1664           commands.
1665         </para>
1666         
1667         <para>
1668           <muttng-doc:funcdef name="edit" key="e"/>
1669         </para>
1670         
1671         <para>
1672           This command (available in the ``index'' and ``pager'') allows you to
1673           edit the raw current message as it's present in the mail folder.
1674           After you have finished editing, the changed message will be
1675           appended to the current folder, and the original message will be
1676           marked for deletion.
1677         </para>
1678         
1679         <para>
1680           <muttng-doc:funcdef name="edit-type"/>
1681           (default: <literal>^E</literal> on the attachment menu, and in the pager and index
1682           menus; <literal>^T</literal> on the compose menu)
1683         </para>
1684         
1685         <para>
1686           This command is used to temporarily edit an attachment's content
1687           type to fix, for instance, bogus character set parameters.  When
1688           invoked from the index or from the pager, you'll have the
1689           opportunity to edit the top-level attachment's content type.  On the
1690           <link linkend="attach-menu">attach-menu</link>, you can change any
1691           attachment's content type. These changes are not persistent, and get
1692           lost upon changing folders.
1693         </para>
1694         
1695         <para>
1696           Note that this command is also available on the <link linkend="compose-menu">compose-menu</link>
1697           .There, it's used to
1698           fine-tune the properties of attachments you are going to send.
1699         </para>
1700         
1701         <para>
1702           <muttng-doc:funcdef name="enter-command" key=":"/>
1703         </para>
1704         
1705         <para>
1706           This command is used to execute any command you would normally put in
1707           a
1708           configuration file.  A common use is to check the settings of
1709           variables, or
1710           in conjunction with <muttng-doc:command name="macro"/> to change
1711           settings on the
1712           fly.
1713         </para>
1714         
1715         <para>
1716           <muttng-doc:funcdef name="extract-keys" key="^K"/>
1717         </para>
1718         
1719         <para>
1720           This command extracts PGP public keys from the current or tagged
1721           message(s) and adds them to your PGP public key ring.
1722         </para>
1723         
1724         <para>
1725           <muttng-doc:funcdef name="forget-passphrase" key="^F"/>
1726         </para>
1727         
1728         <para>
1729           This command wipes the passphrase(s) from memory. It is useful, if
1730           you misspelled the passphrase.
1731         </para>
1732         
1733         <para>
1734           <muttng-doc:funcdef name="list-reply" key="L"/>
1735         </para>
1736         
1737         <para>
1738           Reply to the current or tagged message(s) by extracting any addresses
1739           which
1740           match the regular expressions given by the <muttng-doc:command name="lists"/>
1741           commands, but also honor any <literal>Mail-Followup-To</literal>
1742           header(s) if the
1743           <muttng-doc:varref name="honor_followup_to" link="honor-followup-to"/>
1744           configuration variable is set.  Using this when replying to messages
1745           posted
1746           to mailing lists helps avoid duplicate copies being sent to the
1747           author of
1748           the message you are replying to.
1749         </para>
1750         
1751         <para>
1752           <muttng-doc:funcdef name="pipe-message" default="|"/>
1753         </para>
1754         
1755         <para>
1756           Asks for an external Unix command and pipes the current or
1757           tagged message(s) to it. The variables
1758           <muttng-doc:varref name="pipe_decode" link="honor-followup-to"/>,
1759           <muttng-doc:varref name="pipe_split" link="pipe-split"/>,
1760           <muttng-doc:varref name="pipe_decode" link="pipe-decode"/> and
1761           <muttng-doc:varref name="wait_key" link="wait-key"/> 
1762           control the exact behavior of this function.
1763         </para>
1764         
1765         <para>
1766           <muttng-doc:funcdef name="resend-message" key="ESC e"/>
1767         </para>
1768         
1769         <para>
1770           With resend-message, mutt takes the current message as a template for
1771           a
1772           new message.  This function is best described as "recall from
1773           arbitrary
1774           folders".  It can conveniently be used to forward MIME messages while
1775           preserving the original mail structure. Note that the amount of
1776           headers
1777           included here depends on the value of the <muttng-doc:varref name="weed"/>
1778           variable.
1779         </para>
1780         
1781         <para>
1782           This function is also available from the attachment menu. You can use
1783           this
1784           to easily resend a message which was included with a bounce message
1785           as a message/rfc822 body part.
1786         </para>
1787         
1788         <para>
1789           <muttng-doc:funcdef name="shell-escape" key="!"/>
1790         </para>
1791         
1792         <para>
1793           Asks for an external Unix command and executes it.  The
1794           <muttng-doc:varref name="wait_key" link="wait-key"/>
1795           can be used to control
1796           whether Mutt-ng will wait for a key to be pressed when the command
1797           returns
1798           (presumably to let the user read the output of the command), based on
1799           the return status of the named command.
1800         </para>
1801         
1802         <para>
1803           <muttng-doc:funcdef name="toggle-quoted" key="T"/>
1804         </para>
1805         
1806         <para>
1807           The <emphasis>pager</emphasis> uses the
1808           <muttng-doc:varref name="quote_regexp" link="quote-regexp"/>
1809           variable to detect quoted text when
1810           displaying the body of the message.  This function toggles the
1811           displayof the quoted material in the message.  It is particularly
1812           useful when
1813           are interested in just the response and there is a large amount of
1814           quoted text in the way.
1815         </para>
1816         
1817         <para>
1818           <muttng-doc:funcdef name="skip-quoted" key="S"/>
1819         </para>
1820         
1821         <para>
1822           This function will go to the next line of non-quoted text which come
1823           after a line of quoted text in the internal pager.
1824         </para>
1825         
1826         <para>
1827           
1828         </para>
1829         
1830       </sect2>
1831       
1832     </sect1>
1833     <!--}}}-->
1834     
1835     <sect1 id="sending"> <!--{{{-->
1836       <title>Sending Mail</title>
1837       
1838       <para>
1839         The following bindings are available in the <emphasis>index</emphasis>
1840         for sending
1841         messages.
1842       </para>
1843       
1844       <para>
1845
1846         <table frame="none" rowsep="1">
1847           <title>Most commonly used Mail Composition Bindings</title>
1848           <tgroup cols="3" align="left" colsep="1" rowsep="1">
1849           <thead>
1850             <row>
1851               <entry>Key</entry>
1852               <entry>Function</entry>
1853               <entry>Description</entry>
1854             </row>
1855           </thead>
1856           <tbody>
1857             <row>
1858               <entry><literal>m</literal></entry>
1859               <entry><muttng-doc:funcref name="compose"/></entry>
1860               <entry>compose a new message</entry>
1861             </row>
1862             <row>
1863               <entry><literal>r</literal></entry>
1864               <entry><muttng-doc:funcref name="reply"/></entry>
1865               <entry>reply to sender</entry>
1866             </row>
1867             <row>
1868               <entry><literal>g</literal></entry>
1869               <entry><muttng-doc:funcref name="group-reply"/></entry>
1870               <entry>reply to all recipients</entry>
1871             </row>
1872             <row>
1873               <entry><literal>L</literal></entry>
1874               <entry><muttng-doc:funcref name="list-reply"/></entry>
1875               <entry>reply to mailing list address</entry>
1876             </row>
1877             <row>
1878               <entry><literal>f</literal></entry>
1879               <entry><muttng-doc:funcref name="forward"/></entry>
1880               <entry>forward message</entry>
1881             </row>
1882             <row>
1883               <entry><literal>b</literal></entry>
1884               <entry><muttng-doc:funcref name="bounce"/></entry>
1885               <entry>bounce (remail) message</entry>
1886             </row>
1887             <row>
1888               <entry><literal>ESC k  </literal></entry>
1889               <entry><muttng-doc:funcref name="mail-key"/></entry>
1890               <entry>mail a PGP public key to someone</entry>
1891             </row>
1892           </tbody>
1893         </tgroup>
1894       </table>
1895
1896       </para>
1897       
1898       <para>
1899         Bouncing a message sends the message as is to the recipient you
1900         specify.  Forwarding a message allows you to add comments or
1901         modify the message you are forwarding.  These items are discussed
1902         in greater detail in the next chapter <link linkend="forwarding-mail">forwarding-mail</link>.
1903       </para>
1904       
1905       <sect2 id="sending-compose">
1906         <title>Composing new messages</title>
1907         
1908         <para>
1909           When you want to send an email using mutt-ng, simply press <literal>m</literal> on
1910           your keyboard. Then, mutt-ng asks for the recipient via a prompt in
1911           the last line:
1912         </para>
1913         
1914         <para>
1915           
1916           <screen>
1917 To:</screen>
1918           
1919         </para>
1920         
1921         <para>
1922           After you've finished entering the recipient(s), press return. If you
1923           want to send an email to more than one recipient, separate the email
1924           addresses using the comma "<literal>,</literal>". Mutt-ng then asks
1925           you for the email
1926           subject. Again, press return after you've entered it. After that,
1927           mutt-ng
1928           got the most important information from you, and starts up an editor
1929           where you can then enter your email.
1930         </para>
1931         
1932         <para>
1933           The editor that is called is selected in the following way: you
1934           can e.g. set it in the mutt-ng configuration:
1935         </para>
1936         
1937         <para>
1938           
1939           <screen>
1940 set editor = "vim +/^$/ -c ':set tw=72'"
1941 set editor = "nano"
1942 set editor = "emacs"</screen>
1943           
1944         </para>
1945         
1946         <para>
1947           If you don't set your preferred editor in your configuration, mutt-ng
1948           first looks whether the environment variable <muttng-doc:envvar name="VISUAL"/> is set, and if
1949           so, it takes its value as editor command. Otherwise, it has a look
1950           at <muttng-doc:envvar name="EDITOR"/> and takes its value if it is set. If no
1951           editor command
1952           can be found, mutt-ng simply assumes <muttng-doc:man name="vi"/> to be the
1953           default editor,
1954           since it's the most widespread editor in the Unix world and it's
1955           pretty
1956           safe to assume that it is installed and available.
1957         </para>
1958         
1959         <para>
1960           When you've finished entering your message, save it and quit your 
1961           editor. Mutt-ng will then present you with a summary screen, the
1962           compose menu. 
1963           On the top, you see a summary of the most important available key
1964           commands.
1965           Below that, you see the sender, the recipient(s), Cc and/or Bcc 
1966           recipient(s), the subject, the reply-to address, and optionally
1967           information where the sent email will be stored and whether it should
1968           be digitally signed and/or encrypted.
1969         </para>
1970         
1971         <para>
1972           Below that, you see a list of "attachments". The mail you've just
1973           entered before is also an attachment, but due to its special type
1974           (it's plain text), it will be displayed as the normal message on
1975           the receiver's side.
1976         </para>
1977         
1978         <para>
1979           At this point, you can add more attachments, pressing <literal>a</literal>, you
1980           can edit the recipient addresses, pressing <literal>t</literal> for
1981           the "To:" field,
1982           <literal>c</literal> for the "Cc:" field, and <literal>b</literal>
1983           for the "Bcc: field. You can
1984           also edit the subject the subject by simply pressing <literal>s</literal> or the
1985           email message that you've entered before by pressing <literal>e</literal>. You will
1986           then again return to the editor. You can even edit the sender, by
1987           pressing
1988           <literal>&lt;esc&gt;f</literal>, but this shall only be used with
1989           caution.
1990         </para>
1991         
1992         <para>
1993           Alternatively, you can configure mutt-ng in a way that most of the
1994           above settings can be edited using the editor. Therefore, you only
1995           need to add the following to your configuration:
1996         </para>
1997         
1998         <para>
1999           
2000           <screen>
2001 set edit_headers</screen>
2002           
2003         </para>
2004         
2005         <para>
2006           Once you have finished editing the body of your mail message, you are
2007           returned to the <emphasis>compose</emphasis> menu.  The following
2008           options are available:
2009         </para>
2010         
2011         <para>
2012
2013         <table frame="none" rowsep="1">
2014           <title>Most commonly used Compose Menu Bindings</title>
2015           <tgroup cols="3" align="left" colsep="1" rowsep="1">
2016           <thead>
2017             <row>
2018               <entry>Key</entry>
2019               <entry>Function</entry>
2020               <entry>Description</entry>
2021             </row>
2022           </thead>
2023           <tbody>
2024             <row>
2025               <entry><literal>a</literal></entry>
2026               <entry><muttng-doc:funcref name="attach-file"/></entry>
2027               <entry>attach a file</entry>
2028             </row>
2029             <row>
2030               <entry><literal>A</literal></entry>
2031               <entry><muttng-doc:funcref name="attach-message"/></entry>
2032               <entry>attach message(s) to the message</entry>
2033             </row>
2034             <row>
2035               <entry><literal>ESC k  </literal></entry>
2036               <entry><muttng-doc:funcref name="attach-key"/></entry>
2037               <entry>attach a PGP public key</entry>
2038             </row>
2039             <row>
2040               <entry><literal>d</literal></entry>
2041               <entry><muttng-doc:funcref name="edit-description"/></entry>
2042               <entry>edit description on attachment</entry>
2043             </row>
2044             <row>
2045               <entry><literal>D</literal></entry>
2046               <entry><muttng-doc:funcref name="detach-file"/></entry>
2047               <entry>detach a file</entry>
2048             </row>
2049             <row>
2050               <entry><literal>t</literal></entry>
2051               <entry><muttng-doc:funcref name="edit-to"/></entry>
2052               <entry>edit the To field</entry>
2053             </row>
2054             <row>
2055               <entry><literal>ESC f </literal></entry>
2056               <entry><muttng-doc:funcref name="edit-from"/></entry>
2057               <entry>edit the From field</entry>
2058             </row>
2059             <row>
2060               <entry><literal>r</literal></entry>
2061               <entry><muttng-doc:funcref name="edit-reply-to"/></entry>
2062               <entry>edit the Reply-To field</entry>
2063             </row>
2064             <row>
2065               <entry><literal>c</literal></entry>
2066               <entry><muttng-doc:funcref name="edit-cc"/></entry>
2067               <entry>edit the Cc field</entry>
2068             </row>
2069             <row>
2070               <entry><literal>b</literal></entry>
2071               <entry><muttng-doc:funcref name="edit-bcc"/></entry>
2072               <entry>edit the Bcc field</entry>
2073             </row>
2074             <row>
2075               <entry><literal>y</literal></entry>
2076               <entry><muttng-doc:funcref name="send-message"/></entry>
2077               <entry>send the message</entry>
2078             </row>
2079             <row>
2080               <entry><literal>s</literal></entry>
2081               <entry><muttng-doc:funcref name="edit-subject"/></entry>
2082               <entry>edit the Subject</entry>
2083             </row>
2084             <row>
2085               <entry><literal>S</literal></entry>
2086               <entry><muttng-doc:funcref name="smime-menu"/></entry>
2087               <entry>select S/MIME options</entry>
2088             </row>
2089             <row>
2090               <entry><literal>f</literal></entry>
2091               <entry><muttng-doc:funcref name="edit-fcc"/></entry>
2092               <entry>specify an ``Fcc'' mailbox</entry>
2093             </row>
2094             <row>
2095               <entry><literal>p</literal></entry>
2096               <entry><muttng-doc:funcref name="pgp-menu"/></entry>
2097               <entry>select PGP options</entry>
2098             </row>
2099             <row>
2100               <entry><literal>P</literal></entry>
2101               <entry><muttng-doc:funcref name="postpone-message"/></entry>
2102               <entry>postpone this message until later</entry>
2103             </row>
2104             <row>
2105               <entry><literal>q</literal></entry>
2106               <entry><muttng-doc:funcref name="quit"/></entry>
2107               <entry>quit (abort) sending the message</entry>
2108             </row>
2109             <row>
2110               <entry><literal>w</literal></entry>
2111               <entry><muttng-doc:funcref name="write-fcc"/></entry>
2112               <entry>write the message to a folder</entry>
2113             </row>
2114             <row>
2115               <entry><literal>i</literal></entry>
2116               <entry><muttng-doc:funcref name="ispell"/></entry>
2117               <entry>check spelling (if available on your system)</entry>
2118             </row>
2119             <row>
2120               <entry><literal>^F</literal></entry>
2121               <entry><muttng-doc:funcref name="forget-passphrase"/></entry>
2122               <entry>wipe passphrase(s) from memory</entry>
2123             </row>
2124           </tbody>
2125         </tgroup>
2126       </table>
2127
2128         </para>
2129         
2130         <para>
2131           <emphasis role="bold">Note:</emphasis> The attach-message function
2132           will prompt you for a folder to
2133           attach messages from. You can now tag messages in that folder and
2134           theywill be attached to the message you are sending. Note that
2135           certainoperations like composing a new mail, replying, forwarding,
2136           etc. are
2137           not permitted when you are in that folder. The <literal>%r</literal>
2138           in <muttng-doc:varref name="status_format" link="status-format"/>
2139           will change to
2140           a 'A' to indicate that you are in attach-message mode.
2141         </para>
2142         
2143         <para>
2144           
2145         </para>
2146         
2147       </sect2>
2148       
2149       <sect2 id="sending-reply">
2150         <title>Replying</title>
2151         
2152         <sect3 id="sending-simple-reply">
2153           <title>Simple Replies</title>
2154           
2155           <para>
2156             When you want to reply to an email message, select it in the index
2157             menu and then press <literal>r</literal>. Mutt-ng's behaviour is
2158             then similar to the 
2159             behaviour when you compose a message: first, you will be asked for
2160             the recipient, then for the subject, and then, mutt-ng will start
2161             the editor with the quote attribution and the quoted message. This
2162             can e.g. look like the example below.
2163           </para>
2164           
2165           <para>
2166             
2167             <screen>
2168 On Mon, Mar 07, 2005 at 05:02:12PM +0100, Michael Svensson wrote:
2169 &gt; Bill, can you please send last month's progress report to Mr. 
2170 &gt; Morgan? We also urgently need the cost estimation for the new 
2171 &gt; production server that we want to set up before our customer's 
2172 &gt; project will go live.</screen>
2173             
2174           </para>
2175           
2176           <para>
2177             You can start editing the email message. It is strongly
2178             recommended to put your answer <emphasis>below</emphasis> the
2179             quoted text and to
2180             only quote what is really necessary and that you refer to. Putting
2181             your answer on top of the quoted message, is, although very
2182             widespread, very often not considered to be a polite way to answer
2183             emails.
2184           </para>
2185           
2186           <para>
2187             The quote attribution is configurable, by default it is set to
2188             
2189             <screen>
2190 set attribution = "On %d, %n wrote:"</screen>
2191             
2192           </para>
2193           
2194           <para>
2195             It can also be set to something more compact, e.g.
2196             
2197             <screen>
2198 set attribution = "attribution="* %n &lt;%a&gt; [%(%y-%m-%d %H:%M)]:"</screen>
2199             
2200           </para>
2201           
2202           <para>
2203             The example above results in the following attribution:
2204             
2205             <screen>
2206 * Michael Svensson &lt;svensson@foobar.com&gt; [05-03-06 17:02]:
2207 &gt; Bill, can you please send last month's progress report to Mr. 
2208 &gt; Morgan? We also urgently need the cost estimation for the new 
2209 &gt; production server that we want to set up before our customer's 
2210 &gt; project will go live.</screen>
2211             
2212           </para>
2213           
2214           <para>
2215             Generally, try to keep your attribution short yet
2216             information-rich. It is <emphasis>not</emphasis> the right place
2217             for witty quotes,
2218             long "attribution" novels or anything like that: the right place
2219             for such things is - if at all - the email signature at the very
2220             bottom of the message.
2221           </para>
2222           
2223           <para>
2224             When you're done with writing your message, save and quit the
2225             editor. As before, you will return to the compose menu, which is
2226             used in the same way as before.
2227           </para>
2228           
2229           <para>
2230             
2231           </para>
2232           
2233         </sect3>
2234         
2235         <sect3 id="sending-group-reply">
2236           <title>Group Replies</title>
2237           
2238           <para>
2239             In the situation where a group of people uses email as a
2240             discussion, most of the emails will have one or more recipients,
2241             and probably several "Cc:" recipients. The group reply
2242             functionalityensures that when you press <literal>g</literal>
2243             instead of <literal>r</literal> to do a reply,
2244             each and every recipient that is contained in the original message
2245             will receive a copy of the message, either as normal recipient or
2246             as "Cc:" recipient.
2247           </para>
2248           
2249           <para>
2250             
2251           </para>
2252           
2253         </sect3>
2254         
2255         <sect3 id="sending-list-reply">
2256           <title>List Replies</title>
2257           
2258           <para>
2259             When you use mailing lists, it's generally better to send your
2260             reply to a message only to the list instead of the list and the
2261             original author. To make this easy to use, mutt-ng features list
2262             replies.
2263           </para>
2264           
2265           <para>
2266             To do a list reply, simply press <literal>L</literal>. If the email
2267             contains
2268             a <literal>Mail-Followup-To:</literal> header, its value will be
2269             used as reply
2270             address. Otherwise, mutt-ng searches through all mail addresses in
2271             the original message and tries to match them a list of regular
2272             expressions which can be specified using the <literal>lists</literal> command. 
2273             If any of the regular expression matches, a mailing
2274             list address has been found, and it will be used as reply address.
2275           </para>
2276           
2277           <para>
2278             
2279             <screen>
2280 lists linuxevent@luga\.at vuln-dev@ mutt-ng-users@</screen>
2281             
2282           </para>
2283           
2284           <para>
2285             Nowadays, most mailing list software like GNU Mailman adds a
2286             <literal>Mail-Followup-To:</literal> header to their emails anyway,
2287             so setting
2288             <literal>lists</literal> is hardly ever necessary in practice.
2289           </para>
2290           
2291           <para>
2292             
2293           </para>
2294           
2295           <para>
2296             
2297           </para>
2298           
2299         </sect3>
2300         
2301       </sect2>
2302       
2303       <sect2 id="sending-edit-header">
2304         <title>Editing the message header</title>
2305         
2306         <para>
2307           When editing the header of your outgoing message, there are a couple
2308           of
2309           special features available.
2310         </para>
2311         
2312         <para>
2313           If you specify
2314           
2315           <literal>Fcc:</literal> <emphasis>filename</emphasis>
2316           
2317           Mutt-ng will pick up <emphasis>filename</emphasis>
2318           just as if you had used the <emphasis>edit-fcc</emphasis> function in
2319           the <emphasis>compose</emphasis> menu.
2320         </para>
2321         
2322         <para>
2323           You can also attach files to your message by specifying
2324
2325           <screen>
2326 Attach: filename [description]</screen>
2327
2328           where <emphasis>filename</emphasis> is the file to attach and <emphasis>
2329             description
2330           </emphasis>
2331           is an
2332           optional string to use as the description of the attached file.
2333         </para>
2334         
2335         <para>
2336           When replying to messages, if you remove the <emphasis>In-Reply-To:</emphasis> field from
2337           the header field, Mutt-ng will not generate a <emphasis>References:</emphasis> field, which
2338           allows you to create a new message thread.
2339         </para>
2340         
2341         <para>
2342           Also see the <muttng-doc:varref name="edit_headers" link="edit-headers"/> and
2343           <muttng-doc:varref name="editor_headers" link="editor-headers"/> variables
2344         </para>
2345         
2346         <para>
2347           
2348         </para>
2349         
2350       </sect2>
2351       
2352       <sect2 id="sending-crypto">
2353         <title>Using Mutt-ng with PGP</title>
2354         
2355         <para>
2356           If you want to use PGP, you can specify 
2357         
2358           <screen>
2359 Pgp: [E | S | S id]</screen>
2360
2361           ``E'' encrypts, ``S'' signs and
2362           ``S&lt;id&gt;'' signs with the given key, setting
2363           <muttng-doc:varref name="pgp_sign_as" link="pgp-sign-as"/>
2364           permanently.
2365         </para>
2366         
2367         <para>
2368           If you have told mutt to PGP encrypt a message, it will guide you
2369           through a key selection process when you try to send the message.
2370           Mutt-ng will not ask you any questions about keys which have a
2371           certified user ID matching one of the message recipients' mail
2372           addresses.  However, there may be situations in which there are
2373           several keys, weakly certified user ID fields, or where no matching
2374           keys can be found.
2375         </para>
2376         
2377         <para>
2378           In these cases, you are dropped into a menu with a list of keys from
2379           which you can select one.  When you quit this menu, or mutt can't
2380           find any matching keys, you are prompted for a user ID.  You can, as
2381           usually, abort this prompt using <literal>^G</literal>.  When
2382           you do so, mutt will
2383           return to the compose screen.
2384         </para>
2385         
2386         <para>
2387           Once you have successfully finished the key selection, the message
2388           will be encrypted using the selected public keys, and sent out.
2389         </para>
2390         
2391         <para>
2392           Most fields of the entries in the key selection menu (see also 
2393           <muttng-doc:varref name="pgp_entry_format" link="pgp-entry-format"/>)
2394           have obvious meanings.  But some explanations on the capabilities,
2395           flags, 
2396           and validity fields are in order.
2397         </para>
2398         
2399         <para>
2400           The flags sequence (%f) will expand to one of the following
2401           flags:
2402
2403
2404         <table frame="none" rowsep="1">
2405           <title>PGP Key Menu Flags</title>
2406           <tgroup cols="2" align="left" colsep="1" rowsep="1">
2407           <thead>
2408             <row>
2409               <entry>Flag</entry>
2410               <entry>Description</entry>
2411             </row>
2412           </thead>
2413           <tbody>
2414             <row>
2415               <entry><literal>R</literal></entry>
2416               <entry>The key has been revoked and can't be used.</entry>
2417             </row>
2418             <row>
2419               <entry><literal>X</literal></entry>
2420               <entry>The key is expired and can't be used.</entry>
2421             </row>
2422             <row>
2423               <entry><literal>d</literal></entry>
2424               <entry>You have marked the key as disabled.</entry>
2425             </row>
2426             <row>
2427               <entry><literal>c</literal></entry>
2428               <entry>There are unknown critical self-signature packets.</entry>
2429             </row>
2430           </tbody>
2431         </tgroup>
2432       </table>
2433
2434         </para>
2435         
2436         <para>
2437           The capabilities field (%c) expands to a two-character
2438           sequencerepresenting a key's capabilities.  The first character gives
2439           the key's encryption capabilities: A minus sign (<emphasis role="bold">
2440             -
2441           </emphasis>
2442           )means 
2443           that the key cannot be used for encryption.  A dot (<emphasis role="bold">
2444             .
2445           </emphasis>
2446           )means that
2447           it's marked as a signature key in one of the user IDs, but may 
2448           also be used for encryption.  The letter <emphasis role="bold">e</emphasis> indicates that 
2449           this key can be used for encryption.
2450         </para>
2451         
2452         <para>
2453           The second character indicates the key's signing capabilities.  Once 
2454           again, a ``<emphasis role="bold">-</emphasis>'' implies ``not for
2455           signing'', ``<emphasis role="bold">.</emphasis>'' implies
2456           that the key is marked as an encryption key in one of the user-ids,
2457           and
2458           ``<emphasis role="bold">s</emphasis>'' denotes a key which can be
2459           used for signing.
2460         </para>
2461         
2462         <para>
2463           Finally, the validity field (%t) indicates how well-certified
2464           a user-id
2465           is.  A question mark (<emphasis role="bold">?</emphasis>) indicates
2466           undefined validity, a minus 
2467           character (<emphasis role="bold">-</emphasis>) marks an untrusted
2468           association, a space character 
2469           means a partially trusted association, and a plus character (<emphasis role="bold">
2470             +
2471           </emphasis>
2472           )
2473           indicates complete validity.
2474         </para>
2475         
2476         <para>
2477           
2478         </para>
2479         
2480       </sect2>
2481       
2482       <sect2 id="sending-mixmaster">
2483         <title>Sending anonymous messages via mixmaster</title>
2484         
2485         <para>
2486           You may also have configured mutt to co-operate with Mixmaster, an
2487           anonymous remailer.  Mixmaster permits you to send your messages
2488           anonymously using a chain of remailers. Mixmaster support in mutt is
2489           for 
2490           mixmaster version 2.04 (beta 45 appears to be the latest) and 2.03. 
2491           It does not support earlier versions or the later so-called version 3
2492           betas, 
2493           of which the latest appears to be called 2.9b23.
2494         </para>
2495         
2496         <para>
2497           To use it, you'll have to obey certain restrictions.  Most
2498           important, you cannot use the <literal>Cc</literal> and <literal>Bcc</literal> headers.  To tell
2499           Mutt-ng to use mixmaster, you have to select a remailer chain, using
2500           the mix function on the compose menu.  
2501         </para>
2502         
2503         <para>
2504           The chain selection screen is divided into two parts.  In the
2505           (larger) upper part, you get a list of remailers you may use.  In
2506           the lower part, you see the currently selected chain of remailers.
2507         </para>
2508         
2509         <para>
2510           You can navigate in the chain using the <literal>chain-prev</literal>
2511           and
2512           <literal>chain-next</literal> functions, which are by default bound
2513           to the left
2514           and right arrows and to the <literal>h</literal> and <literal>l</literal> keys (think vi
2515           keyboard bindings).  To insert a remailer at the current chain
2516           position, use the <literal>insert</literal> function.  To append a
2517           remailer behind
2518           the current chain position, use <literal>select-entry</literal> or <literal>
2519             append
2520           </literal>
2521           .
2522           You can also delete entries from the chain, using the corresponding
2523           function.  Finally, to abandon your changes, leave the menu, or
2524           <literal>accept</literal> them pressing (by default) the <literal>
2525             Return
2526           </literal>
2527           key.
2528         </para>
2529         
2530         <para>
2531           Note that different remailers do have different capabilities,
2532           indicated in the <literal>%c</literal> entry of the remailer menu lines (see
2533           <muttng-doc:varref name="mix_entry_format" link="mix-entry-format"/>).
2534           Most important is
2535           the ``middleman'' capability, indicated by a capital ``M'': This
2536           means that the remailer in question cannot be used as the final
2537           element of a chain, but will only forward messages to other
2538           mixmaster remailers.  For details on the other capabilities, please
2539           have a look at the mixmaster documentation.
2540         </para>
2541         
2542         <para>
2543           
2544         </para>
2545         
2546         <para>
2547           
2548         </para>
2549         
2550       </sect2>
2551       
2552     </sect1>
2553     
2554     <sect1 id="forwarding-mail">
2555       <title>Forwarding and Bouncing Mail</title>
2556       
2557       <para>
2558         Often, it is necessary to forward mails to other people.
2559         Therefore, mutt-ng supports forwarding messages in two different
2560         ways.
2561       </para>
2562       
2563       <para>
2564         The first one is regular forwarding, as you probably know it from
2565         other mail clients. You simply press <literal>f</literal>, enter the
2566         recipient
2567         email address, the subject of the forwarded email, and then you can
2568         edit the message to be forwarded in the editor. The forwarded
2569         message is separated from the rest of the message via the two
2570         following markers:
2571       </para>
2572       
2573       <para>
2574         
2575         <screen>
2576 ----- Forwarded message from Lucas User &#60;luser@example.com&#62; -----
2577
2578 From: Lucas User &#60;luser@example.com&#62;
2579 Date: Thu, 02 Dec 2004 03:08:34 +0100
2580 To: Michael Random &#60;mrandom@example.com&#62;
2581 Subject: Re: blackmail
2582
2583 Pay me EUR 50,000.- cash or your favorite stuffed animal will die
2584 a horrible death.
2585
2586 ----- End forwarded message -----</screen>
2587         
2588       </para>
2589       
2590       <para>
2591         When you're done with editing the mail, save and quit the editor,
2592         and you will return to the compose menu, the same menu you also
2593         encounter when composing or replying to mails.
2594       </para>
2595       
2596       <para>
2597         The second mode of forwarding emails with mutt-ng is the
2598         so-called <emphasis>bouncing</emphasis>: when you bounce an email to
2599         another
2600         address, it will be sent in practically the same format you send it
2601         (except for headers that are created during transporting the
2602         message). To bounce a message, press <literal>b</literal> and enter the
2603         recipient
2604         email address. By default, you are then asked whether you really
2605         want to bounce the message to the specified recipient. If you answer
2606         with yes, the message will then be bounced.
2607       </para>
2608       
2609       <para>
2610         To the recipient, the bounced email will look as if he got it
2611         like a regular email where he was <literal>Bcc:</literal> recipient.
2612         The only
2613         possibility to find out whether it was a bounced email is to
2614         carefully study the email headers and to find out which host really
2615         sent the email.
2616       </para>
2617       
2618       <para>
2619         
2620       </para>
2621       
2622     </sect1>
2623     
2624     <sect1 id="postponing-mail">
2625       <title>Postponing Mail</title>
2626       
2627       <para>
2628         At times it is desirable to delay sending a message that you have
2629         already begun to compose.  When the <emphasis>postpone-message</emphasis> function is
2630         used in the <emphasis>compose</emphasis> menu, the body of your message
2631         and attachments
2632         are stored in the mailbox specified by the
2633         <muttng-doc:varref name="postponed"/> variable.  This means that you can recall the
2634         message even if you exit Mutt-ng and then restart it at a later time.
2635       </para>
2636       
2637       <para>
2638         Once a message is postponed, there are several ways to resume it.  From
2639         the
2640         command line you can use the ``-p'' option, or if you <emphasis>compose</emphasis> a new
2641         message from the <emphasis>index</emphasis> or <emphasis>pager</emphasis> you will be prompted if postponed
2642         messages exist.  If multiple messages are currently postponed, the
2643         <emphasis>postponed</emphasis> menu will pop up and you can select
2644         which message you would
2645         like to resume.
2646       </para>
2647       
2648       <para>
2649         <emphasis role="bold">Note:</emphasis> If you postpone a reply to a
2650         message, the reply setting of
2651         the message is only updated when you actually finish the message and
2652         send it.  Also, you must be in the same folder with the message you
2653         replied to for the status of the message to be updated.
2654       </para>
2655       
2656       <para>
2657         See also the <muttng-doc:varref name="postpone"/> quad-option.
2658       </para>
2659       
2660       <para>
2661         
2662       </para>
2663       
2664       <para>
2665         
2666       </para>
2667       
2668     </sect1>
2669
2670     <!--}}}-->
2671     
2672 </chapter>
2673 <!--}}}-->
2674   
2675 <chapter id="configuration"> <!--{{{-->
2676     <title>Configuration</title>
2677     
2678     <sect1 id="configuration-files">
2679       <title>Locations of Configuration Files</title>
2680       
2681       <para>
2682         While the default configuration (or ``preferences'') make Mutt-ng
2683         usable right out
2684         of the box, it is often desirable to tailor Mutt-ng to suit your own
2685         tastes. When
2686         Mutt-ng is first invoked, it will attempt to read the ``system''
2687         configuration
2688         file (defaults set by your local system administrator), unless the
2689         ``-n'' <link linkend="commandline">commandline</link> option is
2690         specified.  This file is
2691         typically <literal>/usr/local/share/muttng/Muttngrc</literal> or <literal>
2692           /etc/Muttngrc
2693         </literal>
2694         ,
2695         Mutt-ng users will find this file in <literal>
2696           /usr/local/share/muttng/Muttrc
2697         </literal>
2698         or
2699         <literal>/etc/Muttngrc</literal>. Mutt will next look for a file named <literal>
2700           .muttrc
2701         </literal>
2702         in your home directory, Mutt-ng will look for <literal>.muttngrc</literal>.  If this file
2703         does not exist and your home directory has a subdirectory named <literal>
2704           .mutt
2705         </literal>
2706         ,
2707         mutt try to load a file named <literal>.muttng/muttngrc</literal>. 
2708       </para>
2709       
2710       <para>
2711         <literal>.muttrc</literal> (or <literal>.muttngrc</literal> for
2712         Mutt-ng) is the file where you will
2713         usually place your <link linkend="commands">commands</link> to
2714         configure Mutt-ng.
2715       </para>
2716       
2717       <para>
2718         
2719       </para>
2720       
2721     </sect1>
2722     
2723     <sect1 id="configuration-syntax">
2724       <title>Basic Syntax of Initialization Files</title>
2725       
2726       <para>
2727         An initialization file consists of a series of <link linkend="commands">commands</link>. Each line of the file may contain one or more commands.
2728         When multiple commands are used, they must be separated by a semicolon
2729         (;).
2730         
2731         <screen>
2732 set realname='Mutt-ng user' ; ignore x-</screen>
2733         
2734         The hash mark, or pound sign
2735         (``#''), is used as a ``comment'' character. You can use it to
2736         annotate your initialization file. All text after the comment character
2737         to the end of the line is ignored. For example,
2738       </para>
2739       
2740       <para>
2741         
2742         <screen>
2743 my_hdr X-Disclaimer: Why are you listening to me? # This is a comment</screen>
2744         
2745       </para>
2746       
2747       <para>
2748         Single quotes (') and double quotes (&quot;) can be used to quote
2749         strings
2750         which contain spaces or other special characters.  The difference
2751         between
2752         the two types of quotes is similar to that of many popular shell
2753         programs,
2754         namely that a single quote is used to specify a literal string (one
2755         that is
2756         not interpreted for shell variables or quoting with a backslash
2757         (see
2758         next paragraph), while double quotes indicate a string for which
2759         should be evaluated.  For example, backtics are evaluated inside of
2760         double
2761         quotes, but <emphasis role="bold">not</emphasis> for single quotes.
2762       </para>
2763       
2764       <para>
2765         \ quotes the next character, just as in shells such as bash and
2766         zsh.
2767         For example, if want to put quotes ``&quot;'' inside of a string, you
2768         can use
2769         ``\'' to force the next character to be a literal instead of
2770         interpreted
2771         character.
2772         
2773         <screen>
2774 set realname="Michael \"MuttDude\" Elkins"</screen>
2775         
2776       </para>
2777       
2778       <para>
2779         ``\\'' means to insert a literal ``\'' into the line.
2780         ``\n'' and ``\r'' have their usual C meanings of linefeed and
2781         carriage-return, respectively.
2782       </para>
2783       
2784       <para>
2785         A \ at the end of a line can be used to split commands over
2786         multiple lines, provided that the split points don't appear in the
2787         middle of command names.
2788       </para>
2789       
2790       <para>
2791         Please note that, unlike the various shells, mutt-ng interprets a
2792         ``\''
2793         at the end of a line also in comments. This allows you to disable a
2794         command
2795         split over multiple lines with only one ``#''.
2796       </para>
2797       
2798       <para>
2799         
2800         <screen>
2801 # folder-hook . \
2802 set realname="Michael \"MuttDude\" Elkins"</screen>
2803         
2804       </para>
2805       
2806       <para>
2807         When testing your config files, beware the following caveat. The
2808         backslash
2809         at the end of the commented line extends the current line with the next
2810         line
2811         - then referred to as a ``continuation line''.  As the first line is
2812         commented with a hash (#) all following continuation lines are also
2813         part of a comment and therefore are ignored, too. So take care of
2814         comments
2815         when continuation lines are involved within your setup files!
2816       </para>
2817       
2818       <para>
2819         Abstract example:
2820       </para>
2821       
2822       <para>
2823         
2824         <screen>
2825 line1\
2826 line2a # line2b\
2827 line3\
2828 line4
2829 line5</screen>
2830         
2831       </para>
2832       
2833       <para>
2834         line1 ``continues'' until line4. however, the part after the # is a
2835         comment which includes line3 and line4. line5 is a new line of its own
2836         and
2837         thus is interpreted again.
2838       </para>
2839       
2840       <para>
2841         The commands understood by mutt are explained in the next paragraphs.
2842         For a complete list, see the <link linkend="commands">commands</link>.
2843       </para>
2844       
2845       <para>
2846         
2847       </para>
2848       
2849     </sect1>
2850     
2851     <sect1 id="configuration-expansion">
2852       <title>Expansion within variables</title>
2853       
2854       <para>
2855         Besides just assign static content to variables, there's plenty of
2856         ways of adding external and more or less dynamic content.
2857       </para>
2858       
2859       <sect2 id="configuration-expansion-commands">
2860         <title>Commands' Output</title>
2861         
2862         <para>
2863           It is possible to substitute the output of a Unix command in an
2864           initialization file.  This is accomplished by enclosing the command
2865           in backquotes (``) as in, for example:
2866         </para>
2867         
2868         <para>
2869           
2870           <screen>
2871 my_hdr X-Operating-System: `uname -a`</screen>
2872           
2873         </para>
2874         
2875         <para>
2876           The output of the Unix command ``uname -a'' will be substituted
2877           before the line is parsed. Note that since initialization files are
2878           line oriented, only the first line of output from the Unix command
2879           will be substituted.
2880         </para>
2881         
2882       </sect2>
2883       
2884       <sect2 id="configuration-expansion-environment">
2885         <title>Environment Variables</title>
2886         
2887         <para>
2888           UNIX environments can be accessed like the way it is done in
2889           shells like sh and bash: Prepend the name of the environment by a
2890           ``$'' sign. For example,
2891         </para>
2892         
2893         <para>
2894           
2895           <screen>
2896 set record=+sent_on_$HOSTNAME</screen>
2897           
2898         </para>
2899         
2900         <para>
2901           sets the <muttng-doc:varref name="record"/> variable to the
2902           string <emphasis>+sent_on_</emphasis> and appends the
2903           value of the evironment
2904           variable <muttng-doc:envvar name="HOSTNAME"/>.
2905         </para>
2906         
2907         <para>
2908           <emphasis role="bold">Note:</emphasis> There will be no warning if an
2909           environment variable
2910           is not defined. The result will of the expansion will then be empty.
2911         </para>
2912         
2913       </sect2>
2914       
2915       <sect2 id="configuration-expansion-config">
2916         <title>Configuration Variables</title>
2917         
2918         <para>
2919           As for environment variables, the values of all configuration
2920           variables as string can be used in the same way, too. For example,
2921         </para>
2922         
2923         <para>
2924           
2925           <screen>
2926 set imap_home_namespace = $folder</screen>
2927           
2928         </para>
2929         
2930         <para>
2931           would set the value of <muttng-doc:varref name="imap_home_namespace" link="imap-home-namespace"/>
2932           to the value to which <muttng-doc:varref name="folder"/>
2933           is <emphasis>currently</emphasis> set to.
2934         </para>
2935         
2936         <para>
2937           <emphasis role="bold">Note:</emphasis> There're no logical links
2938           established in such cases so
2939           that the the value for <muttng-doc:varref name="imap_home_namespace" link="imap-home-namespace"/>
2940           won't change even
2941           if <muttng-doc:varref name="folder"/> gets changed.
2942         </para>
2943         
2944         <para>
2945           <emphasis role="bold">Note:</emphasis> There will be no warning if a
2946           configuration variable
2947           is not defined or is empty. The result will of the expansion will
2948           then be empty.
2949         </para>
2950         
2951       </sect2>
2952       
2953       <sect2 id="configuration-expansion-self">
2954         <title>Self-Defined Variables</title>
2955         
2956         <para>
2957           Mutt-ng flexibly allows users to define their own variables. To
2958           avoid conflicts with the standard set and to prevent misleading
2959           error messages, there's a reserved namespace for them: all
2960           user-defined variables must be prefixed with <literal>user_</literal> and can be
2961           used just like any ordinary configuration or environment
2962           variable.
2963         </para>
2964         
2965         <para>
2966           For example, to view the manual, users can either define two
2967           macros like the following
2968         </para>
2969         
2970         <para>
2971           
2972           <screen>
2973 macro generic &lt;F1&gt; "!less -r /path/to/manual" "Show manual"
2974 macro pager &lt;F1&gt; "!less -r /path/to/manual" "Show manual"</screen>
2975           
2976         </para>
2977         
2978         <para>
2979           for <literal>generic</literal>, <literal>pager</literal> and <literal>
2980             index
2981           </literal>
2982           .The alternative is to
2983           define a custom variable like so:
2984         </para>
2985         
2986         <para>
2987           
2988           <screen>
2989 set user_manualcmd = "!less -r /path/to_manual" 
2990 macro generic &lt;F1&gt; "$user_manualcmd&lt;enter&gt;" "Show manual"
2991 macro pager &lt;F1&gt; "$user_manualcmd&lt;enter&gt;" "Show manual"
2992 macro index &lt;F1&gt; "$user_manualcmd&lt;enter&gt;" "Show manual"</screen>
2993           
2994         </para>
2995         
2996         <para>
2997           to re-use the command sequence as in:
2998         </para>
2999         
3000         <para>
3001           
3002           <screen>
3003 macro index &lt;F2&gt; "$user_manualcmd | grep '\^[ ]\\+~. '" "Show Patterns"</screen>
3004           
3005         </para>
3006         
3007         <para>
3008           Using this feature, arbitrary sequences can be defined once and
3009           recalled and reused where necessary. More advanced scenarios could
3010           include to save a variable's value at the beginning of macro
3011           sequence and restore it at end.
3012         </para>
3013         
3014         <para>
3015           When the variable is first defined, the first value it gets
3016           assigned is also the initial value to which it can be reset using
3017           the <literal>reset</literal> command.
3018         </para>
3019         
3020         <para>
3021           The complete removal is done via the <literal>unset</literal>
3022           keyword.
3023         </para>
3024         
3025         <para>
3026           After the following sequence:
3027         </para>
3028         
3029         <para>
3030           
3031           <screen>
3032 set user_foo = 42
3033 set user_foo = 666</screen>
3034           
3035         </para>
3036         
3037         <para>
3038           the variable <literal>$user_foo</literal> has a current value
3039           of 666 and an
3040           initial of 42. The query
3041         </para>
3042         
3043         <para>
3044           
3045           <screen>
3046 set ?user_foo</screen>
3047           
3048         </para>
3049         
3050         <para>
3051           will show 666. After doing the reset via
3052         </para>
3053         
3054         <para>
3055           
3056           <screen>
3057 reset user_foo</screen>
3058           
3059         </para>
3060         
3061         <para>
3062           a following query will give 42 as the result. After unsetting it
3063           via
3064         </para>
3065         
3066         <para>
3067           
3068           <screen>
3069 unset user_foo</screen>
3070           
3071         </para>
3072         
3073         <para>
3074           any query or operation (except the noted expansion within other
3075           statements) will lead to an error message.
3076         </para>
3077         
3078       </sect2>
3079       
3080       <sect2 id="configuration-expansion-predef">
3081         <title>Pre-Defined Variables</title>
3082         
3083         <para>
3084           In order to allow users to share one setup over a number of
3085           different machines without having to change its contents, there's a
3086           number of pre-defined variables. These are prefixed with
3087           <literal>muttng_</literal> and are read-only, i.e. they cannot
3088           be set, unset or
3089           reset. The reference chapter lists all available variables.
3090         </para>
3091         
3092         <para>
3093           <emphasis> Please consult the local copy of your manual for their
3094             values as they may differ from different manual sources.
3095           </emphasis>
3096           Where
3097           the manual is installed in can be queried (already using such a
3098           variable) by running:
3099         </para>
3100         
3101         <para>
3102           
3103           <screen>
3104 muttng -Q muttng_docdir</screen>
3105           
3106         </para>
3107         
3108         <para>
3109           To extend the example for viewing the manual via self-defined
3110           variables, it can be made more readable and more portable by
3111           changing the real path in:
3112         </para>
3113         
3114         <para>
3115           
3116           <screen>
3117 set user_manualcmd = '!less -r /path/to_manual'</screen>
3118           
3119         </para>
3120         
3121         <para>
3122           to:
3123         </para>
3124         
3125         <para>
3126           
3127           <screen>
3128 set user_manualcmd = "!less -r $muttng_docdir/manual.txt"</screen>
3129           
3130         </para>
3131         
3132         <para>
3133           which works everywhere if a manual is installed.
3134         </para>
3135         
3136         <para>
3137           Please note that by the type of quoting, muttng determines when
3138           to expand these values: when it finds double quotes, the value will
3139           be expanded during reading the setup files but when it finds single
3140           quotes, it'll expand it at runtime as needed.
3141         </para>
3142         
3143         <para>
3144           For example, the statement
3145         </para>
3146         
3147         <para>
3148           
3149           <screen>
3150 folder-hook . "set user_current_folder = $muttng_folder_name"</screen>
3151           
3152         </para>
3153         
3154         <para>
3155           will be already be translated to the following when reading the
3156           startup files:
3157         </para>
3158         
3159         <para>
3160           
3161           <screen>
3162 folder-hook . "set user_current_folder = some_folder"</screen>
3163           
3164         </para>
3165         
3166         <para>
3167           with <literal>some_folder</literal> being the name of the
3168           first folder muttng
3169           opens. On the contrary,
3170         </para>
3171         
3172         <para>
3173           
3174           <screen>
3175 folder-hook . 'set user_current_folder = $muttng_folder_name'</screen>
3176           
3177         </para>
3178         
3179         <para>
3180           will be executed at runtime because of the single quotes so that
3181           <literal>user_current_folder</literal> will always have
3182           the value of the currently
3183           opened folder.
3184         </para>
3185         
3186         <para>
3187           A more practical example is:
3188         </para>
3189         
3190         <para>
3191           
3192           <screen>
3193 folder-hook . 'source ~/.mutt/score-$muttng_folder_name'</screen>
3194           
3195         </para>
3196         
3197         <para>
3198           which can be used to source files containing score commands
3199           depending on the folder the user enters.
3200         </para>
3201         
3202       </sect2>
3203       
3204       <sect2 id="configuration-expansion-typeconv">
3205         <title>Type Conversions</title>
3206         
3207         <para>
3208           A note about variable's types during conversion: internally
3209           values are stored in internal types but for any dump/query or set
3210           operation they're converted to and from string. That means that
3211           there's no need to worry about types when referencing any variable.
3212           As an example, the following can be used without harm (besides
3213           makeing muttng very likely behave strange):
3214         </para>
3215         
3216         <para>
3217           
3218           <screen>
3219 set read_inc = 100
3220 set folder = $read_inc
3221 set read_inc = $folder
3222 set user_magic_number = 42
3223 set folder = $user_magic_number</screen>
3224           
3225         </para>
3226         
3227       </sect2>
3228       
3229     </sect1>
3230     
3231     <sect1 id="command-alias"><anchor id="command-unalias"/>
3232       <title>Defining/Using aliases</title>
3233
3234       <para>
3235         Usage: <muttng-doc:command name="alias"/> <emphasis>key</emphasis> <emphasis>address</emphasis> [, <emphasis>address</emphasis>,...]
3236       </para>
3237       
3238       <para>
3239         It's usually very cumbersome to remember or type out the address of
3240         someone
3241         you are communicating with.  Mutt-ng allows you to create ``aliases''
3242         which map
3243         a short string to a full address.
3244       </para>
3245       
3246       <para>
3247         <emphasis role="bold">Note:</emphasis> if you want to create an alias
3248         for a group (by specifying more than
3249         one address), you <emphasis role="bold">must</emphasis> separate the
3250         addresses with a comma (``,'').
3251       </para>
3252       
3253       <para>
3254         To remove an alias or aliases (``*'' means all aliases):
3255       </para>
3256       
3257       <para>
3258         <literal>unalias</literal> [* | <emphasis>key</emphasis> <emphasis>...</emphasis>]
3259       </para>
3260       
3261       <para>
3262         
3263         <screen>
3264 alias muttdude me@cs.hmc.edu (Michael Elkins)
3265 alias theguys manny, moe, jack</screen>
3266         
3267       </para>
3268       
3269       <para>
3270         Unlike other mailers, Mutt-ng doesn't require aliases to be defined
3271         in a special file.  The <literal>alias</literal> command can appear
3272         anywhere in
3273         a configuration file, as long as this file is <muttng-doc:command name="source"/>.
3274         Consequently, you can have multiple alias files, or
3275         you can have all aliases defined in your muttrc.
3276       </para>
3277       
3278       <para>
3279         On the other hand, the <muttng-doc:funcref name="create-alias"/>
3280         function can use only one file, the one pointed to by the
3281         <muttng-doc:varref name="alias_file" link="alias-file"/>
3282         variable (which is
3283         <literal>~/.muttrc</literal> by default). This file is not
3284         special either,
3285         in the sense that Mutt-ng will happily append aliases to any file, but
3286         in
3287         order for the new aliases to take effect you need to explicitly <muttng-doc:command name="source"/>
3288         this file too.
3289       </para>
3290       
3291       <para>
3292         For example:
3293       </para>
3294       
3295       <para>
3296         
3297         <screen>
3298 source /usr/local/share/Mutt-ng.aliases
3299 source ~/.mail_aliases
3300 set alias_file=~/.mail_aliases</screen>
3301         
3302       </para>
3303       
3304       <para>
3305         To use aliases, you merely use the alias at any place in mutt where
3306         muttprompts for addresses, such as the <emphasis>To:</emphasis> or <emphasis>
3307           Cc:
3308         </emphasis>
3309         prompt.  You can
3310         also enter aliases in your editor at the appropriate headers if you
3311         have the
3312         <muttng-doc:varref name="editor_headers" link="edit-headers"/>
3313         variable set.
3314       </para>
3315       
3316       <para>
3317         In addition, at the various address prompts, you can use the tab
3318         character
3319         to expand a partial alias to the full alias.  If there are multiple
3320         matches,
3321         mutt will bring up a menu with the matching aliases.  In order to be
3322         presented with the full list of aliases, you must hit tab with out a
3323         partial
3324         alias, such as at the beginning of the prompt or after a comma denoting
3325         multiple addresses.
3326       </para>
3327       
3328       <para>
3329         In the alias menu, you can select as many aliases as you want with the
3330         <emphasis>select-entry</emphasis> key (default: RET), and use the <emphasis>
3331           exit
3332         </emphasis>
3333         key
3334         (default: q) to return to the address prompt.
3335       </para>
3336       
3337       <para>
3338         
3339       </para>
3340       
3341     </sect1>
3342     
3343     <sect1 id="command-bind">
3344       <title>Changing the default key bindings</title>
3345       
3346       <para>
3347         Usage: <muttng-doc:command name="bind"/> <emphasis>map</emphasis> <emphasis>key</emphasis> <emphasis>function</emphasis>
3348       </para>
3349       
3350       <para>
3351         This command allows you to change the default key bindings (operation
3352         invoked when pressing a key).
3353       </para>
3354       
3355       <para>
3356         <emphasis>map</emphasis> specifies in which menu the binding belongs. 
3357         Multiple maps may
3358         be specified by separating them with commas (no additional whitespace
3359         isallowed). The currently defined maps are:
3360       </para>
3361       
3362       <para>
3363         <anchor id="maps"/>
3364         <variablelist>
3365           
3366           <varlistentry>
3367             <term>generic</term>
3368             <listitem>
3369               <para>
3370                 This is not a real menu, but is used as a fallback for all of
3371                 the other
3372                 menus except for the pager and editor modes.  If a key is not
3373                 defined in
3374                 another menu, Mutt-ng will look for a binding to use in this
3375                 menu.  This allows
3376                 you to bind a key to a certain function in multiple menus
3377                 instead of having
3378                 multiple bind statements to accomplish the same task.
3379               </para>
3380             </listitem>
3381           </varlistentry>
3382           <varlistentry>
3383             <term>alias</term>
3384             <listitem>
3385               <para>
3386                 The alias menu is the list of your personal aliases as defined
3387                 in your
3388                 muttrc.  It is the mapping from a short alias name to the full
3389                 email
3390                 address(es) of the recipient(s).
3391               </para>
3392             </listitem>
3393           </varlistentry>
3394           <varlistentry>
3395             <term>attach</term>
3396             <listitem>
3397               <para>
3398                 The attachment menu is used to access the attachments on
3399                 received messages.
3400               </para>
3401             </listitem>
3402           </varlistentry>
3403           <varlistentry>
3404             <term>browser</term>
3405             <listitem>
3406               <para>
3407                 The browser is used for both browsing the local directory
3408                 structure, and for
3409                 listing all of your incoming mailboxes.
3410               </para>
3411             </listitem>
3412           </varlistentry>
3413           <varlistentry>
3414             <term>editor</term>
3415             <listitem>
3416               <para>
3417                 The editor is the line-based editor the user enters text data.
3418               </para>
3419             </listitem>
3420           </varlistentry>
3421           <varlistentry>
3422             <term>index</term>
3423             <listitem>
3424               <para>
3425                 The index is the list of messages contained in a mailbox.
3426               </para>
3427             </listitem>
3428           </varlistentry>
3429           <varlistentry>
3430             <term>compose</term>
3431             <listitem>
3432               <para>
3433                 The compose menu is the screen used when sending a new message.
3434               </para>
3435             </listitem>
3436           </varlistentry>
3437           <varlistentry>
3438             <term>pager</term>
3439             <listitem>
3440               <para>
3441                 The pager is the mode used to display message/attachment data,
3442                 and help
3443                 listings.
3444               </para>
3445             </listitem>
3446           </varlistentry>
3447           <varlistentry>
3448             <term>pgp</term>
3449             <listitem>
3450               <para>
3451                 The pgp menu is used to select the OpenPGP keys used for
3452                 encrypting outgoing
3453                 messages.
3454               </para>
3455             </listitem>
3456           </varlistentry>
3457           <varlistentry>
3458             <term>postpone</term>
3459             <listitem>
3460               <para>
3461                 The postpone menu is similar to the index menu, except is used
3462                 when
3463                 recalling a message the user was composing, but saved until
3464                 later.
3465               </para>
3466             </listitem>
3467           </varlistentry>
3468         </variablelist>
3469       </para>
3470       
3471       <para>
3472         <emphasis>key</emphasis> is the key (or key sequence) you wish to bind.
3473          To specify a
3474         control character, use the sequence <emphasis>\Cx</emphasis>,
3475         where <emphasis>x</emphasis> is the
3476         letter of the control character (for example, to specify control-A use
3477         ``\Ca'').  Note that the case of <emphasis>x</emphasis> as well as
3478         <emphasis>\C</emphasis> is
3479         ignored, so that <emphasis>\CA</emphasis>, <emphasis>\Ca</emphasis>, <emphasis>
3480           \cA
3481         </emphasis>
3482         and <emphasis>\ca</emphasis> are all
3483         equivalent.  An alternative form is to specify the key as a three digit
3484         octal number prefixed with a ``\'' (for example <emphasis>
3485           \177
3486         </emphasis>
3487         is
3488         equivalent to <emphasis>\c?</emphasis>).
3489       </para>
3490       
3491       <para>
3492         In addition, <emphasis>key</emphasis> may consist of:
3493       </para>
3494       
3495       <para>
3496         
3497         <table frame="none" rowsep="1">
3498           <title>Alternative Key Names</title>
3499           <tgroup cols="2" align="left" colsep="1" rowsep="1">
3500           <thead>
3501             <row>
3502               <entry>Sequence</entry>
3503               <entry>Description</entry>
3504             </row>
3505           </thead>
3506           <tbody>
3507             <row>
3508               <entry><literal>\t</literal></entry>
3509               <entry>tab</entry>
3510             </row>
3511             <row>
3512               <entry><literal>&#60;tab&#62;</literal></entry>
3513               <entry>tab</entry>
3514             </row>
3515             <row>
3516               <entry><literal>&#60;backtab&#62;</literal></entry>
3517               <entry>backtab / shift-tab</entry>
3518             </row>
3519             <row>
3520               <entry><literal>\r</literal></entry>
3521               <entry>carriage return</entry>
3522             </row>
3523             <row>
3524               <entry><literal>\n</literal></entry>
3525               <entry>newline</entry>
3526             </row>
3527             <row>
3528               <entry><literal>\e</literal></entry>
3529               <entry>escape</entry>
3530             </row>
3531             <row>
3532               <entry><literal>&#60;esc&#62;</literal></entry>
3533               <entry>escape</entry>
3534             </row>
3535             <row>
3536               <entry><literal>&#60;up&#62;</literal></entry>
3537               <entry>up arrow</entry>
3538             </row>
3539             <row>
3540               <entry><literal>&#60;down&#62;</literal></entry>
3541               <entry>down arrow</entry>
3542             </row>
3543             <row>
3544               <entry><literal>&#60;left&#62;</literal></entry>
3545               <entry>left arrow</entry>
3546             </row>
3547             <row>
3548               <entry><literal>&#60;right&#62;</literal></entry>
3549               <entry>right arrow</entry>
3550             </row>
3551             <row>
3552               <entry><literal>&#60;pageup&#62;</literal></entry>
3553               <entry>Page Up</entry>
3554             </row>
3555             <row>
3556               <entry><literal>&#60;pagedown&#62;</literal></entry>
3557               <entry>Page Down</entry>
3558             </row>
3559             <row>
3560               <entry><literal>&#60;backspace&#62;</literal></entry>
3561               <entry>Backspace</entry>
3562             </row>
3563             <row>
3564               <entry><literal>&#60;delete&#62;</literal></entry>
3565               <entry>Delete</entry>
3566             </row>
3567             <row>
3568               <entry><literal>&#60;insert&#62;</literal></entry>
3569               <entry>Insert</entry>
3570             </row>
3571             <row>
3572               <entry><literal>&#60;enter&#62;</literal></entry>
3573               <entry>Enter</entry>
3574             </row>
3575             <row>
3576               <entry><literal>&#60;return&#62;</literal></entry>
3577               <entry>Return</entry>
3578             </row>
3579             <row>
3580               <entry><literal>&#60;home&#62;</literal></entry>
3581               <entry>Home</entry>
3582             </row>
3583             <row>
3584               <entry><literal>&#60;end&#62;</literal></entry>
3585               <entry>End</entry>
3586             </row>
3587             <row>
3588               <entry><literal>&#60;space&#62;</literal></entry>
3589               <entry>Space bar</entry>
3590             </row>
3591             <row>
3592               <entry><literal>&#60;f1&#62;</literal></entry>
3593               <entry>function key 1</entry>
3594             </row>
3595             <row>
3596               <entry><literal>&#60;f10&#62;</literal></entry>
3597               <entry>function key 10</entry>
3598             </row>
3599           </tbody>
3600         </tgroup>
3601       </table>
3602         
3603       </para>
3604       
3605       <para>
3606         <emphasis>key</emphasis> does not need to be enclosed in quotes unless
3607         it contains a
3608         space (`` '').
3609       </para>
3610       
3611       <para>
3612         <emphasis>function</emphasis> specifies which action to take when <emphasis>
3613           key
3614         </emphasis>
3615         is pressed.
3616         For a complete list of functions, see the <link linkend="functions">functions</link>. 
3617         The special function <literal>noop</literal> unbinds the specified key
3618         sequence.
3619       </para>
3620       
3621       <para>
3622         
3623       </para>
3624       
3625     </sect1>
3626     
3627     <sect1 id="charset-hook">
3628       <title>Defining aliases for character sets</title>
3629
3630       <anchor id="iconv-hook"/>
3631       <para>
3632         Usage: <muttng-doc:hook name="charset"/> <emphasis>alias</emphasis> <emphasis> charset</emphasis>
3633       </para>
3634       <para>
3635         Usage: <muttng-doc:hook name="iconv"/> <emphasis>charset</emphasis> <emphasis> local-charset </emphasis>
3636       </para>
3637       
3638       <para>
3639         The <muttng-doc:hook name="charset"/> command defines an alias for a
3640         character set.
3641         This is useful to properly display messages which are tagged with a
3642         character set name not known to mutt.
3643       </para>
3644       
3645       <para>
3646         The <muttng-doc:hook name="iconv"/> command defines a system-specific
3647         name for a
3648         character set.  This is helpful when your systems character
3649         conversion library insists on using strange, system-specific names
3650         for character sets.
3651       </para>
3652       
3653       <para>
3654         
3655       </para>
3656       
3657     </sect1>
3658     
3659     <sect1 id="folder-hook">
3660       <title>Setting variables based upon mailbox</title>
3661       
3662       <para>
3663         Usage: <muttng-doc:hook name="folder"/> [!]<emphasis>regexp</emphasis> <emphasis>command</emphasis>
3664       </para>
3665       
3666       <para>
3667         It is often desirable to change settings based on which mailbox you are
3668         reading.  The <muttng-doc:hook name="folder"/> command provides a method by which you can
3669         execute
3670         any configuration command.  <emphasis>regexp</emphasis> is a regular
3671         expression specifying
3672         in which mailboxes to execute <emphasis>command</emphasis> before
3673         loading.  If a mailbox
3674         matches multiple <muttng-doc:hook name="folder"/>'s, they are executed in the order given in
3675         the
3676         muttrc.
3677       </para>
3678       
3679       <para>
3680         <emphasis role="bold">Note:</emphasis> if you use the ``!'' shortcut
3681         for <muttng-doc:varref name="spoolfile"/> at the beginning of the
3682         pattern, you must place it
3683         inside of double or single quotes in order to distinguish it from the
3684         logical <emphasis>not</emphasis> operator for the expression.
3685       </para>
3686       
3687       <para>
3688         Note that the settings are <emphasis>not</emphasis> restored when you
3689         leave the mailbox.
3690         For example, a command action to perform is to change the sorting
3691         methodbased upon the mailbox being read:
3692       </para>
3693       
3694       <para>
3695         
3696         <screen>
3697 folder-hook mutt set sort=threads</screen>
3698         
3699       </para>
3700       
3701       <para>
3702         However, the sorting method is not restored to its previous value when
3703         reading a different mailbox.  To specify a <emphasis>default</emphasis>
3704         command, use the
3705         pattern ``.'':
3706       </para>
3707       
3708       <para>
3709         
3710         <screen>
3711 folder-hook . set sort=date-sent</screen>
3712         
3713       </para>
3714       
3715       <para>
3716         
3717       </para>
3718       
3719     </sect1>
3720     
3721     <sect1 id="command-macro">
3722       <title>Keyboard macros</title>
3723       
3724       <para>
3725         Usage: <muttng-doc:command name="macro"/> <emphasis>menu</emphasis> <emphasis>key</emphasis> <emphasis>sequence</emphasis> [<emphasis>description</emphasis>]
3726       </para>
3727       
3728       <para>
3729         Macros are useful when you would like a single key to perform a series
3730         of
3731         actions.  When you press <emphasis>key</emphasis> in menu <emphasis>
3732           menu
3733         </emphasis>
3734         ,Mutt-ng will behave as if
3735         you had typed <emphasis>sequence</emphasis>.  So if you have a common
3736         sequence of commands
3737         you type, you can create a macro to execute those commands with a
3738         singlekey.
3739       </para>
3740       
3741       <para>
3742         <emphasis>menu</emphasis> is the <link linkend="maps">maps</link> which
3743         the macro will be bound.
3744         Multiple maps may be specified by separating multiple menu arguments by
3745         commas. Whitespace may not be used in between the menu arguments and
3746         thecommas separating them.
3747       </para>
3748       
3749       <para>
3750         <emphasis>key</emphasis> and <emphasis>sequence</emphasis> are expanded
3751         by the same rules as the <muttng-doc:command name="bind"/>.  There are
3752         some additions however.  The
3753         first is that control characters in <emphasis>sequence</emphasis> can
3754         also be specified
3755         as <emphasis>^x</emphasis>.  In order to get a caret (`^'')
3756         you need to use
3757         <emphasis>^^</emphasis>.  Secondly, to specify a certain key
3758         such as <emphasis>up</emphasis>
3759         or to invoke a function directly, you can use the format
3760         <emphasis>&lt;key name&gt;</emphasis> and <emphasis>&lt;function
3761           name&gt;
3762         </emphasis>
3763         .For a listing of key
3764         names see the section on <muttng-doc:command name="bind"/>.  Functions
3765         are listed in the <link linkend="functions">functions</link>.
3766       </para>
3767       
3768       <para>
3769         The advantage with using function names directly is that the macros
3770         willwork regardless of the current key bindings, so they are not
3771         dependent on
3772         the user having particular key definitions.  This makes them more
3773         robustand portable, and also facilitates defining of macros in files
3774         used by more
3775         than one user (eg. the system Muttngrc).
3776       </para>
3777       
3778       <para>
3779         Optionally you can specify a descriptive text after <emphasis>sequence</emphasis>,
3780         which is shown in the help screens.
3781       </para>
3782       
3783       <para>
3784         <emphasis role="bold">Note:</emphasis> Macro definitions (if any)
3785         listed in the help screen(s), are
3786         silently truncated at the screen width, and are not wrapped.   
3787       </para>
3788       
3789       <para>
3790         
3791       </para>
3792       
3793     </sect1>
3794     
3795     <sect1 id="command-color"><anchor id="command-uncolor"/>
3796       <title>Using color and mono video attributes</title>
3797
3798       <anchor id="command-mono"/>
3799       <anchor id="command-unmono"/>
3800       <para>
3801         Usage: <muttng-doc:command name="color"/> <emphasis>object</emphasis> <emphasis>foreground</emphasis><emphasis>background</emphasis> [<emphasis>regexp</emphasis>]
3802       </para>
3803       <para>
3804         Usage: <muttng-doc:command name="color"/> index <emphasis>foreground</emphasis> <emphasis>background</emphasis><emphasis>pattern</emphasis>
3805       </para>
3806       <para>
3807         Usage: <muttng-doc:command name="uncolor"/> index <emphasis>pattern</emphasis>[<emphasis>pattern</emphasis>...]
3808       </para>
3809       
3810       <para>
3811         If your terminal supports color, you can spice up Mutt-ng by creating
3812         your own
3813         color scheme.  To define the color of an object (type of information),
3814         you
3815         must specify both a foreground color <emphasis role="bold">and</emphasis> a background color (it is not
3816         possible to only specify one or the other).
3817       </para>
3818       
3819       <para>
3820         <emphasis>object</emphasis> can be one of:
3821       </para>
3822       
3823       <para>
3824         
3825         <itemizedlist>
3826           <listitem>
3827             
3828             <para>
3829               attachment
3830             </para>
3831           </listitem>
3832           <listitem>
3833             
3834             <para>
3835               body (match <emphasis>regexp</emphasis> in the body of messages)
3836             </para>
3837           </listitem>
3838           <listitem>
3839             
3840             <para>
3841               bold (highlighting bold patterns in the body of messages)
3842             </para>
3843           </listitem>
3844           <listitem>
3845             
3846             <para>
3847               error (error messages printed by Mutt-ng)
3848             </para>
3849           </listitem>
3850           <listitem>
3851             
3852             <para>
3853               header (match <emphasis>regexp</emphasis> in the message header)
3854             </para>
3855           </listitem>
3856           <listitem>
3857             
3858             <para>
3859               hdrdefault (default color of the message header in the pager)
3860             </para>
3861           </listitem>
3862           <listitem>
3863             
3864             <para>
3865               index (match <emphasis>pattern</emphasis> in the message index)
3866             </para>
3867           </listitem>
3868           <listitem>
3869             
3870             <para>
3871               indicator (arrow or bar used to indicate the current item in a
3872               menu)
3873             </para>
3874           </listitem>
3875           <listitem>
3876             
3877             <para>
3878               markers (the ``+'' markers at the beginning of wrapped lines in
3879               the pager)
3880             </para>
3881           </listitem>
3882           <listitem>
3883             
3884             <para>
3885               message (informational messages)
3886             </para>
3887           </listitem>
3888           <listitem>
3889             
3890             <para>
3891               normal
3892             </para>
3893           </listitem>
3894           <listitem>
3895             
3896             <para>
3897               quoted (text matching <muttng-doc:varref name="quote_regexp" link="quote-regexp"/> in the body of a message)
3898             </para>
3899           </listitem>
3900           <listitem>
3901             
3902             <para>
3903               quoted1, quoted2, ..., quoted<emphasis role="bold">N</emphasis>
3904               (higher levels of quoting)
3905             </para>
3906           </listitem>
3907           <listitem>
3908             
3909             <para>
3910               search (highlighting of words in the pager)
3911             </para>
3912           </listitem>
3913           <listitem>
3914             
3915             <para>
3916               signature
3917             </para>
3918           </listitem>
3919           <listitem>
3920             
3921             <para>
3922               status (mode lines used to display info about the mailbox or
3923               message)
3924             </para>
3925           </listitem>
3926           <listitem>
3927             
3928             <para>
3929               tilde (the ``~'' used to pad blank lines in the pager)
3930             </para>
3931           </listitem>
3932           <listitem>
3933             
3934             <para>
3935               tree (thread tree drawn in the message index and attachment menu)
3936             </para>
3937           </listitem>
3938           <listitem>
3939             
3940             <para>
3941               underline (highlighting underlined patterns in the body of
3942               messages)
3943             </para>
3944           </listitem>
3945           
3946         </itemizedlist>
3947         
3948       </para>
3949       
3950       <para>
3951         <emphasis>foreground</emphasis> and <emphasis>background</emphasis> can
3952         be one of the following:
3953       </para>
3954       
3955       <para>
3956         
3957         <itemizedlist>
3958           <listitem>
3959             
3960             <para>
3961               white
3962             </para>
3963           </listitem>
3964           <listitem>
3965             
3966             <para>
3967               black
3968             </para>
3969           </listitem>
3970           <listitem>
3971             
3972             <para>
3973               green
3974             </para>
3975           </listitem>
3976           <listitem>
3977             
3978             <para>
3979               magenta
3980             </para>
3981           </listitem>
3982           <listitem>
3983             
3984             <para>
3985               blue
3986             </para>
3987           </listitem>
3988           <listitem>
3989             
3990             <para>
3991               cyan
3992             </para>
3993           </listitem>
3994           <listitem>
3995             
3996             <para>
3997               yellow
3998             </para>
3999           </listitem>
4000           <listitem>
4001             
4002             <para>
4003               red
4004             </para>
4005           </listitem>
4006           <listitem>
4007             
4008             <para>
4009               default
4010             </para>
4011           </listitem>
4012           <listitem>
4013             
4014             <para>
4015               color<emphasis>x</emphasis>
4016             </para>
4017           </listitem>
4018           
4019         </itemizedlist>
4020         
4021       </para>
4022       
4023       <para>
4024         <emphasis>foreground</emphasis> can optionally be prefixed with the
4025         keyword <literal>bright</literal> to make
4026         the foreground color boldfaced (e.g., <literal>brightred</literal>).
4027       </para>
4028       
4029       <para>
4030         If your terminal supports it, the special keyword <emphasis>default</emphasis> can be
4031         used as a transparent color.  The value <emphasis>brightdefault</emphasis> is also valid.
4032         If Mutt-ng is linked against the <emphasis>S-Lang</emphasis> library,
4033         you also need to set
4034         the <muttng-doc:envvar name="COLORFGBG"/> environment variable to the default
4035         colors of your
4036         terminal for this to work; for example (for Bourne-like shells):
4037       </para>
4038       
4039       <para>
4040         
4041         <screen>
4042 set COLORFGBG="green;black"
4043 export COLORFGBG</screen>
4044         
4045       </para>
4046       
4047       <para>
4048         <emphasis role="bold">Note:</emphasis> The <emphasis>S-Lang</emphasis>
4049         library requires you to use the <emphasis>lightgray</emphasis>
4050         and <emphasis>brown</emphasis> keywords instead of <emphasis>white</emphasis> and <emphasis>
4051           yellow
4052         </emphasis>
4053         when
4054         setting this variable.
4055       </para>
4056       
4057       <para>
4058         <emphasis role="bold">Note:</emphasis> The uncolor command can be
4059         applied to the index object only.  It
4060         removes entries from the list. You <emphasis role="bold">must</emphasis> specify the same pattern
4061         specified in the color command for it to be removed.  The pattern ``*''
4062         is
4063         a special token which means to clear the color index list of all
4064         entries.
4065       </para>
4066       
4067       <para>
4068         Mutt-ng also recognizes the keywords <emphasis>color0</emphasis>, <emphasis>
4069           color1
4070         </emphasis>
4071         ,...,
4072         <emphasis>color</emphasis><emphasis role="bold">N-1</emphasis> (<emphasis role="bold">
4073           N
4074         </emphasis>
4075         being the number of colors supported
4076         by your terminal).  This is useful when you remap the colors for your
4077         display (for example by changing the color associated with <emphasis>
4078           color2
4079         </emphasis>
4080         for your xterm), since color names may then lose their normal meaning.
4081       </para>
4082       
4083       <para>
4084         If your terminal does not support color, it is still possible change
4085         the video
4086         attributes through the use of the ``mono'' command:
4087       </para>
4088       
4089       <para>
4090         Usage: <muttng-doc:command name="mono"/> <emphasis>&lt;object&gt; &lt;attribute&gt;</emphasis>[<emphasis>regexp</emphasis>]
4091       </para>
4092       <para>
4093         Usage: <muttng-doc:command name="mono"/> index <emphasis>attribute</emphasis> <emphasis>pattern</emphasis>
4094       </para>
4095       <para>
4096         Usage: <muttng-doc:command name="unmono"/> index <emphasis>pattern</emphasis> [<emphasis>pattern</emphasis>...]
4097       </para>
4098       
4099       <para>
4100         where <emphasis>attribute</emphasis> is one of the following:
4101       </para>
4102       
4103       <para>
4104         
4105         <itemizedlist>
4106           <listitem>
4107             
4108             <para>
4109               none
4110             </para>
4111           </listitem>
4112           <listitem>
4113             
4114             <para>
4115               bold
4116             </para>
4117           </listitem>
4118           <listitem>
4119             
4120             <para>
4121               underline
4122             </para>
4123           </listitem>
4124           <listitem>
4125             
4126             <para>
4127               reverse
4128             </para>
4129           </listitem>
4130           <listitem>
4131             
4132             <para>
4133               standout
4134             </para>
4135           </listitem>
4136           
4137         </itemizedlist>
4138         
4139       </para>
4140       
4141       <para>
4142         
4143       </para>
4144       
4145     </sect1>
4146     
4147     <sect1 id="command-ignore"><anchor id="command-unignore"/>
4148       <title>Ignoring (weeding) unwanted message headers</title>
4149
4150       <para>
4151         Usage: <muttng-doc:command name="ignore"/> <emphasis>pattern</emphasis> [<emphasis>pattern</emphasis>...]
4152       </para>
4153
4154       <para>
4155         Usage: <muttng-doc:command name="unignore"/> <emphasis>pattern</emphasis> [<emphasis>pattern</emphasis>...]
4156       </para>
4157  
4158       <para>
4159         Messages often have many header fields added by automatic processing
4160         systems,
4161         or which may not seem useful to display on the screen.  This command
4162         allows
4163         you to specify header fields which you don't normally want to see.
4164       </para>
4165       
4166       <para>
4167         You do not need to specify the full header field name.  For example,
4168         ``ignore content-'' will ignore all header fields that begin with the
4169         pattern
4170         ``content-''. ``ignore *'' will ignore all headers.
4171       </para>
4172       
4173       <para>
4174         To remove a previously added token from the list, use the ``unignore''
4175         command.
4176         The ``unignore'' command will make Mutt-ng display headers with the
4177         given pattern.
4178         For example, if you do ``ignore x-'' it is possible to ``unignore
4179         x-mailer''.
4180       </para>
4181       
4182       <para>
4183         ``unignore *'' will remove all tokens from the ignore list.
4184       </para>
4185       
4186       <para>
4187         For example:
4188         
4189         <screen>
4190 # Sven's draconian header weeding
4191 ignore *
4192 unignore from date subject to cc
4193 unignore organization organisation x-mailer: x-newsreader: x-mailing-list:
4194 unignore posted-to:</screen>
4195         
4196       </para>
4197       
4198       <para>
4199         
4200       </para>
4201       
4202     </sect1>
4203     
4204     <sect1 id="command-alternates"><anchor id="command-unalternates"/>
4205       <title>Alternative addresses</title>
4206       
4207       <para>
4208         Usage: <muttng-doc:command name="alternates"/> <emphasis>regexp</emphasis> [<emphasis>regexp</emphasis>...]
4209       </para>
4210
4211       <para>
4212         Usage: <muttng-doc:command name="unalternates"/> <emphasis>regexp</emphasis> [<emphasis>regexp</emphasis>...]
4213       </para>
4214  
4215       <para>
4216         With various functions, mutt will treat messages differently,
4217         depending on whether you sent them or whether you received them from
4218         someone else.  For instance, when replying to a message that you
4219         sent to a different party, mutt will automatically suggest to send
4220         the response to the original message's recipients--responding to
4221         yourself won't make much sense in many cases.
4222         (See <muttng-doc:varref name="reply_to" link="reply-to"/>.)
4223       </para>
4224       
4225       <para>
4226         Many users receive e-mail under a number of different addresses. To
4227         fully use mutt's features here, the program must be able to
4228         recognize what e-mail addresses you receive mail under. That's the
4229         purpose of the <literal>alternates</literal> command: It takes a list
4230         of regular
4231         expressions, each of which can identify an address under which you
4232         receive e-mail.
4233       </para>
4234       
4235       <para>
4236         The <literal>unalternates</literal> command can be used to write
4237         exceptions to
4238         <literal>alternates</literal> patterns. If an address matches something
4239         in an
4240         <literal>alternates</literal> command, but you nonetheless do not think
4241         it is
4242         from you, you can list a more precise pattern under an <literal>
4243           unalternates
4244         </literal>
4245         command.
4246       </para>
4247       
4248       <para>
4249         To remove a regular expression from the <literal>alternates</literal>
4250         list, use the
4251         <literal>unalternates</literal> command with exactly the same <emphasis>
4252           regexp
4253         </emphasis>
4254         .
4255         Likewise, if the <emphasis>regexp</emphasis> for a <literal>alternates</literal> command matches
4256         an entry on the <literal>unalternates</literal> list, that <literal>
4257           unalternates
4258         </literal>
4259         entry will be removed. If the <emphasis>regexp</emphasis> for <literal>
4260           unalternates
4261         </literal>
4262         is ``*'', <emphasis>all entries</emphasis> on <literal>alternates</literal> will be removed.
4263       </para>
4264       
4265       <para>
4266         
4267       </para>
4268       
4269     </sect1>
4270     
4271     <sect1 id="format-flowed">
4272       <title>Format = Flowed</title>
4273       
4274       <sect2 id="format-flowed-intro">
4275         <title>Introduction</title>
4276         
4277         <para>
4278           Mutt-ng contains support for so-called <literal>format=flowed</literal> messages.
4279           In the beginning of email, each message had a fixed line width, and
4280           it was enough for displaying them on fixed-size terminals. But times
4281           changed, and nowadays hardly anybody still uses fixed-size terminals:
4282           more people nowaydays use graphical user interfaces, with dynamically
4283           resizable windows. This led to the demand of a new email format that
4284           makes it possible for the email client to make the email look nice
4285           in a resizable window without breaking quoting levels and creating
4286           an incompatible email format that can also be displayed nicely on
4287           old fixed-size terminals.
4288         </para>
4289         
4290         <para>
4291           For introductory information on <literal>format=flowed</literal>
4292           messages, see
4293           <muttng-doc:web url="http://www.joeclark.org/ffaq.html"/>.
4294         </para>
4295         
4296       </sect2>
4297       
4298       <sect2 id="format-flowed-display">
4299         <title>Receiving: Display Setup</title>
4300         
4301         <para>
4302           When you receive emails that are marked as <literal>format=flowed</literal>
4303           messages, and is formatted correctly, mutt-ng will try to reformat
4304           the message to optimally fit on your terminal. If you want a fixed
4305           margin on the right side of your terminal, you can set the
4306           following:
4307         </para>
4308         
4309         <para>
4310           
4311           <screen>
4312 set wrapmargin = 10</screen>
4313           
4314         </para>
4315         
4316         <para>
4317           The code above makes the line break 10 columns before the right
4318           side of the terminal.
4319         </para>
4320         
4321         <para>
4322           If your terminal is so wide that the lines are embarrassingly long,
4323           you can also set a maximum line length:
4324         </para>
4325         
4326         <para>
4327           
4328           <screen>
4329 set max_line_length = 120</screen>
4330           
4331         </para>
4332         
4333         <para>
4334           The example above will give you lines not longer than 120
4335           characters.
4336         </para>
4337         
4338         <para>
4339           When you view at <literal>format=flowed</literal> messages, you will
4340           often see
4341           the quoting hierarchy like in the following example:
4342         </para>
4343         
4344         <para>
4345           
4346           <screen>
4347 &gt;Bill, can you please send last month's progress report to Mr. 
4348 &gt;Morgan? We also urgently need the cost estimation for the new 
4349 &gt;production server that we want to set up before our customer's 
4350 &gt;project will go live.</screen>
4351           
4352         </para>
4353         
4354         <para>
4355           This obviously doesn't look very nice, and it makes it very
4356           hard to differentiate between text and quoting character. The
4357           solution is to configure mutt-ng to "stuff" the quoting:
4358         </para>
4359         
4360         <para>
4361           
4362           <screen>
4363 set stuff_quoted</screen>
4364           
4365         </para>
4366         
4367         <para>
4368           This will lead to a nicer result that is easier to read:
4369         </para>
4370         
4371         <para>
4372           
4373           <screen>
4374 &gt; Bill, can you please send last month's progress report to Mr. 
4375 &gt; Morgan? We also urgently need the cost estimation for the new 
4376 &gt; production server that we want to set up before our customer's
4377 &gt; project will go live.</screen>
4378           
4379         </para>
4380         
4381       </sect2>
4382       
4383       <sect2 id="format-flowed-send">
4384         <title>Sending</title>
4385         
4386         <para>
4387           If you want mutt-ng to send emails with <literal>format=flowed</literal> set, you
4388           need to explicitly set it:
4389         </para>
4390         
4391         <para>
4392           
4393           <screen>
4394 set text_flowed</screen>
4395           
4396         </para>
4397         
4398         <para>
4399           Additionally, you have to use an editor which supports writing
4400           <literal>format=flowed</literal>-conforming emails. For <muttng-doc:man name="vim"/>, this is
4401           done by
4402           adding <literal>w</literal> to the formatoptions (see <literal>:h
4403             formatoptions
4404           </literal>
4405           and
4406           <literal>:h fo-table</literal>) when writing emails.
4407         </para>
4408         
4409         <para>
4410           Also note that <emphasis>format=flowed</emphasis> knows about
4411           ``space-stuffing'',
4412           that is, when sending messages, some kinds of lines have to be
4413           indented with a single space on the sending side. On the receiving
4414           side, the first space (if any) is removed. As a consequence and in
4415           addition to the above simple setting, please keep this in mind when
4416           making manual formattings within the editor. Also note that mutt-ng
4417           currently violates the standard (<muttng-doc:rfc num="3676"/>) as it does not
4418           space-stuff lines starting with:
4419         </para>
4420         
4421         <para>
4422           
4423           <itemizedlist>
4424             <listitem>
4425               <para>
4426                 <literal>&gt;</literal> This is <emphasis>not</emphasis> the
4427                 quote character but a right
4428                 angle used for other reasons
4429                 
4430               </para>
4431             </listitem>
4432           </itemizedlist>
4433           
4434         </para>
4435         
4436         <para>
4437           Please make sure that you manually prepend a space to each of them.
4438         </para>
4439         
4440       </sect2>
4441       
4442       <sect2 id="format-flowed-notes">
4443         <title>Additional Notes</title>
4444         
4445         <para>
4446           For completeness, the <muttng-doc:varref name="delete_space" link="delete-space"/> variable provides the mechanism
4447           to generate a <literal>DelSp=yes</literal> parameter on <emphasis>
4448             outgoing
4449           </emphasis>
4450           messages.
4451           According to the standard, clients receiving a <literal>format=flowed</literal>
4452           messages should delete the last space of a flowed line but still
4453           interpret the line as flowed. Because flowed lines usually contain
4454           only one space at the end, this parameter would make the receiving
4455           client concatenate the last word of the previous with the first of
4456           the current line <emphasis>without</emphasis> a space. This makes
4457           ordinary text
4458           unreadable and is intended for languages rarely using spaces. So
4459           please use this setting only if you're sure what you're doing.
4460         </para>
4461         
4462         <para>
4463           
4464         </para>
4465         
4466       </sect2>
4467       
4468     </sect1>
4469     
4470     <sect1 id="command-lists"><anchor id="command-unlists"/><anchor id="command-subscribe"/>
4471       <anchor id="command-unsubscribe"/>
4472       <title>Mailing lists</title>
4473       
4474       <para>
4475         Usage: <muttng-doc:command name="lists"/> <emphasis>regexp</emphasis> [<emphasis>regexp</emphasis>...]
4476       </para>
4477       <para>
4478         Usage: <muttng-doc:command name="unlists"/> <emphasis>regexp</emphasis> [<emphasis>regexp</emphasis>...]
4479       </para>
4480       <para>
4481         Usage: <muttng-doc:command name="subscribe"/> <emphasis>regexp</emphasis> [<emphasis>regexp</emphasis>...]
4482       </para>
4483       <para>
4484         Usage: <muttng-doc:command name="unsubscribe"/> <emphasis>regexp</emphasis> [<emphasis>regexp</emphasis>...]
4485       </para>
4486       
4487       <para>
4488         Mutt-ng has a few nice features for <link linkend="using-lists">using-lists</link>. 
4489         In order to take advantage of them, you must
4490         specify which addresses belong to mailing lists, and which mailing
4491         lists you are subscribed to.  Once you have done this, the
4492         <link linkend="func-list-reply">list-reply</link>
4493         function will work for all known lists.
4494         Additionally, when you send a message to a subscribed list, mutt will
4495         add a Mail-Followup-To header to tell other users' mail user agents
4496         not to send copies of replies to your personal address.   Note that
4497         the Mail-Followup-To header is a non-standard extension which is not
4498         supported by all mail user agents.  Adding it is not bullet-proof
4499         against
4500         receiving personal CCs of list messages.  Also note that the generation
4501         of the Mail-Followup-To header is controlled by the
4502         <muttng-doc:varref name="followup_to" link="followup-to"/>
4503         configuration variable.
4504       </para>
4505       
4506       <para>
4507         More precisely, Mutt-ng maintains lists of patterns for the addresses
4508         of known and subscribed mailing lists.  Every subscribed mailing
4509         list is known. To mark a mailing list as known, use the ``lists''
4510         command.  To mark it as subscribed, use ``subscribe''.
4511       </para>
4512       
4513       <para>
4514         You can use regular expressions with both commands.  To mark all
4515         messages sent to a specific bug report's address on mutt's bug
4516         tracking system as list mail, for instance, you could say
4517         ``subscribe [0-9]*@bugs.guug.de''.  Often, it's sufficient to just
4518         give a portion of the list's e-mail address.
4519       </para>
4520       
4521       <para>
4522         Specify as much of the address as you need to to remove ambiguity.  For
4523         example, if you've subscribed to the Mutt-ng mailing list, you will
4524         receive mail
4525         addressed to <emphasis>mutt-users@mutt.org</emphasis>.  So, to tell
4526         Mutt-ng that this is a
4527         mailing list, you could add ``lists mutt-users'' to your
4528         initialization file.  To tell mutt that you are subscribed to it,
4529         add ``subscribe mutt-users'' to your initialization file instead.
4530         If you also happen to get mail from someone whose address is
4531         <emphasis>mutt-users@example.com</emphasis>, you could use ``lists
4532         mutt-users@mutt\\.org'' 
4533         or ``subscribe mutt-users@mutt\\.org'' to
4534         match only mail from the actual list.
4535       </para>
4536       
4537       <para>
4538         The ``unlists'' command is used to remove a token from the list of
4539         known and subscribed mailing-lists. Use ``unlists *'' to remove all
4540         tokens.
4541       </para>
4542       
4543       <para>
4544         To remove a mailing list from the list of subscribed mailing lists,
4545         but keep it on the list of known mailing lists, use ``unsubscribe''.
4546       </para>
4547       
4548       <para>
4549         
4550       </para>
4551       
4552     </sect1>
4553     
4554     <sect1 id="mbox-hook">
4555       <title>Using Multiple spool mailboxes</title>
4556       
4557       <para>
4558         Usage: <muttng-doc:hook name="mbox"/> [!]<emphasis>pattern</emphasis> <emphasis>mailbox</emphasis>
4559       </para>
4560       
4561       <para>
4562         This command is used to move read messages from a specified mailbox to
4563         adifferent mailbox automatically when you quit or change folders.
4564         <emphasis>pattern</emphasis> is a regular expression specifying the
4565         mailbox to treat as a
4566         ``spool'' mailbox and <emphasis>mailbox</emphasis> specifies where mail
4567         should be saved when
4568         read.
4569       </para>
4570       
4571       <para>
4572         Unlike some of the other <emphasis>hook</emphasis> commands, only the <emphasis>
4573           first
4574         </emphasis>
4575         matching
4576         pattern is used (it is not possible to save read mail in more than a
4577         single
4578         mailbox).
4579       </para>
4580       
4581       <para>
4582         
4583       </para>
4584       
4585     </sect1>
4586     
4587     <sect1 id="command-mailboxes"><anchor id="command-unmailboxes"/>
4588       <title>Defining mailboxes which receive mail</title>
4589
4590       <para>
4591         Usage: <muttng-doc:command name="mailboxes"/> [!]<emphasis>filename</emphasis> [<emphasis>filename</emphasis>...]
4592       </para>
4593       <para>
4594         Usage: <muttng-doc:command name="unmailboxes"/> [!]<emphasis>filename</emphasis> [<emphasis>filename</emphasis>...]
4595       </para>
4596  
4597       <para>
4598         This command specifies folders which can receive mail and
4599         which will be checked for new messages.  By default, the
4600         main menu status bar displays how many of these folders have
4601         new messages.
4602       </para>
4603       
4604       <para>
4605         When changing folders, pressing <emphasis>space</emphasis> will cycle
4606         through folders with new mail.
4607       </para>
4608       
4609       <para>
4610         Pressing TAB in the directory browser will bring up a menu showing the
4611         files
4612         specified by the <literal>mailboxes</literal> command, and indicate
4613         which contain new
4614         messages.  Mutt-ng will automatically enter this mode when invoked from
4615         the
4616         command line with the <literal>-y</literal> option.
4617       </para>
4618       
4619       <para>
4620         The ``unmailboxes'' command is used to remove a token from the list
4621         of folders which receive mail. Use ``unmailboxes *'' to remove all
4622         tokens.
4623       </para>
4624       
4625       <para>
4626         <emphasis role="bold">Note:</emphasis> new mail is detected by
4627         comparing the last modification time to
4628         the last access time.  Utilities like <literal>biff</literal> or <literal>
4629           frm
4630         </literal>
4631         or any other
4632         program which accesses the mailbox might cause Mutt-ng to never detect
4633         new mail
4634         for that mailbox if they do not properly reset the access time.  Backup
4635         tools are another common reason for updated access times.
4636       </para>
4637       
4638       <para>
4639         <emphasis role="bold">Note:</emphasis> the filenames in the <literal>
4640           mailboxes
4641         </literal>
4642         command are resolved when
4643         the command is executed, so if these names contain <link linkend="shortcuts">shortcuts</link>
4644         (such as ``='' and ``!''), any variable
4645         definition that affect these characters (like <muttng-doc:varref name="folder"/>
4646         and <muttng-doc:varref name="spoolfile"/>)
4647         should be executed before the <literal>mailboxes</literal> command.
4648       </para>
4649       
4650       <para>
4651         
4652       </para>
4653       
4654     </sect1>
4655     
4656     <sect1 id="command-my_hdr"><anchor id="command-unmy_hdr"/>
4657       <title>User defined headers</title>
4658       
4659       <para>
4660         Usage: <muttng-doc:command name="my_hdr"/> <emphasis>string</emphasis>
4661       </para>
4662       <para>
4663         Usage: <muttng-doc:command name="unmy_hdr"/> <emphasis>field</emphasis> [<emphasis>field</emphasis>...]
4664       </para>
4665       
4666       <para>
4667         The ``my_hdr'' command allows you to create your own header
4668         fields which will be added to every message you send.
4669       </para>
4670       
4671       <para>
4672         For example, if you would like to add an ``Organization:'' header field
4673         to
4674         all of your outgoing messages, you can put the command
4675       </para>
4676       
4677       <para>
4678         <screen>
4679 my_hdr Organization: A Really Big Company, Anytown, USA</screen>
4680       </para>
4681       
4682       <para>
4683         in your <literal>.muttrc</literal>.
4684       </para>
4685       
4686       <para>
4687         <emphasis role="bold">Note:</emphasis>  space characters are <emphasis>
4688           not
4689         </emphasis>
4690         allowed between the keyword and
4691         the colon (``:'').  The standard for electronic mail (<muttng-doc:rfc num="822"/>) says that
4692         space is illegal there, so Mutt-ng enforces the rule.
4693       </para>
4694       
4695       <para>
4696         If you would like to add a header field to a single message, you should
4697         either set the <muttng-doc:varref name="edit_headers" link="edit-headers"/>
4698         variable,
4699         or use the <emphasis>edit-headers</emphasis> function (default: ``E'')
4700         in the send-menu so
4701         that you can edit the header of your message along with the body.
4702       </para>
4703       
4704       <para>
4705         To remove user defined header fields, use the ``unmy_hdr''
4706         command.  You may specify an asterisk (``*'') to remove all header
4707         fields, or the fields to remove.  For example, to remove all ``To'' and
4708         ``Cc'' header fields, you could use:
4709       </para>
4710       
4711       <para>
4712         <screen>
4713 unmy_hdr to cc</screen>
4714       </para>
4715       
4716       <para>
4717         
4718       </para>
4719       
4720     </sect1>
4721     
4722     <sect1 id="command-hdr_order"><anchor id="command-unhdr_order"/>
4723       <title>Defining the order of headers when viewing messages</title>
4724       
4725       <para>
4726         Usage: <muttng-doc:command name="hdr_order"/> <emphasis>header1</emphasis><emphasis>header2</emphasis> <emphasis>header3</emphasis>
4727       </para>
4728       
4729       <para>
4730         With this command, you can specify an order in which mutt will attempt
4731         to present headers to you when viewing messages.
4732       </para>
4733       
4734       <para>
4735         ``unhdr_order *'' will clear all previous headers from the order
4736         list,
4737         thus removing the header order effects set by the system-wide startup
4738         file.
4739       </para>
4740       
4741       <para>
4742         
4743         <screen>
4744 hdr_order From Date: From: To: Cc: Subject:</screen>
4745         
4746       </para>
4747       
4748       <para>
4749         
4750       </para>
4751       
4752     </sect1>
4753     
4754     <sect1 id="save-hook">
4755       <title>Specify default save filename</title>
4756       
4757       <para>
4758         Usage: <muttng-doc:hook name="save"/> [!]<emphasis>pattern</emphasis> <emphasis>filename</emphasis>
4759       </para>
4760       
4761       <para>
4762         This command is used to override the default filename used when saving
4763         messages.  <emphasis>filename</emphasis> will be used as the default
4764         filename if the message is
4765         <emphasis>From:</emphasis> an address matching <emphasis>regexp</emphasis> or if you are the author and the
4766         message is addressed <emphasis>to:</emphasis> something matching <emphasis>
4767           regexp
4768         </emphasis>
4769         .
4770       </para>
4771       
4772       <para>
4773         See <muttng-doc:hook name="pattern"/> for information on
4774         the exact format of <emphasis>pattern</emphasis>.
4775       </para>
4776       
4777       <para>
4778         Examples:
4779       </para>
4780       
4781       <para>
4782         
4783         <screen>
4784 save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins
4785 save-hook aol\\.com$ +spam</screen>
4786         
4787       </para>
4788       
4789       <para>
4790         Also see the <muttng-doc:hook name="fcc-save"/>
4791         command.
4792       </para>
4793       
4794       <para>
4795         
4796       </para>
4797       
4798     </sect1>
4799     
4800     <sect1 id="fcc-hook">
4801       <title>Specify default Fcc: mailbox when composing</title>
4802       
4803       <para>
4804         Usage: <muttng-doc:hook name="fcc"/> [!]<emphasis>pattern</emphasis> <emphasis>mailbox</emphasis>
4805       </para>
4806       
4807       <para>
4808         This command is used to save outgoing mail in a mailbox other than
4809         <muttng-doc:varref name="record"/>. Mutt-ng searches the initial
4810         list of
4811         message recipients for the first matching <emphasis>regexp</emphasis>
4812         and uses <emphasis>mailbox</emphasis>
4813         as the default Fcc: mailbox.  If no match is found the message will be
4814         saved
4815         to <muttng-doc:varref name="record"/> mailbox.
4816       </para>
4817       
4818       <para>
4819         See <muttng-doc:hook name="pattern"/> for information on
4820         the exact format of <emphasis>pattern</emphasis>.
4821       </para>
4822       
4823       <para>
4824         Example: <literal><muttng-doc:hook name="fcc"/> [@.]aol\\.com$
4825           +spammers
4826         </literal>
4827       </para>
4828       
4829       <para>
4830         The above will save a copy of all messages going to the aol.com domain
4831         to
4832         the `+spammers' mailbox by default.  Also see the <muttng-doc:hook name="fcc-save"/>
4833         command.
4834       </para>
4835       
4836       <para>
4837         
4838       </para>
4839       
4840     </sect1>
4841     
4842     <sect1 id="fcc-save-hook">
4843       <title>Specify default save filename and default Fcc: mailbox at once</title>
4844       
4845       <para>
4846         Usage: <literal><muttng-doc:hook name="fcc-save"/></literal> [!]<emphasis>pattern</emphasis> <emphasis>mailbox</emphasis>
4847       </para>
4848       
4849       <para>
4850         This command is a shortcut, equivalent to doing both a <muttng-doc:hook name="fcc"/>
4851         and a <muttng-doc:hook name="save"/> with its arguments.
4852       </para>
4853       
4854       <para>
4855         
4856       </para>
4857       
4858     </sect1>
4859     
4860     <sect1 id="send-hook">
4861       <title>Change settings based upon message recipients</title>
4862
4863       <anchor id="reply-hook"/>
4864       <anchor id="send2-hook"/>
4865       <para>
4866         Usage: <muttng-doc:hook name="reply"/> [!]<emphasis>pattern</emphasis> <emphasis>command</emphasis>
4867       </para>
4868       <para>
4869         Usage: <muttng-doc:hook name="send"/> [!]<emphasis>pattern</emphasis> <emphasis>command</emphasis>
4870       </para>
4871       <para>
4872         Usage: <muttng-doc:hook name="send2"/> [!]<emphasis>pattern</emphasis> <emphasis>command</emphasis>
4873       </para>
4874       
4875       <para>
4876         These commands can be used to execute arbitrary configuration commands
4877         based
4878         upon recipients of the message.  <emphasis>pattern</emphasis> is a
4879         regular expression
4880         matching the desired address.  <emphasis>command</emphasis> is executed
4881         when <emphasis>regexp</emphasis>
4882         matches recipients of the message.
4883       </para>
4884       
4885       <para>
4886         <muttng-doc:hook name="reply"/> is matched against the message you are <emphasis>
4887           replying
4888         </emphasis>
4889         <emphasis role="bold">to</emphasis>, instead of the message you are <emphasis>
4890           sending
4891         </emphasis>
4892         .<muttng-doc:hook name="send"/> is
4893         matched against all messages, both <emphasis>new</emphasis> and <emphasis>
4894           replies
4895         </emphasis>
4896         .<emphasis role="bold">Note:</emphasis>
4897         <muttng-doc:hook name="reply"/>s are matched <emphasis role="bold">before</emphasis> the
4898         <muttng-doc:hook name="send"/>, <emphasis role="bold">regardless</emphasis>
4899         of the order specified in the users's configuration file.
4900       </para>
4901       
4902       <para>
4903         <muttng-doc:hook name="send2"/> is matched every time a message is
4904         changed, either
4905         by editing it, or by using the compose menu to change its recipients
4906         or subject.  <muttng-doc:hook name="send2"/> is executed after <muttng-doc:hook name="send"/>
4907         ,and
4908         can, e.g., be used to set parameters such as the <muttng-doc:varref name="sendmail"/>
4909         variable depending on the message's sender
4910         address.
4911       </para>
4912       
4913       <para>
4914         For each type of <muttng-doc:hook name="send"/> or <muttng-doc:hook name="reply"/>, when multiple matches
4915         occur, commands are executed in the order they are specified in the
4916         muttrc
4917         (for that type of hook).
4918       </para>
4919       
4920       <para>
4921         See <muttng-doc:hook name="pattern"/> for information on
4922         the exact format of <emphasis>pattern</emphasis>.
4923       </para>
4924       
4925       <para>
4926         Example: <literal>send-hook mutt &quot;set mime_forward
4927           signature=''&quot;
4928         </literal>
4929       </para>
4930       
4931       <para>
4932         Another typical use for this command is to change the values of the
4933         <muttng-doc:varref name="attribution"/>,
4934         <muttng-doc:varref name="signature"/> and <muttng-doc:varref
4935           name="locale"/>
4936         variables in order to change the language of the attributions and
4937         signatures based upon the recipients.
4938       </para>
4939       
4940       <para>
4941         <emphasis role="bold">Note:</emphasis> the <muttng-doc:hook name="send"/>'s are only
4942         executed ONCE after getting the initial
4943         list of recipients.  Adding a recipient after replying or editing the
4944         message will NOT cause any <muttng-doc:hook name="send"/> to be executed.  Also note that
4945         my_hdr commands which modify recipient headers, or the message's
4946         subject, don't have any effect on the current message when executed
4947         from a <muttng-doc:hook name="send"/>.
4948       </para>
4949       
4950       <para>
4951         
4952       </para>
4953       
4954     </sect1>
4955     
4956     <sect1 id="message-hook">
4957       <title>Change settings before formatting a message</title>
4958       
4959       <para>
4960         Usage: <muttng-doc:hook name="message"/> [!]<emphasis>pattern</emphasis> <emphasis>command</emphasis>
4961       </para>
4962       
4963       <para>
4964         This command can be used to execute arbitrary configuration commands
4965         before viewing or formatting a message based upon information about the
4966         message.
4967         <emphasis>command</emphasis> is executed if the <emphasis>pattern</emphasis> matches the message to be
4968         displayed. When multiple matches occur, commands are executed in the
4969         order
4970         they are specified in the muttrc.
4971       </para>
4972       
4973       <para>
4974         See <muttng-doc:hook name="pattern"/> for
4975         information on the exact format of <emphasis>pattern</emphasis>.
4976       </para>
4977       
4978       <para>
4979         Example:
4980         
4981         <screen>
4982 message-hook <muttng-doc:pattern name="A"/> 'set pager=builtin'
4983 message-hook '<muttng-doc:pattern name="f"/> freshmeat-news' 'set pager="less \"+/^  subject:.*\""'</screen>
4984         
4985       </para>
4986       
4987       <para>
4988         
4989       </para>
4990       
4991     </sect1>
4992     
4993     <sect1 id="crypt-hook">
4994       <title>Choosing the cryptographic key of the recipient</title>
4995       
4996       <para>
4997         Usage: <muttng-doc:hook name="crypt"/> <emphasis>pattern</emphasis> <emphasis>keyid</emphasis>
4998       </para>
4999       
5000       <para>
5001         When encrypting messages with PGP or OpenSSL, you may want to associate
5002         a certain
5003         key with a given e-mail address automatically, either because the
5004         recipient's public key can't be deduced from the destination address,
5005         or because, for some reasons, you need to override the key Mutt-ng
5006         wouldnormally use.  The <muttng-doc:hook name="crypt"/> command provides a method by which
5007         you can
5008         specify the ID of the public key to be used when encrypting messages to
5009         a certain recipient.
5010       </para>
5011       
5012       <para>
5013         The meaning of "key id" is to be taken broadly in this context:  You
5014         can either put a numerical key ID here, an e-mail address, or even
5015         just a real name.
5016       </para>
5017       
5018       <para>
5019         
5020       </para>
5021       
5022     </sect1>
5023     
5024     <sect1 id="command-push">
5025       <title>Adding key sequences to the keyboard buffer</title>
5026       
5027       <para>
5028         Usage: <muttng-doc:command name="push"/> <emphasis>string</emphasis>
5029       </para>
5030       
5031       <para>
5032
5033         This command adds the named string to the keyboard buffer. The
5034         string may contain control characters, key names and function
5035         names like the sequence string in the <muttng-doc:command name="macro"/> command. You may use it to
5036         automatically run a sequence of commands at startup, or when
5037         entering certain folders. For example, the following command
5038         will automatically collapse all threads when entering a folder:
5039
5040         <screen>
5041 folder-hook . 'push &lt;collapse-all&gt;'
5042         </screen>
5043
5044       </para>
5045       
5046       <para>
5047         
5048       </para>
5049       
5050     </sect1>
5051     
5052     <sect1 id="command-exec">
5053       <title>Executing functions</title>
5054       
5055       <para>
5056         Usage: <muttng-doc:command name="exec"/> <emphasis>function</emphasis> [<emphasis>function</emphasis>...]
5057       </para>
5058       
5059       <para>
5060         This command can be used to execute any function. Functions are
5061         listed in the <link linkend="functions">functions</link>.
5062         ``exec function'' is equivalent to ``push &lt;function&gt;''.
5063       </para>
5064       
5065       <para>
5066         
5067       </para>
5068       
5069     </sect1>
5070     
5071     <sect1 id="command-score"><anchor id="command-unscore"/>
5072       <title>Message Scoring</title>
5073       
5074       <para>
5075         Usage: <muttng-doc:command name="score"/> <emphasis>pattern</emphasis> <emphasis>value</emphasis>
5076       </para>
5077       <para>
5078         Usage: <muttng-doc:command name="unscore"/> <emphasis>pattern</emphasis> [<emphasis>pattern</emphasis>...]
5079       </para>
5080       
5081       <para>
5082         In situations where you have to cope with a lot of emails, e.g.
5083         when you read many different mailing lists, and take part in
5084         discussions, it is always useful to have the important messages
5085         marked and the annoying messages or the ones that you aren't
5086         interested in deleted. For this purpose, mutt-ng features a
5087         mechanism called ``scoring''.
5088       </para>
5089       
5090       <para>
5091         When you use scoring, every message has a base score of 0. You
5092         can then use the <literal>score</literal> command to define patterns
5093         and a
5094         positive or negative value associated with it. When a pattern
5095         matches a message, the message's score will be raised or lowered by
5096         the amount of the value associated with the pattern.
5097       </para>
5098       
5099       <para>
5100         
5101         <screen>
5102 score "<muttng-doc:pattern name="f"/> nion@muttng\.org" 50
5103 score "<muttng-doc:pattern name="f"/> @sco\.com" -100</screen>
5104         
5105       </para>
5106       
5107       <para>
5108         If the pattern matches, it is also possible to set the score
5109         value of the current message to a certain value and then stop
5110         evaluation:
5111       </para>
5112       
5113       <para>
5114         
5115         <screen>
5116 score "<muttng-doc:pattern name="f"/> santaclaus@northpole\.int" =666</screen>
5117         
5118       </para>
5119       
5120       <para>
5121         What is important to note is that negative score values will be
5122         rounded up to 0.
5123       </para>
5124       
5125       <para>
5126         To make scoring actually useful, the score must be applied in
5127         some way.  That's what the <emphasis>score thresholds</emphasis> are
5128         for. Currently,
5129         there are three score thresholds:
5130       </para>
5131       
5132       <para>
5133         
5134         <itemizedlist>
5135           <listitem>
5136             
5137             <para>
5138               flag threshold: when a message has a score value equal or higher
5139               than the flag threshold, it will be flagged.
5140               
5141             </para>
5142           </listitem>
5143           <listitem>
5144             
5145             <para>
5146               read threshold: when a message has a score value equal or lower
5147               than the read threshold, it will be marked as read.
5148               
5149             </para>
5150           </listitem>
5151           <listitem>
5152             
5153             <para>
5154               delete threshold: when a message has a score value equal or
5155               lower than the delete threshold, it will be marked as deleted.
5156               
5157             </para>
5158           </listitem>
5159           
5160         </itemizedlist>
5161         
5162       </para>
5163       
5164       <para>
5165         These three thresholds can be set via the variables
5166         <muttng-doc:varref name="score_threshold_read" link="score-threshold-read"/>,
5167         <muttng-doc:varref name="score_threshold_flag" link="score-threshold-flag"/> and
5168         <muttng-doc:varref name="score_threshold_delete" link="score-threshold-delete"/>.
5169       </para>
5170       <para>
5171         By default,
5172         <muttng-doc:varref name="score_threshold_read" link="score-threshold-read"/> and
5173         <muttng-doc:varref name="score_threshold_delete" link="score-threshold-delete"/> 
5174         are set to
5175         <literal>-1</literal>, which means that in the default threshold
5176         configuration no
5177         message will ever get marked as read or deleted.
5178       </para>
5179       
5180       <para>
5181         Scoring gets especially interesting when combined with the <literal>
5182           color
5183         </literal>
5184         command
5185         and the <muttng-doc:pattern name="n"/> pattern:
5186       </para>
5187       
5188       <para>
5189         
5190         <screen>
5191 color index  black   yellow  "<muttng-doc:pattern name="n"/> 10-"
5192 color index  red     yellow  "<muttng-doc:pattern name="n"/> 100-"</screen>
5193         
5194       </para>
5195       
5196       <para>
5197         The rules above mark all messages with a score between 10 and 99
5198         with black and yellow, and messages with a score greater or equal
5199         100 with red and yellow. This might be unusual to you if you're used
5200         to e.g. slrn's scoring mechanism, but it is more flexible, as it
5201         visually marks different scores.
5202       </para>
5203       
5204       <para>
5205         
5206       </para>
5207       
5208     </sect1>
5209     
5210     <sect1 id="command-spam"><anchor id="command-nospam"/>
5211       <title>Spam detection</title>
5212
5213       <para>
5214         Usage: <muttng-doc:command name="spam"/> <emphasis>pattern</emphasis> <emphasis>format </emphasis>
5215       </para>
5216       <para>
5217         Usage: <muttng-doc:command name="nospam"/> <emphasis>pattern</emphasis>
5218       </para>
5219       
5220       <para>
5221         Mutt-ng has generalized support for external spam-scoring filters.
5222         By defining your spam patterns with the <literal>spam</literal> and <literal>
5223           nospam
5224         </literal>
5225         commands, you can <emphasis>limit</emphasis>, <emphasis>search</emphasis>, and <emphasis>
5226           sort
5227         </emphasis>
5228         your
5229         mail based on its spam attributes, as determined by the external
5230         filter. You also can display the spam attributes in your index
5231         display using the <literal>%H</literal> selector in the
5232         <muttng-doc:varref name="index_format" link="index-format"/>
5233         variable. (Tip: try <literal>%?H?[%H] ?</literal>
5234         to display spam tags only when they are defined for a given message.)
5235       </para>
5236       
5237       <para>
5238         Your first step is to define your external filter's spam patterns using
5239         the <literal>spam</literal> command. <emphasis>pattern</emphasis>
5240         should be a regular expression
5241         that matches a header in a mail message. If any message in the mailbox
5242         matches this regular expression, it will receive a ``spam tag'' or
5243         ``spam attribute'' (unless it also matches a <literal>nospam</literal>
5244         pattern -- see
5245         below.) The appearance of this attribute is entirely up to you, and is
5246         governed by the <emphasis>format</emphasis> parameter. <emphasis>format</emphasis> can be any static
5247         text, but it also can include back-references from the <emphasis>
5248           pattern
5249         </emphasis>
5250         expression. (A regular expression ``back-reference'' refers to a
5251         sub-expression contained within parentheses.) <literal>%1</literal> is replaced with
5252         the first back-reference in the regex, <literal>%2</literal>
5253         with the second, etc.
5254       </para>
5255       
5256       <para>
5257         If you're using multiple spam filters, a message can have more than
5258         one spam-related header. You can define <literal>spam</literal>
5259         patterns for each
5260         filter you use. If a message matches two or more of these patterns, and
5261         the $spam_separator variable is set to a string, then the
5262         message's spam tag will consist of all the <emphasis>format</emphasis>
5263         strings joined
5264         together, with the value of $spam_separator separating
5265         them.
5266       </para>
5267       
5268       <para>
5269         For example, suppose I use DCC, SpamAssassin, and PureMessage. I might
5270         define these spam settings:
5271         
5272         <screen>
5273 spam "X-DCC-.*-Metrics:.*(....)=many"         "90+/DCC-%1"
5274 spam "X-Spam-Status: Yes"                     "90+/SA"
5275 spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM"
5276 set spam_separator=", "</screen>
5277         
5278       </para>
5279       
5280       <para>
5281         If I then received a message that DCC registered with ``many'' hits
5282         under the ``Fuz2'' checksum, and that PureMessage registered with a
5283         97% probability of being spam, that message's spam tag would
5284         read<literal>90+/DCC-Fuz2, 97/PM</literal>. (The four characters before
5285         ``=many'' in a
5286         DCC report indicate the checksum used -- in this case, ``Fuz2''.)
5287       </para>
5288       
5289       <para>
5290         If the $spam_separator variable is unset, then each
5291         spam pattern match supersedes the previous one. Instead of getting
5292         joined <emphasis>format</emphasis> strings, you'll get only the last
5293         one to match.
5294       </para>
5295       
5296       <para>
5297         The spam tag is what will be displayed in the index when you use
5298         <literal>%H</literal> in the <literal>
5299           $index_format
5300         </literal>
5301         variable. It's also the
5302         string that the <muttng-doc:pattern name="H"/> pattern-matching expression
5303         matches against for
5304         <emphasis>search</emphasis> and <emphasis>limit</emphasis> functions.
5305         And it's what sorting by spam
5306         attribute will use as a sort key.
5307       </para>
5308       
5309       <para>
5310         That's a pretty complicated example, and most people's actual
5311         environments will have only one spam filter. The simpler your
5312         configuration, the more effective mutt can be, especially when it comes
5313         to sorting.
5314       </para>
5315       
5316       <para>
5317         Generally, when you sort by spam tag, mutt will sort <emphasis>
5318           lexically
5319         </emphasis>
5320         --
5321         that is, by ordering strings alphnumerically. However, if a spam tag
5322         begins with a number, mutt will sort numerically first, and lexically
5323         only when two numbers are equal in value. (This is like UNIX's
5324         <literal>sort -n</literal>.) A message with no spam attributes at all
5325         -- that is, one
5326         that didn't match <emphasis>any</emphasis> of your <literal>spam</literal> patterns -- is sorted at
5327         lowest priority. Numbers are sorted next, beginning with 0 and ranging
5328         upward. Finally, non-numeric strings are sorted, with ``a'' taking
5329         lowerpriority than ``z''. Clearly, in general, sorting by spam tags is
5330         most
5331         effective when you can coerce your filter to give you a raw number. But
5332         in case you can't, mutt can still do something useful.
5333       </para>
5334       
5335       <para>
5336         The <literal>nospam</literal> command can be used to write exceptions
5337         to <literal>spam</literal>
5338         patterns. If a header pattern matches something in a <literal>spam</literal> command,
5339         but you nonetheless do not want it to receive a spam tag, you can list
5340         amore precise pattern under a <literal>nospam</literal> command.
5341       </para>
5342       
5343       <para>
5344         If the <emphasis>pattern</emphasis> given to <literal>nospam</literal>
5345         is exactly the same as the
5346         <emphasis>pattern</emphasis> on an existing <literal>spam</literal>
5347         list entry, the effect will be to
5348         remove the entry from the spam list, instead of adding an exception.
5349         Likewise, if the <emphasis>pattern</emphasis> for a <literal>spam</literal> command matches an entry
5350         on the <literal>nospam</literal> list, that <literal>nospam</literal>
5351         entry will be removed. If the
5352         <emphasis>pattern</emphasis> for <literal>nospam</literal> is ``*'', <emphasis>
5353           all entries on both lists
5354         </emphasis>
5355         will be removed. This might be the default action if you use <literal>
5356           spam
5357         </literal>
5358         and <literal>nospam</literal> in conjunction with a <muttng-doc:hook name="folder"/>.
5359       </para>
5360       
5361       <para>
5362         You can have as many <literal>spam</literal> or <literal>nospam</literal> commands as you like.
5363         You can even do your own primitive spam detection within mutt -- for
5364         example, if you consider all mail from <literal>MAILER-DAEMON</literal>
5365         to be spam,
5366         you can use a <literal>spam</literal> command like this:
5367       </para>
5368       
5369       <para>
5370         
5371         <screen>
5372 spam "^From: .*MAILER-DAEMON"       "999"</screen>
5373         
5374       </para>
5375       
5376       <para>
5377         
5378       </para>
5379       
5380     </sect1>
5381     
5382     <sect1 id="command-set"><anchor id="command-unset"/><anchor id="command-reset"/><anchor id="command-toggle"/>
5383       <title>Setting variables</title>
5384
5385       <para>
5386         Usage: <muttng-doc:command name="set"/> [no|inv]<emphasis>variable</emphasis>[=<emphasis>value</emphasis>] [<emphasis>variable</emphasis>...]
5387       </para>
5388       <para>
5389         Usage: <muttng-doc:command name="toggle"/> <emphasis>variable</emphasis> [<emphasis>variable</emphasis>...]
5390       </para>
5391       <para>
5392         Usage: <muttng-doc:command name="unset"/> <emphasis>variable</emphasis> [<emphasis>variable</emphasis>...]
5393       </para>
5394       <para>
5395         Usage: <muttng-doc:command name="reset"/> <emphasis>variable</emphasis> [<emphasis>variable</emphasis>...]
5396       </para>
5397       
5398       <para>
5399         This command is used to set (and unset) <link linkend="variables">variables</link>. 
5400         There are four basic types of variables:
5401         boolean, number, string and quadoption.  <emphasis>boolean</emphasis>
5402         variables can be
5403         <emphasis>set</emphasis> (true) or <emphasis>unset</emphasis> (false). 
5404         <emphasis>number</emphasis> variables can be
5405         assigned a positive integer value.
5406       </para>
5407       
5408       <para>
5409         <emphasis>string</emphasis> variables consist of any number of
5410         printable characters.
5411         <emphasis>strings</emphasis> must be enclosed in quotes if they contain
5412         spaces or tabs.  You
5413         may also use the ``C'' escape sequences <emphasis role="bold">\n</emphasis> and <emphasis role="bold">
5414           \t
5415         </emphasis>
5416         for
5417         newline and tab, respectively.
5418       </para>
5419       
5420       <para>
5421         <emphasis>quadoption</emphasis> variables are used to control whether
5422         or not to be prompted
5423         for certain actions, or to specify a default action.  A value of <emphasis>
5424           yes
5425         </emphasis>
5426         will cause the action to be carried out automatically as if you had
5427         answered
5428         yes to the question.  Similarly, a value of <emphasis>no</emphasis>
5429         will cause the the
5430         action to be carried out as if you had answered ``no.''  A value of
5431         <emphasis>ask-yes</emphasis> will cause a prompt with a default answer
5432         of ``yes'' and
5433         <emphasis>ask-no</emphasis> will provide a default answer of ``no.''
5434       </para>
5435       
5436       <para>
5437         Prefixing a variable with ``no'' will unset it.  Example: <literal>set
5438           noaskbcc
5439         </literal>
5440         .
5441       </para>
5442       
5443       <para>
5444         For <emphasis>boolean</emphasis> variables, you may optionally prefix
5445         the variable name with
5446         <literal>inv</literal> to toggle the value (on or off).  This is useful
5447         when writing
5448         macros.  Example: <literal>set invsmart_wrap</literal>.
5449       </para>
5450       
5451       <para>
5452         The <literal>toggle</literal> command automatically prepends the <literal>
5453           inv
5454         </literal>
5455         prefix to all
5456         specified variables.
5457       </para>
5458       
5459       <para>
5460         The <literal>unset</literal> command automatically prepends the <literal>
5461           no
5462         </literal>
5463         prefix to all
5464         specified variables.
5465       </para>
5466       
5467       <para>
5468         Using the enter-command function in the <emphasis>index</emphasis>
5469         menu, you can query the
5470         value of a variable by prefixing the name of the variable with a
5471         question
5472         mark:
5473       </para>
5474       
5475       <para>
5476         
5477         <screen>
5478 set ?allow_8bit</screen>
5479         
5480       </para>
5481       
5482       <para>
5483         The question mark is actually only required for boolean and quadoption 
5484         variables.
5485       </para>
5486       
5487       <para>
5488         The <literal>reset</literal> command resets all given variables to the
5489         compile time
5490         defaults (hopefully mentioned in this manual). If you use the command
5491         <literal>set</literal> and prefix the variable with ``&amp;'' this has
5492         the same
5493         behavior as the reset command.
5494       </para>
5495       
5496       <para>
5497         With the <literal>reset</literal> command there exists the special
5498         variable ``all'',
5499         which allows you to reset all variables to their system defaults.
5500       </para>
5501       
5502       <para>
5503         
5504       </para>
5505       
5506     </sect1>
5507     
5508     <sect1 id="command-source">
5509       <title>Reading initialization commands from another file</title>
5510       
5511       <para>
5512         Usage: <muttng-doc:command name="source"/> <emphasis>filename</emphasis> [<emphasis>filename</emphasis>...]
5513       </para>
5514       
5515       <para>
5516         This command allows the inclusion of initialization commands
5517         from other files.  For example, I place all of my aliases in
5518         <literal>~/.mail_aliases</literal> so that I can make my
5519         <literal>~/.muttrc</literal> readable and keep my aliases
5520         private.
5521       </para>
5522       
5523       <para>
5524         If the filename begins with a tilde (``~''), it will be expanded
5525         to the
5526         path of your home directory.
5527       </para>
5528       
5529       <para>
5530         If the filename ends with a vertical bar (|), then <emphasis>
5531           filename
5532         </emphasis>
5533         is
5534         considered to be an executable program from which to read input (eg.
5535         <literal>source ~/bin/myscript|</literal>).
5536       </para>
5537       
5538       <para>
5539         
5540       </para>
5541       
5542     </sect1>
5543     
5544     <sect1 id="command-unhook">
5545       <title>Removing hooks</title>
5546       
5547       <para>
5548         Usage: <muttng-doc:command name="unhook"/> [* | <emphasis>hook-type</emphasis>]
5549       </para>
5550       
5551       <para>
5552         This command permits you to flush hooks you have previously defined.
5553         You can either remove all hooks by giving the ``*'' character as an
5554         argument, or you can remove all hooks of a specific type by saying
5555         something like <literal>unhook send</literal>.
5556       </para>
5557       
5558       <para>
5559         
5560       </para>
5561       
5562     </sect1>
5563     
5564     <sect1 id="share">
5565       <title>Sharing Setups</title>
5566       
5567       <sect2 id="share-charset">
5568         <title>Character Sets</title>
5569         
5570         <para>
5571           As users may run mutt-ng on different systems, the configuration
5572           must be maintained because it's likely that people want to use the
5573           setup everywhere they use mutt-ng. And mutt-ng tries to help where it
5574           can.
5575         </para>
5576         
5577         <para>
5578           To not produce conflicts with different character sets, mutt-ng
5579           allows users to specify in which character set their configuration
5580           files are encoded. Please note that while reading the configuration
5581           files, this is only respected after the corresponding declaration
5582           appears. It's advised to put the following at the very beginning of a
5583           users muttngrc:
5584         </para>
5585         
5586         <para>
5587           
5588           <screen>
5589 set config_charset = "..."</screen>
5590           
5591         </para>
5592         
5593         <para>
5594           and replacing the dots with the actual character set. To avoid
5595           problems while maintaining the setup, <muttng-doc:man name="vim"/> user's may want to use
5596           modelines as show in:
5597         </para>
5598         
5599         <para>
5600           
5601           <screen>
5602 # vim:fileencoding=...:</screen>
5603           
5604         </para>
5605         
5606         <para>
5607           while, again, replacing the dots with the appropriate name. This
5608           tells <muttng-doc:man name="vim"/> as which character set to read and save the file.
5609         </para>
5610         
5611         <para>
5612           
5613         </para>
5614         
5615       </sect2>
5616       
5617       <sect2 id="share-modularization">
5618         <title>Modularization</title>
5619         
5620         <para>
5621           ``Modularization'' means to divide the setup into several files
5622           while sorting the options or commands by topic. Especially for
5623           longer setups (e.g. with many hooks), this helps maintaining it
5624           and solving trouble.
5625         </para>
5626         
5627         <para>
5628           When using separation, setups may be, as a whole or in
5629           fractions, shared over different systems.
5630         </para>
5631         
5632         <para>
5633           
5634         </para>
5635         
5636       </sect2>
5637       
5638       <sect2 id="share-conditional">
5639         <title>Conditional parts</title>
5640         
5641         <para>
5642           When using a configuration on different systems, the user may not
5643           always have influence on how mutt-ng is installed and which features
5644           it includes.
5645         </para>
5646         
5647         <para>
5648           To solve this, mutt-ng contain a feature based on the ``ifdef''
5649           patch written for mutt. Its basic syntax is:
5650         </para>
5651         
5652         <para>
5653           
5654           <screen>
5655 ifdef &lt;item&gt; &lt;command&gt;
5656 ifndef &lt;item&gt; &lt;command&gt;</screen>
5657           
5658         </para>
5659         
5660         <para>
5661           ...whereby <literal>&lt;item&gt;</literal> can be one of:
5662         </para>
5663         
5664         <para>
5665           
5666           <itemizedlist>
5667             <listitem>
5668               
5669               <para>
5670                 a function name
5671                 
5672               </para>
5673             </listitem>
5674             <listitem>
5675               
5676               <para>
5677                 a variable name
5678                 
5679               </para>
5680             </listitem>
5681             <listitem>
5682               
5683               <para>
5684                 a menu name
5685                 
5686               </para>
5687             </listitem>
5688             <listitem>
5689               
5690               <para>
5691                 a feature name
5692                 
5693               </para>
5694             </listitem>
5695             
5696           </itemizedlist>
5697           
5698         </para>
5699         
5700         <para>
5701           All available functions, variables and menus are documented
5702           elsewhere in this manual but ``features'' is specific to these
5703           two commands. To test for one, prefix one of the following
5704           keywords with <literal>feature_</literal>: ncurses,
5705           slang, iconv, idn, dotlock, standalone, pop, nntp, imap, ssl,
5706           gnutls, sasl, sasl2, libesmtp, compressed, color, classic_pgp,
5707           classic_smime, gpgme, header_cache
5708         </para>
5709         
5710         <para>
5711           As an example, one can use the following in
5712           <literal>~/.muttngrc</literal>:
5713         </para>
5714         
5715         <para>
5716           
5717           <screen>
5718 ifdef feature_imap 'source ~/.mutt-ng/setup-imap'
5719 ifdef feature_pop  'source ~/.mutt-ng/setup-pop'
5720 ifdef feature_nntp 'source ~/.mutt-ng/setup-nntp'</screen>
5721           
5722         </para>
5723         
5724         <para>
5725           ...to only source <literal>~/.mutt-ng/setup-imap</literal> if
5726           IMAP
5727           support is built in, only source <literal>~/.mutt-ng/setup-pop</literal>
5728           if POP support is built in and only source
5729           <literal>~/.mutt-ng/setup-nntp</literal> if NNTP support is
5730           built in.
5731         </para>
5732         
5733         <para>
5734           An example for testing for variable names can be used if users
5735           use different revisions of mutt-ng whereby the older one may not
5736           have a certain variable. To test for the availability of
5737           <muttng-doc:varref name="imap_mail_check" link="imap-mail-check"/>
5738           use:
5739         </para>
5740         
5741         <para>
5742           
5743           <screen>
5744 ifdef imap_mail_check 'set imap_mail_check = 300'</screen>
5745           
5746         </para>
5747         
5748         <para>
5749           Provided for completeness is the test for menu names. To set
5750           <muttng-doc:varref name="pager_index_lines"
5751             link="pager-index-lines"/>
5752           only if the pager
5753           menu is available, use:
5754         </para>
5755         
5756         <para>
5757           
5758           <screen>
5759 ifdef pager 'set pager_index_lines = 10'</screen>
5760           
5761         </para>
5762         
5763         <para>
5764           For completeness, too, the opposite of <literal>ifdef</literal> is
5765           provided:
5766           <literal>ifndef</literal> which only executes the command if the test
5767           fails. For
5768           example, the following two examples are equivalent:
5769         </para>
5770         
5771         <para>
5772           
5773           <screen>
5774 ifdef feature_ncurses 'source ~/.mutt-ng/setup-ncurses'
5775 ifndef feature_ncurses 'source ~/.mutt-ng/setup-slang'</screen>
5776           
5777         </para>
5778         
5779         <para>
5780           ...and...
5781         </para>
5782         
5783         <para>
5784           
5785           <screen>
5786 ifdef feature_slang 'source ~/.mutt-ng/setup-slang'
5787 ifndef feature_slang 'source ~/.mutt-ng/setup-ncurses'</screen>
5788           
5789         </para>
5790         
5791         <para>
5792           
5793         </para>
5794         
5795         <para>
5796           
5797         </para>
5798         
5799       </sect2>
5800       
5801     </sect1>
5802     
5803     <sect1 id="vars-obsolete">
5804       <title>Obsolete Variables</title>
5805       
5806       <para>
5807         In the process of ensuring and creating more consistency, many
5808         variables have been renamed and some of the old names were already
5809         removed. Please see <link linkend="sect-obsolete">sect-obsolete</link>
5810         for a complete list.
5811       </para>
5812       
5813       <para>
5814         
5815       </para>
5816       
5817       <para>
5818         
5819       </para>
5820       
5821     </sect1>
5822     
5823   </chapter>
5824   <!--}}}-->
5825   
5826   <chapter id="advanced-usage"> <!--{{{-->
5827     <title>Advanced Usage</title>
5828     
5829     <sect1 id="advanced-regexp">
5830       <title>Regular Expressions</title>
5831       
5832       <para>
5833         All string patterns in Mutt-ng including those in more complex
5834         <link linkend="tab-patterns">patterns</link> must be specified
5835         using regular expressions (regexp) in the ``POSIX extended'' syntax
5836         (which
5837         is more or less the syntax used by egrep and GNU awk).  For your
5838         convenience, we have included below a brief description of this syntax.
5839       </para>
5840       
5841       <para>
5842         The search is case sensitive if the pattern contains at least one upper
5843         case letter, and case insensitive otherwise. Note that ``\''
5844         must be quoted if used for a regular expression in an initialization
5845         command: ``\\''.
5846       </para>
5847       
5848       <para>
5849         A regular expression is a pattern that describes a set of strings.
5850         Regular expressions are constructed analogously to arithmetic
5851         expressions, by using various operators to combine smaller expressions.
5852       </para>
5853       
5854       <para>
5855         Note that the regular expression can be enclosed/delimited by either
5856         &quot;
5857         or ' which is useful if the regular expression includes a white-space
5858         character.  See <link linkend="configuration-syntax">muttrc-syntax</link>
5859         for more information on &quot; and ' delimiter processing.  To match a
5860         literal &quot; or ' you must preface it with \ (backslash).
5861       </para>
5862       
5863       <para>
5864         The fundamental building blocks are the regular expressions that match
5865         a single character.  Most characters, including all letters and digits,
5866         are regular expressions that match themselves.  Any metacharacter with
5867         special meaning may be quoted by preceding it with a backslash.
5868       </para>
5869       
5870       <para>
5871         The period ``.'' matches any single character.  The caret ``^''
5872         andthe dollar sign ``$'' are metacharacters that respectively
5873         match
5874         the empty string at the beginning and end of a line.
5875       </para>
5876       
5877       <para>
5878         A list of characters enclosed by ``]'' and ``]'' matches any
5879         single character in that list; if the first character of the list
5880         is a caret ``^'' then it matches any character <emphasis role="bold">
5881           not
5882         </emphasis>
5883         in the
5884         list.  For example, the regular expression <emphasis role="bold">
5885           ]0123456789]
5886         </emphasis>
5887         matches any single digit.  A range of ASCII characters may be specified
5888         by giving the first and last characters, separated by a hyphen
5889         ``-''.  Most metacharacters lose their special meaning inside
5890         lists.  To include a literal ``]'' place it first in the list.
5891         Similarly, to include a literal ``^'' place it anywhere but first.
5892         Finally, to include a literal hyphen ``-'' place it last.
5893       </para>
5894       
5895       <para>
5896         Certain named classes of characters are predefined.  Character classes
5897         consist of ``[:'', a keyword denoting the class, and ``:]''.
5898         The following classes are defined by the POSIX standard:
5899       </para>
5900       
5901       <para>
5902         <variablelist>
5903           
5904           <varlistentry>
5905             <term>[:alnum:]</term>
5906             <listitem>
5907               <para>
5908                 Alphanumeric characters.
5909               </para>
5910             </listitem>
5911           </varlistentry>
5912           <varlistentry>
5913             <term>[:alpha:]</term>
5914             <listitem>
5915               <para>
5916                 Alphabetic characters.
5917               </para>
5918             </listitem>
5919           </varlistentry>
5920           <varlistentry>
5921             <term>[:blank:]</term>
5922             <listitem>
5923               <para>
5924                 Space or tab characters.
5925               </para>
5926             </listitem>
5927           </varlistentry>
5928           <varlistentry>
5929             <term>[:cntrl:]</term>
5930             <listitem>
5931               <para>
5932                 Control characters.
5933               </para>
5934             </listitem>
5935           </varlistentry>
5936           <varlistentry>
5937             <term>[:digit:]</term>
5938             <listitem>
5939               <para>
5940                 Numeric characters.
5941               </para>
5942             </listitem>
5943           </varlistentry>
5944           <varlistentry>
5945             <term>[:graph:]</term>
5946             <listitem>
5947               <para>
5948                 Characters that are both printable and visible.  (A space is
5949                 printable,
5950                 but not visible, while an ``a'' is both.)
5951               </para>
5952             </listitem>
5953           </varlistentry>
5954           <varlistentry>
5955             <term>[:lower:]</term>
5956             <listitem>
5957               <para>
5958                 Lower-case alphabetic characters.
5959               </para>
5960             </listitem>
5961           </varlistentry>
5962           <varlistentry>
5963             <term>[:print:]</term>
5964             <listitem>
5965               <para>
5966                 Printable characters (characters that are not control
5967                 characters.)
5968               </para>
5969             </listitem>
5970           </varlistentry>
5971           <varlistentry>
5972             <term>[:punct:]</term>
5973             <listitem>
5974               <para>
5975                 Punctuation characters (characters that are not letter, digits,
5976                 control
5977                 characters, or space characters).
5978               </para>
5979             </listitem>
5980           </varlistentry>
5981           <varlistentry>
5982             <term>[:space:]</term>
5983             <listitem>
5984               <para>
5985                 Space characters (such as space, tab and formfeed, to name a
5986                 few).
5987               </para>
5988             </listitem>
5989           </varlistentry>
5990           <varlistentry>
5991             <term>[:upper:]</term>
5992             <listitem>
5993               <para>
5994                 Upper-case alphabetic characters.
5995               </para>
5996             </listitem>
5997           </varlistentry>
5998           <varlistentry>
5999             <term>[:xdigit:]</term>
6000             <listitem>
6001               <para>
6002                 Characters that are hexadecimal digits.
6003               </para>
6004             </listitem>
6005           </varlistentry>
6006         </variablelist>
6007       </para>
6008       
6009       <para>
6010         A character class is only valid in a regular expression inside the
6011         brackets of a character list.  Note that the brackets in these
6012         class names are part of the symbolic names, and must be included
6013         in addition to the brackets delimiting the bracket list.  For
6014         example, <emphasis role="bold">[[:digit:]]</emphasis> is equivalent to
6015         <emphasis role="bold">[0-9]</emphasis>.
6016       </para>
6017       
6018       <para>
6019         Two additional special sequences can appear in character lists.  These
6020         apply to non-ASCII character sets, which can have single symbols
6021         (calledcollating elements) that are represented with more than one
6022         character,
6023         as well as several characters that are equivalent for collating or
6024         sorting purposes:
6025       </para>
6026       
6027       <para>
6028         <variablelist>
6029           
6030           <varlistentry>
6031             <term>Collating Symbols</term>
6032             <listitem>
6033               <para>
6034                 A collating symbol is a multi-character collating element
6035                 enclosed in
6036                 ``[.'' and ``.]''.  For example, if ``ch'' is a
6037                 collating
6038                 element, then <emphasis role="bold">
6039                   [[.ch.]]
6040                 </emphasis>
6041                 is a regexp that matches
6042                 this collating element, while <emphasis role="bold">
6043                   [ch]
6044                 </emphasis>
6045                 is a regexp that
6046                 matches either ``c'' or ``h''.
6047               </para>
6048             </listitem>
6049           </varlistentry>
6050           <varlistentry>
6051             <term>Equivalence Classes</term>
6052             <listitem>
6053               <para>
6054                 An equivalence class is a locale-specific name for a list of
6055                 characters that are equivalent. The name is enclosed in
6056                 ``[=''
6057                 and ``=]''.  For example, the name ``e'' might be used to
6058                 represent all of ``è'' ``é'' and ``e''.  In this
6059                 case,
6060                 <emphasis role="bold">[[=e=]]</emphasis> is
6061                 a regexp that matches any of
6062                 ``è'', ``é'' and ``e''.
6063               </para>
6064             </listitem>
6065           </varlistentry>
6066         </variablelist>
6067       </para>
6068       
6069       <para>
6070         A regular expression matching a single character may be followed by one
6071         of several repetition operators:
6072       </para>
6073       
6074       <para>
6075         <variablelist>
6076           
6077           <varlistentry>
6078             <term>?</term>
6079             <listitem>
6080               <para>
6081                 The preceding item is optional and matched at most once.
6082               </para>
6083             </listitem>
6084           </varlistentry>
6085           <varlistentry>
6086             <term>*</term>
6087             <listitem>
6088               <para>
6089                 The preceding item will be matched zero or more times.
6090               </para>
6091             </listitem>
6092           </varlistentry>
6093           <varlistentry>
6094             <term>+</term>
6095             <listitem>
6096               <para>
6097                 The preceding item will be matched one or more times.
6098               </para>
6099             </listitem>
6100           </varlistentry>
6101           <varlistentry>
6102             <term>{n}</term>
6103             <listitem>
6104               <para>
6105                 The preceding item is matched exactly <emphasis>n</emphasis>
6106                 times.
6107               </para>
6108             </listitem>
6109           </varlistentry>
6110           <varlistentry>
6111             <term>{n,}</term>
6112             <listitem>
6113               <para>
6114                 The preceding item is matched <emphasis>n</emphasis> or more
6115                 times.
6116               </para>
6117             </listitem>
6118           </varlistentry>
6119           <varlistentry>
6120             <term>{,m}</term>
6121             <listitem>
6122               <para>
6123                 The preceding item is matched at most <emphasis>m</emphasis>
6124                 times.
6125               </para>
6126             </listitem>
6127           </varlistentry>
6128           <varlistentry>
6129             <term>{n,m}</term>
6130             <listitem>
6131               <para>
6132                 The preceding item is matched at least <emphasis>n</emphasis>
6133                 times, but no more than
6134                 <emphasis>m</emphasis> times.
6135               </para>
6136             </listitem>
6137           </varlistentry>
6138         </variablelist>
6139       </para>
6140       
6141       <para>
6142         Two regular expressions may be concatenated; the resulting regular
6143         expression matches any string formed by concatenating two substrings
6144         that respectively match the concatenated subexpressions.
6145       </para>
6146       
6147       <para>
6148         Two regular expressions may be joined by the infix operator
6149         ``|'';
6150         the resulting regular expression matches any string matching either
6151         subexpression.
6152       </para>
6153       
6154       <para>
6155         Repetition takes precedence over concatenation, which in turn takes
6156         precedence over alternation.  A whole subexpression may be enclosed in
6157         parentheses to override these precedence rules.
6158       </para>
6159       
6160       <para>
6161         <emphasis role="bold">Note:</emphasis> If you compile Mutt-ng with the
6162         GNU <emphasis>rx</emphasis> package, the
6163         following operators may also be used in regular expressions:
6164       </para>
6165       
6166       <para>
6167         <variablelist>
6168           
6169           <varlistentry>
6170             <term>\\y</term>
6171             <listitem>
6172               <para>
6173                 Matches the empty string at either the beginning or the end of
6174                 a word.
6175               </para>
6176             </listitem>
6177           </varlistentry>
6178           <varlistentry>
6179             <term>\\B</term>
6180             <listitem>
6181               <para>
6182                 Matches the empty string within a word.
6183               </para>
6184             </listitem>
6185           </varlistentry>
6186           <varlistentry>
6187             <term>\\&lt;</term>
6188             <listitem>
6189               <para>
6190                 Matches the empty string at the beginning of a word.
6191               </para>
6192             </listitem>
6193           </varlistentry>
6194           <varlistentry>
6195             <term>\\&gt;</term>
6196             <listitem>
6197               <para>
6198                 Matches the empty string at the end of a word.
6199               </para>
6200             </listitem>
6201           </varlistentry>
6202           <varlistentry>
6203             <term>\\w</term>
6204             <listitem>
6205               <para>
6206                 Matches any word-constituent character (letter, digit, or
6207                 underscore).
6208               </para>
6209             </listitem>
6210           </varlistentry>
6211           <varlistentry>
6212             <term>\\W</term>
6213             <listitem>
6214               <para>
6215                 Matches any character that is not word-constituent.
6216               </para>
6217             </listitem>
6218           </varlistentry>
6219           <varlistentry>
6220             <term>\\`</term>
6221             <listitem>
6222               <para>
6223                 Matches the empty string at the beginning of a buffer (string).
6224               </para>
6225             </listitem>
6226           </varlistentry>
6227           <varlistentry>
6228             <term>\\'</term>
6229             <listitem>
6230               <para>
6231                 Matches the empty string at the end of a buffer.
6232               </para>
6233             </listitem>
6234           </varlistentry>
6235         </variablelist>
6236       </para>
6237       
6238       <para>
6239         Please note however that these operators are not defined by POSIX, so
6240         they may or may not be available in stock libraries on various systems.
6241       </para>
6242       
6243       <para>
6244         
6245       </para>
6246       
6247     </sect1>
6248     
6249     <sect1 id="advanced-patterns">
6250       <title>Patterns</title>
6251       
6252       <para>
6253         Mutt-ng's pattern language provides a simple yet effective way to
6254         set up rules to match messages, e.g. for operations like tagging and
6255         scoring. A pattern consists of one or more sub-pattern, which can be
6256         logically grouped, ORed, and negated. For a complete listing of
6257         these patterns, please refer to table <link linkend="tab-patterns">patterns</link> in the Reference chapter.
6258       </para>
6259       
6260       <para>
6261         It must be noted that in this table, <literal>EXPR</literal> is
6262         a regular expression. For ranges, the forms
6263         <literal>&lt;[MAX]</literal>, <literal>&gt;&#62;[MIN]</literal>,
6264         <literal> [MIN]-</literal> and <literal>-[MAX]</literal> are
6265         also possible.
6266       </para>
6267       
6268       <sect2 id="patterns-complex">
6269         <title>Complex Patterns</title>
6270         
6271         <para>
6272           It is possible to combine several sub-patterns to a more complex
6273           pattern. The most simple possibility is to logically AND several
6274           patterns by stringing them together:
6275         </para>
6276         
6277         <para>
6278           
6279           <screen>
6280 <muttng-doc:pattern name="s"/> 'SPAM' <muttng-doc:pattern name="U"/></screen>
6281           
6282         </para>
6283         
6284         <para>
6285           The pattern above matches all messages that contain ``SPAM'' in
6286           the subject and are unread.
6287         </para>
6288         
6289         <para>
6290           To logical OR patterns, simply use the <literal>|</literal>
6291           operator. This one
6292           especially useful when using local groups:
6293         </para>
6294         
6295         <para>
6296           
6297           <screen>
6298 <muttng-doc:pattern name="f"/> ("nion@muttng\.org"|"ak@muttng\.org"|"pdmef@muttng\.org")
6299 (<muttng-doc:pattern name="b"/> mutt-ng|<muttng-doc:pattern name="s"/> Mutt-ng)
6300 !<muttng-doc:pattern name="x"/> '@synflood\.at'</screen>
6301           
6302         </para>
6303         
6304         <para>
6305           The first pattern matches all messages that were sent by one of
6306           the mutt-ng maintainers, while the seconds pattern matches all
6307           messages that contain ``mutt-ng'' in the message body or ``Mutt-ng''
6308           in the subject. The third pattern matches all messages that do not
6309           contain ``@synflood\.at'' in the <literal>References:</literal>
6310           header, i.e.
6311           messages that are not an (indirect) reply to one of my messages. A
6312           pattern can be logicall negated using the <literal>!</literal>
6313           operator.
6314         </para>
6315         
6316       </sect2>
6317       
6318       <sect2 sect="patterns-dates">
6319         <title>Patterns and Dates</title>
6320         
6321         <para>
6322           When using dates in patterns, the dates must be specified in a
6323           special format, i.e.  <literal>DD/MM/YYYY</literal>. If you don't
6324           specify
6325           month or year, they default to the current month or year. When using
6326           date ranges, and you specify only the minimum or the maximum, the
6327           specified date will be excluded, e.g. <literal>01/06/2005-</literal>
6328           matches
6329           against all messages <emphasis>after</emphasis> Juni 1st, 2005.
6330         </para>
6331         
6332         <para>
6333           It is also possible to use so-called ``error margins'' when
6334           specifying date ranges.  You simply specify a date, and then the
6335           error margin. This margin needs to contain the information whether
6336           it goes ``forth'' or ``back'' in time, by using <literal>+</literal>
6337           and <literal>-</literal>.
6338           Then follows a number and a unit, i.e. <literal>y</literal> for
6339           years, <literal>m</literal> for
6340           months, <literal>w</literal> for weeks and <literal>d</literal> for
6341           days. If you use the special
6342           <literal>*</literal> sign, it means that the error margin goes to
6343           both``directions'' in time.
6344         </para>
6345         
6346         <para>
6347           
6348           <screen>
6349 <muttng-doc:pattern name="d"/> 01/01/2005+1y
6350 <muttng-doc:pattern name="d"/> 18/10/2004-2w
6351 <muttng-doc:pattern name="d"/> 28/12/2004*1d</screen>
6352           
6353         </para>
6354         
6355         <para>
6356           The first pattern matches all dates between January 1st, 2005 and
6357           January 1st 2006.  The second pattern matches all dates between
6358           October 18th, 2004 and October 4th 2004 (2 weeks before 18/10/2004),
6359           while the third pattern matches all dates 1 day around December
6360           28th, 2004 (i.e. Dec 27th, 28th and 29th).
6361         </para>
6362         
6363         <para>
6364           Relative dates are also very important, as they make it possible
6365           to specify date ranges between a fixed number of units and the
6366           current date. How this works can be seen in the following example:
6367         </para>
6368         
6369         <para>
6370           
6371           <screen>
6372 <muttng-doc:pattern name="d"/> &gt;2w # messages older than two weeks
6373 <muttng-doc:pattern name="d"/> &lt;3d # messages newer than 3 days
6374 <muttng-doc:pattern name="d"/> =1m # messages that are exactly one month old</screen>
6375           
6376         </para>
6377         
6378         <para>
6379           
6380         </para>
6381         
6382       </sect2>
6383       
6384     </sect1>
6385     
6386     <sect1 id="formatstrings">
6387       <title>Format Strings</title>
6388       
6389       <sect2 id="formatstrings-intro">
6390         <title>Introduction</title>
6391         
6392         <para>
6393           The so called <emphasis>Format Strings</emphasis> offer great
6394           flexibility when
6395           configuring mutt-ng. In short, they describe what items to print
6396           out how in menus and status messages.
6397         </para>
6398         
6399         <para>
6400           Basically, they work as this: for different menus and bars,
6401           there's a variable specifying the layout. For every item
6402           available, there is a so called <emphasis>expando</emphasis>.
6403         </para>
6404         
6405         <para>
6406           For example, when running mutt-ng on different machines or
6407           different versions for testing purposes, it may be interesting to
6408           have the following information always printed on screen when one
6409           is in the index:
6410         </para>
6411         
6412         <para>
6413           
6414           <itemizedlist>
6415             <listitem>
6416               
6417               <para>
6418                 the current hostname
6419                 
6420               </para>
6421             </listitem>
6422             <listitem>
6423               
6424               <para>
6425                 the current mutt-ng version number
6426                 
6427               </para>
6428             </listitem>
6429             
6430           </itemizedlist>
6431           
6432         </para>
6433         
6434         <para>
6435           The setting for the status bar of the index is controlled via the
6436           <muttng-doc:varref name="status_format" link="status-format"/>
6437           variable. For the hostname and version string, there's an expando
6438           for <literal>$status_format</literal>: <literal>
6439             %h
6440           </literal>
6441           expands to the
6442           hostname and <literal>%v</literal> to the version string. When
6443           just configuring:
6444         </para>
6445         
6446         <para>
6447           
6448           <screen>
6449 set status_format = "%v on %h: ..."</screen>
6450           
6451         </para>
6452         
6453         <para>
6454           mutt-ng will replace the sequence <literal>%v</literal> with
6455           the version string
6456           and <literal>%h</literal> with the host's name. When you are,
6457           for example, running
6458           mutt-ng version <literal>1.5.9i</literal> on host <literal>mailhost</literal>, you'll see the
6459           following when you're in the index:
6460         </para>
6461         
6462         <para>
6463           
6464           <screen>
6465 Mutt-ng 1.5.9i on mailhost: ...</screen>
6466           
6467         </para>
6468         
6469         <para>
6470           In the index, there're more useful information one could want to 
6471           see:
6472         </para>
6473         
6474         <para>
6475           
6476           <itemizedlist>
6477             <listitem>
6478               
6479               <para>
6480                 which mailbox is open
6481                 
6482               </para>
6483             </listitem>
6484             <listitem>
6485               
6486               <para>
6487                 how man new, flagged or postponed messages
6488                 
6489               </para>
6490             </listitem>
6491             <listitem>
6492               
6493               <para>
6494                 ...
6495                 
6496               </para>
6497             </listitem>
6498             
6499           </itemizedlist>
6500           
6501         </para>
6502         
6503         <para>
6504           To include the mailbox' name is as easy as:
6505         </para>
6506         
6507         <para>
6508           
6509           <screen>
6510 set status_format = "%v on %h: %B: ...</screen>
6511           
6512         </para>
6513         
6514         <para>
6515           When the currently opened mailbox is <literal>Inbox</literal>, this
6516           will be expanded
6517           to:
6518         </para>
6519         
6520         <para>
6521           
6522           <screen>
6523 Mutt-ng 1.5.9i on mailhost: Inbox: ...</screen>
6524           
6525         </para>
6526         
6527         <para>
6528           For the number of certain types of messages, one more feature of the
6529           format
6530           strings is extremely useful. If there aren't messages of a certain
6531           type, it
6532           may not be desired to print just that there aren't any but instead
6533           only
6534           print something if there are any.
6535         </para>
6536         
6537         <para>
6538           
6539         </para>
6540         
6541       </sect2>
6542       
6543       <sect2 id="formatstrings-conditional">
6544         <title>Conditional Expansion</title>
6545         
6546         <para>
6547           To only print the number of messages if there are new messages in
6548           the current mailbox, further extend
6549           <literal>$status_format</literal> to:
6550         </para>
6551         
6552         <para>
6553           
6554           <screen>
6555 set status_format = "%v on %h: %B %?n?%n new? ...</screen>
6556           
6557         </para>
6558         
6559         <para>
6560           This feature is called <emphasis>nonzero-printing</emphasis> and
6561           works as this:
6562           some expandos may be optionally printed nonzero, i.e.  a portion
6563           of the format string is only evaluated if the value of the expando
6564           is different from zero. The basic syntax is:
6565         </para>
6566         
6567         <para>
6568           
6569           <screen>
6570 %?&#60;item&#62;?&#60;string if nonzero&#62;?</screen>
6571           
6572         </para>
6573         
6574         <para>
6575           which tells mutt-ng to only look at <literal>&lt;string if
6576             nonzero&gt;
6577           </literal>
6578           if the value of the <literal>%&lt;item%gt;</literal>
6579           expando is different from zero. In our example, we used <literal>n</literal> as
6580           the expando to check for and <literal>%n new</literal> as the
6581           optional nonzero
6582           string.
6583         </para>
6584         
6585         <para>
6586           But this is not all: this feature only offers one alternative: 
6587           ``print something if not zero.'' Mutt-ng does, as you might guess, 
6588           also provide a logically complete version: ``if zero, print 
6589           something and else print something else.'' This is achieved by the 
6590           following syntax for those expandos which may be printed nonzero:
6591         </para>
6592         
6593         <para>
6594           
6595           <screen>
6596 %?&#60;item&#62;?&#60;string if nonzero&#62;&#38;&#60;string if zero&#62;?</screen>
6597           
6598         </para>
6599         
6600         <para>
6601           Using this we can make mutt-ng to do the following:
6602         </para>
6603         
6604         <para>
6605           
6606           <itemizedlist>
6607             <listitem>
6608               
6609               <para>
6610                 make it print ``<emphasis>n</emphasis> new messages'' whereby <emphasis>
6611                   n
6612                 </emphasis>
6613                 is the
6614                 count but only if there new ones
6615                 
6616               </para>
6617             </listitem>
6618             <listitem>
6619               
6620               <para>
6621                 and make it print ``no new messages'' if there aren't any
6622                 
6623               </para>
6624             </listitem>
6625             
6626           </itemizedlist>
6627           
6628         </para>
6629         
6630         <para>
6631           The corresponding configuration is:
6632         </para>
6633         
6634         <para>
6635           
6636           <screen>
6637 set status_format = "%v on %h: %B: %?n?%n new messages&amp;no new messages? ...</screen>
6638           
6639         </para>
6640         
6641         <para>
6642           This doubles the use of the ``new messages'' string because it'll get
6643           always printed. Thus, it can be shortened to:
6644         </para>
6645         
6646         <para>
6647           
6648           <screen>
6649 set status_format = "%v on %h: %B: %?n?%n&amp;no? new messages ...</screen>
6650           
6651         </para>
6652         
6653         <para>
6654           As you might see from this rather simple example, one can create
6655           very complex but fancy status messages. Please see the reference
6656           chapter for expandos and those which may be printed nonzero.
6657         </para>
6658         
6659         <para>
6660           
6661         </para>
6662         
6663       </sect2>
6664       
6665       <sect2 id="formatstrings-padding">
6666         <title>Modifications and Padding</title>
6667         
6668         <para>
6669           Besides the information given so far, there're even more features of
6670           format strings:
6671         </para>
6672         
6673         <para>
6674           
6675           <itemizedlist>
6676             <listitem>
6677               
6678               <para>
6679                 When specifying <literal>%_&lt;item&gt;</literal>
6680                 instead of
6681                 just <literal>%&lt;item&gt;</literal>, mutt-ng will
6682                 convert all
6683                 characters in the expansion of <literal>&lt;item&gt;</literal>
6684                 to
6685                 lowercase.
6686                 
6687               </para>
6688             </listitem>
6689             <listitem>
6690               
6691               <para>
6692                 When specifying <literal>%:&lt;item&gt;</literal>
6693                 instead of just
6694                 <literal>%&lt;item&gt;</literal>, mutt-ng will convert
6695                 all dots in the
6696                 expansion of <literal>&lt;item&gt;</literal> to underscores
6697                 (<literal>_</literal>).
6698                 
6699               </para>
6700             </listitem>
6701             
6702           </itemizedlist>
6703           
6704         </para>
6705         
6706         <para>
6707           Also, there's a feature called <emphasis>Padding</emphasis> supplied
6708           by the
6709           following two expandos: <literal>%|X</literal> and <literal>
6710             %&gt;X
6711           </literal>
6712           .
6713         </para>
6714         
6715         <para>
6716           <variablelist>
6717             
6718             <varlistentry>
6719               <term>
6720                 <literal>%|X</literal>
6721               </term>
6722               <listitem>
6723                 <para>
6724                   When this occurs, mutt-ng will fill the
6725                   rest of the line with the character <literal>X</literal>. In
6726                   our example,
6727                   filling the rest of the line with dashes is done by setting:
6728                 </para>
6729                 
6730                 <para>
6731                   
6732                   <screen>
6733 set status_format = "%v on %h: %B: %?n?%n&amp;no? new messages %|-"</screen>
6734                   
6735                 </para>
6736               </listitem>
6737             </varlistentry>
6738             <varlistentry>
6739               <term>
6740                 <literal>%&gt;X</literal>
6741               </term>
6742               <listitem>
6743                 <para>
6744                   Since the previous expando stops at
6745                   the end of line, there must be a way to fill the gap between
6746                   two items via the <literal>%&gt;X</literal> expando:
6747                   it puts as many
6748                   characters <literal>X</literal> in between two items so that
6749                   the rest of
6750                   the line will be right-justified. For example, to not put the
6751                   version string and hostname of our example on the left but on
6752                   the right and fill the gap with spaces, one might use (note
6753                   the space after <literal>%&gt;</literal>):
6754                 </para>
6755                 
6756                 <para>
6757                   
6758                   <screen>
6759 set status_format = "%B: %?n?%n&amp;no? new messages %&#62; (%v on %h)"</screen>
6760                   
6761                 </para>
6762               </listitem>
6763             </varlistentry>
6764           </variablelist>
6765         </para>
6766         
6767         <para>
6768           
6769         </para>
6770         
6771         <para>
6772           
6773         </para>
6774         
6775       </sect2>
6776       
6777     </sect1>
6778     
6779     <sect1 id="using-tags">
6780       <title>Using Tags</title>
6781       
6782       <para>
6783         Sometimes it is desirable to perform an operation on a group of
6784         messages all at once rather than one at a time.  An example might be
6785         to save messages to a mailing list to a separate folder, or to
6786         delete all messages with a given subject.  To tag all messages
6787         matching a pattern, use the tag-pattern function, which is bound to
6788         ``shift-T'' by default.  Or you can select individual messages by
6789         hand using the ``tag-message'' function, which is bound to ``t'' by
6790         default.  See <link linkend="tab-patterns">patterns</link> for Mutt-ng's
6791         pattern
6792         matching syntax.
6793       </para>
6794       
6795       <para>
6796         Once you have tagged the desired messages, you can use the
6797         ``tag-prefix'' operator, which is the ``;'' (semicolon) key by default.
6798         When the ``tag-prefix'' operator is used, the <emphasis role="bold">
6799           next
6800         </emphasis>
6801         operation will
6802         be applied to all tagged messages if that operation can be used in that
6803         manner.  If the <muttng-doc:varref name="auto_tag" link="auto-tag"/>
6804         variable is set, the next operation applies to the tagged messages
6805         automatically, without requiring the ``tag-prefix''.
6806       </para>
6807       
6808       <para>
6809         In <muttng-doc:command name="macro"/> or <muttng-doc:command name="push"/> commands,
6810         you can use the ``tag-prefix-cond'' operator.  If there are no tagged
6811         messages, mutt will "eat" the rest of the macro to abort it's
6812         execution.Mutt-ng will stop "eating" the macro when it encounters the
6813         ``end-cond''
6814         operator;  after this operator the rest of the macro will be executed
6815         asnormal.
6816       </para>
6817       
6818       <para>
6819         
6820       </para>
6821       
6822     </sect1>
6823     
6824     <sect1 id="hooks">
6825       <title>Using Hooks</title>
6826       
6827       <para>
6828         A <emphasis>hook</emphasis> is a concept borrowed from the EMACS editor
6829         which allows you to
6830         execute arbitrary commands before performing some operation.  For
6831         example,
6832         you may wish to tailor your configuration based upon which mailbox you
6833         are
6834         reading, or to whom you are sending mail.  In the Mutt-ng world, a <emphasis>
6835           hook
6836         </emphasis>
6837         consists of a <link linkend="advanced-regexp">regexp</link> or
6838         <link linkend="tab-patterns">patterns</link> along with a
6839         configuration option/command.  See
6840         
6841         <itemizedlist>
6842           <listitem>
6843             
6844             <para>
6845               <muttng-doc:hook name="folder"/>
6846             </para>
6847           </listitem>
6848           <listitem>
6849             
6850             <para>
6851               <muttng-doc:hook name="send"/>
6852             </para>
6853           </listitem>
6854           <listitem>
6855             
6856             <para>
6857               <muttng-doc:hook name="message"/>
6858             </para>
6859           </listitem>
6860           <listitem>
6861             
6862             <para>
6863               <muttng-doc:hook name="save"/>
6864             </para>
6865           </listitem>
6866           <listitem>
6867             
6868             <para>
6869               <muttng-doc:hook name="mbox"/>
6870             </para>
6871           </listitem>
6872           <listitem>
6873             
6874             <para>
6875               <muttng-doc:hook name="fcc"/>
6876             </para>
6877           </listitem>
6878           <listitem>
6879             
6880             <para>
6881               <muttng-doc:hook name="fcc-save"/>
6882             </para>
6883           </listitem>
6884           
6885         </itemizedlist>
6886         
6887         for specific details on each type of <emphasis>hook</emphasis>
6888         available.
6889       </para>
6890       
6891       <para>
6892         <emphasis role="bold">Note:</emphasis> if a hook changes configuration
6893         settings, these changes remain
6894         effective until the end of the current mutt session. As this is
6895         generally
6896         not desired, a default hook needs to be added before all other hooks to
6897         restore configuration defaults. Here is an example with <muttng-doc:hook name="send"/> and
6898         the
6899         my_hdr directive:
6900       </para>
6901       
6902       <para>
6903         
6904         <screen>
6905 send-hook . 'unmy_hdr From:'
6906 send-hook <muttng-doc:pattern name="C"/>'^b@b\.b$' my_hdr from: c@c.c</screen>
6907         
6908       </para>
6909       
6910       <sect2 id="pattern-hook">
6911         <title>Message Matching in Hooks</title>
6912         
6913         <para>
6914           Hooks that act upon messages (<literal><muttng-doc:hook name="send"/>, <muttng-doc:hook name="save"/>,
6915             <muttng-doc:hook name="fcc"/>,<muttng-doc:hook name="message"/>
6916           </literal>
6917           )are evaluated in a slightly different manner.  For the other
6918           types of hooks, a <link linkend="advanced-regexp">regexp</link> is
6919           sufficient.  But in dealing with messages a finer grain of control is
6920           needed for matching since for different purposes you want to match
6921           different criteria.
6922         </para>
6923         
6924         <para>
6925           Mutt-ng allows the use of the <link linkend="tab-patterns">patterns</link>
6926           language for matching messages in hook commands.  This works in
6927           exactly the same way as it would when <emphasis>limiting</emphasis>
6928           or<emphasis>searching</emphasis> the mailbox, except that you are
6929           restricted to those
6930           operators which match information mutt extracts from the header of
6931           the message (i.e.  from, to, cc, date, subject, etc.).
6932         </para>
6933         
6934         <para>
6935           For example, if you wanted to set your return address based upon
6936           sending
6937           mail to a specific address, you could do something like:
6938           
6939           <screen>
6940 send-hook '<muttng-doc:pattern name="t"/> ^me@cs\.hmc\.edu$' 'my_hdr From: Mutt-ng User &#60;user@host&#62;'</screen>
6941           
6942           which would execute the given command when sending mail to
6943           <emphasis>me@cs.hmc.edu</emphasis>.
6944         </para>
6945         
6946         <para>
6947           However, it is not required that you write the pattern to match using
6948           the
6949           full searching language.  You can still specify a simple <emphasis>
6950             regular
6951             expression
6952           </emphasis>
6953           like the other hooks, in which case Mutt-ng will translate your
6954           pattern into the full language, using the translation specified by
6955           the 
6956           <muttng-doc:hook name="default"/> variable.  The
6957           pattern is translated at the time the hook is declared, so the value
6958           of 
6959           <muttng-doc:hook name="default"/> that is in effect
6960           at that time will be used.
6961         </para>
6962         
6963         <para>
6964           
6965         </para>
6966         
6967       </sect2>
6968       
6969     </sect1>
6970     
6971     <sect1 id="sidebar">
6972       <title>Using the sidebar</title>
6973       
6974       <para>
6975         The sidebar, a feature specific to Mutt-ng, allows you to use a mailbox
6976         listing 
6977         which looks very similar to the ones you probably know from GUI mail
6978         clients.
6979         The sidebar lists all specified mailboxes, shows the number in each
6980         and highlights the ones with new email
6981         Use the following configuration commands:
6982         
6983         <screen>
6984 set sidebar_visible="yes"
6985 set sidebar_width=25</screen>
6986         
6987       </para>
6988       
6989       <para>
6990         If you want to specify the mailboxes you can do so with:
6991         
6992         <screen>
6993 set mbox='=INBOX'
6994 mailboxes INBOX \
6995 MBOX1 \
6996 MBOX2 \
6997 ...</screen>
6998         
6999       </para>
7000       
7001       <para>
7002         You can also specify the colors for mailboxes with new mails by using:
7003         
7004         <screen>
7005 color sidebar_new red black
7006 color sidebar white black</screen>
7007         
7008       </para>
7009       
7010       <para>
7011         Reasonable key bindings look e.g. like this:
7012         
7013         <screen>
7014 bind index \Cp sidebar-prev
7015 bind index \Cn sidebar-next
7016 bind index \Cb sidebar-open
7017 bind pager \Cp sidebar-prev
7018 bind pager \Cn sidebar-next
7019 bind pager \Cb sidebar-open
7020
7021 macro index B ':toggle sidebar_visible^M'
7022 macro pager B ':toggle sidebar_visible^M'</screen>
7023         
7024       </para>
7025       
7026       <para>
7027         You can then go up and down by pressing Ctrl-P and Ctrl-N, and 
7028         switch on and off the sidebar simply by pressing 'B'.
7029       </para>
7030       
7031       <para>
7032         
7033       </para>
7034       
7035     </sect1>
7036     
7037     <sect1 id="query">
7038       <title>External Address Queries</title>
7039       
7040       <para>
7041         Mutt-ng supports connecting to external directory databases such as
7042         LDAP,
7043         ph/qi, bbdb, or NIS through a wrapper script which connects to mutt
7044         using a simple interface.  Using the
7045         <muttng-doc:varref name="query_command" link="query-command"/>
7046         variable, you specify the wrapper
7047         command to use.  For example:
7048       </para>
7049       
7050       <para>
7051         
7052         <screen>
7053 set query_command = "mutt_ldap_query.pl '%s'"</screen>
7054         
7055       </para>
7056       
7057       <para>
7058         The wrapper script should accept the query on the command-line.  It
7059         should return a one line message, then each matching response on a
7060         single line, each line containing a tab separated address then name
7061         thensome other optional information.  On error, or if there are no
7062         matching
7063         addresses, return a non-zero exit code and a one line error message.
7064       </para>
7065       
7066       <para>
7067         An example multiple response output:
7068         
7069         <screen>
7070 Searching database ... 20 entries ... 3 matching:
7071 me@cs.hmc.edu           Michael Elkins  mutt dude
7072 blong@fiction.net       Brandon Long    mutt and more
7073 roessler@guug.de        Thomas Roessler mutt pgp</screen>
7074         
7075       </para>
7076       
7077       <para>
7078         There are two mechanisms for accessing the query function of mutt.  One
7079         is to do a query from the index menu using the query function (default:
7080         Q).
7081         This will prompt for a query, then bring up the query menu which will
7082         list the matching responses.  From the query menu, you can select
7083         addresses to create aliases, or to mail.  You can tag multiple
7084         addressesto mail, start a new query, or have a new query appended to
7085         the current
7086         responses.
7087       </para>
7088       
7089       <para>
7090         The other mechanism for accessing the query function is for address
7091         completion, similar to the alias completion.  In any prompt for address
7092         entry, you can use the complete-query function (default: ^T) to
7093         run a
7094         query based on the current address you have typed.  Like aliases, mutt
7095         will look for what you have typed back to the last space or comma.  If
7096         there is a single response for that query, mutt will expand the address
7097         in place.  If there are multiple responses, mutt will activate the
7098         querymenu.  At the query menu, you can select one or more addresses to
7099         be
7100         added to the prompt.
7101       </para>
7102       
7103       <para>
7104         
7105       </para>
7106       
7107     </sect1>
7108     
7109     <sect1 id="mailbox-formats">
7110       <title>Mailbox Formats</title>
7111       
7112       <para>
7113         Mutt-ng supports reading and writing of four different mailbox formats:
7114         mbox, MMDF, MH and Maildir.  The mailbox type is autodetected, so there
7115         is no need to use a flag for different mailbox types.  When creating
7116         newmailboxes, Mutt-ng uses the default specified with the
7117         <muttng-doc:varref name="mbox_type" link="mbox-type"/>
7118         variable.
7119       </para>
7120       
7121       <para>
7122         <emphasis role="bold">mbox</emphasis>.  This is the most widely used
7123         mailbox format for UNIX.  All
7124         messages are stored in a single file.  Each message has a line of the
7125         form:
7126       </para>
7127       
7128       <para>
7129         
7130         <screen>
7131 From me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST</screen>
7132         
7133       </para>
7134       
7135       <para>
7136         to denote the start of a new message (this is often referred to as the
7137         ``From_'' line).
7138       </para>
7139       
7140       <para>
7141         <emphasis role="bold">MMDF</emphasis>.  This is a variant of the <emphasis>
7142           mbox
7143         </emphasis>
7144         format.  Each message is
7145         surrounded by lines containing ``^A^A^A^A'' (four
7146         control-A's).
7147       </para>
7148       
7149       <para>
7150         <emphasis role="bold">MH</emphasis>. A radical departure from <emphasis>
7151           mbox
7152         </emphasis>
7153         and <emphasis>MMDF</emphasis>, a mailbox
7154         consists of a directory and each message is stored in a separate file.
7155         The filename indicates the message number (however, this is may not
7156         correspond to the message number Mutt-ng displays). Deleted messages
7157         arerenamed with a comma (,) prepended to the filename. <emphasis role="bold">
7158           Note:
7159         </emphasis>
7160         Mutt
7161         detects this type of mailbox by looking for either <literal>
7162           .mh_sequences
7163         </literal>
7164         or <literal>.xmhcache</literal> (needed to distinguish normal
7165         directories from MH
7166         mailboxes).
7167       </para>
7168       
7169       <para>
7170         <emphasis role="bold">Maildir</emphasis>.  The newest of the mailbox
7171         formats, used by the Qmail MTA (a
7172         replacement for sendmail).  Similar to <emphasis>MH</emphasis>, except
7173         that it adds three
7174         subdirectories of the mailbox: <emphasis>tmp</emphasis>, <emphasis>new</emphasis> and <emphasis>
7175           cur
7176         </emphasis>
7177         .Filenames
7178         for the messages are chosen in such a way they are unique, even when
7179         twoprograms are writing the mailbox over NFS, which means that no file
7180         locking
7181         is needed.
7182       </para>
7183       
7184       <para>
7185         
7186       </para>
7187       
7188     </sect1>
7189     
7190     <sect1 id="shortcuts">
7191       <title>Mailbox Shortcuts</title>
7192       
7193       <para>
7194         There are a number of built in shortcuts which refer to specific
7195         mailboxes.
7196         These shortcuts can be used anywhere you are prompted for a file or
7197         mailbox
7198         path.
7199       </para>
7200       
7201       <para>
7202         
7203         <itemizedlist>
7204           <listitem>
7205             
7206             <para>
7207               ! -- refers to your <muttng-doc:varref name="spoolfile" link="spoolfile"/>
7208               (incoming) mailbox
7209             </para>
7210           </listitem>
7211           <listitem>
7212             
7213             <para>
7214               &gt; -- refers to your <muttng-doc:varref name="mbox" link="mbox"/> file
7215             </para>
7216           </listitem>
7217           <listitem>
7218             
7219             <para>
7220               &lt; -- refers to your <muttng-doc:varref name="record" link="record"/> file
7221             </para>
7222           </listitem>
7223           <listitem>
7224             
7225             <para>
7226               ^ -- refers to the current mailbox
7227             </para>
7228           </listitem>
7229           <listitem>
7230             
7231             <para>
7232               - or !! -- refers to the file you've last visited
7233             </para>
7234           </listitem>
7235           <listitem>
7236             
7237             <para>
7238               ~ -- refers to your home directory
7239             </para>
7240           </listitem>
7241           <listitem>
7242             
7243             <para>
7244               = or + -- refers to your <muttng-doc:varref name="folder" link="folder"/>
7245               directory
7246             </para>
7247           </listitem>
7248           <listitem>
7249             
7250             <para>
7251               @<emphasis>alias</emphasis> -- refers to the <muttng-doc:hook name="save"/>
7252               as determined by the address of the alias
7253             </para>
7254           </listitem>
7255           
7256         </itemizedlist>
7257         
7258       </para>
7259       
7260       <para>
7261         
7262       </para>
7263       
7264     </sect1>
7265     
7266     <sect1 id="using-lists">
7267       <title>Handling Mailing Lists</title>
7268       
7269       <para>
7270         Mutt-ng has a few configuration options that make dealing with large
7271         amounts of mail easier.  The first thing you must do is to let Mutt
7272         know what addresses you consider to be mailing lists (technically
7273         this does not have to be a mailing list, but that is what it is most
7274         often used for), and what lists you are subscribed to.  This is
7275         accomplished through the use of the <muttng-doc:command name="lists"/>
7276         commands in your muttrc.
7277       </para>
7278       
7279       <para>
7280         Now that Mutt-ng knows what your mailing lists are, it can do several
7281         things, the first of which is the ability to show the name of a list
7282         through which you received a message (i.e., of a subscribed list) in
7283         the <emphasis>index</emphasis> menu display.  This is useful to
7284         distinguish between
7285         personal and list mail in the same mailbox.  In the
7286         <muttng-doc:varref name="index_format" link="index-format"/>
7287         variable, the escape ``%L''
7288         will return the string ``To &lt;list&gt;'' when ``list'' appears in the
7289         ``To'' field, and ``Cc &lt;list&gt;'' when it appears in the ``Cc''
7290         field (otherwise it returns the name of the author).
7291       </para>
7292       
7293       <para>
7294         Often times the ``To'' and ``Cc'' fields in mailing list messages
7295         tend to get quite large. Most people do not bother to remove the
7296         author of the message they are reply to from the list, resulting in
7297         two or more copies being sent to that person.  The ``list-reply''
7298         function, which by default is bound to ``L'' in the <emphasis>index</emphasis> menu
7299         and <emphasis>pager</emphasis>, helps reduce the clutter by only
7300         replying to the
7301         known mailing list addresses instead of all recipients (except as
7302         specified by <literal>Mail-Followup-To</literal>, see below).
7303       </para>
7304       
7305       <para>
7306         Mutt-ng also supports the <literal>Mail-Followup-To</literal> header. 
7307         When you send
7308         a message to a list of recipients which includes one or several
7309         subscribed mailing lists, and if the <muttng-doc:varref name="followup_to" link="followup-to"/>
7310         option is set, mutt will generate
7311         a Mail-Followup-To header which contains all the recipients to whom
7312         you send this message, but not your address. This indicates that
7313         group-replies or list-replies (also known as ``followups'') to this
7314         message should only be sent to the original recipients of the
7315         message, and not separately to you - you'll receive your copy through
7316         one of the mailing lists you are subscribed to.
7317       </para>
7318       
7319       <para>
7320         Conversely, when group-replying or list-replying to a message which
7321         has a <literal>Mail-Followup-To</literal> header, mutt will respect
7322         this header if
7323         the <muttng-doc:varref name="honor_followup_to" link="honor-followup-to"/>
7324         configuration
7325         variable is set.  Using list-reply will in this case also make sure
7326         that the reply goes to the mailing list, even if it's not specified
7327         in the list of recipients in the <literal>Mail-Followup-To</literal>.
7328       </para>
7329       
7330       <para>
7331         Note that, when header editing is enabled, you can create a
7332         <literal>Mail-Followup-To</literal> header manually.  Mutt-ng will only
7333         auto-generate
7334         this header if it doesn't exist when you send the message.
7335       </para>
7336       
7337       <para>
7338         The other method some mailing list admins use is to generate a
7339         ``Reply-To'' field which points back to the mailing list address rather
7340         than the author of the message.  This can create problems when trying
7341         to reply directly to the author in private, since most mail clients
7342         will automatically reply to the address given in the ``Reply-To''
7343         field.  Mutt-ng uses the <muttng-doc:varref name="reply_to" link="reply-to"/>
7344         variable to help decide which address to use.  If set to <emphasis>
7345           ask-yes
7346         </emphasis>
7347         or
7348         <emphasis>ask-no</emphasis>, you will be
7349         prompted as to whether or not you would like to use the address given
7350         inthe ``Reply-To'' field, or reply directly to the address given in the
7351         ``From'' field.  When set to <emphasis>yes</emphasis>, the ``Reply-To''
7352         field will be used when
7353         present.
7354       </para>
7355       
7356       <para>
7357         The ``X-Label:'' header field can be used to further identify mailing
7358         lists or list subject matter (or just to annotate messages
7359         individually).  The <muttng-doc:varref name="index_format" link="index-format"/>
7360         variable's ``%y'' and
7361         ``%Y'' escapes can be used to expand ``X-Label:'' fields in the
7362         index, and Mutt-ng's pattern-matcher can match regular expressions to
7363         ``X-Label:'' fields with the ``<muttng-doc:pattern name="y"/>'' selector.  ``X-Label:'' is
7364         not a
7365         standard message header field, but it can easily be inserted by
7366         procmailand other mail filtering agents.
7367       </para>
7368       
7369       <para>
7370         Lastly, Mutt-ng has the ability to <link linkend="sort">sort</link> the
7371         mailbox into
7372         <link linkend="threads">threads</link>.  A thread is a group of
7373         messages which all relate to the same
7374         subject.  This is usually organized into a tree-like structure where a
7375         message and all of its replies are represented graphically.  If you've
7376         ever
7377         used a threaded news client, this is the same concept.  It makes
7378         dealingwith large volume mailing lists easier because you can easily
7379         delete
7380         uninteresting threads and quickly find topics of value.
7381       </para>
7382       
7383       <para>
7384         
7385       </para>
7386       
7387     </sect1>
7388     
7389     <sect1 id="editing-threads">
7390       <title>Editing threads</title>
7391       
7392       <para>
7393         Mutt-ng has the ability to dynamically restructure threads that are
7394         broken
7395         either by misconfigured software or bad behavior from some
7396         correspondents. This allows to clean your mailboxes formats) from these
7397         annoyances which make it hard to follow a discussion.
7398       </para>
7399       
7400       <sect2 id="editing-threads-link">
7401         <title>Linking threads</title>
7402         
7403         <para>
7404           Some mailers tend to "forget" to correctly set the "In-Reply-To:" and
7405           "References:" headers when replying to a message. This results in
7406           broken
7407           discussions because Mutt-ng has not enough information to guess the
7408           correct
7409           threading.
7410           You can fix this by tagging the reply, then moving to the parent
7411           message
7412           and using the ``link-threads'' function (bound to &#38; by default).
7413           The
7414           reply will then be connected to this "parent" message.
7415         </para>
7416         
7417         <para>
7418           You can also connect multiple children at once, tagging them and
7419           using the
7420           tag-prefix command (';') or the auto_tag option.
7421         </para>
7422         
7423       </sect2>
7424       
7425       <sect2 id="editing-threads-break">
7426         <title>Breaking threads</title>
7427         
7428         <para>
7429           On mailing lists, some people are in the bad habit of starting a new
7430           discussion by hitting "reply" to any message from the list and
7431           changing
7432           the subject to a totally unrelated one.
7433           You can fix such threads by using the ``break-thread'' function
7434           (boundby default to #), which will turn the subthread starting
7435           from the
7436           current message into a whole different thread.
7437         </para>
7438         
7439         <para>
7440           
7441         </para>
7442         
7443       </sect2>
7444       
7445     </sect1>
7446     
7447     <sect1 id="dsn">
7448       <title>Delivery Status Notification (DSN) Support</title>
7449       
7450       <para>
7451         <muttng-doc:rfc num="1894"/> defines a set of MIME content types for relaying information
7452         about the status of electronic mail messages.  These can be thought of
7453         as
7454         ``return receipts.''
7455       </para>
7456       
7457       <para>
7458         Users can make use of it in one of the following two ways:
7459       </para>
7460       
7461       <para>
7462         
7463         <itemizedlist>
7464           <listitem>
7465             
7466             <para>
7467               Berkeley sendmail 8.8.x currently has some command line options
7468               in which the mail client can make requests as to what type of
7469               status
7470               messages should be returned.
7471             </para>
7472           </listitem>
7473           <listitem>
7474             
7475             <para>
7476               The SMTP support via libESMTP supports it, too.
7477             </para>
7478           </listitem>
7479           
7480         </itemizedlist>
7481         
7482       </para>
7483       
7484       <para>
7485         To support this, there are two variables:
7486       </para>
7487       
7488       <para>
7489         
7490         <itemizedlist>
7491           <listitem>
7492             
7493             <para>
7494               <muttng-doc:varref name="dsn_notify" link="dsn-notify"/> is used
7495               to request receipts for different results (such as failed
7496               message,message delivered, etc.).
7497               
7498             </para>
7499           </listitem>
7500           <listitem>
7501             
7502             <para>
7503               <muttng-doc:varref name="dsn_return" link="dsn-return"/> requests
7504               how much of your message should be returned with the receipt
7505               (headers or full message).
7506               
7507             </para>
7508           </listitem>
7509           
7510         </itemizedlist>
7511         
7512       </para>
7513       
7514       <para>
7515         Please see the reference chapter for possible values.
7516       </para>
7517       
7518       <para>
7519         
7520       </para>
7521       
7522     </sect1>
7523     
7524     <sect1 id="pop3">
7525       <title>POP3 Support (OPTIONAL)</title>
7526       
7527       <para>
7528         If Mutt-ng was compiled with POP3 support (by running the <emphasis>
7529           configure
7530         </emphasis>
7531         script with the <emphasis>--enable-pop</emphasis> flag), it has the
7532         ability to work
7533         with mailboxes located on a remote POP3 server and fetch mail for local
7534         browsing.
7535       </para>
7536       
7537       <para>
7538         You can access the remote POP3 mailbox by selecting the folder
7539         <literal>pop://popserver/</literal>.
7540       </para>
7541       
7542       <para>
7543         You can select an alternative port by specifying it with the server,
7544         i.e.:
7545         <literal>pop://popserver:port/</literal>.
7546       </para>
7547       
7548       <para>
7549         You can also specify different username for each folder, i.e.:
7550         <literal>pop://username@popserver[:port]/</literal>.
7551       </para>
7552       
7553       <para>
7554         Polling for new mail is more expensive over POP3 than locally. For this
7555         reason the frequency at which Mutt-ng will check for mail remotely can
7556         be
7557         controlled by the
7558         <muttng-doc:varref name="pop_mail_check" link="pop-mail-check"/>
7559         variable, which defaults to every 60 seconds.
7560       </para>
7561       
7562       <para>
7563         If Mutt-ng was compiled with SSL support (by running the <emphasis>
7564           configure
7565         </emphasis>
7566         script with the <emphasis>--with-ssl</emphasis> flag), connections to
7567         POP3 servers
7568         can be encrypted. This naturally requires that the server supports
7569         SSL encrypted connections. To access a folder with POP3/SSL, you should
7570         use pops: prefix, ie:
7571         <literal>pops://[username@]popserver[:port]/</literal>.
7572       </para>
7573       
7574       <para>
7575         Another way to access your POP3 mail is the <emphasis>fetch-mail</emphasis> function
7576         (default: G).  It allows to connect to <link
7577           linkend="pop-host">pop-host</link>
7578         ,fetch all your new mail and place it in the
7579         local <muttng-doc:varref name="spoolfile" link="spoolfile"/>.  After this
7580         point, Mutt-ng runs exactly as if the mail had always been local.
7581       </para>
7582       
7583       <para>
7584         <emphasis role="bold">Note:</emphasis> If you only need to fetch all
7585         messages to local mailbox
7586         you should consider using a specialized program, such as
7587         <muttng-doc:man name="fetchmail"/>.
7588       </para>
7589       
7590       <para>
7591         
7592       </para>
7593       
7594     </sect1>
7595     
7596     <sect1 id="imap">
7597       <title>IMAP Support (OPTIONAL)</title>
7598       
7599       <para>
7600         If Mutt-ng was compiled with IMAP support (by running the
7601         <emphasis>configure</emphasis> script with the
7602         <emphasis>--enable-imap</emphasis> flag), it has the
7603         ability to work with folders located on a remote IMAP server.
7604       </para>
7605       
7606       <para>
7607         You can access the remote inbox by selecting the folder via its
7608         URL:
7609       </para>
7610
7611       <para>
7612         <screen>
7613 imap://imapserver/INBOX</screen>
7614       </para>
7615
7616       <para>
7617         where <literal>imapserver</literal> is the name of the IMAP
7618         server and <literal>INBOX</literal> is the special name for your
7619         spool mailbox on the IMAP server. If you want to access another
7620         mail folder at the IMAP server, you should use
7621       </para>
7622
7623       <para>
7624         <screen>
7625 imap://imapserver/path/to/folder</screen>
7626       </para>
7627         
7628       <para>
7629         where <literal>path/to/folder</literal> is the path
7630         of the folder you want to access. You can select an alternative
7631         port by specifying it with the server, i.e.:
7632       </para>
7633
7634       <para>
7635         <screen>
7636 imap://imapserver:port/INBOX</screen>
7637       </para>
7638       
7639       <para>
7640         You can also specify different username for each folder by
7641         prenpending your username and an @ symbol to the server's name.
7642       </para>
7643       
7644       <para>
7645         If Mutt-ng was compiled with SSL support (by running the <emphasis>
7646           configure
7647         </emphasis>
7648         script with the <emphasis>--with-ssl</emphasis> flag), connections to
7649         IMAP servers
7650         can be encrypted. This naturally requires that the server supports
7651         SSL encrypted connections. To access a folder with IMAP/SSL, you only
7652         need to substitute the initial <literal>imap://</literal> by
7653         <literal>imaps://</literal> in the above examples.
7654       </para>
7655       
7656       <para>
7657         Note that not all servers use / as the hierarchy separator.  Mutt-ng
7658         should
7659         correctly notice which separator is being used by the server and
7660         convertpaths accordingly.
7661       </para>
7662       
7663       <para>
7664         When browsing folders on an IMAP server, you can toggle whether to look
7665         at only the folders you are subscribed to, or all folders with the
7666         <emphasis>toggle-subscribed</emphasis> command.  See also the 
7667         <muttng-doc:varref name="imap_list_subscribed" link="imap-list-subscribed"/>
7668         variable.
7669       </para>
7670       
7671       <para>
7672         Polling for new mail on an IMAP server can cause noticeable delays. So,
7673         you'll
7674         want to carefully tune the
7675         <muttng-doc:varref name="imap_mail_check" link="imap-mail-check"/>
7676         and
7677         <muttng-doc:varref name="timeout" link="timeout"/>
7678         variables.
7679       </para>
7680       
7681       <para>
7682         Note that if you are using mbox as the mail store on UW servers prior
7683         tov12.250, the server has been reported to disconnect a client if
7684         another client
7685         selects the same folder.
7686       </para>
7687       
7688       <sect2 id="imap-browser">
7689         <title>The Folder Browser</title>
7690         
7691         <para>
7692           As of version 1.2, mutt supports browsing mailboxes on an IMAP
7693           server. This is mostly the same as the local file browser, with the
7694           following differences:
7695           
7696           <itemizedlist>
7697             <listitem>
7698               
7699               <para>
7700                 Instead of file permissions, mutt displays the string "IMAP",
7701                 possibly followed by the symbol "+", indicating
7702                 that the entry contains both messages and subfolders. On
7703                 Cyrus-like servers folders will often contain both messages and
7704                 subfolders. 
7705               </para>
7706             </listitem>
7707             <listitem>
7708               
7709               <para>
7710                 For the case where an entry can contain both messages and
7711                 subfolders, the selection key (bound to <literal>enter</literal> by default)
7712                 will choose to descend into the subfolder view. If you wish to
7713                 view
7714                 the messages in that folder, you must use <literal>view-file</literal> instead
7715                 (bound to <literal>space</literal> by default).
7716               </para>
7717             </listitem>
7718             <listitem>
7719               
7720               <para>
7721                 You can create, delete and rename mailboxes with the
7722                 <literal>create-mailbox</literal>, <literal>delete-mailbox</literal>, and
7723                 <literal>rename-mailbox</literal> commands (default bindings: <literal>
7724                   C
7725                 </literal>
7726                 ,
7727                 <literal>d</literal> and <literal>r</literal>, respectively).
7728                 You may also
7729                 <literal>subscribe</literal> and <literal>unsubscribe</literal>
7730                 to mailboxes (normally
7731                 these are bound to <literal>s</literal> and <literal>u</literal>, respectively).
7732               </para>
7733             </listitem>
7734             
7735           </itemizedlist>
7736           
7737         </para>
7738         
7739       </sect2>
7740       
7741       <sect2 id="imap-auth">
7742         <title>Authentication</title>
7743         
7744         <para>
7745           Mutt-ng supports four authentication methods with IMAP servers: SASL,
7746           GSSAPI, CRAM-MD5, and LOGIN (there is a patch by Grant Edwards to add
7747           NTLM authentication for you poor exchange users out there, but it has
7748           yet to be integrated into the main tree). There is also support for
7749           the pseudo-protocol ANONYMOUS, which allows you to log in to a public
7750           IMAP server without having an account. To use ANONYMOUS, simply make
7751           your username blank or "anonymous".
7752         </para>
7753         
7754         <para>
7755           SASL is a special super-authenticator, which selects among several
7756           protocols
7757           (including GSSAPI, CRAM-MD5, ANONYMOUS, and DIGEST-MD5) the most
7758           secure
7759           method available on your host and the server. Using some of these
7760           methods
7761           (including DIGEST-MD5 and possibly GSSAPI), your entire session will
7762           be
7763           encrypted and invisible to those teeming network snoops. It is the
7764           best
7765           option if you have it. To use it, you must have the Cyrus SASL
7766           libraryinstalled on your system and compile mutt with the <emphasis>
7767             --with-sasl
7768           </emphasis>
7769           flag.
7770         </para>
7771         
7772         <para>
7773           Mutt-ng will try whichever methods are compiled in and available on
7774           the server,
7775           in the following order: SASL, ANONYMOUS, GSSAPI, CRAM-MD5, LOGIN.
7776         </para>
7777         
7778         <para>
7779           There are a few variables which control authentication: 
7780           
7781           <itemizedlist>
7782             <listitem>
7783               
7784               <para>
7785                 <muttng-doc:varref name="imap_user" link="imap-user"/> - controls
7786                 the username under which you request authentication on the IMAP
7787                 server,
7788                 for all authenticators. This is overridden by an explicit
7789                 username in
7790                 the mailbox path (i.e. by using a mailbox name of the form
7791                 <literal>{user@host}</literal>).
7792               </para>
7793             </listitem>
7794             <listitem>
7795               
7796               <para>
7797                 <muttng-doc:varref name="imap_pass" link="imap-pass"/> - a
7798                 password which you may preset, used by all authentication
7799                 methods where
7800                 a password is needed.
7801               </para>
7802             </listitem>
7803             <listitem>
7804               
7805               <para>
7806                 <muttng-doc:varref name="imap_authenticators" link="imap-authenticators"/>
7807                 - a colon-delimited list of IMAP
7808                 authentication methods to try, in the order you wish to try
7809                 them. If
7810                 specified, this overrides mutt's default (attempt everything,
7811                 in the order
7812                 listed above).
7813               </para>
7814             </listitem>
7815             
7816           </itemizedlist>
7817           
7818         </para>
7819         
7820         <para>
7821           
7822         </para>
7823         
7824       </sect2>
7825       
7826     </sect1>
7827     
7828     <sect1 id="nntp">
7829       <title>NNTP Support (OPTIONAL)</title>
7830       
7831       <para>
7832         If compiled with ``--enable-nntp'' option, Mutt-ng can read news from
7833         a newsserver via NNTP.  You can open a newsgroup with the
7834         ``change-newsgroup'' function from the index/pager which is by default
7835         bound to <literal>i</literal>.
7836       </para>
7837       
7838       <para>
7839         The Default newsserver can be obtained from the <muttng-doc:envvar name="NNTPSERVER"/>
7840         environment variable. Like other
7841         news readers,
7842         info about subscribed newsgroups is saved in a file as specified by the
7843         <muttng-doc:varref name="nntp_newsrc" link="nntp-newsrc"/> variable.
7844         Article headers are cached and can be loaded from a file when a
7845         newsgroup is entered instead loading from newsserver; currently, this
7846         caching mechanism still is different from the header caching for
7847         maildir/IMAP.
7848       </para>
7849       
7850       <sect2 id="nntp-scoring">
7851         <title>Again: Scoring</title>
7852         
7853         <para>
7854           Especially for Usenet, people often ask for advanced filtering
7855           and scoring functionality. Of course, mutt-ng has scoring and
7856           allows a killfile, too. How to use a killfile has been discussed
7857           in <link linkend="command-score">Message Scoring</link>.
7858         </para>
7859         
7860         <para>
7861           What has not been discusses in detail is mutt-ng's built-in
7862           realname filter. For may newsreaders including those for
7863           ``advanced users'' like <emphasis>slrn</emphasis> or <emphasis>tin</emphasis>, there are frequent
7864           request for such functionality. The solutions offered often are
7865           complicated regular expressions.
7866         </para>
7867         
7868         <para>
7869           In mutt-ng this is as easy as
7870         </para>
7871         
7872         <para>
7873           
7874           <screen>
7875 score <muttng-doc:pattern name="*"/> =42</screen>
7876           
7877         </para>
7878         
7879         <para>
7880           This tells mutt-ng to apply a score of 42 to all messages whose
7881           sender specified a valid realname and a valid email address. Using
7882         </para>
7883         
7884         <para>
7885           
7886           <screen>
7887 score !<muttng-doc:pattern name="*"/> =42</screen>
7888           
7889         </para>
7890         
7891         <para>
7892           on the contrary applies a score of 42 to all messages <emphasis>not</emphasis>
7893           matching those criteria which are very strict:
7894         </para>
7895         
7896         <para>
7897           
7898           <itemizedlist>
7899             <listitem>
7900               
7901               <para>
7902                 Email addresses must be valid according to <muttng-doc:rfc num="2822"/>
7903               </para>
7904             </listitem>
7905             <listitem>
7906               
7907               <para>
7908                 the name must consist of at least 2 fields whereby a field
7909                 must not end in a dot. This means that ``Joe User'' and ``Joe
7910                 A.User'' are valid while ``J. User'' and ``J. A. User'' aren't.
7911                 
7912               </para>
7913             </listitem>
7914             <listitem>
7915               
7916               <para>
7917                 it's assumed that users are interested in reading their
7918                 own mail and mail from people who they have defined an alias
7919                 forso that those 2 groups of messages are excluded from the
7920                 strict
7921                 rules.
7922                 
7923               </para>
7924             </listitem>
7925             
7926           </itemizedlist>
7927           
7928         </para>
7929         
7930         <para>
7931           
7932         </para>
7933         
7934         <para>
7935           
7936         </para>
7937         
7938       </sect2>
7939       
7940     </sect1>
7941     
7942     <sect1 id="smtp">
7943       <title>SMTP Support (OPTIONAL)</title>
7944       
7945       <para>
7946         Mutt-ng can be built using a library called ``libESMTP'' which
7947         provides SMTP functionality. When <literal>configure</literal> was
7948         called with
7949         <literal>--with-libesmtp</literal> or the output <literal>muttng -v</literal> contains
7950         <literal>+USE_LIBESMTP</literal>, this will be or is the case
7951         already. The SMTP
7952         support includes support for Delivery Status Notification
7953         (see <link linkend="dsn">dsn</link> section) as well as
7954         handling the <literal>8BITMIME</literal> flag controlled via
7955         <muttng-doc:varref name="use_8bitmime" link="use-8bitmime"/>.
7956       </para>
7957       
7958       <para>
7959         To enable sending mail directly via SMTP without an MTA such as
7960         Postfix or SSMTP and the like, simply set the <muttng-doc:varref name="smtp_host" link="smtp-host"/>
7961         variable pointing to your SMTP server.
7962       </para>
7963       
7964       <para>
7965         Authentication mechanisms are available via the <muttng-doc:varref name="smtp_user" link="smtp-user"/>
7966         and <muttng-doc:varref name="smtp_pass" link="smtp-pass"/> variables.
7967       </para>
7968       
7969       <para>
7970         Transport Encryption via the StartTLS command is also available. For
7971         this to work, first of all Mutt-ng must be built with SSL or GNUTLS.
7972         Secondly, the <muttng-doc:varref name="smtp_use_tls" link="smtp-use-tls"/> variable
7973         must be either set
7974         to ``enabled'' or ``required.'' In both cases, StartTLS will be used if
7975         the server supports it: for the second case, the connection will fail
7976         ifit doesn't while switching back to unencrypted communication for the
7977         first one.
7978       </para>
7979       
7980       <para>
7981         Some mail providers require user's to set a particular envelope
7982         sender, i.e. they allow for only one value which may not be what the
7983         user wants to send as the <literal>From:</literal> header. In this
7984         case, the variable
7985         <muttng-doc:varref name="smtp_envelope" link="smtp-envelope"/> may be used
7986         to set the envelope different from the <literal>From:</literal> header.
7987       </para>
7988       
7989     </sect1>
7990     
7991     <sect1 id="account-hook">
7992       <title>Managing multiple IMAP/POP/NNTP accounts (OPTIONAL)</title>
7993       
7994       <para>
7995         If you happen to have accounts on multiple IMAP and/or POP servers,
7996         you may find managing all the authentication settings inconvenient and
7997         error-prone.  The <muttng-doc:hook name="account"/> command may help. This hook works like
7998         <muttng-doc:hook name="folder"/> but is invoked whenever you access a remote mailbox
7999         (including inside the folder browser), not just when you open the
8000         mailbox.
8001       </para>
8002       
8003       <para>
8004         Some examples:
8005       </para>
8006       
8007       <para>
8008         
8009         <screen>
8010 account-hook . 'unset imap_user; unset imap_pass; unset tunnel'
8011 account-hook imap://host1/ 'set imap_user=me1 imap_pass=foo'
8012 account-hook imap://host2/ 'set tunnel="ssh host2 /usr/libexec/imapd"'</screen>
8013         
8014       </para>
8015       
8016       <para>
8017         
8018       </para>
8019       
8020     </sect1>
8021     
8022     <sect1 id="urlview">
8023       <title>Start a WWW Browser on URLs (EXTERNAL)</title>
8024       
8025       <para>
8026         If a message contains URLs (<emphasis>unified resource locator</emphasis> = address in the
8027         WWW space like <emphasis>http://www.mutt.org/</emphasis>), it is
8028         efficient to get
8029         a menu with all the URLs and start a WWW browser on one of them.  This
8030         functionality is provided by the external urlview program which can be
8031         retrieved at <muttng-doc:web url="ftp://ftp.mutt.org/mutt/contrib/"/>
8032         and the configuration commands:
8033         
8034         <screen>
8035 macro index \cb |urlview\n
8036 macro pager \cb |urlview\n</screen>
8037         
8038       </para>
8039       
8040       <para>
8041         
8042       </para>
8043       
8044     </sect1>
8045     
8046     <sect1 id="compressed-folders">
8047       <title>Compressed folders Support (OPTIONAL)</title>
8048       
8049       <para>
8050         If Mutt-ng was compiled with compressed folders support (by running the
8051         <emphasis>configure</emphasis> script with the <emphasis>
8052           --enable-compressed
8053         </emphasis>
8054         flag), Mutt
8055         can open folders stored in an arbitrary format, provided that the user
8056         has a script to convert from/to this format to one of the accepted.
8057       </para>
8058       
8059       <para>
8060         The most common use is to open compressed archived folders e.g. with
8061         gzip.
8062       </para>
8063       
8064       <para>
8065         In addition, the user can provide a script that gets a folder in an
8066         accepted format and appends its context to the folder in the
8067         user-defined format, which may be faster than converting the entire
8068         folder to the accepted format, appending to it and converting back to
8069         the user-defined format.
8070       </para>
8071       
8072       <para>
8073         There are three hooks defined (<muttng-doc:hook name="open"/>,
8074         <muttng-doc:hook name="close"/> and <muttng-doc:hook name="append"/>
8075         )which define commands to uncompress and compress
8076         a folder and to append messages to an existing compressed folder 
8077         respectively.
8078       </para>
8079       
8080       <para>
8081         For example:
8082       </para>
8083       
8084       <para>
8085         
8086         <screen>
8087 open-hook \\.gz$ "gzip -cd %f &#62; %t" 
8088 close-hook \\.gz$ "gzip -c %t &#62; %f"
8089 append-hook \\.gz$ "gzip -c %t &#62;&#62; %f" </screen>
8090         
8091       </para>
8092       
8093       <para>
8094         You do not have to specify all of the commands. If you omit <muttng-doc:hook name="append"/>
8095         ,the folder will be open and
8096         closed again each time you will add to it. If you omit <muttng-doc:hook name="close"/>
8097         (or give empty command) , the
8098         folder will be open in the  mode. If you specify <muttng-doc:hook name="append"/>
8099         though you'll be able to append
8100         to the folder.
8101       </para>
8102       
8103       <para>
8104         Note that Mutt-ng will only try to use hooks if the file is not in one
8105         of
8106         the accepted formats. In particular, if the file is empty, mutt
8107         supposes it is not compressed. This is important because it allows the
8108         use of programs that do not have well defined extensions. Just use
8109         &quot;.&quot; as a regexp. But this may be surprising if your
8110         compressing script produces empty files. In this situation, unset
8111         <muttng-doc:varref name="save_empty" link="save-empty"/>
8112         ,so that the compressed file
8113         will be removed if you delete all of the messages.
8114       </para>
8115       
8116       <sect2 id="open-hook">
8117         <title>Open a compressed mailbox for reading</title>
8118         
8119         <para>
8120           Usage: <muttng-doc:hook name="open"/> <emphasis>regexp</emphasis> &quot;<emphasis>command</emphasis>&quot;
8121         </para>
8122         
8123         <para>
8124           The <emphasis>command</emphasis> is the command that can be used for
8125           opening the
8126           folders whose names match <emphasis>regexp</emphasis>.
8127         </para>
8128         
8129         <para>
8130           The <emphasis>command</emphasis> string is the printf-like format
8131           string, and it
8132           should accept two parameters: %f, which is replaced with the
8133           (compressed) folder name, and %t which is replaced with the
8134           name of the temporary folder to which to write.
8135         </para>
8136         
8137         <para>
8138           %f and %t can be repeated any number of times in the
8139           command string, and all of the entries are replaced with the
8140           appropriate folder name. In addition, %% is replaced by
8141           %, as in printf, and any other %anything is left as is.
8142         </para>
8143         
8144         <para>
8145           The <emphasis>command</emphasis> should <emphasis role="bold">not</emphasis> remove the original compressed file.
8146           The <emphasis>command</emphasis> should return non-zero exit status
8147           if it fails, so
8148           mutt knows something's wrong.
8149         </para>
8150         
8151         <para>
8152           Example:
8153         </para>
8154         
8155         <para>
8156           
8157           <screen>
8158 open-hook \\.gz$ "gzip -cd %f &#62; %t" 
8159 </screen>
8160           
8161         </para>
8162         
8163         <para>
8164           If the <emphasis>command</emphasis> is empty, this operation is
8165           disabled for this file
8166           type.
8167         </para>
8168         
8169       </sect2>
8170       
8171       <sect2 id="close-hook">
8172         <title>Write a compressed mailbox</title>
8173         
8174         <para>
8175           Usage: <muttng-doc:hook name="close"/> <emphasis>regexp</emphasis>&quot;<emphasis>command</emphasis>&quot;
8176         </para>
8177         
8178         <para>
8179           This is used to close the folder that was open with the <muttng-doc:hook name="open"/>
8180           command after some changes were made to it.
8181         </para>
8182         
8183         <para>
8184           The <emphasis>command</emphasis> string is the command that can be
8185           used for closing the
8186           folders whose names match <emphasis>regexp</emphasis>. It has the
8187           same format as in 
8188           the <muttng-doc:hook name="open"/> command. Temporary
8189           folder
8190           in this case is the folder previously produced by the <muttng-doc:hook name="open"/>
8191           command.
8192         </para>
8193         
8194         <para>
8195           The <emphasis>command</emphasis> should <emphasis role="bold">not</emphasis> remove the decompressed file. The
8196           <emphasis>command</emphasis> should return non-zero exit status if it
8197           fails, so mutt
8198           knows something's wrong.
8199         </para>
8200         
8201         <para>
8202           Example:
8203         </para>
8204         
8205         <para>
8206           
8207           <screen>
8208 close-hook \\.gz$ "gzip -c %t &#62; %f"</screen>
8209           
8210         </para>
8211         
8212         <para>
8213           If the <emphasis>command</emphasis> is empty, this operation is
8214           disabled for this file
8215           type, and the file can only be open in the readonly mode.
8216         </para>
8217         
8218         <para>
8219           <muttng-doc:hook name="close"/> is not called when you
8220           exit
8221           from the folder if the folder was not changed.
8222         </para>
8223         
8224       </sect2>
8225       
8226       <sect2 id="append-hook">
8227         <title>Append a message to a compressed mailbox</title>
8228         
8229         <para>
8230           Usage: <muttng-doc:hook name="append"/> <emphasis>regexp</emphasis>&quot;<emphasis>command</emphasis>&quot;
8231         </para>
8232         
8233         <para>
8234           This command is used for saving to an existing compressed folder.
8235           The <emphasis>command</emphasis> is the command that can be used for
8236           appending to the
8237           folders whose names match <emphasis>regexp</emphasis>. It has the
8238           same format as in 
8239           the <muttng-doc:hook name="open"/> command.
8240           The temporary folder in this case contains the messages that are
8241           beingappended. 
8242         </para>
8243         
8244         <para>
8245           The <emphasis>command</emphasis> should <emphasis role="bold">not</emphasis> remove the decompressed file. The
8246           <emphasis>command</emphasis> should return non-zero exit status if it
8247           fails, so mutt
8248           knows something's wrong.
8249         </para>
8250         
8251         <para>
8252           Example:
8253         </para>
8254         
8255         <para>
8256           
8257           <screen>
8258 append-hook \\.gz$ "gzip -c %t &#62;&#62; %f" </screen>
8259           
8260         </para>
8261         
8262         <para>
8263           When <muttng-doc:hook name="append"/> is used, the
8264           folder is
8265           not opened, which saves time, but this means that we can not find out
8266           what the folder type is. Thus the default (<muttng-doc:varref name="mbox_type" link="mbox-type"/>
8267           )type is always supposed (i.e.
8268           this is the format used for the temporary folder).
8269         </para>
8270         
8271         <para>
8272           If the file does not exist when you save to it, <muttng-doc:hook name="close"/>
8273           is called, and not <muttng-doc:hook name="append"/>. <muttng-doc:hook name="append"/>
8274           is only
8275           for appending to existing folders.
8276         </para>
8277         
8278         <para>
8279           If the <emphasis>command</emphasis> is empty, this operation is
8280           disabled for this file
8281           type. In this case, the folder will be open and closed again (using
8282           <muttng-doc:hook name="open"/> and <muttng-doc:hook name="close"/>
8283           respectively) each time you will add to it.
8284         </para>
8285         
8286       </sect2>
8287       
8288       <sect2 id="encrypted-folders">
8289         <title>Encrypted folders</title>
8290         
8291         <para>
8292           The compressed folders support can also be used to handle encrypted
8293           folders. If you want to encrypt a folder with PGP, you may want to
8294           usethe following hooks:
8295         </para>
8296         
8297         <para>
8298           
8299           <screen>
8300 open-hook  \\.pgp$ "pgp -f &#60; %f &#62; %t"
8301 close-hook \\.pgp$ "pgp -fe YourPgpUserIdOrKeyId &#60; %t &#62; %f"
8302 </screen>
8303           
8304         </para>
8305         
8306         <para>
8307           Please note, that PGP does not support appending to an encrypted
8308           folder, so there is no <muttng-doc:hook name="append"/> defined.
8309         </para>
8310         
8311         <para>
8312           <emphasis role="bold">Note:</emphasis> the folder is temporary stored
8313           decrypted in the /tmp
8314           directory, where it can be read by your system administrator. So
8315           thinkabout the security aspects of this.
8316         </para>
8317         
8318         <para>
8319           
8320         </para>
8321         
8322         <para>
8323           
8324         </para>
8325         
8326       </sect2>
8327       
8328     </sect1>
8329     
8330   </chapter>
8331   <!--}}}-->
8332   
8333   <chapter id="mime-support"> <!--{{{-->
8334     <title>Mutt-ng's MIME Support</title>
8335     
8336     <para>
8337       Quite a bit of effort has been made to make Mutt-ng the premier text-mode
8338       MIME MUA.  Every effort has been made to provide the functionality that
8339       the discerning MIME user requires, and the conformance to the standards
8340       wherever possible.  When configuring Mutt-ng for MIME, there are two
8341       extratypes of configuration files which Mutt-ng uses.  One is the
8342       <literal>mime.types</literal> file, which contains the mapping of file
8343       extensions to 
8344       IANA MIME types.  The other is the <literal>mailcap</literal> file, which
8345       specifies
8346       the external commands to use for handling specific MIME types.
8347     </para>
8348     
8349     <sect1 id="mime">
8350       <title>Using MIME in Mutt</title>
8351       
8352       <para>
8353         There are three areas/menus in Mutt-ng which deal with MIME, they are
8354         the
8355         pager (while viewing a message), the attachment menu and the compose
8356         menu.
8357       </para>
8358       
8359       <sect2 id="mime-view">
8360         <title>Viewing MIME messages in the pager</title>
8361         
8362         <para>
8363           When you select a message from the index and view it in the pager,
8364           Mutt
8365           decodes the message to a text representation.  Mutt-ng internally
8366           supports
8367           a number of MIME types, including <literal>text/plain, text/enriched,
8368             message/rfc822, and message/news
8369           </literal>
8370           .In addition, the export
8371           controlled version of Mutt-ng recognizes a variety of PGP MIME types,
8372           including PGP/MIME and application/pgp.
8373         </para>
8374         
8375         <para>
8376           Mutt-ng will denote attachments with a couple lines describing them.
8377           These lines are of the form:
8378           
8379           <screen>
8380 [-- Attachment #1: Description --]
8381 [-- Type: text/plain, Encoding: 7bit, Size: 10000 --]</screen>
8382           
8383           Where the <literal>Description</literal> is the description or
8384           filename given for the
8385           attachment, and the <literal>Encoding</literal> is one of
8386           <literal>7bit/8bit/quoted-printable/base64/binary</literal>.
8387         </para>
8388         
8389         <para>
8390           If Mutt-ng cannot deal with a MIME type, it will display a message
8391           like:
8392           
8393           <screen>
8394 [-- image/gif is unsupported (use 'v' to view this part) --]</screen>
8395           
8396         </para>
8397         
8398       </sect2>
8399       
8400       <sect2 id="attach-menu">
8401         <title>The Attachment Menu</title>
8402         
8403         <para>
8404           The default binding for <literal>view-attachments</literal> is `v',
8405           which displays the
8406           attachment menu for a message.  The attachment menu displays a list
8407           ofthe attachments in a message.  From the attachment menu, you can
8408           save,
8409           print, pipe, delete, and view attachments.  You can apply these
8410           operations to a group of attachments at once, by tagging the
8411           attachments
8412           and by using the ``tag-prefix'' operator.  You can also reply to the
8413           current message from this menu, and only the current attachment (or
8414           the
8415           attachments tagged) will be quoted in your reply.  You can view
8416           attachments as text, or view them using the mailcap viewer
8417           definition.
8418         </para>
8419         
8420         <para>
8421           Finally, you can apply the usual message-related functions (like 
8422           <muttng-doc:funcref name="resend-message"/>, and the reply
8423           and forward functions) to attachments of type <literal>message/rfc822</literal>.
8424         </para>
8425         
8426         <para>
8427           See the help on the attachment menu for more information.
8428         </para>
8429         
8430       </sect2>
8431       
8432       <sect2 id="compose-menu">
8433         <title>The Compose Menu</title>
8434         
8435         <para>
8436           The compose menu is the menu you see before you send a message.  It
8437           allows you to edit the recipient list, the subject, and other aspects
8438           of your message.  It also contains a list of the attachments of your
8439           message, including the main body.  From this menu, you can print,
8440           copy,
8441           filter, pipe, edit, compose, review, and rename an attachment or a
8442           list of tagged attachments.  You can also modifying the attachment
8443           information, notably the type, encoding and description.
8444         </para>
8445         
8446         <para>
8447           Attachments appear as follows:
8448           
8449           <screen>
8450 1 [text/plain, 7bit, 1K]             /tmp/mutt-euler-8082-0 &#60;no description&#62;
8451 2 [applica/x-gunzip, base64, 422K]   ~/src/mutt-0.85.tar.gz &#60;no description&#62;</screen>
8452           
8453         </para>
8454         
8455         <para>
8456           The '-' denotes that Mutt-ng will delete the file after sending (or
8457           postponing, or canceling) the message.  It can be toggled with the
8458           <literal>toggle-unlink</literal> command (default: u).  The next
8459           field is the MIME
8460           content-type, and can be changed with the <literal>edit-type</literal> command
8461           (default: ^T).  The next field is the encoding for the
8462           attachment,
8463           which allows a binary message to be encoded for transmission on 7bit
8464           links.  It can be changed with the <literal>edit-encoding</literal>
8465           command
8466           (default: ^E).  The next field is the size of the attachment,
8467           rounded to kilobytes or megabytes.  The next field is the filename,
8468           which can be changed with the <literal>rename-file</literal> command
8469           (default: R).
8470           The final field is the description of the attachment, and can be
8471           changed with the <literal>edit-description</literal> command
8472           (default: d).
8473         </para>
8474         
8475         <para>
8476           
8477         </para>
8478         
8479       </sect2>
8480       
8481     </sect1>
8482     
8483     <sect1 id="mime-types">
8484       <title>
8485         MIME Type configuration with <literal>mime.types</literal>  
8486       </title>
8487       
8488       <para>
8489         When you add an attachment to your mail message, Mutt-ng searches your
8490         personal mime.types file within <muttng-doc:envvar name="HOME"/> and then
8491         the system mime.types file at <literal>/usr/local/share/mutt/mime.types</literal> or
8492         <literal>/etc/mime.types</literal>
8493       </para>
8494       
8495       <para>
8496         The mime.types file consist of lines containing a MIME type and a space
8497         separated list of extensions.  For example:
8498         
8499         <screen>
8500 application/postscript          ps eps
8501 application/pgp                 pgp
8502 audio/x-aiff                    aif aifc aiff</screen>
8503         
8504         A sample <literal>mime.types</literal> file comes with the Mutt-ng
8505         distribution, and
8506         should contain most of the MIME types you are likely to use.  
8507       </para>
8508       
8509       <para>
8510         If Mutt-ng can not determine the mime type by the extension of the file
8511         you
8512         attach, it will look at the file.  If the file is free of binary
8513         information, Mutt-ng will assume that the file is plain text, and mark
8514         it
8515         as <literal>text/plain</literal>.  If the file contains binary
8516         information, then Mutt-ng will
8517         mark it as <literal>application/octet-stream</literal>.  You can change
8518         the MIME
8519         type that Mutt-ng assigns to an attachment by using the <literal>
8520           edit-type
8521         </literal>
8522         command from the compose menu (default: ^T). The MIME type is
8523         actually a
8524         major mime type followed by the sub-type, separated by a '/'. 6 major
8525         types: application, text, image, video, audio, and model have been
8526         approved
8527         after various internet discussions. Mutt-ng recognises all of these if
8528         the 
8529         appropriate entry is found in the mime.types file. It also recognises
8530         other
8531         major mime types, such as the chemical type that is widely used in the 
8532         molecular modelling community to pass molecular data in various forms
8533         to 
8534         various molecular viewers. Non-recognised mime types should only be
8535         used 
8536         if the recipient of the message is likely to be expecting such
8537         attachments.
8538       </para>
8539       
8540       <para>
8541         
8542       </para>
8543       
8544     </sect1>
8545     
8546     <sect1 id="mime-mailcap">
8547       <title>
8548         MIME Viewer configuration with <literal>mailcap</literal>  
8549       </title>
8550       
8551       <para>
8552         Mutt-ng supports <muttng-doc:rfc num="1524"/> MIME Configuration, in particular the Unix
8553         specific format specified in Appendix A of the RfC.  This file format
8554         is commonly referred to as the mailcap format.  Many MIME compliant
8555         programs utilize the mailcap format, allowing you to specify handling
8556         for all MIME types in one place for all programs.  Programs known to
8557         use this format include Netscape, XMosaic, lynx and metamail.
8558       </para>
8559       
8560       <para>
8561         In order to handle various MIME types that Mutt-ng can not handle
8562         internally, Mutt-ng parses a series of external configuration files to
8563         find an external handler.  The default search string for these files
8564         is a colon delimited list set to
8565         
8566         <screen>
8567 ${HOME}/.mailcap:/usr/local/share/mutt/mailcap:/etc/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap</screen>
8568         
8569         where <muttng-doc:envvar name="HOME"/> is your home directory.
8570       </para>
8571       
8572       <para>
8573         In particular, the metamail distribution will install a mailcap file,
8574         usually as <literal>/usr/local/etc/mailcap</literal>, which contains
8575         some baseline
8576         entries.
8577       </para>
8578       
8579       <sect2 id="mime-mailcap-basics">
8580         <title>The Basics of the mailcap file</title>
8581         
8582         <para>
8583           A mailcap file consists of a series of lines which are comments,
8584           blank,
8585           or definitions.
8586         </para>
8587         
8588         <para>
8589           A comment line consists of a # character followed by anything you
8590           want.
8591         </para>
8592         
8593         <para>
8594           A blank line is blank.
8595         </para>
8596         
8597         <para>
8598           A definition line consists of a content type, a view command, and any
8599           number of optional fields.  Each field of a definition line is
8600           dividedby a semicolon ';' character.
8601         </para>
8602         
8603         <para>
8604           The content type is specified in the MIME standard type/subtype
8605           method.
8606           For example,
8607           <literal>text/plain, text/html, image/gif,</literal>
8608           etc.  In addition, the mailcap format includes two formats for
8609           wildcards, one using the special '*' subtype, the other is the
8610           implicit
8611           wild, where you only include the major type.  For example, <literal>
8612             image/*
8613           </literal>
8614           ,or
8615           <literal>video,</literal> will match all image types and video types,
8616           respectively.
8617         </para>
8618         
8619         <para>
8620           The view command is a Unix command for viewing the type specified.
8621           There
8622           are two different types of commands supported. The default is to send
8623           the body of the MIME message to the command on stdin. You can change
8624           this behavior by using %s as a parameter to your view command.
8625           This will cause Mutt-ng to save the body of the MIME message to a
8626           temporary
8627           file, and then call the view command with the %s replaced by
8628           the name of the temporary file. In both cases, Mutt-ng will turn over
8629           the
8630           terminal to the view program until the program quits, at which time
8631           Mutt
8632           will remove the temporary file if it exists.
8633         </para>
8634         
8635         <para>
8636           So, in the simplest form, you can send a text/plain message to the
8637           external pager more on stdin:
8638           
8639           <screen>
8640 text/plain; more</screen>
8641           
8642           Or, you could send the message as a file:
8643           
8644           <screen>
8645 text/plain; more %s</screen>
8646           
8647           Perhaps you would like to use lynx to interactively view a text/html 
8648           message:
8649           
8650           <screen>
8651 text/html; lynx %s</screen>
8652           
8653           In this case, lynx does not support viewing a file from stdin, so you
8654           must use the %s syntax.
8655           <emphasis role="bold">Note:</emphasis> <emphasis>Some older versions
8656             of lynx contain a bug where they
8657             will check the mailcap file for a viewer for text/html.  They will
8658             find
8659             the line which calls lynx, and run it.  This causes lynx to
8660             continuously
8661             spawn itself to view the object.
8662           </emphasis>
8663         </para>
8664         
8665         <para>
8666           On the other hand, maybe you don't want to use lynx interactively,
8667           youjust want to have it convert the text/html to text/plain, then you
8668           can
8669           use:
8670           
8671           <screen>
8672 text/html; lynx -dump %s | more</screen>
8673           
8674         </para>
8675         
8676         <para>
8677           Perhaps you wish to use lynx to view text/html files, and a pager on
8678           all other text formats, then you would use the following:
8679           
8680           <screen>
8681 text/html; lynx %s
8682 text/*; more</screen>
8683           
8684           This is the simplest form of a mailcap file.
8685         </para>
8686         
8687       </sect2>
8688       
8689       <sect2 id="mime-mailcap-security">
8690         <title>Secure use of mailcap</title>
8691         
8692         <para>
8693           The interpretation of shell meta-characters embedded in MIME
8694           parameters
8695           can lead to security problems in general.  Mutt-ng tries to quote
8696           parameters
8697           in expansion of %s syntaxes properly, and avoids risky
8698           characters by
8699           substituting them, see the <muttng-doc:varref name="mailcap_sanitize" link="mailcap-sanitize"/>
8700           variable.
8701         </para>
8702         
8703         <para>
8704           Although mutt's procedures to invoke programs with mailcap seem to be
8705           safe, there are other applications parsing mailcap, maybe taking less
8706           care
8707           of it.  Therefore you should pay attention to the following rules:
8708         </para>
8709         
8710         <para>
8711           <emphasis>Keep the %-expandos away from shell quoting.</emphasis>
8712           Don't quote them with single or double quotes.  Mutt-ng does this for
8713           you, the right way, as should any other program which interprets
8714           mailcap.  Don't put them into backtick expansions.  Be highly careful
8715           with eval statements, and avoid them if possible at all.  Trying to
8716           fix
8717           broken behaviour with quotes introduces new leaks - there is no
8718           alternative to correct quoting in the first place.
8719         </para>
8720         
8721         <para>
8722           If you have to use the %-expandos' values in context where you
8723           need
8724           quoting or backtick expansions, put that value into a shell variable
8725           and reference the shell variable where necessary, as in the following
8726           example (using <literal>$charset</literal> inside the backtick
8727           expansion is safe,
8728           since it is not itself subject to any further expansion):
8729         </para>
8730         
8731         <para>
8732           
8733           <screen>
8734 text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \
8735 &#38;&#38; test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1</screen>
8736           
8737         </para>
8738         
8739       </sect2>
8740       
8741       <sect2 id="mime-mailcap-advanced">
8742         <title>Advanced mailcap Usage</title>
8743         
8744         <sect3 id="mime-mailcap-advanced-fields">
8745           <title>Optional Fields</title>
8746           
8747           <para>
8748             In addition to the required content-type and view command fields,
8749             you
8750             can add semi-colon ';' separated fields to set flags and other
8751             options.
8752             Mutt-ng recognizes the following optional fields:
8753             <variablelist>
8754               
8755               <varlistentry>
8756                 <term>copiousoutput</term>
8757                 <listitem>
8758                   <para>
8759                     This flag tells Mutt-ng that the command passes possibly
8760                     large amounts of
8761                     text on stdout.  This causes Mutt-ng to invoke a pager
8762                     (either the internal
8763                     pager or the external pager defined by the pager variable)
8764                     on the output
8765                     of the view command.  Without this flag, Mutt-ng assumes
8766                     that the command
8767                     is interactive.  One could use this to replace the pipe to <literal>
8768                       more
8769                     </literal>
8770                     in the <literal>lynx -dump</literal> example in the Basic
8771                     section:
8772                     
8773                     <screen>
8774 text/html; lynx -dump %s ; copiousoutput</screen>
8775                     
8776                     This will cause lynx to format the text/html output as
8777                     text/plain
8778                     and Mutt-ng will use your standard pager to display the
8779                     results.
8780                   </para>
8781                 </listitem>
8782               </varlistentry>
8783               <varlistentry>
8784                 <term>needsterminal</term>
8785                 <listitem>
8786                   <para>
8787                     Mutt-ng uses this flag when viewing attachments with <muttng-doc:command name="auto_view"/>,
8788                     in order to decide whether it should honor the setting
8789                     of the <muttng-doc:varref name="wait_key" link="wait-key"/> variable or
8790                     not.  When an attachment is viewed using an interactive
8791                     program, and the
8792                     corresponding mailcap entry has a <emphasis>needsterminal</emphasis> flag, Mutt-ng will use
8793                     <muttng-doc:varref name="wait_key" link="wait-key"/> and the exit
8794                     statusof the program to decide if it will ask you to press
8795                     a key after the
8796                     external program has exited.  In all other situations it
8797                     will not prompt
8798                     you for a key.
8799                   </para>
8800                 </listitem>
8801               </varlistentry>
8802               <varlistentry>
8803                 <term>compose=&lt;command&gt;</term>
8804                 <listitem>
8805                   <para>
8806                     This flag specifies the command to use to create a new
8807                     attachment of a
8808                     specific MIME type.  Mutt-ng supports this from the compose
8809                     menu.
8810                   </para>
8811                 </listitem>
8812               </varlistentry>
8813               <varlistentry>
8814                 <term>composetyped=&lt;command&gt;</term>
8815                 <listitem>
8816                   <para>
8817                     This flag specifies the command to use to create a new
8818                     attachment of a
8819                     specific MIME type.  This command differs from the compose
8820                     command in
8821                     that mutt will expect standard MIME headers on the data. 
8822                     This can be
8823                     used to specify parameters, filename, description, etc. for
8824                     a new
8825                     attachment.   Mutt-ng supports this from the compose menu.
8826                   </para>
8827                 </listitem>
8828               </varlistentry>
8829               <varlistentry>
8830                 <term>print=&lt;command&gt;</term>
8831                 <listitem>
8832                   <para>
8833                     This flag specifies the command to use to print a specific
8834                     MIME type.
8835                     Mutt-ng supports this from the attachment and compose
8836                     menus.
8837                   </para>
8838                 </listitem>
8839               </varlistentry>
8840               <varlistentry>
8841                 <term>edit=&lt;command&gt;</term>
8842                 <listitem>
8843                   <para>
8844                     This flag specifies the command to use to edit a specific
8845                     MIME type.  
8846                     Mutt-ng supports this from the compose menu, and also uses
8847                     it to compose
8848                     new attachments.  Mutt-ng will default to the defined
8849                     editor for text
8850                     attachments.
8851                   </para>
8852                 </listitem>
8853               </varlistentry>
8854               <varlistentry>
8855                 <term>nametemplate=&lt;template&gt;</term>
8856                 <listitem>
8857                   <para>
8858                     This field specifies the format for the file denoted by
8859                     %s in the
8860                     command fields.  Certain programs will require a certain
8861                     file extension,
8862                     for instance, to correctly view a file.  For instance, lynx
8863                     will only
8864                     interpret a file as <literal>text/html</literal> if the
8865                     file ends in <literal>.html</literal>.
8866                     So, you would specify lynx as a <literal>text/html</literal> viewer with a line in
8867                     the mailcap file like:
8868                     
8869                     <screen>
8870 text/html; lynx %s; nametemplate=%s.html</screen>
8871                     
8872                   </para>
8873                 </listitem>
8874               </varlistentry>
8875               <varlistentry>
8876                 <term>test=&lt;command&gt;</term>
8877                 <listitem>
8878                   <para>
8879                     This field specifies a command to run to test whether this
8880                     mailcap
8881                     entry should be used.  The command is defined with the
8882                     command expansion
8883                     rules defined in the next section.  If the command returns
8884                     0, then the
8885                     test passed, and Mutt-ng uses this entry.  If the command
8886                     returns non-zero,
8887                     then the test failed, and Mutt-ng continues searching for
8888                     the right entry.
8889                     <emphasis role="bold">Note:</emphasis> <emphasis>the
8890                       content-type must match before Mutt-ng performs the test.
8891                     </emphasis>
8892                     For example:
8893                     
8894                     <screen>
8895 text/html; netscape -remote 'openURL(%s)' ; test=RunningX
8896 text/html; lynx %s</screen>
8897                     
8898                     In this example, Mutt-ng will run the program RunningX
8899                     which will return 0
8900                     if the X Window manager is running, and non-zero if it
8901                     isn't.  If
8902                     RunningX returns 0, then Mutt-ng will call netscape to
8903                     display the
8904                     text/html object.  If RunningX doesn't return 0, then
8905                     Mutt-ng will go on
8906                     to the next entry and use lynx to display the text/html
8907                     object.
8908                   </para>
8909                 </listitem>
8910               </varlistentry>
8911             </variablelist>
8912           </para>
8913           
8914         </sect3>
8915         
8916         <sect3 id="mime-mailcap-advanced-searchorder">
8917           <title>Search Order</title>
8918           
8919           <para>
8920             When searching for an entry in the mailcap file, Mutt-ng will
8921             search for
8922             the most useful entry for its purpose.  For instance, if you are
8923             attempting to print an <literal>image/gif</literal>, and you have
8924             the following
8925             entries in your mailcap file, Mutt-ng will search for an entry with
8926             the
8927             print command:
8928             
8929             <screen>
8930 image/*;        xv %s
8931 image/gif;      ; print= anytopnm %s | pnmtops | lpr; \
8932 nametemplate=%s.gif</screen>
8933             
8934             Mutt-ng will skip the <literal>image/*</literal> entry and use the <literal>
8935               image/gif
8936             </literal>
8937             entry with the print command.
8938           </para>
8939           
8940           <para>
8941             In addition, you can use this with <muttng-doc:command name="auto_view"/>
8942             to denote two commands for viewing an attachment, one to be viewed
8943             automatically, the other to be viewed interactively from the
8944             attachment
8945             menu.  In addition, you can then use the test feature to determine
8946             which
8947             viewer to use interactively depending on your environment.
8948             
8949             <screen>
8950 text/html;      netscape -remote 'openURL(%s)' ; test=RunningX
8951 text/html;      lynx %s; nametemplate=%s.html
8952 text/html;      lynx -dump %s; nametemplate=%s.html; copiousoutput</screen>
8953             
8954             For <muttng-doc:command name="auto_view"/>, Mutt-ng will choose
8955             the third
8956             entry because of the copiousoutput tag.  For interactive viewing,
8957             Mutt
8958             will run the program RunningX to determine if it should use the
8959             first
8960             entry.  If the program returns non-zero, Mutt-ng will use the
8961             second entry
8962             for interactive viewing.
8963           </para>
8964           
8965         </sect3>
8966         
8967         <sect3 id="mime-mailcap-advanced-expansion">
8968           <title>Command Expansion</title>
8969           
8970           <para>
8971             The various commands defined in the mailcap files are passed to the
8972             <literal>/bin/sh</literal> shell using the system() function. 
8973             Before the
8974             command is passed to <literal>/bin/sh -c</literal>, it is parsed to
8975             expand
8976             various special parameters with information from Mutt-ng.  The
8977             keywords
8978             Mutt-ng expands are:
8979             <variablelist>
8980               
8981               <varlistentry>
8982                 <term>%s</term>
8983                 <listitem>
8984                   <para>
8985                     As seen in the basic mailcap section, this variable is
8986                     expanded
8987                     to a filename specified by the calling program.  This file
8988                     contains
8989                     the body of the message to view/print/edit or where the
8990                     composing
8991                     program should place the results of composition.  In
8992                     addition, the
8993                     use of this keyword causes Mutt-ng to not pass the body of
8994                     the message
8995                     to the view/print/edit program on stdin.
8996                   </para>
8997                 </listitem>
8998               </varlistentry>
8999               <varlistentry>
9000                 <term>%t</term>
9001                 <listitem>
9002                   <para>
9003                     Mutt-ng will expand %t to the text representation of
9004                     the content
9005                     type of the message in the same form as the first parameter
9006                     of the
9007                     mailcap definition line, ie <literal>text/html</literal> or
9008                     <literal>image/gif</literal>.
9009                   </para>
9010                 </listitem>
9011               </varlistentry>
9012               <varlistentry>
9013                 <term>%{&lt;parameter&gt;}</term>
9014                 <listitem>
9015                   <para>
9016                     Mutt-ng will expand this to the value of the specified
9017                     parameter
9018                     from the Content-Type: line of the mail message.  For
9019                     instance, if
9020                     Your mail message contains:
9021                     
9022                     <screen>
9023 Content-Type: text/plain; charset=iso-8859-1</screen>
9024                     
9025                     then Mutt-ng will expand %{charset} to
9026                     iso-8859-1.  The default metamail
9027                     mailcap file uses this feature to test the charset to spawn
9028                     an xterm
9029                     using the right charset to view the message.
9030                   </para>
9031                 </listitem>
9032               </varlistentry>
9033               <varlistentry>
9034                 <term>\%</term>
9035                 <listitem>
9036                   <para>
9037                     This will be replaced by a %
9038                   </para>
9039                 </listitem>
9040               </varlistentry>
9041             </variablelist>
9042             Mutt-ng does not currently support the %F and %n
9043             keywords
9044             specified in <muttng-doc:rfc num="1524"/>.  The main purpose of these parameters is for
9045             multipart messages, which is handled internally by Mutt-ng.
9046           </para>
9047           
9048         </sect3>
9049         
9050       </sect2>
9051       
9052       <sect2 id="mime-mailcap-examples">
9053         <title>Example mailcap files</title>
9054         
9055         <para>
9056           This mailcap file is fairly simple and standard:
9057           
9058           <screen>>
9059 # I'm always running X :)
9060 video/*;        xanim %s &#62; /dev/null
9061 image/*;        xv %s &#62; /dev/null
9062
9063 # I'm always running netscape (if my computer had more memory, maybe)
9064 text/html;      netscape -remote 'openURL(%s)'</screen>
9065           
9066         </para>
9067         
9068         <para>
9069           This mailcap file shows quite a number of examples:
9070         </para>
9071         
9072         <para>
9073           
9074           <screen>
9075 # Use xanim to view all videos   Xanim produces a header on startup,
9076 # send that to /dev/null so I don't see it
9077 video/*;        xanim %s &#62; /dev/null
9078
9079 # Send html to a running netscape by remote
9080 text/html;      netscape -remote 'openURL(%s)'; test=RunningNetscape
9081 # If I'm not running netscape but I am running X, start netscape on the
9082 # object
9083 text/html;      netscape %s; test=RunningX
9084
9085 # Else use lynx to view it as text
9086 text/html;      lynx %s
9087
9088 # This version would convert the text/html to text/plain
9089 text/html;      lynx -dump %s; copiousoutput
9090
9091 # I use enscript to print text in two columns to a page
9092 text/*;         more %s; print=enscript -2Gr %s
9093
9094 # Netscape adds a flag to tell itself to view jpegs internally
9095 image/jpeg;xv %s; x-mozilla-flags=internal
9096
9097 # Use xv to view images if I'm running X
9098 # In addition, this uses the \ to extend the line and set my editor
9099 # for images
9100 image/*;xv %s; test=RunningX; edit=xpaint %s
9101
9102 # Convert images to text using the netpbm tools
9103 image/*;  (anytopnm %s | pnmscale -xysize 80 46 | ppmtopgm | pgmtopbm |
9104 pbmtoascii -1x2 ) 2&#62;&#38;1 ; copiousoutput
9105
9106 # Send excel spreadsheets to my NT box
9107 application/ms-excel; open.pl %s</screen>
9108           
9109         </para>
9110         
9111         <para>
9112           
9113         </para>
9114         
9115       </sect2>
9116       
9117     </sect1>
9118     
9119     <sect1 id="command-auto_view"><anchor id="command-unauto_view"/>
9120       <title>MIME Autoview</title>
9121       
9122       <para>
9123         In addition to explicitly telling Mutt-ng to view an attachment with
9124         theMIME viewer defined in the mailcap file, Mutt-ng has support for
9125         automatically viewing MIME attachments while in the pager.
9126       </para>
9127       
9128       <para>
9129         To work, you must define a viewer in the mailcap file which uses the 
9130         <literal>copiousoutput</literal> option to denote that it is
9131         non-interactive.
9132         Usually, you also use the entry to convert the attachment to a text
9133         representation which you can view in the pager.
9134       </para>
9135       
9136       <para>
9137         You then use the <literal>auto_view</literal> muttrc command to
9138         list the
9139         content-types that you wish to view automatically.
9140       </para>
9141       
9142       <para>
9143         For instance, if you set auto_view to:
9144         
9145         <screen>
9146 auto_view text/html application/x-gunzip application/postscript
9147 image/gif application/x-tar-gz</screen>
9148         
9149       </para>
9150       
9151       <para>
9152         Mutt-ng could use the following mailcap entries to automatically view
9153         attachments of these types.
9154         
9155         <screen>
9156 text/html;      lynx -dump %s; copiousoutput; nametemplate=%s.html
9157 image/*;        anytopnm %s | pnmscale -xsize 80 -ysize 50 | ppmtopgm | pgmtopbm | pbmtoascii ; copiousoutput
9158 application/x-gunzip;   gzcat; copiousoutput
9159 application/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput
9160 application/postscript; ps2ascii %s; copiousoutput</screen>
9161         
9162       </para>
9163       
9164       <para>
9165         ``unauto_view'' can be used to remove previous entries from the
9166         autoview list.
9167         This can be used with <muttng-doc:hook name="message"/> to autoview messages based on size,
9168         etc.
9169         ``unauto_view *'' will remove all previous entries.
9170       </para>
9171       
9172       <para>
9173         
9174       </para>
9175       
9176     </sect1>
9177     
9178     <sect1 id="command-alternative_order"><anchor id="command-unalternative_order"/>
9179       <title>MIME Multipart/Alternative</title>
9180       
9181       <para>
9182         Mutt-ng has some heuristics for determining which attachment of a
9183         multipart/alternative type to display.  First, mutt will check the 
9184         alternative_order list to determine if one of the available
9185         typesis preferred.  The alternative_order list consists of a
9186         number of
9187         MIME types in order, including support for implicit and explicit
9188         wildcards, for example:
9189         
9190         <screen>
9191 alternative_order text/enriched text/plain text
9192 application/postscript image/*</screen>
9193         
9194       </para>
9195       
9196       <para>
9197         Next, mutt will check if any of the types have a defined 
9198         <muttng-doc:command name="auto_view"/>, and use that.  Failing
9199         that, Mutt-ng will look for any text type.  As a last attempt, mutt
9200         willlook for any type it knows how to handle.
9201       </para>
9202       
9203       <para>
9204         To remove a MIME type from the <literal>alternative_order</literal> list, use the
9205         <literal>unalternative_order</literal> command.
9206       </para>
9207       
9208       <para>
9209         
9210       </para>
9211       
9212     </sect1>
9213     
9214     <sect1 id="command-mime_lookup"><anchor id="command-unmime_lookup"/>
9215       <title>MIME Lookup</title>
9216       
9217       <para>
9218         Mutt-ng's mime_lookup list specifies a list of mime-types that
9219         should not
9220         be treated according to their mailcap entry.  This option is designed
9221         todeal with binary types such as application/octet-stream.  When an
9222         attachment's
9223         mime-type is listed in mime_lookup, then the extension of the
9224         filename will
9225         be compared to the list of extensions in the mime.types file.  The
9226         mime-type
9227         associated with this extension will then be used to process the
9228         attachment
9229         according to the rules in the mailcap file and according to any other
9230         configuration
9231         options (such as auto_view) specified.  Common usage would be:
9232         
9233         <screen>
9234 mime_lookup application/octet-stream application/X-Lotus-Manuscript</screen>
9235         
9236       </para>
9237       
9238       <para>
9239         In addition, the unmime_lookup command may be used to disable
9240         this feature
9241         for any particular mime-type if it had been set, for example, in a
9242         global
9243         muttrc.
9244       </para>
9245       
9246       <para>
9247         
9248       </para>
9249       
9250       <para>
9251         
9252       </para>
9253       
9254     </sect1>
9255     
9256   </chapter>
9257   <!--}}}-->
9258   
9259   <chapter id="security"> <!--{{{-->
9260     <title>Security Considerations</title>
9261     
9262     <para>
9263       First of all, mutt-ng contains no security holes included by
9264       intention but may contain unknown security holes. As a consequence,
9265       please run mutt-ng only with as few permissions as possible.
9266     </para>
9267     
9268     <para>
9269       Please do not run mutt-ng as the super user.
9270     </para>
9271     
9272     <para>
9273       When configuring mutt-ng, there're some points to note about secure
9274       setups.
9275     </para>
9276     
9277     <para>
9278       In practice, mutt-ng can be easily made as vulnerable as even the
9279       most insecure mail user agents (in their default configuration) just
9280       by changing mutt-ng's configuration files: it then can execute
9281       arbitrary programs and scripts attached to messages, send out private
9282       data on its own, etc. Although this is not believed to the common type
9283       of setup, please read this chapter carefully.
9284     </para>
9285     
9286     <sect1 id="security-passwords">
9287       <title>Passwords</title>
9288       
9289       <para>
9290         Although mutt-ng can be told the various passwords for accounts,
9291         please never store passwords in configuration files. Besides the
9292         fact that the system's operator can always read them, you could
9293         forget to replace the actual password with asterisks when reporting
9294         a bug or asking for help via, for example, a mailing list so that
9295         your mail including your password could be archived by internet
9296         search engines, etc. Please never store passwords on disk.
9297       </para>
9298       
9299     </sect1>
9300     
9301     <sect1 id="security-tempfiles">
9302       <title>Temporary Files</title>
9303       
9304       <para>
9305         Mutt-ng uses many temporary files for viewing messages, verifying
9306         digital signatures, etc. The <muttng-doc:varref name="umask" link="umask"/>
9307         variable can be used to change the default permissions of these
9308         files. Please only change it if you really know what you are doing.
9309         Also, a different location for these files may be desired which can
9310         be changed via the <muttng-doc:varref name="tmpdir" link="tmpdir"/> variable.
9311       </para>
9312       
9313     </sect1>
9314     
9315     <sect1 id="security-leaks">
9316       <title>Information Leaks</title>
9317       
9318       <sect2 id="security-leaks-mid">
9319         <title>Message-ID: headers</title>
9320         
9321         <para>
9322           In the default configuration, mutt-ng will leak some information
9323           to the outside world when sending messages: the generation of
9324           <literal>Message-ID:</literal> headers includes a step counter which
9325           is increased
9326           (and rotated) with every message sent. If you'd like to hide this
9327           information probably telling others how many mail you sent in which
9328           time, you at least need to remove the <literal>%P</literal>
9329           expando from the
9330           default setting of the <muttng-doc:varref name="msgid_format" link="msgid-format"/> variable. Please make sure that
9331           you really know how local parts of these <literal>Message-ID:</literal> headers
9332           are composed.
9333         </para>
9334         
9335       </sect2>
9336       
9337       <sect2 id="security-leaks-mailto">
9338         <title>mailto:-style links</title>
9339         
9340         <para>
9341           As mutt-ng be can be set up to be the mail client to handle
9342           <literal>mailto:</literal> style links in websites, there're security
9343           considerations, too. To keep the old behavior by default, mutt-ng
9344           will be strict in interpreting them which means that arbitrary
9345           header fields can be embedded in these links which could override
9346           existing header fields or attach arbitrary files. This may be
9347           problematic if the <muttng-doc:varref name="edit_headers" link="edit-headers"/>
9348           variable is <emphasis>unset</emphasis>, i.e. the
9349           user doesn't want to see header fields while editing the message.
9350         </para>
9351         
9352         <para>
9353           For example, following a link like
9354         </para>
9355         
9356         <para>
9357           
9358           <screen>
9359 mailto:joe@host?Attach=~/.gnupg/secring.gpg</screen>
9360           
9361         </para>
9362         
9363         <para>
9364           will send out the user's private gnupg keyring to <literal>joe@host</literal> if
9365           the user doesn't follow the information on screen carefully
9366           enough.
9367         </para>
9368         
9369         <para>
9370           When <emphasis>unsetting</emphasis> the <muttng-doc:varref name="strict_mailto" link="strict-mailto"/>
9371           variable, mutt-ng will
9372         </para>
9373         
9374         <para>
9375           
9376           <itemizedlist>
9377             <listitem>
9378               
9379               <para>
9380                 be less strict when interpreting these links by
9381                 prepending a <literal>X-Mailto-</literal> string to all header
9382                 fields
9383                 embedded in such a link <emphasis>and</emphasis>
9384                 
9385               </para>
9386             </listitem>
9387             <listitem>
9388               
9389               <para>
9390                 turn on the <muttng-doc:varref name="edit_headers" link="edit-headers"/>
9391                 variable by
9392                 force to let the user see all the headers
9393                 (because they still may leak information.)
9394                 
9395               </para>
9396             </listitem>
9397             
9398           </itemizedlist>
9399           
9400         </para>
9401         
9402       </sect2>
9403       
9404     </sect1>
9405     
9406     <sect1 id="security-external">
9407       <title>External applications</title>
9408       
9409       <para>
9410         Mutt-ng in many places has to rely on external applications or
9411         for convenience supports mechanisms involving external
9412         applications.
9413       </para>
9414       
9415       <sect2 id="security-external-mailcap">
9416         <title>mailcap</title>
9417         
9418         <para>
9419           One of these is the <literal>mailcap</literal> mechanism as defined
9420           by <muttng-doc:rfc num="1524"/>. Mutt-ng can be set up to <emphasis>automatically</emphasis>
9421           execute any
9422           given utility as listed in one of the mailcap files (see the
9423           <muttng-doc:varref name="mailcap_path" link="mailcap-path"/>
9424           variable for details.) 
9425         </para>
9426         
9427         <para>
9428           These utilities may have a variety of security vulnerabilities,
9429           including overwriting of arbitrary files, information leaks or
9430           other exploitable bugs.  These vulnerabilities may go unnoticed by
9431           the user, especially when they are called automatically (and
9432           without interactive prompting) from the mailcap file(s). When
9433           using mutt-ng's autoview mechanism in combination with mailcap
9434           files, please be sure to...
9435         </para>
9436         
9437         <para>
9438           
9439           <itemizedlist>
9440             <listitem>
9441               
9442               <para>
9443                 manually select trustworth applications with a reasonable
9444                 calling sequence
9445                 
9446               </para>
9447             </listitem>
9448             <listitem>
9449               
9450               <para>
9451                 periodically check the contents of mailcap files,
9452                 especially after software installations or upgrades
9453                 
9454               </para>
9455             </listitem>
9456             <listitem>
9457               
9458               <para>
9459                 keep the software packages referenced in the mailcap file up to
9460                 date
9461                 
9462               </para>
9463             </listitem>
9464             <listitem>
9465               
9466               <para>
9467                 leave the <muttng-doc:varref name="mailcap_sanitize" link="mailcap-sanitize"/> variable in its default
9468                 state to restrict mailcap expandos to a safe set of characters
9469                 
9470               </para>
9471             </listitem>
9472             
9473           </itemizedlist>
9474           
9475         </para>
9476         
9477       </sect2>
9478       
9479       <sect2 id="security-external-other">
9480         <title>Other</title>
9481         
9482         <para>
9483           Besides the mailcap mechanism, mutt-ng uses a number of other
9484           external utilities for operation.
9485         </para>
9486         
9487         <para>
9488           The same security considerations apply for these as for tools
9489           involved via mailcap (for example, mutt-ng is vulnerable to Denial
9490           of Service Attacks with compressed folders support if the
9491           uncompressed mailbox is too large for the disk it is saved to.)
9492         </para>
9493         
9494         <para>
9495           As already noted, most of these problems are not built in but
9496           caused by wrong configuration, so please check your configuration.
9497         </para>
9498         
9499       </sect2>
9500       
9501     </sect1>
9502     
9503   </chapter>
9504   <!--}}}-->
9505   
9506   <chapter id="reference"> <!--{{{-->
9507     <title>Reference</title>
9508     
9509     <sect1 id="commandline">
9510       <title>Command line options</title>
9511       
9512       <para>
9513         Running <literal>mutt</literal> with no arguments will make Mutt-ng
9514         attempt to read your spool
9515         mailbox.  However, it is possible to read other mailboxes and
9516         to send messages from the command line as well.
9517       </para>
9518       
9519       <para>
9520         
9521         <table frame="none" rowsep="1">
9522           <title>Reference: Command Line Options</title>
9523           <tgroup cols="2" align="left" colsep="1" rowsep="1">
9524           <thead>
9525             <row>
9526               <entry>Option</entry>
9527               <entry>Description</entry>
9528             </row>
9529           </thead>
9530           <tbody>
9531             <row>
9532               <entry><literal>-A</literal></entry>
9533               <entry>expand an alias</entry>
9534             </row>
9535             <row>
9536               <entry><literal>-a</literal></entry>
9537               <entry>attach a file to a message</entry>
9538             </row>
9539             <row>
9540               <entry><literal>-b</literal></entry>
9541               <entry>specify a blind carbon-copy (BCC) address</entry>
9542             </row>
9543             <row>
9544               <entry><literal>-c</literal></entry>
9545               <entry>specify a carbon-copy (Cc) address</entry>
9546             </row>
9547             <row>
9548               <entry><literal>-e</literal></entry>
9549               <entry>specify a config command to be run after initialization files are read</entry>
9550             </row>
9551             <row>
9552               <entry><literal>-f</literal></entry>
9553               <entry>specify a mailbox to load</entry>
9554             </row>
9555             <row>
9556               <entry><literal>-F</literal></entry>
9557               <entry>specify an alternate file to read initialization commands</entry>
9558             </row>
9559             <row>
9560               <entry><literal>-h</literal></entry>
9561               <entry>print help on command line options</entry>
9562             </row>
9563             <row>
9564               <entry><literal>-H</literal></entry>
9565               <entry>specify a draft file from which to read a header and body</entry>
9566             </row>
9567             <row>
9568               <entry><literal>-i</literal></entry>
9569               <entry>specify a file to include in a message composition</entry>
9570             </row>
9571             <row>
9572               <entry><literal>-m</literal></entry>
9573               <entry>specify a default mailbox type</entry>
9574             </row>
9575             <row>
9576               <entry><literal>-n</literal></entry>
9577               <entry>do not read the system Muttngrc</entry>
9578             </row>
9579             <row>
9580               <entry><literal>-p</literal></entry>
9581               <entry>recall a postponed message</entry>
9582             </row>
9583             <row>
9584               <entry><literal>-Q</literal></entry>
9585               <entry>query a configuration variable</entry>
9586             </row>
9587             <row>
9588               <entry><literal>-R</literal></entry>
9589               <entry>open mailbox in read-only mode</entry>
9590             </row>
9591             <row>
9592               <entry><literal>-s</literal></entry>
9593               <entry>specify a subject (enclose in quotes if it contains spaces)</entry>
9594             </row>
9595             <row>
9596               <entry><literal>-t</literal></entry>
9597               <entry>dump the value of all variables to stdout</entry>
9598             </row>
9599             <row>
9600               <entry><literal>-T</literal></entry>
9601               <entry>dump the value of all changed variables to stdout</entry>
9602             </row>
9603             <row>
9604               <entry><literal>-v</literal></entry>
9605               <entry>show version number and compile-time definitions</entry>
9606             </row>
9607             <row>
9608               <entry><literal>-x</literal></entry>
9609               <entry>simulate the mailx(1) compose mode</entry>
9610             </row>
9611             <row>
9612               <entry><literal>-y</literal></entry>
9613               <entry>show a menu containing the files specified by the mailboxes command</entry>
9614             </row>
9615             <row>
9616               <entry><literal>-z</literal></entry>
9617               <entry>exit immediately if there are no messages in the mailbox</entry>
9618             </row>
9619             <row>
9620               <entry><literal>-Z</literal></entry>
9621               <entry>open the first folder with new message,exit immediately if none</entry>
9622             </row>
9623           </tbody>
9624         </tgroup>
9625       </table>
9626
9627       </para>
9628       
9629       <para>
9630         To read messages in a mailbox
9631       </para>
9632       
9633       <para>
9634         <literal>mutt</literal> ] -nz ] ] -F <emphasis>muttrc</emphasis> ] ] -m <emphasis>
9635           type
9636         </emphasis>
9637         ] ] -f <emphasis>mailbox</emphasis> ] 
9638       </para>
9639       
9640       <para>
9641         To compose a new message
9642       </para>
9643       
9644       <para>
9645         <literal>mutt</literal> ] -n ] ] -F <emphasis>muttrc</emphasis> ] ] -a <emphasis>
9646           file
9647         </emphasis>
9648         ] ] -c <emphasis>address</emphasis> ] ] -i <emphasis>
9649           filename
9650         </emphasis>
9651         ] ] -s <emphasis>subject</emphasis> ] <emphasis>address</emphasis> ] <emphasis>
9652           address
9653         </emphasis>
9654         ... ] 
9655       </para>
9656       
9657       <para>
9658         Mutt-ng also supports a ``batch'' mode to send prepared messages. 
9659         Simply redirect
9660         input from the file you wish to send.  For example,
9661       </para>
9662       
9663       <para>
9664         <literal>mutt -s &quot;data set for run #2&quot;
9665           professor@bigschool.edu
9666           &lt; ~/run2.dat
9667         </literal>
9668       </para>
9669       
9670       <para>
9671         This command will send a message to ``professor@bigschool.edu'' with a
9672         subject
9673         of ``data set for run #2''.  In the body of the message will be the
9674         contents
9675         of the file ``~/run2.dat''.
9676       </para>
9677       
9678       <para>
9679         
9680       </para>
9681       
9682     </sect1>
9683     
9684     <sect1 id="patterns">
9685       <title>Patterns</title>
9686
9687       <para>
9688
9689         <table frame="none" rowsep="1" id="tab-patterns">
9690           <title>Reference: Patterns</title>
9691           <tgroup cols="2" align="left" colsep="1" rowsep="1">
9692           <thead>
9693             <row>
9694               <entry>Pattern Modifier</entry>
9695               <entry>Argument</entry>
9696               <entry>Description</entry>
9697             </row>
9698           </thead>
9699           <tbody>
9700             <row>
9701               <entry><muttng-doc:pattern full="1" name="A"/></entry>
9702               <entry><literal></literal></entry>
9703               <entry>all messages</entry>
9704             </row>
9705             <row>
9706               <entry><muttng-doc:pattern full="1" name="b"/></entry>
9707               <entry><literal>EXPR</literal></entry>
9708               <entry>messages which contain EXPR in the message body</entry>
9709             </row>
9710             <row>
9711               <entry><muttng-doc:pattern full="1" name="B"/></entry>
9712               <entry><literal>EXPR</literal></entry>
9713               <entry>messages which contain EXPR in the whole message</entry>
9714             </row>
9715             <row>
9716               <entry><muttng-doc:pattern full="1" name="c"/></entry>
9717               <entry><literal>EXPR</literal></entry>
9718               <entry>messages carbon-copied to EXPR</entry>
9719             </row>
9720             <row>
9721               <entry><muttng-doc:pattern full="1" name="C"/></entry>
9722               <entry><literal>EXPR</literal></entry>
9723               <entry>message is either to: or cc: EXPR</entry>
9724             </row>
9725             <row>
9726               <entry><muttng-doc:pattern full="1" name="D"/></entry>
9727               <entry><literal></literal></entry>
9728               <entry>deleted messages</entry>
9729             </row>
9730             <row>
9731               <entry><muttng-doc:pattern full="1" name="d"/></entry>
9732               <entry><literal>[MIN]-[MAX]</literal></entry>
9733               <entry>messages with ``date-sent'' in a Date range</entry>
9734             </row>
9735             <row>
9736               <entry><muttng-doc:pattern full="1" name="E"/></entry>
9737               <entry><literal></literal></entry>
9738               <entry>expired messages</entry>
9739             </row>
9740             <row>
9741               <entry><muttng-doc:pattern full="1" name="e"/></entry>
9742               <entry><literal>EXPR</literal></entry>
9743               <entry>message which contains EXPR in the ``Sender'' field</entry>
9744             </row>
9745             <row>
9746               <entry><muttng-doc:pattern full="1" name="F"/></entry>
9747               <entry><literal></literal></entry>
9748               <entry>flagged messages</entry>
9749             </row>
9750             <row>
9751               <entry><muttng-doc:pattern full="1" name="f"/></entry>
9752               <entry><literal>EXPR</literal></entry>
9753               <entry>messages originating from EXPR</entry>
9754             </row>
9755             <row>
9756               <entry><muttng-doc:pattern full="1" name="g"/></entry>
9757               <entry><literal></literal></entry>
9758               <entry>cryptographically signed messages</entry>
9759             </row>
9760             <row>
9761               <entry><muttng-doc:pattern full="1" name="G"/></entry>
9762               <entry><literal></literal></entry>
9763               <entry>cryptographically encrypted messages</entry>
9764             </row>
9765             <row>
9766               <entry><muttng-doc:pattern full="1" name="H"/></entry>
9767               <entry><literal>EXPR</literal></entry>
9768               <entry>messages with a spam attribute matching EXPR</entry>
9769             </row>
9770             <row>
9771               <entry><muttng-doc:pattern full="1" name="h"/></entry>
9772               <entry><literal>EXPR</literal></entry>
9773               <entry>messages which contain EXPR in the message header</entry>
9774             </row>
9775             <row>
9776               <entry><muttng-doc:pattern full="1" name="k"/></entry>
9777               <entry><literal></literal></entry>
9778               <entry>message contains PGP key material</entry>
9779             </row>
9780             <row>
9781               <entry><muttng-doc:pattern full="1" name="i"/></entry>
9782               <entry><literal>EXPR</literal></entry>
9783               <entry>message which match ID in the ``Message-ID'' field</entry>
9784             </row>
9785             <row>
9786               <entry><muttng-doc:pattern full="1" name="L"/></entry>
9787               <entry><literal>EXPR</literal></entry>
9788               <entry>message is either originated or received by EXPR</entry>
9789             </row>
9790             <row>
9791               <entry><muttng-doc:pattern full="1" name="l"/></entry>
9792               <entry><literal></literal></entry>
9793               <entry>message is addressed to a known mailing list</entry>
9794             </row>
9795             <row>
9796               <entry><muttng-doc:pattern full="1" name="m"/></entry>
9797               <entry><literal>[MIN]-[MAX]</literal></entry>
9798               <entry>message in the range MIN to MAX *)</entry>
9799             </row>
9800             <row>
9801               <entry><muttng-doc:pattern full="1" name="M"/></entry>
9802               <entry><literal></literal></entry>
9803               <entry>multipart messages</entry>
9804             </row>
9805             <row>
9806               <entry><muttng-doc:pattern full="1" name="n"/></entry>
9807               <entry><literal>[MIN]-[MAX]</literal></entry>
9808               <entry>messages with a score in the range MIN to MAX *)</entry>
9809             </row>
9810             <row>
9811               <entry><muttng-doc:pattern full="1" name="N"/></entry>
9812               <entry><literal></literal></entry>
9813               <entry>new messages</entry>
9814             </row>
9815             <row>
9816               <entry><muttng-doc:pattern full="1" name="O"/></entry>
9817               <entry><literal></literal></entry>
9818               <entry>old messages</entry>
9819             </row>
9820             <row>
9821               <entry><muttng-doc:pattern full="1" name="p"/></entry>
9822               <entry><literal></literal></entry>
9823               <entry>message is addressed to you (consults alternates)</entry>
9824             </row>
9825             <row>
9826               <entry><muttng-doc:pattern full="1" name="P"/></entry>
9827               <entry><literal></literal></entry>
9828               <entry>message is from you (consults alternates)</entry>
9829             </row>
9830             <row>
9831               <entry><muttng-doc:pattern full="1" name="Q"/></entry>
9832               <entry><literal></literal></entry>
9833               <entry>messages which have been replied to</entry>
9834             </row>
9835             <row>
9836               <entry><muttng-doc:pattern full="1" name="R"/></entry>
9837               <entry><literal></literal></entry>
9838               <entry>read messages</entry>
9839             </row>
9840             <row>
9841               <entry><muttng-doc:pattern full="1" name="r"/></entry>
9842               <entry><literal>[MIN]-[MAX]</literal></entry>
9843               <entry>messages with ``date-received'' in a Date range</entry>
9844             </row>
9845             <row>
9846               <entry><muttng-doc:pattern full="1" name="S"/></entry>
9847               <entry><literal></literal></entry>
9848               <entry>superseded messages</entry>
9849             </row>
9850             <row>
9851               <entry><muttng-doc:pattern full="1" name="s"/></entry>
9852               <entry><literal>EXPR</literal></entry>
9853               <entry>messages having EXPR in the ``Subject'' field.</entry>
9854             </row>
9855             <row>
9856               <entry><muttng-doc:pattern full="1" name="T"/></entry>
9857               <entry><literal></literal></entry>
9858               <entry>tagged messages</entry>
9859             </row>
9860             <row>
9861               <entry><muttng-doc:pattern full="1" name="t"/></entry>
9862               <entry><literal>EXPR</literal></entry>
9863               <entry>messages addressed to EXPR</entry>
9864             </row>
9865             <row>
9866               <entry><muttng-doc:pattern full="1" name="U"/></entry>
9867               <entry><literal></literal></entry>
9868               <entry>unread messages</entry>
9869             </row>
9870             <row>
9871               <entry><muttng-doc:pattern full="1" name="u"/></entry>
9872               <entry><literal></literal></entry>
9873               <entry>message is addressed to a subscribed mailing list</entry>
9874             </row>
9875             <row>
9876               <entry><muttng-doc:pattern full="1" name="v"/></entry>
9877               <entry><literal></literal></entry>
9878               <entry>message is part of a collapsed thread.</entry>
9879             </row>
9880             <row>
9881               <entry><muttng-doc:pattern full="1" name="V"/></entry>
9882               <entry><literal></literal></entry>
9883               <entry>cryptographically verified messages</entry>
9884             </row>
9885             <row>
9886               <entry><muttng-doc:pattern full="1" name="w"/></entry>
9887               <entry><literal>EXPR</literal></entry>
9888               <entry>messages which contain EXPR in the `Newsgroups' field (if compiled with NNTP support)</entry>
9889             </row>
9890             <row>
9891               <entry><muttng-doc:pattern full="1" name="x"/></entry>
9892               <entry><literal>EXPR</literal></entry>
9893               <entry>messages which contain EXPR in the `References' field</entry>
9894             </row>
9895             <row>
9896               <entry><muttng-doc:pattern full="1" name="y"/></entry>
9897               <entry><literal>EXPR</literal></entry>
9898               <entry>messages which contain EXPR in the `X-Label' field</entry>
9899             </row>
9900             <row>
9901               <entry><muttng-doc:pattern full="1" name="z"/></entry>
9902               <entry><literal>[MIN]-[MAX]</literal></entry>
9903               <entry>messages with a size in the range MIN to MAX *)</entry>
9904             </row>
9905             <row>
9906               <entry><muttng-doc:pattern full="1" name="="/></entry>
9907               <entry><literal></literal></entry>
9908               <entry>duplicated messages (see $duplicate_threads)</entry>
9909             </row>
9910             <row>
9911               <entry><muttng-doc:pattern full="1" name="$"/></entry>
9912               <entry><literal></literal></entry>
9913               <entry>unreferenced messages (requires threaded view)</entry>
9914             </row>
9915             <row>
9916               <entry><muttng-doc:pattern full="1" name="*"/></entry>
9917               <entry><literal></literal></entry>
9918               <entry>``From'' contains realname and (syntactically) valid address
9919                 (excluded are addresses matching against alternates or any alias)</entry>
9920             </row>
9921           </tbody>
9922         </tgroup>
9923       </table>
9924       </para>
9925       
9926       <para>
9927         Where EXPR are 
9928         <link linkend="advanced-regexp">regexp</link>.  Special attention has to be
9929         made when using regular expressions inside of patterns.  Specifically,
9930         Mutt-ng's parser for these patterns will strip one level of backslash
9931         (\),
9932         which is normally used for quoting.  If it is your intention to use a
9933         backslash in the regular expression, you will need to use two
9934         backslashes
9935         instead (\\).
9936       </para>
9937       
9938       <para>
9939         *) The forms <literal>&lt;[MAX]</literal>, <literal>&gt;[MIN]</literal>,
9940         <literal>[MIN]-</literal> and <literal>-[MAX]</literal>
9941         are allowed, too.
9942       </para>
9943       
9944     </sect1>
9945     
9946     <sect1 id="commands">
9947       <title>Configuration Commands</title>
9948       
9949       <para>
9950         The following are the commands understood by mutt.
9951       </para>
9952       
9953       <para>
9954         
9955         <itemizedlist>
9956           <listitem>
9957             
9958             <para>
9959               <literal><muttng-doc:hook name="account"/></literal> <emphasis>pattern</emphasis> <emphasis>command</emphasis>
9960             </para>
9961           </listitem>
9962           <listitem>
9963             
9964             <para>
9965               <literal><muttng-doc:command name="alias"/></literal> <emphasis>key</emphasis> <emphasis>address</emphasis> [, <emphasis>address</emphasis>, ... ]
9966             </para>
9967           </listitem>
9968           <listitem>
9969             
9970             <para>
9971               <literal><muttng-doc:command name="unalias"/></literal> [ * | <emphasis>key</emphasis> ... ]
9972             </para>
9973           </listitem>
9974           <listitem>
9975             
9976             <para>
9977               <literal><muttng-doc:command name="alternates"/></literal> <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis> ... ]
9978             </para>
9979           </listitem>
9980           <listitem>
9981             
9982             <para>
9983               <literal><muttng-doc:command name="unalternates"/></literal> [ * | <emphasis>regexp</emphasis> ... ]
9984             </para>
9985           </listitem>
9986           <listitem>
9987             
9988             <para>
9989               <literal><muttng-doc:command name="alternative_order"/></literal> <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
9990             </para>
9991           </listitem>
9992           <listitem>
9993             
9994             <para>
9995               <literal><muttng-doc:command name="unalternative_order"/></literal> <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
9996             </para>
9997           </listitem>
9998           <listitem>
9999             
10000             <para>
10001               <literal><muttng-doc:hook name="append"/></literal> <emphasis>regexp</emphasis> <emphasis>command</emphasis>
10002             </para>
10003           </listitem>
10004           <listitem>
10005             
10006             <para>
10007               <literal><muttng-doc:command name="auto_view"/></literal> <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
10008             </para>
10009           </listitem>
10010           <listitem>
10011             
10012             <para>
10013               <literal><muttng-doc:command name="unauto_view"/></literal><emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
10014             </para>
10015           </listitem>
10016           <listitem>
10017             
10018             <para>
10019               <literal><muttng-doc:command name="bind"/></literal> <emphasis>map</emphasis> <emphasis>key</emphasis> <emphasis>function</emphasis>
10020             </para>
10021           </listitem>
10022           <listitem>
10023             
10024             <para>
10025               <literal><muttng-doc:hook name="charset"/></literal> <emphasis>alias</emphasis> <emphasis>charset</emphasis>
10026             </para>
10027           </listitem>
10028           <listitem>
10029             
10030             <para>
10031               <literal><muttng-doc:hook name="close"/></literal> <emphasis>regexp</emphasis> <emphasis>command</emphasis>
10032             </para>
10033           </listitem>
10034           <listitem>
10035             
10036             <para>
10037               <literal><muttng-doc:command name="color"/></literal> <emphasis>object</emphasis> <emphasis>foreground</emphasis> <emphasis>background</emphasis> [ <emphasis>regexp</emphasis> ]
10038             </para>
10039           </listitem>
10040           <listitem>
10041             
10042             <para>
10043               <literal><muttng-doc:command name="uncolor"/></literal> <emphasis>index</emphasis> <emphasis>pattern</emphasis> [ <emphasis>pattern</emphasis> ... ]
10044             </para>
10045           </listitem>
10046           <listitem>
10047             
10048             <para>
10049               <literal><muttng-doc:command name="exec"/></literal> <emphasis>function</emphasis> [ <emphasis>function</emphasis> ... ]
10050             </para>
10051           </listitem>
10052           <listitem>
10053             
10054             <para>
10055               <literal><muttng-doc:hook name="fcc"/></literal> <emphasis>pattern</emphasis> <emphasis>mailbox</emphasis>
10056             </para>
10057           </listitem>
10058           <listitem>
10059             
10060             <para>
10061               <literal><muttng-doc:hook name="fcc-save"/></literal> <emphasis>pattern</emphasis> <emphasis>mailbox</emphasis>
10062             </para>
10063           </listitem>
10064           <listitem>
10065             
10066             <para>
10067               <literal><muttng-doc:hook name="folder"/></literal> <emphasis>pattern</emphasis> <emphasis>command</emphasis>
10068             </para>
10069           </listitem>
10070           <listitem>
10071             
10072             <para>
10073               <literal><muttng-doc:command name="hdr_order"/></literal> <emphasis>header</emphasis> [ <emphasis>header</emphasis> ... ]
10074             </para>
10075           </listitem>
10076           <listitem>
10077             
10078             <para>
10079               <literal><muttng-doc:command name="unhdr_order"/></literal> <emphasis>header</emphasis> [ <emphasis>header</emphasis> ... ]
10080             </para>
10081           </listitem>
10082           <listitem>
10083             
10084             <para>
10085               <literal><muttng-doc:hook name="charset"/></literal> <emphasis>charset</emphasis> <emphasis>local-charset</emphasis>
10086             </para>
10087           </listitem>
10088           <listitem>
10089             
10090             <para>
10091               <literal><muttng-doc:command name="ignore"/></literal> <emphasis>pattern</emphasis> [ <emphasis>pattern</emphasis> ... ]
10092             </para>
10093           </listitem>
10094           <listitem>
10095             
10096             <para>
10097               <literal><muttng-doc:command name="unignore"/></literal> <emphasis>pattern</emphasis> [ <emphasis>pattern</emphasis> ... ]
10098             </para>
10099           </listitem>
10100           <listitem>
10101             
10102             <para>
10103               <literal><muttng-doc:command name="lists"/></literal> <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis> ... ]
10104             </para>
10105           </listitem>
10106           <listitem>
10107             
10108             <para>
10109               <literal><muttng-doc:command name="unlists"/></literal> <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis> ... ]
10110             </para>
10111           </listitem>
10112           <listitem>
10113             
10114             <para>
10115               <literal><muttng-doc:command name="macro"/></literal> <emphasis>menu</emphasis> <emphasis>key</emphasis> <emphasis>sequence</emphasis> [ <emphasis>description</emphasis> ]
10116             </para>
10117           </listitem>
10118           <listitem>
10119             
10120             <para>
10121               <literal><muttng-doc:command name="mailboxes"/></literal> <emphasis>filename</emphasis> [ <emphasis>filename</emphasis> ... ]
10122             </para>
10123           </listitem>
10124           <listitem>
10125             
10126             <para>
10127               <literal><muttng-doc:hook name="mbox"/></literal> <emphasis>pattern</emphasis> <emphasis>mailbox</emphasis>
10128             </para>
10129           </listitem>
10130           <listitem>
10131             
10132             <para>
10133               <literal><muttng-doc:hook name="message"/></literal> <emphasis>pattern</emphasis> <emphasis>command</emphasis>
10134             </para>
10135           </listitem>
10136           <listitem>
10137             
10138             <para>
10139               <literal><muttng-doc:command name="mime_lookup"/></literal> <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
10140             </para>
10141           </listitem>
10142           <listitem>
10143             
10144             <para>
10145               <literal>
10146                 <muttng-doc:command name="unmime_lookup"/></literal> <emphasis>mimetype</emphasis> [ <emphasis>mimetype</emphasis> ... ]
10147             </para>
10148           </listitem>
10149           <listitem>
10150             
10151             <para>
10152               <literal><muttng-doc:command name="mono"/></literal> <emphasis>object attribute</emphasis> [ <emphasis>regexp</emphasis> ]
10153             </para>
10154           </listitem>
10155           <listitem>
10156             
10157             <para>
10158               <literal><muttng-doc:command name="unmono"/></literal> <emphasis>index</emphasis> <emphasis>pattern</emphasis> [ <emphasis>pattern</emphasis> ... ]
10159             </para>
10160           </listitem>
10161           <listitem>
10162             
10163             <para>
10164               <literal><muttng-doc:command name="my_hdr"/></literal> <emphasis>string</emphasis>
10165             </para>
10166           </listitem>
10167           <listitem>
10168             
10169             <para>
10170               <literal><muttng-doc:command name="unmy_hdr"/></literal> <emphasis>field</emphasis> [ <emphasis>field</emphasis> ... ]
10171             </para>
10172           </listitem>
10173           <listitem>
10174             
10175             <para>
10176               <literal><muttng-doc:hook name="open"/></literal> <emphasis>regexp</emphasis> <emphasis>command</emphasis>
10177             </para>
10178           </listitem>
10179           <listitem>
10180             
10181             <para>
10182               <literal><muttng-doc:hook name="crypt"/></literal> <emphasis>pattern</emphasis> <emphasis>key-id</emphasis>
10183             </para>
10184           </listitem>
10185           <listitem>
10186             
10187             <para>
10188               <literal><muttng-doc:command name="push"/></literal> <emphasis>string</emphasis>
10189             </para>
10190           </listitem>
10191           <listitem>
10192             
10193             <para>
10194               <literal><muttng-doc:command name="reset"/> </literal><emphasis>variable</emphasis> [ <emphasis>variable</emphasis> ... ]
10195             </para>
10196           </listitem>
10197           <listitem>
10198             
10199             <para>
10200               <literal><muttng-doc:hook name="save"/></literal> <emphasis>regexp</emphasis> <emphasis>filename</emphasis>
10201             </para>
10202           </listitem>
10203           <listitem>
10204             
10205             <para>
10206               <literal><muttng-doc:command name="score"/> </literal> <emphasis>pattern</emphasis> <emphasis>value</emphasis>
10207             </para>
10208           </listitem>
10209           <listitem>
10210             
10211             <para>
10212               <literal><muttng-doc:command name="unscore"/></literal> <emphasis>pattern</emphasis> [ <emphasis>pattern</emphasis> ... ]
10213             </para>
10214           </listitem>
10215           <listitem>
10216             
10217             <para>
10218               <literal><muttng-doc:hook name="send"/></literal> <emphasis>regexp</emphasis> <emphasis>command</emphasis>
10219             </para>
10220           </listitem>
10221           <listitem>
10222             
10223             <para>
10224               <literal><muttng-doc:hook name="reply"/></literal> <emphasis>regexp</emphasis> <emphasis>command</emphasis>
10225             </para>
10226           </listitem>
10227           <listitem>
10228             
10229             <para>
10230               <literal><muttng-doc:command name="set"/></literal> [no|inv]<emphasis>variable</emphasis>[ =<emphasis>value</emphasis> ] [ <emphasis>variable</emphasis> ... ]
10231             </para>
10232           </listitem>
10233           <listitem>
10234             
10235             <para>
10236               <literal><muttng-doc:command name="unset"/></literal> <emphasis>variable</emphasis> [ <emphasis>variable</emphasis> ... ]
10237             </para>
10238           </listitem>
10239           <listitem>
10240             
10241             <para>
10242               <literal><muttng-doc:command name="source"/></literal> <emphasis>filename</emphasis>
10243             </para>
10244           </listitem>
10245           <listitem>
10246             
10247             <para>
10248               <literal><muttng-doc:command name="spam"/></literal> <emphasis>pattern</emphasis> <emphasis>format</emphasis>
10249             </para>
10250           </listitem>
10251           <listitem>
10252             
10253             <para>
10254               <literal><muttng-doc:command name="nospam"/></literal> <emphasis>pattern</emphasis>
10255             </para>
10256           </listitem>
10257           <listitem>
10258             
10259             <para>
10260               <literal><muttng-doc:command name="subscribe"/></literal> <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis> ... ] 
10261             </para>
10262           </listitem>
10263           <listitem>
10264             
10265             <para>
10266               <literal><muttng-doc:command name="unsubscribe"/></literal> <emphasis>regexp</emphasis> [ <emphasis>regexp</emphasis> ... ] 
10267             </para>
10268           </listitem>
10269           <listitem>
10270             
10271             <para>
10272               <literal><muttng-doc:command name="toggle"/></literal> <emphasis>variable</emphasis> [ <emphasis>variable</emphasis> ... ]
10273             </para>
10274           </listitem>
10275           <listitem>
10276             
10277             <para>
10278               <literal><muttng-doc:command name="unhook"/></literal> <emphasis>hook-type</emphasis>
10279             </para>
10280           </listitem>
10281           
10282         </itemizedlist>
10283         
10284       </para>
10285       
10286     </sect1>
10287     
10288     <sect1 id="variables">
10289       <title>Configuration variables</title>
10290       
10291       <para>
10292         The following list contains all variables which, in the process of
10293         providing more consistency, have been renamed and are partially even
10294         removed already. The left column contains the old synonym variables,
10295         the right column the full/new name:
10296       </para>
10297       
10298       <para>
10299         <anchor id="sect-obsolete"/>
10300
10301         <table frame="none" rowsep="1">
10302           <title>Reference: Obsolete Variables</title>
10303           <tgroup cols="2" align="left" colsep="1" rowsep="1">
10304           <thead>
10305             <row>
10306               <entry>Old Name</entry>
10307               <entry>New Name</entry>
10308             </row>
10309           </thead>
10310           <tbody>
10311             <row>
10312               <entry><literal>edit_hdrs</literal></entry>
10313               <entry><muttng-doc:varref name="edit_headers" link="edit-headers"/></entry>
10314             </row>
10315             <row>
10316               <entry><literal>forw_decode</literal></entry>
10317               <entry><muttng-doc:varref name="forward_decode" link="forward-decode"/></entry>
10318               </row>
10319             <row>
10320               <entry><literal>forw_format</literal></entry>
10321               <entry><muttng-doc:varref name="forward_format" link="forward-format"/></entry>
10322               </row>
10323             <row>
10324               <entry><literal>forw_quote</literal></entry>
10325               <entry><muttng-doc:varref name="forward_quote" link="forward-quote"/></entry>
10326               </row>
10327             <row>
10328               <entry><literal>hdr_format</literal></entry>
10329               <entry><muttng-doc:varref name="index_format" link="index-format"/></entry>
10330               </row>
10331             <row>
10332               <entry><literal>indent_str</literal></entry>
10333               <entry><muttng-doc:varref name="indent_string" link="indent-string"/></entry>
10334               </row>
10335             <row>
10336               <entry><literal>mime_fwd</literal></entry>
10337               <entry><muttng-doc:varref name="mime_forward" link="mime-forward"/></entry>
10338               </row>
10339             <row>
10340               <entry><literal>msg_format</literal></entry>
10341               <entry><muttng-doc:varref name="message_format" link="message-format"/></entry>
10342               </row>
10343             <row>
10344               <entry><literal>pgp_autosign</literal></entry>
10345               <entry><muttng-doc:varref name="crypt_autosign" link="crypt-autosign"/></entry>
10346               </row>
10347             <row>
10348               <entry><literal>pgp_autoencrypt</literal></entry>
10349               <entry><muttng-doc:varref name="crypt_autoencrypt" link="crypt-autoencrypt"/></entry>
10350               </row>
10351             <row>
10352               <entry><literal>pgp_replyencrypt</literal></entry>
10353               <entry><muttng-doc:varref name="crypt_replyencrypt" link="crypt-replyencrypt"/></entry>
10354               </row>
10355             <row>
10356               <entry><literal>pgp_replysign</literal></entry>
10357               <entry><muttng-doc:varref name="crypt_replysign" link="crypt-replysign"/></entry>
10358               </row>
10359             <row>
10360               <entry><literal>pgp_replysignencrypted</literal></entry>
10361               <entry><muttng-doc:varref name="crypt_replysignencrypted" link="crypt-replysignencrypted"/></entry>
10362               </row>
10363             <row>
10364               <entry><literal>pgp_verify_sig</literal></entry>
10365               <entry><muttng-doc:varref name="crypt_verify_sig" link="crypt-verify-sig"/></entry>
10366               </row>
10367             <row>
10368               <entry><literal>pgp_create_traditional</literal></entry>
10369               <entry><muttng-doc:varref name="pgp_autoinline" link="pgp-autoinline"/></entry>
10370               </row>
10371             <row>
10372               <entry><literal>pgp_auto_traditional</literal></entry>
10373               <entry><muttng-doc:varref name="pgp_replyinline" link="pgp-replyinline"/></entry>
10374               </row>
10375             <row>
10376               <entry><literal>forw_decrypt</literal></entry>
10377               <entry><muttng-doc:varref name="forward_decrypt" link="forward-decrypt"/></entry>
10378               </row>
10379             <row>
10380               <entry><literal>smime_sign_as</literal></entry>
10381               <entry><muttng-doc:varref name="smime_default_key" link="smime-default-key"/></entry>
10382               </row>
10383             <row>
10384               <entry><literal>post_indent_str</literal></entry>
10385               <entry><muttng-doc:varref name="post_indent_string" link="post-indent-string"/></entry>
10386               </row>
10387             <row>
10388               <entry><literal>print_cmd</literal></entry>
10389               <entry><muttng-doc:varref name="print_command" link="print-command"/></entry>
10390               </row>
10391             <row>
10392               <entry><literal>shorten_hierarchy</literal></entry>
10393               <entry><muttng-doc:varref name="sidebar_shorten_hierarchy" link="sidebar-shorten-hierarchy"/></entry>
10394               </row>
10395             <row>
10396               <entry><literal>ask_followup_to</literal></entry>
10397               <entry><muttng-doc:varref name="nntp_ask_followup_to" link="nntp-ask-followup-to"/></entry>
10398               </row>
10399             <row>
10400               <entry><literal>ask_x_comment_to</literal></entry>
10401               <entry><muttng-doc:varref name="nntp_ask_x_comment_to" link="nntp-ask-x-comment-to"/></entry>
10402               </row>
10403             <row>
10404               <entry><literal>catchup_newsgroup</literal></entry>
10405               <entry><muttng-doc:varref name="nntp_catchup" link="nntp-catchup"/></entry>
10406             </row>
10407             <row>
10408               <entry><literal>followup_to_poster</literal></entry>
10409               <entry><muttng-doc:varref name="nntp_followup_to_poster" link="nntp-followup-to-poster"/></entry>
10410             </row>
10411             <row>
10412               <entry><literal>group_index_format</literal></entry>
10413               <entry><muttng-doc:varref name="nntp_group_index_format" link="nntp-group-index-format"/></entry>
10414             </row>
10415             <row>
10416               <entry><literal>inews</literal></entry>
10417               <entry><muttng-doc:varref name="nntp_inews" link="nntp-inews"/></entry>
10418             </row>
10419             <row>
10420               <entry><literal>mime_subject</literal></entry>
10421               <entry><muttng-doc:varref name="nntp_mime_subject" link="nntp-mime-subject"/></entry>
10422             </row>
10423             <row>
10424               <entry><literal>news_cache_dir</literal></entry>
10425               <entry><muttng-doc:varref name="nntp_cache_dir" link="nntp-cache-dir"/></entry>
10426             </row>
10427             <row>
10428               <entry><literal>news_server</literal></entry>
10429               <entry><muttng-doc:varref name="nntp_host" link="nntp-host"/></entry>
10430             </row>
10431             <row>
10432               <entry><literal>newsrc</literal></entry>
10433               <entry><muttng-doc:varref name="nntp_newsrc" link="nntp-newsrc"/></entry>
10434             </row>
10435             <row>
10436               <entry><literal>nntp_poll</literal></entry>
10437               <entry><muttng-doc:varref name="nntp_mail_check" link="nntp-mail-check"/></entry>
10438             </row>
10439             <row>
10440               <entry><literal>pop_checkinterval</literal></entry>
10441               <entry><muttng-doc:varref name="pop_mail_check" link="pop-mail-check"/></entry>
10442             </row>
10443             <row>
10444               <entry><literal>post_moderated</literal></entry>
10445               <entry><muttng-doc:varref name="nntp_post_moderated" link="nntp-post-moderated"/></entry>
10446             </row>
10447             <row>
10448               <entry><literal>save_unsubscribed</literal></entry>
10449               <entry><muttng-doc:varref name="nntp_save_unsubscribed" link="nntp-save-unsubscribed"/></entry>
10450             </row>
10451             <row>
10452               <entry><literal>show_new_news</literal></entry>
10453               <entry><muttng-doc:varref name="nntp_show_new_news" link="nntp-show-new-news"/></entry>
10454             </row>
10455             <row>
10456               <entry><literal>show_only_unread</literal></entry>
10457               <entry><muttng-doc:varref name="nntp_show_only_unread" link="nntp-show-only-unread"/></entry>
10458             </row>
10459             <row>
10460               <entry><literal>x_comment_to</literal></entry>
10461               <entry><muttng-doc:varref name="nntp_x_comment_to" link="nntp-x-comment-to"/></entry>
10462             </row>
10463             <row>
10464               <entry><literal>smtp_auth_username</literal></entry>
10465               <entry><muttng-doc:varref name="smtp_user" link="smtp-user"/></entry>
10466             </row>
10467             <row>
10468               <entry><literal>smtp_auth_password</literal></entry>
10469               <entry><muttng-doc:varref name="smtp_pass" link="smtp-pass"/></entry>
10470             </row>
10471             <row>
10472               <entry><literal>user_agent</literal></entry>
10473               <entry><muttng-doc:varref name="agent_string" link="agent-string"/></entry>
10474             </row>
10475           </tbody>
10476         </tgroup>
10477       </table>
10478
10479       </para>
10480       
10481       <para>
10482         The <literal>contrib</literal> subdirectory contains a script named
10483         <literal>update-config.pl</literal> which eases migration.
10484       </para>
10485       
10486       <para>
10487         A complete list of current variables follows.
10488       </para>