X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=doc%2Fmanual.txt;h=99c7317cc08c2ac7b51aa2e7ab401a3c105c0103;hp=c127ae9e7a40b9a14646ea342b0c2c51f499d531;hb=b0811fbd6a0e218c9c310a6ef4170e81540e6c22;hpb=68e9c3fe5664c1e13093e24dd15415ac000af70c diff --git a/doc/manual.txt b/doc/manual.txt index c127ae9..99c7317 100644 --- a/doc/manual.txt +++ b/doc/manual.txt @@ -1,8564 +1,10766 @@ + The Mutt Next Generation E-Mail Client - TThhee MMuutttt--nngg EE--MMaaiill CClliieenntt + Andreas Krennmair - by Michael Elkins and others. + - version 1.5.9 + Michael Elkins - AAbbssttrraacctt + - ``All mail clients suck. This one just sucks less.'' -me, circa 1995 + version devel-r473 - _1_. _I_n_t_r_o_d_u_c_t_i_o_n + Abstract - MMuutttt--nngg is a small but very powerful text-based MIME mail client. Mutt-ng is - highly configurable, and is well suited to the mail power user with advanced - features like key bindings, keyboard macros, mail threading, regular expression - searches and a powerful pattern matching language for selecting groups of mes- - sages. + Michael Elinks on mutt, circa 1995: ``All mail clients suck. This one just + sucks less.'' - This documentation additionally contains documentation to MMuutttt--NNGG, a fork from - Mutt with the goal to fix all the little annoyances of Mutt, to integrate all - the Mutt patches that are floating around in the web, and to add other new fea- - tures. Features specific to Mutt-ng will be discussed in an extra section. - Don't be confused when most of the documentation talk about Mutt and not Mutt- - ng, Mutt-ng contains all Mutt features, plus many more. + Sven Guckes on mutt, ca. 2003: ``But it still sucks!'' - _1_._1 _M_u_t_t_-_n_g _H_o_m_e _P_a_g_e + -------------------------------------------------------------------------- - http://www.muttng.org + Table of Contents - _1_._2 _M_a_i_l_i_n_g _L_i_s_t_s + 1. Introduction - +o mutt-ng-users@lists.berlios.de -- This is where the mutt-ng user support - happens. + 1. Overview - +o mutt-ng-devel@lists.berlios.de -- The development mailing list for mutt-ng + 2. Mutt-ng Home Page - _1_._3 _S_o_f_t_w_a_r_e _D_i_s_t_r_i_b_u_t_i_o_n _S_i_t_e_s + 3. Mailing Lists - So far, there are no official releases of Mutt-ng, but you can download daily - snapshots from http://mutt-ng.berlios.de/snapshots/ + 4. Software Distribution Sites - The Mutt-ng E-Mail Client 1 + 5. IRC - The Mutt-ng E-Mail Client 2 + 6. Weblog - _1_._4 _I_R_C + 7. Copyright - Visit channel _#_m_u_t_t_n_g on irc.freenode.net (www.freenode.net) to chat with other - people interested in Mutt-ng. + 2. Getting Started - _1_._5 _W_e_b_l_o_g + 1. Basic Concepts - If you want to read fresh news about the latest development in Mutt-ng, and get - informed about stuff like interesting, Mutt-ng-related articles and packages - for your favorite distribution, you can read and/or subscribe to our Mutt-ng - development weblog. + 1.1. Screens and Menus - _1_._6 _C_o_p_y_r_i_g_h_t + 1.2. Configuration - Mutt is Copyright (C) 1996-2000 Michael R. Elkins and others + 1.3. Functions - This program is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free Software - Foundation; either version 2 of the License, or (at your option) any later ver- - sion. + 1.4. Interaction - This program is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A - PARTICULAR PURPOSE. See the GNU General Public License for more details. + 1.5. Modularization - You should have received a copy of the GNU General Public License along with - this program; if not, write to the Free Software Foundation, Inc., 59 Temple - Place - Suite 330, Boston, MA 02111, USA. + 1.6. Patterns - _2_. _G_e_t_t_i_n_g _S_t_a_r_t_e_d + 2. Screens and Menus - This section is intended as a brief overview of how to use Mutt-ng. There are - many other features which are described elsewhere in the manual. <-- There is - even more information available in the Mutt FAQ and various web pages. See the - Mutt Page for more details. --> + 2.1. Index - The key bindings described in this section are the defaults as distributed. - Your local system administrator may have altered the defaults for your site. - You can always type ``?'' in any menu to display the current bindings. + 2.2. Pager - The first thing you need to do is invoke mutt-ng simply by typing muttng at the - command line. There are various command-line options, see either the muttng - man page or the _r_e_f_e_r_e_n_c_e (section 6.1 , page 62). + 2.3. File Browser - If you have used mutt in the past the easiest thing to have a proper configura- - tion file is to source /.muttrc in /.muttngrc. + 2.4. Sidebar - _2_._1 _M_o_v_i_n_g _A_r_o_u_n_d _i_n _M_e_n_u_s + 2.5. Help - Information is presented in menus, very similar to ELM. Here is a table show- - ing the common keys used to navigate menus in Mutt. + 2.6. Compose Menu - The Mutt-ng E-Mail Client 3 + 2.7. Alias Menu - j or Down next-entry move to the next entry - k or Up previous-entry move to the previous entry - z or PageDn page-down go to the next page - Z or PageUp page-up go to the previous page - = or Home first-entry jump to the first entry - * or End last-entry jump to the last entry - q quit exit the current menu - ? help list all key bindings for the current menu + 2.8. Attachment Menu - _2_._2 _E_d_i_t_i_n_g _I_n_p_u_t _F_i_e_l_d_s + 2.9. Key Menu - Mutt-ng has a builtin line editor which is used as the primary way to input - textual data such as email addresses or filenames. The keys used to move - around while editing are very similar to those of Emacs. - - ^A or bol move to the start of the line - ^B or backward-char move back one char - Esc B backward-word move back one word - ^D or delete-char delete the char under the cursor - ^E or eol move to the end of the line - ^F or forward-char move forward one char - Esc F forward-word move forward one word - complete complete filename or alias - ^T complete-query complete address with query - ^K kill-eol delete to the end of the line - ESC d kill-eow delete to the end ot the word - ^W kill-word kill the word in front of the cursor - ^U kill-line delete entire line - ^V quote-char quote the next typed key - history-up recall previous string from history - history-down recall next string from history - backspace kill the char in front of the cursor - Esc u upcase-word convert word to upper case - Esc l downcase-word convert word to lower case - Esc c capitalize-word capitalize the word - ^G n/a abort - n/a finish editing + 3. Moving Around in Menus - You can remap the _e_d_i_t_o_r functions using the _b_i_n_d (section 3.3 , page 17) com- - mand. For example, to make the _D_e_l_e_t_e key delete the character in front of the - cursor rather than under, you could use + 4. Editing Input Fields - bind editor backspace + 5. Reading Mail - The Index and Pager - _2_._3 _R_e_a_d_i_n_g _M_a_i_l _- _T_h_e _I_n_d_e_x _a_n_d _P_a_g_e_r + 5.1. The Message Index - Similar to many other mail clients, there are two modes in which mail is read - in Mutt-ng. The first is the index of messages in the mailbox, which is called - the ``index'' in Mutt. The second mode is the display of the message contents. - This is called the ``pager.'' + 5.2. The Pager - The Mutt-ng E-Mail Client 4 + 5.3. Threaded Mode - The next few sections describe the functions provided in each of these modes. + 5.4. Miscellaneous Functions - _2_._3_._1 _T_h_e _M_e_s_s_a_g_e _I_n_d_e_x + 6. Sending Mail - c change to a different mailbox - ESC c change to a folder in read-only mode - C copy the current message to another mailbox - ESC C decode a message and copy it to a folder - ESC s decode a message and save it to a folder - D delete messages matching a pattern - d delete the current message - F mark as important - l show messages matching a pattern - N mark message as new - o change the current sort method - O reverse sort the mailbox - q save changes and exit - s save-message - T tag messages matching a pattern - t toggle the tag on a message - ESC t toggle tag on entire message thread - U undelete messages matching a pattern - u undelete-message - v view-attachments - x abort changes and exit - display-message - jump to the next new message - @ show the author's full e-mail address - $ save changes to mailbox - / search - ESC / search-reverse - ^L clear and redraw the screen - ^T untag messages matching a pattern - - _2_._3_._1_._1 _S_t_a_t_u_s _F_l_a_g_s - - In addition to who sent the message and the subject, a short summary of the - disposition of each message is printed beside the message number. Zero or more - of the following ``flags'' may appear, which mean: - - D - message is deleted (is marked for deletion) - - d - message have attachments marked for deletion - - K - contains a PGP public key - - N - message is new - - The Mutt-ng E-Mail Client 5 - - O - message is old - - P - message is PGP encrypted - - r - message has been replied to - - S - message is signed, and the signature is succesfully verified - - s - message is signed - - ! - message is flagged - - * - message is tagged - - Some of the status flags can be turned on or off using - - +o sseett--ffllaagg (default: w) - - +o cclleeaarr--ffllaagg (default: W) - - Furthermore, the following flags reflect who the message is addressed to. They - can be customized with the _$_t_o___c_h_a_r_s (section 6.3.313 , page 141) variable. - - + - message is to you and you only - - T - message is to you, but also to or cc'ed to others - - C - message is cc'ed to you - - F - message is from you - - L - message is sent to a subscribed mailing list - - _2_._3_._2 _T_h_e _P_a_g_e_r - - By default, Mutt-ng uses its builtin pager to display the body of messages. - The pager is very similar to the Unix program _l_e_s_s though not nearly as fea- - tureful. - - The Mutt-ng E-Mail Client 6 - - go down one line - display the next page (or next message if at the end of a message) - - go back to the previous page - n search for next match - S skip beyond quoted text - T toggle display of quoted text - ? show key bindings - / search for a regular expression (pattern) - ESC / search backwards for a regular expression - \ toggle search pattern coloring - ^ jump to the top of the message - - In addition, many of the functions from the _i_n_d_e_x are available in the pager, - such as _d_e_l_e_t_e_-_m_e_s_s_a_g_e or _c_o_p_y_-_m_e_s_s_a_g_e (this is one advantage over using an - external pager to view messages). - - Also, the internal pager supports a couple other advanced features. For one, it - will accept and translate the ``standard'' nroff sequences for bold and under- - line. These sequences are a series of either the letter, backspace (^H), the - letter again for bold or the letter, backspace, ``_'' for denoting underline. - Mutt-ng will attempt to display these in bold and underline respectively if - your terminal supports them. If not, you can use the bold and underline _c_o_l_o_r - (section 3.7 , page 21) objects to specify a color or mono attribute for them. + 6.1. Composing new messages - Additionally, the internal pager supports the ANSI escape sequences for charac- - ter attributes. Mutt-ng translates them into the correct color and character - settings. The sequences Mutt-ng supports are: + 6.2. Replying - ESC [ Ps;Ps;Ps;...;Ps m - where Ps = - 0 All Attributes Off - 1 Bold on - 4 Underline on - 5 Blink on - 7 Reverse video on - 3x Foreground color is x - 4x Background color is x + 6.3. Editing the message header - Colors are - 0 black - 1 red - 2 green - 3 yellow - 4 blue - 5 magenta - 6 cyan - 7 white - - Mutt-ng uses these attributes for handling text/enriched messages, and they can - also be used by an external _a_u_t_o_v_i_e_w (section 5.4 , page 60) script for high- - lighting purposes. NNoottee:: If you change the colors for your display, for + 6.4. Using Mutt-ng with PGP - The Mutt-ng E-Mail Client 7 - - example by changing the color associated with color2 for your xterm, then that - color will be used instead of green. - - _2_._3_._3 _T_h_r_e_a_d_e_d _M_o_d_e + 6.5. Sending anonymous messages via mixmaster - When the mailbox is _s_o_r_t_e_d (section 6.3.285 , page 133) by _t_h_r_e_a_d_s, there are - a few additional functions available in the _i_n_d_e_x and _p_a_g_e_r modes. + 7. Forwarding and Bouncing Mail - ^D delete-thread delete all messages in the current thread - ^U undelete-thread undelete all messages in the current thread - ^N next-thread jump to the start of the next thread - ^P previous-thread jump to the start of the previous thread - ^R read-thread mark the current thread as read - ESC d delete-subthread delete all messages in the current subthread - ESC u undelete-subthread undelete all messages in the current subthread - ESC n next-subthread jump to the start of the next subthread - ESC p previous-subthread jump to the start of the previous subthread - ESC r read-subthread mark the current subthread as read - ESC t tag-thread toggle the tag on the current thread - ESC v collapse-thread toggle collapse for the current thread - ESC V collapse-all toggle collapse for all threads - P parent-message jump to parent message in thread - - NNoottee:: Collapsing a thread displays only the first message in the thread and - hides the others. This is useful when threads contain so many messages that you - can only see a handful of threads on the screen. See %M in _$_i_n_d_e_x___f_o_r_m_a_t (sec- - tion 6.3.112 , page 91). For example, you could use "%?M?(#%03M)&(%4l)?" in - _$_i_n_d_e_x___f_o_r_m_a_t (section 6.3.112 , page 91) to optionally display the number of - hidden messages if the thread is collapsed. - - See also: _$_s_t_r_i_c_t___t_h_r_e_a_d_s (section 6.3.302 , page 139). - - _2_._3_._4 _M_i_s_c_e_l_l_a_n_e_o_u_s _F_u_n_c_t_i_o_n_s - - ccrreeaattee--aalliiaass - (default: a) - - Creates a new alias based upon the current message (or prompts for a new one). - Once editing is complete, an _a_l_i_a_s (section 3.2 , page 16) command is added to - the file specified by the _$_a_l_i_a_s___f_i_l_e (section 6.3.3 , page 65) variable for - future use. NNoottee:: Specifying an _$_a_l_i_a_s___f_i_l_e (section 6.3.3 , page 65) does not - add the aliases specified there-in, you must also _s_o_u_r_c_e (section 3.26 , page - 32) the file. - - cchheecckk--ttrraaddiittiioonnaall--ppggpp - (default: ESC P) - - This function will search the current message for content signed or encrypted - with PGP the "traditional" way, that is, without proper MIME tagging. Techni- - cally, this function will temporarily change the MIME content types of the body - parts containing PGP data; this is similar to the _e_d_i_t_-_t_y_p_e (section 2.3.4 , - page 8) function's effect. - - The Mutt-ng E-Mail Client 8 - - ddiissppllaayy--ttooggggllee--wweeeedd - (default: h) - - Toggles the weeding of message header fields specified by _i_g_n_o_r_e (section - 3.8 , page 23) commands. - - eeddiitt - (default: e) - - This command (available in the ``index'' and ``pager'') allows you to edit the - raw current message as it's present in the mail folder. After you have fin- - ished editing, the changed message will be appended to the current folder, and - the original message will be marked for deletion. + 8. Postponing Mail - eeddiitt--ttyyppee - - (default: ^E on the attachment menu, and in the pager and index menus; ^T on - the compose menu) - - This command is used to temporarily edit an attachment's content type to fix, - for instance, bogus character set parameters. When invoked from the index or - from the pager, you'll have the opportunity to edit the top-level attachment's - content type. On the _a_t_t_a_c_h_m_e_n_t _m_e_n_u (section 5.1.2 , page 53), you can - change any attachment's content type. These changes are not persistent, and get - lost upon changing folders. + 3. Configuration - Note that this command is also available on the _c_o_m_p_o_s_e _m_e_n_u (section 5.1.3 , - page 53). There, it's used to fine-tune the properties of attachments you are - going to send. - - eenntteerr--ccoommmmaanndd - (default: ``:'') - - This command is used to execute any command you would normally put in a config- - uration file. A common use is to check the settings of variables, or in con- - junction with _m_a_c_r_o_s (section 3.6 , page 20) to change settings on the fly. + 1. Locations of Configuration Files - eexxttrraacctt--kkeeyyss - (default: ^K) - - This command extracts PGP public keys from the current or tagged message(s) and - adds them to your PGP public key ring. - - ffoorrggeett--ppaasssspphhrraassee - (default: ^F) - - This command wipes the passphrase(s) from memory. It is useful, if you mis- - spelled the passphrase. - - lliisstt--rreeppllyy - (default: L) - - Reply to the current or tagged message(s) by extracting any addresses which - - The Mutt-ng E-Mail Client 9 - - match the regular expressions given by the _l_i_s_t_s _o_r _s_u_b_s_c_r_i_b_e (section 3.10 , - page 24) commands, but also honor any Mail-Followup-To header(s) if the - _$_h_o_n_o_r___f_o_l_l_o_w_u_p___t_o (section 6.3.91 , page 86) configuration variable is set. - Using this when replying to messages posted to mailing lists helps avoid dupli- - cate copies being sent to the author of the message you are replying to. - - ppiippee--mmeessssaaggee - (default: |) - - Asks for an external Unix command and pipes the current or tagged message(s) to - it. The variables _$_p_i_p_e___d_e_c_o_d_e (section 6.3.192 , page 112), _$_p_i_p_e___s_p_l_i_t - (section 6.3.194 , page 112), _$_p_i_p_e___s_e_p (section 6.3.193 , page 112) and - _$_w_a_i_t___k_e_y (section 6.3.325 , page 144) control the exact behavior of this - function. - - rreesseenndd--mmeessssaaggee - (default: ESC e) - - With resend-message, mutt takes the current message as a template for a new - message. This function is best described as "recall from arbitrary folders". - It can conveniently be used to forward MIME messages while preserving the orig- - inal mail structure. Note that the amount of headers included here depends on - the value of the _$_w_e_e_d (section 6.3.326 , page 144) variable. - - This function is also available from the attachment menu. You can use this to - easily resend a message which was included with a bounce message as a mes- - sage/rfc822 body part. - - sshheellll--eessccaappee - (default: !) - - Asks for an external Unix command and executes it. The _$_w_a_i_t___k_e_y (section - 6.3.325 , page 144) can be used to control whether Mutt-ng will wait for a key - to be pressed when the command returns (presumably to let the user read the - output of the command), based on the return status of the named command. - - ttooggggllee--qquuootteedd - (default: T) - - The _p_a_g_e_r uses the _$_q_u_o_t_e___r_e_g_e_x_p (section 6.3.218 , page 118) variable to - detect quoted text when displaying the body of the message. This function tog- - gles the display of the quoted material in the message. It is particularly - useful when are interested in just the response and there is a large amount of - quoted text in the way. - - sskkiipp--qquuootteedd - (default: S) - - This function will go to the next line of non-quoted text which come after a - line of quoted text in the internal pager. + 2. Basic Syntax of Initialization Files - _2_._4 _S_e_n_d_i_n_g _M_a_i_l + 3. Expansion within variables - The following bindings are available in the _i_n_d_e_x for sending messages. + 3.1. Commands' Output - The Mutt-ng E-Mail Client 10 + 3.2. Environment Variables - m compose compose a new message - r reply reply to sender - g group-reply reply to all recipients - L list-reply reply to mailing list address - f forward forward message - b bounce bounce (remail) message - ESC k mail-key mail a PGP public key to someone + 3.3. Configuration Variables - Bouncing a message sends the message as is to the recipient you specify. For- - warding a message allows you to add comments or modify the message you are for- - warding. These items are discussed in greater detail in the next chapter - _`_`_F_o_r_w_a_r_d_i_n_g _a_n_d _B_o_u_n_c_i_n_g _M_a_i_l_'_' (section 2.5 , page 13). + 3.4. Self-Defined Variables - Mutt-ng will then enter the _c_o_m_p_o_s_e menu and prompt you for the recipients to - place on the ``To:'' header field. Next, it will ask you for the ``Subject:'' - field for the message, providing a default if you are replying to or forwarding - a message. See also _$_a_s_k_c_c (section 6.3.12 , page 67), _$_a_s_k_b_c_c (section - 6.3.11 , page 67), _$_a_u_t_o_e_d_i_t (section 6.3.19 , page 69), _$_b_o_u_n_c_e (section - 6.3.22 , page 70), and _$_f_a_s_t___r_e_p_l_y (section 6.3.61 , page 78) for changing - how Mutt asks these questions. + 3.5. Pre-Defined Variables - Mutt will then automatically start your _$_e_d_i_t_o_r (section 6.3.57 , page 77) on - the message body. If the _$_e_d_i_t___h_e_a_d_e_r_s (section 6.3.56 , page 77) variable is - set, the headers will be at the top of the message in your editor. Any mes- - sages you are replying to will be added in sort order to the message, with - appropriate _$_a_t_t_r_i_b_u_t_i_o_n (section 6.3.17 , page 69), _$_i_n_d_e_n_t___s_t_r_i_n_g (section - 6.3.111 , page 90) and _$_p_o_s_t___i_n_d_e_n_t___s_t_r_i_n_g (section 6.3.204 , page 115). - When forwarding a message, if the _$_m_i_m_e___f_o_r_w_a_r_d (section 6.3.139 , page 98) - variable is unset, a copy of the forwarded message will be included. If you - have specified a _$_s_i_g_n_a_t_u_r_e (section 6.3.255 , page 126), it will be appended - to the message. - - Once you have finished editing the body of your mail message, you are returned - to the _c_o_m_p_o_s_e menu. The following options are available: - - The Mutt-ng E-Mail Client 11 - - a attach-file attach a file - A attach-message attach message(s) to the message - ESC k attach-key attach a PGP public key - d edit-description edit description on attachment - D detach-file detach a file - t edit-to edit the To field - ESC f edit-from edit the From field - r edit-reply-to edit the Reply-To field - c edit-cc edit the Cc field - b edit-bcc edit the Bcc field - y send-message send the message - s edit-subject edit the Subject - S smime-menu select S/MIME options - f edit-fcc specify an ``Fcc'' mailbox - p pgp-menu select PGP options - P postpone-message postpone this message until later - q quit quit (abort) sending the message - w write-fcc write the message to a folder - i ispell check spelling (if available on your system) - ^F forget-passphrase wipe passphrase(s) from memory - - NNoottee:: The attach-message function will prompt you for a folder to attach mes- - sages from. You can now tag messages in that folder and they will be attached - to the message you are sending. Note that certain operations like composing a - new mail, replying, forwarding, etc. are not permitted when you are in that - folder. The %r in _$_s_t_a_t_u_s___f_o_r_m_a_t (section 6.3.299 , page 137) will change to a - 'A' to indicate that you are in attach-message mode. - - _2_._4_._1 _E_d_i_t_i_n_g _t_h_e _m_e_s_s_a_g_e _h_e_a_d_e_r - - When editing the header of your outgoing message, there are a couple of special - features available. - - If you specify - - Fcc: _f_i_l_e_n_a_m_e - - Mutt will pick up _f_i_l_e_n_a_m_e just as if you had used the _e_d_i_t_-_f_c_c function in the - _c_o_m_p_o_s_e menu. - - You can also attach files to your message by specifying - - Attach: _f_i_l_e_n_a_m_e [ _d_e_s_c_r_i_p_t_i_o_n ] - - where _f_i_l_e_n_a_m_e is the file to attach and _d_e_s_c_r_i_p_t_i_o_n is an optional string to - use as the description of the attached file. - - When replying to messages, if you remove the _I_n_-_R_e_p_l_y_-_T_o_: field from the header - field, Mutt will not generate a _R_e_f_e_r_e_n_c_e_s_: field, which allows you to create a - new message thread. - - Also see _e_d_i_t___h_e_a_d_e_r_s (section 6.3.56 , page 77). - - The Mutt-ng E-Mail Client 12 - - _2_._4_._2 _U_s_i_n_g _M_u_t_t _w_i_t_h _P_G_P - - If you want to use PGP, you can specify - - Pgp: [ E | S | S_<_i_d_> ] - - ``E'' encrypts, ``S'' signs and ``S'' signs with the given key, setting - _$_p_g_p___s_i_g_n___a_s (section 6.3.184 , page 110) permanently. - - If you have told mutt to PGP encrypt a message, it will guide you through a key - selection process when you try to send the message. Mutt will not ask you any - questions about keys which have a certified user ID matching one of the message - recipients' mail addresses. However, there may be situations in which there - are several keys, weakly certified user ID fields, or where no matching keys - can be found. - - In these cases, you are dropped into a menu with a list of keys from which you - can select one. When you quit this menu, or mutt can't find any matching keys, - you are prompted for a user ID. You can, as usually, abort this prompt using - ^G. When you do so, mutt will return to the compose screen. - - Once you have successfully finished the key selection, the message will be - encrypted using the selected public keys, and sent out. - - Most fields of the entries in the key selection menu (see also _$_p_g_p___e_n_t_r_y___f_o_r_- - _m_a_t (section 6.3.171 , page 107)) have obvious meanings. But some explana- - tions on the capabilities, flags, and validity fields are in order. - - The flags sequence (%f) will expand to one of the following flags: - - R The key has been revoked and can't be used. - X The key is expired and can't be used. - d You have marked the key as disabled. - c There are unknown critical self-signature - packets. - - The capabilities field (%c) expands to a two-character sequence representing a - key's capabilities. The first character gives the key's encryption capabili- - ties: A minus sign (--) means that the key cannot be used for encryption. A dot - (..) means that it's marked as a signature key in one of the user IDs, but may - also be used for encryption. The letter ee indicates that this key can be used - for encryption. - - The second character indicates the key's signing capabilities. Once again, a - ``--'' implies ``not for signing'', ``..'' implies that the key is marked as an - encryption key in one of the user-ids, and ``ss'' denotes a key which can be - used for signing. - - Finally, the validity field (%t) indicates how well-certified a user-id is. A - question mark (??) indicates undefined validity, a minus character (--) marks an - untrusted association, a space character means a partially trusted association, - and a plus character (++) indicates complete validity. - - The Mutt-ng E-Mail Client 13 + 3.6. Type Conversions - _2_._4_._3 _S_e_n_d_i_n_g _a_n_o_n_y_m_o_u_s _m_e_s_s_a_g_e_s _v_i_a _m_i_x_m_a_s_t_e_r_. + 4. Defining/Using aliases - You may also have configured mutt to co-operate with Mixmaster, an anonymous - remailer. Mixmaster permits you to send your messages anonymously using a - chain of remailers. Mixmaster support in mutt is for mixmaster version 2.04 - (beta 45 appears to be the latest) and 2.03. It does not support earlier ver- - sions or the later so-called version 3 betas, of which the latest appears to be - called 2.9b23. + 5. Changing the default key bindings - To use it, you'll have to obey certain restrictions. Most important, you can- - not use the Cc and Bcc headers. To tell Mutt to use mixmaster, you have to - select a remailer chain, using the mix function on the compose menu. + 6. Defining aliases for character sets - The chain selection screen is divided into two parts. In the (larger) upper - part, you get a list of remailers you may use. In the lower part, you see the - currently selected chain of remailers. + 7. Setting variables based upon mailbox - You can navigate in the chain using the chain-prev and chain-next functions, - which are by default bound to the left and right arrows and to the h and l keys - (think vi keyboard bindings). To insert a remailer at the current chain posi- - tion, use the insert function. To append a remailer behind the current chain - position, use select-entry or append. You can also delete entries from the - chain, using the corresponding function. Finally, to abandon your changes, - leave the menu, or accept them pressing (by default) the Return key. + 8. Keyboard macros - Note that different remailers do have different capabilities, indicated in the - %c entry of the remailer menu lines (see _$_m_i_x___e_n_t_r_y___f_o_r_m_a_t (section 6.3.143 , - page 99)). Most important is the ``middleman'' capability, indicated by a cap- - ital ``M'': This means that the remailer in question cannot be used as the - final element of a chain, but will only forward messages to other mixmaster - remailers. For details on the other capabilities, please have a look at the - mixmaster documentation. - - _2_._5 _F_o_r_w_a_r_d_i_n_g _a_n_d _B_o_u_n_c_i_n_g _M_a_i_l - - Bouncing and forwarding let you send an existing message to recipients that you - specify. Bouncing a message uses the _s_e_n_d_m_a_i_l (section 6.3.241 , page 123) - command to send a copy to alternative addresses as if they were the message's - original recipients. Forwarding a message, on the other hand, allows you to - modify the message before it is resent (for example, by adding your own com- - ments). - - The following keys are bound by default: - - f forward forward message - b bounce bounce (remail) message - - Forwarding can be done by including the original message in the new message's - body (surrounded by indicating lines) or including it as a MIME attachment, - depending on the value of the _$_m_i_m_e___f_o_r_w_a_r_d (section 6.3.139 , page 98) vari- - able. Decoding of attachments, like in the pager, can be controlled by the - _$_f_o_r_w_a_r_d___d_e_c_o_d_e (section 6.3.71 , page 81) and _$_m_i_m_e___f_o_r_w_a_r_d___d_e_c_o_d_e (section - - The Mutt-ng E-Mail Client 14 - - 6.3.140 , page 99) variables, respectively. The desired forwarding format may - depend on the content, therefore _$_m_i_m_e___f_o_r_w_a_r_d is a quadoption which, for exam- - ple, can be set to ``ask-no''. - - The inclusion of headers is controlled by the current setting of the _$_w_e_e_d - (section 6.3.326 , page 144) variable, unless _m_i_m_e___f_o_r_w_a_r_d (section 6.3.139 , - page 98) is set. - - Editing the message to forward follows the same procedure as sending or reply- - ing to a message does. - - _2_._6 _P_o_s_t_p_o_n_i_n_g _M_a_i_l - - At times it is desirable to delay sending a message that you have already begun - to compose. When the _p_o_s_t_p_o_n_e_-_m_e_s_s_a_g_e function is used in the _c_o_m_p_o_s_e menu, - the body of your message and attachments are stored in the mailbox specified by - the _$_p_o_s_t_p_o_n_e_d (section 6.3.207 , page 115) variable. This means that you can - recall the message even if you exit Mutt and then restart it at a later time. - - Once a message is postponed, there are several ways to resume it. From the - command line you can use the ``-p'' option, or if you _c_o_m_p_o_s_e a new message - from the _i_n_d_e_x or _p_a_g_e_r you will be prompted if postponed messages exist. If - multiple messages are currently postponed, the _p_o_s_t_p_o_n_e_d menu will pop up and - you can select which message you would like to resume. - - NNoottee:: If you postpone a reply to a message, the reply setting of the message is - only updated when you actually finish the message and send it. Also, you must - be in the same folder with the message you replied to for the status of the - message to be updated. - - See also the _$_p_o_s_t_p_o_n_e (section 6.3.206 , page 115) quad-option. - - _2_._7 _R_e_a_d_i_n_g _n_e_w_s _v_i_a _N_N_T_P - - If compiled with ``--enable-nntp'' option, Mutt can read news from newsserver - via NNTP. You can open a newsgroup with function ``change-newsgroup'' - (default: i). Default newsserver can be obtained from _N_N_T_P_S_E_R_V_E_R environment - variable. Like other news readers, info about subscribed newsgroups is saved - in file by _$_n_e_w_s_r_c (section 6.3.150 , page 102) variable. Article headers are - cached and can be loaded from file when newsgroup entered instead loading from - newsserver. + 9. Using color and mono video attributes - _3_. _C_o_n_f_i_g_u_r_a_t_i_o_n + 10. Ignoring (weeding) unwanted message headers - While the default configuration (or ``preferences'') make Mutt-ng usable right - out of the box, it is often desirable to tailor Mutt to suit your own tastes. - When Mutt-ng is first invoked, it will attempt to read the ``system'' configu- - ration file (defaults set by your local system administrator), unless the - ``-n'' _c_o_m_m_a_n_d _l_i_n_e (section 6.1 , page 62) option is specified. This file is - typically /usr/local/share/muttng/Muttngrc or /etc/Muttngrc, Mutt-ng users will - find this file in /usr/local/share/muttng/Muttrc or /etc/Muttngrc. Mutt will - next look for a file named .muttrc in your home directory, Mutt-ng will look - for .muttngrc. If this file does not exist and your home directory has a + 11. Alternative addresses - The Mutt-ng E-Mail Client 15 + 12. Format = Flowed - subdirectory named .mutt, mutt try to load a file named .muttng/muttngrc. + 12.1. Introduction - .muttrc (or .muttngrc for Mutt-ng) is the file where you will usually place - your _c_o_m_m_a_n_d_s (section 6.2 , page 62) to configure Mutt. + 12.2. Receiving: Display Setup - In addition, mutt supports version specific configuration files that are parsed - instead of the default files as explained above. For instance, if your system - has a Muttrc-0.88 file in the system configuration directory, and you are run- - ning version 0.88 of mutt, this file will be sourced instead of the Muttrc - file. The same is true of the user configuration file, if you have a file - .muttrc-0.88.6 in your home directory, when you run mutt version 0.88.6, it - will source this file instead of the default .muttrc file. The version number - is the same which is visible using the ``-v'' _c_o_m_m_a_n_d _l_i_n_e (section 6.1 , page - 62) switch or using the show-version key (default: V) from the index menu. + 12.3. Sending - _3_._1 _S_y_n_t_a_x _o_f _I_n_i_t_i_a_l_i_z_a_t_i_o_n _F_i_l_e_s + 12.4. Additional Notes - An initialization file consists of a series of _c_o_m_m_a_n_d_s (section 6.2 , page - 62). Each line of the file may contain one or more commands. When multiple - commands are used, they must be separated by a semicolon (;). + 13. Mailing lists - set realname='Mutt user' ; ignore x- + 14. Using Multiple spool mailboxes - The hash mark, or pound sign (``#''), is used as a ``comment'' character. You - can use it to annotate your initialization file. All text after the comment - character to the end of the line is ignored. For example, + 15. Defining mailboxes which receive mail - my_hdr X-Disclaimer: Why are you listening to me? # This is a comment + 16. User defined headers - Single quotes (') and double quotes (') can be used to quote strings which con- - tain spaces or other special characters. The difference between the two types - of quotes is similar to that of many popular shell programs, namely that a sin- - gle quote is used to specify a literal string (one that is not interpreted for - shell variables or quoting with a backslash [see next paragraph]), while double - quotes indicate a string for which should be evaluated. For example, backtics - are evaluated inside of double quotes, but nnoott for single quotes. + 17. Defining the order of headers when viewing messages - \ quotes the next character, just as in shells such as bash and zsh. For exam- - ple, if want to put quotes ``''' inside of a string, you can use ``\'' to force - the next character to be a literal instead of interpreted character. + 18. Specify default save filename - set realname="Michael \"MuttDude\" Elkins" + 19. Specify default Fcc: mailbox when composing - ``\\'' means to insert a literal ``\'' into the line. ``\n'' and ``\r'' have - their usual C meanings of linefeed and carriage-return, respectively. + 20. Specify default save filename and default Fcc: mailbox at + once - A \ at the end of a line can be used to split commands over multiple lines, - provided that the split points don't appear in the middle of command names. + 21. Change settings based upon message recipients - Please note that, unlike the various shells, mutt-ng interprets a ``\'' at the + 22. Change settings before formatting a message - The Mutt-ng E-Mail Client 16 + 23. Choosing the cryptographic key of the recipient - end of a line also in comments. This allows you to disable a command split over - multiple lines with only one ``#''. + 24. Adding key sequences to the keyboard buffer - # folder-hook . \ - set realname="Michael \"MuttDude\" Elkins" + 25. Executing functions - When testing your config files, beware the following caveat. The backslash at - the end of the commented line extends the current line with the next line - - then referred to as a ``continuation line''. As the first line is commented - with a hash (#) all following continuation lines are also part of a comment and - therefore are ignored, too. So take care of comments when continuation lines - are involved within your setup files! + 26. Message Scoring - Abstract example: + 27. Spam detection - line1\ - line2a # line2b\ - line3\ - line4 - line5 + 28. Setting variables - line1 ``continues'' until line4. however, the part after the # is a comment - which includes line3 and line4. line5 is a new line of its own and thus is - interpreted again. + 29. Reading initialization commands from another file - It is also possible to substitute the output of a Unix command in an initial- - ization file. This is accomplished by enclosing the command in backquotes - (``). For example, + 30. Removing hooks - my_hdr X-Operating-System: `uname -a` + 31. Sharing Setups - The output of the Unix command ``uname -a'' will be substituted before the line - is parsed. Note that since initialization files are line oriented, only the - first line of output from the Unix command will be substituted. + 31.1. Character Sets - UNIX environments can be accessed like the way it is done in shells like sh and - bash: Prepend the name of the environment by a ``$''. For example, + 31.2. Modularization - set record=+sent_on_$HOSTNAME + 31.3. Conditional parts - The commands understood by mutt are explained in the next paragraphs. For a - complete list, see the _c_o_m_m_a_n_d _r_e_f_e_r_e_n_c_e (section 6.2 , page 62). + 32. Obsolete Variables - _3_._2 _D_e_f_i_n_i_n_g_/_U_s_i_n_g _a_l_i_a_s_e_s + 4. Advanced Usage - Usage: alias _k_e_y _a_d_d_r_e_s_s [ , _a_d_d_r_e_s_s, ... ] + 1. Regular Expressions - It's usually very cumbersome to remember or type out the address of someone you + 2. Patterns - The Mutt-ng E-Mail Client 17 + 2.1. Complex Patterns - are communicating with. Mutt allows you to create ``aliases'' which map a - short string to a full address. + 2.2. Patterns and Dates - NNoottee:: if you want to create an alias for a group (by specifying more than one - address), you mmuusstt separate the addresses with a comma (``,''). + 3. Format Strings - To remove an alias or aliases (``*'' means all aliases): + 3.1. Introduction - unalias [ * | _k_e_y _._._. ] + 3.2. Conditional Expansion - alias muttdude me@cs.hmc.edu (Michael Elkins) - alias theguys manny, moe, jack + 3.3. Modifications and Padding - Unlike other mailers, Mutt doesn't require aliases to be defined in a special - file. The alias command can appear anywhere in a configuration file, as long - as this file is _s_o_u_r_c_e_d (section 3.26 , page 32). Consequently, you can have - multiple alias files, or you can have all aliases defined in your muttrc. + 4. Using Tags - On the other hand, the _c_r_e_a_t_e_-_a_l_i_a_s (section 2.3.4 , page 7) function can use - only one file, the one pointed to by the _$_a_l_i_a_s___f_i_l_e (section 6.3.3 , page 65) - variable (which is ~/.muttrc by default). This file is not special either, in - the sense that Mutt will happily append aliases to any file, but in order for - the new aliases to take effect you need to explicitly _s_o_u_r_c_e (section 3.26 , - page 32) this file too. + 5. Using Hooks - For example: + 5.1. Message Matching in Hooks - source /usr/local/share/Mutt.aliases - source ~/.mail_aliases - set alias_file=~/.mail_aliases + 6. Using the sidebar - To use aliases, you merely use the alias at any place in mutt where mutt - prompts for addresses, such as the _T_o_: or _C_c_: prompt. You can also enter - aliases in your editor at the appropriate headers if you have the _$_e_d_i_t___h_e_a_d_e_r_s - (section 6.3.56 , page 77) variable set. + 7. External Address Queries - In addition, at the various address prompts, you can use the tab character to - expand a partial alias to the full alias. If there are multiple matches, mutt - will bring up a menu with the matching aliases. In order to be presented with - the full list of aliases, you must hit tab with out a partial alias, such as at - the beginning of the prompt or after a comma denoting multiple addresses. + 8. Mailbox Formats - In the alias menu, you can select as many aliases as you want with the _s_e_l_e_c_t_- - _e_n_t_r_y key (default: RET), and use the _e_x_i_t key (default: q) to return to the - address prompt. + 9. Mailbox Shortcuts - _3_._3 _C_h_a_n_g_i_n_g _t_h_e _d_e_f_a_u_l_t _k_e_y _b_i_n_d_i_n_g_s + 10. Handling Mailing Lists - Usage: bind _m_a_p _k_e_y _f_u_n_c_t_i_o_n + 11. Editing threads - The Mutt-ng E-Mail Client 18 + 11.1. Linking threads - This command allows you to change the default key bindings (operation invoked - when pressing a key). + 11.2. Breaking threads - _m_a_p specifies in which menu the binding belongs. Multiple maps may be speci- - fied by separating them with commas (no additional whitespace is allowed). The - currently defined maps are: + 12. Delivery Status Notification (DSN) Support - generic - This is not a real menu, but is used as a fallback for all of the - other menus except for the pager and editor modes. If a key is not - defined in another menu, Mutt will look for a binding to use in - this menu. This allows you to bind a key to a certain function in - multiple menus instead of having multiple bind statements to accom- - plish the same task. + 13. POP3 Support (OPTIONAL) - alias - The alias menu is the list of your personal aliases as defined in - your muttrc. It is the mapping from a short alias name to the full - email address(es) of the recipient(s). + 14. IMAP Support (OPTIONAL) - attach - The attachment menu is used to access the attachments on received - messages. + 14.1. The Folder Browser - browser - The browser is used for both browsing the local directory struc- - ture, and for listing all of your incoming mailboxes. + 14.2. Authentication - editor - The editor is the line-based editor the user enters text data. + 15. NNTP Support (OPTIONAL) - index - The index is the list of messages contained in a mailbox. + 15.1. Again: Scoring - compose - The compose menu is the screen used when sending a new message. + 16. SMTP Support (OPTIONAL) - pager - The pager is the mode used to display message/attachment data, and - help listings. + 17. Managing multiple IMAP/POP/NNTP accounts (OPTIONAL) - pgp - The pgp menu is used to select the OpenPGP keys used for encrypting - outgoing messages. + 18. Start a WWW Browser on URLs (EXTERNAL) - postpone - The postpone menu is similar to the index menu, except is used when - recalling a message the user was composing, but saved until later. + 19. Compressed folders Support (OPTIONAL) - _k_e_y is the key (or key sequence) you wish to bind. To specify a control char- - acter, use the sequence _\_C_x, where _x is the letter of the control character - (for example, to specify control-A use ``\Ca''). Note that the case of _x as + 19.1. Open a compressed mailbox for reading - The Mutt-ng E-Mail Client 19 + 19.2. Write a compressed mailbox - well as _\_C is ignored, so that _\_C_A, _\_C_a, _\_c_A and _\_c_a are all equivalent. An - alternative form is to specify the key as a three digit octal number prefixed - with a ``\'' (for example _\_1_7_7 is equivalent to _\_c_?). - - In addition, _k_e_y may consist of: + 19.3. Append a message to a compressed mailbox - \t tab - tab - \r carriage return - \n newline - \e escape - escape - up arrow - down arrow - left arrow - right arrow - Page Up - Page Down - Backspace - Delete - Insert - Enter - Return - Home - End - Space bar - function key 1 - function key 10 + 19.4. Encrypted folders - _k_e_y does not need to be enclosed in quotes unless it contains a space (`` ''). + 5. Mutt-ng's MIME Support - _f_u_n_c_t_i_o_n specifies which action to take when _k_e_y is pressed. For a complete - list of functions, see the _r_e_f_e_r_e_n_c_e (section 6.4 , page 146). The special - function noop unbinds the specified key sequence. + 1. Using MIME in Mutt - _3_._4 _D_e_f_i_n_i_n_g _a_l_i_a_s_e_s _f_o_r _c_h_a_r_a_c_t_e_r _s_e_t_s + 1.1. Viewing MIME messages in the pager - Usage: charset-hook _a_l_i_a_s _c_h_a_r_s_e_t + 1.2. The Attachment Menu - Usage: iconv-hook _c_h_a_r_s_e_t _l_o_c_a_l_-_c_h_a_r_s_e_t + 1.3. The Compose Menu - The charset-hook command defines an alias for a character set. This is useful - to properly display messages which are tagged with a character set name not - known to mutt. + 2. MIME Type configuration with mime.types - The iconv-hook command defines a system-specific name for a character set. - This is helpful when your systems character conversion library insists on using - strange, system-specific names for character sets. + 3. MIME Viewer configuration with mailcap - _3_._5 _S_e_t_t_i_n_g _v_a_r_i_a_b_l_e_s _b_a_s_e_d _u_p_o_n _m_a_i_l_b_o_x + 3.1. The Basics of the mailcap file - Usage: folder-hook [!]_r_e_g_e_x_p _c_o_m_m_a_n_d + 3.2. Secure use of mailcap - The Mutt-ng E-Mail Client 20 + 3.3. Advanced mailcap Usage - It is often desirable to change settings based on which mailbox you are read- - ing. The folder-hook command provides a method by which you can execute any - configuration command. _r_e_g_e_x_p is a regular expression specifying in which - mailboxes to execute _c_o_m_m_a_n_d before loading. If a mailbox matches multiple - folder-hook's, they are executed in the order given in the muttrc. + 3.4. Example mailcap files - NNoottee:: if you use the ``!'' shortcut for _$_s_p_o_o_l_f_i_l_e (section 6.3.291 , page - 135) at the beginning of the pattern, you must place it inside of double or - single quotes in order to distinguish it from the logical _n_o_t operator for the - expression. + 4. MIME Autoview - Note that the settings are _n_o_t restored when you leave the mailbox. For exam- - ple, a command action to perform is to change the sorting method based upon the - mailbox being read: + 5. MIME Multipart/Alternative - folder-hook mutt set sort=threads + 6. MIME Lookup - However, the sorting method is not restored to its previous value when reading - a different mailbox. To specify a _d_e_f_a_u_l_t command, use the pattern ``.'': + 6. Security Considerations - folder-hook . set sort=date-sent + 1. Passwords - _3_._6 _K_e_y_b_o_a_r_d _m_a_c_r_o_s + 2. Temporary Files - Usage: macro _m_e_n_u _k_e_y _s_e_q_u_e_n_c_e [ _d_e_s_c_r_i_p_t_i_o_n ] + 3. Information Leaks - Macros are useful when you would like a single key to perform a series of - actions. When you press _k_e_y in menu _m_e_n_u, Mutt will behave as if you had typed - _s_e_q_u_e_n_c_e. So if you have a common sequence of commands you type, you can cre- - ate a macro to execute those commands with a single key. + 3.1. Message-ID: headers - _m_e_n_u is the _m_a_p (section 3.3 , page 17) which the macro will be bound. Multi- - ple maps may be specified by separating multiple menu arguments by commas. - Whitespace may not be used in between the menu arguments and the commas sepa- - rating them. + 3.2. mailto:-style links - _k_e_y and _s_e_q_u_e_n_c_e are expanded by the same rules as the _k_e_y _b_i_n_d_i_n_g_s (section - 3.3 , page 17). There are some additions however. The first is that control - characters in _s_e_q_u_e_n_c_e can also be specified as _^_x. In order to get a caret - (`^'') you need to use _^_^. Secondly, to specify a certain key such as _u_p or to - invoke a function directly, you can use the format _<_k_e_y _n_a_m_e_> and _<_f_u_n_c_t_i_o_n - _n_a_m_e_>. For a listing of key names see the section on _k_e_y _b_i_n_d_i_n_g_s (section - 3.3 , page 17). Functions are listed in the _f_u_n_c_t_i_o_n _r_e_f_e_r_e_n_c_e (section - 6.4 , page 146). + 4. External applications - The advantage with using function names directly is that the macros will work - regardless of the current key bindings, so they are not dependent on the user - having particular key definitions. This makes them more robust and portable, - and also facilitates defining of macros in files used by more than one user - (eg. the system Muttrc). + 4.1. mailcap - The Mutt-ng E-Mail Client 21 + 4.2. Other - Optionally you can specify a descriptive text after _s_e_q_u_e_n_c_e, which is shown in - the help screens. + 7. Reference - NNoottee:: Macro definitions (if any) listed in the help screen(s), are silently - truncated at the screen width, and are not wrapped. + 1. Command line options - _3_._7 _U_s_i_n_g _c_o_l_o_r _a_n_d _m_o_n_o _v_i_d_e_o _a_t_t_r_i_b_u_t_e_s + 2. Patterns - Usage: color _o_b_j_e_c_t _f_o_r_e_g_r_o_u_n_d _b_a_c_k_g_r_o_u_n_d [ _r_e_g_e_x_p ] + 3. Configuration Commands - Usage: color index _f_o_r_e_g_r_o_u_n_d _b_a_c_k_g_r_o_u_n_d _p_a_t_t_e_r_n + 4. Configuration variables - Usage: uncolor index _p_a_t_t_e_r_n [ _p_a_t_t_e_r_n ... ] + 5. Functions - If your terminal supports color, you can spice up Mutt by creating your own - color scheme. To define the color of an object (type of information), you must - specify both a foreground color aanndd a background color (it is not possible to - only specify one or the other). + 5.1. generic - _o_b_j_e_c_t can be one of: + 5.2. index - +o attachment + 5.3. pager - +o body (match _r_e_g_e_x_p in the body of messages) + 5.4. alias - +o bold (highlighting bold patterns in the body of messages) + 5.5. query - +o error (error messages printed by Mutt) + 5.6. attach - +o header (match _r_e_g_e_x_p in the message header) + 5.7. compose - +o hdrdefault (default color of the message header in the pager) + 5.8. postpone - +o index (match _p_a_t_t_e_r_n in the message index) + 5.9. browser - +o indicator (arrow or bar used to indicate the current item in a menu) + 5.10. pgp - +o markers (the ``+'' markers at the beginning of wrapped lines in the pager) + 5.11. editor - +o message (informational messages) + 8. Miscellany - +o normal + 1. Acknowledgments - +o quoted (text matching _$_q_u_o_t_e___r_e_g_e_x_p (section 6.3.218 , page 118) in the - body of a message) + List of Tables - +o quoted1, quoted2, ..., quotedNN (higher levels of quoting) + 2.1. Default Menu Movement Keys - +o search (highlighting of words in the pager) + 2.2. Built-In Editor Functions - +o signature + 2.3. Default Index Menu Bindings - +o status (mode lines used to display info about the mailbox or message) + 2.4. Default Pager Menu Bindings - The Mutt-ng E-Mail Client 22 + 2.5. ANSI Escape Sequences - +o tilde (the ``~'' used to pad blank lines in the pager) + 2.6. ANSI Colors - +o tree (thread tree drawn in the message index and attachment menu) + 2.7. Default Thread Function Bindings - +o underline (highlighting underlined patterns in the body of messages) + 2.8. Default Mail Composition Bindings - _f_o_r_e_g_r_o_u_n_d and _b_a_c_k_g_r_o_u_n_d can be one of the following: + 2.9. Default Compose Menu Bindings - +o white + 2.10. PGP Key Menu Flags - +o black + 3.1. Alternative Key Names - +o green + 4.1. Default Sidebar Function Bindings - +o magenta + 7.1. Mutt-NG Command Line Options - +o blue + 7.2. Patterns - +o cyan + 7.3. Obsolete Variables - +o yellow +Chapter 1. Introduction - +o red + Table of Contents - +o default + 1. Overview - +o color_x + 2. Mutt-ng Home Page - _f_o_r_e_g_r_o_u_n_d can optionally be prefixed with the keyword bright to make the fore- - ground color boldfaced (e.g., brightred). + 3. Mailing Lists - If your terminal supports it, the special keyword _d_e_f_a_u_l_t can be used as a - transparent color. The value _b_r_i_g_h_t_d_e_f_a_u_l_t is also valid. If Mutt is linked - against the _S_-_L_a_n_g library, you also need to set the _C_O_L_O_R_F_G_B_G environment - variable to the default colors of your terminal for this to work; for example - (for Bourne-like shells): + 4. Software Distribution Sites - set COLORFGBG="green;black" - export COLORFGBG + 5. IRC - NNoottee:: The _S_-_L_a_n_g library requires you to use the _l_i_g_h_t_g_r_a_y and _b_r_o_w_n keywords - instead of _w_h_i_t_e and _y_e_l_l_o_w when setting this variable. + 6. Weblog - NNoottee:: The uncolor command can be applied to the index object only. It removes - entries from the list. You mmuusstt specify the same pattern specified in the color - command for it to be removed. The pattern ``*'' is a special token which means - to clear the color index list of all entries. + 7. Copyright - Mutt also recognizes the keywords _c_o_l_o_r_0, _c_o_l_o_r_1, ..., _c_o_l_o_rNN--11 (NN being the - number of colors supported by your terminal). This is useful when you remap - the colors for your display (for example by changing the color associated with - _c_o_l_o_r_2 for your xterm), since color names may then lose their normal meaning. +1. Overview - The Mutt-ng E-Mail Client 23 + Mutt-ng is a small but very powerful text-based MIME mail client. Mutt-ng + is highly configurable, and is well suited to the mail power user with + advanced features like key bindings, keyboard macros, mail threading, + regular expression searches and a powerful pattern matching language for + selecting groups of messages. - If your terminal does not support color, it is still possible change the video - attributes through the use of the ``mono'' command: + This documentation additionally contains documentation to Mutt-NG ,a fork + from Mutt with the goal to fix all the little annoyances of Mutt, to + integrate all the Mutt patches that are floating around in the web, and to + add other new features. Features specific to Mutt-ng will be discussed in + an extra section. Don't be confused when most of the documentation talk + about Mutt and not Mutt-ng, Mutt-ng contains all Mutt features, plus many + more. - Usage: mono _<_o_b_j_e_c_t_> _<_a_t_t_r_i_b_u_t_e_> [ _r_e_g_e_x_p ] +2. Mutt-ng Home Page - Usage: mono index _a_t_t_r_i_b_u_t_e _p_a_t_t_e_r_n + http://www.muttng.org - Usage: unmono index _p_a_t_t_e_r_n [ _p_a_t_t_e_r_n ... ] +3. Mailing Lists - where _a_t_t_r_i_b_u_t_e is one of the following: + o : This is where the mutt-ng user + support happens. - +o none + o : The development mailing list for + mutt-ng - +o bold +4. Software Distribution Sites - +o underline + So far, there are no official releases of Mutt-ng, but you can download + daily snapshots from http://mutt-ng.berlios.de/snapshots/ - +o reverse +5. IRC - +o standout + Visit channel #muttng on irc.freenode.net (www.freenode.net) to chat with + other people interested in Mutt-ng. - _3_._8 _I_g_n_o_r_i_n_g _(_w_e_e_d_i_n_g_) _u_n_w_a_n_t_e_d _m_e_s_s_a_g_e _h_e_a_d_e_r_s +6. Weblog - Usage: [un]ignore _p_a_t_t_e_r_n [ _p_a_t_t_e_r_n ... ] + If you want to read fresh news about the latest development in Mutt-ng, + and get informed about stuff like interesting, Mutt-ng-related articles + and packages for your favorite distribution, you can read and/or subscribe + to our Mutt-ng development weblog. - Messages often have many header fields added by automatic processing systems, - or which may not seem useful to display on the screen. This command allows you - to specify header fields which you don't normally want to see. +7. Copyright - You do not need to specify the full header field name. For example, ``ignore - content-'' will ignore all header fields that begin with the pattern ``con- - tent-''. ``ignore *'' will ignore all headers. + Mutt is Copyright (C) 1996-2000 Michael R. Elkins and + others - To remove a previously added token from the list, use the ``unignore'' command. - The ``unignore'' command will make Mutt display headers with the given pattern. - For example, if you do ``ignore x-'' it is possible to ``unignore x-mailer''. + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. - ``unignore *'' will remove all tokens from the ignore list. + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. - For example: + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., 59 + Temple Place - Suite 330, Boston, MA 02111, USA. - # Sven's draconian header weeding - ignore * - unignore from date subject to cc - unignore organization organisation x-mailer: x-newsreader: x-mailing-list: - unignore posted-to: +Chapter 2. Getting Started - _3_._9 _A_l_t_e_r_n_a_t_i_v_e _a_d_d_r_e_s_s_e_s + Table of Contents - Usage: [un]alternates _r_e_g_e_x_p [ _r_e_g_e_x_p ... ] + 1. Basic Concepts - With various functions, mutt will treat messages differently, depending on - whether you sent them or whether you received them from someone else. For + 1.1. Screens and Menus - The Mutt-ng E-Mail Client 24 + 1.2. Configuration - instance, when replying to a message that you sent to a different party, mutt - will automatically suggest to send the response to the original message's - recipients -- responding to yourself won't make much sense in many cases. (See - _$_r_e_p_l_y___t_o (section 6.3.226 , page 119).) + 1.3. Functions - Many users receive e-mail under a number of different addresses. To fully use - mutt's features here, the program must be able to recognize what e-mail - addresses you receive mail under. That's the purpose of the alternates command: - It takes a list of regular expressions, each of which can identify an address - under which you receive e-mail. + 1.4. Interaction - The unalternates command can be used to write exceptions to alternates pat- - terns. If an address matches something in an alternates command, but you none- - theless do not think it is from you, you can list a more precise pattern under - an unalternates command. + 1.5. Modularization - To remove a regular expression from the alternates list, use the unalternates - command with exactly the same _r_e_g_e_x_p. Likewise, if the _r_e_g_e_x_p for a alternates - command matches an entry on the unalternates list, that unalternates entry will - be removed. If the _r_e_g_e_x_p for unalternates is ``*'', _a_l_l _e_n_t_r_i_e_s on alternates - will be removed. + 1.6. Patterns - _3_._1_0 _M_a_i_l_i_n_g _l_i_s_t_s + 2. Screens and Menus - Usage: [un]lists _r_e_g_e_x_p [ _r_e_g_e_x_p ... ] + 2.1. Index - Usage: [un]subscribe _r_e_g_e_x_p [ _r_e_g_e_x_p ... ] + 2.2. Pager - Mutt has a few nice features for _h_a_n_d_l_i_n_g _m_a_i_l_i_n_g _l_i_s_t_s (section 4.9 , page - 44). In order to take advantage of them, you must specify which addresses - belong to mailing lists, and which mailing lists you are subscribed to. Once - you have done this, the _l_i_s_t_-_r_e_p_l_y (section 2.3.4 , page 8) function will work - for all known lists. Additionally, when you send a message to a subscribed - list, mutt will add a Mail-Followup-To header to tell other users' mail user - agents not to send copies of replies to your personal address. Note that the - Mail-Followup-To header is a non-standard extension which is not supported by - all mail user agents. Adding it is not bullet-proof against receiving personal - CCs of list messages. Also note that the generation of the Mail-Followup-To - header is controlled by the _$_f_o_l_l_o_w_u_p___t_o (section 6.3.67 , page 80) configura- - tion variable. + 2.3. File Browser - More precisely, Mutt maintains lists of patterns for the addresses of known and - subscribed mailing lists. Every subscribed mailing list is known. To mark a - mailing list as known, use the ``lists'' command. To mark it as subscribed, - use ``subscribe''. + 2.4. Sidebar - You can use regular expressions with both commands. To mark all messages sent - to a specific bug report's address on mutt's bug tracking system as list mail, - for instance, you could say ``subscribe [0-9]*@bugs.guug.de''. Often, it's - sufficient to just give a portion of the list's e-mail address. + 2.5. Help - Specify as much of the address as you need to to remove ambiguity. For exam- - ple, if you've subscribed to the Mutt mailing list, you will receive mail - addressed to _m_u_t_t_-_u_s_e_r_s_@_m_u_t_t_._o_r_g. So, to tell Mutt that this is a mailing + 2.6. Compose Menu - The Mutt-ng E-Mail Client 25 + 2.7. Alias Menu - list, you could add ``lists mutt-users'' to your initialization file. To tell - mutt that you are subscribed to it, add ``subscribe mutt-users'' to your ini- - tialization file instead. If you also happen to get mail from someone whose - address is _m_u_t_t_-_u_s_e_r_s_@_e_x_a_m_p_l_e_._c_o_m, you could use ``lists mutt- - users@mutt\\.org'' or ``subscribe mutt-users@mutt\\.org'' to match only mail - from the actual list. + 2.8. Attachment Menu - The ``unlists'' command is used to remove a token from the list of known and - subscribed mailing-lists. Use ``unlists *'' to remove all tokens. + 2.9. Key Menu - To remove a mailing list from the list of subscribed mailing lists, but keep it - on the list of known mailing lists, use ``unsubscribe''. + 3. Moving Around in Menus - _3_._1_1 _U_s_i_n_g _M_u_l_t_i_p_l_e _s_p_o_o_l _m_a_i_l_b_o_x_e_s + 4. Editing Input Fields - Usage: mbox-hook [!]_p_a_t_t_e_r_n _m_a_i_l_b_o_x + 5. Reading Mail - The Index and Pager - This command is used to move read messages from a specified mailbox to a dif- - ferent mailbox automatically when you quit or change folders. _p_a_t_t_e_r_n is a - regular expression specifying the mailbox to treat as a ``spool'' mailbox and - _m_a_i_l_b_o_x specifies where mail should be saved when read. + 5.1. The Message Index - Unlike some of the other _h_o_o_k commands, only the _f_i_r_s_t matching pattern is used - (it is not possible to save read mail in more than a single mailbox). + 5.2. The Pager - _3_._1_2 _D_e_f_i_n_i_n_g _m_a_i_l_b_o_x_e_s _w_h_i_c_h _r_e_c_e_i_v_e _m_a_i_l + 5.3. Threaded Mode - Usage: [un]mailboxes [!]_f_i_l_e_n_a_m_e [ _f_i_l_e_n_a_m_e ... ] + 5.4. Miscellaneous Functions - This command specifies folders which can receive mail and which will be checked - for new messages. By default, the main menu status bar displays how many of - these folders have new messages. + 6. Sending Mail - When changing folders, pressing _s_p_a_c_e will cycle through folders with new mail. + 6.1. Composing new messages - Pressing TAB in the directory browser will bring up a menu showing the files - specified by the mailboxes command, and indicate which contain new messages. - Mutt will automatically enter this mode when invoked from the command line with - the -y option. + 6.2. Replying - The ``unmailboxes'' command is used to remove a token from the list of folders - which receive mail. Use ``unmailboxes *'' to remove all tokens. + 6.3. Editing the message header - NNoottee:: new mail is detected by comparing the last modification time to the last - access time. Utilities like biff or frm or any other program which accesses - the mailbox might cause Mutt to never detect new mail for that mailbox if they - do not properly reset the access time. Backup tools are another common reason - for updated access times. + 6.4. Using Mutt-ng with PGP - NNoottee:: the filenames in the mailboxes command are resolved when the command is - executed, so if these names contain _s_h_o_r_t_c_u_t _c_h_a_r_a_c_t_e_r_s (section 4.8 , page - 44) (such as ``='' and ``!''), any variable definition that affect these char- - acters (like _$_f_o_l_d_e_r (section 6.3.65 , page 79) and _$_s_p_o_o_l_f_i_l_e (section - 6.3.291 , page 135)) should be executed before the mailboxes command. + 6.5. Sending anonymous messages via mixmaster - The Mutt-ng E-Mail Client 26 + 7. Forwarding and Bouncing Mail - _3_._1_3 _U_s_e_r _d_e_f_i_n_e_d _h_e_a_d_e_r_s + 8. Postponing Mail - Usage: +1. Basic Concepts - my_hdr _s_t_r_i_n_g + 1.1. Screens and Menus - unmy_hdr _f_i_e_l_d [ _f_i_e_l_d ... ] + mutt-ng offers different screens of which every has its special purpose: - The ``my_hdr'' command allows you to create your own header fields which will - be added to every message you send. + o The index displays the contents of the currently opened mailbox. - For example, if you would like to add an ``Organization:'' header field to all - of your outgoing messages, you can put the command + o The pager is responsible for displaying messages, that is, the header, + the body and all attached parts. - my_hdr Organization: A Really Big Company, Anytown, USA + o The file browser offers operations on and displays information of all + folders mutt-ng should watch for mail. - in your .muttrc. + o The sidebar offers a permanent view of which mailboxes contain how + many total, new and/or flagged mails. - NNoottee:: space characters are _n_o_t allowed between the keyword and the colon - (``:''). The standard for electronic mail (RFC822) says that space is illegal - there, so Mutt enforces the rule. + o The help screen lists for all currently available commands how to + invoke them as well as a short description. - If you would like to add a header field to a single message, you should either - set the _e_d_i_t___h_e_a_d_e_r_s (section 6.3.56 , page 77) variable, or use the _e_d_i_t_- - _h_e_a_d_e_r_s function (default: ``E'') in the send-menu so that you can edit the - header of your message along with the body. + o The compose menu is a comfortable interface take last actions before + sending mail: change subjects, attach files, remove attachements, etc. - To remove user defined header fields, use the ``unmy_hdr'' command. You may - specify an asterisk (``*'') to remove all header fields, or the fields to - remove. For example, to remove all ``To'' and ``Cc'' header fields, you could - use: + o The attachement menu gives a summary and the tree structure of the + attachements of the current message. - unmy_hdr to cc + o The alias menu lists all or a fraction of the aliases a user has + defined. - _3_._1_4 _D_e_f_i_n_i_n_g _t_h_e _o_r_d_e_r _o_f _h_e_a_d_e_r_s _w_h_e_n _v_i_e_w_i_n_g _m_e_s_s_a_g_e_s + o The key menu used in connection with encryption lets users choose the + right key to encrypt with. - Usage: hdr_order _h_e_a_d_e_r_1 _h_e_a_d_e_r_2 _h_e_a_d_e_r_3 + When mutt-ng is started without any further options, it'll open the users + default mailbox and display the index. - With this command, you can specify an order in which mutt will attempt to - present headers to you when viewing messages. + 1.2. Configuration - ``unhdr_order *'' will clear all previous headers from the order list, thus - removing the header order effects set by the system-wide startup file. + Mutt-ng does not feature an internal configuration interface or menu due + to the simple fact that this would be too complex to handle (currently + there are several hundred variables which fine-tune the behaviour.) - hdr_order From Date: From: To: Cc: Subject: + Mutt-ng is configured using configuration files which allow users to add + comments or manage them via version control systems to ease maintenance. - _3_._1_5 _S_p_e_c_i_f_y _d_e_f_a_u_l_t _s_a_v_e _f_i_l_e_n_a_m_e + Also, mutt-ng comes with a shell script named grml-muttng kindly + contributed by users which really helps and eases the creation of a user's + configuration file. When downloading the source code via a snapshot or via + subversion, it can be found in the contrib directory. - The Mutt-ng E-Mail Client 27 + 1.3. Functions - Usage: save-hook [!]_p_a_t_t_e_r_n _f_i_l_e_n_a_m_e + Mutt-ng offers great flexibility due to the use of functions: internally, + every action a user can make mutt-ng perform is named ``function.'' Those + functions are assigned to keys (or even key sequences) and may be + completely adjusted to user's needs. The basic idea is that the impatient + users get a very intuitive interface to start off with and advanced users + virtually get no limits to adjustments. - This command is used to override the default filename used when saving mes- - sages. _f_i_l_e_n_a_m_e will be used as the default filename if the message is _F_r_o_m_: - an address matching _r_e_g_e_x_p or if you are the author and the message is - addressed _t_o_: something matching _r_e_g_e_x_p. + 1.4. Interaction - See _M_e_s_s_a_g_e _M_a_t_c_h_i_n_g _i_n _H_o_o_k_s (section 4.4.1 , page 41) for information on the - exact format of _p_a_t_t_e_r_n. + Mutt-ng has two basic concepts of user interaction: - Examples: + 1. There is one dedicated line on the screen used to query the user for + input, issue any command, query variables and display error and + informational messages. As for every type of user input, this requires + manual action leading to the need of input. - save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins - save-hook aol\\.com$ +spam + 2. The automatized interface for interaction are the so called hooks. + Hooks specify actions the user wants to be performed at well-defined + situations: what to do when entering which folder, what to do when + displaying or replying to what kind of message, etc. These are + optional, i.e. a user doesn't need to specify them but can do so. - Also see the _f_c_c_-_s_a_v_e_-_h_o_o_k (section 3.17 , page 27) command. + 1.5. Modularization - _3_._1_6 _S_p_e_c_i_f_y _d_e_f_a_u_l_t _F_c_c_: _m_a_i_l_b_o_x _w_h_e_n _c_o_m_p_o_s_i_n_g + Although mutt-ng has many functionality built-in, many features can be + delegated to external tools to increase flexibility: users can define + programs to filter a message through before displaying, users can use any + program they want for displaying a message, message types (such as PDF or + PostScript) for which mutt-ng doesn't have a built-in filter can be + rendered by arbitrary tools and so forth. Although mutt-ng has an alias + mechanism built-in, it features using external tools to query for nearly + every type of addresses from sources like LDAP, databases or just the list + of locally known users. - Usage: fcc-hook [!]_p_a_t_t_e_r_n _m_a_i_l_b_o_x + 1.6. Patterns - This command is used to save outgoing mail in a mailbox other than _$_r_e_c_o_r_d - (section 6.3.223 , page 119). Mutt searches the initial list of message - recipients for the first matching _r_e_g_e_x_p and uses _m_a_i_l_b_o_x as the default Fcc: - mailbox. If no match is found the message will be saved to _$_r_e_c_o_r_d (section - 6.3.223 , page 119) mailbox. + Mutt-ng has a built-in pattern matching ``language'' which is as widely + used as possible to present a consistent interface to users. The same + ``pattern terms'' can be used for searching, scoring, message selection + and much more. - See _M_e_s_s_a_g_e _M_a_t_c_h_i_n_g _i_n _H_o_o_k_s (section 4.4.1 , page 41) for information on the - exact format of _p_a_t_t_e_r_n. +2. Screens and Menus - Example: fcc-hook [@.]aol\\.com$ +spammers + 2.1. Index - The above will save a copy of all messages going to the aol.com domain to the - `+spammers' mailbox by default. Also see the _f_c_c_-_s_a_v_e_-_h_o_o_k (section 3.17 , - page 27) command. + The index is the screen that you usually see first when you start mutt-ng. + It gives an overview over your emails in the currently opened mailbox. By + default, this is your system mailbox. The information you see in the index + is a list of emails, each with its number on the left, its flags (new + email, important email, email that has been forwarded or replied to, + tagged email, ...), the date when email was sent, its sender, the email + size, and the subject. Additionally, the index also shows thread + hierarchies: when you reply to an email, and the other person replies + back, you can see the other's person email in a "sub-tree" below. This is + especially useful for personal email between a group of people or when + you've subscribed to mailing lists. + + 2.2. Pager + + The pager is responsible for showing the email content. On the top of the + pager you have an overview over the most important email headers like the + sender, the recipient, the subject, and much more information. How much + information you actually see depends on your configuration, which we'll + describe below. + + Below the headers, you see the email body which usually contains the + message. If the email contains any attachments, you will see more + information about them below the email body, or, if the attachments are + text files, you can view them directly in the pager. + + To give the user a good overview, it is possible to configure mutt-ng to + show different things in the pager with different colors. Virtually + everything that can be described with a regular expression can be colored, + e.g. URLs, email addresses or smileys. + + 2.3. File Browser + + The file browser is the interface to the local or remote file system. When + selecting a mailbox to open, the browser allows custom sorting of items, + limiting the items shown by a regular expression and a freely adjustable + format of what to display in which way. It also allows for easy navigation + through the file system when selecting file(s) to attach to a message, + select multiple files to attach and many more. + + 2.4. Sidebar + + The sidebar comes in handy to manage mails which are spread over different + folders. All folders users setup mutt-ng to watch for new mail will be + listed. The listing includes not only the name but also the number of + total messages, the number of new and flagged messages. Items with new + mail may be colored different from those with flagged mail, items may be + shortened or compress if they're they to long to be printed in full form + so that by abbreviated names, user still now what the name stands for. + + 2.5. Help + + The help screen is meant to offer a quick help to the user. It lists the + current configuration of key bindings and their associated commands + including a short description, and currently unbound functions that still + need to be associated with a key binding (or alternatively, they can be + called via the mutt-ng command prompt). + + 2.6. Compose Menu + + The compose menu features a split screen containing the information which + really matter before actually sending a message by mail or posting an + article to a newsgroup: who gets the message as what (recipient, + newsgroup, who gets what kind of copy). Additionally, users may set + security options like deciding whether to sign, encrypt or sign and + encrypt a message with/for what keys. + + Also, it's used to attach messages, news articles or files to a message, + to re-edit any attachment including the message itself. + + 2.7. Alias Menu + + The alias menu is used to help users finding the recipients of messages. + For users who need to contact many people, there's no need to remember + addresses or names completely because it allows for searching, too. The + alias mechanism and thus the alias menu also features grouping several + addresses by a shorter nickname, the actual alias, so that users don't + have to select each single recipient manually. + + 2.8. Attachment Menu + + As will be later discussed in detail, mutt-ng features a good and stable + MIME implementation, that is, is greatly supports sending and receiving + messages of arbitrary type. The attachment menu displays a message's + structure in detail: what content parts are attached to which parent part + (which gives a true tree structure), which type is of what type and what + size. Single parts may saved, deleted or modified to offer great and easy + access to message's internals. + + 2.9. Key Menu + + FIXME + +3. Moving Around in Menus + + Information is presented in menus, very similar to ELM. Here is a + tableshowing the common keys used to navigate menus in Mutt-ng. + + Table 2.1. Default Menu Movement Keys + + +------------------------------------------------------------------------+ + | Key | Function | Description | + |-------------+----------------+-----------------------------------------| + | j or Down | next-entry | move to the next entry | + |-------------+----------------+-----------------------------------------| + | k or Up | previous-entry | move to the previous entry | + |-------------+----------------+-----------------------------------------| + | z or PageDn | page-down | go to the next page | + |-------------+----------------+-----------------------------------------| + | Z or PageUp | page-up | go to the previous page | + |-------------+----------------+-----------------------------------------| + | = or Home | first-entry | jump to the first entry | + |-------------+----------------+-----------------------------------------| + | * or End | last-entry | jump to the last entry | + |-------------+----------------+-----------------------------------------| + | q | quit | exit the current menu | + |-------------+----------------+-----------------------------------------| + | ? | help | list all key bindings for the current | + | | | menu | + +------------------------------------------------------------------------+ + +4. Editing Input Fields + + Mutt-ng has a builtin line editor which is used as the primary way to + input textual data such as email addresses or filenames. The keys used to + move around while editing are very similar to those of Emacs. + + Table 2.2. Built-In Editor Functions + + +------------------------------------------------------------------------+ + | Key | Function | Description | + |----------------+-----------------+-------------------------------------| + | ^A or | bol | move to the start of the line | + |----------------+-----------------+-------------------------------------| + | ^B or | backward-char | move back one char | + |----------------+-----------------+-------------------------------------| + | Esc B | backward-word | move back one word | + |----------------+-----------------+-------------------------------------| + | ^D or | delete-char | delete the char under the cursor | + |----------------+-----------------+-------------------------------------| + | ^E or | eol | move to the end of the line | + |----------------+-----------------+-------------------------------------| + | ^F or | forward-char | move forward one char | + |----------------+-----------------+-------------------------------------| + | Esc F | forward-word | move forward one word | + |----------------+-----------------+-------------------------------------| + | | complete | complete filename or alias | + |----------------+-----------------+-------------------------------------| + | ^T | complete-query | complete address with query | + |----------------+-----------------+-------------------------------------| + | ^K | kill-eol | delete to the end of the line | + |----------------+-----------------+-------------------------------------| + | ESC d | kill-eow | delete to the end of the word | + |----------------+-----------------+-------------------------------------| + | ^W | kill-word | kill the word in front of the | + | | | cursor | + |----------------+-----------------+-------------------------------------| + | ^U | kill-line | delete entire line | + |----------------+-----------------+-------------------------------------| + | ^V | quote-char | quote the next typed key | + |----------------+-----------------+-------------------------------------| + | | history-up | recall previous string from history | + |----------------+-----------------+-------------------------------------| + | | history-down | recall next string from history | + |----------------+-----------------+-------------------------------------| + | | backspace | kill the char in front of the | + | | | cursor | + |----------------+-----------------+-------------------------------------| + | Esc u | upcase-word | convert word to upper case | + |----------------+-----------------+-------------------------------------| + | Esc l | downcase-word | convert word to lower case | + |----------------+-----------------+-------------------------------------| + | Esc c | capitalize-word | capitalize the word | + |----------------+-----------------+-------------------------------------| + | ^G | n/a | abort | + |----------------+-----------------+-------------------------------------| + | | n/a | finish editing | + +------------------------------------------------------------------------+ + + You can remap the editor functions using the bind command. For example, to + make the Delete key delete the character in front of the cursor rather + than under, you could use + + bind editor backspace + +5. Reading Mail - The Index and Pager + + Similar to many other mail clients, there are two modes in which mail + isread in Mutt-ng. The first is the index of messages in the mailbox, + which is called the ``index'' in Mutt-ng. The second mode is the display + of the message contents. This is called the ``pager.'' + + The next few sections describe the functions provided in each of these + modes. + + 5.1. The Message Index + + Table 2.3. Default Index Menu Bindings + + +-------------------------------------------------------------------+ + | Key | Function | Description | + |----------+----------+---------------------------------------------| + | c | | change to a different mailbox | + |----------+----------+---------------------------------------------| + | ESC c | | change to a folder in read-only mode | + |----------+----------+---------------------------------------------| + | C | | copy the current message to another mailbox | + |----------+----------+---------------------------------------------| + | ESC C | | decode a message and copy it to a folder | + |----------+----------+---------------------------------------------| + | ESC s | | decode a message and save it to a folder | + |----------+----------+---------------------------------------------| + | D | | delete messages matching a pattern | + |----------+----------+---------------------------------------------| + | d | | delete the current message | + |----------+----------+---------------------------------------------| + | F | | mark as important | + |----------+----------+---------------------------------------------| + | l | | show messages matching a pattern | + |----------+----------+---------------------------------------------| + | N | | mark message as new | + |----------+----------+---------------------------------------------| + | o | | change the current sort method | + |----------+----------+---------------------------------------------| + | O | | reverse sort the mailbox | + |----------+----------+---------------------------------------------| + | q | | save changes and exit | + |----------+----------+---------------------------------------------| + | s | | save-message | + |----------+----------+---------------------------------------------| + | T | | tag messages matching a pattern | + |----------+----------+---------------------------------------------| + | t | | toggle the tag on a message | + |----------+----------+---------------------------------------------| + | ESC t | | toggle tag on entire message thread | + |----------+----------+---------------------------------------------| + | U | | undelete messages matching a pattern | + |----------+----------+---------------------------------------------| + | u | | undelete-message | + |----------+----------+---------------------------------------------| + | v | | view-attachments | + |----------+----------+---------------------------------------------| + | x | | abort changes and exit | + |----------+----------+---------------------------------------------| + | | | display-message | + |----------+----------+---------------------------------------------| + | | | jump to the next new or unread message | + |----------+----------+---------------------------------------------| + | @ | | show the author's full e-mail address | + |----------+----------+---------------------------------------------| + | $ | | save changes to mailbox | + |----------+----------+---------------------------------------------| + | / | | search | + |----------+----------+---------------------------------------------| + | ESC / | | search-reverse | + |----------+----------+---------------------------------------------| + | ^L | | clear and redraw the screen | + |----------+----------+---------------------------------------------| + | ^T | | untag messages matching a pattern | + +-------------------------------------------------------------------+ - _3_._1_7 _S_p_e_c_i_f_y _d_e_f_a_u_l_t _s_a_v_e _f_i_l_e_n_a_m_e _a_n_d _d_e_f_a_u_l_t _F_c_c_: _m_a_i_l_b_o_x _a_t _o_n_c_e + 5.1.1. Status Flags - Usage: fcc-save-hook [!]_p_a_t_t_e_r_n _m_a_i_l_b_o_x + In addition to who sent the message and the subject, a short summary of + the disposition of each message is printed beside the message number. Zero + or more of the following ``flags'' may appear, which mean: - This command is a shortcut, equivalent to doing both a _f_c_c_-_h_o_o_k (section - 3.16 , page 27) and a _s_a_v_e_-_h_o_o_k (section 3.15 , page 26) with its arguments. + D - _3_._1_8 _C_h_a_n_g_e _s_e_t_t_i_n_g_s _b_a_s_e_d _u_p_o_n _m_e_s_s_a_g_e _r_e_c_i_p_i_e_n_t_s + message is deleted (is marked for deletion) - Usage: reply-hook [!]_p_a_t_t_e_r_n _c_o_m_m_a_n_d + d - Usage: send-hook [!]_p_a_t_t_e_r_n _c_o_m_m_a_n_d + message have attachments marked for deletion - Usage: send2-hook [!]_p_a_t_t_e_r_n _c_o_m_m_a_n_d + K - These commands can be used to execute arbitrary configuration commands based + contains a PGP public key - The Mutt-ng E-Mail Client 28 + N - upon recipients of the message. _p_a_t_t_e_r_n is a regular expression matching the - desired address. _c_o_m_m_a_n_d is executed when _r_e_g_e_x_p matches recipients of the - message. + message is new - reply-hook is matched against the message you are _r_e_p_l_y_i_n_g ttoo, instead of the - message you are _s_e_n_d_i_n_g. send-hook is matched against all messages, both _n_e_w - and _r_e_p_l_i_e_s. NNoottee:: reply-hooks are matched bbeeffoorree the send-hook, rreeggaarrddlleessss of - the order specified in the users's configuration file. + O - send2-hook is matched every time a message is changed, either by editing it, or - by using the compose menu to change its recipients or subject. send2-hook is - executed after send-hook, and can, e.g., be used to set parameters such as the - _$_s_e_n_d_m_a_i_l (section 6.3.241 , page 123) variable depending on the message's - sender address. + message is old + + P + + message is PGP encrypted + + r + + message has been replied to - For each type of send-hook or reply-hook, when multiple matches occur, commands - are executed in the order they are specified in the muttrc (for that type of - hook). + S + + message is signed, and the signature is succesfully verified + + s + + message is signed + + ! + + message is flagged + + * + + message is tagged + + Some of the status flags can be turned on or off using + + o set-flag (default: w) + + o clear-flag (default: W) + + Furthermore, the following flags reflect who the message is addressed to. + They can be customized with the $to_chars variable. + + + + + message is to you and you only + + T + + message is to you, but also to or cc'ed to others + + C + + message is cc'ed to you + + F + + message is from you - See _M_e_s_s_a_g_e _M_a_t_c_h_i_n_g _i_n _H_o_o_k_s (section 4.4.1 , page 41) for information on the - exact format of _p_a_t_t_e_r_n. + L - Example: send-hook mutt 'set mime_forward signature=''' + message is sent to a subscribed mailing list - Another typical use for this command is to change the values of the _$_a_t_t_r_i_b_u_- - _t_i_o_n (section 6.3.17 , page 69), _$_s_i_g_n_a_t_u_r_e (section 6.3.255 , page 126) and - _$_l_o_c_a_l_e (section 6.3.117 , page 94) variables in order to change the language - of the attributions and signatures based upon the recipients. + 5.2. The Pager - NNoottee:: the send-hook's are only executed ONCE after getting the initial list of - recipients. Adding a recipient after replying or editing the message will NOT - cause any send-hook to be executed. Also note that my_hdr commands which mod- - ify recipient headers, or the message's subject, don't have any effect on the - current message when executed from a send-hook. + By default, Mutt-ng uses its builtin pager to display the body of + messages. The pager is very similar to the Unix program less though not + nearly as featureful. - _3_._1_9 _C_h_a_n_g_e _s_e_t_t_i_n_g_s _b_e_f_o_r_e _f_o_r_m_a_t_t_i_n_g _a _m_e_s_s_a_g_e + Table 2.4. Default Pager Menu Bindings - Usage: message-hook [!]_p_a_t_t_e_r_n _c_o_m_m_a_n_d + +------------------------------------------------------------------------+ + | Key | Function | Description | + |----------+----------+--------------------------------------------------| + | | | go down one line | + |----------+----------+--------------------------------------------------| + | | | display the next page (or next message if at the | + | | | end of a message) | + |----------+----------+--------------------------------------------------| + | - | | go back to the previous page | + |----------+----------+--------------------------------------------------| + | n | | search for next match | + |----------+----------+--------------------------------------------------| + | S | | skip beyond quoted text | + |----------+----------+--------------------------------------------------| + | T | | toggle display of quoted text | + |----------+----------+--------------------------------------------------| + | ? | | show key bindings | + |----------+----------+--------------------------------------------------| + | / | | search for a regular expression (pattern) | + |----------+----------+--------------------------------------------------| + | ESC / | | search backwards for a regular expression | + |----------+----------+--------------------------------------------------| + | \ | | toggle search pattern coloring | + |----------+----------+--------------------------------------------------| + | ^ | | jump to the top of the message | + +------------------------------------------------------------------------+ + + In addition, many of the functions from the index are available in the + pager, such as delete-message or copy-message (this is one advantage over + using an external pager to view messages). + + Also, the internal pager supports a couple other advanced features. For + one, it will accept and translate the ``standard'' nroff sequences forbold + and underline. These sequences are a series of either the letter, + backspace (^H), the letter again for bold or the letter, backspace, ``_'' + for denoting underline. Mutt-ng will attempt to display these in bold and + underline respectively if your terminal supports them. If not, you can use + the bold and underline color objects to specify a color or mono attribute + for them. + + Additionally, the internal pager supports the ANSI escape sequences for + character attributes. Mutt-ng translates them into the correct color and + character settings. The sequences Mutt-ng supports are: ESC [ + Ps;Ps;Ps;...;Ps m (see table below for possible values for Ps). + + Table 2.5. ANSI Escape Sequences + + +-------------------------------------------------+ + | Value | Attribute | + |-------+-----------------------------------------| + | 0 | All Attributes Off | + |-------+-----------------------------------------| + | 1 | Bold on | + |-------+-----------------------------------------| + | 4 | Underline on | + |-------+-----------------------------------------| + | 5 | Blink on | + |-------+-----------------------------------------| + | 7 | Reverse video on | + |-------+-----------------------------------------| + | 3x | Foreground color is x (see table below) | + |-------+-----------------------------------------| + | 4x | Background color is x (see table below) | + +-------------------------------------------------+ + + Table 2.6. ANSI Colors + + +------------------+ + | Number | Color | + |--------+---------| + | 0 | black | + |--------+---------| + | 1 | red | + |--------+---------| + | 2 | green | + |--------+---------| + | 3 | yellow | + |--------+---------| + | 4 | blue | + |--------+---------| + | 5 | magenta | + |--------+---------| + | 6 | cyan | + |--------+---------| + | 7 | white | + +------------------+ + + Mutt-ng uses these attributes for handling text/enriched messages, and + they can also be used by an external autoview script for highlighting + purposes. Note: If you change the colors for your display, for example by + changing the color associated with color2 for your xterm, then that color + will be used instead of green. + + 5.3. Threaded Mode + + When the mailbox is sorted by threads ,there are a few additional + functions available in the index and pager modes. + + Table 2.7. Default Thread Function Bindings + + +------------------------------------------------------------------------+ + | Key | Function | Description | + |-------+--------------------+-------------------------------------------| + | ^D | delete-thread | delete all messages in the current thread | + |-------+--------------------+-------------------------------------------| + | ^U | undelete-thread | undelete all messages in the current | + | | | thread | + |-------+--------------------+-------------------------------------------| + | ^N | next-thread | jump to the start of the next thread | + |-------+--------------------+-------------------------------------------| + | ^P | previous-thread | jump to the start of the previous thread | + |-------+--------------------+-------------------------------------------| + | ^R | read-thread | mark the current thread as read | + |-------+--------------------+-------------------------------------------| + | ESC d | delete-subthread | delete all messages in the current | + | | | subthread | + |-------+--------------------+-------------------------------------------| + | ESC u | undelete-subthread | undelete all messages in the current | + | | | subthread | + |-------+--------------------+-------------------------------------------| + | ESC n | next-subthread | jump to the start of the next subthread | + |-------+--------------------+-------------------------------------------| + | ESC p | previous-subthread | jump to the start of the previous | + | | | subthread | + |-------+--------------------+-------------------------------------------| + | ESC r | read-subthread | mark the current subthread as read | + |-------+--------------------+-------------------------------------------| + | ESC t | tag-thread | toggle the tag on the current thread | + |-------+--------------------+-------------------------------------------| + | ESC v | collapse-thread | toggle collapse for the current thread | + |-------+--------------------+-------------------------------------------| + | ESC V | collapse-all | toggle collapse for all threads | + |-------+--------------------+-------------------------------------------| + | P | parent-message | jump to parent message in thread | + +------------------------------------------------------------------------+ + + Note: Collapsing a thread displays only the first message in the thread + and hides the others. This is useful when threads contain so many messages + that you can only see a handful of threads onthe screen. See %M in + index-format . For example, you could use "%?M?(#%03M)&(%4l)?" in + index-format to optionally display the number of hidden messages if the + thread is collapsed. + + See also: strict-threads. + + 5.4. Miscellaneous Functions + + create-alias (default: a) + + Creates a new alias based upon the current message (or prompts for a new + one). Once editing is complete, an alias command is added to the file + specified by the alias-file variable for future use. Note: Specifying an + alias-file does not add the aliases specified there-in, you must also + source the file. + + check-traditional-pgp (default: ESC P) + + This function will search the current message for content signed or + encrypted with PGP the "traditional" way, that is, without proper MIME + tagging. Technically, this function will temporarily change the MIME + content types of the body parts containing PGP data; this is similar to + the edit-type function's effect. + + display-toggle-weed (default: h) + + Toggles the weeding of message header fields specified by ignore commands. + + edit (default: e) + + This command (available in the ``index'' and ``pager'') allows you to edit + the raw current message as it's present in the mail folder. After you have + finished editing, the changed message will be appended to the current + folder, and the original message will be marked for deletion. + + edit-type (default: ^E on the attachment menu, and in the pager and index + menus; ^T on the compose menu) + + This command is used to temporarily edit an attachment's content type to + fix, for instance, bogus character set parameters. When invoked from the + index or from the pager, you'll have the opportunity to edit the top-level + attachment's content type. On the attach-menu, you can change any + attachment's content type. These changes are not persistent, and get lost + upon changing folders. + + Note that this command is also available on the compose-menu .There, it's + used to fine-tune the properties of attachments you are going to send. + + enter-command (default: ``:'') + + This command is used to execute any command you would normally put in a + configuration file. A common use is to check the settings of variables, or + in conjunction with macro to change settings on the fly. + + extract-keys (default: ^K) + + This command extracts PGP public keys from the current or tagged + message(s) and adds them to your PGP public key ring. + + forget-passphrase (default: ^F) + + This command wipes the passphrase(s) from memory. It is useful, if you + misspelled the passphrase. + + list-reply (default: L) + + Reply to the current or tagged message(s) by extracting any addresses + which match the regular expressions given by the lists commands, but also + honor any Mail-Followup-To header(s) if the honor-followup-to + configuration variable is set. Using this when replying to messages posted + to mailing lists helps avoid duplicate copies being sent to the author of + the message you are replying to. + + pipe-message (default: |) + + Asks for an external Unix command and pipes the current or tagged + message(s) to it. The variables pipe-decode ,pipe-split, pipe-sep and + wait-key control the exact behavior of this function. + + resend-message (default: ESC e) + + With resend-message, mutt takes the current message as a template for a + new message. This function is best described as "recall from arbitrary + folders". It can conveniently be used to forward MIME messages while + preserving the original mail structure. Note that the amount of headers + included here depends on the value of the weed variable. + + This function is also available from the attachment menu. You can use this + to easily resend a message which was included with a bounce message as a + message/rfc822 body part. + + shell-escape (default: !) + + Asks for an external Unix command and executes it. The wait-key can be + used to control whether Mutt-ng will wait for a key to be pressed when the + command returns (presumably to let the user read the output of the + command), based on the return status of the named command. - This command can be used to execute arbitrary configuration commands before - viewing or formatting a message based upon information about the message. _c_o_m_- - _m_a_n_d is executed if the _p_a_t_t_e_r_n matches the message to be displayed. When mul- - tiple matches occur, commands are executed in the order they are specified in - the muttrc. + toggle-quoted (default: T) - See _M_e_s_s_a_g_e _M_a_t_c_h_i_n_g _i_n _H_o_o_k_s (section 4.4.1 , page 41) for information on the - exact format of _p_a_t_t_e_r_n. + The pager uses the quote-regexp variable to detect quoted text when + displaying the body of the message. This function toggles the displayof + the quoted material in the message. It is particularly useful when are + interested in just the response and there is a large amount of quoted text + in the way. - Example: + skip-quoted (default: S) - message-hook ~A 'set pager=builtin' - message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject: .*\""' + This function will go to the next line of non-quoted text which come after + a line of quoted text in the internal pager. + +6. Sending Mail + + The following bindings are available in the index for sending messages. + + Table 2.8. Default Mail Composition Bindings + + +--------------------------------------------------------+ + | Key | Function | Description | + |-------+-------------+----------------------------------| + | m | compose | compose a new message | + |-------+-------------+----------------------------------| + | r | reply | reply to sender | + |-------+-------------+----------------------------------| + | g | group-reply | reply to all recipients | + |-------+-------------+----------------------------------| + | L | list-reply | reply to mailing list address | + |-------+-------------+----------------------------------| + | f | forward | forward message | + |-------+-------------+----------------------------------| + | b | bounce | bounce (remail) message | + |-------+-------------+----------------------------------| + | ESC k | mail-key | mail a PGP public key to someone | + +--------------------------------------------------------+ + + Bouncing a message sends the message as is to the recipient you specify. + Forwarding a message allows you to add comments or modify the message you + are forwarding. These items are discussed in greater detail in the next + chapter forwarding-mail . + + 6.1. Composing new messages + + When you want to send an email using mutt-ng, simply press m on your + keyboard. Then, mutt-ng asks for the recipient via a prompt in the last + line: + + To: + + After you've finished entering the recipient(s), press return. If you want + to send an email to more than one recipient, separate the email addresses + using the comma ",". Mutt-ng then asks you for the email subject. Again, + press return after you've entered it. After that, mutt-ng got the most + important information from you, and starts up an editor where you can then + enter your email. + + The editor that is called is selected in the following way: you can e.g. + set it in the mutt-ng configuration: + + set editor = "vim +/^$/ -c ':set tw=72'" + set editor = "nano" + set editor = "emacs" + + If you don't set your preferred editor in your configuration, mutt-ng + first looks whether the environment variable $VISUAL is set, and if so, it + takes its value as editor command. Otherwise, it has a look at $EDITOR and + takes its value if it is set. If no editor command can be found, mutt-ng + simply assumes vi to be the default editor, since it's the most widespread + editor in the Unix world and it's pretty safe to assume that it is + installed and available. + + When you've finished entering your message, save it and quit your editor. + Mutt-ng will then present you with a summary screen, the compose menu. On + the top, you see a summary of the most important available key commands. + Below that, you see the sender, the recipient(s), Cc and/or Bcc + recipient(s), the subject, the reply-to address, and optionally + information where the sent email will be stored and whether it should be + digitally signed and/or encrypted. + + Below that, you see a list of "attachments". The mail you've just entered + before is also an attachment, but due to its special type (it's plain + text), it will be displayed as the normal message on the receiver's side. + + At this point, you can add more attachments, pressing a, you can edit the + recipient addresses, pressing t for the "To:" field, c for the "Cc:" + field, and b for the "Bcc: field. You can also edit the subject the + subject by simply pressing s or the email message that you've entered + before by pressing e. You will then again return to the editor. You can + even edit the sender, by pressing f, but this shall only be used with + caution. + + Alternatively, you can configure mutt-ng in a way that most of the above + settings can be edited using the editor. Therefore, you only need to add + the following to your configuration: + + set edit_headers + + Once you have finished editing the body of your mail message, you are + returned to the compose menu. The following options are available: + + Table 2.9. Default Compose Menu Bindings + + +------------------------------------------------------------------------+ + | Key | Function | Description | + |-------+-------------------+--------------------------------------------| + | a | attach-file | attach a file | + |-------+-------------------+--------------------------------------------| + | A | attach-message | attach message(s) to the message | + |-------+-------------------+--------------------------------------------| + | ESC k | attach-key | attach a PGP public key | + |-------+-------------------+--------------------------------------------| + | d | edit-description | edit description on attachment | + |-------+-------------------+--------------------------------------------| + | D | detach-file | detach a file | + |-------+-------------------+--------------------------------------------| + | t | edit-to | edit the To field | + |-------+-------------------+--------------------------------------------| + | ESC f | edit-from | edit the From field | + |-------+-------------------+--------------------------------------------| + | r | edit-reply-to | edit the Reply-To field | + |-------+-------------------+--------------------------------------------| + | c | edit-cc | edit the Cc field | + |-------+-------------------+--------------------------------------------| + | b | edit-bcc | edit the Bcc field | + |-------+-------------------+--------------------------------------------| + | y | send-message | send the message | + |-------+-------------------+--------------------------------------------| + | s | edit-subject | edit the Subject | + |-------+-------------------+--------------------------------------------| + | S | smime-menu | select S/MIME options | + |-------+-------------------+--------------------------------------------| + | f | edit-fcc | specify an ``Fcc'' mailbox | + |-------+-------------------+--------------------------------------------| + | p | pgp-menu | select PGP options | + |-------+-------------------+--------------------------------------------| + | P | postpone-message | postpone this message until later | + |-------+-------------------+--------------------------------------------| + | q | quit | quit (abort) sending the message | + |-------+-------------------+--------------------------------------------| + | w | write-fcc | write the message to a folder | + |-------+-------------------+--------------------------------------------| + | i | ispell | check spelling (if available on your | + | | | system) | + |-------+-------------------+--------------------------------------------| + | ^F | forget-passphrase | wipe passphrase(s) from memory | + +------------------------------------------------------------------------+ + + Note: The attach-message function will prompt you for a folder to attach + messages from. You can now tag messages in that folder and theywill be + attached to the message you are sending. Note that certainoperations like + composing a new mail, replying, forwarding, etc. are not permitted when + you are in that folder. The %r in status-format will change to a 'A' to + indicate that you are in attach-message mode. + + 6.2. Replying + + 6.2.1. Simple Replies + + When you want to reply to an email message, select it in the index menu + and then press r. Mutt-ng's behaviour is then similar to the behaviour + when you compose a message: first, you will be asked for the recipient, + then for the subject, and then, mutt-ng will start the editor with the + quote attribution and the quoted message. This can e.g. look like the + example below. + + On Mon, Mar 07, 2005 at 05:02:12PM +0100, Michael Svensson wrote: + > Bill, can you please send last month's progress report to Mr. + > Morgan? We also urgently need the cost estimation for the new + > production server that we want to set up before our customer's + > project will go live. + + You can start editing the email message. It is strongly recommended to put + your answer below the quoted text and to only quote what is really + necessary and that you refer to. Putting your answer on top of the quoted + message, is, although very widespread, very often not considered to be a + polite way to answer emails. + + The quote attribution is configurable, by default it is set to + + set attribution = "On %d, %n wrote:" + + It can also be set to something more compact, e.g. + + set attribution = "attribution="* %n <%a> [%(%y-%m-%d %H:%M)]:" + + The example above results in the following attribution: + + * Michael Svensson [05-03-06 17:02]: + > Bill, can you please send last month's progress report to Mr. + > Morgan? We also urgently need the cost estimation for the new + > production server that we want to set up before our customer's + > project will go live. + + Generally, try to keep your attribution short yet information-rich. It is + not the right place for witty quotes, long "attribution" novels or + anything like that: the right place for such things is - if at all - the + email signature at the very bottom of the message. + + When you're done with writing your message, save and quit the editor. As + before, you will return to the compose menu, which is used in the same way + as before. + + 6.2.2. Group Replies + + In the situation where a group of people uses email as a discussion, most + of the emails will have one or more recipients, and probably several "Cc:" + recipients. The group reply functionalityensures that when you press g + instead of r to do a reply, each and every recipient that is contained in + the original message will receive a copy of the message, either as normal + recipient or as "Cc:" recipient. + + 6.2.3. List Replies + + When you use mailing lists, it's generally better to send your reply to a + message only to the list instead of the list and the original author. To + make this easy to use, mutt-ng features list replies. + + To do a list reply, simply press L. If the email contains a + Mail-Followup-To: header, its value will be used as reply address. + Otherwise, mutt-ng searches through all mail addresses in the original + message and tries to match them a list of regular expressions which can be + specified using the lists command. If any of the regular expression + matches, a mailing list address has been found, and it will be used as + reply address. + + lists linuxevent@luga\.at vuln-dev@ mutt-ng-users@ + + Nowadays, most mailing list software like GNU Mailman adds a + Mail-Followup-To: header to their emails anyway, so setting lists is + hardly ever necessary in practice. + + 6.3. Editing the message header + + When editing the header of your outgoing message, there are a couple of + special features available. + + If you specify Fcc: filename Mutt-ng will pick up filename just as if you + had used the edit-fcc function in the compose menu. + + You can also attach files to your message by specifying Attach: filename [ + description ] where filename is the file to attach and description is an + optional string to use as the description of the attached file. + + When replying to messages, if you remove the In-Reply-To: field from the + header field, Mutt-ng will not generate a References: field, which allows + you to create a new message thread. + + Also see edit-headers. + + 6.4. Using Mutt-ng with PGP + + If you want to use PGP, you can specify + + Pgp: [ E | S | S ] + + ``E'' encrypts, ``S'' signs and ``S'' signs with the given key, + setting pgp-sign-as permanently. + + If you have told mutt to PGP encrypt a message, it will guide you through + a key selection process when you try to send the message. Mutt-ng will not + ask you any questions about keys which have a certified user ID matching + one of the message recipients' mail addresses. However, there may be + situations in which there are several keys, weakly certified user ID + fields, or where no matching keys can be found. + + In these cases, you are dropped into a menu with a list of keys from which + you can select one. When you quit this menu, or mutt can't find any + matching keys, you are prompted for a user ID. You can, as usually, abort + this prompt using ^G. When you do so, mutt will return to the compose + screen. - The Mutt-ng E-Mail Client 29 + Once you have successfully finished the key selection, the message will be + encrypted using the selected public keys, and sent out. - _3_._2_0 _C_h_o_o_s_i_n_g _t_h_e _c_r_y_p_t_o_g_r_a_p_h_i_c _k_e_y _o_f _t_h_e _r_e_c_i_p_i_e_n_t + Most fields of the entries in the key selection menu (see also + pgp-entry-format ) have obvious meanings. But some explanations on the + capabilities, flags, and validity fields are in order. + + The flags sequence (%f) will expand to one of the following flags: + + Table 2.10. PGP Key Menu Flags + + +-----------------------------------------------------------+ + | Flag | Description | + |------+----------------------------------------------------| + | R | The key has been revoked and can't be used. | + |------+----------------------------------------------------| + | X | The key is expired and can't be used. | + |------+----------------------------------------------------| + | d | You have marked the key as disabled. | + |------+----------------------------------------------------| + | c | There are unknown critical self-signature packets. | + +-----------------------------------------------------------+ + + The capabilities field (%c) expands to a two-character + sequencerepresenting a key's capabilities. The first character gives the + key's encryption capabilities: A minus sign (- )means that the key cannot + be used for encryption. A dot (. )means that it's marked as a signature + key in one of the user IDs, but may also be used for encryption. The + letter e indicates that this key can be used for encryption. + + The second character indicates the key's signing capabilities. Once again, + a ``-'' implies ``not for signing'', ``.'' implies that the key is marked + as an encryption key in one of the user-ids, and ``s'' denotes a key which + can be used for signing. + + Finally, the validity field (%t) indicates how well-certified a user-id + is. A question mark (?) indicates undefined validity, a minus character + (-) marks an untrusted association, a space character means a partially + trusted association, and a plus character (+ ) indicates complete + validity. + + 6.5. Sending anonymous messages via mixmaster + + You may also have configured mutt to co-operate with Mixmaster, an + anonymous remailer. Mixmaster permits you to send your messages + anonymously using a chain of remailers. Mixmaster support in mutt is for + mixmaster version 2.04 (beta 45 appears to be the latest) and 2.03. It + does not support earlier versions or the later so-called version 3 betas, + of which the latest appears to be called 2.9b23. - Usage: crypt-hook _p_a_t_t_e_r_n _k_e_y_i_d + To use it, you'll have to obey certain restrictions. Most important, you + cannot use the Cc and Bcc headers. To tell Mutt-ng to use mixmaster, you + have to select a remailer chain, using the mix function on the compose + menu. - When encrypting messages with PGP or OpenSSL, you may want to associate a cer- - tain key with a given e-mail address automatically, either because the recipi- - ent's public key can't be deduced from the destination address, or because, for - some reasons, you need to override the key Mutt would normally use. The crypt- - hook command provides a method by which you can specify the ID of the public - key to be used when encrypting messages to a certain recipient. + The chain selection screen is divided into two parts. In the (larger) + upper part, you get a list of remailers you may use. In the lower part, + you see the currently selected chain of remailers. - The meaning of "key id" is to be taken broadly in this context: You can either - put a numerical key ID here, an e-mail address, or even just a real name. + You can navigate in the chain using the chain-prev and chain-next + functions, which are by default bound to the left and right arrows and to + the h and l keys (think vi keyboard bindings). To insert a remailer at the + current chain position, use the insert function. To append a remailer + behind the current chain position, use select-entry or append . You can + also delete entries from the chain, using the corresponding function. + Finally, to abandon your changes, leave the menu, or accept them pressing + (by default) the Return key. - _3_._2_1 _A_d_d_i_n_g _k_e_y _s_e_q_u_e_n_c_e_s _t_o _t_h_e _k_e_y_b_o_a_r_d _b_u_f_f_e_r + Note that different remailers do have different capabilities, indicated in + the %c entry of the remailer menu lines (see mix-entry-format). Most + important is the ``middleman'' capability, indicated by a capital ``M'': + This means that the remailer in question cannot be used as the final + element of a chain, but will only forward messages to other mixmaster + remailers. For details on the other capabilities, please have a look at + the mixmaster documentation. - Usage: push _s_t_r_i_n_g +7. Forwarding and Bouncing Mail - This command adds the named string to the keyboard buffer. The string may con- - tain control characters, key names and function names like the sequence string - in the _m_a_c_r_o (section 3.6 , page 20) command. You may use it to automatically - run a sequence of commands at startup, or when entering certain folders. + Often, it is necessary to forward mails to other people. Therefore, + mutt-ng supports forwarding messages in two different ways. - _3_._2_2 _E_x_e_c_u_t_i_n_g _f_u_n_c_t_i_o_n_s + The first one is regular forwarding, as you probably know it from other + mail clients. You simply press f, enter the recipient email address, the + subject of the forwarded email, and then you can edit the message to be + forwarded in the editor. The forwarded message is separated from the rest + of the message via the two following markers: - Usage: exec _f_u_n_c_t_i_o_n [ _f_u_n_c_t_i_o_n ... ] + ----- Forwarded message from Lucas User ----- - This command can be used to execute any function. Functions are listed in the - _f_u_n_c_t_i_o_n _r_e_f_e_r_e_n_c_e (section 6.4 , page 146). ``exec function'' is equivalent - to ``push ''. + From: Lucas User + Date: Thu, 02 Dec 2004 03:08:34 +0100 + To: Michael Random + Subject: Re: blackmail - _3_._2_3 _M_e_s_s_a_g_e _S_c_o_r_i_n_g + Pay me EUR 50,000.- cash or your favorite stuffed animal will die + a horrible death. - Usage: score _p_a_t_t_e_r_n _v_a_l_u_e + ----- End forwarded message ----- - Usage: unscore _p_a_t_t_e_r_n [ _p_a_t_t_e_r_n ... ] + When you're done with editing the mail, save and quit the editor, and you + will return to the compose menu, the same menu you also encounter when + composing or replying to mails. - The score commands adds _v_a_l_u_e to a message's score if _p_a_t_t_e_r_n matches it. _p_a_t_- - _t_e_r_n is a string in the format described in the _p_a_t_t_e_r_n_s (section 4.2 , page - 36) section (note: For efficiency reasons, patterns which scan information not - available in the index, such as ~b, ~B or ~h, may not be used). _v_a_l_u_e is a - positive or negative integer. A message's final score is the sum total of all - matching score entries. However, you may optionally prefix _v_a_l_u_e with an equal - sign (=) to cause evaluation to stop at a particular entry if there is a match. - Negative final scores are rounded up to 0. + The second mode of forwarding emails with mutt-ng is the so-called + bouncing: when you bounce an email to another address, it will be sent in + practically the same format you send it (except for headers that are + created during transporting the message). To bounce a message, press b and + enter the recipient email address. By default, you are then asked whether + you really want to bounce the message to the specified recipient. If you + answer with yes, the message will then be bounced. - The unscore command removes score entries from the list. You mmuusstt specify the - same pattern specified in the score command for it to be removed. The pattern - ``*'' is a special token which means to clear the list of all score entries. + To the recipient, the bounced email will look as if he got it like a + regular email where he was Bcc: recipient. The only possibility to find + out whether it was a bounced email is to carefully study the email headers + and to find out which host really sent the email. - _3_._2_4 _S_p_a_m _d_e_t_e_c_t_i_o_n +8. Postponing Mail - Usage: spam _p_a_t_t_e_r_n _f_o_r_m_a_t + At times it is desirable to delay sending a message that you have already + begun to compose. When the postpone-message function is used in the + compose menu, the body of your message and attachments are stored in the + mailbox specified by the postponed variable. This means that you can + recall the message even if you exit Mutt-ng and then restart it at a later + time. - The Mutt-ng E-Mail Client 30 + Once a message is postponed, there are several ways to resume it. From the + command line you can use the ``-p'' option, or if you compose a new + message from the index or pager you will be prompted if postponed messages + exist. If multiple messages are currently postponed, the postponed menu + will pop up and you can select which message you would like to resume. - Usage: nospam _p_a_t_t_e_r_n + Note: If you postpone a reply to a message, the reply setting of the + message is only updated when you actually finish the message and send it. + Also, you must be in the same folder with the message you replied to for + the status of the message to be updated. - Mutt has generalized support for external spam-scoring filters. By defining - your spam patterns with the spam and nospam commands, you can _l_i_m_i_t, _s_e_a_r_c_h, - and _s_o_r_t your mail based on its spam attributes, as determined by the external - filter. You also can display the spam attributes in your index display using - the %H selector in the _$_i_n_d_e_x___f_o_r_m_a_t (section 6.3.112 , page 91) variable. - (Tip: try %?H?[%H] ? to display spam tags only when they are defined for a - given message.) + See also the postpone quad-option. - Your first step is to define your external filter's spam patterns using the - spam command. _p_a_t_t_e_r_n should be a regular expression that matches a header in a - mail message. If any message in the mailbox matches this regular expression, it - will receive a ``spam tag'' or ``spam attribute'' (unless it also matches a - nospam pattern -- see below.) The appearance of this attribute is entirely up - to you, and is governed by the _f_o_r_m_a_t parameter. _f_o_r_m_a_t can be any static text, - but it also can include back-references from the _p_a_t_t_e_r_n expression. (A regular - expression ``back-reference'' refers to a sub-expression contained within - parentheses.) %1 is replaced with the first back-reference in the regex, %2 - with the second, etc. +Chapter 3. Configuration - If you're using multiple spam filters, a message can have more than one spam- - related header. You can define spam patterns for each filter you use. If a mes- - sage matches two or more of these patterns, and the $spam_separator variable is - set to a string, then the message's spam tag will consist of all the _f_o_r_m_a_t - strings joined together, with the value of $spam_separator separating them. + Table of Contents - For example, suppose I use DCC, SpamAssassin, and PureMessage. I might define - these spam settings: + 1. Locations of Configuration Files - spam "X-DCC-.*-Metrics:.*(....)=many" "90+/DCC-%1" - spam "X-Spam-Status: Yes" "90+/SA" - spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM" - set spam_separator=", " + 2. Basic Syntax of Initialization Files - If I then received a message that DCC registered with ``many'' hits under the - ``Fuz2'' checksum, and that PureMessage registered with a 97% probability of - being spam, that message's spam tag would read 90+/DCC-Fuz2, 97/PM. (The four - characters before ``=many'' in a DCC report indicate the checksum used -- in - this case, ``Fuz2''.) + 3. Expansion within variables - If the $spam_separator variable is unset, then each spam pattern match super- - sedes the previous one. Instead of getting joined _f_o_r_m_a_t strings, you'll get - only the last one to match. + 3.1. Commands' Output - The spam tag is what will be displayed in the index when you use %H in the - $index_format variable. It's also the string that the ~H pattern-matching - expression matches against for _s_e_a_r_c_h and _l_i_m_i_t functions. And it's what sort- - ing by spam attribute will use as a sort key. + 3.2. Environment Variables - That's a pretty complicated example, and most people's actual environments will - have only one spam filter. The simpler your configuration, the more effective - mutt can be, especially when it comes to sorting. + 3.3. Configuration Variables - The Mutt-ng E-Mail Client 31 + 3.4. Self-Defined Variables - Generally, when you sort by spam tag, mutt will sort _l_e_x_i_c_a_l_l_y -- that is, by - ordering strings alphnumerically. However, if a spam tag begins with a number, - mutt will sort numerically first, and lexically only when two numbers are equal - in value. (This is like UNIX's sort -n.) A message with no spam attributes at - all -- that is, one that didn't match _a_n_y of your spam patterns -- is sorted at - lowest priority. Numbers are sorted next, beginning with 0 and ranging upward. - Finally, non-numeric strings are sorted, with ``a'' taking lower priority than - ``z''. Clearly, in general, sorting by spam tags is most effective when you can - coerce your filter to give you a raw number. But in case you can't, mutt can - still do something useful. + 3.5. Pre-Defined Variables - The nospam command can be used to write exceptions to spam patterns. If a - header pattern matches something in a spam command, but you nonetheless do not - want it to receive a spam tag, you can list a more precise pattern under a - nospam command. + 3.6. Type Conversions - If the _p_a_t_t_e_r_n given to nospam is exactly the same as the _p_a_t_t_e_r_n on an exist- - ing spam list entry, the effect will be to remove the entry from the spam list, - instead of adding an exception. Likewise, if the _p_a_t_t_e_r_n for a spam command - matches an entry on the nospam list, that nospam entry will be removed. If the - _p_a_t_t_e_r_n for nospam is ``*'', _a_l_l _e_n_t_r_i_e_s _o_n _b_o_t_h _l_i_s_t_s will be removed. This - might be the default action if you use spam and nospam in conjunction with a - folder-hook. + 4. Defining/Using aliases - You can have as many spam or nospam commands as you like. You can even do your - own primitive spam detection within mutt -- for example, if you consider all - mail from MAILER-DAEMON to be spam, you can use a spam command like this: + 5. Changing the default key bindings - spam "^From: .*MAILER-DAEMON" "999" + 6. Defining aliases for character sets - _3_._2_5 _S_e_t_t_i_n_g _v_a_r_i_a_b_l_e_s + 7. Setting variables based upon mailbox - Usage: set [no|inv]_v_a_r_i_a_b_l_e[=_v_a_l_u_e] [ _v_a_r_i_a_b_l_e ... ] + 8. Keyboard macros - Usage: toggle _v_a_r_i_a_b_l_e [_v_a_r_i_a_b_l_e ... ] + 9. Using color and mono video attributes - Usage: unset _v_a_r_i_a_b_l_e [_v_a_r_i_a_b_l_e ... ] + 10. Ignoring (weeding) unwanted message headers - Usage: reset _v_a_r_i_a_b_l_e [_v_a_r_i_a_b_l_e ... ] + 11. Alternative addresses - This command is used to set (and unset) _c_o_n_f_i_g_u_r_a_t_i_o_n _v_a_r_i_a_b_l_e_s (section 6.3 , - page 64). There are four basic types of variables: boolean, number, string and - quadoption. _b_o_o_l_e_a_n variables can be _s_e_t (true) or _u_n_s_e_t (false). _n_u_m_b_e_r - variables can be assigned a positive integer value. + 12. Format = Flowed - _s_t_r_i_n_g variables consist of any number of printable characters. _s_t_r_i_n_g_s must - be enclosed in quotes if they contain spaces or tabs. You may also use the - ``C'' escape sequences \\nn and \\tt for newline and tab, respectively. + 12.1. Introduction - _q_u_a_d_o_p_t_i_o_n variables are used to control whether or not to be prompted for cer- - tain actions, or to specify a default action. A value of _y_e_s will cause the - action to be carried out automatically as if you had answered yes to the + 12.2. Receiving: Display Setup - The Mutt-ng E-Mail Client 32 + 12.3. Sending - question. Similarly, a value of _n_o will cause the the action to be carried out - as if you had answered ``no.'' A value of _a_s_k_-_y_e_s will cause a prompt with a - default answer of ``yes'' and _a_s_k_-_n_o will provide a default answer of ``no.'' + 12.4. Additional Notes - Prefixing a variable with ``no'' will unset it. Example: set noaskbcc. + 13. Mailing lists - For _b_o_o_l_e_a_n variables, you may optionally prefix the variable name with inv to - toggle the value (on or off). This is useful when writing macros. Example: - set invsmart_wrap. + 14. Using Multiple spool mailboxes - The toggle command automatically prepends the inv prefix to all specified vari- - ables. + 15. Defining mailboxes which receive mail - The unset command automatically prepends the no prefix to all specified vari- - ables. + 16. User defined headers - Using the enter-command function in the _i_n_d_e_x menu, you can query the value of - a variable by prefixing the name of the variable with a question mark: + 17. Defining the order of headers when viewing messages - set ?allow_8bit + 18. Specify default save filename - The question mark is actually only required for boolean and quadoption vari- - ables. + 19. Specify default Fcc: mailbox when composing - The reset command resets all given variables to the compile time defaults - (hopefully mentioned in this manual). If you use the command set and prefix the - variable with ``&'' this has the same behavior as the reset command. + 20. Specify default save filename and default Fcc: mailbox at once - With the reset command there exists the special variable ``all'', which allows - you to reset all variables to their system defaults. + 21. Change settings based upon message recipients - _3_._2_6 _R_e_a_d_i_n_g _i_n_i_t_i_a_l_i_z_a_t_i_o_n _c_o_m_m_a_n_d_s _f_r_o_m _a_n_o_t_h_e_r _f_i_l_e + 22. Change settings before formatting a message - Usage: source _f_i_l_e_n_a_m_e [ _f_i_l_e_n_a_m_e ... ] + 23. Choosing the cryptographic key of the recipient - This command allows the inclusion of initialization commands from other files. - For example, I place all of my aliases in ~/.mail_aliases so that I can make my - ~/.muttrc readable and keep my aliases private. + 24. Adding key sequences to the keyboard buffer - If the filename begins with a tilde (``~''), it will be expanded to the path of - your home directory. + 25. Executing functions - If the filename ends with a vertical bar (|), then _f_i_l_e_n_a_m_e is considered to be - an executable program from which to read input (eg. source ~/bin/myscript|). + 26. Message Scoring - _3_._2_7 _C_o_n_f_i_g_u_r_i_n_g _f_e_a_t_u_r_e_s _c_o_n_d_i_t_i_o_n_a_l_l_y + 27. Spam detection - Usage: ifdef _i_t_e_m _c_o_m_m_a_n_d Usage: ifndef _i_t_e_m _c_o_m_m_a_n_d + 28. Setting variables - These command allows to test if a variable, function or certain feature is - available or not respectively, before actually executing the command. ifdef - (short for ``if defined) handles commands if upon availability while ifndef + 29. Reading initialization commands from another file - The Mutt-ng E-Mail Client 33 + 30. Removing hooks - (short for ``if not defined'') does if not. The _c_o_m_m_a_n_d may be any valid frac- - tion of a configuration file. + 31. Sharing Setups - All names of variables and functions may be tested. Additionally, the following - compile-features may be tested when prefixed with 'feature_': ncurses, slang, - iconv, idn, dotlock, standalone, pop, nntp, imap, ssl, gnutls, sasl, sasl2, - libesmtp, compressed, color, classic_pgp, classic_smime, gpgme, header_cache. + 31.1. Character Sets - Examples follow. + 31.2. Modularization - To only source a file with IMAP related settings only if IMAP support is com- - piled in, use: + 31.3. Conditional parts - ifdef feature_imap 'source ~/.mutt-ng/imap_setup' - # or - # ifdef imap_user 'source ~/.mutt-ng/imap_setup' - # or - # ... + 32. Obsolete Variables - To exit mutt-ng directly if no NNTP support is compiled in: +1. Locations of Configuration Files - ifndef feature_nntp 'push q' - # or - # ifndef newsrc 'push q' - # or - # ... + While the default configuration (or ``preferences'') make Mutt-ng usable + right out of the box, it is often desirable to tailor Mutt-ng to suit your + own tastes. When Mutt-ng is first invoked, it will attempt to read the + ``system'' configuration file (defaults set by your local system + administrator), unless the ``-n'' commandline option is specified. This + file is typically /usr/local/share/muttng/Muttngrc or /etc/Muttngrc , + Mutt-ng users will find this file in /usr/local/share/muttng/Muttrc or + /etc/Muttngrc. Mutt will next look for a file named .muttrc in your home + directory, Mutt-ng will look for .muttngrc. If this file does not exist + and your home directory has a subdirectory named .mutt , mutt try to load + a file named .muttng/muttngrc. - To only set the _<_$_i_m_a_p___m_a_i_l___c_h_e_c_k (section 6.3.101 , page 88) when the sys- - tem's SVN is recent enough to have it: + .muttrc (or .muttngrc for Mutt-ng) is the file where you will usually + place your commands to configure Mutt-ng. - ifdef imap_mail_check 'set imap_mail_check=300' +2. Basic Syntax of Initialization Files - _3_._2_8 _R_e_m_o_v_i_n_g _h_o_o_k_s + An initialization file consists of a series of commands .Each line of the + file may contain one or more commands. When multiple commands are used, + they must be separated by a semicolon (;). - Usage: unhook [ * | _h_o_o_k_-_t_y_p_e ] + set realname='Mutt-ng user' ; ignore x- - This command permits you to flush hooks you have previously defined. You can - either remove all hooks by giving the ``*'' character as an argument, or you - can remove all hooks of a specific type by saying something like unhook send- - hook. + The hash mark, or pound sign (``#''), is used as a ``comment'' character. + You can use it to annotate your initialization file. All text after the + comment character to the end of the line is ignored. For example, - _4_. _A_d_v_a_n_c_e_d _U_s_a_g_e + my_hdr X-Disclaimer: Why are you listening to me? # This is a comment - _4_._1 _R_e_g_u_l_a_r _E_x_p_r_e_s_s_i_o_n_s + Single quotes (') and double quotes (") can be used to quote strings which + contain spaces or other special characters. The difference between the two + types of quotes is similar to that of many popular shell programs, namely + that a single quote is used to specify a literal string (one that is not + interpreted for shell variables or quoting with a backslash [see next + paragraph]), while double quotes indicate a string for which should be + evaluated. For example, backtics are evaluated inside of double quotes, + but not for single quotes. - All string patterns in Mutt including those in more complex _p_a_t_t_e_r_n_s (section - 4.2 , page 36) must be specified using regular expressions (regexp) in the - ``POSIX extended'' syntax (which is more or less the syntax used by egrep and - GNU awk). For your convenience, we have included below a brief description of - this syntax. + \ quotes the next character, just as in shells such as bash and zsh. For + example, if want to put quotes ``"'' inside of a string, you can use ``\'' + to force the next character to be a literal instead of interpreted + character. - The Mutt-ng E-Mail Client 34 + set realname="Michael \"MuttDude\" Elkins" - The search is case sensitive if the pattern contains at least one upper case - letter, and case insensitive otherwise. Note that ``\'' must be quoted if used - for a regular expression in an initialization command: ``\\''. + ``\\'' means to insert a literal ``\'' into the line. ``\n'' and ``\r'' + have their usual C meanings of linefeed and carriage-return, respectively. - A regular expression is a pattern that describes a set of strings. Regular - expressions are constructed analogously to arithmetic expressions, by using - various operators to combine smaller expressions. + A \ at the end of a line can be used to split commands over multiple + lines, provided that the split points don't appear in the middle of + command names. - Note that the regular expression can be enclosed/delimited by either ' or ' - which is useful if the regular expression includes a white-space character. - See _S_y_n_t_a_x _o_f _I_n_i_t_i_a_l_i_z_a_t_i_o_n _F_i_l_e_s (section 3.1 , page 14) for more informa- - tion on ' and ' delimiter processing. To match a literal ' or ' you must pref- - ace it with \ (backslash). + Please note that, unlike the various shells, mutt-ng interprets a ``\'' at + the end of a line also in comments. This allows you to disable a command + split over multiple lines with only one ``#''. - The fundamental building blocks are the regular expressions that match a single - character. Most characters, including all letters and digits, are regular - expressions that match themselves. Any metacharacter with special meaning may - be quoted by preceding it with a backslash. + # folder-hook . \ + set realname="Michael \"MuttDude\" Elkins" - The period ``.'' matches any single character. The caret ``^'' and the dollar - sign ``$'' are metacharacters that respectively match the empty string at the - beginning and end of a line. + When testing your config files, beware the following caveat. The backslash + at the end of the commented line extends the current line with the next + line - then referred to as a ``continuation line''. As the first line is + commented with a hash (#) all following continuation lines are also part + of a comment and therefore are ignored, too. So take care of comments when + continuation lines are involved within your setup files! - A list of characters enclosed by ``['' and ``]'' matches any single character - in that list; if the first character of the list is a caret ``^'' then it - matches any character nnoott in the list. For example, the regular expression - [[00112233445566778899]] matches any single digit. A range of ASCII characters may be - specified by giving the first and last characters, separated by a hyphen ``-''. - Most metacharacters lose their special meaning inside lists. To include a lit- - eral ``]'' place it first in the list. Similarly, to include a literal ``^'' - place it anywhere but first. Finally, to include a literal hyphen ``-'' place - it last. + Abstract example: - Certain named classes of characters are predefined. Character classes consist - of ``[:'', a keyword denoting the class, and ``:]''. The following classes are - defined by the POSIX standard: + line1\ + line2a # line2b\ + line3\ + line4 + line5 - [:alnum:] - Alphanumeric characters. + line1 ``continues'' until line4. however, the part after the # is a + comment which includes line3 and line4. line5 is a new line of its own and + thus is interpreted again. - [:alpha:] - Alphabetic characters. + The commands understood by mutt are explained in the next paragraphs. For + a complete list, see the commands. - [:blank:] - Space or tab characters. +3. Expansion within variables - [:cntrl:] - Control characters. + Besides just assign static content to variables, there's plenty of ways of + adding external and more or less dynamic content. - [:digit:] - Numeric characters. + 3.1. Commands' Output - [:graph:] - Characters that are both printable and visible. (A space is + It is possible to substitute the output of a Unix command in an + initialization file. This is accomplished by enclosing the command in + backquotes (``) as in, for example: - The Mutt-ng E-Mail Client 35 + my_hdr X-Operating-System: `uname -a` - printable, but not visible, while an ``a'' is both.) + The output of the Unix command ``uname -a'' will be substituted before the + line is parsed. Note that since initialization files are line oriented, + only the first line of output from the Unix command will be substituted. - [:lower:] - Lower-case alphabetic characters. + 3.2. Environment Variables - [:print:] - Printable characters (characters that are not control characters.) + UNIX environments can be accessed like the way it is done in shells like + sh and bash: Prepend the name of the environment by a ``$'' sign. For + example, - [:punct:] - Punctuation characters (characters that are not letter, digits, - control characters, or space characters). + set record=+sent_on_$HOSTNAME - [:space:] - Space characters (such as space, tab and formfeed, to name a few). + sets the record variable to the string +sent_on_ and appends the value of + the evironment variable $HOSTNAME. - [:upper:] - Upper-case alphabetic characters. + Note: There will be no warning if an environment variable is not defined. + The result will of the expansion will then be empty. - [:xdigit:] - Characters that are hexadecimal digits. + 3.3. Configuration Variables - A character class is only valid in a regular expression inside the brackets of - a character list. Note that the brackets in these class names are part of the - symbolic names, and must be included in addition to the brackets delimiting the - bracket list. For example, [[[[::ddiiggiitt::]]]] is equivalent to [[00--99]]. + As for environment variables, the values of all configuration variables as + string can be used in the same way, too. For example, - Two additional special sequences can appear in character lists. These apply to - non-ASCII character sets, which can have single symbols (called collating ele- - ments) that are represented with more than one character, as well as several - characters that are equivalent for collating or sorting purposes: + set imap_home_namespace = $folder - Collating Symbols - A collating symbol is a multi-character collating element enclosed - in ``[.'' and ``.]''. For example, if ``ch'' is a collating ele- - ment, then [[[[..cchh..]]]] is a regexp that matches this collating ele- - ment, while [[cchh]] is a regexp that matches either ``c'' or ``h''. + would set the value of imap-home-namespace to the value to which folder is + currently set to. - Equivalence Classes - An equivalence class is a locale-specific name for a list of char- - acters that are equivalent. The name is enclosed in ``[='' and - ``=]''. For example, the name ``e'' might be used to represent all - of ``'' ``'' and ``e''. In this case, [[[[==ee==]]]] is a regexp that - matches any of ``'', ``'' and ``e''. + Note: There're no logical links established in such cases so that the the + value for imap-home-namespace won't change even if folder gets changed. - A regular expression matching a single character may be followed by one of sev- - eral repetition operators: + Note: There will be no warning if a configuration variable is not defined + or is empty. The result will of the expansion will then be empty. - ? - The preceding item is optional and matched at most once. - - * - The preceding item will be matched zero or more times. - - The Mutt-ng E-Mail Client 36 - - + - The preceding item will be matched one or more times. - - {n} - The preceding item is matched exactly _n times. - - {n,} - The preceding item is matched _n or more times. - - {,m} - The preceding item is matched at most _m times. - - {n,m} - The preceding item is matched at least _n times, but no more than _m - times. - - Two regular expressions may be concatenated; the resulting regular expression - matches any string formed by concatenating two substrings that respectively - match the concatenated subexpressions. - - Two regular expressions may be joined by the infix operator ``|''; the result- - ing regular expression matches any string matching either subexpression. - - Repetition takes precedence over concatenation, which in turn takes precedence - over alternation. A whole subexpression may be enclosed in parentheses to - override these precedence rules. - - NNoottee:: If you compile Mutt with the GNU _r_x package, the following operators may - also be used in regular expressions: - - \\y - Matches the empty string at either the beginning or the end of a - word. + 3.4. Self-Defined Variables - \\B - Matches the empty string within a word. + Mutt-ng flexibly allows users to define their own variables. To avoid + conflicts with the standard set and to prevent misleading error messages, + there's a reserved namespace for them: all user-defined variables must be + prefixed with user_ and can be used just like any ordinary configuration + or environment variable. - \\< - Matches the empty string at the beginning of a word. + For example, to view the manual, users can either define two macros like + the following - \\> - Matches the empty string at the end of a word. + macro generic "!less -r /path/to/manual" "Show manual" + macro pager "!less -r /path/to/manual" "Show manual" - \\w - Matches any word-constituent character (letter, digit, or under- - score). + for generic, pager and index .The alternative is to define a custom + variable like so: - \\W - Matches any character that is not word-constituent. + set user_manualcmd = "!less -r /path/to_manual" + macro generic "$user_manualcmd" "Show manual" + macro pager "$user_manualcmd" "Show manual" + macro index "$user_manualcmd" "Show manual" - \\` - Matches the empty string at the beginning of a buffer (string). + to re-use the command sequence as in: - The Mutt-ng E-Mail Client 37 + macro index "$user_manualcmd | grep '\^[ ]\\+~. '" "Show Patterns" - \\' - Matches the empty string at the end of a buffer. + Using this feature, arbitrary sequences can be defined once and recalled + and reused where necessary. More advanced scenarios could include to save + a variable's value at the beginning of macro sequence and restore it at + end. - Please note however that these operators are not defined by POSIX, so they may - or may not be available in stock libraries on various systems. + When the variable is first defined, the first value it gets assigned is + also the initial value to which it can be reset using the reset command. - _4_._2 _P_a_t_t_e_r_n_s + The complete removal is done via the unset keyword. - Many of Mutt's commands allow you to specify a pattern to match (limit, tag- - pattern, delete-pattern, etc.). There are several ways to select messages: + After the following sequence: - ~A all messages - ~b EXPR messages which contain EXPR in the message body - ~B EXPR messages which contain EXPR in the whole message - ~c USER messages carbon-copied to USER - ~C EXPR message is either to: or cc: EXPR - ~D deleted messages - ~d [MIN]-[MAX] messages with ``date-sent'' in a Date range - ~E expired messages - ~e EXPR message which contains EXPR in the ``Sender'' field - ~F flagged messages - ~f USER messages originating from USER - ~g cryptographically signed messages - ~G cryptographically encrypted messages - ~H EXPR messages with a spam attribute matching EXPR - ~h EXPR messages which contain EXPR in the message header - ~k message contains PGP key material - ~i ID message which match ID in the ``Message-ID'' field - ~L EXPR message is either originated or received by EXPR - ~l message is addressed to a known mailing list - ~m [MIN]-[MAX] message in the range MIN to MAX *) - ~n [MIN]-[MAX] messages with a score in the range MIN to MAX *) - ~N new messages - ~O old messages - ~p message is addressed to you (consults alternates) - ~P message is from you (consults alternates) - ~Q messages which have been replied to - ~R read messages - ~r [MIN]-[MAX] messages with ``date-received'' in a Date range - ~S superseded messages - ~s SUBJECT messages having SUBJECT in the ``Subject'' field. - ~T tagged messages - ~t USER messages addressed to USER - ~U unread messages - ~v message is part of a collapsed thread. - ~V cryptographically verified messages - ~x EXPR messages which contain EXPR in the `References' field - ~y EXPR messages which contain EXPR in the `X-Label' field - ~z [MIN]-[MAX] messages with a size in the range MIN to MAX *) - ~= duplicated messages (see $duplicate_threads) - ~$ unreferenced messages (requires threaded view) - ~* ``From'' contains realname and (syntactically) valid - address (excluded are addresses matching against + set user_foo = 42 + set user_foo = 666 - The Mutt-ng E-Mail Client 38 + the variable $user_foo has a current value of 666 and an initial of 42. + The query - alternates or any alias) + set ?user_foo - Where EXPR, USER, ID, and SUBJECT are _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n_s (section 4.1 , page - 33). Special attention has to be made when using regular expressions inside of - patterns. Specifically, Mutt's parser for these patterns will strip one level - of backslash (\), which is normally used for quoting. If it is your intention - to use a backslash in the regular expression, you will need to use two back- - slashes instead (\\). + will show 666. After doing the reset via - *) The forms <[MAX], >[MIN], [MIN]- and -[MAX] are allowed, too. + reset user_foo - _4_._2_._1 _P_a_t_t_e_r_n _M_o_d_i_f_i_e_r + a following query will give 42 as the result. After unsetting it via - Note that patterns matching 'lists' of addresses (notably c,C,p,P and t) match - if there is at least one match in the whole list. If you want to make sure that - all elements of that list match, you need to prefix your pattern with ^. This - example matches all mails which only has recipients from Germany. + unset user_foo - ^~C \.de$ + any query or operation (except the noted expansion within other + statements) will lead to an error message. - _4_._2_._2 _C_o_m_p_l_e_x _P_a_t_t_e_r_n_s + 3.5. Pre-Defined Variables - Logical AND is performed by specifying more than one criterion. For example: + In order to allow users to share one setup over a number of different + machines without having to change its contents, there's a number of + pre-defined variables. These are prefixed with muttng_ and are read-only, + i.e. they cannot be set, unset or reset. The reference chapter lists all + available variables. - ~t mutt ~f elkins + Please consult the local copy of your manual for their values as they may + differ from different manual sources. Where the manual is installed in can + be queried (already using such a variable) by running: - would select messages which contain the word ``mutt'' in the list of recipients - aanndd that have the word ``elkins'' in the ``From'' header field. + muttng -Q muttng_docdir - Mutt also recognizes the following operators to create more complex search pat- - terns: + To extend the example for viewing the manual via self-defined variables, + it can be made more readable and more portable by changing the real path + in: - +o ! -- logical NOT operator + set user_manualcmd = '!less -r /path/to_manual' - +o | -- logical OR operator + to: - +o () -- logical grouping operator + set user_manualcmd = "!less -r $muttng_docdir/manual.txt" - Here is an example illustrating a complex search pattern. This pattern will - select all messages which do not contain ``mutt'' in the ``To'' or ``Cc'' field - and which are from ``elkins''. + which works everywhere if a manual is installed. - !(~t mutt|~c mutt) ~f elkins + Please note that by the type of quoting, muttng determines when to expand + these values: when it finds double quotes, the value will be expanded + during reading the setup files but when it finds single quotes, it'll + expand it at runtime as needed. - Here is an example using white space in the regular expression (note the ' and - ' delimiters). For this to match, the mail's subject must match the ``^Junk - +From +Me$'' and it must be from either ``Jim +Somebody'' or ``Ed + For example, the statement - The Mutt-ng E-Mail Client 39 + folder-hook . "set user_current_folder = $muttng_folder_name" - +SomeoneElse'': + will be already be translated to the following when reading the startup + files: - '~s "^Junk +From +Me$" ~f ("Jim +Somebody"|"Ed +SomeoneElse")' + folder-hook . "set user_current_folder = some_folder" - Note that if a regular expression contains parenthesis, or a veritical bar - ("|"), you mmuusstt enclose the expression in double or single quotes since those - characters are also used to separate different parts of Mutt's pattern lan- - guage. For example, + with some_folder being the name of the first folder muttng opens. On the + contrary, - ~f "me@(mutt\.org|cs\.hmc\.edu)" + folder-hook . 'set user_current_folder = $muttng_folder_name' - Without the quotes, the parenthesis wouldn't end. This would be separated to - two OR'd patterns: _~_f _m_e_@_(_m_u_t_t_\_._o_r_g and _c_s_\_._h_m_c_\_._e_d_u_). They are never what you - want. + will be executed at runtime because of the single quotes so that + user_current_folder will always have the value of the currently opened + folder. - _4_._2_._3 _S_e_a_r_c_h_i_n_g _b_y _D_a_t_e + A more practical example is: - Mutt supports two types of dates, _a_b_s_o_l_u_t_e and _r_e_l_a_t_i_v_e. + folder-hook . 'source ~/.mutt/score-$muttng_folder_name' - AAbbssoolluuttee. Dates mmuusstt be in DD/MM/YY format (month and year are optional, - defaulting to the current month and year). An example of a valid range of - dates is: + which can be used to source files containing score commands depending on + the folder the user enters. - Limit to messages matching: ~d 20/1/95-31/10 + 3.6. Type Conversions - If you omit the minimum (first) date, and just specify ``-DD/MM/YY'', all mes- - sages _b_e_f_o_r_e the given date will be selected. If you omit the maximum (second) - date, and specify ``DD/MM/YY-'', all messages _a_f_t_e_r the given date will be - selected. If you specify a single date with no dash (``-''), only messages - sent on the given date will be selected. + A note about variable's types during conversion: internally values are + stored in internal types but for any dump/query or set operation they're + converted to and from string. That means that there's no need to worry + about types when referencing any variable. As an example, the following + can be used without harm (besides makeing muttng very likely behave + strange): - EErrrroorr MMaarrggiinnss. You can add error margins to absolute dates. An error margin - is a sign (+ or -), followed by a digit, followed by one of the following - units: + set read_inc = 100 + set folder = $read_inc + set read_inc = $folder + set user_magic_number = 42 + set folder = $user_magic_number - y years - m months - w weeks - d days +4. Defining/Using aliases - As a special case, you can replace the sign by a ``*'' character, which is - equivalent to giving identical plus and minus error margins. + Usage: alias key address [ , address, ... ] - Example: To select any messages two weeks around January 15, 2001, you'd use - the following pattern: + It's usually very cumbersome to remember or type out the address of + someone you are communicating with. Mutt-ng allows you to create + ``aliases'' which map a short string to a full address. - The Mutt-ng E-Mail Client 40 + Note: if you want to create an alias for a group (by specifying more than + one address), you must separate the addresses with a comma (``,''). - Limit to messages matching: ~d 15/1/2001*2w + To remove an alias or aliases (``*'' means all aliases): - RReellaattiivvee. This type of date is relative to the current date, and may be speci- - fied as: + unalias [ * | key ... ] - +o >_o_f_f_s_e_t (messages older than _o_f_f_s_e_t units) + alias muttdude me@cs.hmc.edu (Michael Elkins) + alias theguys manny, moe, jack - +o <_o_f_f_s_e_t (messages newer than _o_f_f_s_e_t units) + Unlike other mailers, Mutt-ng doesn't require aliases to be defined in a + special file. The alias command can appear anywhere in a configuration + file, as long as this file is source .Consequently, you can have multiple + alias files, or you can have all aliases defined in your muttrc. - +o =_o_f_f_s_e_t (messages exactly _o_f_f_s_e_t units old) + On the other hand, the create-alias function can use only one file, the + one pointed to by the alias-file variable (which is ˜/.muttrc by + default). This file is not special either, in the sense that Mutt-ng will + happily append aliases to any file, but in order for the new aliases to + take effect you need to explicitly source this file too. - _o_f_f_s_e_t is specified as a positive number with one of the following units: + For example: - y years - m months - w weeks - d days + source /usr/local/share/Mutt-ng.aliases + source ~/.mail_aliases + set alias_file=~/.mail_aliases - Example: to select messages less than 1 month old, you would use + To use aliases, you merely use the alias at any place in mutt where + muttprompts for addresses, such as the To: or Cc: prompt. You can also + enter aliases in your editor at the appropriate headers if you have the + edit-headers variable set. - Limit to messages matching: ~d <1m + In addition, at the various address prompts, you can use the tab character + to expand a partial alias to the full alias. If there are multiple + matches, mutt will bring up a menu with the matching aliases. In order to + be presented with the full list of aliases, you must hit tab with out a + partial alias, such as at the beginning of the prompt or after a comma + denoting multiple addresses. - NNoottee:: all dates used when searching are relative to the llooccaall time zone, so - unless you change the setting of your _$_i_n_d_e_x___f_o_r_m_a_t (section 6.3.112 , page - 91) to include a %[...] format, these are nnoott the dates shown in the main - index. + In the alias menu, you can select as many aliases as you want with the + select-entry key (default: RET), and use the exit key (default: q) to + return to the address prompt. - _4_._3 _U_s_i_n_g _T_a_g_s +5. Changing the default key bindings - Sometimes it is desirable to perform an operation on a group of messages all at - once rather than one at a time. An example might be to save messages to a - mailing list to a separate folder, or to delete all messages with a given sub- - ject. To tag all messages matching a pattern, use the tag-pattern function, - which is bound to ``shift-T'' by default. Or you can select individual mes- - sages by hand using the ``tag-message'' function, which is bound to ``t'' by - default. See _p_a_t_t_e_r_n_s (section 4.2 , page 36) for Mutt's pattern matching - syntax. + Usage: bind map key function - Once you have tagged the desired messages, you can use the ``tag-prefix'' oper- - ator, which is the ``;'' (semicolon) key by default. When the ``tag-prefix'' - operator is used, the nneexxtt operation will be applied to all tagged messages if - that operation can be used in that manner. If the _$_a_u_t_o___t_a_g (section 6.3.18 , - page 69) variable is set, the next operation applies to the tagged messages - automatically, without requiring the ``tag-prefix''. + This command allows you to change the default key bindings (operation + invoked when pressing a key). - In _m_a_c_r_o_s (section 3.6 , page 20) or _p_u_s_h (section 3.21 , page 29) commands, - you can use the ``tag-prefix-cond'' operator. If there are no tagged messages, - mutt will "eat" the rest of the macro to abort it's execution. Mutt will stop - "eating" the macro when it encounters the ``end-cond'' operator; after this - operator the rest of the macro will be executed as normal. + map specifies in which menu the binding belongs. Multiple maps may be + specified by separating them with commas (no additional whitespace + isallowed). The currently defined maps are: - The Mutt-ng E-Mail Client 41 + generic - _4_._4 _U_s_i_n_g _H_o_o_k_s + This is not a real menu, but is used as a fallback for all of the + other menus except for the pager and editor modes. If a key is not + defined in another menu, Mutt-ng will look for a binding to use in + this menu. This allows you to bind a key to a certain function in + multiple menus instead of having multiple bind statements to + accomplish the same task. - A _h_o_o_k is a concept borrowed from the EMACS editor which allows you to execute - arbitrary commands before performing some operation. For example, you may wish - to tailor your configuration based upon which mailbox you are reading, or to - whom you are sending mail. In the Mutt world, a _h_o_o_k consists of a _r_e_g_u_l_a_r - _e_x_p_r_e_s_s_i_o_n (section 4.1 , page 33) or _p_a_t_t_e_r_n (section 4.2 , page 36) along - with a configuration option/command. See + alias + + The alias menu is the list of your personal aliases as defined in + your muttrc. It is the mapping from a short alias name to the full + email address(es) of the recipient(s). + + attach + + The attachment menu is used to access the attachments on received + messages. + + browser + + The browser is used for both browsing the local directory + structure, and for listing all of your incoming mailboxes. + + editor + + The editor is the line-based editor the user enters text data. + + index + + The index is the list of messages contained in a mailbox. + + compose + + The compose menu is the screen used when sending a new message. - +o _f_o_l_d_e_r_-_h_o_o_k (section 3.5 , page 19) + pager - +o _s_e_n_d_-_h_o_o_k (section 3.18 , page 27) + The pager is the mode used to display message/attachment data, and + help listings. + + pgp + + The pgp menu is used to select the OpenPGP keys used for + encrypting outgoing messages. + + postpone + + The postpone menu is similar to the index menu, except is used + when recalling a message the user was composing, but saved until + later. + + key is the key (or key sequence) you wish to bind. To specify a control + character, use the sequence \Cx, where x is the letter of the control + character (for example, to specify control-A use ``\Ca''). Note that the + case of x as well as \C is ignored, so that \CA, \Ca, \cA and \ca are all + equivalent. An alternative form is to specify the key as a three digit + octal number prefixed with a ``\'' (for example \177 is equivalent to + \c?). + + In addition, key may consist of: + + Table 3.1. Alternative Key Names - +o _m_e_s_s_a_g_e_-_h_o_o_k (section 3.19 , page 28) + +-----------------------------------+ + | Sequence | Description | + |-------------+---------------------| + | \t | tab | + |-------------+---------------------| + | | tab | + |-------------+---------------------| + | | backtab / shift-tab | + |-------------+---------------------| + | \r | carriage return | + |-------------+---------------------| + | \n | newline | + |-------------+---------------------| + | \e | escape | + |-------------+---------------------| + | | escape | + |-------------+---------------------| + | | up arrow | + |-------------+---------------------| + | | down arrow | + |-------------+---------------------| + | | left arrow | + |-------------+---------------------| + | | right arrow | + |-------------+---------------------| + | | Page Up | + |-------------+---------------------| + | | Page Down | + |-------------+---------------------| + | | Backspace | + |-------------+---------------------| + | | Delete | + |-------------+---------------------| + | | Insert | + |-------------+---------------------| + | | Enter | + |-------------+---------------------| + | | Return | + |-------------+---------------------| + | | Home | + |-------------+---------------------| + | | End | + |-------------+---------------------| + | | Space bar | + |-------------+---------------------| + | | function key 1 | + |-------------+---------------------| + | | function key 10 | + +-----------------------------------+ - +o _s_a_v_e_-_h_o_o_k (section 3.15 , page 26) + key does not need to be enclosed in quotes unless it contains a space (`` + ''). - +o _m_b_o_x_-_h_o_o_k (section 3.11 , page 25) + function specifies which action to take when key is pressed. For a + complete list of functions, see the functions .The special function noop + unbinds the specified key sequence. - +o _f_c_c_-_h_o_o_k (section 3.16 , page 27) +6. Defining aliases for character sets - +o _f_c_c_-_s_a_v_e_-_h_o_o_k (section 3.17 , page 27) + Usage: charset-hook alias charset Usage: iconv-hook charset local-charset - for specific details on each type of _h_o_o_k available. + The charset-hook command defines an alias for a character set. This is + useful to properly display messages which are tagged with a character set + name not known to mutt. - NNoottee:: if a hook changes configuration settings, these changes remain effective - until the end of the current mutt session. As this is generally not desired, a - default hook needs to be added before all other hooks to restore configuration - defaults. Here is an example with send-hook and the my_hdr directive: + The iconv-hook command defines a system-specific name for a character set. + This is helpful when your systems character conversion library insists on + using strange, system-specific names for character sets. - send-hook . 'unmy_hdr From:' - send-hook ~C'^b@b\.b$' my_hdr from: c@c.c +7. Setting variables based upon mailbox - _4_._4_._1 _M_e_s_s_a_g_e _M_a_t_c_h_i_n_g _i_n _H_o_o_k_s + Usage: folder-hook [!]regexp command - Hooks that act upon messages (send-hook, save-hook, fcc-hook, message-hook) are - evaluated in a slightly different manner. For the other types of hooks, a _r_e_g_- - _u_l_a_r _e_x_p_r_e_s_s_i_o_n (section 4.1 , page 33) is sufficient. But in dealing with - messages a finer grain of control is needed for matching since for different - purposes you want to match different criteria. + It is often desirable to change settings based on which mailbox you are + reading. The folder-hook command provides a method by which you can + execute any configuration command. regexp is a regular expression + specifying in which mailboxes to execute command before loading. If a + mailbox matches multiple folder-hook's, they are executed in the order + given in the muttrc. - Mutt allows the use of the _s_e_a_r_c_h _p_a_t_t_e_r_n (section 4.2 , page 36) language for - matching messages in hook commands. This works in exactly the same way as it - would when _l_i_m_i_t_i_n_g or _s_e_a_r_c_h_i_n_g the mailbox, except that you are restricted to - those operators which match information mutt extracts from the header of the - message (i.e. from, to, cc, date, subject, etc.). + Note: if you use the ``!'' shortcut for spoolfile at the beginning of the + pattern, you must place it inside of double or single quotes in order to + distinguish it from the logical not operator for the expression. - For example, if you wanted to set your return address based upon sending mail - to a specific address, you could do something like: + Note that the settings are not restored when you leave the mailbox. For + example, a command action to perform is to change the sorting methodbased + upon the mailbox being read: - send-hook '~t ^me@cs\.hmc\.edu$' 'my_hdr From: Mutt User ' + folder-hook mutt set sort=threads - The Mutt-ng E-Mail Client 42 + However, the sorting method is not restored to its previous value when + reading a different mailbox. To specify a default command, use the pattern + ``.'': - which would execute the given command when sending mail to _m_e_@_c_s_._h_m_c_._e_d_u. + folder-hook . set sort=date-sent - However, it is not required that you write the pattern to match using the full - searching language. You can still specify a simple _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n like the - other hooks, in which case Mutt will translate your pattern into the full lan- - guage, using the translation specified by the _$_d_e_f_a_u_l_t___h_o_o_k (section 6.3.47 , - page 75) variable. The pattern is translated at the time the hook is declared, - so the value of _$_d_e_f_a_u_l_t___h_o_o_k (section 6.3.47 , page 75) that is in effect at - that time will be used. +8. Keyboard macros - _4_._5 _U_s_i_n_g _t_h_e _s_i_d_e_b_a_r + Usage: macro menu key sequence [ description ] - The sidebar, a feature specific to Mutt-ng, allows you to use a mailbox listing - which looks very similar to the ones you probably know from GUI mail clients. - The sidebar lists all specified mailboxes, shows the number in each and high- - lights the ones with new email Use the following configuration commands: + Macros are useful when you would like a single key to perform a series of + actions. When you press key in menu menu ,Mutt-ng will behave as if you + had typed sequence. So if you have a common sequence of commands you type, + you can create a macro to execute those commands with a singlekey. - set sidebar_visible="yes" - set sidebar_width=25 + menu is the maps which the macro will be bound. Multiple maps may be + specified by separating multiple menu arguments by commas. Whitespace may + not be used in between the menu arguments and thecommas separating them. - If you want to specify the mailboxes you can do so with: + key and sequence are expanded by the same rules as the bind. There are + some additions however. The first is that control characters in sequence + can also be specified as ^x. In order to get a caret (`^'') you need to + use ^^. Secondly, to specify a certain key such as up or to invoke a + function directly, you can use the format and + .For a listing of key names see the section on bind. Functions are listed + in the functions. - set mbox='=INBOX' - mailboxes INBOX \ - MBOX1 \ - MBOX2 \ - ... + The advantage with using function names directly is that the macros + willwork regardless of the current key bindings, so they are not dependent + on the user having particular key definitions. This makes them more + robustand portable, and also facilitates defining of macros in files used + by more than one user (eg. the system Muttngrc). - You can also specify the colors for mailboxes with new mails by using: + Optionally you can specify a descriptive text after sequence, which is + shown in the help screens. - color sidebar_new red black - color sidebar white black + Note: Macro definitions (if any) listed in the help screen(s), are + silently truncated at the screen width, and are not wrapped. - The available functions are: +9. Using color and mono video attributes - sidebar-scroll-up Scrolls the mailbox list up 1 page - sidebar-scroll-down Scrolls the mailbox list down 1 page - sidebar-next Highlights the next mailbox - sidebar-next-new Highlights the next mailbox with new mail - sidebar-previous Highlights the previous mailbox - sidebar-open Opens the currently highlighted mailbox + Usage: color object foreground background [ regexp ] Usage: color index + foreground background pattern Usage: uncolor index pattern [ pattern ... ] - Reasonable key bindings look e.g. like this: + If your terminal supports color, you can spice up Mutt-ng by creating your + own color scheme. To define the color of an object (type of information), + you must specify both a foreground color and a background color (it is not + possible to only specify one or the other). - The Mutt-ng E-Mail Client 43 + object can be one of: - bind index \Cp sidebar-prev - bind index \Cn sidebar-next - bind index \Cb sidebar-open - bind pager \Cp sidebar-prev - bind pager \Cn sidebar-next - bind pager \Cb sidebar-open + o attachment - macro index B ':toggle sidebar_visible^M' - macro pager B ':toggle sidebar_visible^M' + o body (match regexp in the body of messages) - You can then go up and down by pressing Ctrl-P and Ctrl-N, and switch on and - off the sidebar simply by pressing 'B'. + o bold (highlighting bold patterns in the body of messages) - _4_._6 _E_x_t_e_r_n_a_l _A_d_d_r_e_s_s _Q_u_e_r_i_e_s + o error (error messages printed by Mutt-ng) - Mutt supports connecting to external directory databases such as LDAP, ph/qi, - bbdb, or NIS through a wrapper script which connects to mutt using a simple - interface. Using the _$_q_u_e_r_y___c_o_m_m_a_n_d (section 6.3.214 , page 117) variable, - you specify the wrapper command to use. For example: + o header (match regexp in the message header) - set query_command = "mutt_ldap_query.pl '%s'" + o hdrdefault (default color of the message header in the pager) - The wrapper script should accept the query on the command-line. It should - return a one line message, then each matching response on a single line, each - line containing a tab separated address then name then some other optional - information. On error, or if there are no matching addresses, return a non- - zero exit code and a one line error message. + o index (match pattern in the message index) - An example multiple response output: + o indicator (arrow or bar used to indicate the current item in a menu) - Searching database ... 20 entries ... 3 matching: - me@cs.hmc.edu Michael Elkins mutt dude - blong@fiction.net Brandon Long mutt and more - roessler@guug.de Thomas Roessler mutt pgp + o markers (the ``+'' markers at the beginning of wrapped lines in the + pager) - There are two mechanisms for accessing the query function of mutt. One is to - do a query from the index menu using the query function (default: Q). This - will prompt for a query, then bring up the query menu which will list the - matching responses. From the query menu, you can select addresses to create - aliases, or to mail. You can tag multiple addresses to mail, start a new - query, or have a new query appended to the current responses. + o message (informational messages) - The other mechanism for accessing the query function is for address completion, - similar to the alias completion. In any prompt for address entry, you can use - the complete-query function (default: ^T) to run a query based on the current - address you have typed. Like aliases, mutt will look for what you have typed - back to the last space or comma. If there is a single response for that query, - mutt will expand the address in place. If there are multiple responses, mutt - will activate the query menu. At the query menu, you can select one or more - addresses to be added to the prompt. + o normal - The Mutt-ng E-Mail Client 44 + o quoted (text matching quote-regexp in the body of a message) - _4_._7 _M_a_i_l_b_o_x _F_o_r_m_a_t_s + o quoted1, quoted2, ..., quotedN (higher levels of quoting) - Mutt supports reading and writing of four different mailbox formats: mbox, - MMDF, MH and Maildir. The mailbox type is autodetected, so there is no need to - use a flag for different mailbox types. When creating new mailboxes, Mutt uses - the default specified with the _$_m_b_o_x___t_y_p_e (section 6.3.128 , page 96) vari- - able. + o search (highlighting of words in the pager) - mmbbooxx. This is the most widely used mailbox format for UNIX. All messages are - stored in a single file. Each message has a line of the form: + o signature - From me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST + o status (mode lines used to display info about the mailbox or message) - to denote the start of a new message (this is often referred to as the - ``From_'' line). + o tilde (the ``˜'' used to pad blank lines in the pager) - MMMMDDFF. This is a variant of the _m_b_o_x format. Each message is surrounded by - lines containing ``^A^A^A^A'' (four control-A's). + o tree (thread tree drawn in the message index and attachment menu) - MMHH. A radical departure from _m_b_o_x and _M_M_D_F, a mailbox consists of a directory - and each message is stored in a separate file. The filename indicates the mes- - sage number (however, this is may not correspond to the message number Mutt - displays). Deleted messages are renamed with a comma (,) prepended to the file- - name. NNoottee:: Mutt detects this type of mailbox by looking for either - .mh_sequences or .xmhcache (needed to distinguish normal directories from MH - mailboxes). - - MMaaiillddiirr. The newest of the mailbox formats, used by the Qmail MTA (a replace- - ment for sendmail). Similar to _M_H, except that it adds three subdirectories of - the mailbox: _t_m_p, _n_e_w and _c_u_r. Filenames for the messages are chosen in such a - way they are unique, even when two programs are writing the mailbox over NFS, - which means that no file locking is needed. - - _4_._8 _M_a_i_l_b_o_x _S_h_o_r_t_c_u_t_s - - There are a number of built in shortcuts which refer to specific mailboxes. - These shortcuts can be used anywhere you are prompted for a file or mailbox - path. - - +o ! -- refers to your _$_s_p_o_o_l_f_i_l_e (section 6.3.291 , page 135) (incoming) - mailbox - - +o > -- refers to your _$_m_b_o_x (section 6.3.127 , page 96) file - - +o < -- refers to your _$_r_e_c_o_r_d (section 6.3.223 , page 119) file - - +o ^ -- refers to the current mailbox - - +o - or !! -- refers to the file you've last visited - - +o ~ -- refers to your home directory - - The Mutt-ng E-Mail Client 45 - - +o = or + -- refers to your _$_f_o_l_d_e_r (section 6.3.65 , page 79) directory - - +o @_a_l_i_a_s -- refers to the _d_e_f_a_u_l_t _s_a_v_e _f_o_l_d_e_r (section 3.15 , page 26) as - determined by the address of the alias - - _4_._9 _H_a_n_d_l_i_n_g _M_a_i_l_i_n_g _L_i_s_t_s - - Mutt has a few configuration options that make dealing with large amounts of - mail easier. The first thing you must do is to let Mutt know what addresses - you consider to be mailing lists (technically this does not have to be a mail- - ing list, but that is what it is most often used for), and what lists you are - subscribed to. This is accomplished through the use of the _l_i_s_t_s _a_n_d _s_u_b_s_c_r_i_b_e - (section 3.10 , page 24) commands in your muttrc. - - Now that Mutt knows what your mailing lists are, it can do several things, the - first of which is the ability to show the name of a list through which you - received a message (i.e., of a subscribed list) in the _i_n_d_e_x menu display. - This is useful to distinguish between personal and list mail in the same mail- - box. In the _$_i_n_d_e_x___f_o_r_m_a_t (section 6.3.112 , page 91) variable, the escape - ``%L'' will return the string ``To '' when ``list'' appears in the ``To'' - field, and ``Cc '' when it appears in the ``Cc'' field (otherwise it - returns the name of the author). - - Often times the ``To'' and ``Cc'' fields in mailing list messages tend to get - quite large. Most people do not bother to remove the author of the message they - are reply to from the list, resulting in two or more copies being sent to that - person. The ``list-reply'' function, which by default is bound to ``L'' in the - _i_n_d_e_x menu and _p_a_g_e_r, helps reduce the clutter by only replying to the known - mailing list addresses instead of all recipients (except as specified by Mail- - Followup-To, see below). - - Mutt also supports the Mail-Followup-To header. When you send a message to a - list of recipients which includes one or several subscribed mailing lists, and - if the _$_f_o_l_l_o_w_u_p___t_o (section 6.3.67 , page 80) option is set, mutt will gener- - ate a Mail-Followup-To header which contains all the recipients to whom you - send this message, but not your address. This indicates that group-replies or - list-replies (also known as ``followups'') to this message should only be sent - to the original recipients of the message, and not separately to you - you'll - receive your copy through one of the mailing lists you are subscribed to. + o underline (highlighting underlined patterns in the body of messages) - Conversely, when group-replying or list-replying to a message which has a Mail- - Followup-To header, mutt will respect this header if the _$_h_o_n_o_r___f_o_l_l_o_w_u_p___t_o - (section 6.3.91 , page 86) configuration variable is set. Using list-reply - will in this case also make sure that the reply goes to the mailing list, even - if it's not specified in the list of recipients in the Mail-Followup-To. + foreground and background can be one of the following: - Note that, when header editing is enabled, you can create a Mail-Followup-To - header manually. Mutt will only auto-generate this header if it doesn't exist - when you send the message. - - The other method some mailing list admins use is to generate a ``Reply-To'' - field which points back to the mailing list address rather than the author of - the message. This can create problems when trying to reply directly to the - author in private, since most mail clients will automatically reply to the - - The Mutt-ng E-Mail Client 46 - - address given in the ``Reply-To'' field. Mutt uses the _$_r_e_p_l_y___t_o (section - 6.3.226 , page 119) variable to help decide which address to use. If set to - _a_s_k_-_y_e_s or _a_s_k_-_n_o, you will be prompted as to whether or not you would like to - use the address given in the ``Reply-To'' field, or reply directly to the - address given in the ``From'' field. When set to _y_e_s, the ``Reply-To'' field - will be used when present. - - The ``X-Label:'' header field can be used to further identify mailing lists or - list subject matter (or just to annotate messages individually). The - _$_i_n_d_e_x___f_o_r_m_a_t (section 6.3.112 , page 91) variable's ``%y'' and ``%Y'' escapes - can be used to expand ``X-Label:'' fields in the index, and Mutt's pattern- - matcher can match regular expressions to ``X-Label:'' fields with the `` y'' - selector. ``X-Label:'' is not a standard message header field, but it can eas- - ily be inserted by procmail and other mail filtering agents. + o white - Lastly, Mutt has the ability to _s_o_r_t (section 6.3.285 , page 133) the mailbox - into _t_h_r_e_a_d_s (section 2.3.3 , page 7). A thread is a group of messages which - all relate to the same subject. This is usually organized into a tree-like - structure where a message and all of its replies are represented graphically. - If you've ever used a threaded news client, this is the same concept. It makes - dealing with large volume mailing lists easier because you can easily delete - uninteresting threads and quickly find topics of value. + o black - _4_._1_0 _E_d_i_t_i_n_g _t_h_r_e_a_d_s + o green - Mutt has the ability to dynamically restructure threads that are broken either - by misconfigured software or bad behavior from some correspondents. This allows - to clean your mailboxes formats) from these annoyances which make it hard to - follow a discussion. + o magenta - _4_._1_0_._1 _L_i_n_k_i_n_g _t_h_r_e_a_d_s + o blue - Some mailers tend to "forget" to correctly set the "In-Reply-To:" and "Refer- - ences:" headers when replying to a message. This results in broken discussions - because Mutt has not enough information to guess the correct threading. You - can fix this by tagging the reply, then moving to the parent message and using - the ``link-threads'' function (bound to & by default). The reply will then be - connected to this "parent" message. - - You can also connect multiple children at once, tagging them and using the tag- - prefix command (';') or the auto_tag option. - - _4_._1_0_._2 _B_r_e_a_k_i_n_g _t_h_r_e_a_d_s - - On mailing lists, some people are in the bad habit of starting a new discussion - by hitting "reply" to any message from the list and changing the subject to a - totally unrelated one. You can fix such threads by using the ``break-thread'' - function (bound by default to #), which will turn the subthread starting from - the current message into a whole different thread. - - _4_._1_1 _D_e_l_i_v_e_r_y _S_t_a_t_u_s _N_o_t_i_f_i_c_a_t_i_o_n _(_D_S_N_) _S_u_p_p_o_r_t - - RFC1894 defines a set of MIME content types for relaying information about the - status of electronic mail messages. These can be thought of as ``return - - The Mutt-ng E-Mail Client 47 - - receipts.'' Berkeley sendmail 8.8.x currently has some command line options in - which the mail client can make requests as to what type of status messages - should be returned. - - To support this, there are two variables. _$_d_s_n___n_o_t_i_f_y (section 6.3.53 , page - 76) is used to request receipts for different results (such as failed message, - message delivered, etc.). _$_d_s_n___r_e_t_u_r_n (section 6.3.54 , page 77) requests how - much of your message should be returned with the receipt (headers or full mes- - sage). Refer to the man page on sendmail for more details on DSN. - - _4_._1_2 _P_O_P_3 _S_u_p_p_o_r_t _(_O_P_T_I_O_N_A_L_) - - If Mutt was compiled with POP3 support (by running the _c_o_n_f_i_g_u_r_e script with - the _-_-_e_n_a_b_l_e_-_p_o_p flag), it has the ability to work with mailboxes located on a - remote POP3 server and fetch mail for local browsing. + o cyan - You can access the remote POP3 mailbox by selecting the folder - pop://popserver/. - - You can select an alternative port by specifying it with the server, i.e.: - pop://popserver:port/. - - You can also specify different username for each folder, i.e.: pop://user- - name@popserver[:port]/. + o yellow - Polling for new mail is more expensive over POP3 than locally. For this reason - the frequency at which Mutt will check for mail remotely can be controlled by - the _$_p_o_p___c_h_e_c_k_i_n_t_e_r_v_a_l (section 6.3.197 , page 113) variable, which defaults - to every 60 seconds. - - If Mutt was compiled with SSL support (by running the _c_o_n_f_i_g_u_r_e script with the - _-_-_w_i_t_h_-_s_s_l flag), connections to POP3 servers can be encrypted. This naturally - requires that the server supports SSL encrypted connections. To access a folder - with POP3/SSL, you should use pops: prefix, ie: pops://[user- - name@]popserver[:port]/. + o red - Another way to access your POP3 mail is the _f_e_t_c_h_-_m_a_i_l function (default: G). - It allows to connect to _p_o_p___h_o_s_t (section 6.3.199 , page 113), fetch all your - new mail and place it in the local _s_p_o_o_l_f_i_l_e (section 6.3.291 , page 135). - After this point, Mutt runs exactly as if the mail had always been local. + o default - NNoottee:: If you only need to fetch all messages to local mailbox you should con- - sider using a specialized program, such as fetchmail + o colorx - _4_._1_3 _I_M_A_P _S_u_p_p_o_r_t _(_O_P_T_I_O_N_A_L_) + foreground can optionally be prefixed with the keyword bright to make the + foreground color boldfaced (e.g., brightred). - If Mutt was compiled with IMAP support (by running the _c_o_n_f_i_g_u_r_e script with - the _-_-_e_n_a_b_l_e_-_i_m_a_p flag), it has the ability to work with folders located on a - remote IMAP server. + If your terminal supports it, the special keyword default can be used as a + transparent color. The value brightdefault is also valid. If Mutt-ng is + linked against the S-Lang library, you also need to set the COLORFGBG + environment variable to the default colors of your terminal for this to + work; for example (for Bourne-like shells): - You can access the remote inbox by selecting the folder - imap://imapserver/INBOX, where imapserver is the name of the IMAP server and - INBOX is the special name for your spool mailbox on the IMAP server. If you - want to access another mail folder at the IMAP server, you should use + set COLORFGBG="green;black" + export COLORFGBG - The Mutt-ng E-Mail Client 48 + Note: The S-Lang library requires you to use the lightgray and brown + keywords instead of white and yellow when setting this variable. - imap://imapserver/path/to/folder where path/to/folder is the path of the folder - you want to access. + Note: The uncolor command can be applied to the index object only. It + removes entries from the list. You must specify the same pattern specified + in the color command for it to be removed. The pattern ``*'' is a special + token which means to clear the color index list of all entries. - You can select an alternative port by specifying it with the server, i.e.: - imap://imapserver:port/INBOX. + Mutt-ng also recognizes the keywords color0, color1 ,…, colorN-1 (N + being the number of colors supported by your terminal). This is useful + when you remap the colors for your display (for example by changing the + color associated with color2 for your xterm), since color names may then + lose their normal meaning. - You can also specify different username for each folder, i.e.: imap://user- - name@imapserver[:port]/INBOX. + If your terminal does not support color, it is still possible change the + video attributes through the use of the ``mono'' command: - If Mutt was compiled with SSL support (by running the _c_o_n_f_i_g_u_r_e script with the - _-_-_w_i_t_h_-_s_s_l flag), connections to IMAP servers can be encrypted. This naturally - requires that the server supports SSL encrypted connections. To access a folder - with IMAP/SSL, you should use imaps://[user- - name@]imapserver[:port]/path/to/folder as your folder path. + Usage: mono [ regexp ] Usage: mono index attribute + pattern Usage: unmono index pattern [ pattern ... ] - Pine-compatible notation is also supported, i.e. {[user- - name@]imapserver[:port][/ssl]}path/to/folder + where attribute is one of the following: - Note that not all servers use / as the hierarchy separator. Mutt should cor- - rectly notice which separator is being used by the server and convert paths - accordingly. + o none - When browsing folders on an IMAP server, you can toggle whether to look at only - the folders you are subscribed to, or all folders with the _t_o_g_g_l_e_-_s_u_b_s_c_r_i_b_e_d - command. See also the _$_i_m_a_p___l_i_s_t___s_u_b_s_c_r_i_b_e_d (section 6.3.100 , page 88) vari- - able. + o bold - Polling for new mail on an IMAP server can cause noticeable delays. So, you'll - want to carefully tune the _$_i_m_a_p___m_a_i_l___c_h_e_c_k (section 6.3.101 , page 88) and - _$_t_i_m_e_o_u_t (section 6.3.311 , page 141) variables. + o underline - Note that if you are using mbox as the mail store on UW servers prior to - v12.250, the server has been reported to disconnect a client if another client - selects the same folder. + o reverse - _4_._1_3_._1 _T_h_e _F_o_l_d_e_r _B_r_o_w_s_e_r + o standout - As of version 1.2, mutt supports browsing mailboxes on an IMAP server. This is - mostly the same as the local file browser, with the following differences: +10. Ignoring (weeding) unwanted message headers - +o Instead of file permissions, mutt displays the string "IMAP", possibly - followed by the symbol "+", indicating that the entry contains both mes- - sages and subfolders. On Cyrus-like servers folders will often contain - both messages and subfolders. + Usage: [un]ignore pattern [ pattern ... ] - +o For the case where an entry can contain both messages and subfolders, the - selection key (bound to enter by default) will choose to descend into the - subfolder view. If you wish to view the messages in that folder, you must - use view-file instead (bound to space by default). + Messages often have many header fields added by automatic processing + systems, or which may not seem useful to display on the screen. This + command allows you to specify header fields which you don't normally want + to see. - +o You can create, delete and rename mailboxes with the create-mailbox, - delete-mailbox, and rename-mailbox commands (default bindings: C, d and r, - respectively). You may also subscribe and unsubscribe to mailboxes (nor- - mally these are bound to s and u, respectively). + You do not need to specify the full header field name. For example, + ``ignore content-'' will ignore all header fields that begin with the + pattern ``content-''. ``ignore *'' will ignore all headers. - The Mutt-ng E-Mail Client 49 + To remove a previously added token from the list, use the ``unignore'' + command. The ``unignore'' command will make Mutt-ng display headers with + the given pattern. For example, if you do ``ignore x-'' it is possible to + ``unignore x-mailer''. - _4_._1_3_._2 _A_u_t_h_e_n_t_i_c_a_t_i_o_n + ``unignore *'' will remove all tokens from the ignore list. - Mutt supports four authentication methods with IMAP servers: SASL, GSSAPI, - CRAM-MD5, and LOGIN (there is a patch by Grant Edwards to add NTLM authentica- - tion for you poor exchange users out there, but it has yet to be integrated - into the main tree). There is also support for the pseudo-protocol ANONYMOUS, - which allows you to log in to a public IMAP server without having an account. - To use ANONYMOUS, simply make your username blank or "anonymous". + For example: - SASL is a special super-authenticator, which selects among several protocols - (including GSSAPI, CRAM-MD5, ANONYMOUS, and DIGEST-MD5) the most secure method - available on your host and the server. Using some of these methods (including - DIGEST-MD5 and possibly GSSAPI), your entire session will be encrypted and - invisible to those teeming network snoops. It is the best option if you have - it. To use it, you must have the Cyrus SASL library installed on your system - and compile mutt with the _-_-_w_i_t_h_-_s_a_s_l flag. + # Sven's draconian header weeding + ignore * + unignore from date subject to cc + unignore organization organisation x-mailer: x-newsreader: x-mailing-list: + unignore posted-to: - Mutt will try whichever methods are compiled in and available on the server, in - the following order: SASL, ANONYMOUS, GSSAPI, CRAM-MD5, LOGIN. +11. Alternative addresses - There are a few variables which control authentication: + Usage: [un]alternates regexp [ regexp ... ] - +o _$_i_m_a_p___u_s_e_r (section 6.3.107 , page 90) - controls the username under - which you request authentication on the IMAP server, for all authentica- - tors. This is overridden by an explicit username in the mailbox path (i.e. - by using a mailbox name of the form {user@host}). + With various functions, mutt will treat messages differently, depending on + whether you sent them or whether you received them from someone else. For + instance, when replying to a message that you sent to a different party, + mutt will automatically suggest to send the response to the original + message's recipients -- responding to yourself won't make much sense in + many cases. (See reply-to .) - +o _$_i_m_a_p___p_a_s_s (section 6.3.102 , page 88) - a password which you may preset, - used by all authentication methods where a password is needed. + Many users receive e-mail under a number of different addresses. To fully + use mutt's features here, the program must be able to recognize what + e-mail addresses you receive mail under. That's the purpose of the + alternates command: It takes a list of regular expressions, each of which + can identify an address under which you receive e-mail. - +o _$_i_m_a_p___a_u_t_h_e_n_t_i_c_a_t_o_r_s (section 6.3.94 , page 86) - a colon-delimited list - of IMAP authentication methods to try, in the order you wish to try them. - If specified, this overrides mutt's default (attempt everything, in the - order listed above). + The unalternates command can be used to write exceptions to alternates + patterns. If an address matches something in an alternates command, but + you nonetheless do not think it is from you, you can list a more precise + pattern under an unalternates command. - _4_._1_4 _M_a_n_a_g_i_n_g _m_u_l_t_i_p_l_e _I_M_A_P_/_P_O_P _a_c_c_o_u_n_t_s _(_O_P_T_I_O_N_A_L_) + To remove a regular expression from the alternates list, use the + unalternates command with exactly the same regexp . Likewise, if the + regexp for a alternates command matches an entry on the unalternates list, + that unalternates entry will be removed. If the regexp for unalternates is + ``*'', all entries on alternates will be removed. - If you happen to have accounts on multiple IMAP and/or POP servers, you may - find managing all the authentication settings inconvenient and error-prone. - The account-hook command may help. This hook works like folder-hook but is - invoked whenever you access a remote mailbox (including inside the folder - browser), not just when you open the mailbox. +12. Format = Flowed - Some examples: + 12.1. Introduction - account-hook . 'unset imap_user; unset imap_pass; unset tunnel' - account-hook imap://host1/ 'set imap_user=me1 imap_pass=foo' - account-hook imap://host2/ 'set tunnel="ssh host2 /usr/libexec/imapd"' + Mutt-ng contains support for so-called format=flowed messages. In the + beginning of email, each message had a fixed line width, and it was enough + for displaying them on fixed-size terminals. But times changed, and + nowadays hardly anybody still uses fixed-size terminals: more people + nowaydays use graphical user interfaces, with dynamically resizable + windows. This led to the demand of a new email format that makes it + possible for the email client to make the email look nice in a resizable + window without breaking quoting levels and creating an incompatible email + format that can also be displayed nicely on old fixed-size terminals. - _4_._1_5 _S_t_a_r_t _a _W_W_W _B_r_o_w_s_e_r _o_n _U_R_L_s _(_E_X_T_E_R_N_A_L_) + For introductory information on format=flowed messages, see + . - If a message contains URLs (_u_n_i_f_i_e_d _r_e_s_o_u_r_c_e _l_o_c_a_t_o_r = address in the WWW space + 12.2. Receiving: Display Setup - The Mutt-ng E-Mail Client 50 + When you receive emails that are marked as format=flowed messages, and is + formatted correctly, mutt-ng will try to reformat the message to optimally + fit on your terminal. If you want a fixed margin on the right side of your + terminal, you can set the following: - like _h_t_t_p_:_/_/_w_w_w_._m_u_t_t_._o_r_g_/), it is efficient to get a menu with all the URLs and - start a WWW browser on one of them. This functionality is provided by the - external urlview program which can be retrieved at ftp://ftp.mutt.org/mutt/con- - trib/ and the configuration commands: + set wrapmargin = 10 - macro index \cb |urlview\n - macro pager \cb |urlview\n + The code above makes the line break 10 columns before the right side of + the terminal. - _4_._1_6 _C_o_m_p_r_e_s_s_e_d _f_o_l_d_e_r_s _S_u_p_p_o_r_t _(_O_P_T_I_O_N_A_L_) + If your terminal is so wide that the lines are embarrassingly long, you + can also set a maximum line length: - If Mutt was compiled with compressed folders support (by running the _c_o_n_f_i_g_u_r_e - script with the _-_-_e_n_a_b_l_e_-_c_o_m_p_r_e_s_s_e_d flag), Mutt can open folders stored in an - arbitrary format, provided that the user has a script to convert from/to this - format to one of the accepted. + set max_line_length = 120 - The most common use is to open compressed archived folders e.g. with gzip. + The example above will give you lines not longer than 120 characters. - In addition, the user can provide a script that gets a folder in an accepted - format and appends its context to the folder in the user-defined format, which - may be faster than converting the entire folder to the accepted format, append- - ing to it and converting back to the user-defined format. + When you view at format=flowed messages, you will often see the quoting + hierarchy like in the following example: - There are three hooks defined (_o_p_e_n_-_h_o_o_k (section 4.16.1 , page 50), _c_l_o_s_e_- - _h_o_o_k (section 4.16.2 , page 51) and _a_p_p_e_n_d_-_h_o_o_k (section 4.16.3 , page 51)) - which define commands to uncompress and compress a folder and to append mes- - sages to an existing compressed folder respectively. + >Bill, can you please send last month's progress report to Mr. + >Morgan? We also urgently need the cost estimation for the new + >production server that we want to set up before our customer's + >project will go live. - For example: + This obviously doesn't look very nice, and it makes it very hard to + differentiate between text and quoting character. The solution is to + configure mutt-ng to "stuff" the quoting: - open-hook \\.gz$ "gzip -cd %f > %t" - close-hook \\.gz$ "gzip -c %t > %f" - append-hook \\.gz$ "gzip -c %t >> %f" + set stuff_quoted - You do not have to specify all of the commands. If you omit _a_p_p_e_n_d_-_h_o_o_k (sec- - tion 4.16.3 , page 51), the folder will be open and closed again each time you - will add to it. If you omit _c_l_o_s_e_-_h_o_o_k (section 4.16.2 , page 51) (or give - empty command) , the folder will be open in the mode. If you specify _a_p_p_e_n_d_- - _h_o_o_k (section 4.16.3 , page 51) though you'll be able to append to the folder. + This will lead to a nicer result that is easier to read: - Note that Mutt will only try to use hooks if the file is not in one of the - accepted formats. In particular, if the file is empty, mutt supposes it is not - compressed. This is important because it allows the use of programs that do not - have well defined extensions. Just use '.' as a regexp. But this may be sur- - prising if your compressing script produces empty files. In this situation, - unset _$_s_a_v_e___e_m_p_t_y (section 6.3.233 , page 121), so that the compressed file - will be removed if you delete all of the messages. + > Bill, can you please send last month's progress report to Mr. + > Morgan? We also urgently need the cost estimation for the new + > production server that we want to set up before our customer's + > project will go live. - _4_._1_6_._1 _O_p_e_n _a _c_o_m_p_r_e_s_s_e_d _m_a_i_l_b_o_x _f_o_r _r_e_a_d_i_n_g + 12.3. Sending - Usage: open-hook _r_e_g_e_x_p '_c_o_m_m_a_n_d' + If you want mutt-ng to send emails with format=flowed set, you need to + explicitly set it: - The Mutt-ng E-Mail Client 51 + set text_flowed - The _c_o_m_m_a_n_d is the command that can be used for opening the folders whose names - match _r_e_g_e_x_p. + Additionally, you have to use an editor which supports writing + format=flowed-conforming emails. For vim, this is done by adding w to the + formatoptions (see :h formatoptions and :h fo-table) when writing emails. - The _c_o_m_m_a_n_d string is the printf-like format string, and it should accept two - parameters: %f, which is replaced with the (compressed) folder name, and %t - which is replaced with the name of the temporary folder to which to write. + Also note that format=flowed knows about ``space-stuffing'', that is, when + sending messages, some kinds of lines have to be indented with a single + space on the sending side. On the receiving side, the first space (if any) + is removed. As a consequence and in addition to the above simple setting, + please keep this in mind when making manual formattings within the editor. + Also note that mutt-ng currently violates the standard (RfC 3676) as it + does not space-stuff lines starting with: - %f and %t can be repeated any number of times in the command string, and all of - the entries are replaced with the appropriate folder name. In addition, %% is - replaced by %, as in printf, and any other %anything is left as is. + o > This is not the quote character but a right angle used for other + reasons - The _c_o_m_m_a_n_d should nnoott remove the original compressed file. The _c_o_m_m_a_n_d should - return non-zero exit status if it fails, so mutt knows something's wrong. + o From with a trailing space. - Example: + o just a space for formatting reasons - open-hook \\.gz$ "gzip -cd %f > %t" + Please make sure that you manually prepend a space to each of them. - If the _c_o_m_m_a_n_d is empty, this operation is disabled for this file type. + 12.4. Additional Notes - _4_._1_6_._2 _W_r_i_t_e _a _c_o_m_p_r_e_s_s_e_d _m_a_i_l_b_o_x + For completeness, the delete-space variable provides the mechanism to + generate a DelSp=yes parameter on outgoing messages. According to the + standard, clients receiving a format=flowed messages should delete the + last space of a flowed line but still interpret the line as flowed. + Because flowed lines usually contain only one space at the end, this + parameter would make the receiving client concatenate the last word of the + previous with the first of the current line without a space. This makes + ordinary text unreadable and is intended for languages rarely using + spaces. So please use this setting only if you're sure what you're doing. - Usage: close-hook _r_e_g_e_x_p '_c_o_m_m_a_n_d' +13. Mailing lists - This is used to close the folder that was open with the _o_p_e_n_-_h_o_o_k (section - 4.16.1 , page 50) command after some changes were made to it. + Usage: [un]lists regexp [ regexp ... ] Usage: [un]subscribe regexp [ + regexp ... ] - The _c_o_m_m_a_n_d string is the command that can be used for closing the folders - whose names match _r_e_g_e_x_p. It has the same format as in the _o_p_e_n_-_h_o_o_k (section - 4.16.1 , page 50) command. Temporary folder in this case is the folder previ- - ously produced by the <_o_p_e_n_-_h_o_o_k (section 4.16.1 , page 50) command. + Mutt-ng has a few nice features for using-lists .In order to take + advantage of them, you must specify which addresses belong to mailing + lists, and which mailing lists you are subscribed to. Once you have done + this, the list-reply function will work for all known lists. Additionally, + when you send a message to a subscribed list, mutt will add a + Mail-Followup-To header to tell other users' mail user agents not to send + copies of replies to your personal address. Note that the Mail-Followup-To + header is a non-standard extension which is not supported by all mail user + agents. Adding it is not bullet-proof against receiving personal CCs of + list messages. Also note that the generation of the Mail-Followup-To + header is controlled by the followup-to configuration variable. - The _c_o_m_m_a_n_d should nnoott remove the decompressed file. The _c_o_m_m_a_n_d should return - non-zero exit status if it fails, so mutt knows something's wrong. + More precisely, Mutt-ng maintains lists of patterns for the addresses of + known and subscribed mailing lists. Every subscribed mailing list is + known. To mark a mailing list as known, use the ``lists'' command. To mark + it as subscribed, use ``subscribe''. - Example: + You can use regular expressions with both commands. To mark all messages + sent to a specific bug report's address on mutt's bug tracking system as + list mail, for instance, you could say ``subscribe [0-9]*@bugs.guug.de''. + Often, it's sufficient to just give a portion of the list's e-mail + address. - close-hook \\.gz$ "gzip -c %t > %f" + Specify as much of the address as you need to to remove ambiguity. For + example, if you've subscribed to the Mutt-ng mailing list, you will + receive mail addressed to mutt-users@mutt.org. So, to tell Mutt-ng that + this is a mailing list, you could add ``lists mutt-users'' to your + initialization file. To tell mutt that you are subscribed to it, add + ``subscribe mutt-users'' to your initialization file instead. If you also + happen to get mail from someone whose address is mutt-users@example.com, + you could use ``lists mutt-users@mutt\\.org'' or ``subscribe + mutt-users@mutt\\.org'' to match only mail from the actual list. - If the _c_o_m_m_a_n_d is empty, this operation is disabled for this file type, and the - file can only be open in the readonly mode. + The ``unlists'' command is used to remove a token from the list of known + and subscribed mailing-lists. Use ``unlists *'' to remove all tokens. - _c_l_o_s_e_-_h_o_o_k (section 4.16.2 , page 51) is not called when you exit from the - folder if the folder was not changed. + To remove a mailing list from the list of subscribed mailing lists, but + keep it on the list of known mailing lists, use ``unsubscribe''. - _4_._1_6_._3 _A_p_p_e_n_d _a _m_e_s_s_a_g_e _t_o _a _c_o_m_p_r_e_s_s_e_d _m_a_i_l_b_o_x +14. Using Multiple spool mailboxes - Usage: append-hook _r_e_g_e_x_p '_c_o_m_m_a_n_d' + Usage: mbox-hook [!]pattern mailbox - This command is used for saving to an existing compressed folder. The _c_o_m_m_a_n_d + This command is used to move read messages from a specified mailbox to + adifferent mailbox automatically when you quit or change folders. pattern + is a regular expression specifying the mailbox to treat as a ``spool'' + mailbox and mailbox specifies where mail should be saved when read. - The Mutt-ng E-Mail Client 52 + Unlike some of the other hook commands, only the first matching pattern is + used (it is not possible to save read mail in more than a single mailbox). - is the command that can be used for appending to the folders whose names match - _r_e_g_e_x_p. It has the same format as in the _o_p_e_n_-_h_o_o_k (section 4.16.1 , page 50) - command. The temporary folder in this case contains the messages that are - being appended. +15. Defining mailboxes which receive mail - The _c_o_m_m_a_n_d should nnoott remove the decompressed file. The _c_o_m_m_a_n_d should return - non-zero exit status if it fails, so mutt knows something's wrong. + Usage: [un]mailboxes [!]filename [ filename ... ] - Example: + This command specifies folders which can receive mail and which will be + checked for new messages. By default, the main menu status bar displays + how many of these folders have new messages. - append-hook \\.gz$ "gzip -c %t >> %f" + When changing folders, pressing space will cycle through folders with new + mail. - When _a_p_p_e_n_d_-_h_o_o_k (section 4.16.3 , page 51) is used, the folder is not opened, - which saves time, but this means that we can not find out what the folder type - is. Thus the default (_$_m_b_o_x___t_y_p_e (section 6.3.128 , page 96)) type is always - supposed (i.e. this is the format used for the temporary folder). + Pressing TAB in the directory browser will bring up a menu showing the + files specified by the mailboxes command, and indicate which contain new + messages. Mutt-ng will automatically enter this mode when invoked from the + command line with the -y option. - If the file does not exist when you save to it, _c_l_o_s_e_-_h_o_o_k (section 4.16.2 , - page 51) is called, and not _a_p_p_e_n_d_-_h_o_o_k (section 4.16.3 , page 51). _a_p_p_e_n_d_- - _h_o_o_k (section 4.16.3 , page 51) is only for appending to existing folders. + The ``unmailboxes'' command is used to remove a token from the list of + folders which receive mail. Use ``unmailboxes *'' to remove all tokens. - If the _c_o_m_m_a_n_d is empty, this operation is disabled for this file type. In this - case, the folder will be open and closed again (using _o_p_e_n_-_h_o_o_k (section - 4.16.1 , page 50) and _c_l_o_s_e_-_h_o_o_k (section 4.16.2 , page 51)respectively) each - time you will add to it. + Note: new mail is detected by comparing the last modification time to the + last access time. Utilities like biff or frm or any other program which + accesses the mailbox might cause Mutt-ng to never detect new mail for that + mailbox if they do not properly reset the access time. Backup tools are + another common reason for updated access times. - _4_._1_6_._4 _E_n_c_r_y_p_t_e_d _f_o_l_d_e_r_s + Note: the filenames in the mailboxes command are resolved when the command + is executed, so if these names contain shortcuts (such as ``='' and + ``!''), any variable definition that affect these characters (like folder + and spoolfile) should be executed before the mailboxes command. - The compressed folders support can also be used to handle encrypted folders. If - you want to encrypt a folder with PGP, you may want to use the following hooks: +16. User defined headers - open-hook \\.pgp$ "pgp -f < %f > %t" - close-hook \\.pgp$ "pgp -fe YourPgpUserIdOrKeyId < %t > %f" + Usage: my_hdr string unmy_hdr field [ field ... ] - Please note, that PGP does not support appending to an encrypted folder, so - there is no append-hook defined. + The ``my_hdr'' command allows you to create your own header fields which + will be added to every message you send. - NNoottee:: the folder is temporary stored decrypted in the /tmp directory, where it - can be read by your system administrator. So think about the security aspects - of this. + For example, if you would like to add an ``Organization:'' header field to + all of your outgoing messages, you can put the command - _5_. _M_u_t_t_'_s _M_I_M_E _S_u_p_p_o_r_t + my_hdr Organization: A Really Big Company, Anytown, USA - Quite a bit of effort has been made to make Mutt the premier text-mode MIME - MUA. Every effort has been made to provide the functionality that the discern- - ing MIME user requires, and the conformance to the standards wherever possible. - When configuring Mutt for MIME, there are two extra types of configuration - files which Mutt uses. One is the mime.types file, which contains the mapping - of file extensions to IANA MIME types. The other is the mailcap file, which + in your .muttrc. - The Mutt-ng E-Mail Client 53 + Note: space characters are not allowed between the keyword and the colon + (``:''). The standard for electronic mail (RFC822) says that space is + illegal there, so Mutt-ng enforces the rule. - specifies the external commands to use for handling specific MIME types. + If you would like to add a header field to a single message, you should + either set the edit-headers variable, or use the edit-headers function + (default: ``E'') in the send-menu so that you can edit the header of your + message along with the body. - _5_._1 _U_s_i_n_g _M_I_M_E _i_n _M_u_t_t + To remove user defined header fields, use the ``unmy_hdr'' command. You + may specify an asterisk (``*'') to remove all header fields, or the fields + to remove. For example, to remove all ``To'' and ``Cc'' header fields, you + could use: - There are three areas/menus in Mutt which deal with MIME, they are the pager - (while viewing a message), the attachment menu and the compose menu. + unmy_hdr to cc - _5_._1_._1 _V_i_e_w_i_n_g _M_I_M_E _m_e_s_s_a_g_e_s _i_n _t_h_e _p_a_g_e_r +17. Defining the order of headers when viewing messages - When you select a message from the index and view it in the pager, Mutt decodes - the message to a text representation. Mutt internally supports a number of - MIME types, including text/plain, text/enriched, message/rfc822, and mes- - sage/news. In addition, the export controlled version of Mutt recognizes a - variety of PGP MIME types, including PGP/MIME and application/pgp. + Usage: hdr_order header1 header2 header3 - Mutt will denote attachments with a couple lines describing them. These lines - are of the form: + With this command, you can specify an order in which mutt will attempt to + present headers to you when viewing messages. - [-- Attachment #1: Description --] - [-- Type: text/plain, Encoding: 7bit, Size: 10000 --] + ``unhdr_order *'' will clear all previous headers from the order list, + thus removing the header order effects set by the system-wide startup + file. - Where the Description is the description or filename given for the attachment, - and the Encoding is one of 7bit/8bit/quoted-printable/base64/binary. + hdr_order From Date: From: To: Cc: Subject: - If Mutt cannot deal with a MIME type, it will display a message like: +18. Specify default save filename - [-- image/gif is unsupported (use 'v' to view this part) --] + Usage: save-hook [!]pattern filename - _5_._1_._2 _T_h_e _A_t_t_a_c_h_m_e_n_t _M_e_n_u + This command is used to override the default filename used when saving + messages. filename will be used as the default filename if the message is + From: an address matching regexp or if you are the author and the message + is addressed to: something matching regexp . - The default binding for view-attachments is `v', which displays the attachment - menu for a message. The attachment menu displays a list of the attachments in - a message. From the attachment menu, you can save, print, pipe, delete, and - view attachments. You can apply these operations to a group of attachments at - once, by tagging the attachments and by using the ``tag-prefix'' operator. You - can also reply to the current message from this menu, and only the current - attachment (or the attachments tagged) will be quoted in your reply. You can - view attachments as text, or view them using the mailcap viewer definition. + See pattern-hook for information on the exact format of pattern. - Finally, you can apply the usual message-related functions (like _r_e_s_e_n_d_-_m_e_s_s_a_g_e - (section 2.3.4 , page 9), and the reply and forward functions) to attachments - of type message/rfc822. + Examples: - See the help on the attachment menu for more information. + save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins + save-hook aol\\.com$ +spam - _5_._1_._3 _T_h_e _C_o_m_p_o_s_e _M_e_n_u + Also see the fcc-save-hook command. - The compose menu is the menu you see before you send a message. It allows you - to edit the recipient list, the subject, and other aspects of your message. It - also contains a list of the attachments of your message, including the main - body. From this menu, you can print, copy, filter, pipe, edit, compose, - review, and rename an attachment or a list of tagged attachments. You can also +19. Specify default Fcc: mailbox when composing - The Mutt-ng E-Mail Client 54 + Usage: fcc-hook [!]pattern mailbox - modifying the attachment information, notably the type, encoding and descrip- - tion. + This command is used to save outgoing mail in a mailbox other than record. + Mutt-ng searches the initial list of message recipients for the first + matching regexp and uses mailbox as the default Fcc: mailbox. If no match + is found the message will be saved to record mailbox. - Attachments appear as follows: + See pattern-hook for information on the exact format of pattern. - - 1 [text/plain, 7bit, 1K] /tmp/mutt-euler-8082-0 - 2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz + Example: fcc-hook [@.]aol\\.com$ +spammers - The '-' denotes that Mutt will delete the file after sending (or postponing, or - canceling) the message. It can be toggled with the toggle-unlink command - (default: u). The next field is the MIME content-type, and can be changed with - the edit-type command (default: ^T). The next field is the encoding for the - attachment, which allows a binary message to be encoded for transmission on - 7bit links. It can be changed with the edit-encoding command (default: ^E). - The next field is the size of the attachment, rounded to kilobytes or - megabytes. The next field is the filename, which can be changed with the - rename-file command (default: R). The final field is the description of the - attachment, and can be changed with the edit-description command (default: d). + The above will save a copy of all messages going to the aol.com domain to + the `+spammers' mailbox by default. Also see the fcc-save-hook command. - _5_._2 _M_I_M_E _T_y_p_e _c_o_n_f_i_g_u_r_a_t_i_o_n _w_i_t_h _m_i_m_e_._t_y_p_e_s +20. Specify default save filename and default Fcc: mailbox at once - When you add an attachment to your mail message, Mutt searches your personal - mime.types file at ${HOME}/.mime.types, and then the system mime.types file at - /usr/local/share/mutt/mime.types or /etc/mime.types + Usage: fcc-save-hook [!]pattern mailbox - The mime.types file consist of lines containing a MIME type and a space sepa- - rated list of extensions. For example: + This command is a shortcut, equivalent to doing both a fcc-hook and a + save-hook with its arguments. - application/postscript ps eps - application/pgp pgp - audio/x-aiff aif aifc aiff +21. Change settings based upon message recipients - A sample mime.types file comes with the Mutt distribution, and should contain - most of the MIME types you are likely to use. + Usage: reply-hook [!]pattern command Usage: send-hook [!]pattern command + Usage: send2-hook [!]pattern command - If Mutt can not determine the mime type by the extension of the file you - attach, it will look at the file. If the file is free of binary information, - Mutt will assume that the file is plain text, and mark it as text/plain. If - the file contains binary information, then Mutt will mark it as applica- - tion/octet-stream. You can change the MIME type that Mutt assigns to an - attachment by using the edit-type command from the compose menu (default: ^T). - The MIME type is actually a major mime type followed by the sub-type, separated - by a '/'. 6 major types: application, text, image, video, audio, and model have - been approved after various internet discussions. Mutt recognises all of these - if the appropriate entry is found in the mime.types file. It also recognises - other major mime types, such as the chemical type that is widely used in the - molecular modelling community to pass molecular data in various forms to vari- - ous molecular viewers. Non-recognised mime types should only be used if the - recipient of the message is likely to be expecting such attachments. + These commands can be used to execute arbitrary configuration commands + based upon recipients of the message. pattern is a regular expression + matching the desired address. command is executed when regexp matches + recipients of the message. - _5_._3 _M_I_M_E _V_i_e_w_e_r _c_o_n_f_i_g_u_r_a_t_i_o_n _w_i_t_h _m_a_i_l_c_a_p + reply-hook is matched against the message you are replying to, instead of + the message you are sending .send-hook is matched against all messages, + both new and replies .Note: reply-hooks are matched before the send-hook + ,regardless of the order specified in the users's configuration file. - The Mutt-ng E-Mail Client 55 + send2-hook is matched every time a message is changed, either by editing + it, or by using the compose menu to change its recipients or subject. + send2-hook is executed after send-hook ,and can, e.g., be used to set + parameters such as the sendmail variable depending on the message's sender + address. - Mutt supports RFC 1524 MIME Configuration, in particular the Unix specific for- - mat specified in Appendix A of RFC 1524. This file format is commonly referred - to as the mailcap format. Many MIME compliant programs utilize the mailcap - format, allowing you to specify handling for all MIME types in one place for - all programs. Programs known to use this format include Netscape, XMosaic, - lynx and metamail. + For each type of send-hook or reply-hook, when multiple matches occur, + commands are executed in the order they are specified in the muttrc (for + that type of hook). - In order to handle various MIME types that Mutt can not handle internally, Mutt - parses a series of external configuration files to find an external handler. - The default search string for these files is a colon delimited list set to + See pattern-hook for information on the exact format of pattern. - ${HOME}/.mailcap:/usr/local/share/mutt/mailcap:/etc/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap + Example: send-hook mutt "set mime_forward signature=''" - where $HOME is your home directory. + Another typical use for this command is to change the values of the + attribution, signature and locale variables in order to change the + language of the attributions and signatures based upon the recipients. - In particular, the metamail distribution will install a mailcap file, usually - as /usr/local/etc/mailcap, which contains some baseline entries. + Note: the send-hook's are only executed ONCE after getting the initial + list of recipients. Adding a recipient after replying or editing the + message will NOT cause any send-hook to be executed. Also note that my_hdr + commands which modify recipient headers, or the message's subject, don't + have any effect on the current message when executed from a send-hook. - _5_._3_._1 _T_h_e _B_a_s_i_c_s _o_f _t_h_e _m_a_i_l_c_a_p _f_i_l_e +22. Change settings before formatting a message - A mailcap file consists of a series of lines which are comments, blank, or def- - initions. + Usage: message-hook [!]pattern command - A comment line consists of a # character followed by anything you want. + This command can be used to execute arbitrary configuration commands + before viewing or formatting a message based upon information about the + message. command is executed if the pattern matches the message to be + displayed. When multiple matches occur, commands are executed in the order + they are specified in the muttrc. - A blank line is blank. + See pattern-hook for information on the exact format of pattern. - A definition line consists of a content type, a view command, and any number of - optional fields. Each field of a definition line is divided by a semicolon ';' - character. + Example: - The content type is specified in the MIME standard type/subtype method. For - example, text/plain, text/html, image/gif, etc. In addition, the mailcap for- - mat includes two formats for wildcards, one using the special '*' subtype, the - other is the implicit wild, where you only include the major type. For exam- - ple, image/*, or video, will match all image types and video types, respec- - tively. + message-hook ~A 'set pager=builtin' + message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject:.*\""' - The view command is a Unix command for viewing the type specified. There are - two different types of commands supported. The default is to send the body of - the MIME message to the command on stdin. You can change this behavior by using - %s as a parameter to your view command. This will cause Mutt to save the body - of the MIME message to a temporary file, and then call the view command with - the %s replaced by the name of the temporary file. In both cases, Mutt will - turn over the terminal to the view program until the program quits, at which - time Mutt will remove the temporary file if it exists. +23. Choosing the cryptographic key of the recipient - So, in the simplest form, you can send a text/plain message to the external - pager more on stdin: + Usage: crypt-hook pattern keyid - text/plain; more + When encrypting messages with PGP or OpenSSL, you may want to associate a + certain key with a given e-mail address automatically, either because the + recipient's public key can't be deduced from the destination address, or + because, for some reasons, you need to override the key Mutt-ng + wouldnormally use. The crypt-hook command provides a method by which you + can specify the ID of the public key to be used when encrypting messages + to a certain recipient. - The Mutt-ng E-Mail Client 56 + The meaning of "key id" is to be taken broadly in this context: You can + either put a numerical key ID here, an e-mail address, or even just a real + name. - Or, you could send the message as a file: +24. Adding key sequences to the keyboard buffer - text/plain; more %s + Usage: push string - Perhaps you would like to use lynx to interactively view a text/html message: + This command adds the named string to the keyboard buffer. The string may + contain control characters, key names and function names like the sequence + string in the macro command. You may use it to automatically run a + sequence of commands at startup, or when entering certain folders. - text/html; lynx %s +25. Executing functions - In this case, lynx does not support viewing a file from stdin, so you must use - the %s syntax. NNoottee:: _S_o_m_e _o_l_d_e_r _v_e_r_s_i_o_n_s _o_f _l_y_n_x _c_o_n_t_a_i_n _a _b_u_g _w_h_e_r_e _t_h_e_y _w_i_l_l - _c_h_e_c_k _t_h_e _m_a_i_l_c_a_p _f_i_l_e _f_o_r _a _v_i_e_w_e_r _f_o_r _t_e_x_t_/_h_t_m_l_. _T_h_e_y _w_i_l_l _f_i_n_d _t_h_e _l_i_n_e - _w_h_i_c_h _c_a_l_l_s _l_y_n_x_, _a_n_d _r_u_n _i_t_. _T_h_i_s _c_a_u_s_e_s _l_y_n_x _t_o _c_o_n_t_i_n_u_o_u_s_l_y _s_p_a_w_n _i_t_s_e_l_f _t_o - _v_i_e_w _t_h_e _o_b_j_e_c_t_. + Usage: exec function [ function ... ] - On the other hand, maybe you don't want to use lynx interactively, you just - want to have it convert the text/html to text/plain, then you can use: + This command can be used to execute any function. Functions are listed in + the functions. ``exec function'' is equivalent to ``push ''. - text/html; lynx -dump %s | more +26. Message Scoring - Perhaps you wish to use lynx to view text/html files, and a pager on all other - text formats, then you would use the following: + Usage: score pattern value Usage: unscore pattern [ pattern ... ] - text/html; lynx %s - text/*; more + In situations where you have to cope with a lot of emails, e.g. when you + read many different mailing lists, and take part in discussions, it is + always useful to have the important messages marked and the annoying + messages or the ones that you aren't interested in deleted. For this + purpose, mutt-ng features a mechanism called ``scoring''. - This is the simplest form of a mailcap file. + When you use scoring, every message has a base score of 0. You can then + use the score command to define patterns and a positive or negative value + associated with it. When a pattern matches a message, the message's score + will be raised or lowered by the amount of the value associated with the + pattern. - _5_._3_._2 _S_e_c_u_r_e _u_s_e _o_f _m_a_i_l_c_a_p + score "~f nion@muttng\.org" 50 + score "~f @sco\.com" -100 - The interpretation of shell meta-characters embedded in MIME parameters can - lead to security problems in general. Mutt tries to quote parameters in expan- - sion of %s syntaxes properly, and avoids risky characters by substituting them, - see the _m_a_i_l_c_a_p___s_a_n_i_t_i_z_e (section 6.3.120 , page 95) variable. + If the pattern matches, it is also possible to set the score value of the + current message to a certain value and then stop evaluation: - Although mutt's procedures to invoke programs with mailcap seem to be safe, - there are other applications parsing mailcap, maybe taking less care of it. - Therefore you should pay attention to the following rules: + score "~f santaclaus@northpole\.int" =666 - _K_e_e_p _t_h_e _%_-_e_x_p_a_n_d_o_s _a_w_a_y _f_r_o_m _s_h_e_l_l _q_u_o_t_i_n_g_. Don't quote them with single or - double quotes. Mutt does this for you, the right way, as should any other pro- - gram which interprets mailcap. Don't put them into backtick expansions. Be - highly careful with eval statements, and avoid them if possible at all. Trying - to fix broken behaviour with quotes introduces new leaks - there is no alterna- - tive to correct quoting in the first place. + What is important to note is that negative score values will be rounded up + to 0. - If you have to use the %-expandos' values in context where you need quoting or - backtick expansions, put that value into a shell variable and reference the - shell variable where necessary, as in the following example (using $charset - inside the backtick expansion is safe, since it is not itself subject to any - further expansion): + To make scoring actually useful, the score must be applied in some way. + That's what the score thresholds are for. Currently, there are three score + thresholds: - The Mutt-ng E-Mail Client 57 + o flag threshold: when a message has a score value equal or higher than + the flag threshold, it will be flagged. - text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \ - && test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1 + o read threshold: when a message has a score value equal or lower than + the read threshold, it will be marked as read. - _5_._3_._3 _A_d_v_a_n_c_e_d _m_a_i_l_c_a_p _U_s_a_g_e + o delete threshold: when a message has a score value equal or lower than + the delete threshold, it will be marked as deleted. + + These three thresholds can be set via the variables score-threshold-flag + ,score-threshold-read, score-threshold-delete and. By default, + score-threshold-read and score-threshold-delete are set to -1, which means + that in the default threshold configuration no message will ever get + marked as read or deleted. + + Scoring gets especially interesting when combined with the color command + and the ˜n pattern: + + color index black yellow "~n 10-" + color index red yellow "~n 100-" + + The rules above mark all messages with a score between 10 and 99 with + black and yellow, and messages with a score greater or equal 100 with red + and yellow. This might be unusual to you if you're used to e.g. slrn's + scoring mechanism, but it is more flexible, as it visually marks different + scores. + +27. Spam detection + + Usage: spam pattern format Usage: nospam pattern + + Mutt-ng has generalized support for external spam-scoring filters. By + defining your spam patterns with the spam and nospam commands, you can + limit, search, and sort your mail based on its spam attributes, as + determined by the external filter. You also can display the spam + attributes in your index display using the %H selector in the index-format + variable. (Tip: try %?H?[%H] ? to display spam tags only when they are + defined for a given message.) + + Your first step is to define your external filter's spam patterns using + the spam command. pattern should be a regular expression that matches a + header in a mail message. If any message in the mailbox matches this + regular expression, it will receive a ``spam tag'' or ``spam attribute'' + (unless it also matches a nospam pattern -- see below.) The appearance of + this attribute is entirely up to you, and is governed by the format + parameter. format can be any static text, but it also can include + back-references from the pattern expression. (A regular expression + ``back-reference'' refers to a sub-expression contained within + parentheses.) %1 is replaced with the first back-reference in the regex, + %2 with the second, etc. + + If you're using multiple spam filters, a message can have more than one + spam-related header. You can define spam patterns for each filter you use. + If a message matches two or more of these patterns, and the + $spam_separator variable is set to a string, then the message's spam tag + will consist of all the format strings joined together, with the value of + $spam_separator separating them. + + For example, suppose I use DCC, SpamAssassin, and PureMessage. I might + define these spam settings: + + spam "X-DCC-.*-Metrics:.*(....)=many" "90+/DCC-%1" + spam "X-Spam-Status: Yes" "90+/SA" + spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM" + set spam_separator=", " + + If I then received a message that DCC registered with ``many'' hits under + the ``Fuz2'' checksum, and that PureMessage registered with a 97% + probability of being spam, that message's spam tag would read90+/DCC-Fuz2, + 97/PM. (The four characters before ``=many'' in a DCC report indicate the + checksum used -- in this case, ``Fuz2''.) + + If the $spam_separator variable is unset, then each spam pattern match + supersedes the previous one. Instead of getting joined format strings, + you'll get only the last one to match. + + The spam tag is what will be displayed in the index when you use %H in the + $index_format variable. It's also the string that the ˜H pattern-matching + expression matches against for search and limit functions. And it's what + sorting by spam attribute will use as a sort key. + + That's a pretty complicated example, and most people's actual environments + will have only one spam filter. The simpler your configuration, the more + effective mutt can be, especially when it comes to sorting. + + Generally, when you sort by spam tag, mutt will sort lexically -- that is, + by ordering strings alphnumerically. However, if a spam tag begins with a + number, mutt will sort numerically first, and lexically only when two + numbers are equal in value. (This is like UNIX's sort -n.) A message with + no spam attributes at all -- that is, one that didn't match any of your + spam patterns -- is sorted at lowest priority. Numbers are sorted next, + beginning with 0 and ranging upward. Finally, non-numeric strings are + sorted, with ``a'' taking lowerpriority than ``z''. Clearly, in general, + sorting by spam tags is most effective when you can coerce your filter to + give you a raw number. But in case you can't, mutt can still do something + useful. + + The nospam command can be used to write exceptions to spam patterns. If a + header pattern matches something in a spam command, but you nonetheless do + not want it to receive a spam tag, you can list amore precise pattern + under a nospam command. + + If the pattern given to nospam is exactly the same as the pattern on an + existing spam list entry, the effect will be to remove the entry from the + spam list, instead of adding an exception. Likewise, if the pattern for a + spam command matches an entry on the nospam list, that nospam entry will + be removed. If the pattern for nospam is ``*'', all entries on both lists + will be removed. This might be the default action if you use spam and + nospam in conjunction with a folder-hook . + + You can have as many spam or nospam commands as you like. You can even do + your own primitive spam detection within mutt -- for example, if you + consider all mail from MAILER-DAEMON to be spam, you can use a spam + command like this: + + spam "^From: .*MAILER-DAEMON" "999" + +28. Setting variables + + Usage: set [no|inv]variable [=value] [ variable ... ] Usage: toggle + variable [variable ... ] Usage: unset variable [variable ... ] Usage: + reset variable [variable ... ] + + This command is used to set (and unset) variables .There are four basic + types of variables: boolean, number, string and quadoption. boolean + variables can be set (true) or unset (false). number variables can be + assigned a positive integer value. + + string variables consist of any number of printable characters. strings + must be enclosed in quotes if they contain spaces or tabs. You may also + use the ``C'' escape sequences \n and \t for newline and tab, + respectively. + + quadoption variables are used to control whether or not to be prompted for + certain actions, or to specify a default action. A value of yes will cause + the action to be carried out automatically as if you had answered yes to + the question. Similarly, a value of no will cause the the action to be + carried out as if you had answered ``no.'' A value of ask-yes will cause a + prompt with a default answer of ``yes'' and ask-no will provide a default + answer of ``no.'' - _5_._3_._3_._1 _O_p_t_i_o_n_a_l _F_i_e_l_d_s + Prefixing a variable with ``no'' will unset it. Example: set noaskbcc . - In addition to the required content-type and view command fields, you can add - semi-colon ';' separated fields to set flags and other options. Mutt recog- - nizes the following optional fields: + For boolean variables, you may optionally prefix the variable name with + inv to toggle the value (on or off). This is useful when writing macros. + Example: set invsmart_wrap. - copiousoutput - This flag tells Mutt that the command passes possibly large amounts - of text on stdout. This causes Mutt to invoke a pager (either the - internal pager or the external pager defined by the pager variable) - on the output of the view command. Without this flag, Mutt assumes - that the command is interactive. One could use this to replace the - pipe to more in the lynx -dump example in the Basic section: + The toggle command automatically prepends the inv prefix to all specified + variables. - text/html; lynx -dump %s ; copiousoutput + The unset command automatically prepends the no prefix to all specified + variables. - This will cause lynx to format the text/html output as text/plain - and Mutt will use your standard pager to display the results. + Using the enter-command function in the index menu, you can query the + value of a variable by prefixing the name of the variable with a question + mark: - needsterminal - Mutt uses this flag when viewing attachments with _a_u_t_o_v_i_e_w (section - 5.4 , page 60), in order to decide whether it should honor the - setting of the _$_w_a_i_t___k_e_y (section 6.3.325 , page 144) variable or - not. When an attachment is viewed using an interactive program, - and the corresponding mailcap entry has a _n_e_e_d_s_t_e_r_m_i_n_a_l flag, Mutt - will use _$_w_a_i_t___k_e_y (section 6.3.325 , page 144) and the exit sta- - tus of the program to decide if it will ask you to press a key - after the external program has exited. In all other situations it - will not prompt you for a key. + set ?allow_8bit - compose= - This flag specifies the command to use to create a new attachment - of a specific MIME type. Mutt supports this from the compose menu. + The question mark is actually only required for boolean and quadoption + variables. - composetyped= - This flag specifies the command to use to create a new attachment - of a specific MIME type. This command differs from the compose - command in that mutt will expect standard MIME headers on the data. - This can be used to specify parameters, filename, description, etc. - for a new attachment. Mutt supports this from the compose menu. + The reset command resets all given variables to the compile time defaults + (hopefully mentioned in this manual). If you use the command set and + prefix the variable with ``&'' this has the same behavior as the reset + command. - print= - This flag specifies the command to use to print a specific MIME - type. Mutt supports this from the attachment and compose menus. - - edit= - This flag specifies the command to use to edit a specific MIME - - The Mutt-ng E-Mail Client 58 - - type. Mutt supports this from the compose menu, and also uses it - to compose new attachments. Mutt will default to the defined edi- - tor for text attachments. - - nametemplate=