X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=doc%2Fmanual.sgml.head;h=c121d1bec729eb09a8b08a1f453c40c7d184fcda;hp=84f5ae94e56c2227265d453a37e1a8047b59cda2;hb=7e48409c3d6fb969706114b3c0962ffa0e112d37;hpb=e39e529e5df06cd4148de4614073b66a23be0b26 diff --git a/doc/manual.sgml.head b/doc/manual.sgml.head index 84f5ae9..c121d1b 100644 --- a/doc/manual.sgml.head +++ b/doc/manual.sgml.head @@ -1,2312 +1,6748 @@ - - -
- -The Mutt-ng E-Mail Client -<author>by Michael Elkins <htmlurl url="mailto:me@cs.hmc.edu" name="<me@cs.hmc.edu>"> and others. -<date>version @VERSION@ -<abstract> -``All mail clients suck. This one just sucks less.'' -me, circa 1995 -</abstract> - -<toc> - -<sect>Introduction -<p> -<bf/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. - -<p>This documentation additionally contains documentation to <bf/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. - - -<sect1>Mutt-ng Home Page -<p> -<htmlurl url="http://www.muttng.org/" -name="http://www.muttng.org"> - -<sect1>Mailing Lists -<p> - -<itemize> -<item><htmlurl url="https://lists.berlios.de/mailman/listinfo/mutt-ng-users" -name="mutt-ng-users@lists.berlios.de"> -- This is where the mutt-ng user support happens. -<item><htmlurl url="https://lists.berlios.de/mailman/listinfo/mutt-ng-devel" name="mutt-ng-devel@lists.berlios.de"> -- The development mailing list for mutt-ng -</itemize> - -<sect1>Software Distribution Sites -<p> -So far, there are no official releases of Mutt-ng, but you can download -daily snapshots from <htmlurl url="http://mutt-ng.berlios.de/snapshots/" name="http://mutt-ng.berlios.de/snapshots/"> -<!-- -<itemize> -<item><htmlurl url="ftp://ftp.mutt.org/mutt/" -name="ftp://ftp.mutt.org/mutt/"> -</itemize> -<p> -For a list of mirror sites, please refer to <htmlurl -url="http://www.mutt.org/download.html" -name="http://www.mutt.org/download.html">. ---> - - -<sect1>IRC -<p> -Visit channel <em/#muttng/ on <htmlurl -url="http://www.freenode.net/" name="irc.freenode.net -(www.freenode.net)"> to chat with other people interested in Mutt-ng. - - -<sect1>Weblog -<p> -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 -<htmlurl url="http://mutt-ng.supersized.org/" name="Mutt-ng development weblog">. - -<sect1>Copyright -<p> -Mutt is Copyright (C) 1996-2000 Michael R. Elkins -<me@cs.hmc.edu> and others - -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. - -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. - -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. - -<sect>Getting Started -<p> - -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 <htmlurl url="http://www.mutt.org/mutt/" -name="Mutt Page"> for more details. ---> - -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. - -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 <ref id="commandline" name="reference">. - -If you have used mutt in the past the easiest thing to have a proper -configuration file is to source ~/.muttrc in ~/.muttngrc. - -<sect1>Moving Around in Menus -<p> - -Information is presented in menus, very similar to ELM. Here is a table -showing the common keys used to navigate menus in Mutt-ng. - -<tscreen><verb> -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 -</verb></tscreen> - -<sect1>Editing Input Fields<label id="editing"> -<p> -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. - -<tscreen><verb> -^A or <Home> bol move to the start of the line -^B or <Left> backward-char move back one char -Esc B backward-word move back one word -^D or <Delete> delete-char delete the char under the cursor -^E or <End> eol move to the end of the line -^F or <Right> forward-char move forward one char -Esc F forward-word move forward one word -<Tab> complete complete filename or alias -^T complete-query complete address with query -^K kill-eol delete to the end of the line -ESC d kill-eow delete to the end of the word -^W kill-word kill the word in front of the cursor -^U kill-line delete entire line -^V quote-char quote the next typed key -<Up> history-up recall previous string from history -<Down> history-down recall next string from history -<BackSpace> backspace kill the char in front of the cursor -Esc u upcase-word convert word to upper case -Esc l downcase-word convert word to lower case -Esc c capitalize-word capitalize the word -^G n/a abort -<Return> n/a finish editing -</verb></tscreen> - -You can remap the <em/editor/ functions using the <ref id="bind" name="bind"> -command. For example, to make the <em/Delete/ key delete the character in -front of the cursor rather than under, you could use - -<tt/bind editor <delete> backspace/ - -<sect1>Reading Mail - The Index and Pager -<p> - -Similar to many other mail clients, there are two modes in which mail is -read in Mutt-ng. The first is the index of messages in the mailbox, which is -called the ``index'' in Mutt-ng. The second mode is the display of the -message contents. This is called the ``pager.'' - -The next few sections describe the functions provided in each of these -modes. - -<sect2>The Message Index -<p> - -<tscreen><verb> -c change to a different mailbox -ESC c change to a folder in read-only mode -C copy the current message to another mailbox -ESC C decode a message and copy it to a folder -ESC s decode a message and save it to a folder -D delete messages matching a pattern -d delete the current message -F mark as important -l show messages matching a pattern -N mark message as new -o change the current sort method -O reverse sort the mailbox -q save changes and exit -s save-message -T tag messages matching a pattern -t toggle the tag on a message -ESC t toggle tag on entire message thread -U undelete messages matching a pattern -u undelete-message -v view-attachments -x abort changes and exit -<Return> display-message -<Tab> jump to the next new message -@ show the author's full e-mail address -$ save changes to mailbox -/ search -ESC / search-reverse -^L clear and redraw the screen -^T untag messages matching a pattern -</verb></tscreen> - -<sect3>Status Flags -<p> - -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: - -<p> -<descrip> -<tag/D/ message is deleted (is marked for deletion) -<tag/d/ message have attachments marked for deletion -<tag/K/ contains a PGP public key -<tag/N/ message is new -<tag/O/ message is old -<tag/P/ message is PGP encrypted -<tag/r/ message has been replied to -<tag/S/ message is signed, and the signature is succesfully verified -<tag/s/ message is signed -<tag/!/ message is flagged -<tag/*/ message is tagged -</descrip> - -Some of the status flags can be turned on or off using -<itemize> -<item><bf/set-flag/ (default: w) -<item><bf/clear-flag/ (default: W) -</itemize> - -<p> -Furthermore, the following flags reflect who the message is addressed -to. They can be customized with the -<ref id="to_chars" name="$to_chars"> variable. - -<p> -<descrip> -<tag/+/ message is to you and you only -<tag/T/ message is to you, but also to or cc'ed to others -<tag/C/ message is cc'ed to you -<tag/F/ message is from you -<tag/L/ message is sent to a subscribed mailing list -</descrip> - -<sect2>The Pager -<p> - -By default, Mutt-ng uses its builtin pager to display the body of messages. -The pager is very similar to the Unix program <em/less/ though not nearly as -featureful. - -<tscreen><verb> -<Return> go down one line -<Space> display the next page (or next message if at the end of a message) -- go back to the previous page -n search for next match -S skip beyond quoted text -T toggle display of quoted text -? show key bindings -/ search for a regular expression (pattern) -ESC / search backwards for a regular expression -\ toggle search pattern coloring -^ jump to the top of the message -</verb></tscreen> - -In addition, many of the functions from the <em/index/ are available in -the pager, such as <em/delete-message/ or <em/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 for -bold and underline. These sequences are a series of either the letter, -backspace (^H), the letter again for bold or the letter, backspace, -``_'' for denoting underline. Mutt-ng will attempt to display these -in bold and underline respectively if your terminal supports them. If -not, you can use the bold and underline <ref id="color" name="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: - -<p> -<tscreen><verb> -ESC [ Ps;Ps;Ps;...;Ps m -where Ps = -0 All Attributes Off -1 Bold on -4 Underline on -5 Blink on -7 Reverse video on -3x Foreground color is x -4x Background color is x - -Colors are -0 black -1 red -2 green -3 yellow -4 blue -5 magenta -6 cyan -7 white -</verb></tscreen> - -Mutt-ng uses these attributes for handling text/enriched messages, and they -can also be used by an external <ref id="auto_view" name="autoview"> -script for highlighting purposes. <bf/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. - -<sect2>Threaded Mode<label id="threads"> -<p> -When the mailbox is <ref id="sort" name="sorted"> by <em/threads/, there are -a few additional functions available in the <em/index/ and <em/pager/ modes. - -<tscreen><verb> -^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 -</verb></tscreen> - -<bf/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 on -the screen. See %M in <ref id="index_format"name="$index_format">. -For example, you could use "%?M?(#%03M)&(%4l)?" in <ref -id="index_format"name="$index_format"> to optionally -display the number of hidden messages if the thread is collapsed. - -See also: <ref id="strict_threads" name="$strict_threads">. - -<sect2>Miscellaneous Functions -<p><bf/create-alias/<label id="create-alias"> (default: a)<newline> - -Creates a new alias based upon the current message (or prompts for a -new one). Once editing is complete, an <ref id="alias" name="alias"> -command is added to the file specified by the <ref id="alias_file" -name="$alias_file"> variable for future use. <bf/Note:/ -Specifying an <ref id="alias_file" name="$alias_file"> -does not add the aliases specified there-in, you must also <ref -id="source" name="source"> the file. - -<p><bf/check-traditional-pgp/<label id="check-traditional-pgp"> (default: ESC P)<newline> - -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 <ref id="edit-type" name="edit-type"> function's -effect. - - -<p><bf/display-toggle-weed/<label id="display-toggle-weed"> (default: h)<newline> - -Toggles the weeding of message header fields specified by <ref id="ignore" -name="ignore"> commands. - -<p><bf/edit/<label id="edit"> (default: e)<newline> - -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. - -<p><bf/edit-type/<label id="edit-type"><newline> -(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 -<ref id="attach_menu" name="attachment 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 <ref -id="compose_menu" name="compose menu">. There, it's used to -fine-tune the properties of attachments you are going to send. - -<p><bf/enter-command/<label id="enter-command"> (default: ``:'')<newline> - -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 <ref id="macro" name="macros"> to change settings on the -fly. - -<p><bf/extract-keys/<label id="extract-keys"> (default: ^K)<newline> - -This command extracts PGP public keys from the current or tagged -message(s) and adds them to your PGP public key ring. - -<p><bf/forget-passphrase/<label id="forget-passphrase"> (default: -^F)<newline> - -This command wipes the passphrase(s) from memory. It is useful, if -you misspelled the passphrase. - -<p><bf/list-reply/<label id="list-reply"> (default: L)<newline> - -Reply to the current or tagged message(s) by extracting any addresses which -match the regular expressions given by the <ref id="lists" name="lists or subscribe"> -commands, but also honor any <tt/Mail-Followup-To/ header(s) if the -<ref id="honor_followup_to" name="$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. - -<bf/pipe-message/<label id="pipe-message"> (default: |)<newline> - -Asks for an external Unix command and pipes the current or -tagged message(s) to it. The variables <ref id="pipe_decode" -name="$pipe_decode">, <ref id="pipe_split" -name="$pipe_split">, <ref id="pipe_sep" -name="$pipe_sep"> and <ref id="wait_key" -name="$wait_key"> control the exact behavior of this -function. - -<bf/resend-message/<label id="resend-message"> (default: ESC e)<newline> - -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 <ref id="weed" name="$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. - -<bf/shell-escape/<label id="shell-escape"> (default: !)<newline> - -Asks for an external Unix command and executes it. The <ref -id="wait_key" name="$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. - -<bf/toggle-quoted/<label id="toggle-quoted"> (default: T)<newline> - -The <em/pager/ uses the <ref id="quote_regexp" -name="$quote_regexp"> variable to detect quoted text when -displaying the body of the message. This function toggles the display -of the quoted material in the message. It is particularly useful when -are interested in just the response and there is a large amount of -quoted text in the way. - -<bf/skip-quoted/<label id="skip-quoted"> (default: S)<newline> - -This function will go to the next line of non-quoted text which come -after a line of quoted text in the internal pager. - -<sect1>Sending Mail -<p> - -The following bindings are available in the <em/index/ for sending -messages. - -<tscreen><verb> -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 -</verb></tscreen> - -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 <ref id="forwarding_mail" -name="``Forwarding and Bouncing Mail''">. - -Mutt-ng will then enter the <em/compose/ 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 <ref id="askcc" -name="$askcc">, <ref id="askbcc" name="$askbcc">, <ref -id="autoedit" name="$autoedit">, <ref id="bounce" -name="$bounce">, and <ref id="fast_reply" -name="$fast_reply"> for changing how Mutt-ng asks these -questions. - -Mutt-ng will then automatically start your <ref id="editor" -name="$editor"> on the message body. If the <ref id="edit_headers" -name="$edit_headers"> variable is set, the headers will be at -the top of the message in your editor. Any messages you are replying -to will be added in sort order to the message, with appropriate <ref -id="attribution" name="$attribution">, <ref id="indent_string" -name="$indent_string"> and <ref id="post_indent_string" -name="$post_indent_string">. When forwarding a -message, if the <ref id="mime_forward" name="$mime_forward"> -variable is unset, a copy of the forwarded message will be included. If -you have specified a <ref id="signature" name="$signature">, it -will be appended to the message. - -Once you have finished editing the body of your mail message, you are -returned to the <em/compose/ menu. The following options are available: - -<tscreen><verb> -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 -</verb></tscreen> - -<bf/Note:/ The attach-message function will prompt you for a folder to -attach messages from. You can now tag messages in that folder and they -will be attached to the message you are sending. Note that certain -operations like composing a new mail, replying, forwarding, etc. are -not permitted when you are in that folder. The %r in <ref -id="status_format" name="$status_format"> will change to -a 'A' to indicate that you are in attach-message mode. - -<sect2>Editing the message header -<p> -When editing the header of your outgoing message, there are a couple of -special features available. - -If you specify<newline> -<tt/Fcc:/ <em/filename/<newline> -Mutt-ng will pick up <em/filename/ -just as if you had used the <em/edit-fcc/ function in the <em/compose/ menu. - -You can also attach files to your message by specifying<newline> -<tt/Attach:/ <em/filename/ [ <em/description/ ]<newline> -where <em/filename/ is the file to attach and <em/description/ is an -optional string to use as the description of the attached file. - -When replying to messages, if you remove the <em/In-Reply-To:/ field from -the header field, Mutt-ng will not generate a <em/References:/ field, which -allows you to create a new message thread. - -Also see <ref id="edit_headers" name="edit_headers">. - -<sect2>Using Mutt-ng with PGP - -<p> -If you want to use PGP, you can specify - -<tt/Pgp:/ [ <tt/E/ | <tt/S/ | <tt/S/<em/<id>/ ] <newline> - -``E'' encrypts, ``S'' signs and -``S<id>'' signs with the given key, setting <ref -id="pgp_sign_as" name="$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 <tt/^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 <ref -id="pgp_entry_format" name="$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: -<tscreen><verb> -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. -</verb></tscreen> - -The capabilities field (%c) expands to a two-character sequence -representing a key's capabilities. The first character gives -the key's encryption capabilities: A minus sign (<bf/-/) means -that the key cannot be used for encryption. A dot (<bf/./) means that -it's marked as a signature key in one of the user IDs, but may -also be used for encryption. The letter <bf/e/ indicates that -this key can be used for encryption. - -The second character indicates the key's signing capabilities. Once -again, a ``<bf/-/'' implies ``not for signing'', ``<bf/./'' implies -that the key is marked as an encryption key in one of the user-ids, and -``<bf/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 (<bf/?/) indicates undefined validity, a minus -character (<bf/-/) marks an untrusted association, a space character -means a partially trusted association, and a plus character (<bf/+/) -indicates complete validity. - -<sect2>Sending anonymous messages via mixmaster. - -<p> -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. - -To use it, you'll have to obey certain restrictions. Most -important, you cannot use the <tt/Cc/ and <tt/Bcc/ headers. To tell -Mutt-ng to use mixmaster, you have to select a remailer chain, using -the mix function on the compose menu. - -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. - -You can navigate in the chain using the <tt/chain-prev/ and -<tt/chain-next/ functions, which are by default bound to the left -and right arrows and to the <tt/h/ and <tt/l/ keys (think vi -keyboard bindings). To insert a remailer at the current chain -position, use the <tt/insert/ function. To append a remailer behind -the current chain position, use <tt/select-entry/ or <tt/append/. -You can also delete entries from the chain, using the corresponding -function. Finally, to abandon your changes, leave the menu, or -<tt/accept/ them pressing (by default) the <tt/Return/ key. - -Note that different remailers do have different capabilities, -indicated in the %c entry of the remailer menu lines (see -<ref id="mix_entry_format" -name="$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. - -<sect1>Forwarding and Bouncing Mail<label id="forwarding_mail"> -<p> - -Bouncing and forwarding let you send an existing message to recipients -that you specify. Bouncing a message uses the <ref id="sendmail" -name="sendmail"> 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 comments). - -The following keys are bound by default: - -<tscreen><verb> -f forward forward message -b bounce bounce (remail) message -</verb></tscreen> - -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 <ref id="mime_forward" -name="$mime_forward"> variable. Decoding of attachments, -like in the pager, can be controlled by the <ref id="forward_decode" -name="$forward_decode"> and <ref id="mime_forward_decode" -name="$mime_forward_decode"> variables, -respectively. The desired forwarding format may depend on the content, -therefore <em/$mime_forward/ is a quadoption which, for -example, can be set to ``ask-no''. - -The inclusion of headers is controlled by the current setting of the -<ref id="weed" name="$weed"> variable, unless <ref -id="mime_forward" name="mime_forward"> is set. - -Editing the message to forward follows the same procedure as sending or -replying to a message does. - -<sect1>Postponing Mail<label id="postponing_mail"> -<p> - -At times it is desirable to delay sending a message that you have -already begun to compose. When the <em/postpone-message/ function is -used in the <em/compose/ menu, the body of your message and attachments -are stored in the mailbox specified by the <ref id="postponed" -name="$postponed"> variable. This means that you can recall the -message even if you exit Mutt-ng 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 <em/compose/ a new -message from the <em/index/ or <em/pager/ you will be prompted if postponed -messages exist. If multiple messages are currently postponed, the -<em/postponed/ menu will pop up and you can select which message you would -like to resume. - -<bf/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. - -See also the <ref id="postpone" name="$postpone"> quad-option. - -<sect1>Reading news via NNTP<label id="reading_news"> -<p> - -If compiled with ``--enable-nntp'' option, Mutt-ng can read news from -newsserver via NNTP. You can open a newsgroup with function -``change-newsgroup'' (default: i). Default newsserver can be obtained -from <em/NNTPSERVER/ environment variable. Like other news readers, -info about subscribed newsgroups is saved in file by <ref -id="nntp_newsrc" name="$nntp_newsrc"> variable. Article -headers are cached and can be loaded from file when -newsgroup entered instead loading from newsserver. - -<sect>Configuration -<p> - -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'' <ref -id="commandline" name="command line"> option is specified. This file is -typically <tt>/usr/local/share/muttng/Muttngrc</tt> or <tt>/etc/Muttngrc</tt>, -Mutt-ng users will find this file in <tt>/usr/local/share/muttng/Muttrc</tt> or -<tt>/etc/Muttngrc</tt>. Mutt will next look for a file named <tt>.muttrc</tt> -in your home directory, Mutt-ng will look for <tt>.muttngrc</tt>. If this file -does not exist and your home directory has a subdirectory named <tt/.mutt/, -mutt try to load a file named <tt>.muttng/muttngrc</tt>. - -<tt>.muttrc</tt> (or <tt>.muttngrc</tt> for Mutt-ng) is the file where you will -usually place your <ref id="commands" name="commands"> to configure Mutt-ng. - -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 <tt/Muttrc-0.88/ file in the system configuration -directory, and you are running version 0.88 of mutt, this file will be -sourced instead of the <tt/Muttngrc/ file. The same is true of the user -configuration file, if you have a file <tt/.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 <tt/.muttrc/ file. The version number is the -same which is visible using the ``-v'' <ref id="commandline" -name="command line"> switch or using the <tt/show-version/ key (default: -V) from the index menu. - -<sect1>Syntax of Initialization Files<label id="muttrc-syntax"> -<p> - -An initialization file consists of a series of <ref id="commands" -name="commands">. Each line of the file may contain one or more commands. -When multiple commands are used, they must be separated by a semicolon (;). -<tscreen><verb> -set realname='Mutt-ng user' ; ignore x- -</verb></tscreen> -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, - -<tscreen><verb> -my_hdr X-Disclaimer: Why are you listening to me? # This is a comment -</verb></tscreen> - -Single quotes (') and double quotes (&dquot;) 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 <bf/not/ for single quotes. - -\ quotes the next character, just as in shells such as bash and zsh. -For example, if want to put quotes ``&dquot;'' inside of a string, you can use -``\'' to force the next character to be a literal instead of interpreted -character. -<tscreen><verb> -set realname="Michael \"MuttDude\" Elkins" -</verb></tscreen> - -``\\'' means to insert a literal ``\'' into the line. -``\n'' and ``\r'' have their usual C meanings of linefeed and -carriage-return, respectively. - -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. - -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 ``#''. - -<tscreen><verb> -# folder-hook . \ - set realname="Michael \"MuttDude\" Elkins" -</verb></tscreen> - -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! - -Abstract example: - -<tscreen><verb> -line1\ -line2a # line2b\ -line3\ -line4 -line5 -</verb></tscreen> - -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. - -It is also possible to substitute the output of a Unix command in an -initialization file. This is accomplished by enclosing the command in -backquotes (``). For example, -<tscreen><verb> -my_hdr X-Operating-System: `uname -a` -</verb></tscreen> -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. - -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, -<tscreen><verb> -set record=+sent_on_$HOSTNAME -</verb></tscreen> - -The commands understood by mutt are explained in the next paragraphs. -For a complete list, see the <ref id="commands" name="command reference">. - -<sect1>Defining/Using aliases<label id="alias"> -<p> - -Usage: <tt/alias/ <em/key/ <em/address/ [ , <em/address/, ... ] - -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. - -<bf/Note:/ if you want to create an alias for a group (by specifying more than -one address), you <bf/must/ separate the addresses with a comma (``,''). - -To remove an alias or aliases (``*'' means all aliases): - -<tt/unalias/ [ * | <em/key/ <em/.../ ] - -<tscreen><verb> -alias muttdude me@cs.hmc.edu (Michael Elkins) -alias theguys manny, moe, jack -</verb></tscreen> - -Unlike other mailers, Mutt-ng doesn't require aliases to be defined -in a special file. The <tt/alias/ command can appear anywhere in -a configuration file, as long as this file is <ref id="source" -name="sourced">. Consequently, you can have multiple alias files, or -you can have all aliases defined in your muttrc. - -On the other hand, the <ref id="create-alias" name="create-alias"> -function can use only one file, the one pointed to by the <ref -id="alias_file" name="$alias_file"> variable (which is -<tt>˜/.muttrc</tt> 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 <ref -id="source" name="source"> this file too. - -For example: - -<tscreen><verb> -source /usr/local/share/Mutt-ng.aliases -source ~/.mail_aliases -set alias_file=~/.mail_aliases -</verb></tscreen> - -To use aliases, you merely use the alias at any place in mutt where mutt -prompts for addresses, such as the <em/To:/ or <em/Cc:/ prompt. You can -also enter aliases in your editor at the appropriate headers if you have the -<ref id="edit_headers" name="$edit_headers"> variable set. - -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. - -In the alias menu, you can select as many aliases as you want with the -<em/select-entry/ key (default: RET), and use the <em/exit/ key -(default: q) to return to the address prompt. - -<sect1>Changing the default key bindings<label id="bind"> -<p> -Usage: <tt/bind/ <em/map/ <em/key/ <em/function/ - -This command allows you to change the default key bindings (operation -invoked when pressing a key). - -<em/map/ specifies in which menu the binding belongs. Multiple maps may -be specified by separating them with commas (no additional whitespace is -allowed). The currently defined maps are: - -<label id="maps"> -<descrip> -<tag/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-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. -<tag/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). -<tag/attach/ -The attachment menu is used to access the attachments on received messages. -<tag/browser/ -The browser is used for both browsing the local directory structure, and for -listing all of your incoming mailboxes. -<tag/editor/ -The editor is the line-based editor the user enters text data. -<tag/index/ -The index is the list of messages contained in a mailbox. -<tag/compose/ -The compose menu is the screen used when sending a new message. -<tag/pager/ -The pager is the mode used to display message/attachment data, and help -listings. -<tag/pgp/ -The pgp menu is used to select the OpenPGP keys used for encrypting outgoing -messages. -<tag/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. -</descrip> - -<em/key/ is the key (or key sequence) you wish to bind. To specify a -control character, use the sequence <em/\Cx/, where <em/x/ is the -letter of the control character (for example, to specify control-A use -``\Ca''). Note that the case of <em/x/ as well as <em/\C/ is -ignored, so that <em/\CA/, <em/\Ca/, <em/\cA/ and <em/\ca/ are all -equivalent. An alternative form is to specify the key as a three digit -octal number prefixed with a ``\'' (for example <em/\177/ is -equivalent to <em/\c?/). - -In addition, <em/key/ may consist of: - -<tscreen><verb> -\t tab -<tab> tab -\r carriage return -\n newline -\e escape -<esc> escape -<up> up arrow -<down> down arrow -<left> left arrow -<right> right arrow -<pageup> Page Up -<pagedown> Page Down -<backspace> Backspace -<delete> Delete -<insert> Insert -<enter> Enter -<return> Return -<home> Home -<end> End -<space> Space bar -<f1> function key 1 -<f10> function key 10 -</verb></tscreen> - -<em/key/ does not need to be enclosed in quotes unless it contains a -space (`` ''). - -<em/function/ specifies which action to take when <em/key/ is pressed. -For a complete list of functions, see the <ref id="functions" -name="reference">. The special function <tt/noop/ unbinds the specified key -sequence. - -<sect1>Defining aliases for character sets <label id="charset-hook"> -<p> -Usage: <tt/charset-hook/ <em/alias/ <em/charset/<newline> -Usage: <tt/iconv-hook/ <em/charset/ <em/local-charset/ - -The <tt/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. - -The <tt/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. - - -<sect1>Setting variables based upon mailbox<label id="folder-hook"> -<p> -Usage: <tt/folder-hook/ [!]<em/regexp/ <em/command/ - -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. <em/regexp/ is a regular expression specifying -in which mailboxes to execute <em/command/ before loading. If a mailbox -matches multiple folder-hook's, they are executed in the order given in the -muttrc. - -<bf/Note:/ if you use the ``!'' shortcut for <ref id="spoolfile" -name="$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 <em/not/ operator for the expression. - -Note that the settings are <em/not/ restored when you leave the mailbox. -For example, a command action to perform is to change the sorting method -based upon the mailbox being read: - -<tscreen><verb> -folder-hook mutt set sort=threads -</verb></tscreen> - -However, the sorting method is not restored to its previous value when -reading a different mailbox. To specify a <em/default/ command, use the -pattern ``.'': - -<p> -<tscreen><verb> -folder-hook . set sort=date-sent -</verb></tscreen> - -<sect1>Keyboard macros<label id="macro"> -<p> -Usage: <tt/macro/ <em/menu/ <em/key/ <em/sequence/ [ <em/description/ ] - -Macros are useful when you would like a single key to perform a series of -actions. When you press <em/key/ in menu <em/menu/, Mutt-ng will behave as if -you had typed <em/sequence/. So if you have a common sequence of commands -you type, you can create a macro to execute those commands with a single -key. - -<em/menu/ is the <ref id="maps" name="map"> which the macro will be bound. -Multiple maps may be specified by separating multiple menu arguments by -commas. Whitespace may not be used in between the menu arguments and the -commas separating them. - -<em/key/ and <em/sequence/ are expanded by the same rules as the <ref -id="bind" name="key bindings">. There are some additions however. The -first is that control characters in <em/sequence/ can also be specified -as <em/ˆx/. In order to get a caret (`ˆ'') you need to use -<em/ˆˆ/. Secondly, to specify a certain key such as <em/up/ -or to invoke a function directly, you can use the format -<em/<key name>/ and <em/<function name>/. For a listing of key -names see the section on <ref id="bind" name="key bindings">. Functions -are listed in the <ref id="functions" name="function reference">. - -The advantage with using function names directly is that the macros will -work regardless of the current key bindings, so they are not dependent on -the user having particular key definitions. This makes them more robust -and portable, and also facilitates defining of macros in files used by more -than one user (eg. the system Muttngrc). - -Optionally you can specify a descriptive text after <em/sequence/, -which is shown in the help screens. - -<bf/Note:/ Macro definitions (if any) listed in the help screen(s), are -silently truncated at the screen width, and are not wrapped. - -<sect1>Using color and mono video attributes<label id="color"> -<p> -Usage: <tt/color/ <em/object/ <em/foreground/ <em/background/ [ <em/regexp/ ]<newline> -Usage: <tt/color/ index <em/foreground/ <em/background/ <em/pattern/<newline> -Usage: <tt/uncolor/ index <em/pattern/ [ <em/pattern/ ... ]<newline> - -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 <bf/and/ a background color (it is not -possible to only specify one or the other). - -<em/object/ can be one of: - -<itemize> -<item>attachment -<item>body (match <em/regexp/ in the body of messages) -<item>bold (highlighting bold patterns in the body of messages) -<item>error (error messages printed by Mutt-ng) -<item>header (match <em/regexp/ in the message header) -<item>hdrdefault (default color of the message header in the pager) -<item>index (match <em/pattern/ in the message index) -<item>indicator (arrow or bar used to indicate the current item in a menu) -<item>markers (the ``+'' markers at the beginning of wrapped lines in the pager) -<item>message (informational messages) -<item>normal -<item>quoted (text matching <ref id="quote_regexp" -name="$quote_regexp"> in the body of a message) -<item>quoted1, quoted2, ..., quoted<bf/N/ (higher levels of quoting) -<item>search (highlighting of words in the pager) -<item>signature -<item>status (mode lines used to display info about the mailbox or message) -<item>tilde (the ``˜'' used to pad blank lines in the pager) -<item>tree (thread tree drawn in the message index and attachment menu) -<item>underline (highlighting underlined patterns in the body of messages) -</itemize> - -<em/foreground/ and <em/background/ can be one of the following: - -<itemize> -<item>white -<item>black -<item>green -<item>magenta -<item>blue -<item>cyan -<item>yellow -<item>red -<item>default -<item>color<em/x/ -</itemize> - -<em/foreground/ can optionally be prefixed with the keyword <tt/bright/ to make -the foreground color boldfaced (e.g., <tt/brightred/). - -If your terminal supports it, the special keyword <em/default/ can be -used as a transparent color. The value <em/brightdefault/ is also valid. -If Mutt-ng is linked against the <em/S-Lang/ library, you also need to set -the <em/COLORFGBG/ environment variable to the default colors of your -terminal for this to work; for example (for Bourne-like shells): - -<tscreen><verb> -set COLORFGBG="green;black" -export COLORFGBG -</verb></tscreen> - -<bf/Note:/ The <em/S-Lang/ library requires you to use the <em/lightgray/ -and <em/brown/ keywords instead of <em/white/ and <em/yellow/ when -setting this variable. - -<bf/Note:/ The uncolor command can be applied to the index object only. It -removes entries from the list. You <bf/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. - -Mutt-ng also recognizes the keywords <em/color0/, <em/color1/, …, -<em/color/<bf/N-1/ (<bf/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 <em/color2/ -for your xterm), since color names may then lose their normal meaning. - -If your terminal does not support color, it is still possible change the video -attributes through the use of the ``mono'' command: - -Usage: <tt/mono/ <em/<object> <attribute>/ [ <em/regexp/ ]<newline> -Usage: <tt/mono/ index <em/attribute/ <em/pattern/<newline> -Usage: <tt/unmono/ index <em/pattern/ [ <em/pattern/ ... ]<newline> - -where <em/attribute/ is one of the following: - -<itemize> -<item>none -<item>bold -<item>underline -<item>reverse -<item>standout -</itemize> - -<sect1>Ignoring (weeding) unwanted message headers<label id="ignore"> -<p> -Usage: <tt/[un]ignore/ <em/pattern/ [ <em/pattern/ ... ] - -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. - -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. - -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''. - -``unignore *'' will remove all tokens from the ignore list. - -For example: -<tscreen><verb> -# 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: -</verb></tscreen> - -<sect1>Alternative addresses<label id="alternates"> -<p> -Usage: <tt/[un]alternates/ <em/regexp/ [ <em/regexp/ ... ]<newline> - -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 <ref -id="reply_to" name="$reply_to">.) - -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 <tt/alternates/ command: It takes a list of regular -expressions, each of which can identify an address under which you -receive e-mail. - -The <tt/unalternates/ command can be used to write exceptions to -<tt/alternates/ patterns. If an address matches something in an -<tt/alternates/ command, but you nonetheless do not think it is -from you, you can list a more precise pattern under an <tt/unalternates/ -command. - -To remove a regular expression from the <tt/alternates/ list, use the -<tt/unalternates/ command with exactly the same <em/regexp/. -Likewise, if the <em/regexp/ for a <tt/alternates/ command matches -an entry on the <tt/unalternates/ list, that <tt/unalternates/ -entry will be removed. If the <em/regexp/ for <tt/unalternates/ -is ``*'', <em/all entries/ on <tt/alternates/ will be removed. - -<sect1>Mailing lists<label id="lists"> -<p> -Usage: <tt/[un]lists/ <em/regexp/ [ <em/regexp/ ... ]<newline> -Usage: <tt/[un]subscribe/ <em/regexp/ [ <em/regexp/ ... ] - -Mutt-ng has a few nice features for <ref id="using_lists" name="handling -mailing 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 <ref -id="list-reply" name="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 <ref id="followup_to" -name="$followup_to"> configuration variable. - -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''. - -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. - -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 <em/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 -<em/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. - -The ``unlists'' command is used to remove a token from the list of -known and subscribed mailing-lists. Use ``unlists *'' to remove all -tokens. - -To remove a mailing list from the list of subscribed mailing lists, -but keep it on the list of known mailing lists, use ``unsubscribe''. - -<sect1>Using Multiple spool mailboxes<label id="mbox-hook"> -<p> -Usage: <tt/mbox-hook/ [!]<em/pattern/ <em/mailbox/ - -This command is used to move read messages from a specified mailbox to a -different mailbox automatically when you quit or change folders. -<em/pattern/ is a regular expression specifying the mailbox to treat as a -``spool'' mailbox and <em/mailbox/ specifies where mail should be saved when -read. - -Unlike some of the other <em/hook/ commands, only the <em/first/ matching -pattern is used (it is not possible to save read mail in more than a single -mailbox). - -<sect1>Defining mailboxes which receive mail<label id="mailboxes"> -<p> -Usage: <tt/[un]mailboxes/ [!]<em/filename/ [ <em/filename/ ... ] - -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. -<p> -When changing folders, pressing <em/space/ will cycle -through folders with new mail. -<p> -Pressing TAB in the directory browser will bring up a menu showing the files -specified by the <tt/mailboxes/ command, and indicate which contain new -messages. Mutt-ng will automatically enter this mode when invoked from the -command line with the <tt/-y/ option. - -The ``unmailboxes'' command is used to remove a token from the list -of folders which receive mail. Use ``unmailboxes *'' to remove all -tokens. - -<p> -<bf/Note:/ new mail is detected by comparing the last modification time to -the last access time. Utilities like <tt/biff/ or <tt/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. -<p> - -<bf/Note:/ the filenames in the <tt/mailboxes/ command are resolved when -the command is executed, so if these names contain <ref id="shortcuts" -name="shortcut characters"> (such as ``='' and ``!''), any variable -definition that affect these characters (like <ref id="folder" -name="$folder"> and <ref id="spoolfile" name="$spoolfile">) -should be executed before the <tt/mailboxes/ command. - -<sect1>User defined headers<label id="my_hdr"> -<p> -Usage:<newline> -<tt/my_hdr/ <em/string/<newline> -<tt/unmy_hdr/ <em/field/ [ <em/field/ ... ] - -The ``my_hdr'' command allows you to create your own header -fields which will be added to every message you send. - -For example, if you would like to add an ``Organization:'' header field to -all of your outgoing messages, you can put the command - -<quote> -my_hdr Organization: A Really Big Company, Anytown, USA -</quote> - -in your <tt/.muttrc/. - -<bf/Note:/ space characters are <em/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. - -If you would like to add a header field to a single message, you should -either set the <ref id="edit_headers" name="edit_headers"> variable, -or use the <em/edit-headers/ function (default: ``E'') in the send-menu so -that you can edit the header of your message along with the body. - -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: - -<quote> -unmy_hdr to cc -</quote> - -<sect1>Defining the order of headers when viewing messages<label id="hdr_order"> -<p> -Usage: <tt/hdr_order/ <em/header1/ <em/header2/ <em/header3/ - -With this command, you can specify an order in which mutt will attempt -to present headers to you when viewing messages. - -``unhdr_order *'' will clear all previous headers from the order list, -thus removing the header order effects set by the system-wide startup -file. - -<tscreen><verb> -hdr_order From Date: From: To: Cc: Subject: -</verb></tscreen> - -<sect1>Specify default save filename<label id="save-hook"> -<p> -Usage: <tt/save-hook/ [!]<em/pattern/ <em/filename/ - -This command is used to override the default filename used when saving -messages. <em/filename/ will be used as the default filename if the message is -<em/From:/ an address matching <em/regexp/ or if you are the author and the -message is addressed <em/to:/ something matching <em/regexp/. - -See <ref id="pattern_hook" name="Message Matching in Hooks"> for information on the exact format of <em/pattern/. - -Examples: - -<tscreen><verb> -save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins -save-hook aol\\.com$ +spam -</verb></tscreen> - -Also see the <ref id="fcc-save-hook" name="fcc-save-hook"> command. - -<sect1>Specify default Fcc: mailbox when composing<label id="fcc-hook"> -<p> -Usage: <tt/fcc-hook/ [!]<em/pattern/ <em/mailbox/ - -This command is used to save outgoing mail in a mailbox other than -<ref id="record" name="$record">. Mutt-ng searches the initial list of -message recipients for the first matching <em/regexp/ and uses <em/mailbox/ -as the default Fcc: mailbox. If no match is found the message will be saved -to <ref id="record" name="$record"> mailbox. - -See <ref id="pattern_hook" name="Message Matching in Hooks"> for information on the exact format of <em/pattern/. - -Example: <tt/fcc-hook [@.]aol\\.com$ +spammers/ - -The above will save a copy of all messages going to the aol.com domain to -the `+spammers' mailbox by default. Also see the <ref id="fcc-save-hook" -name="fcc-save-hook"> command. - -<sect1>Specify default save filename and default Fcc: mailbox at once<label -id="fcc-save-hook"> -<p> -Usage: <tt/fcc-save-hook/ [!]<em/pattern/ <em/mailbox/ - -This command is a shortcut, equivalent to doing both a <ref id="fcc-hook" name="fcc-hook"> -and a <ref id="save-hook" name="save-hook"> with its arguments. - -<sect1>Change settings based upon message recipients<label id="send-hook"><label id="reply-hook"><label id="send2-hook"> -<p> -Usage: <tt/reply-hook/ [!]<em/pattern/ <em/command/<newline> -Usage: <tt/send-hook/ [!]<em/pattern/ <em/command/<newline> -Usage: <tt/send2-hook/ [!]<em/pattern/ <em/command/ - -These commands can be used to execute arbitrary configuration commands based -upon recipients of the message. <em/pattern/ is a regular expression -matching the desired address. <em/command/ is executed when <em/regexp/ -matches recipients of the message. - -<tt/reply-hook/ is matched against the message you are <em/replying/ -<bf/to/, instead of the message you are <em/sending/. <tt/send-hook/ is -matched against all messages, both <em/new/ and <em/replies/. <bf/Note:/ -<tt/reply-hook/s are matched <bf/before/ the <tt/send-hook/, <bf/regardless/ -of the order specified in the users's configuration file. - -<tt/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. <tt/send2-hook/ is executed after <tt/send-hook/, and -can, e.g., be used to set parameters such as the <ref id="sendmail" -name="$sendmail"> variable depending on the message's sender -address. - -For each type of <tt/send-hook/ or <tt/reply-hook/, when multiple matches -occur, commands are executed in the order they are specified in the muttrc -(for that type of hook). - -See <ref id="pattern_hook" name="Message Matching in Hooks"> for information on the exact format of <em/pattern/. - -Example: <tt/send-hook mutt &dquot;set mime_forward signature=''&dquot;/ - -Another typical use for this command is to change the values of the -<ref id="attribution" name="$attribution">, <ref id="signature" -name="$signature"> and <ref id="locale" name="$locale"> -variables in order to change the language of the attributions and -signatures based upon the recipients. - -<bf/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. - -<sect1>Change settings before formatting a message<label id="message-hook"> -<p> -Usage: <tt/message-hook/ [!]<em/pattern/ <em/command/ - -This command can be used to execute arbitrary configuration commands -before viewing or formatting a message based upon information about the message. -<em/command/ is executed if the <em/pattern/ matches the message to be -displayed. When multiple matches occur, commands are executed in the order -they are specified in the muttrc. - -See <ref id="pattern_hook" name="Message Matching in Hooks"> for -information on the exact format of <em/pattern/. - -Example: -<tscreen><verb> -message-hook ~A 'set pager=builtin' -message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject: .*\""' -</verb></tscreen> - -<sect1>Choosing the cryptographic key of the recipient<label id="crypt-hook"> -<p> -Usage: <tt/crypt-hook/ <em/pattern/ <em/keyid/ - -When encrypting messages with PGP or OpenSSL, you may want to associate a certain -key with a given e-mail address automatically, either because the -recipient's public key can't be deduced from the destination address, -or because, for some reasons, you need to override the key Mutt-ng would -normally use. The crypt-hook command provides a method by which you can -specify the ID of the public key to be used when encrypting messages to -a certain recipient. - -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. - -<sect1>Adding key sequences to the keyboard buffer<label id="push"> -<p> -Usage: <tt/push/ <em/string/ - -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 <ref id="macro" name="macro"> command. You may use it to -automatically run a sequence of commands at startup, or when entering -certain folders. - -<sect1>Executing functions<label id="exec"> -<p> -Usage: <tt/exec/ <em/function/ [ <em/function/ ... ] - -This command can be used to execute any function. Functions are -listed in the <ref id="functions" name="function reference">. -``exec function'' is equivalent to ``push <function>''. - -<sect1>Message Scoring<label id="score-command"> -<p> -Usage: <tt/score/ <em/pattern/ <em/value/<newline> -Usage: <tt/unscore/ <em/pattern/ [ <em/pattern/ ... ] - -The <tt/score/ commands adds <em/value/ to a message's score if <em/pattern/ -matches it. <em/pattern/ is a string in the format described in the <ref -id="patterns" name="patterns"> section (note: For efficiency reasons, patterns -which scan information not available in the index, such as <tt>˜b</tt>, -<tt>˜B</tt> or <tt>˜h</tt>, may not be used). <em/value/ is a -positive or negative integer. A message's final score is the sum total of all -matching <tt/score/ entries. However, you may optionally prefix <em/value/ 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 <tt/unscore/ command removes score entries from the list. You <bf/must/ -specify the same pattern specified in the <tt/score/ command for it to be -removed. The pattern ``*'' is a special token which means to clear the list -of all score entries. - -<sect1>Spam detection<label id="spam"> -<p> -Usage: <tt/spam/ <em/pattern/ <em/format/<newline> -Usage: <tt/nospam/ <em/pattern/ - -Mutt-ng has generalized support for external spam-scoring filters. -By defining your spam patterns with the <tt/spam/ and <tt/nospam/ -commands, you can <em/limit/, <em/search/, and <em/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 <tt/%H/ selector in the <ref id="index_format" -name="$index_format"> variable. (Tip: try <tt/%?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 <tt/spam/ command. <em/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 <tt/nospam/ pattern -- see -below.) The appearance of this attribute is entirely up to you, and is -governed by the <em/format/ parameter. <em/format/ can be any static -text, but it also can include back-references from the <em/pattern/ -expression. (A regular expression ``back-reference'' refers to a -sub-expression contained within parentheses.) <tt/%1/ is replaced with -the first back-reference in the regex, <tt/%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 <tt/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 <em/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: -<tscreen><verb> -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=", " -</verb></tscreen> - -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 -<tt>90+/DCC-Fuz2, 97/PM</tt>. (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 <em/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 -<tt/%H/ in the <tt/$index_format/ variable. It's also the -string that the <tt/~H/ pattern-matching expression matches against for -<em/search/ and <em/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 <em/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 -<tt/sort -n/.) A message with no spam attributes at all -- that is, one -that didn't match <em/any/ of your <tt/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. - -The <tt/nospam/ command can be used to write exceptions to <tt/spam/ -patterns. If a header pattern matches something in a <tt/spam/ command, -but you nonetheless do not want it to receive a spam tag, you can list a -more precise pattern under a <tt/nospam/ command. - -If the <em/pattern/ given to <tt/nospam/ is exactly the same as the -<em/pattern/ on an existing <tt/spam/ list entry, the effect will be to -remove the entry from the spam list, instead of adding an exception. -Likewise, if the <em/pattern/ for a <tt/spam/ command matches an entry -on the <tt/nospam/ list, that <tt/nospam/ entry will be removed. If the -<em/pattern/ for <tt/nospam/ is ``*'', <em/all entries on both lists/ -will be removed. This might be the default action if you use <tt/spam/ -and <tt/nospam/ in conjunction with a <tt/folder-hook/. - -You can have as many <tt/spam/ or <tt/nospam/ commands as you like. -You can even do your own primitive spam detection within mutt -- for -example, if you consider all mail from <tt/MAILER-DAEMON/ to be spam, -you can use a <tt/spam/ command like this: - -<tscreen><verb> -spam "^From: .*MAILER-DAEMON" "999" -</verb></tscreen> - - -<sect1>Setting variables<label id="set"> -<p> -Usage: <tt/set/ [no|inv]<em/variable/[=<em/value/] [ <em/variable/ ... ]<newline> -Usage: <tt/toggle/ <em/variable/ [<em/variable/ ... ]<newline> -Usage: <tt/unset/ <em/variable/ [<em/variable/ ... ]<newline> -Usage: <tt/reset/ <em/variable/ [<em/variable/ ... ] - -This command is used to set (and unset) <ref id="variables" -name="configuration variables">. There are four basic types of variables: -boolean, number, string and quadoption. <em/boolean/ variables can be -<em/set/ (true) or <em/unset/ (false). <em/number/ variables can be -assigned a positive integer value. - -<em/string/ variables consist of any number of printable characters. -<em/strings/ must be enclosed in quotes if they contain spaces or tabs. You -may also use the ``C'' escape sequences <bf/\n/ and <bf/\t/ for -newline and tab, respectively. - -<em/quadoption/ variables are used to control whether or not to be prompted -for certain actions, or to specify a default action. A value of <em/yes/ -will cause the action to be carried out automatically as if you had answered -yes to the question. Similarly, a value of <em/no/ will cause the the -action to be carried out as if you had answered ``no.'' A value of -<em/ask-yes/ will cause a prompt with a default answer of ``yes'' and -<em/ask-no/ will provide a default answer of ``no.'' - -Prefixing a variable with ``no'' will unset it. Example: <tt/set noaskbcc/. - -For <em/boolean/ variables, you may optionally prefix the variable name with -<tt/inv/ to toggle the value (on or off). This is useful when writing -macros. Example: <tt/set invsmart_wrap/. - -The <tt/toggle/ command automatically prepends the <tt/inv/ prefix to all -specified variables. - -The <tt/unset/ command automatically prepends the <tt/no/ prefix to all -specified variables. - -Using the enter-command function in the <em/index/ menu, you can query the -value of a variable by prefixing the name of the variable with a question -mark: - -<tscreen><verb> -set ?allow_8bit -</verb></tscreen> - -The question mark is actually only required for boolean and quadoption -variables. - -The <tt/reset/ command resets all given variables to the compile time -defaults (hopefully mentioned in this manual). If you use the command -<tt/set/ and prefix the variable with ``&'' this has the same -behavior as the reset command. - -With the <tt/reset/ command there exists the special variable ``all'', -which allows you to reset all variables to their system defaults. - -<sect1>Reading initialization commands from another file<label id="source"> -<p> -Usage: <tt/source/ <em/filename/ [ <em/filename/ ... ] - -This command allows the inclusion of initialization commands -from other files. For example, I place all of my aliases in -<tt>˜/.mail_aliases</tt> so that I can make my -<tt>˜/.muttrc</tt> readable and keep my aliases private. - -If the filename begins with a tilde (``˜''), it will be expanded to the -path of your home directory. - -If the filename ends with a vertical bar (|), then <em/filename/ is -considered to be an executable program from which to read input (eg. -<tt>source ~/bin/myscript|</tt>). - -<sect1>Configuring features conditionally<label id="ifdef"> -<p> -Usage: <tt/ifdef/ <em/item/ <em/command/<newline> -Usage: <tt/ifndef/ <em/item/ <em/command/ - -<p> -These commands allow testing for a variable, function or certain feature -being available or not respectively, before actually executing the -command given. - -<p> -<tt/ifdef/ (short for ``if defined'') only executes the command upon -availability while <tt/ifndef/ (short for ``if not defined'') does if -not. The <em/command/ may be any valid fraction of a configuration file. - -<p> -All names of variables, functions and menus may be tested. Additionally, the -following compile-features may be tested when prefixed with -'<tt/feature_/': -<tt/ncurses/, <tt/slang/, <tt/iconv/, <tt/idn/, <tt/dotlock/, -<tt/standalone/, <tt/pop/, <tt/nntp/, <tt/imap/, <tt/ssl/, <tt/gnutls/, -<tt/sasl/, <tt/sasl2/, <tt/libesmtp/, <tt/compressed/, <tt/color/, -<tt/classic_pgp/, <tt/classic_smime/, <tt/gpgme/, <tt/header_cache/, -<tt/gdbm/, <tt/qdbm/ and <tt/db4/. - -<p> -Examples follow. - -<p> -To only source a file with IMAP related settings if IMAP support is -compiled in, use: -<tscreen><verb> -ifdef feature_imap 'source ~/.mutt-ng/imap_setup' -# or -# ifdef imap_user 'source ~/.mutt-ng/imap_setup' -# or -# ... -</verb></tscreen> - -<p> -To exit mutt-ng directly if no NNTP support is compiled in: -<tscreen><verb> -ifndef feature_nntp 'push q' -# or -# ifndef newsrc 'push q' -# or -# ... -</verb></tscreen> - -<p> -To only set the <ref id="imap_mail_check" -name="$imap_mail_check"> variable if -the system's mutt-ng is aware of it, use: -<tscreen><verb> -ifdef imap_mail_check 'set imap_mail_check=500' -</verb></tscreen> - -<sect1>Removing hooks<label id="unhook"> -<p> -Usage: <tt/unhook/ [ * | <em/hook-type/ ] - -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 <tt/unhook send-hook/. - -<sect>Advanced Usage - -<sect1>Regular Expressions<label id="regexp"> -<p> -All string patterns in Mutt-ng including those in more complex -<ref id="patterns" name="patterns"> 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. - -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: ``\\''. - -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. - -Note that the regular expression can be enclosed/delimited by either &dquot; -or ' which is useful if the regular expression includes a white-space -character. See <ref id="muttrc-syntax" name="Syntax of Initialization Files"> -for more information on &dquot; and ' delimiter processing. To match a -literal &dquot; or ' you must preface it with \ (backslash). - -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. - -The period ``.'' matches any single character. The caret ``ˆ'' and -the dollar sign ``&dollar'' are metacharacters that respectively match -the empty string at the beginning and end of a line. - -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 <bf/not/ in the -list. For example, the regular expression <bf/[0123456789]/ -matches any single digit. A range of ASCII characters may be specified -by giving the first and last characters, separated by a hyphen -``-''. Most metacharacters lose their special meaning inside -lists. To include a literal ``]'' place it first in the list. -Similarly, to include a literal ``ˆ'' place it anywhere but first. -Finally, to include a literal hyphen ``-'' place it last. - -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: - -<descrip> -<tag/[:alnum:]/ -Alphanumeric characters. -<tag/[:alpha:]/ -Alphabetic characters. -<tag/[:blank:]/ -Space or tab characters. -<tag/[:cntrl:]/ -Control characters. -<tag/[:digit:]/ -Numeric characters. -<tag/[:graph:]/ -Characters that are both printable and visible. (A space is printable, -but not visible, while an ``a'' is both.) -<tag/[:lower:]/ -Lower-case alphabetic characters. -<tag/[:print:]/ -Printable characters (characters that are not control characters.) -<tag/[:punct:]/ -Punctuation characters (characters that are not letter, digits, control -characters, or space characters). -<tag/[:space:]/ -Space characters (such as space, tab and formfeed, to name a few). -<tag/[:upper:]/ -Upper-case alphabetic characters. -<tag/[:xdigit:]/ -Characters that are hexadecimal digits. -</descrip> - -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, <bf/[[:digit:]]/ is equivalent to -<bf/[0-9]/. - -Two additional special sequences can appear in character lists. These -apply to non-ASCII character sets, which can have single symbols (called -collating elements) that are represented with more than one character, -as well as several characters that are equivalent for collating or -sorting purposes: - -<descrip> -<tag/Collating Symbols/ -A collating symbol is a multi-character collating element enclosed in -``[.'' and ``.]''. For example, if ``ch'' is a collating -element, then <bf/[[.ch.]]/ is a regexp that matches -this collating element, while <bf/[ch]/ is a regexp that -matches either ``c'' or ``h''. -<tag/Equivalence Classes/ -An equivalence class is a locale-specific name for a list of -characters that are equivalent. The name is enclosed in ``[='' -and ``=]''. For example, the name ``e'' might be used to -represent all of ``è'' ``é'' and ``e''. In this case, -<bf/[[=e=]]/ is a regexp that matches any of -``è'', ``é'' and ``e''. -</descrip> - -A regular expression matching a single character may be followed by one -of several repetition operators: - -<descrip> -<tag/?/ -The preceding item is optional and matched at most once. -<tag/*/ -The preceding item will be matched zero or more times. -<tag/+/ -The preceding item will be matched one or more times. -<tag/{n}/ -The preceding item is matched exactly <em/n/ times. -<tag/{n,}/ -The preceding item is matched <em/n/ or more times. -<tag/{,m}/ -The preceding item is matched at most <em/m/ times. -<tag/{n,m}/ -The preceding item is matched at least <em/n/ times, but no more than -<em/m/ times. -</descrip> - -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 resulting 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. - -<bf/Note:/ If you compile Mutt-ng with the GNU <em/rx/ package, the -following operators may also be used in regular expressions: - -<descrip> -<tag/\\y/ -Matches the empty string at either the beginning or the end of a word. -<tag/\\B/ -Matches the empty string within a word. -<tag/\\</ -Matches the empty string at the beginning of a word. -<tag/\\>/ -Matches the empty string at the end of a word. -<tag/\\w/ -Matches any word-constituent character (letter, digit, or underscore). -<tag/\\W/ -Matches any character that is not word-constituent. -<tag/\\`/ -Matches the empty string at the beginning of a buffer (string). -<tag/\\'/ -Matches the empty string at the end of a buffer. -</descrip> - -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. - -<sect1>Patterns<label id="patterns"> -<p> -Many of Mutt-ng's commands allow you to specify a pattern to match -(limit, tag-pattern, delete-pattern, etc.). There are several ways to select -messages: - -<tscreen><verb> -~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 -~w EXPR messages which contain EXPR in the `Newsgroups' field - (if compiled with NNTP support) -~x EXPR messages which contain EXPR in the `References' field -~y EXPR messages which contain EXPR in the `X-Label' field -~z [MIN]-[MAX] messages with a size in the range MIN to MAX *) -~= duplicated messages (see $duplicate_threads) -~$ unreferenced messages (requires threaded view) -~* ``From'' contains realname and (syntactically) valid - address (excluded are addresses matching against - alternates or any alias) -</verb></tscreen> - -Where EXPR, USER, ID, and SUBJECT are -<ref id="regexp" name="regular expressions">. Special attention has to be -made when using regular expressions inside of patterns. Specifically, -Mutt-ng's parser for these patterns will strip one level of backslash (\), -which is normally used for quoting. If it is your intention to use a -backslash in the regular expression, you will need to use two backslashes -instead (\\). - -*) The forms <tt/<[MAX]/, <tt/>[MIN]/, -<tt/[MIN]-/ and <tt/-[MAX]/ -are allowed, too. - -<sect2>Pattern Modifier -<p> - -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. - -<tscreen><verb> -^~C \.de$ -</verb></tscreen> - -<sect2>Complex Patterns -<p> - -Logical AND is performed by specifying more than one criterion. For -example: - -<tscreen><verb> -~t mutt ~f elkins -</verb></tscreen> - -would select messages which contain the word ``mutt'' in the list of -recipients <bf/and/ that have the word ``elkins'' in the ``From'' header -field. - -Mutt-ng also recognizes the following operators to create more complex search -patterns: - -<itemize> -<item>! -- logical NOT operator -<item>| -- logical OR operator -<item>() -- logical grouping operator -</itemize> - -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''. - -<tscreen><verb> -!(~t mutt|~c mutt) ~f elkins -</verb></tscreen> - -Here is an example using white space in the regular expression (note -the ' and &dquot; 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 +SomeoneElse'': - -<tscreen><verb> - '~s "^Junk +From +Me$" ~f ("Jim +Somebody"|"Ed +SomeoneElse")' -</verb></tscreen> - -Note that if a regular expression contains parenthesis, or a vertical bar -("|"), you <bf/must/ enclose the expression in double or single quotes since -those characters are also used to separate different parts of Mutt-ng's -pattern language. For example, - -<tscreen><verb> -~f "me@(mutt\.org|cs\.hmc\.edu)" -</verb></tscreen> - -Without the quotes, the parenthesis wouldn't end. -This would be separated to two OR'd patterns: <em/˜f me@(mutt\.org/ -and <em/cs\.hmc\.edu)/. They are never what you want. - -<sect2>Searching by Date -<p> -Mutt-ng supports two types of dates, <em/absolute/ and <em/relative/. - -<bf/Absolute/. Dates <bf/must/ 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: - -<tscreen><verb> -Limit to messages matching: ~d 20/1/95-31/10 -</verb></tscreen> - -If you omit the minimum (first) date, and just specify ``-DD/MM/YY'', all -messages <em/before/ the given date will be selected. If you omit the maximum -(second) date, and specify ``DD/MM/YY-'', all messages <em/after/ 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. - -<bf/Error Margins/. 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: -<verb> -y years -m months -w weeks -d days -</verb> -As a special case, you can replace the sign by a ``*'' character, -which is equivalent to giving identical plus and minus error margins. - -Example: To select any messages two weeks around January 15, 2001, -you'd use the following pattern: -<tscreen><verb> -Limit to messages matching: ~d 15/1/2001*2w -</verb></tscreen> - - -<bf/Relative/. This type of date is relative to the current date, and may -be specified as: -<itemize> -<item>><em/offset/ (messages older than <em/offset/ units) -<item><<em/offset/ (messages newer than <em/offset/ units) -<item>=<em/offset/ (messages exactly <em/offset/ units old) -</itemize> - -<em/offset/ is specified as a positive number with one of the following -units: -<verb> -y years -m months -w weeks -d days -</verb> - -Example: to select messages less than 1 month old, you would use -<tscreen><verb> -Limit to messages matching: ~d <1m -</verb></tscreen> - - - -<bf/Note:/ all dates used when searching are relative to the -<bf/local/ time zone, so unless you change the setting of your <ref -id="index_format" name="$index_format"> to include a -<tt/%[...]/ format, these are <bf/not/ the dates shown -in the main index. - -<sect1>Using Tags -<p> - -Sometimes it is desirable to perform an operation on a group of -messages all at once rather than one at a time. An example might be -to save messages to a mailing list to a separate folder, or to -delete all messages with a given subject. To tag all messages -matching a pattern, use the tag-pattern function, which is bound to -``shift-T'' by default. Or you can select individual messages by -hand using the ``tag-message'' function, which is bound to ``t'' by -default. See <ref id="patterns" name="patterns"> for Mutt-ng's pattern -matching syntax. - -Once you have tagged the desired messages, you can use the -``tag-prefix'' operator, which is the ``;'' (semicolon) key by default. -When the ``tag-prefix'' operator is used, the <bf/next/ operation will -be applied to all tagged messages if that operation can be used in that -manner. If the <ref id="auto_tag" name="$auto_tag"> -variable is set, the next operation applies to the tagged messages -automatically, without requiring the ``tag-prefix''. - -In <ref id="macro" name="macros"> or <ref id="push" name="push"> commands, -you can use the ``tag-prefix-cond'' operator. If there are no tagged -messages, mutt will "eat" the rest of the macro to abort it's execution. -Mutt-ng will stop "eating" the macro when it encounters the ``end-cond'' -operator; after this operator the rest of the macro will be executed as -normal. - -<sect1>Using Hooks<label id="hooks"> -<p> -A <em/hook/ is a concept borrowed from the EMACS editor which allows you to -execute arbitrary commands before performing some operation. For example, -you may wish to tailor your configuration based upon which mailbox you are -reading, or to whom you are sending mail. In the Mutt-ng world, a <em/hook/ -consists of a <ref id="regexp" name="regular expression"> or -<ref id="patterns" name="pattern"> along with a -configuration option/command. See -<itemize> -<item><ref id="folder-hook" name="folder-hook"> -<item><ref id="send-hook" name="send-hook"> -<item><ref id="message-hook" name="message-hook"> -<item><ref id="save-hook" name="save-hook"> -<item><ref id="mbox-hook" name="mbox-hook"> -<item><ref id="fcc-hook" name="fcc-hook"> -<item><ref id="fcc-save-hook" name="fcc-save-hook"> -</itemize> -for specific details on each type of <em/hook/ available. - -<bf/Note:/ 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: - -<tscreen><verb> +<?xml version="1.0" standalone="no"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" +"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> + +<book> + +<bookinfo> + <title>The Mutt Next Generation E-Mail Client + + AndreasKrennmair + ak@synflood.at + + + MichaelElkins + me@cs.hmc.edu + + version devel-r473 + + + Michael Elinks on mutt, circa 1995: + ``All mail clients suck. This one just sucks less.'' + + + Sven Guckes on mutt, ca. 2003: ``But it still sucks!'' + + + + + + Introduction + + + Overview + + + 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. + + + + 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. + + + + + + + + + + Mutt-ng Home Page + + + http://www.muttng.org + + + + + + + + + + Mailing Lists + + + + + + + + mutt-ng-users@lists.berlios.de: This is + where the mutt-ng user support happens. + + + + + + mutt-ng-devel@lists.berlios.de: The + development mailing list for mutt-ng + + + + + + + + + + + + + + + Software Distribution Sites + + + So far, there are no official releases of Mutt-ng, but you can + download daily snapshots from http://mutt-ng.berlios.de/snapshots/ + + + + + + + + + + IRC + + + Visit channel #muttng on irc.freenode.net + (www.freenode.net) to chat with other people + interested in Mutt-ng. + + + + + + Weblog + + + 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. + + + + + + Copyright + + + Mutt is Copyright (C) 1996-2000 Michael R. Elkins + <me@cs.hmc.edu> and others + + + + 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. + + + + 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. + + + + 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. + + + + + + + + + Getting Started + + + Basic Concepts + + + Screens and Menus + + + mutt-ng offers different screens of which every has its special + purpose: + + + + + + + + + The index displays the contents of the + currently opened + mailbox. + + + + + + + The pager is responsible for displaying + messages, that + is, the header, the body and all attached parts. + + + + + + + The file browser offers operations on and + displays + information of all folders mutt-ng should watch for mail. + + + + + + + The sidebar offers a permanent view of + which mailboxes + contain how many total, new and/or flagged mails. + + + + + + + The help screen lists for all currently + available + commands how to invoke them as well as a short description. + + + + + + + The compose menu is a comfortable + interface take last + actions before sending mail: change subjects, attach files, + remove + attachements, etc. + + + + + + + The attachement menu gives a summary and + the tree + structure of the attachements of the current message. + + + + + + + The alias menu lists all or a fraction of + the aliases + a user has defined. + + + + + + + The key menu used in connection with + encryption lets + users choose the right key to encrypt with. + + + + + + + + + + When mutt-ng is started without any further options, it'll open + the users default mailbox and display the index. + + + + + + + + + + + Configuration + + + 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.) + + + + Mutt-ng is configured using configuration files which allow + users to add comments or manage them via version control systems + to ease maintenance. + + + + 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. + + + + + + + + + + + Functions + + + 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. + + + + + + + + + + + Interaction + + + Mutt-ng has two basic concepts of user interaction: + + + + + + + + + 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. + + + + + + + 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. + + + + + + + + + + + + + + + + + Modularization + + + 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. + + + + + + + + + + + Patterns + + + 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. + + + + + + + + + + + + + + + + + + + Screens and Menus + + + Index + + + 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. + + + + + + + + + + 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. + + + + + + + + + + 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. + + + + + + + + + + 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. + + + + + + + + + + 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). + + + + + + + + + + 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. + + + + + + + + + + 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. + + + + + + + + + + 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. + + + + + + + + + + Key Menu + + + FIXME + + + + + + + + + + + + + + + + + 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. + + + + + + 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 + + + +
+ + +
+ + + + + +
+ + + + 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. + + + + + + Built-In Editor Functions + + + + Key + Function + Description + + + + + ^A or <Home> + bol + move to the start of the line + + + ^B or <Left> + backward-char + move back one char + + + Esc B + backward-word + move back one word + + + ^D or <Delete> + delete-char + delete the char under the cursor + + + ^E or <End> + eol + move to the end of the line + + + ^F or <Right> + forward-char + move forward one char + + + Esc F + forward-word + move forward one word + + + <Tab> + complete + complete filename or alias + + + ^T + complete-query + complete address with query + + + ^K + kill-eol + delete to the end of the line + + + ESC d + kill-eow + delete to the end of the word + + + ^W + kill-word + kill the word in front of the cursor + + + ^U + kill-line + delete entire line + + + ^V + quote-char + quote the next typed key + + + <Up> + history-up + recall previous string from history + + + <Down> + history-down + recall next string from history + + + <BackSpace> + backspace + kill the char in front of the cursor + + + Esc u + upcase-word + convert word to upper case + + + Esc l + downcase-word + convert word to lower case + + + Esc c + capitalize-word + capitalize the word + + + ^G + n/a + abort + + + <Return> + n/a + finish editing + + + +
+ +
+ + + 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 <delete> backspace + + + + + + +
+ + + + 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. + + + + The Message Index + + + + + 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 + <Return> display-message + <Tab> jump to the next new message + @ show the author's full e-mail address + $ save changes to mailbox + / search + ESC / search-reverse + ^L clear and redraw the screen + ^T untag messages matching a pattern + + +
+ +
+ + + Status Flags + + + 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 + + + + + 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 + + + + + + set-flag (default: w) + + + + + + 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 + + + + + L + + + message is sent to a subscribed mailing list + + + + + + + + + + +
+ + + The Pager + + + 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. + + + + + + Default Pager Menu Bindings + + + + Key + Function + Description + + + + <Return> go down one line + <Space> display the next page (or next message if at the end of a message) + - go back to the previous page + n search for next match + S skip beyond quoted text + T toggle display of quoted text + ? show key bindings + / search for a regular expression (pattern) + ESC / search backwards for a regular expression + \ toggle search pattern coloring + ^ jump to the top of the message + + +
+ + +
+ + + 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). + + + + + + 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) + + +
+ + + + 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. + + + +
+ + + Threaded Mode + + + When the mailbox is sorted by + threads + + ,there are + a few additional functions available in the index and + pager + + modes. + + + + + + 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. + + + +
+ + + 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. + + + + toggle-quoted + (default: T) + + + + + 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. + + + + skip-quoted + (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. + + + + + + + + + + +
+ + + Sending Mail + + + The following bindings are available in the index + for sending + messages. + + + + + + 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 + + . + + + + 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 + <esc>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: + + + + + + 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. + + + + + + + +
+ + + Replying + + + 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 <svensson@foobar.com> [05-03-06 17:02]: +> Bill, can you please send last month's progress report to Mr. +> Morgan? We also urgently need the cost estimation for the new +> production server that we want to set up before our customer's +> project will go live. + + + + + 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. + + + + + + + + + + + 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. + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + Using Mutt-ng with PGP + + + If you want to use PGP, you can specify + + + + Pgp: [ E | + S + + | S<id> ] + + + + + ``E'' encrypts, ``S'' signs and + ``S<id>'' 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. + + + + 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 + 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: + + + + 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. + + + + + + +
+ + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + + + + + + + + + +
+ + + Forwarding and Bouncing Mail + + + Often, it is necessary to forward mails to other people. + Therefore, mutt-ng supports forwarding messages in two different + ways. + + + + 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: + + + + + +----- Forwarded message from Lucas User <luser@example.com> ----- + +From: Lucas User <luser@example.com> +Date: Thu, 02 Dec 2004 03:08:34 +0100 +To: Michael Random <mrandom@example.com> +Subject: Re: blackmail + +Pay me EUR 50,000.- cash or your favorite stuffed animal will die +a horrible death. + +----- End forwarded message ----- + + + + + 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 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. + + + + 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. + + + + + + + + + + Postponing Mail + + + 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. + + + + 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. + + + + 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. + + + + See also the postpone quad-option. + + + + + + + + + + + + +
+ + + Configuration + + + Locations of Configuration Files + + + 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. + + + + .muttrc (or .muttngrc for + Mutt-ng) is the file where you will + usually place your commands to + configure Mutt-ng. + + + + + + + + + + Basic Syntax of Initialization Files + + + 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 + (;). + + +set realname='Mutt-ng user' ; ignore x- + + 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, + + + + + +my_hdr X-Disclaimer: Why are you listening to me? # This is a comment + + + + + 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. + + + + \ 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. + + +set realname="Michael \"MuttDude\" Elkins" + + + + + ``\\'' means to insert a literal ``\'' into the line. + ``\n'' and ``\r'' have their usual C meanings of linefeed and + carriage-return, respectively. + + + + 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. + + + + 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 ``#''. + + + + + +# folder-hook . \ +set realname="Michael \"MuttDude\" Elkins" + + + + + 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! + + + + Abstract example: + + + + + +line1\ +line2a # line2b\ +line3\ +line4 +line5 + + + + + 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. + + + + The commands understood by mutt are explained in the next paragraphs. + For a complete list, see the commands. + + + + + + + + + + Expansion within variables + + + Besides just assign static content to variables, there's plenty of + ways of adding external and more or less dynamic content. + + + + Commands' Output + + + 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: + + + + + +my_hdr X-Operating-System: `uname -a` + + + + + 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. + + + + + + Environment Variables + + + 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, + + + + + +set record=+sent_on_$HOSTNAME + + + + + sets the record variable to the + string +sent_on_ and appends the + value of the evironment + variable $HOSTNAME. + + + + Note: There will be no warning if an + environment variable + is not defined. The result will of the expansion will then be empty. + + + + + + Configuration Variables + + + As for environment variables, the values of all configuration + variables as string can be used in the same way, too. For example, + + + + + +set imap_home_namespace = $folder + + + + + would set the value of + imap-home-namespace + + to the value to + which folder is currently set + to. + + + + 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. + + + + 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. + + + + + + Self-Defined Variables + + + 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. + + + + For example, to view the manual, users can either define two + macros like the following + + + + + +macro generic <F1> "!less -r /path/to/manual" "Show manual" +macro pager <F1> "!less -r /path/to/manual" "Show manual" + + + + + for generic, pager and + index + + .The alternative is to + define a custom variable like so: + + + + + +set user_manualcmd = "!less -r /path/to_manual" +macro generic <F1> "$user_manualcmd<enter>" "Show manual" +macro pager <F1> "$user_manualcmd<enter>" "Show manual" +macro index <F1> "$user_manualcmd<enter>" "Show manual" + + + + + to re-use the command sequence as in: + + + + + +macro index <F2> "$user_manualcmd | grep '\^[ ]\\+~. '" "Show Patterns" + + + + + 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. + + + + 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. + + + + The complete removal is done via the unset + keyword. + + + + After the following sequence: + + + + + +set user_foo = 42 +set user_foo = 666 + + + + + the variable $user_foo has a current value + of 666 and an + initial of 42. The query + + + + + +set ?user_foo + + + + + will show 666. After doing the reset via + + + + + +reset user_foo + + + + + a following query will give 42 as the result. After unsetting it + via + + + + + +unset user_foo + + + + + any query or operation (except the noted expansion within other + statements) will lead to an error message. + + + + + + Pre-Defined Variables + + + 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. + + + + 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: + + + + + +muttng -Q muttng_docdir + + + + + 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: + + + + + +set user_manualcmd = '!less -r /path/to_manual' + + + + + to: + + + + + +set user_manualcmd = "!less -r $muttng_docdir/manual.txt" + + + + + which works everywhere if a manual is installed. + + + + 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. + + + + For example, the statement + + + + + +folder-hook . "set user_current_folder = $muttng_folder_name" + + + + + will be already be translated to the following when reading the + startup files: + + + + + +folder-hook . "set user_current_folder = some_folder" + + + + + with some_folder being the name of the + first folder muttng + opens. On the contrary, + + + + + +folder-hook . 'set user_current_folder = $muttng_folder_name' + + + + + 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. + + + + A more practical example is: + + + + + +folder-hook . 'source ~/.mutt/score-$muttng_folder_name' + + + + + which can be used to source files containing score commands + depending on the folder the user enters. + + + + + + Type Conversions + + + 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): + + + + + +set read_inc = 100 +set folder = $read_inc +set read_inc = $folder +set user_magic_number = 42 +set folder = $user_magic_number + + + + + + + + + Defining/Using aliases + + + Usage: alias key + address + + [ , address, ... ] + + + + 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. + + + + 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 (``,''). + + + + To remove an alias or aliases (``*'' means all aliases): + + + + unalias [ * | key + ... + + ] + + + + + +alias muttdude me@cs.hmc.edu (Michael Elkins) +alias theguys manny, moe, jack + + + + + 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. + + + + 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. + + + + For example: + + + + + +source /usr/local/share/Mutt-ng.aliases +source ~/.mail_aliases +set alias_file=~/.mail_aliases + + + + + 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. + + + + 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. + + + + 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. + + + + + + + + + + Changing the default key bindings + + + Usage: bind map key + function + + + + + This command allows you to change the default key bindings (operation + invoked when pressing a key). + + + + 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: + + + + + + + + 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-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. + + + + + 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. + + + + + pager + + + 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: + + + + + + Alternative Key Names + + + + Sequence + Description + + + + \t tab + <tab> tab + <backtab> backtab / shift-tab + \r carriage return + \n newline + \e escape + <esc> escape + <up> up arrow + <down> down arrow + <left> left arrow + <right> right arrow + <pageup> Page Up + <pagedown> Page Down + <backspace> Backspace + <delete> Delete + <insert> Insert + <enter> Enter + <return> Return + <home> Home + <end> End + <space> Space bar + <f1> function key 1 + <f10> function key 10 + + +
+ +
+ + + key does not need to be enclosed in quotes unless + it contains a + space (`` ''). + + + + 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. + + + + + + +
+ + + Defining aliases for character sets + + + Usage: charset-hook alias + charset + + + Usage: iconv-hook charset + local-charset + + + + + 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. + + + + 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. + + + + + + + + + + Setting variables based upon mailbox + + + Usage: folder-hook [!]regexp + command + + + + + 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. + + + + 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. + + + + 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: + + + + + +folder-hook mutt set sort=threads + + + + + However, the sorting method is not restored to its previous value when + reading a different mailbox. To specify a default + command, use the + pattern ``.'': + + + + + +folder-hook . set sort=date-sent + + + + + + + + + + + Keyboard macros + + + Usage: macro menu key + sequence + + [ description ] + + + + 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. + + + + 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. + + + + 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 + <key name> and <function + name> + + .For a listing of key + names see the section on bind. Functions + are listed in the functions. + + + + 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). + + + + Optionally you can specify a descriptive text after sequence, + which is shown in the help screens. + + + + Note: Macro definitions (if any) + listed in the help screen(s), are + silently truncated at the screen width, and are not wrapped. + + + + + + + + + + Using color and mono video attributes + + + Usage: color object + foreground + + background [ regexp + ] + + Usage: color index foreground + background + + pattern + + Usage: uncolor index pattern + [ pattern ... ] + + + + + 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). + + + + object can be one of: + + + + + + + + + attachment + + + + + + body (match regexp in the body of messages) + + + + + + bold (highlighting bold patterns in the body of messages) + + + + + + error (error messages printed by Mutt-ng) + + + + + + header (match regexp in the message header) + + + + + + hdrdefault (default color of the message header in the pager) + + + + + + index (match pattern in the message index) + + + + + + indicator (arrow or bar used to indicate the current item in a + menu) + + + + + + markers (the ``+'' markers at the beginning of wrapped lines in + the pager) + + + + + + message (informational messages) + + + + + + normal + + + + + + quoted (text matching quote-regexp in the body of a message) + + + + + + quoted1, quoted2, ..., quotedN + (higher levels of quoting) + + + + + + search (highlighting of words in the pager) + + + + + + signature + + + + + + status (mode lines used to display info about the mailbox or + message) + + + + + + tilde (the ``˜'' used to pad blank lines in the pager) + + + + + + tree (thread tree drawn in the message index and attachment menu) + + + + + + underline (highlighting underlined patterns in the body of + messages) + + + + + + + + + foreground and background can + be one of the following: + + + + + + + + + white + + + + + + black + + + + + + green + + + + + + magenta + + + + + + blue + + + + + + cyan + + + + + + yellow + + + + + + red + + + + + + default + + + + + + colorx + + + + + + + + + foreground can optionally be prefixed with the + keyword bright to make + the foreground color boldfaced (e.g., brightred). + + + + 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): + + + + + +set COLORFGBG="green;black" +export COLORFGBG + + + + + Note: The S-Lang + library requires you to use the lightgray + and brown keywords instead of white and + yellow + + when + setting this variable. + + + + 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. + + + + 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. + + + + If your terminal does not support color, it is still possible change + the video + attributes through the use of the ``mono'' command: + + + + Usage: mono <object> + <attribute> + + [ regexp ] + + Usage: mono index attribute + pattern + + + Usage: unmono index pattern + [ pattern ... ] + + + + + where attribute is one of the following: + + + + + + + + + none + + + + + + bold + + + + + + underline + + + + + + reverse + + + + + + standout + + + + + + + + + + + + + + + Ignoring (weeding) unwanted message headers + + + Usage: [un]ignore pattern [ + pattern + + ... ] + + + + 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. + + + + 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. + + + + 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''. + + + + ``unignore *'' will remove all tokens from the ignore list. + + + + For example: + + +# 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: + + + + + + + + + + + Alternative addresses + + + Usage: [un]alternates regexp [ + regexp + + ... ] + + + + + 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 + + .) + + + + 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. + + + + 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. + + + + 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. + + + + + + + + + + Format = Flowed + + + Introduction + + + 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. + + + + For introductory information on format=flowed + messages, see + <http://www.joeclark.org/ffaq.html>. + + + + + + Receiving: Display Setup + + + 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: + + + + + +set wrapmargin = 10 + + + + + The code above makes the line break 10 columns before the right + side of the terminal. + + + + If your terminal is so wide that the lines are embarrassingly long, + you can also set a maximum line length: + + + + + +set max_line_length = 120 + + + + + The example above will give you lines not longer than 120 + characters. + + + + When you view at format=flowed messages, you will + often see + the quoting hierarchy like in the following example: + + + + + +>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. + + + + + 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: + + + + + +set stuff_quoted + + + + + This will lead to a nicer result that is easier to read: + + + + + +> 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. + + + + + + + Sending + + + If you want mutt-ng to send emails with format=flowed set, you + need to explicitly set it: + + + + + +set text_flowed + + + + + 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. + + + + 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: + + + + + + + + + > This is not the + quote character but a right + angle used for other reasons + + + + + + + From with a trailing space. + + + + + + + just a space for formatting reasons + + + + + + + + + + Please make sure that you manually prepend a space to each of them. + + + + + + Additional Notes + + + 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. + + + + + + + + + + + + Mailing lists + + + Usage: [un]lists regexp [ + regexp + + ... ] + + Usage: [un]subscribe regexp [ + regexp + + ... ] + + + + 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. + + + + 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''. + + + + 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. + + + + 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. + + + + The ``unlists'' command is used to remove a token from the list of + known and subscribed mailing-lists. Use ``unlists *'' to remove all + tokens. + + + + To remove a mailing list from the list of subscribed mailing lists, + but keep it on the list of known mailing lists, use ``unsubscribe''. + + + + + + + + + + Using Multiple spool mailboxes + + + Usage: mbox-hook [!]pattern + mailbox + + + + + 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. + + + + 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). + + + + + + + + + + Defining mailboxes which receive mail + + + Usage: [un]mailboxes [!] + filename + + [ filename ... ] + + + + 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. + + + + When changing folders, pressing space will cycle + through folders with new mail. + + + + 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. + + + + The ``unmailboxes'' command is used to remove a token from the list + of folders which receive mail. Use ``unmailboxes *'' to remove all + tokens. + + + + 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. + + + + 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. + + + + + + + + + + User defined headers + + + Usage: + + my_hdr string + + unmy_hdr field [ + field + + ... ] + + + + The ``my_hdr'' command allows you to create your own header + fields which will be added to every message you send. + + + + For example, if you would like to add an ``Organization:'' header field + to + all of your outgoing messages, you can put the command + + + + +my_hdr Organization: A Really Big Company, Anytown, USA + + + + in your .muttrc. + + + + 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. + + + + 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. + + + + 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: + + + + +unmy_hdr to cc + + + + + + + + + + Defining the order of headers when viewing messages + + + Usage: hdr_order header1 + header2 header3 + + + + With this command, you can specify an order in which mutt will attempt + to present headers to you when viewing messages. + + + + ``unhdr_order *'' will clear all previous headers from the order + list, + thus removing the header order effects set by the system-wide startup + file. + + + + + +hdr_order From Date: From: To: Cc: Subject: + + + + + + + + + + + Specify default save filename + + + Usage: save-hook [!]pattern + filename + + + + + 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 + + . + + + + See pattern-hook for information on + the exact format of pattern. + + + + Examples: + + + + + +save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins +save-hook aol\\.com$ +spam + + + + + Also see the fcc-save-hook + command. + + + + + + + + + + Specify default Fcc: mailbox when composing + + + Usage: fcc-hook [!]pattern + mailbox + + + + + 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. + + + + See pattern-hook for information on + the exact format of pattern. + + + + Example: fcc-hook [@.]aol\\.com$ + +spammers + + + + + 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. + + + + + + + + + + Specify default save filename and default Fcc: mailbox at once + + + Usage: fcc-save-hook [!]pattern + mailbox + + + + + This command is a shortcut, equivalent to doing both a + fcc-hook + + and a save-hook with its arguments. + + + + + + + + + + Change settings based upon message recipients + + + Usage: reply-hook [!]pattern + command + + + Usage: send-hook [!]pattern + command + + + Usage: send2-hook [!]pattern + command + + + + + 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. + + + + 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. + + + + 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. + + + + 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). + + + + See pattern-hook for information on + the exact format of pattern. + + + + Example: send-hook mutt "set mime_forward + signature=''" + + + + + 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. + + + + 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. + + + + + + + + + + Change settings before formatting a message + + + Usage: message-hook [!]pattern + command + + + + + 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. + + + + See pattern-hook for + information on the exact format of pattern. + + + + Example: + + +message-hook ~A 'set pager=builtin' +message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject:.*\""' + + + + + + + + + + + Choosing the cryptographic key of the recipient + + + Usage: crypt-hook pattern + keyid + + + + + 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 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. + + + + + + + + + + Adding key sequences to the keyboard buffer + + + Usage: push string + + + + 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. + + + + + + + + + + Executing functions + + + Usage: exec function [ + function + + ... ] + + + + This command can be used to execute any function. Functions are + listed in the functions. + ``exec function'' is equivalent to ``push <function>''. + + + + + + + + + + Message Scoring + + + Usage: score pattern + value + + + Usage: unscore pattern [ + pattern + + ... ] + + + + 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''. + + + + 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. + + + + + +score "~f nion@muttng\.org" 50 +score "~f @sco\.com" -100 + + + + + 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: + + + + + +score "~f santaclaus@northpole\.int" =666 + + + + + What is important to note is that negative score values will be + rounded up to 0. + + + + 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: + + + + + + + + + flag threshold: when a message has a score value equal or higher + than the flag threshold, it will be flagged. + + + + + + + read threshold: when a message has a score value equal or lower + than the read threshold, it will be marked as read. + + + + + + + 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. + + + + + + + + + + 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" + + + + + + + + + + + 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.'' + + + + Prefixing a variable with ``no'' will unset it. Example: set + noaskbcc + + . + + + + 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. + + + + The toggle command automatically prepends the + inv + + prefix to all + specified variables. + + + + The unset command automatically prepends the + no + + prefix to all + specified variables. + + + + 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: + + + + + +set ?allow_8bit + + + + + The question mark is actually only required for boolean and quadoption + variables. + + + + 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. + + + + With the reset command there exists the special + variable ``all'', + which allows you to reset all variables to their system defaults. + + + + + + + + + + Reading initialization commands from another file + + + Usage: source filename [ + filename + + ... ] + + + + 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. + + + + If the filename begins with a tilde (``˜''), it will be expanded + to the + path of your home directory. + + + + If the filename ends with a vertical bar (|), then + filename + + is + considered to be an executable program from which to read input (eg. + source ˜/bin/myscript|). + + + + + + + + + + Removing hooks + + + Usage: unhook [ * | hook-type ] + + + + 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. + + + + + + + + + + Sharing Setups + + + Character Sets + + + As users may run mutt-ng on different systems, the configuration + must be maintained because it's likely that people want to use the + setup everywhere they use mutt-ng. And mutt-ng tries to help where it + can. + + + + To not produce conflicts with different character sets, mutt-ng + allows users to specify in which character set their configuration + files are encoded. Please note that while reading the configuration + files, this is only respected after the corresponding declaration + appears. It's advised to put the following at the very beginning of a + users muttngrc: + + + + + +set config_charset = "..." + + + + + and replacing the dots with the actual character set. To avoid + problems while maintaining the setup, vim user's may want to use + modelines as show in: + + + + + +# vim:fileencoding=...: + + + + + while, again, replacing the dots with the appropriate name. This + tells vim as which character set to read and save the file. + + + + + + + + + + Modularization + + + ``Modularization'' means to divide the setup into several files + while sorting the options or commands by topic. Especially for + longer setups (e.g. with many hooks), this helps maintaining it + and solving trouble. + + + + When using separation, setups may be, as a whole or in + fractions, shared over different systems. + + + + + + + + + + Conditional parts + + + When using a configuration on different systems, the user may not + always have influence on how mutt-ng is installed and which features + it includes. + + + + To solve this, mutt-ng contain a feature based on the ``ifdef'' + patch written for mutt. Its basic syntax is: + + + + + +ifdef <item> <command> +ifndef <item> <command> + + + + + ...whereby <item> can be one of: + + + + + + + + + a function name + + + + + + + a variable name + + + + + + + a menu name + + + + + + + a feature name + + + + + + + + + + All available functions, variables and menus are documented + elsewhere in this manual but ``features'' is specific to these + two commands. To test for one, prefix one of the following + keywords with feature_: ncurses, + slang, iconv, idn, dotlock, standalone, pop, nntp, imap, ssl, + gnutls, sasl, sasl2, libesmtp, compressed, color, classic_pgp, + classic_smime, gpgme, header_cache + + + + As an example, one can use the following in + ˜/.muttngrc: + + + + + +ifdef feature_imap 'source ~/.mutt-ng/setup-imap' +ifdef feature_pop 'source ~/.mutt-ng/setup-pop' +ifdef feature_nntp 'source ~/.mutt-ng/setup-nntp' + + + + + ...to only source ˜/.mutt-ng/setup-imap if + IMAP + support is built in, only source ˜/.mutt-ng/setup-pop + if POP support is built in and only source + ˜/.mutt-ng/setup-nntp if NNTP support is + built in. + + + + An example for testing for variable names can be used if users + use different revisions of mutt-ng whereby the older one may not + have a certain variable. To test for the availability of + imap-mail-check + + , + use: + + + + + +ifdef imap_mail_check 'set imap_mail_check = 300' + + + + + Provided for completeness is the test for menu names. To set + pager-index-lines + + only if the pager + menu is available, use: + + + + + +ifdef pager 'set pager_index_lines = 10' + + + + + For completeness, too, the opposite of ifdef is + provided: + ifndef which only executes the command if the test + fails. For + example, the following two examples are equivalent: + + + + + +ifdef feature_ncurses 'source ~/.mutt-ng/setup-ncurses' +ifndef feature_ncurses 'source ~/.mutt-ng/setup-slang' + + + + + ...and... + + + + + +ifdef feature_slang 'source ~/.mutt-ng/setup-slang' +ifndef feature_slang 'source ~/.mutt-ng/setup-ncurses' + + + + + + + + + + + + + + + + + Obsolete Variables + + + In the process of ensuring and creating more consistency, many + variables have been renamed and some of the old names were already + removed. Please see sect-obsolete + for a complete list. + + + + + + + + + + + + +
+ + + Advanced Usage + + + Regular Expressions + + + All string patterns in Mutt-ng including those in more complex + patterns 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. + + + + 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: ``\\''. + + + + 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. + + + + 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 muttrc-syntax + for more information on " and ' delimiter processing. To match a + literal " or ' you must preface it with \ (backslash). + + + + 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. + + + + The period ``.'' matches any single character. The caret ``ˆ'' + andthe dollar sign ``$'' are metacharacters that respectively + match + the empty string at the beginning and end of a line. + + + + 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 + not + + in the + list. For example, the regular expression + [0123456789] + + matches any single digit. A range of ASCII characters may be specified + by giving the first and last characters, separated by a hyphen + ``-''. Most metacharacters lose their special meaning inside + lists. To include a literal ``]'' place it first in the list. + Similarly, to include a literal ``ˆ'' place it anywhere but first. + Finally, to include a literal hyphen ``-'' place it last. + + + + 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: + + + + + + + [:alnum:] + + + Alphanumeric characters. + + + + + [:alpha:] + + + Alphabetic characters. + + + + + [:blank:] + + + Space or tab characters. + + + + + [:cntrl:] + + + Control characters. + + + + + [:digit:] + + + Numeric characters. + + + + + [:graph:] + + + Characters that are both printable and visible. (A space is + printable, + but not visible, while an ``a'' is both.) + + + + + [:lower:] + + + Lower-case alphabetic characters. + + + + + [:print:] + + + Printable characters (characters that are not control + characters.) + + + + + [:punct:] + + + Punctuation characters (characters that are not letter, digits, + control + characters, or space characters). + + + + + [:space:] + + + Space characters (such as space, tab and formfeed, to name a + few). + + + + + [:upper:] + + + Upper-case alphabetic characters. + + + + + [:xdigit:] + + + Characters that are hexadecimal digits. + + + + + + + + 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, [[:digit:]] is equivalent to + [0-9]. + + + + Two additional special sequences can appear in character lists. These + apply to non-ASCII character sets, which can have single symbols + (calledcollating elements) that are represented with more than one + character, + as well as several characters that are equivalent for collating or + sorting purposes: + + + + + + + Collating Symbols + + + A collating symbol is a multi-character collating element + enclosed in + ``[.'' and ``.]''. For example, if ``ch'' is a + collating + element, then + [[.ch.]] + + is a regexp that matches + this collating element, while + [ch] + + is a regexp that + matches either ``c'' or ``h''. + + + + + Equivalence Classes + + + An equivalence class is a locale-specific name for a list of + characters that are equivalent. The name is enclosed in + ``[='' + and ``=]''. For example, the name ``e'' might be used to + represent all of ``è'' ``é'' and ``e''. In this + case, + [[=e=]] is + a regexp that matches any of + ``è'', ``é'' and ``e''. + + + + + + + + A regular expression matching a single character may be followed by one + of several repetition operators: + + + + + + + ? + + + The preceding item is optional and matched at most once. + + + + + * + + + The preceding item will be matched zero or more times. + + + + + + + + + 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 resulting 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. + + + + Note: If you compile Mutt-ng with the + GNU rx 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. + + + + + \\B + + + Matches the empty string within a word. + + + + + \\< + + + Matches the empty string at the beginning of a word. + + + + + \\> + + + Matches the empty string at the end of a word. + + + + + \\w + + + Matches any word-constituent character (letter, digit, or + underscore). + + + + + \\W + + + Matches any character that is not word-constituent. + + + + + \\` + + + Matches the empty string at the beginning of a buffer (string). + + + + + \\' + + + Matches the empty string at the end of a buffer. + + + + + + + + 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. + + + + + + + + + + Patterns + + + Mutt-ng's pattern language provides a simple yet effective way to + set up rules to match messages, e.g. for operations like tagging and + scoring. A pattern consists of one or more sub-pattern, which can be + logically grouped, ORed, and negated. For a complete listing of + these patterns, please refer to table patterns in the Reference chapter. + + + + It must be noted that in this table, EXPR is + a regular expression. For ranges, the forms + <[MAX], >>[MIN], + [MIN]- and -[MAX] are + also possible. + + + + Complex Patterns + + + It is possible to combine several sub-patterns to a more complex + pattern. The most simple possibility is to logically AND several + patterns by stringing them together: + + + + + +~s 'SPAM' ~U + + + + + The pattern above matches all messages that contain ``SPAM'' in + the subject and are unread. + + + + To logical OR patterns, simply use the | + operator. This one + especially useful when using local groups: + + + + + +~f ("nion@muttng\.org"|"ak@muttng\.org"|"pdmef@muttng\.org") +(~b mutt-ng|~s Mutt-ng) +!~x '@synflood\.at' + + + + + The first pattern matches all messages that were sent by one of + the mutt-ng maintainers, while the seconds pattern matches all + messages that contain ``mutt-ng'' in the message body or ``Mutt-ng'' + in the subject. The third pattern matches all messages that do not + contain ``@synflood\.at'' in the References: + header, i.e. + messages that are not an (indirect) reply to one of my messages. A + pattern can be logicall negated using the ! + operator. + + + + + + Patterns and Dates + + + When using dates in patterns, the dates must be specified in a + special format, i.e. DD/MM/YYYY. If you don't + specify + month or year, they default to the current month or year. When using + date ranges, and you specify only the minimum or the maximum, the + specified date will be excluded, e.g. 01/06/2005- + matches + against all messages after Juni 1st, 2005. + + + + It is also possible to use so-called ``error margins'' when + specifying date ranges. You simply specify a date, and then the + error margin. This margin needs to contain the information whether + it goes ``forth'' or ``back'' in time, by using + + and -. + Then follows a number and a unit, i.e. y for + years, m for + months, w for weeks and d for + days. If you use the special + * sign, it means that the error margin goes to + both``directions'' in time. + + + + + +~d 01/01/2005+1y +~d 18/10/2004-2w +~d 28/12/2004*1d + + + + + The first pattern matches all dates between January 1st, 2005 and + January 1st 2006. The second pattern matches all dates between + October 18th, 2004 and October 4th 2004 (2 weeks before 18/10/2004), + while the third pattern matches all dates 1 day around December + 28th, 2004 (i.e. Dec 27th, 28th and 29th). + + + + Relative dates are also very important, as they make it possible + to specify date ranges between a fixed number of units and the + current date. How this works can be seen in the following example: + + + + + +~d >2w # messages older than two weeks +~d <3d # messages newer than 3 days +~d =1m # messages that are exactly one month old + + + + + + + + + + + + + Format Strings + + + Introduction + + + The so called Format Strings offer great + flexibility when + configuring mutt-ng. In short, they describe what items to print + out how in menus and status messages. + + + + Basically, they work as this: for different menus and bars, + there's a variable specifying the layout. For every item + available, there is a so called expando. + + + + For example, when running mutt-ng on different machines or + different versions for testing purposes, it may be interesting to + have the following information always printed on screen when one + is in the index: + + + + + + + + + the current hostname + + + + + + + the current mutt-ng version number + + + + + + + + + + The setting for the status bar of the index is controlled via the + status-format + variable. For the hostname and version string, there's an expando + for $status_format: + %h + + expands to the + hostname and %v to the version string. When + just configuring: + + + + + +set status_format = "%v on %h: ..." + + + + + mutt-ng will replace the sequence %v with + the version string + and %h with the host's name. When you are, + for example, running + mutt-ng version 1.5.9i on host mailhost, you'll see the + following when you're in the index: + + + + + +Mutt-ng 1.5.9i on mailhost: ... + + + + + In the index, there're more useful information one could want to + see: + + + + + + + + + which mailbox is open + + + + + + + how man new, flagged or postponed messages + + + + + + + ... + + + + + + + + + + To include the mailbox' name is as easy as: + + + + + +set status_format = "%v on %h: %B: ... + + + + + When the currently opened mailbox is Inbox, this + will be expanded + to: + + + + + +Mutt-ng 1.5.9i on mailhost: Inbox: ... + + + + + For the number of certain types of messages, one more feature of the + format + strings is extremely useful. If there aren't messages of a certain + type, it + may not be desired to print just that there aren't any but instead + only + print something if there are any. + + + + + + + + + + Conditional Expansion + + + To only print the number of messages if there are new messages in + the current mailbox, further extend + $status_format to: + + + + + +set status_format = "%v on %h: %B %?n?%n new? ... + + + + + This feature is called nonzero-printing and + works as this: + some expandos may be optionally printed nonzero, i.e. a portion + of the format string is only evaluated if the value of the expando + is different from zero. The basic syntax is: + + + + + +%?<item>?<string if nonzero>? + + + + + which tells mutt-ng to only look at <string if + nonzero> + + if the value of the %<item%gt; + expando is different from zero. In our example, we used n as + the expando to check for and %n new as the + optional nonzero + string. + + + + But this is not all: this feature only offers one alternative: + ``print something if not zero.'' Mutt-ng does, as you might guess, + also provide a logically complete version: ``if zero, print + something and else print something else.'' This is achieved by the + following syntax for those expandos which may be printed nonzero: + + + + + +%?<item>?<string if nonzero>&<string if zero>? + + + + + Using this we can make mutt-ng to do the following: + + + + + + + + + make it print ``n new messages'' whereby + n + + is the + count but only if there new ones + + + + + + + and make it print ``no new messages'' if there aren't any + + + + + + + + + + The corresponding configuration is: + + + + + +set status_format = "%v on %h: %B: %?n?%n new messages&no new messages? ... + + + + + This doubles the use of the ``new messages'' string because it'll get + always printed. Thus, it can be shortened to: + + + + + +set status_format = "%v on %h: %B: %?n?%n&no? new messages ... + + + + + As you might see from this rather simple example, one can create + very complex but fancy status messages. Please see the reference + chapter for expandos and those which may be printed nonzero. + + + + + + + + + + Modifications and Padding + + + Besides the information given so far, there're even more features of + format strings: + + + + + + + + + When specifying %_<item> + instead of + just %<item>, mutt-ng will + convert all + characters in the expansion of <item> + to + lowercase. + + + + + + + When specifying %:<item> + instead of just + %<item>, mutt-ng will convert + all dots in the + expansion of <item> to underscores + (_). + + + + + + + + + + Also, there's a feature called Padding supplied + by the + following two expandos: %|X and + %>X + + . + + + + + + + + %|X + + + + When this occurs, mutt-ng will fill the + rest of the line with the character X. In + our example, + filling the rest of the line with dashes is done by setting: + + + + + +set status_format = "%v on %h: %B: %?n?%n&no? new messages %|-" + + + + + + + %>X + + + + Since the previous expando stops at + the end of line, there must be a way to fill the gap between + two items via the %>X expando: + it puts as many + characters X in between two items so that + the rest of + the line will be right-justified. For example, to not put the + version string and hostname of our example on the left but on + the right and fill the gap with spaces, one might use (note + the space after %>): + + + + + +set status_format = "%B: %?n?%n&no? new messages %> (%v on %h)" + + + + + + + + + + + + + + + + + + + + + Using Tags + + + Sometimes it is desirable to perform an operation on a group of + messages all at once rather than one at a time. An example might be + to save messages to a mailing list to a separate folder, or to + delete all messages with a given subject. To tag all messages + matching a pattern, use the tag-pattern function, which is bound to + ``shift-T'' by default. Or you can select individual messages by + hand using the ``tag-message'' function, which is bound to ``t'' by + default. See patterns for Mutt-ng's + pattern + matching syntax. + + + + Once you have tagged the desired messages, you can use the + ``tag-prefix'' operator, which is the ``;'' (semicolon) key by default. + When the ``tag-prefix'' operator is used, the + next + + operation will + be applied to all tagged messages if that operation can be used in that + manner. If the auto-tag + variable is set, the next operation applies to the tagged messages + automatically, without requiring the ``tag-prefix''. + + + + In macro or push commands, + you can use the ``tag-prefix-cond'' operator. If there are no tagged + messages, mutt will "eat" the rest of the macro to abort it's + execution.Mutt-ng will stop "eating" the macro when it encounters the + ``end-cond'' + operator; after this operator the rest of the macro will be executed + asnormal. + + + + + + + + + + Using Hooks + + + A hook is a concept borrowed from the EMACS editor + which allows you to + execute arbitrary commands before performing some operation. For + example, + you may wish to tailor your configuration based upon which mailbox you + are + reading, or to whom you are sending mail. In the Mutt-ng world, a + hook + + consists of a regexp or + patterns along with a + configuration option/command. See + + + + + + folder-hook + + + + + + send-hook + + + + + + message-hook + + + + + + save-hook + + + + + + mbox-hook + + + + + + fcc-hook + + + + + + fcc-save-hook + + + + + + for specific details on each type of hook + available. + + + + Note: 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: + + + + + send-hook . 'unmy_hdr From:' -send-hook ~C'^b@b\.b$' my_hdr from: c@c.c - - -Message Matching in Hooks