X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=doc%2Fmanual.txt;h=af554fc9a3be5c12a6257a23a02d9cbd684ebdde;hp=621302b2d2e840340f02454dea5fc0ceb47d6b62;hb=5f6b586de5a46f2359a4fc392fd89f1716d847a3;hpb=e83dbdbc6200a71981d06773869cd0492f81f16c diff --git a/doc/manual.txt b/doc/manual.txt index 621302b..af554fc 100644 --- a/doc/manual.txt +++ b/doc/manual.txt @@ -1,10127 +1,11199 @@ - TThhee MMuutttt NNeexxtt GGeenneerraattiioonn EE--MMaaiill CClliieenntt +The Mutt Next Generation E-Mail Client - by Andreas Krennmair and others - originally based on _m_u_t_t by Michael Elkins and others +Andreas Krennmair - version devel + - AAbbssttrraacctt +Michael Elkins - 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!'' + - _1_. _I_n_t_r_o_d_u_c_t_i_o_n + version devel-r553 + + _A_b_s_t_r_a_c_t - _1_._1 _O_v_e_r_v_i_e_w + 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!'' + _________________________________________________________________ + + _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s + + 11..  IInnttrroodduuccttiioonn + + 11..  OOvveerrvviieeww + 22..  MMuutttt--nngg  HHoommee  PPaaggee + 33..  MMaaiilliinngg  LLiissttss + 44..  SSooffttwwaarree  DDiissttrriibbuuttiioonn  SSiitteess + 55..  IIRRCC + 66..  WWeebblloogg + 77..  CCooppyyrriigghhtt + 88..  MMaannuuaall  CCoonnvveennttiioonnss + + 22..  GGeettttiinngg  SSttaarrtteedd + + 11..  BBaassiicc  CCoonncceeppttss + + 11..11..  SSccrreeeennss  aanndd  MMeennuuss + 11..22..  CCoonnffiigguurraattiioonn + 11..33..  FFuunnccttiioonnss + 11..44..  IInntteerraaccttiioonn + 11..55..  MMoodduullaarriizzaattiioonn + 11..66..  PPaatttteerrnnss + + 22..  SSccrreeeennss  aanndd  MMeennuuss - MMuutttt--nngg is a small but very powerful text-based MIME mail client. Mutt-ng is - highly configurable, and is well suited to the mail power user with advanced - features like key bindings, keyboard macros, mail threading, regular expression - searches and a powerful pattern matching language for selecting groups of mes- - sages. + 22..11..  IInnddeexx + 22..22..  PPaaggeerr + 22..33..  FFiillee  BBrroowwsseerr + 22..44..  SSiiddeebbaarr + 22..55..  HHeellpp + 22..66..  CCoommppoossee  MMeennuu + 22..77..  AAlliiaass  MMeennuu + 22..88..  AAttttaacchhmmeenntt  MMeennuu + 22..99..  KKeeyy  MMeennuu + + 33..  MMoovviinngg  AArroouunndd  iinn  MMeennuuss + 44..  EEddiittiinngg  IInnppuutt  FFiieellddss + 55..  RReeaaddiinngg  MMaaiill  --  TThhee  IInnddeexx  aanndd  PPaaggeerr + + 55..11..  TThhee  MMeessssaaggee  IInnddeexx + 55..22..  TThhee  PPaaggeerr + 55..33..  TThhrreeaaddeedd  MMooddee + 55..44..  MMiisscceellllaanneeoouuss  FFuunnccttiioonnss - This documentation additionally contains documentation to MMuutttt--NNGG, a fork from - Mutt with the goal to fix all the little annoyances of Mutt, to integrate all - the Mutt patches that are floating around in the web, and to add other new fea- - tures. Features specific to Mutt-ng will be discussed in an extra section. - Don't be confused when most of the documentation talk about Mutt and not Mutt- - ng, Mutt-ng contains all Mutt features, plus many more. + 66..  SSeennddiinngg  MMaaiill - _1_._2 _M_u_t_t_-_n_g _H_o_m_e _P_a_g_e + 66..11..  CCoommppoossiinngg  nneeww  mmeessssaaggeess + 66..22..  RReeppllyyiinngg + 66..33..  EEddiittiinngg  tthhee  mmeessssaaggee  hheeaaddeerr + 66..44..  UUssiinngg  MMuutttt--nngg  wwiitthh  PPGGPP + 66..55..  SSeennddiinngg  aannoonnyymmoouuss  mmeessssaaggeess  vviiaa  mmiixxmmaasstteerr - http://www.muttng.org + 77..  FFoorrwwaarrddiinngg  aanndd  BBoouunncciinngg  MMaaiill + 88..  PPoossttppoonniinngg  MMaaiill - _1_._3 _M_a_i_l_i_n_g _L_i_s_t_s + 33..  CCoonnffiigguurraattiioonn - +o mutt-ng-users@lists.berlios.de -- This is where the mutt-ng user support - happens. + 11..  LLooccaattiioonnss  ooff  CCoonnffiigguurraattiioonn  FFiilleess + 22..  BBaassiicc  SSyynnttaaxx  ooff  IInniittiiaalliizzaattiioonn  FFiilleess + 33..  EExxppaannssiioonn  wwiitthhiinn  vvaarriiaabblleess - The Mutt Next Generation E-Mail Client 1 + 33..11..  CCoommmmaannddss''  OOuuttppuutt + 33..22..  EEnnvviirroonnmmeenntt  VVaarriiaabblleess + 33..33..  CCoonnffiigguurraattiioonn  VVaarriiaabblleess + 33..44..  SSeellff--DDeeffiinneedd  VVaarriiaabblleess + 33..55..  PPrree--DDeeffiinneedd  VVaarriiaabblleess + 33..66..  TTyyppee  CCoonnvveerrssiioonnss - The Mutt Next Generation E-Mail Client 2 + 44..  DDeeffiinniinngg//UUssiinngg  aalliiaasseess + 55..  CChhaannggiinngg  tthhee  ddeeffaauulltt  kkeeyy  bbiinnddiinnggss + 66..  DDeeffiinniinngg  aalliiaasseess  ffoorr  cchhaarraacctteerr  sseettss + 77..  SSeettttiinngg  vvaarriiaabblleess  bbaasseedd  uuppoonn  mmaaiillbbooxx + 88..  KKeeyybbooaarrdd  mmaaccrrooss + 99..  UUssiinngg  ccoolloorr  aanndd  mmoonnoo  vviiddeeoo  aattttrriibbuutteess + 1100..  IIggnnoorriinngg  ((wweeeeddiinngg))  uunnwwaanntteedd  mmeessssaaggee  hheeaaddeerrss + 1111..  AAlltteerrnnaattiivvee  aaddddrreesssseess + 1122..  FFoorrmmaatt  ==  FFlloowweedd - +o mutt-ng-devel@lists.berlios.de -- The development mailing list for mutt-ng + 1122..11..  IInnttrroodduuccttiioonn + 1122..22..  RReecceeiivviinngg::  DDiissppllaayy  SSeettuupp + 1122..33..  SSeennddiinngg + 1122..44..  AAddddiittiioonnaall  NNootteess - _1_._4 _S_o_f_t_w_a_r_e _D_i_s_t_r_i_b_u_t_i_o_n _S_i_t_e_s + 1133..  MMaaiilliinngg  lliissttss + 1144..  UUssiinngg  MMuullttiippllee  ssppooooll  mmaaiillbbooxxeess + 1155..  DDeeffiinniinngg  mmaaiillbbooxxeess  wwhhiicchh  rreecceeiivvee  mmaaiill + 1166..  UUsseerr  ddeeffiinneedd  hheeaaddeerrss + 1177..  DDeeffiinniinngg  tthhee  oorrddeerr  ooff  hheeaaddeerrss  wwhheenn  vviieewwiinngg  mmeessssaaggeess + 1188..  SSppeecciiffyy  ddeeffaauulltt  ssaavvee  ffiilleennaammee + 1199..  SSppeecciiffyy  ddeeffaauulltt  FFcccc::  mmaaiillbbooxx  wwhheenn  ccoommppoossiinngg + 2200..  SSppeecciiffyy  ddeeffaauulltt  ssaavvee  ffiilleennaammee  aanndd  ddeeffaauulltt  FFcccc::  mmaaiillbbooxx  aatt + oonnccee - So far, there are no official releases of Mutt-ng, but you can download daily - snapshots from http://mutt-ng.berlios.de/snapshots/ + 2211..  CChhaannggee  sseettttiinnggss  bbaasseedd  uuppoonn  mmeessssaaggee  rreecciippiieennttss + 2222..  CChhaannggee  sseettttiinnggss  bbeeffoorree  ffoorrmmaattttiinngg  aa  mmeessssaaggee + 2233..  CChhoooossiinngg  tthhee  ccrryyppttooggrraapphhiicc  kkeeyy  ooff  tthhee  rreecciippiieenntt + 2244..  AAddddiinngg  kkeeyy  sseeqquueenncceess  ttoo  tthhee  kkeeyybbooaarrdd  bbuuffffeerr + 2255..  EExxeeccuuttiinngg  ffuunnccttiioonnss + 2266..  MMeessssaaggee  SSccoorriinngg + 2277..  SSppaamm  ddeetteeccttiioonn + 2288..  SSeettttiinngg  vvaarriiaabblleess + 2299..  RReeaaddiinngg  iinniittiiaalliizzaattiioonn  ccoommmmaannddss  ffrroomm  aannootthheerr  ffiillee + 3300..  RReemmoovviinngg  hhooookkss + 3311..  SShhaarriinngg  SSeettuuppss + + 3311..11..  CChhaarraacctteerr  SSeettss + 3311..22..  MMoodduullaarriizzaattiioonn + 3311..33..  CCoonnddiittiioonnaall  ppaarrttss + + 3322..  OObbssoolleettee  VVaarriiaabblleess + + 44..  AAddvvaanncceedd  UUssaaggee + + 11..  RReegguullaarr  EExxpprreessssiioonnss + 22..  PPaatttteerrnnss + + 22..11..  CCoommpplleexx  PPaatttteerrnnss + 22..22..  PPaatttteerrnnss  aanndd  DDaatteess + + 33..  FFoorrmmaatt  SSttrriinnggss + + 33..11..  IInnttrroodduuccttiioonn + 33..22..  CCoonnddiittiioonnaall  EExxppaannssiioonn + 33..33..  MMooddiiffiiccaattiioonnss  aanndd  PPaaddddiinngg + + 44..  UUssiinngg  TTaaggss + 55..  UUssiinngg  HHooookkss + + 55..11..  MMeessssaaggee  MMaattcchhiinngg  iinn  HHooookkss + + 66..  UUssiinngg  tthhee  ssiiddeebbaarr + 77..  EExxtteerrnnaall  AAddddrreessss  QQuueerriieess + 88..  MMaaiillbbooxx  FFoorrmmaattss + 99..  MMaaiillbbooxx  SShhoorrttccuuttss + 1100..  HHaannddlliinngg  MMaaiilliinngg  LLiissttss + 1111..  EEddiittiinngg  tthhrreeaaddss + + 1111..11..  LLiinnkkiinngg  tthhrreeaaddss + 1111..22..  BBrreeaakkiinngg  tthhrreeaaddss + + 1122..  DDeelliivveerryy  SSttaattuuss  NNoottiiffiiccaattiioonn  ((DDSSNN))  SSuuppppoorrtt + 1133..  PPOOPP33  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) + 1144..  IIMMAAPP  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) + + 1144..11..  TThhee  FFoollddeerr  BBrroowwsseerr + 1144..22..  AAuutthheennttiiccaattiioonn + + 1155..  NNNNTTPP  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) + + 1155..11..  AAggaaiinn::  SSccoorriinngg + + 1166..  SSMMTTPP  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) + 1177..  MMaannaaggiinngg  mmuullttiippllee  IIMMAAPP//PPOOPP//NNNNTTPP  aaccccoouunnttss  ((OOPPTTIIOONNAALL)) + 1188..  SSttaarrtt  aa  WWWWWW  BBrroowwsseerr  oonn  UURRLLss  ((EEXXTTEERRNNAALL)) + 1199..  CCoommpprreesssseedd  ffoollddeerrss  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) + + 1199..11..  OOppeenn  aa  ccoommpprreesssseedd  mmaaiillbbooxx  ffoorr  rreeaaddiinngg + 1199..22..  WWrriittee  aa  ccoommpprreesssseedd  mmaaiillbbooxx + 1199..33..  AAppppeenndd  aa  mmeessssaaggee  ttoo  aa  ccoommpprreesssseedd  mmaaiillbbooxx + 1199..44..  EEnnccrryypptteedd  ffoollddeerrss + + 55..  MMuutttt--nngg''ss  MMIIMMEE  SSuuppppoorrtt + + 11..  UUssiinngg  MMIIMMEE  iinn  MMuutttt + + 11..11..  VViieewwiinngg  MMIIMMEE  mmeessssaaggeess  iinn  tthhee  ppaaggeerr + 11..22..  TThhee  AAttttaacchhmmeenntt  MMeennuu + 11..33..  TThhee  CCoommppoossee  MMeennuu + + 22..  MMIIMMEE  TTyyppee  ccoonnffiigguurraattiioonn  wwiitthh  mmiimmee..ttyyppeess + 33..  MMIIMMEE  VViieewweerr  ccoonnffiigguurraattiioonn  wwiitthh  mmaaiillccaapp + + 33..11..  TThhee  BBaassiiccss  ooff  tthhee  mmaaiillccaapp  ffiillee + 33..22..  SSeeccuurree  uussee  ooff  mmaaiillccaapp + 33..33..  AAddvvaanncceedd  mmaaiillccaapp  UUssaaggee + 33..44..  EExxaammppllee  mmaaiillccaapp  ffiilleess + + 44..  MMIIMMEE  AAuuttoovviieeww + 55..  MMIIMMEE  MMuullttiippaarrtt//AAlltteerrnnaattiivvee + 66..  AAttttaacchhmmeenntt  SSeeaarrcchhiinngg  aanndd  CCoouunnttiinngg + 77..  MMIIMMEE  LLooookkuupp + + 66..  SSeeccuurriittyy  CCoonnssiiddeerraattiioonnss + + 11..  PPaasssswwoorrddss + 22..  TTeemmppoorraarryy  FFiilleess + 33..  IInnffoorrmmaattiioonn  LLeeaakkss + + 33..11..  MMeessssaaggee--IIDD::  hheeaaddeerrss + 33..22..  mmaaiillttoo::--ssttyyllee  lliinnkkss + + 44..  EExxtteerrnnaall  aapppplliiccaattiioonnss + + 44..11..  mmaaiillccaapp + 44..22..  OOtthheerr + + 77..  RReeffeerreennccee + + 11..  CCoommmmaanndd  lliinnee  ooppttiioonnss + 22..  PPaatttteerrnnss + 33..  CCoonnffiigguurraattiioonn  CCoommmmaannddss + 44..  CCoonnffiigguurraattiioonn  vvaarriiaabblleess + 55..  FFuunnccttiioonnss - _1_._5 _I_R_C + 55..11..  ggeenneerriicc + 55..22..  iinnddeexx + 55..33..  ppaaggeerr + 55..44..  aalliiaass + 55..55..  qquueerryy + 55..66..  aattttaacchh + 55..77..  ccoommppoossee + 55..88..  ppoossttppoonnee + 55..99..  bbrroowwsseerr + 55..1100..  ppggpp + 55..1111..  eeddiittoorr + 55..1122..  ssiiddeebbaarr + + AA..  AAcckknnoowwlleeddggmmeennttss + BB..  HHaacckkiinngg  DDooccuummeennttaattiioonn + IInnddeexx + + _L_i_s_t_ _o_f_ _T_a_b_l_e_s + + 2.1. MMoosstt  ccoommmmoonnllyy  uusseedd  mmoovveemmeenntt  bbiinnddiinnggss + 2.2. LLiinnee  EEddiittoorr  FFuunnccttiioonnss + 2.3. MMoosstt  ccoommmmoonnllyy  uusseedd  IInnddeexx  BBiinnddiinnggss + 2.4. MMoosstt  ccoommmmoonnllyy  uusseedd  PPaaggeerr  BBiinnddiinnggss + 2.5. AANNSSII  EEssccaappee  SSeeqquueenncceess + 2.6. AANNSSII  CCoolloorrss + 2.7. MMoosstt  ccoommmmoonnllyy  uusseedd  tthhrreeaadd--rreellaatteedd  bbiinnddiinnggss + 2.8. MMoosstt  ccoommmmoonnllyy  uusseedd  MMaaiill  CCoommppoossiittiioonn  BBiinnddiinnggss + 2.9. MMoosstt  ccoommmmoonnllyy  uusseedd  CCoommppoossee  MMeennuu  BBiinnddiinnggss + 2.10. PPGGPP  KKeeyy  MMeennuu  FFllaaggss + 3.1. AAlltteerrnnaattiivvee  KKeeyy  NNaammeess + 7.1. RReeffeerreennccee::  CCoommmmaanndd  LLiinnee  OOppttiioonnss + 7.2. RReeffeerreennccee::  PPaatttteerrnnss + 7.3. RReeffeerreennccee::  OObbssoolleettee  VVaarriiaabblleess + 7.4. RReeffeerreennccee::  DDeeffaauulltt  GGeenneerriicc  FFuunnccttiioonn  BBiinnddiinnggss + 7.5. RReeffeerreennccee::  DDeeffaauulltt  IInnddeexx  FFuunnccttiioonn  BBiinnddiinnggss + 7.6. RReeffeerreennccee::  DDeeffaauulltt  PPaaggeerr  FFuunnccttiioonn  BBiinnddiinnggss + 7.7. RReeffeerreennccee::  DDeeffaauulltt  AAlliiaass  MMeennuu  FFuunnccttiioonn  BBiinnddiinnggss + 7.8. RReeffeerreennccee::  DDeeffaauulltt  QQuueerryy  MMeennuu  FFuunnccttiioonn  BBiinnddiinnggss + 7.9. RReeffeerreennccee::  DDeeffaauulltt  AAttttaacchhmmeenntt  MMeennuu  FFuunnccttiioonn  BBiinnddiinnggss + 7.10. RReeffeerreennccee::  DDeeffaauulltt  CCoommppoossee  MMeennuu  FFuunnccttiioonn  BBiinnddiinnggss + 7.11. RReeffeerreennccee::  DDeeffaauulltt  PPoossttppoonnee  MMeennuu  FFuunnccttiioonn  BBiinnddiinnggss + 7.12. RReeffeerreennccee::  DDeeffaauulltt  BBrroowwsseerr  MMeennuu  FFuunnccttiioonn  BBiinnddiinnggss + 7.13. RReeffeerreennccee::  DDeeffaauulltt  PPGGPP  MMeennuu  FFuunnccttiioonn  BBiinnddiinnggss + 7.14. RReeffeerreennccee::  DDeeffaauulltt  EEddiittoorr  FFuunnccttiioonn  BBiinnddiinnggss + 7.15. RReeffeerreennee::  DDeeffaauulltt  SSiiddeebbaarr  FFuunnccttiioonn  BBiinnddiinnggss + +Chapter 1. Introduction + + _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s + + 11..  OOvveerrvviieeww + 22..  MMuutttt--nngg  HHoommee  PPaaggee + 33..  MMaaiilliinngg  LLiissttss + 44..  SSooffttwwaarree  DDiissttrriibbuuttiioonn  SSiitteess + 55..  IIRRCC + 66..  WWeebblloogg + 77..  CCooppyyrriigghhtt + 88..  MMaannuuaall  CCoonnvveennttiioonnss + +1. Overview + + _M_u_t_t_-_n_g 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 _M_u_t_t_-_N_G ,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. + +2. Mutt-ng Home Page + + <> + +3. Mailing Lists + + * : This is where the mutt-ng user + support happens. + * : The development mailing list for + mutt-ng + +4. Software Distribution Sites + + So far, there are no official releases of Mutt-ng, but you can + download daily snapshots from <> + +5. IRC + + Visit channel _#_m_u_t_t_n_g on iirrcc..ffrreeeennooddee..nneett  ((wwwwww..ffrreeeennooddee..nneett)) to chat + with other people interested in Mutt-ng. + +6. 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 MMuutttt--nngg  ddeevveellooppmmeenntt  wweebblloogg. + +7. Copyright + + Mutt is Copyright (C) 1996-2000 Michael R. Elkins 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., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + +8. Manual Conventions + + This manual contains several (hopefully consistent) conventions to + specially layout different items in different fashions. + + * Configuration and environment variables will be printed in a + typewriter font and both prefixed with a dollar sign as it's + common for UNIX-like environments. Configuration variables are + lower-case only while environment variables are upper-case only. + $$iimmaapp__mmaaiill__cchheecckk is a configuration variable while $EDITOR is an + environment variable. + * Muttng-specific functions are enclosed in <> and printed in a + typewriter font, too, as in . + * As common for UNIX-like environments, references to manual pages + are printed with the section enclosed in braces, as in vi(1) or + muttngrc(5). Execute man [section] [name] to view the manual page. + * Keys are presented in the following way: ordinary keys are just + given as-is, e.g. q. Control characters are prefixed with C- (e.g. + the screen can be redraw by pressing C-L) and E- for Escape, e.g. + a folder can be opened read-only with E-c. + + If, while reading this fine manual, you find any inconsistencies of + whatever kind, please contact the developers via + to report it. + +Chapter 2. Getting Started + + _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s + + 11..  BBaassiicc  CCoonncceeppttss + + 11..11..  SSccrreeeennss  aanndd  MMeennuuss + 11..22..  CCoonnffiigguurraattiioonn + 11..33..  FFuunnccttiioonnss + 11..44..  IInntteerraaccttiioonn + 11..55..  MMoodduullaarriizzaattiioonn + 11..66..  PPaatttteerrnnss + + 22..  SSccrreeeennss  aanndd  MMeennuuss + + 22..11..  IInnddeexx + 22..22..  PPaaggeerr + 22..33..  FFiillee  BBrroowwsseerr + 22..44..  SSiiddeebbaarr + 22..55..  HHeellpp + 22..66..  CCoommppoossee  MMeennuu + 22..77..  AAlliiaass  MMeennuu + 22..88..  AAttttaacchhmmeenntt  MMeennuu + 22..99..  KKeeyy  MMeennuu + + 33..  MMoovviinngg  AArroouunndd  iinn  MMeennuuss + 44..  EEddiittiinngg  IInnppuutt  FFiieellddss + 55..  RReeaaddiinngg  MMaaiill  --  TThhee  IInnddeexx  aanndd  PPaaggeerr + + 55..11..  TThhee  MMeessssaaggee  IInnddeexx + 55..22..  TThhee  PPaaggeerr + 55..33..  TThhrreeaaddeedd  MMooddee + 55..44..  MMiisscceellllaanneeoouuss  FFuunnccttiioonnss + + 66..  SSeennddiinngg  MMaaiill + + 66..11..  CCoommppoossiinngg  nneeww  mmeessssaaggeess + 66..22..  RReeppllyyiinngg + 66..33..  EEddiittiinngg  tthhee  mmeessssaaggee  hheeaaddeerr + 66..44..  UUssiinngg  MMuutttt--nngg  wwiitthh  PPGGPP + 66..55..  SSeennddiinngg  aannoonnyymmoouuss  mmeessssaaggeess  vviiaa  mmiixxmmaasstteerr + + 77..  FFoorrwwaarrddiinngg  aanndd  BBoouunncciinngg  MMaaiill + 88..  PPoossttppoonniinngg  MMaaiill + +1. Basic Concepts + +1.1. Screens and Menus + + mutt-ng offers different screens of which every has its special + purpose: + + * The _i_n_d_e_x displays the contents of the currently opened mailbox. + * The _p_a_g_e_r is responsible for displaying messages, that is, the + header, the body and all attached parts. + * The _f_i_l_e_ _b_r_o_w_s_e_r offers operations on and displays information of + all folders mutt-ng should watch for mail. + * The _s_i_d_e_b_a_r offers a permanent view of which mailboxes contain how + many total, new and/or flagged mails. + * The _h_e_l_p_ _s_c_r_e_e_n lists for all currently available commands how to + invoke them as well as a short description. + * The _c_o_m_p_o_s_e menu is a comfortable interface take last actions + before sending mail: change subjects, attach files, remove + attachements, etc. + * The _a_t_t_a_c_h_e_m_e_n_t menu gives a summary and the tree structure of the + attachements of the current message. + * The _a_l_i_a_s menu lists all or a fraction of the aliases a user has + defined. + * The _k_e_y 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. + +1.2. Configuration + + Mutt-ng does _n_o_t feature an internal configuration interface or menu + due to the simple fact that this would be too complex to handle + (currently there are several _h_u_n_d_r_e_d 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. + +1.3. 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. + +1.4. Interaction + + Mutt-ng has two basic concepts of user interaction: + + 1. There is one dedicated line on the screen used to query the user + for input, issue any command, query variables and display error + and informational messages. As for every type of user input, this + requires manual action leading to the need of input. + 2. The automatized interface for interaction are the so called _h_o_o_k_s. + 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. + +1.5. 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. + +1.6. 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. + +2. Screens and Menus + +2.1. 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. + +2.2. Pager + + The pager is responsible for showing the email content. On the top of + the pager you have an overview over the most important email headers + like the sender, the recipient, the subject, and much more + information. How much information you actually see depends on your + configuration, which we'll describe below. + + Below the headers, you see the email body which usually contains the + message. If the email contains any attachments, you will see more + information about them below the email body, or, if the attachments + are text files, you can view them directly in the pager. + + To give the user a good overview, it is possible to configure mutt-ng + to show different things in the pager with different colors. Virtually + everything that can be described with a regular expression can be + colored, e.g. URLs, email addresses or smileys. + +2.3. File Browser + + The file browser is the interface to the local or remote file system. + When selecting a mailbox to open, the browser allows custom sorting of + items, limiting the items shown by a regular expression and a freely + adjustable format of what to display in which way. It also allows for + easy navigation through the file system when selecting file(s) to + attach to a message, select multiple files to attach and many more. + +2.4. Sidebar + + The sidebar comes in handy to manage mails which are spread over + different folders. All folders users setup mutt-ng to watch for new + mail will be listed. The listing includes not only the name but also + the number of total messages, the number of new and flagged messages. + Items with new mail may be colored different from those with flagged + mail, items may be shortened or compress if they're they to long to be + printed in full form so that by abbreviated names, user still now what + the name stands for. + +2.5. Help + + The help screen is meant to offer a quick help to the user. It lists + the current configuration of key bindings and their associated + commands including a short description, and currently unbound + functions that still need to be associated with a key binding (or + alternatively, they can be called via the mutt-ng command prompt). + +2.6. Compose Menu + + The compose menu features a split screen containing the information + which really matter before actually sending a message by mail or + posting an article to a newsgroup: who gets the message as what + (recipient, newsgroup, who gets what kind of copy). Additionally, + users may set security options like deciding whether to sign, encrypt + or sign and encrypt a message with/for what keys. + + Also, it's used to attach messages, news articles or files to a + message, to re-edit any attachment including the message itself. + +2.7. Alias Menu + + The alias menu is used to help users finding the recipients of + messages. For users who need to contact many people, there's no need + to remember addresses or names completely because it allows for + searching, too. The alias mechanism and thus the alias menu also + features grouping several addresses by a shorter nickname, the actual + alias, so that users don't have to select each single recipient + manually. + +2.8. Attachment Menu + + As will be later discussed in detail, mutt-ng features a good and + stable MIME implementation, that is, is greatly supports sending and + receiving messages of arbitrary type. The attachment menu displays a + message's structure in detail: what content parts are attached to + which parent part (which gives a true tree structure), which type is + of what type and what size. Single parts may saved, deleted or + modified to offer great and easy access to message's internals. + +2.9. Key Menu + + FIXME + +3. Moving Around in Menus + + Information is presented in menus, very similar to ELM. Here is a + tableshowing the common keys used to navigate menus in Mutt-ng. + + _T_a_b_l_e_ _2_._1_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _m_o_v_e_m_e_n_t_ _b_i_n_d_i_n_g_s + Key Function Description + j or Down move to the next entry + k or Up move to the previous entry + z or PageDn go to the next page + Z or PageUp go to the previous page + = or Home jump to the first entry + * or End jump to the last entry + q exit the current menu + ? list all key bindings for the current menu + +4. Editing Input Fields + + Mutt-ng has a builtin line editor which is used as the primary way to + input textual data such as email addresses or filenames. The keys used + to move around while editing are very similar to those of Emacs. + + _T_a_b_l_e_ _2_._2_._ _L_i_n_e_ _E_d_i_t_o_r_ _F_u_n_c_t_i_o_n_s + Key Function Description + C-A or Home move to the start of the line + C-B or Left move back one char + E-B move back one word + C-D or Delete delete the char under the cursor + C-E or End move to the end of the line + C-F or Right move forward one char + E-F move forward one word + Tab complete filename or alias + C-T complete address with query + C-K delete to the end of the line + E-d delete to the end of the word + C-W kill the word in front of the cursor + C-U delete entire line + C-V quote the next typed key + Up recall previous string from history + Down recall next string from history + BackSpace kill the char in front of the cursor + E-u convert word to upper case + E-l convert word to lower case + E-c capitalize the word + C-G abort + Return finish editing + + You can remap the _e_d_i_t_o_r functions using the bbiinndd command. For + example, to make the _D_e_l_e_t_e key delete the character in front of the + cursor rather than under, you could use + + bind editor backspace + +5. Reading Mail - The Index and Pager + + Similar to many other mail clients, there are two modes in which mail + isread in Mutt-ng. The first is the index of messages in the mailbox, + which is called the ``index'' in Mutt-ng. The second mode is the + display of the message contents. This is called the ``pager.'' + + The next few sections describe the functions provided in each of these + modes. + +5.1. The Message Index + + _T_a_b_l_e_ _2_._3_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _I_n_d_e_x_ _B_i_n_d_i_n_g_s + Key Function Description + c change to a different mailbox + E-c change to a folder in read-only mode + C copy the current message to another mailbox + E-C decode a message and copy it to a folder + E-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 + E-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 or unread message + @ show the author's full e-mail address + $ save changes to mailbox + / search + E-/ search-reverse + C-L clear and redraw the screen + C-T untag messages matching a pattern + +5.1.1. 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 + * _s_e_t_-_f_l_a_g (default: w) + * _c_l_e_a_r_-_f_l_a_g (default: W) + + Furthermore, the following flags reflect who the message is addressed + to. They can be customized with the $$ttoo__cchhaarrss 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 + +5.2. 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 _l_e_s_s though + not nearly as featureful. + + _T_a_b_l_e_ _2_._4_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _P_a_g_e_r_ _B_i_n_d_i_n_g_s + 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) + E-/ search backwards for a regular expression + \ toggle search pattern coloring + ^ jump to the top of the message + + In addition, many of the functions from the _i_n_d_e_x are available in the + pager, such as _d_e_l_e_t_e_-_m_e_s_s_a_g_e or _c_o_p_y_-_m_e_s_s_a_g_e (this is one advantage + over using an external pager to view messages). + + Also, the internal pager supports a couple other advanced features. + For one, it will accept and translate the ``standard'' nroff sequences + forbold and underline. These sequences are a series of either the + letter, backspace (C-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 ccoolloorr 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). + + _T_a_b_l_e_ _2_._5_._ _A_N_S_I_ _E_s_c_a_p_e_ _S_e_q_u_e_n_c_e_s + 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) + + _T_a_b_l_e_ _2_._6_._ _A_N_S_I_ _C_o_l_o_r_s + 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 aauuttoo__vviieeww script for highlighting + purposes. _N_o_t_e_: If you change the colors for your display, for example + by changing the color associated with color2 for your xterm, then that + color will be used instead of green. + +5.3. Threaded Mode + + When the mailbox is ssoorrtteedd by _t_h_r_e_a_d_s ,there are a few additional + functions available in the _i_n_d_e_x and _p_a_g_e_r modes. + + _T_a_b_l_e_ _2_._7_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _t_h_r_e_a_d_-_r_e_l_a_t_e_d_ _b_i_n_d_i_n_g_s + Key Function Description + C-D delete all messages in the current thread + C-U undelete all messages in the current thread + C-N jump to the start of the next thread + C-P jump to the start of the previous thread + C-R mark the current thread as read + E-d delete all messages in the current subthread + E-u undelete all messages in the current + subthread + E-n jump to the start of the next subthread + E-p jump to the start of the previous subthread + E-r mark the current subthread as read + E-t toggle the tag on the current thread + E-v toggle collapse for the current thread + E-V toggle collapse for all threads + P jump to parent message in thread + + _N_o_t_e_: 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 $$iinnddeexx__ffoorrmmaatt. + + For example, you could use %?M?(#%03M)&(%4l)? in $$iinnddeexx__ffoorrmmaatt to + optionally display the number of hidden messages if the thread is + collapsed. + + See also the $$ssttrriicctt__tthhrreeaaddss variable. + +5.4. Miscellaneous Functions + + (default: a) + + Creates a new alias based upon the current message (or prompts for a + new one). Once editing is complete, an aalliiaass command is added to the + file specified by the $$aalliiaass__ffiillee variable for future use. _N_o_t_e_: + Specifying an $$aalliiaass__ffiillee does not add the aliases specified there-in, + you must also ssoouurrccee the file. + + (default: E-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 function's effect. + + (default: h) + + Toggles the weeding of message header fields specified by iiggnnoorree + commands. + + (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. + + (default: ) (default: C-E on the attachment menu, and in + the pager and index menus; C-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 aattttaacchh--mmeennuu, 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 ccoommppoossee--mmeennuu .There, + it's used to fine-tune the properties of attachments you are going to + send. + + (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 mmaaccrroo to change settings on the fly. + + (default: C-K) + + This command extracts PGP public keys from the current or tagged + message(s) and adds them to your PGP public key ring. + + (default: C-F) + + This command wipes the passphrase(s) from memory. It is useful, if you + misspelled the passphrase. - Visit channel _#_m_u_t_t_n_g on irc.freenode.net (www.freenode.net) to chat with other - people interested in Mutt-ng. + (default: L) + + Reply to the current or tagged message(s) by extracting any addresses + which match the regular expressions given by the lliissttss commands, but + also honor any Mail-Followup-To header(s) if the $$hhoonnoorr__ffoolllloowwuupp__ttoo + 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. + + (default: ) + + Asks for an external Unix command and pipes the current or tagged + message(s) to it. The variables $$ppiippee__ddeeccooddee, $$ppiippee__sspplliitt, + $$ppiippee__ddeeccooddee and $$wwaaiitt__kkeeyy control the exact behavior of this + function. + + (default: E-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 $$wweeeedd + variable. - _1_._6 _W_e_b_l_o_g + 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. - 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. + (default: !) - _1_._7 _C_o_p_y_r_i_g_h_t + Asks for an external Unix command and executes it. The $$wwaaiitt__kkeeyy 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. - Mutt is Copyright (C) 1996-2000 Michael R. Elkins and others + (default: T) - This program is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free Software - Foundation; either version 2 of the License, or (at your option) any later ver- - sion. + The _p_a_g_e_r uses the $$qquuoottee__rreeggeexxpp 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. + + (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. + +6. Sending Mail + + The following bindings are available in the _i_n_d_e_x for sending + messages. + + _T_a_b_l_e_ _2_._8_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _M_a_i_l_ _C_o_m_p_o_s_i_t_i_o_n_ _B_i_n_d_i_n_g_s + Key Function Description + m compose a new message + r reply to sender + g reply to all recipients + L reply to mailing list address + f forward message + b bounce (remail) message + E-k 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 ffoorrwwaarrddiinngg--mmaaiill. + +6.1. Composing new messages + + When you want to send an email using mutt-ng, simply press m on your + keyboard. Then, mutt-ng asks for the recipient via a prompt in the + last line: + +To: + + After you've finished entering the recipient(s), press return. If you + want to send an email to more than one recipient, separate the email + addresses using the comma ",". Mutt-ng then asks you for the email + subject. Again, press return after you've entered it. After that, + mutt-ng got the most important information from you, and starts up an + editor where you can then enter your email. + + The editor that is called is selected in the following way: you can + e.g. set it in the mutt-ng configuration: + +set editor = "vim +/^$/ -c ':set tw=72'" +set editor = "nano" +set editor = "emacs" + + If you don't set your preferred editor in your configuration, mutt-ng + first looks whether the environment variable $VISUAL is set, and if + so, it takes its value as editor command. Otherwise, it has a look at + $EDITOR and takes its value if it is set. If no editor command can be + found, mutt-ng simply assumes vi(1) to be the default editor, since + it's the most widespread editor in the Unix world and it's pretty safe + to assume that it is installed and available. + + When you've finished entering your message, save it and quit your + editor. Mutt-ng will then present you with a summary screen, the + compose menu. On the top, you see a summary of the most important + available key commands. Below that, you see the sender, the + recipient(s), Cc and/or Bcc recipient(s), the subject, the reply-to + address, and optionally information where the sent email will be + stored and whether it should be digitally signed and/or encrypted. + + Below that, you see a list of "attachments". The mail you've just + entered before is also an attachment, but due to its special type + (it's plain text), it will be displayed as the normal message on the + receiver's side. + + At this point, you can add more attachments, pressing a, you can edit + the recipient addresses, pressing t for the "To:" field, c for the + "Cc:" field, and b for the "Bcc: field. You can also edit the subject + the subject by simply pressing s or the email message that you've + entered before by pressing e. You will then again return to the + editor. You can even edit the sender, by pressing f, but this + shall only be used with caution. + + Alternatively, you can configure mutt-ng in a way that most of the + above settings can be edited using the editor. Therefore, you only + need to add the following to your configuration: + +set edit_headers + + Once you have finished editing the body of your mail message, you are + returned to the _c_o_m_p_o_s_e menu. The following options are available: + + _T_a_b_l_e_ _2_._9_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _C_o_m_p_o_s_e_ _M_e_n_u_ _B_i_n_d_i_n_g_s + Key Function Description + a attach a file + A attach message(s) to the message + E-k attach a PGP public key + d edit description on attachment + D detach a file + t edit the To field + E-f edit the From field + r edit the Reply-To field + c edit the Cc field + b edit the Bcc field + y send the message + s edit the Subject + S select S/MIME options + f specify an ``Fcc'' mailbox + p select PGP options + P postpone this message until later + q quit (abort) sending the message + w write the message to a folder + i check spelling (if available on your system) + C-F wipe passphrase(s) from memory + + _N_o_t_e_: 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 + $$ssttaattuuss__ffoorrmmaatt will change to a 'A' to indicate that you are in + attach-message mode. + +6.2. Replying + +6.2.1. Simple Replies + + When you want to reply to an email message, select it in the index + menu and then press r. Mutt-ng's behaviour is then similar to the + behaviour when you compose a message: first, you will be asked for the + recipient, then for the subject, and then, mutt-ng will start the + editor with the quote attribution and the quoted message. This can + e.g. look like the example below. + +On Mon, Mar 07, 2005 at 05:02:12PM +0100, Michael Svensson wrote: +> Bill, can you please send last month's progress report to Mr. +> Morgan? We also urgently need the cost estimation for the new +> production server that we want to set up before our customer's +> project will go live. + + You can start editing the email message. It is strongly recommended to + put your answer _b_e_l_o_w the quoted text and to only quote what is really + necessary and that you refer to. Putting your answer on top of the + quoted message, is, although very widespread, very often not + considered to be a polite way to answer emails. + + The quote attribution is configurable, by default it is set to +set attribution = "On %d, %n wrote:" + + It can also be set to something more compact, e.g. +set attribution = "attribution="* %n <%a> [%(%y-%m-%d %H:%M)]:" + + The example above results in the following attribution: +* Michael Svensson [05-03-06 17:02]: +> Bill, can you please send last month's progress report to Mr. +> Morgan? We also urgently need the cost estimation for the new +> production server that we want to set up before our customer's +> project will go live. + + Generally, try to keep your attribution short yet information-rich. It + is _n_o_t the right place for witty quotes, long "attribution" novels or + anything like that: the right place for such things is - if at all - + the email signature at the very bottom of the message. + + When you're done with writing your message, save and quit the editor. + As before, you will return to the compose menu, which is used in the + same way as before. + +6.2.2. Group Replies + + In the situation where a group of people uses email as a discussion, + most of the emails will have one or more recipients, and probably + several "Cc:" recipients. The group reply functionalityensures that + when you press g instead of r to do a reply, each and every recipient + that is contained in the original message will receive a copy of the + message, either as normal recipient or as "Cc:" recipient. + +6.2.3. List Replies + + When you use mailing lists, it's generally better to send your reply + to a message only to the list instead of the list and the original + author. To make this easy to use, mutt-ng features list replies. + + To do a list reply, simply press L. If the email contains a + Mail-Followup-To: header, its value will be used as reply address. + Otherwise, mutt-ng searches through all mail addresses in the original + message and tries to match them a list of regular expressions which + can be specified using the lists command. If any of the regular + expression matches, a mailing list address has been found, and it will + be used as reply address. + +lists linuxevent@luga\.at vuln-dev@ mutt-ng-users@ + + Nowadays, most mailing list software like GNU Mailman adds a + Mail-Followup-To: header to their emails anyway, so setting lists is + hardly ever necessary in practice. + +6.3. Editing the message header + + When editing the header of your outgoing message, there are a couple + of special features available. + + If you specify Fcc:_f_i_l_e_n_a_m_e Mutt-ng will pick up _f_i_l_e_n_a_m_e just as if + you had used the _e_d_i_t_-_f_c_c function in the _c_o_m_p_o_s_e menu. + + You can also attach files to your message by specifying +Attach: filename [description] + + where _f_i_l_e_n_a_m_e is the file to attach and _d_e_s_c_r_i_p_t_i_o_n is an optional + string to use as the description of the attached file. + + When replying to messages, if you remove the _I_n_-_R_e_p_l_y_-_T_o_: field from + the header field, Mutt-ng will not generate a _R_e_f_e_r_e_n_c_e_s_: field, which + allows you to create a new message thread. + + Also see the $$eeddiitt__hheeaaddeerrss and $$eeddiittoorr__hheeaaddeerrss variables + +6.4. 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'' signs with the given key, + setting $$ppggpp__ssiiggnn__aass 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 C-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 + $$ppggpp__eennttrryy__ffoorrmmaatt) 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: + + _T_a_b_l_e_ _2_._1_0_._ _P_G_P_ _K_e_y_ _M_e_n_u_ _F_l_a_g_s + Flag Description + R The key has been revoked and can't be used. + X The key is expired and can't be used. + d You have marked the key as disabled. + c There are unknown critical self-signature packets. + + The capabilities field (%c) expands to a two-character + sequencerepresenting a key's capabilities. The first character gives + the key's encryption capabilities: A minus sign (_- )means that the key + cannot be used for encryption. A dot (_. )means that it's marked as a + signature key in one of the user IDs, but may also be used for + encryption. The letter _e indicates that this key can be used for + encryption. + + The second character indicates the key's signing capabilities. Once + again, a ``_-'' implies ``not for signing'', ``_.'' implies that the key + is marked as an encryption key in one of the user-ids, and ``_s'' + denotes a key which can be used for signing. + + Finally, the validity field (%t) indicates how well-certified a + user-id is. A question mark (_?) indicates undefined validity, a minus + character (_-) marks an untrusted association, a space character means + a partially trusted association, and a plus character (_+ ) indicates + complete validity. + +6.5. Sending anonymous messages via mixmaster + + You may also have configured mutt to co-operate with Mixmaster, an + anonymous remailer. Mixmaster permits you to send your messages + anonymously using a chain of remailers. Mixmaster support in mutt is + for mixmaster version 2.04 (beta 45 appears to be the latest) and + 2.03. It does not support earlier versions or the later so-called + version 3 betas, of which the latest appears to be called 2.9b23. + + 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 + $$mmiixx__eennttrryy__ffoorrmmaatt). 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. + +7. 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 ----- + +From: Lucas User +Date: Thu, 02 Dec 2004 03:08:34 +0100 +To: Michael Random +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 + _b_o_u_n_c_i_n_g: 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. + +8. Postponing Mail + + At times it is desirable to delay sending a message that you have + already begun to compose. When the _p_o_s_t_p_o_n_e_-_m_e_s_s_a_g_e function is used + in the _c_o_m_p_o_s_e menu, the body of your message and attachments are + stored in the mailbox specified by the $$ppoossttppoonneedd 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 _c_o_m_p_o_s_e a + new message from the _i_n_d_e_x or _p_a_g_e_r you will be prompted if postponed + messages exist. If multiple messages are currently postponed, the + _p_o_s_t_p_o_n_e_d menu will pop up and you can select which message you would + like to resume. + + _N_o_t_e_: 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 $$ppoossttppoonnee quad-option. + +Chapter 3. Configuration + + _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s + + 11..  LLooccaattiioonnss  ooff  CCoonnffiigguurraattiioonn  FFiilleess + 22..  BBaassiicc  SSyynnttaaxx  ooff  IInniittiiaalliizzaattiioonn  FFiilleess + 33..  EExxppaannssiioonn  wwiitthhiinn  vvaarriiaabblleess + + 33..11..  CCoommmmaannddss''  OOuuttppuutt + 33..22..  EEnnvviirroonnmmeenntt  VVaarriiaabblleess + 33..33..  CCoonnffiigguurraattiioonn  VVaarriiaabblleess + 33..44..  SSeellff--DDeeffiinneedd  VVaarriiaabblleess + 33..55..  PPrree--DDeeffiinneedd  VVaarriiaabblleess + 33..66..  TTyyppee  CCoonnvveerrssiioonnss + + 44..  DDeeffiinniinngg//UUssiinngg  aalliiaasseess + 55..  CChhaannggiinngg  tthhee  ddeeffaauulltt  kkeeyy  bbiinnddiinnggss + 66..  DDeeffiinniinngg  aalliiaasseess  ffoorr  cchhaarraacctteerr  sseettss + 77..  SSeettttiinngg  vvaarriiaabblleess  bbaasseedd  uuppoonn  mmaaiillbbooxx + 88..  KKeeyybbooaarrdd  mmaaccrrooss + 99..  UUssiinngg  ccoolloorr  aanndd  mmoonnoo  vviiddeeoo  aattttrriibbuutteess + 1100..  IIggnnoorriinngg  ((wweeeeddiinngg))  uunnwwaanntteedd  mmeessssaaggee  hheeaaddeerrss + 1111..  AAlltteerrnnaattiivvee  aaddddrreesssseess + 1122..  FFoorrmmaatt  ==  FFlloowweedd + + 1122..11..  IInnttrroodduuccttiioonn + 1122..22..  RReecceeiivviinngg::  DDiissppllaayy  SSeettuupp + 1122..33..  SSeennddiinngg + 1122..44..  AAddddiittiioonnaall  NNootteess + + 1133..  MMaaiilliinngg  lliissttss + 1144..  UUssiinngg  MMuullttiippllee  ssppooooll  mmaaiillbbooxxeess + 1155..  DDeeffiinniinngg  mmaaiillbbooxxeess  wwhhiicchh  rreecceeiivvee  mmaaiill + 1166..  UUsseerr  ddeeffiinneedd  hheeaaddeerrss + 1177..  DDeeffiinniinngg  tthhee  oorrddeerr  ooff  hheeaaddeerrss  wwhheenn  vviieewwiinngg  mmeessssaaggeess + 1188..  SSppeecciiffyy  ddeeffaauulltt  ssaavvee  ffiilleennaammee + 1199..  SSppeecciiffyy  ddeeffaauulltt  FFcccc::  mmaaiillbbooxx  wwhheenn  ccoommppoossiinngg + 2200..  SSppeecciiffyy  ddeeffaauulltt  ssaavvee  ffiilleennaammee  aanndd  ddeeffaauulltt  FFcccc::  mmaaiillbbooxx  aatt  oonnccee + 2211..  CChhaannggee  sseettttiinnggss  bbaasseedd  uuppoonn  mmeessssaaggee  rreecciippiieennttss + 2222..  CChhaannggee  sseettttiinnggss  bbeeffoorree  ffoorrmmaattttiinngg  aa  mmeessssaaggee + 2233..  CChhoooossiinngg  tthhee  ccrryyppttooggrraapphhiicc  kkeeyy  ooff  tthhee  rreecciippiieenntt + 2244..  AAddddiinngg  kkeeyy  sseeqquueenncceess  ttoo  tthhee  kkeeyybbooaarrdd  bbuuffffeerr + 2255..  EExxeeccuuttiinngg  ffuunnccttiioonnss + 2266..  MMeessssaaggee  SSccoorriinngg + 2277..  SSppaamm  ddeetteeccttiioonn + 2288..  SSeettttiinngg  vvaarriiaabblleess + 2299..  RReeaaddiinngg  iinniittiiaalliizzaattiioonn  ccoommmmaannddss  ffrroomm  aannootthheerr  ffiillee + 3300..  RReemmoovviinngg  hhooookkss + 3311..  SShhaarriinngg  SSeettuuppss + + 3311..11..  CChhaarraacctteerr  SSeettss + 3311..22..  MMoodduullaarriizzaattiioonn + 3311..33..  CCoonnddiittiioonnaall  ppaarrttss + + 3322..  OObbssoolleettee  VVaarriiaabblleess + +1. 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'' ccoommmmaannddlliinnee 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 ccoommmmaannddss to configure Mutt-ng. + +2. Basic Syntax of Initialization Files + + An initialization file consists of a series of ccoommmmaannddss. 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 _n_o_t 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: - 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. +line1\ +line2a # line2b\ +line3\ +line4 +line5 - 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. + 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. - _2_. _G_e_t_t_i_n_g _S_t_a_r_t_e_d + The commands understood by mutt are explained in the next paragraphs. + For a complete list, see the ccoommmmaannddss. - _2_._1 _B_a_s_i_c _C_o_n_c_e_p_t_s +3. Expansion within variables - The Mutt Next Generation E-Mail Client 3 + Besides just assign static content to variables, there's plenty of + ways of adding external and more or less dynamic content. - _2_._1_._1 _S_c_r_e_e_n_s _a_n_d _M_e_n_u_s +3.1. Commands' Output - mutt-ng offers different screens of which every has its special purpose: + 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: - +o The _i_n_d_e_x displays the contents of the currently opened mailbox. +my_hdr X-Operating-System: `uname -a` - +o The _p_a_g_e_r is responsible for displaying messages, that is, the header, the - body and all attached parts. + 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. - +o The _f_i_l_e _b_r_o_w_s_e_r offers operations on and displays information of all - folders mutt-ng should watch for mail. +3.2. Environment Variables - +o The _s_i_d_e_b_a_r offers a permanent view of which mailboxes contain how many - total, new and/or flagged mails. + 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, - +o The _h_e_l_p _s_c_r_e_e_n lists for all currently available commands how to invoke - them as well as a short description. +set record=+sent_on_$HOSTNAME - +o The _c_o_m_p_o_s_e menu is a comfortable interface take last actions before send- - ing mail: change subjects, attach files, remove attachements, etc. + sets the $$rreeccoorrdd variable to the string _+_s_e_n_t___o_n__ and appends the + value of the evironment variable $HOSTNAME. - +o The _a_t_t_a_c_h_e_m_e_n_t menu gives a summary and the tree structure of the - attachements of the current message. + _N_o_t_e_: There will be no warning if an environment variable is not + defined. The result will of the expansion will then be empty. - +o The _a_l_i_a_s menu lists all or a fraction of the aliases a user has defined. +3.3. Configuration Variables - +o The _k_e_y menu used in connection with encryption lets users choose the - right key to encrypt with. + As for environment variables, the values of all configuration + variables as string can be used in the same way, too. For example, - When mutt-ng is started without any further options, it'll open the users - default mailbox and display the index. +set imap_home_namespace = $folder - _2_._1_._2 _C_o_n_f_i_g_u_r_a_t_i_o_n + would set the value of $$iimmaapp__hhoommee__nnaammeessppaaccee to the value to which + $$ffoollddeerr is _c_u_r_r_e_n_t_l_y set to. - Mutt-ng does _n_o_t feature an internal configuration interface or menu due to the - simple fact that this would be too complex to handle (currently there are sev- - eral _h_u_n_d_r_e_d variables which fine-tune the behaviour.) + _N_o_t_e_: There're no logical links established in such cases so that the + the value for $$iimmaapp__hhoommee__nnaammeessppaaccee won't change even if $$ffoollddeerr gets + changed. - Mutt-ng is configured using configuration files which allow users to add com- - ments or manage them via version control systems to ease maintenance. + _N_o_t_e_: 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. - 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. +3.4. Self-Defined Variables - _2_._1_._3 _F_u_n_c_t_i_o_n_s + 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. - 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 + For example, to view the manual, users can either define two macros + like the following - The Mutt Next Generation E-Mail Client 4 +macro generic "!less -r /path/to/manual" "Show manual" +macro pager "!less -r /path/to/manual" "Show manual" - 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. + for generic, pager and index .The alternative is to define a custom + variable like so: - _2_._1_._4 _I_n_t_e_r_a_c_t_i_o_n +set user_manualcmd = "!less -r /path/to_manual" +macro generic "$user_manualcmd" "Show manual" +macro pager "$user_manualcmd" "Show manual" +macro index "$user_manualcmd" "Show manual" - Mutt-ng has two basic concepts of user interaction: + to re-use the command sequence as in: - 1. There is one dedicated line on the screen used to query the user for - input, issue any command, query variables and display error and informa- - tional messages. As for every type of user input, this requires manual - action leading to the need of input. +macro index "$user_manualcmd | grep '\^[ ]\\+~. '" "Show Patterns" - 2. The automatized interface for interaction are the so called _h_o_o_k_s. Hooks - specify actions the user wants to be performed at well-defined situa- - tions: 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. + 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. - _2_._1_._5 _M_o_d_u_l_a_r_i_z_a_t_i_o_n + 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. - Although mutt-ng has many functionality built-in, many features can be dele- - gated 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. + The complete removal is done via the unset keyword. - _2_._1_._6 _P_a_t_t_e_r_n_s + After the following sequence: - 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. +set user_foo = 42 +set user_foo = 666 - _2_._2 _S_c_r_e_e_n_s _a_n_d _M_e_n_u_s + the variable $user_foo has a current value of 666 and an initial of + 42. The query - _2_._2_._1 _I_n_d_e_x +set ?user_foo - 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 + will show 666. After doing the reset via - The Mutt Next Generation E-Mail Client 5 +reset user_foo - 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. Addi- - tionally, 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. + a following query will give 42 as the result. After unsetting it via - _2_._2_._2 _P_a_g_e_r +unset user_foo - 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. + any query or operation (except the noted expansion within other + statements) will lead to an error message. - 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. +3.5. Pre-Defined Variables - 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. + 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. - _2_._2_._3 _F_i_l_e _B_r_o_w_s_e_r + _P_l_e_a_s_e_ _c_o_n_s_u_l_t_ _t_h_e_ _l_o_c_a_l_ _c_o_p_y_ _o_f_ _y_o_u_r_ _m_a_n_u_a_l_ _f_o_r_ _t_h_e_i_r_ _v_a_l_u_e_s_ _a_s_ _t_h_e_y + _m_a_y_ _d_i_f_f_e_r_ _f_r_o_m_ _d_i_f_f_e_r_e_n_t_ _m_a_n_u_a_l_ _s_o_u_r_c_e_s_. Where the manual is + installed in can be queried (already using such a variable) by + running: - 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, limit- - ing the items shown by a regular expression and a freely adjustable format of - what to display in which way. It also allows for easy navigation through the - file system when selecting file(s) to attach to a message, select multiple - files to attach and many more. - - _2_._2_._4 _S_i_d_e_b_a_r - - 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 dif- - ferent 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. +$ muttng -Q muttng_docdir - _2_._2_._5 _H_e_l_p + 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: - The Mutt Next Generation E-Mail Client 6 +set user_manualcmd = '!less -r /path/to_manual' - The help screen is meant to offer a quick help to the user. It lists the cur- - rent configuration of key bindings and their associated commands including a - short description, and currently unbound functions that still need to be asso- - ciated with a key binding (or alternatively, they can be called via the mutt-ng - command prompt). - - _2_._2_._6 _C_o_m_p_o_s_e _M_e_n_u - - The compose menu features a split screen containing the information which - really matter before actually sending a message by mail or posting an article - to a newsgroup: who gets the message as what (recipient, newsgroup, who gets - what kind of copy). Additionally, users may set security options like deciding - whether to sign, encrypt or sign and encrypt a message with/for what keys. - - Also, it's used to attach messages, news articles or files to a message, to re- - edit any attachment including the message itself. - - _2_._2_._7 _A_l_i_a_s _M_e_n_u - - 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 nick- - name, the actual alias, so that users don't have to select each single recipi- - ent manually. - - _2_._2_._8 _A_t_t_a_c_h_m_e_n_t _M_e_n_u - - As will be later discussed in detail, mutt-ng features a good and stable MIME - implementation, that is, is greatly supports sending and receiving messages of - arbitrary type. The attachment menu displays a message's structure in detail: - what content parts are attached to which parent part (which gives a true tree - structure), which type is of what type and what size. Single parts may saved, - deleted or modified to offer great and easy access to message's internals. - - _2_._2_._9 _K_e_y _M_e_n_u - - FIXME - - _2_._3 _M_o_v_i_n_g _A_r_o_u_n_d _i_n _M_e_n_u_s - - Information is presented in menus, very similar to ELM. Here is a table - - The Mutt Next Generation E-Mail Client 7 - - showing the common keys used to navigate menus in Mutt-ng. - - j or Down next-entry move to the next entry - k or Up previous-entry move to the previous entry - z or PageDn page-down go to the next page - Z or PageUp page-up go to the previous page - = or Home first-entry jump to the first entry - * or End last-entry jump to the last entry - q quit exit the current menu - ? help list all key bindings for the current menu - - _2_._4 _E_d_i_t_i_n_g _I_n_p_u_t _F_i_e_l_d_s - - Mutt-ng has a builtin line editor which is used as the primary way to input - textual data such as email addresses or filenames. The keys used to move - around while editing are very similar to those of Emacs. - - ^A or bol move to the start of the line - ^B or backward-char move back one char - Esc B backward-word move back one word - ^D or delete-char delete the char under the cursor - ^E or eol move to the end of the line - ^F or forward-char move forward one char - Esc F forward-word move forward one word - complete complete filename or alias - ^T complete-query complete address with query - ^K kill-eol delete to the end of the line - ESC d kill-eow delete to the end of the word - ^W kill-word kill the word in front of the cursor - ^U kill-line delete entire line - ^V quote-char quote the next typed key - history-up recall previous string from history - history-down recall next string from history - backspace kill the char in front of the cursor - Esc u upcase-word convert word to upper case - Esc l downcase-word convert word to lower case - Esc c capitalize-word capitalize the word - ^G n/a abort - n/a finish editing - - You can remap the _e_d_i_t_o_r functions using the _b_i_n_d (section 3.4 , page 24) com- - mand. For example, to make the _D_e_l_e_t_e key delete the character in front of the - cursor rather than under, you could use - - bind editor backspace - - The Mutt Next Generation E-Mail Client 8 + to: - _2_._5 _R_e_a_d_i_n_g _M_a_i_l _- _T_h_e _I_n_d_e_x _a_n_d _P_a_g_e_r +set user_manualcmd = "!less -r $muttng_docdir/manual.txt" - 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 con- - tents. This is called the ``pager.'' + which works everywhere if a manual is installed. - The next few sections describe the functions provided in each of these modes. + 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. - _2_._5_._1 _T_h_e _M_e_s_s_a_g_e _I_n_d_e_x + For example, the statement - c change to a different mailbox - ESC c change to a folder in read-only mode - C copy the current message to another mailbox - ESC C decode a message and copy it to a folder - ESC s decode a message and save it to a folder - D delete messages matching a pattern - d delete the current message - F mark as important - l show messages matching a pattern - N mark message as new - o change the current sort method - O reverse sort the mailbox - q save changes and exit - s save-message - T tag messages matching a pattern - t toggle the tag on a message - ESC t toggle tag on entire message thread - U undelete messages matching a pattern - u undelete-message - v view-attachments - x abort changes and exit - display-message - jump to the next new message - @ show the author's full e-mail address - $ save changes to mailbox - / search - ESC / search-reverse - ^L clear and redraw the screen - ^T untag messages matching a pattern - - _2_._5_._1_._1 _S_t_a_t_u_s _F_l_a_g_s - - In addition to who sent the message and the subject, a short summary of the - disposition of each message is printed beside the message number. Zero or more - of the following ``flags'' may appear, which mean: - - D - message is deleted (is marked for deletion) - - d - message have attachments marked for deletion - - The Mutt Next Generation E-Mail Client 9 - - 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 - - +o sseett--ffllaagg (default: w) - - +o cclleeaarr--ffllaagg (default: W) - - Furthermore, the following flags reflect who the message is addressed to. They - can be customized with the _$_t_o___c_h_a_r_s (section 7.4.327 , page 167) variable. - - + - message is to you and you only - - T - message is to you, but also to or cc'ed to others - - C - message is cc'ed to you - - F - message is from you - - L - message is sent to a subscribed mailing list - - _2_._5_._2 _T_h_e _P_a_g_e_r - - By default, Mutt-ng uses its builtin pager to display the body of messages. - - The Mutt Next Generation E-Mail Client 10 - - The pager is very similar to the Unix program _l_e_s_s though not nearly as fea- - tureful. - - go down one line - display the next page (or next message if at the end of a message) - - go back to the previous page - n search for next match - S skip beyond quoted text - T toggle display of quoted text - ? show key bindings - / search for a regular expression (pattern) - ESC / search backwards for a regular expression - \ toggle search pattern coloring - ^ jump to the top of the message - - In addition, many of the functions from the _i_n_d_e_x are available in the pager, - such as _d_e_l_e_t_e_-_m_e_s_s_a_g_e or _c_o_p_y_-_m_e_s_s_a_g_e (this is one advantage over using an - external pager to view messages). +folder-hook . "set user_current_folder = $muttng_folder_name" - Also, the internal pager supports a couple other advanced features. For one, it - will accept and translate the ``standard'' nroff sequences for bold and under- - line. These sequences are a series of either the letter, backspace (^H), the - letter again for bold or the letter, backspace, ``_'' for denoting underline. - Mutt-ng will attempt to display these in bold and underline respectively if - your terminal supports them. If not, you can use the bold and underline _c_o_l_o_r - (section 3.8 , page 28) objects to specify a color or mono attribute for them. + will be already be translated to the following when reading the + startup files: - Additionally, the internal pager supports the ANSI escape sequences for charac- - ter attributes. Mutt-ng translates them into the correct color and character - settings. The sequences Mutt-ng supports are: +folder-hook . "set user_current_folder = some_folder" - 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 + with some_folder being the name of the first folder muttng opens. On + the contrary, - Colors are - 0 black - 1 red - 2 green - 3 yellow - 4 blue - 5 magenta - 6 cyan - 7 white +folder-hook . 'set user_current_folder = $muttng_folder_name' - The Mutt Next Generation E-Mail Client 11 + 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. - Mutt-ng uses these attributes for handling text/enriched messages, and they can - also be used by an external _a_u_t_o_v_i_e_w (section 5.4 , page 76) script for high- - lighting purposes. NNoottee:: If you change the colors for your display, for exam- - ple by changing the color associated with color2 for your xterm, then that - color will be used instead of green. + A more practical example is: - _2_._5_._3 _T_h_r_e_a_d_e_d _M_o_d_e +folder-hook . 'source ~/.mutt/score-$muttng_folder_name' - When the mailbox is _s_o_r_t_e_d (section 7.4.295 , page 157) by _t_h_r_e_a_d_s, there are - a few additional functions available in the _i_n_d_e_x and _p_a_g_e_r modes. + which can be used to source files containing score commands depending + on the folder the user enters. - ^D delete-thread delete all messages in the current thread - ^U undelete-thread undelete all messages in the current thread - ^N next-thread jump to the start of the next thread - ^P previous-thread jump to the start of the previous thread - ^R read-thread mark the current thread as read - ESC d delete-subthread delete all messages in the current subthread - ESC u undelete-subthread undelete all messages in the current subthread - ESC n next-subthread jump to the start of the next subthread - ESC p previous-subthread jump to the start of the previous subthread - ESC r read-subthread mark the current subthread as read - ESC t tag-thread toggle the tag on the current thread - ESC v collapse-thread toggle collapse for the current thread - ESC V collapse-all toggle collapse for all threads - P parent-message jump to parent message in thread - - NNoottee:: Collapsing a thread displays only the first message in the thread and - hides the others. This is useful when threads contain so many messages that you - can only see a handful of threads on the screen. See %M in _$_i_n_d_e_x___f_o_r_m_a_t (sec- - tion 7.4.113 , page 113). For example, you could use "%?M?(#%03M)&(%4l)?" in - _$_i_n_d_e_x___f_o_r_m_a_t (section 7.4.113 , page 113) to optionally display the number of - hidden messages if the thread is collapsed. - - See also: _$_s_t_r_i_c_t___t_h_r_e_a_d_s (section 7.4.316 , page 165). - - _2_._5_._4 _M_i_s_c_e_l_l_a_n_e_o_u_s _F_u_n_c_t_i_o_n_s - - ccrreeaattee--aalliiaass - (default: a) - - Creates a new alias based upon the current message (or prompts for a new one). - Once editing is complete, an _a_l_i_a_s (section 3.3 , page 23) command is added to - the file specified by the _$_a_l_i_a_s___f_i_l_e (section 7.4.4 , page 87) variable for - future use. NNoottee:: Specifying an _$_a_l_i_a_s___f_i_l_e (section 7.4.4 , page 87) does not - add the aliases specified there-in, you must also _s_o_u_r_c_e (section 3.28 , page - 43) the file. - - cchheecckk--ttrraaddiittiioonnaall--ppggpp - (default: ESC P) - - This function will search the current message for content signed or encrypted - with PGP the "traditional" way, that is, without proper MIME tagging. - - The Mutt Next Generation E-Mail Client 12 - - Technically, this function will temporarily change the MIME content types of - the body parts containing PGP data; this is similar to the _e_d_i_t_-_t_y_p_e (section - 2.5.4 , page 12) function's effect. - - ddiissppllaayy--ttooggggllee--wweeeedd - (default: h) - - Toggles the weeding of message header fields specified by _i_g_n_o_r_e (section - 3.9 , page 30) commands. - - eeddiitt - (default: e) - - This command (available in the ``index'' and ``pager'') allows you to edit the - raw current message as it's present in the mail folder. After you have fin- - ished editing, the changed message will be appended to the current folder, and - the original message will be marked for deletion. - - eeddiitt--ttyyppee - - (default: ^E on the attachment menu, and in the pager and index menus; ^T on - the compose menu) - - This command is used to temporarily edit an attachment's content type to fix, - for instance, bogus character set parameters. When invoked from the index or - from the pager, you'll have the opportunity to edit the top-level attachment's - content type. On the _a_t_t_a_c_h_m_e_n_t _m_e_n_u (section 5.1.2 , page 68), 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 _c_o_m_p_o_s_e _m_e_n_u (section 5.1.3 , - page 69). There, it's used to fine-tune the properties of attachments you are - going to send. +3.6. Type Conversions - eenntteerr--ccoommmmaanndd - (default: ``:'') + 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): - This command is used to execute any command you would normally put in a config- - uration file. A common use is to check the settings of variables, or in con- - junction with _m_a_c_r_o_s (section 3.7 , page 27) to change settings on the fly. +set read_inc = 100 +set folder = $read_inc +set read_inc = $folder +set user_magic_number = 42 +set folder = $user_magic_number - eexxttrraacctt--kkeeyyss - (default: ^K) +4. Defining/Using aliases - This command extracts PGP public keys from the current or tagged message(s) and - adds them to your PGP public key ring. + Usage: alias_k_e_y_ _a_d_d_r_e_s_s_ _[_,_ _a_d_d_r_e_s_s_,_._._._] - ffoorrggeett--ppaasssspphhrraassee - (default: ^F) + 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. - This command wipes the passphrase(s) from memory. It is useful, if you mis- - spelled the passphrase. + _N_o_t_e_: if you want to create an alias for a group (by specifying more + than one address), you _m_u_s_t separate the addresses with a comma + (``,''). - The Mutt Next Generation E-Mail Client 13 + To remove an alias or aliases (``*'' means all aliases): - lliisstt--rreeppllyy - (default: L) + Usage: unalias_[_*_ _|_ _k_e_y_ _._._._ _] - Reply to the current or tagged message(s) by extracting any addresses which - match the regular expressions given by the _l_i_s_t_s _o_r _s_u_b_s_c_r_i_b_e (section 3.12 , - page 33) commands, but also honor any Mail-Followup-To header(s) if the - _$_h_o_n_o_r___f_o_l_l_o_w_u_p___t_o (section 7.4.91 , page 108) configuration variable is set. - Using this when replying to messages posted to mailing lists helps avoid dupli- - cate copies being sent to the author of the message you are replying to. +alias muttdude me@cs.hmc.edu (Michael Elkins) +alias theguys manny, moe, jack - ppiippee--mmeessssaaggee - (default: |) + 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 ssoouurrccee. Consequently, you + can have multiple alias files, or you can have all aliases defined in + your muttrc. - Asks for an external Unix command and pipes the current or tagged message(s) to - it. The variables _$_p_i_p_e___d_e_c_o_d_e (section 7.4.204 , page 136), _$_p_i_p_e___s_p_l_i_t - (section 7.4.206 , page 137), _$_p_i_p_e___s_e_p (section 7.4.205 , page 137) and - _$_w_a_i_t___k_e_y (section 7.4.339 , page 169) control the exact behavior of this - function. + On the other hand, the function can use only one file, + the one pointed to by the $$aalliiaass__ffiillee 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 ssoouurrccee this file too. - rreesseenndd--mmeessssaaggee - (default: ESC e) + For example: - With resend-message, mutt takes the current message as a template for a new - message. This function is best described as "recall from arbitrary folders". - It can conveniently be used to forward MIME messages while preserving the orig- - inal mail structure. Note that the amount of headers included here depends on - the value of the _$_w_e_e_d (section 7.4.340 , page 170) variable. +source /usr/local/share/Mutt-ng.aliases +source ~/.mail_aliases +set alias_file=~/.mail_aliases - This function is also available from the attachment menu. You can use this to - easily resend a message which was included with a bounce message as a mes- - sage/rfc822 body part. + To use aliases, you merely use the alias at any place in mutt where + muttprompts for addresses, such as the _T_o_: or _C_c_: prompt. You can also + enter aliases in your editor at the appropriate headers if you have + the $$eeddiittoorr__hheeaaddeerrss variable set. - sshheellll--eessccaappee - (default: !) + 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. - Asks for an external Unix command and executes it. The _$_w_a_i_t___k_e_y (section - 7.4.339 , page 169) 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. + In the alias menu, you can select as many aliases as you want with the + _s_e_l_e_c_t_-_e_n_t_r_y key (default: RET), and use the _e_x_i_t key (default: q) to + return to the address prompt. - ttooggggllee--qquuootteedd - (default: T) +5. Changing the default key bindings - The _p_a_g_e_r uses the _$_q_u_o_t_e___r_e_g_e_x_p (section 7.4.229 , page 142) variable to - detect quoted text when displaying the body of the message. This function tog- - gles the display of the quoted material in the message. It is particularly - useful when are interested in just the response and there is a large amount of - quoted text in the way. - - sskkiipp--qquuootteedd - (default: S) - - This function will go to the next line of non-quoted text which come after a - line of quoted text in the internal pager. - - The Mutt Next Generation E-Mail Client 14 - - _2_._6 _S_e_n_d_i_n_g _M_a_i_l - - The following bindings are available in the _i_n_d_e_x for sending messages. - - 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. For- - warding a message allows you to add comments or modify the message you are for- - warding. These items are discussed in greater detail in the next chapter - _`_`_F_o_r_w_a_r_d_i_n_g _a_n_d _B_o_u_n_c_i_n_g _M_a_i_l_'_' (section 2.7 , page 20). - - _2_._6_._1 _C_o_m_p_o_s_i_n_g _n_e_w _m_e_s_s_a_g_e_s - - 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 Mutt Next Generation E-Mail Client 15 - - the reply-to address, and optionally information where the sent email will be - stored and whether it should be digitally signed and/or encrypted. - - Below that, you see a list of "attachments". The mail you've just entered - before is also an attachment, but due to its special type (it's plain text), it - will be displayed as the normal message on the receiver's side. - - At this point, you can add more attachments, pressing a, you can edit the - recipient addresses, pressing t for the "To:" field, c for the "Cc:" field, and - b for the "Bcc: field. You can also edit the subject the subject by simply - pressing s or the email message that you've entered before by pressing e. You - will then again return to the editor. You can even edit the sender, by pressing - f, but this shall only be used with caution. + Usage: bind_m_a_p_ _k_e_y_ _f_u_n_c_t_i_o_n - Alternatively, you can configure mutt-ng in a way that most of the above set- - tings can be edited using the editor. Therefore, you only need to add the fol- - lowing to your configuration: + This command allows you to change the default key bindings (operation + invoked when pressing a key). - set edit_headers + _m_a_p 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: - Once you have finished editing the body of your mail message, you are returned - to the _c_o_m_p_o_s_e menu. The following options are available: - - 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 + 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. + + _k_e_y is the key (or key sequence) you wish to bind. To specify a + control character, use the sequence _\_C_x, where _x is the letter of the + control character (for example, to specify control-A use ``\Ca''). + Note that the case of _x as well as _\_C is ignored, so that _\_C_A, _\_C_a, + _\_c_A and _\_c_a are all equivalent. An alternative form is to specify the + key as a three digit octal number prefixed with a ``\'' (for example + _\_1_7_7 is equivalent to _\_c_?). + + In addition, _k_e_y may consist of: + + _T_a_b_l_e_ _3_._1_._ _A_l_t_e_r_n_a_t_i_v_e_ _K_e_y_ _N_a_m_e_s + Sequence Description + \t tab + tab + backtab / shift-tab + \r carriage return + \n newline + \e escape + escape + up arrow + down arrow + left arrow + right arrow + Page Up + Page Down + Backspace + Delete + Insert + Enter + Return + Home + End + Space bar + function key 1 + function key 10 + + _k_e_y does not need to be enclosed in quotes unless it contains a space + (`` ''). + + _f_u_n_c_t_i_o_n specifies which action to take when _k_e_y is pressed. For a + complete list of functions, see the ffuunnccttiioonnss. The special function + noop unbinds the specified key sequence. + +6. Defining aliases for character sets + + Usage: cchhaarrsseett--hhooookk_a_l_i_a_s_c_h_a_r_s_e_t + + Usage: iiccoonnvv--hhooookk_c_h_a_r_s_e_t_l_o_c_a_l_-_c_h_a_r_s_e_t + + The cchhaarrsseett--hhooookk 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 iiccoonnvv--hhooookk 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. + +7. Setting variables based upon mailbox + + Usage: ffoollddeerr--hhooookk [!]_r_e_g_e_x_p_c_o_m_m_a_n_d + + It is often desirable to change settings based on which mailbox you + are reading. The ffoollddeerr--hhooookk command provides a method by which you + can execute any configuration command. _r_e_g_e_x_p is a regular expression + specifying in which mailboxes to execute _c_o_m_m_a_n_d before loading. If a + mailbox matches multiple ffoollddeerr--hhooookk's, they are executed in the order + given in the muttrc. + + _N_o_t_e_: if you use the ``!'' shortcut for $$ssppoooollffiillee at the beginning of + the pattern, you must place it inside of double or single quotes in + order to distinguish it from the logical _n_o_t operator for the + expression. + + Note that the settings are _n_o_t 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 _d_e_f_a_u_l_t command, use the + pattern ``.'': + +folder-hook . set sort=date-sent + +8. Keyboard macros + + Usage: macro_m_e_n_u_ _k_e_y_ _s_e_q_u_e_n_c_e_ _[_d_e_s_c_r_i_p_t_i_o_n_] + + Macros are useful when you would like a single key to perform a series + of actions. When you press _k_e_y in menu _m_e_n_u ,Mutt-ng will behave as if + you had typed _s_e_q_u_e_n_c_e. So if you have a common sequence of commands + you type, you can create a macro to execute those commands with a + singlekey. + + _m_e_n_u is the mmaappss 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. + + _k_e_y and _s_e_q_u_e_n_c_e are expanded by the same rules as the bbiinndd. There are + some additions however. The first is that control characters in + _s_e_q_u_e_n_c_e can also be specified as ^x. In order to get a caret (`^'') + you need to specify it twice. Secondly, to specify a certain key such + as _u_p or to invoke a function directly, you can use the format _<_k_e_y + _n_a_m_e_> and _<_f_u_n_c_t_i_o_n_ _n_a_m_e_> .For a listing of key names see the section + on bbiinndd. Functions are listed in the ffuunnccttiioonnss. + + 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 _s_e_q_u_e_n_c_e, which is + shown in the help screens. + + _N_o_t_e_: Macro definitions (if any) listed in the help screen(s), are + silently truncated at the screen width, and are not wrapped. + +9. Using color and mono video attributes + + Usage: color_o_b_j_e_c_t_ _f_o_r_e_g_r_o_u_n_d_ _b_a_c_k_g_r_o_u_n_d_ _[_r_e_g_e_x_p_] + + Usage: color_i_n_d_e_x_ _f_o_r_e_g_r_o_u_n_d_ _p_a_t_t_e_r_n + + Usage: uncolor_i_n_d_e_x_ _p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._] + + 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 _a_n_d a + background color (it is not possible to only specify one or the + other). - NNoottee:: The attach-message function will prompt you for a folder to attach mes- - sages from. You can now tag messages in that folder and they will be attached - to the message you are sending. Note that certain operations like composing a - new mail, replying, forwarding, etc. are not permitted when you are in that - folder. The %r in _$_s_t_a_t_u_s___f_o_r_m_a_t (section 7.4.312 , page 162) will change to a - 'A' to indicate that you are in attach-message mode. + _o_b_j_e_c_t can be one of: - The Mutt Next Generation E-Mail Client 16 + * attachment + * body (match _r_e_g_e_x_p in the body of messages) + * bold (highlighting bold patterns in the body of messages) + * error (error messages printed by Mutt-ng) + * header (match _r_e_g_e_x_p in the message header) + * hdrdefault (default color of the message header in the pager) + * index (match _p_a_t_t_e_r_n 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 $$qquuoottee__rreeggeexxpp in the body of a message) + * quoted1, quoted2, ..., quoted_N (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) + + _f_o_r_e_g_r_o_u_n_d and _b_a_c_k_g_r_o_u_n_d can be one of the following: + + * white + * black + * green + * magenta + * blue + * cyan + * yellow + * red + * default + * color_x + + _f_o_r_e_g_r_o_u_n_d 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 _d_e_f_a_u_l_t can be used + as a transparent color. The value _b_r_i_g_h_t_d_e_f_a_u_l_t is also valid. If + Mutt-ng is linked against the _S_-_L_a_n_g 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 + + _N_o_t_e_: The _S_-_L_a_n_g library requires you to use the _l_i_g_h_t_g_r_a_y and _b_r_o_w_n + keywords instead of _w_h_i_t_e and _y_e_l_l_o_w when setting this variable. + + _N_o_t_e_: The uncolor command can be applied to the index object only. It + removes entries from the list. You _m_u_s_t 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 _c_o_l_o_r_0, _c_o_l_o_r_1 ,..., _c_o_l_o_r_N_-_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 _c_o_l_o_r_2 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_o_b_j_e_c_t_ _a_t_t_r_i_b_u_t_e_ _[_r_e_g_e_x_p_] + + Usage: mono_i_n_d_e_x_ _a_t_t_r_i_b_u_t_e_ _p_a_t_t_e_r_n + + Usage: unmono_i_n_d_e_x_ _p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._] + + where _a_t_t_r_i_b_u_t_e is one of the following: + + * none + * bold + * underline + * reverse + * standout - _2_._6_._2 _R_e_p_l_y_i_n_g +10. Ignoring (weeding) unwanted message headers + + Usage: ignore_p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._] + + Usage: unignore_p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._] + + 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: - _2_._6_._2_._1 _S_i_m_p_l_e _R_e_p_l_i_e_s +11. Alternative addresses - 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. + Usage: alternates_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - 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. + Usage: unalternates_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - You can start editing the email message. It is strongly recommended to put your - answer _b_e_l_o_w 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. + 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 $$rreeppllyy__ttoo.) - The quote attribution is configurable, by default it is set 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. - set attribution = "On %d, %n wrote:" + 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. - It can also be set to something more compact, e.g. + To remove a regular expression from the alternates list, use the + unalternates command with exactly the same _r_e_g_e_x_p . Likewise, if the + _r_e_g_e_x_p for a alternates command matches an entry on the unalternates + list, that unalternates entry will be removed. If the _r_e_g_e_x_p for + unalternates is ``*'', _a_l_l_ _e_n_t_r_i_e_s on alternates will be removed. - set attribution = "attribution="* %n <%a> [%(%y-%m-%d %H:%M)]:" +12. Format = Flowed - The example above results in the following attribution: +12.1. Introduction - * Michael Svensson [05-03-06 17:02]: - > Bill, can you please send last month's progress report to Mr. - > Morgan? We also urgently need the cost estimation for the new - > production server that we want to set up before our customer's - > project will go live. + 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. - Generally, try to keep your attribution short yet information-rich. It is _n_o_t - 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. + For introductory information on format=flowed messages, see + <>. - 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 +12.2. Receiving: Display Setup - The Mutt Next Generation E-Mail Client 17 + 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: - before. +set wrapmargin = 10 - _2_._6_._2_._2 _G_r_o_u_p _R_e_p_l_i_e_s + The code above makes the line break 10 columns before the right side + of the terminal. - 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:" recipi- - ents. The group reply functionality ensures that when you press g instead of r - to do a reply, each and every recipient that is contained in the original mes- - sage will receive a copy of the message, either as normal recipient or as "Cc:" - recipient. + If your terminal is so wide that the lines are embarrassingly long, + you can also set a maximum line length: - _2_._6_._2_._3 _L_i_s_t _R_e_p_l_i_e_s +set max_line_length = 120 - When you use mailing lists, it's generally better to send your reply to a mes- - sage only to the list instead of the list and the original author. To make this - easy to use, mutt-ng features list replies. + The example above will give you lines not longer than 120 characters. - 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. + When you view at format=flowed messages, you will often see the + quoting hierarchy like in the following example: - lists linuxevent@luga\.at vuln-dev@ mutt-ng-users@ +>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 - 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. + This will lead to a nicer result that is easier to read: - _2_._6_._3 _E_d_i_t_i_n_g _t_h_e _m_e_s_s_a_g_e _h_e_a_d_e_r +> 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. + +12.3. Sending - When editing the header of your outgoing message, there are a couple of special - features available. + If you want mutt-ng to send emails with format=flowed set, you need to + explicitly set it: - If you specify +set text_flowed - Fcc: _f_i_l_e_n_a_m_e + Additionally, you have to use an editor which supports writing + format=flowed-conforming emails. For vim(1), this is done by adding w + to the formatoptions (see :h formatoptions and :h fo-table) when + writing emails. - Mutt-ng will pick up _f_i_l_e_n_a_m_e just as if you had used the _e_d_i_t_-_f_c_c function in - the _c_o_m_p_o_s_e menu. + Also note that _f_o_r_m_a_t_=_f_l_o_w_e_d 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 (RRffCC  33667766) as it does not space-stuff lines + starting with: - You can also attach files to your message by specifying + * > This is _n_o_t the quote character but a right angle used for other + reasons - The Mutt Next Generation E-Mail Client 18 + Please make sure that you manually prepend a space to each of them. - Attach: _f_i_l_e_n_a_m_e [ _d_e_s_c_r_i_p_t_i_o_n ] +12.4. Additional Notes - where _f_i_l_e_n_a_m_e is the file to attach and _d_e_s_c_r_i_p_t_i_o_n is an optional string to - use as the description of the attached file. + For completeness, the $$ddeelleettee__ssppaaccee variable provides the mechanism to + generate a DelSp=yes parameter on _o_u_t_g_o_i_n_g 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 _w_i_t_h_o_u_t 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. - When replying to messages, if you remove the _I_n_-_R_e_p_l_y_-_T_o_: field from the header - field, Mutt-ng will not generate a _R_e_f_e_r_e_n_c_e_s_: field, which allows you to cre- - ate a new message thread. +13. Mailing lists - Also see _e_d_i_t___h_e_a_d_e_r_s (section 7.4.57 , page 100). + Usage: lists_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - _2_._6_._4 _U_s_i_n_g _M_u_t_t_-_n_g _w_i_t_h _P_G_P + Usage: unlists_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - If you want to use PGP, you can specify + Usage: subscribe_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - Pgp: [ E | S | S_<_i_d_> ] + Usage: unsubscribe_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - ``E'' encrypts, ``S'' signs and ``S'' signs with the given key, setting - _$_p_g_p___s_i_g_n___a_s (section 7.4.196 , page 135) permanently. + Mutt-ng has a few nice features for uussiinngg--lliissttss. 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 lliisstt--rreeppllyy 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 + $$ffoolllloowwuupp__ttoo configuration variable. - 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. + 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''. - 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. + 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. - Once you have successfully finished the key selection, the message will be - encrypted using the selected public keys, and sent out. + 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 _m_u_t_t_-_u_s_e_r_s_@_m_u_t_t_._o_r_g. 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 + _m_u_t_t_-_u_s_e_r_s_@_e_x_a_m_p_l_e_._c_o_m, you could use ``lists mutt-users@mutt\\.org'' + or ``subscribe mutt-users@mutt\\.org'' to match only mail from the + actual list. - Most fields of the entries in the key selection menu (see also _$_p_g_p___e_n_t_r_y___f_o_r_- - _m_a_t (section 7.4.183 , page 132)) have obvious meanings. But some explana- - tions on the capabilities, flags, and validity fields are in order. + The ``unlists'' command is used to remove a token from the list of + known and subscribed mailing-lists. Use ``unlists *'' to remove all + tokens. - The flags sequence (%f) will expand to one of the following flags: + To remove a mailing list from the list of subscribed mailing lists, + but keep it on the list of known mailing lists, use ``unsubscribe''. - 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. +14. Using Multiple spool mailboxes - The capabilities field (%c) expands to a two-character sequence representing a - key's capabilities. The first character gives the key's encryption capabili- - ties: A minus sign (--) means that the key cannot be used for encryption. A dot - (..) means that it's marked as a signature key in one of the user IDs, but may + Usage: mmbbooxx--hhooookk [!]_p_a_t_t_e_r_n_m_a_i_l_b_o_x - The Mutt Next Generation E-Mail Client 19 + This command is used to move read messages from a specified mailbox to + adifferent mailbox automatically when you quit or change folders. + _p_a_t_t_e_r_n is a regular expression specifying the mailbox to treat as a + ``spool'' mailbox and _m_a_i_l_b_o_x specifies where mail should be saved + when read. - also be used for encryption. The letter ee indicates that this key can be used - for encryption. + Unlike some of the other _h_o_o_k commands, only the _f_i_r_s_t matching + pattern is used (it is not possible to save read mail in more than a + single mailbox). - The second character indicates the key's signing capabilities. Once again, a - ``--'' implies ``not for signing'', ``..'' implies that the key is marked as an - encryption key in one of the user-ids, and ``ss'' denotes a key which can be - used for signing. +15. Defining mailboxes which receive mail - 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. + Usage: mailboxes_[_!_]_f_i_l_e_n_a_m_e_ _[_f_i_l_e_n_a_m_e_ _._._._ _] - _2_._6_._5 _S_e_n_d_i_n_g _a_n_o_n_y_m_o_u_s _m_e_s_s_a_g_e_s _v_i_a _m_i_x_m_a_s_t_e_r + Usage: unmailboxes_[_!_]_f_i_l_e_n_a_m_e_ _[_f_i_l_e_n_a_m_e_ _._._._ _] - You may also have configured mutt to co-operate with Mixmaster, an anonymous - remailer. Mixmaster permits you to send your messages anonymously using a - chain of remailers. Mixmaster support in mutt is for mixmaster version 2.04 - (beta 45 appears to be the latest) and 2.03. It does not support earlier ver- - sions or the later so-called version 3 betas, of which the latest appears to be - called 2.9b23. + 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. - To use it, you'll have to obey certain restrictions. Most important, you can- - not use the Cc and Bcc headers. To tell Mutt-ng to use mixmaster, you have to - select a remailer chain, using the mix function on the compose menu. + When changing folders, pressing _s_p_a_c_e will cycle through folders with + new mail. - 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. + 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. - You can navigate in the chain using the chain-prev and chain-next functions, - which are by default bound to the left and right arrows and to the h and l keys - (think vi keyboard bindings). To insert a remailer at the current chain posi- - tion, use the insert function. To append a remailer behind the current chain - position, use select-entry or append. You can also delete entries from the - chain, using the corresponding function. Finally, to abandon your changes, - leave the menu, or accept them pressing (by default) the Return key. + The ``unmailboxes'' command is used to remove a token from the list of + folders which receive mail. Use ``unmailboxes *'' to remove all + tokens. - Note that different remailers do have different capabilities, indicated in the - %c entry of the remailer menu lines (see _$_m_i_x___e_n_t_r_y___f_o_r_m_a_t (section 7.4.143 , - page 121)). 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. + _N_o_t_e_: 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. - _2_._7 _F_o_r_w_a_r_d_i_n_g _a_n_d _B_o_u_n_c_i_n_g _M_a_i_l + _N_o_t_e_: the filenames in the mailboxes command are resolved when the + command is executed, so if these names contain sshhoorrttccuuttss (such as + ``='' and ``!''), any variable definition that affect these characters + (like $$ffoollddeerr and $$ssppoooollffiillee) should be executed before the mailboxes + command. - The Mutt Next Generation E-Mail Client 20 +16. User defined headers - Often, it is necessary to forward mails to other people. Therefore, mutt-ng - supports forwarding messages in two different ways. + Usage: my_hdr_s_t_r_i_n_g - The first one is regular forwarding, as you probably know it from other mail - clients. You simply press f, enter the recipient email address, the subject of - the forwarded email, and then you can edit the message to be forwarded in the - editor. The forwarded message is separated from the rest of the message via the - two following markers: + Usage: unmy_hdr_f_i_e_l_d_ _[_f_i_e_l_d_ _._._._] - ----- Forwarded message from Lucas User ----- + The ``my_hdr'' command allows you to create your own header fields + which will be added to every message you send. - From: Lucas User - Date: Thu, 02 Dec 2004 03:08:34 +0100 - To: Michael Random - Subject: Re: blackmail + For example, if you would like to add an ``Organization:'' header + field to all of your outgoing messages, you can put the command - Pay me EUR 50,000.- cash or your favorite stuffed animal will die - a horrible death. +my_hdr Organization: A Really Big Company, Anytown, USA - ----- End forwarded message ----- + in your .muttrc. - 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. + _N_o_t_e_: space characters are _n_o_t allowed between the keyword and the + colon (``:''). The standard for electronic mail (RRffCC  882222) says that + space is illegal there, so Mutt-ng enforces the rule. - The second mode of forwarding emails with mutt-ng is the so-called _b_o_u_n_c_i_n_g: - 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 transport- - ing 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. + If you would like to add a header field to a single message, you + should either set the $$eeddiitt__hheeaaddeerrss variable, or use the _e_d_i_t_-_h_e_a_d_e_r_s + function (default: ``E'') in the send-menu so that you can edit the + header of your message along with the body. - 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. + 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: - _2_._8 _P_o_s_t_p_o_n_i_n_g _M_a_i_l +unmy_hdr to cc - At times it is desirable to delay sending a message that you have already begun - to compose. When the _p_o_s_t_p_o_n_e_-_m_e_s_s_a_g_e function is used in the _c_o_m_p_o_s_e menu, - the body of your message and attachments are stored in the mailbox specified by - the _$_p_o_s_t_p_o_n_e_d (section 7.4.218 , page 140) variable. This means that you can - recall the message even if you exit Mutt-ng and then restart it at a later - time. +17. Defining the order of headers when viewing messages - Once a message is postponed, there are several ways to resume it. From the - command line you can use the ``-p'' option, or if you _c_o_m_p_o_s_e a new message + Usage: hdr_order_h_e_a_d_e_r_ _h_e_a_d_e_r_ _[_h_e_a_d_e_r_ _._._._] - The Mutt Next Generation E-Mail Client 21 + Usage: unhdr_order_[_ _*_ _|_ _h_e_a_d_e_r_ _h_e_a_d_e_r_ _._._._] - from the _i_n_d_e_x or _p_a_g_e_r you will be prompted if postponed messages exist. If - multiple messages are currently postponed, the _p_o_s_t_p_o_n_e_d menu will pop up and - you can select which message you would like to resume. + With this command, you can specify an order in which mutt will attempt + to present headers to you when viewing messages. - NNoottee:: If you postpone a reply to a message, the reply setting of the message is - only updated when you actually finish the message and send it. Also, you must - be in the same folder with the message you replied to for the status of the - message to be updated. + ``unhdr_order *'' will clear all previous headers from the order list, + thus removing the header order effects set by the system-wide startup + file. - See also the _$_p_o_s_t_p_o_n_e (section 7.4.217 , page 139) quad-option. +hdr_order From Date: From: To: Cc: Subject: - _3_. _C_o_n_f_i_g_u_r_a_t_i_o_n +18. Specify default save filename - _3_._1 _L_o_c_a_t_i_o_n_s _o_f _C_o_n_f_i_g_u_r_a_t_i_o_n _F_i_l_e_s + Usage: ssaavvee--hhooookk [!]_p_a_t_t_e_r_n_f_i_l_e_n_a_m_e - 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'' _c_o_m_m_a_n_d _l_i_n_e (section 7.1 , page 80) 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. + This command is used to override the default filename used when saving + messages. _f_i_l_e_n_a_m_e will be used as the default filename if the message + is _F_r_o_m_: an address matching _r_e_g_e_x_p or if you are the author and the + message is addressed _t_o_: something matching _r_e_g_e_x_p . - .muttrc (or .muttngrc for Mutt-ng) is the file where you will usually place - your _c_o_m_m_a_n_d_s (section 7.3 , page 83) to configure Mutt-ng. + See ppaatttteerrnn--hhooookk for information on the exact format of _p_a_t_t_e_r_n. - _3_._2 _S_y_n_t_a_x _o_f _I_n_i_t_i_a_l_i_z_a_t_i_o_n _F_i_l_e_s + Examples: - An initialization file consists of a series of _c_o_m_m_a_n_d_s (section 7.3 , page - 83). Each line of the file may contain one or more commands. When multiple - commands are used, they must be separated by a semicolon (;). +save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins +save-hook aol\\.com$ +spam - set realname='Mutt-ng user' ; ignore x- + Also see the ffcccc--ssaavvee--hhooookk command. - 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, +19. Specify default Fcc: mailbox when composing - my_hdr X-Disclaimer: Why are you listening to me? # This is a comment + Usage: ffcccc--hhooookk [!]_p_a_t_t_e_r_n_m_a_i_l_b_o_x - Single quotes (') and double quotes (') can be used to quote strings which + This command is used to save outgoing mail in a mailbox other than + $$rreeccoorrdd. Mutt-ng searches the initial list of message recipients for + the first matching _r_e_g_e_x_p and uses _m_a_i_l_b_o_x as the default Fcc: + mailbox. If no match is found the message will be saved to $$rreeccoorrdd + mailbox. - The Mutt Next Generation E-Mail Client 22 + See ppaatttteerrnn--hhooookk for information on the exact format of _p_a_t_t_e_r_n. - 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 nnoott for single quotes. + Example: - \ quotes the next character, just as in shells such as bash and zsh. For exam- - ple, if want to put quotes ``''' inside of a string, you can use ``\'' to force - the next character to be a literal instead of interpreted character. +fcc-hook [@.]aol\\.com$ +spammers - set realname="Michael \"MuttDude\" Elkins" + The above will save a copy of all messages going to the aol.com domain + to the `+spammers' mailbox by default. Also see the ffcccc--ssaavvee--hhooookk + command. - ``\\'' means to insert a literal ``\'' into the line. ``\n'' and ``\r'' have - their usual C meanings of linefeed and carriage-return, respectively. +20. Specify default save filename and default Fcc: mailbox at once - A \ at the end of a line can be used to split commands over multiple lines, - provided that the split points don't appear in the middle of command names. + Usage: ffcccc--ssaavvee--hhooookk [!]_p_a_t_t_e_r_n_m_a_i_l_b_o_x - 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 ``#''. + This command is a shortcut, equivalent to doing both a ffcccc--hhooookk and a + ssaavvee--hhooookk with its arguments. - # folder-hook . \ - set realname="Michael \"MuttDude\" Elkins" +21. Change settings based upon message recipients - 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! + Usage: rreeppllyy--hhooookk [!]_p_a_t_t_e_r_n_c_o_m_m_a_n_d - Abstract example: + Usage: sseenndd--hhooookk [!]_p_a_t_t_e_r_n_c_o_m_m_a_n_d - line1\ - line2a # line2b\ - line3\ - line4 - line5 + Usage: sseenndd22--hhooookk [!]_p_a_t_t_e_r_n_c_o_m_m_a_n_d - 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. + These commands can be used to execute arbitrary configuration commands + based upon recipients of the message. _p_a_t_t_e_r_n is a regular expression + matching the desired address. _c_o_m_m_a_n_d is executed when _r_e_g_e_x_p matches + recipients of the message. - It is also possible to substitute the output of a Unix command in an initial- - ization file. This is accomplished by enclosing the command in backquotes - (``). For example, + rreeppllyy--hhooookk is matched against the message you are _r_e_p_l_y_i_n_g _t_o, instead + of the message you are _s_e_n_d_i_n_g .  sseenndd--hhooookk is matched against all + messages, both _n_e_w and _r_e_p_l_i_e_s ._N_o_t_e_:rreeppllyy--hhooookks are matched _b_e_f_o_r_e + the sseenndd--hhooookk, _r_e_g_a_r_d_l_e_s_s of the order specified in the users's + configuration file. - The Mutt Next Generation E-Mail Client 23 + sseenndd22--hhooookk is matched every time a message is changed, either by + editing it, or by using the compose menu to change its recipients or + subject. sseenndd22--hhooookk is executed after sseenndd--hhooookk ,and can, e.g., be + used to set parameters such as the $$sseennddmmaaiill variable depending on the + message's sender address. - my_hdr X-Operating-System: `uname -a` + For each type of sseenndd--hhooookk or rreeppllyy--hhooookk, when multiple matches occur, + commands are executed in the order they are specified in the muttrc + (for that type of hook). - 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. + See ppaatttteerrnn--hhooookk for information on the exact format of _p_a_t_t_e_r_n. - 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, + Example: send-hook mutt "set mime_forward signature=''" - set record=+sent_on_$HOSTNAME + Another typical use for this command is to change the values of the + $$aattttrriibbuuttiioonn, $$ssiiggnnaattuurree and $$llooccaallee variables in order to change the + language of the attributions and signatures based upon the recipients. - This also applies for all configuration variables known to mutt-ng, for example + _N_o_t_e_: the sseenndd--hhooookk'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 sseenndd--hhooookk 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 sseenndd--hhooookk. - set imap_home_namespace = $folder +22. Change settings before formatting a message - The commands understood by mutt are explained in the next paragraphs. For a - complete list, see the _c_o_m_m_a_n_d _r_e_f_e_r_e_n_c_e (section 7.3 , page 83). + Usage: mmeessssaaggee--hhooookk [!]_p_a_t_t_e_r_n_c_o_m_m_a_n_d - _3_._3 _D_e_f_i_n_i_n_g_/_U_s_i_n_g _a_l_i_a_s_e_s + This command can be used to execute arbitrary configuration commands + before viewing or formatting a message based upon information about + the message. _c_o_m_m_a_n_d is executed if the _p_a_t_t_e_r_n matches the message to + be displayed. When multiple matches occur, commands are executed in + the order they are specified in the muttrc. - Usage: alias _k_e_y _a_d_d_r_e_s_s [ , _a_d_d_r_e_s_s, ... ] + See ppaatttteerrnn--hhooookk for information on the exact format of _p_a_t_t_e_r_n. - 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. + Example: +message-hook ~A 'set pager=builtin' +message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject:.*\""' - NNoottee:: if you want to create an alias for a group (by specifying more than one - address), you mmuusstt separate the addresses with a comma (``,''). +23. Choosing the cryptographic key of the recipient - To remove an alias or aliases (``*'' means all aliases): + Usage: ccrryypptt--hhooookk_p_a_t_t_e_r_n_k_e_y_i_d - unalias [ * | _k_e_y _._._. ] + 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 ccrryypptt--hhooookk 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. - alias muttdude me@cs.hmc.edu (Michael Elkins) - alias theguys manny, moe, jack + 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. - Unlike other mailers, Mutt-ng doesn't require aliases to be defined in a spe- - cial file. The alias command can appear anywhere in a configuration file, as - long as this file is _s_o_u_r_c_e_d (section 3.28 , page 43). Consequently, you can - have multiple alias files, or you can have all aliases defined in your muttrc. +24. Adding key sequences to the keyboard buffer - On the other hand, the _c_r_e_a_t_e_-_a_l_i_a_s (section 2.5.4 , page 11) function can use - only one file, the one pointed to by the _$_a_l_i_a_s___f_i_l_e (section 7.4.4 , page 87) - 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 _s_o_u_r_c_e (section - 3.28 , page 43) this file too. + Usage: push_s_t_r_i_n_g - The Mutt Next Generation E-Mail Client 24 + 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 mmaaccrroo command. You may use it to automatically + run a sequence of commands at startup, or when entering certain + folders. For example, the following command will automatically + collapse all threads when entering a folder: +folder-hook . 'push ' - For example: +25. Executing functions - source /usr/local/share/Mutt-ng.aliases - source ~/.mail_aliases - set alias_file=~/.mail_aliases + Usage: exec_f_u_n_c_t_i_o_n_ _[_f_u_n_c_t_i_o_n_ _._._._ _] - To use aliases, you merely use the alias at any place in mutt where mutt - prompts for addresses, such as the _T_o_: or _C_c_: prompt. You can also enter - aliases in your editor at the appropriate headers if you have the _$_e_d_i_t___h_e_a_d_e_r_s - (section 7.4.57 , page 100) variable set. + This command can be used to execute any function. Functions are listed + in the ffuunnccttiioonnss. ``exec function'' is equivalent to ``push + ''. - 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. +26. Message Scoring - In the alias menu, you can select as many aliases as you want with the _s_e_l_e_c_t_- - _e_n_t_r_y key (default: RET), and use the _e_x_i_t key (default: q) to return to the - address prompt. + Usage: score_p_a_t_t_e_r_n_ _v_a_l_u_e - _3_._4 _C_h_a_n_g_i_n_g _t_h_e _d_e_f_a_u_l_t _k_e_y _b_i_n_d_i_n_g_s + Usage: unscore_p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._ _] - Usage: bind _m_a_p _k_e_y _f_u_n_c_t_i_o_n + 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 _s_c_o_r_e_ _t_h_r_e_s_h_o_l_d_s 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 + $$ssccoorree__tthhrreesshhoolldd__rreeaadd, $$ssccoorree__tthhrreesshhoolldd__ffllaagg and + $$ssccoorree__tthhrreesshhoolldd__ddeelleettee. + + By default, $$ssccoorree__tthhrreesshhoolldd__rreeaadd and $$ssccoorree__tthhrreesshhoolldd__ddeelleettee are set + to -1, which means that in the default threshold configuration no + message will ever get marked as read or deleted. + + Scoring gets especially interesting when combined with the color + command and the ~n pattern: + +color index black yellow "~n 10-" +color index red yellow "~n 100-" + + The rules above mark all messages with a score between 10 and 99 with + black and yellow, and messages with a score greater or equal 100 with + red and yellow. This might be unusual to you if you're used to e.g. + slrn's scoring mechanism, but it is more flexible, as it visually + marks different scores. + +27. Spam detection + + Usage: spam_p_a_t_t_e_r_n_ _f_o_r_m_a_t + + Usage: nospam_p_a_t_t_e_r_n + + Mutt-ng has generalized support for external spam-scoring filters. By + defining your spam patterns with the spam and nospam commands, you can + _l_i_m_i_t, _s_e_a_r_c_h, and _s_o_r_t your mail based on its spam attributes, as + determined by the external filter. You also can display the spam + attributes in your index display using the %H selector in the + $$iinnddeexx__ffoorrmmaatt 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. _p_a_t_t_e_r_n should be a regular expression that + matches a header in a mail message. If any message in the mailbox + matches this regular expression, it will receive a ``spam tag'' or + ``spam attribute'' (unless it also matches a nospam pattern -- see + below.) The appearance of this attribute is entirely up to you, and is + governed by the _f_o_r_m_a_t parameter. _f_o_r_m_a_t can be any static text, but + it also can include back-references from the _p_a_t_t_e_r_n expression. (A + regular expression ``back-reference'' refers to a sub-expression + contained within parentheses.) %1 is replaced with the first + back-reference in the regex, %2 with the second, etc. + + 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 _f_o_r_m_a_t 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 _f_o_r_m_a_t 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 _s_e_a_r_c_h and _l_i_m_i_t + 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 _l_e_x_i_c_a_l_l_y -- that + is, by ordering strings alphnumerically. However, if a spam tag begins + with a number, mutt will sort numerically first, and lexically only + when two numbers are equal in value. (This is like UNIX's sort -n.) A + message with no spam attributes at all -- that is, one that didn't + match _a_n_y of your spam patterns -- is sorted at lowest priority. + Numbers are sorted next, beginning with 0 and ranging upward. Finally, + non-numeric strings are sorted, with ``a'' taking 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 _p_a_t_t_e_r_n given to nospam is exactly the same as the _p_a_t_t_e_r_n on + an existing spam list entry, the effect will be to remove the entry + from the spam list, instead of adding an exception. Likewise, if the + _p_a_t_t_e_r_n for a spam command matches an entry on the nospam list, that + nospam entry will be removed. If the _p_a_t_t_e_r_n for nospam is ``*'', _a_l_l + _e_n_t_r_i_e_s_ _o_n_ _b_o_t_h_ _l_i_s_t_s will be removed. This might be the default + action if you use spam and nospam in conjunction with a ffoollddeerr--hhooookk. + + You can have as many spam or nospam commands as you like. You can even + do your own primitive spam detection within mutt -- for example, if + you consider all mail from MAILER-DAEMON to be spam, you can use a + spam command like this: + +spam "^From: .*MAILER-DAEMON" "999" + +28. Setting variables + + Usage: set_[_n_o_|_i_n_v_]_v_a_r_i_a_b_l_e_ _[_=_v_a_l_u_e_]_ _[_v_a_r_i_a_b_l_e_._._._] + + Usage: toggle_v_a_r_i_a_b_l_e_ _[_v_a_r_i_a_b_l_e_ _._._._] + + Usage: unset_v_a_r_i_a_b_l_e_ _[_v_a_r_i_a_b_l_e_ _._._._] + + Usage: reset_v_a_r_i_a_b_l_e_ _[_v_a_r_i_a_b_l_e_ _._._._] + + This command is used to set (and unset) vvaarriiaabblleess. There are four + basic types of variables: boolean, number, string and quadoption. + _b_o_o_l_e_a_n variables can be _s_e_t (true) or _u_n_s_e_t (false). _n_u_m_b_e_r variables + can be assigned a positive integer value. + + _s_t_r_i_n_g variables consist of any number of printable characters. + _s_t_r_i_n_g_s must be enclosed in quotes if they contain spaces or tabs. You + may also use the ``C'' escape sequences _\_n and _\_t for newline and tab, + respectively. - This command allows you to change the default key bindings (operation invoked - when pressing a key). + _q_u_a_d_o_p_t_i_o_n variables are used to control whether or not to be prompted + for certain actions, or to specify a default action. A value of _y_e_s + will cause the action to be carried out automatically as if you had + answered yes to the question. Similarly, a value of _n_o will cause the + the action to be carried out as if you had answered ``no.'' A value of + _a_s_k_-_y_e_s will cause a prompt with a default answer of ``yes'' and + _a_s_k_-_n_o will provide a default answer of ``no.'' - _m_a_p specifies in which menu the binding belongs. Multiple maps may be speci- - fied by separating them with commas (no additional whitespace is allowed). The - currently defined maps are: + Prefixing a variable with ``no'' will unset it. Example: set noaskbcc + . - 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 accom- - plish the same task. + For _b_o_o_l_e_a_n variables, you may optionally prefix the variable name + with inv to toggle the value (on or off). This is useful when writing + macros. Example: set invsmart_wrap. - 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). + The toggle command automatically prepends the inv prefix to all + specified variables. - attach - The attachment menu is used to access the attachments on received - messages. + The unset command automatically prepends the no prefix to all + specified variables. - The Mutt Next Generation E-Mail Client 25 + Using the enter-command function in the _i_n_d_e_x menu, you can query the + value of a variable by prefixing the name of the variable with a + question mark: - browser - The browser is used for both browsing the local directory struc- - ture, and for listing all of your incoming mailboxes. +set ?allow_8bit - editor - The editor is the line-based editor the user enters text data. + The question mark is actually only required for boolean and quadoption + variables. - index - The index is the list of messages contained in a mailbox. + 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. - compose - The compose menu is the screen used when sending a new message. + With the reset command there exists the special variable ``all'', + which allows you to reset all variables to their system defaults. - pager - The pager is the mode used to display message/attachment data, and - help listings. +29. Reading initialization commands from another file - pgp - The pgp menu is used to select the OpenPGP keys used for encrypting - outgoing messages. + Usage: source_f_i_l_e_n_a_m_e_ _[_f_i_l_e_n_a_m_e_ _._._._] - 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. + 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. - _k_e_y is the key (or key sequence) you wish to bind. To specify a control char- - acter, use the sequence _\_C_x, where _x is the letter of the control character - (for example, to specify control-A use ``\Ca''). Note that the case of _x as - well as _\_C is ignored, so that _\_C_A, _\_C_a, _\_c_A and _\_c_a are all equivalent. An - alternative form is to specify the key as a three digit octal number prefixed - with a ``\'' (for example _\_1_7_7 is equivalent to _\_c_?). + If the filename begins with a tilde (``~''), it will be expanded to + the path of your home directory. - In addition, _k_e_y may consist of: + If the filename ends with a vertical bar (|), then _f_i_l_e_n_a_m_e is + considered to be an executable program from which to read input (eg. + source ~/bin/myscript|). - The Mutt Next Generation E-Mail Client 26 - - \t tab - tab - backtab / shift-tab - \r carriage return - \n newline - \e escape - escape - up arrow - down arrow - left arrow - right arrow - Page Up - Page Down - Backspace - Delete - Insert - Enter - Return - Home - End - Space bar - function key 1 - function key 10 +30. Removing hooks - _k_e_y does not need to be enclosed in quotes unless it contains a space (`` ''). + Usage: unhook_[_*_ _|_ _h_o_o_k_-_t_y_p_e_] - _f_u_n_c_t_i_o_n specifies which action to take when _k_e_y is pressed. For a complete - list of functions, see the _r_e_f_e_r_e_n_c_e (section 7.5 , page 171). The special - function noop unbinds the specified key sequence. + 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. - _3_._5 _D_e_f_i_n_i_n_g _a_l_i_a_s_e_s _f_o_r _c_h_a_r_a_c_t_e_r _s_e_t_s +31. Sharing Setups - Usage: charset-hook _a_l_i_a_s _c_h_a_r_s_e_t +31.1. Character Sets - Usage: iconv-hook _c_h_a_r_s_e_t _l_o_c_a_l_-_c_h_a_r_s_e_t + 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. - 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. + 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: - 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. +set config_charset = "..." - _3_._6 _S_e_t_t_i_n_g _v_a_r_i_a_b_l_e_s _b_a_s_e_d _u_p_o_n _m_a_i_l_b_o_x + and replacing the dots with the actual character set. To avoid + problems while maintaining the setup, vim(1) user's may want to use + modelines as show in: - Usage: folder-hook [!]_r_e_g_e_x_p _c_o_m_m_a_n_d +# vim:fileencoding=...: - It is often desirable to change settings based on which mailbox you are + while, again, replacing the dots with the appropriate name. This tells + vim(1) as which character set to read and save the file. - The Mutt Next Generation E-Mail Client 27 +31.2. Modularization - reading. The folder-hook command provides a method by which you can execute - any configuration command. _r_e_g_e_x_p is a regular expression specifying in which - mailboxes to execute _c_o_m_m_a_n_d before loading. If a mailbox matches multiple - folder-hook's, they are executed in the order given in the muttrc. + ``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. - NNoottee:: if you use the ``!'' shortcut for _$_s_p_o_o_l_f_i_l_e (section 7.4.301 , page - 159) at the beginning of the pattern, you must place it inside of double or - single quotes in order to distinguish it from the logical _n_o_t operator for the - expression. + When using separation, setups may be, as a whole or in fractions, + shared over different systems. - Note that the settings are _n_o_t restored when you leave the mailbox. For exam- - ple, a command action to perform is to change the sorting method based upon the - mailbox being read: +31.3. Conditional parts - folder-hook mutt set sort=threads + 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. - However, the sorting method is not restored to its previous value when reading - a different mailbox. To specify a _d_e_f_a_u_l_t command, use the pattern ``.'': + To solve this, mutt-ng contain a feature based on the ``ifdef'' patch + written for mutt. Its basic syntax is: - folder-hook . set sort=date-sent +ifdef +ifndef - _3_._7 _K_e_y_b_o_a_r_d _m_a_c_r_o_s + ...whereby can be one of: - Usage: macro _m_e_n_u _k_e_y _s_e_q_u_e_n_c_e [ _d_e_s_c_r_i_p_t_i_o_n ] + * a function name + * a variable name + * a menu name + * a feature name - Macros are useful when you would like a single key to perform a series of - actions. When you press _k_e_y in menu _m_e_n_u, Mutt-ng will behave as if you had - typed _s_e_q_u_e_n_c_e. So if you have a common sequence of commands you type, you can - create a macro to execute those commands with a single key. + 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 - _m_e_n_u is the _m_a_p (section 3.4 , page 24) which the macro will be bound. Multi- - ple maps may be specified by separating multiple menu arguments by commas. - Whitespace may not be used in between the menu arguments and the commas sepa- - rating them. + As an example, one can use the following in ~/.muttngrc: - _k_e_y and _s_e_q_u_e_n_c_e are expanded by the same rules as the _k_e_y _b_i_n_d_i_n_g_s (section - 3.4 , page 24). There are some additions however. The first is that control - characters in _s_e_q_u_e_n_c_e can also be specified as _^_x. In order to get a caret - (`^'') you need to use _^_^. Secondly, to specify a certain key such as _u_p or to - invoke a function directly, you can use the format _<_k_e_y _n_a_m_e_> and _<_f_u_n_c_t_i_o_n - _n_a_m_e_>. For a listing of key names see the section on _k_e_y _b_i_n_d_i_n_g_s (section - 3.4 , page 24). Functions are listed in the _f_u_n_c_t_i_o_n _r_e_f_e_r_e_n_c_e (section - 7.5 , page 171). +ifdef feature_imap 'source ~/.mutt-ng/setup-imap' +ifdef feature_pop 'source ~/.mutt-ng/setup-pop' +ifdef feature_nntp 'source ~/.mutt-ng/setup-nntp' - 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 + ...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. - The Mutt Next Generation E-Mail Client 28 + 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 $$iimmaapp__mmaaiill__cchheecckk + use: - (eg. the system Muttngrc). +ifdef imap_mail_check 'set imap_mail_check = 300' - Optionally you can specify a descriptive text after _s_e_q_u_e_n_c_e, which is shown in - the help screens. + Provided for completeness is the test for menu names. To set + $$ppaaggeerr__iinnddeexx__lliinneess only if the pager menu is available, use: - NNoottee:: Macro definitions (if any) listed in the help screen(s), are silently - truncated at the screen width, and are not wrapped. +ifdef pager 'set pager_index_lines = 10' - _3_._8 _U_s_i_n_g _c_o_l_o_r _a_n_d _m_o_n_o _v_i_d_e_o _a_t_t_r_i_b_u_t_e_s + 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: - Usage: color _o_b_j_e_c_t _f_o_r_e_g_r_o_u_n_d _b_a_c_k_g_r_o_u_n_d [ _r_e_g_e_x_p ] +ifdef feature_ncurses 'source ~/.mutt-ng/setup-ncurses' +ifndef feature_ncurses 'source ~/.mutt-ng/setup-slang' - Usage: color index _f_o_r_e_g_r_o_u_n_d _b_a_c_k_g_r_o_u_n_d _p_a_t_t_e_r_n + ...and... - Usage: uncolor index _p_a_t_t_e_r_n [ _p_a_t_t_e_r_n ... ] +ifdef feature_slang 'source ~/.mutt-ng/setup-slang' +ifndef feature_slang 'source ~/.mutt-ng/setup-ncurses' - 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 aanndd a background color (it is not possible to - only specify one or the other). +32. Obsolete Variables - _o_b_j_e_c_t can be one of: + 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 sseecctt--oobbssoolleettee for a complete list. - +o attachment +Chapter 4. Advanced Usage - +o body (match _r_e_g_e_x_p in the body of messages) + _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s - +o bold (highlighting bold patterns in the body of messages) + 11..  RReegguullaarr  EExxpprreessssiioonnss + 22..  PPaatttteerrnnss - +o error (error messages printed by Mutt-ng) + 22..11..  CCoommpplleexx  PPaatttteerrnnss + 22..22..  PPaatttteerrnnss  aanndd  DDaatteess - +o header (match _r_e_g_e_x_p in the message header) + 33..  FFoorrmmaatt  SSttrriinnggss - +o hdrdefault (default color of the message header in the pager) + 33..11..  IInnttrroodduuccttiioonn + 33..22..  CCoonnddiittiioonnaall  EExxppaannssiioonn + 33..33..  MMooddiiffiiccaattiioonnss  aanndd  PPaaddddiinngg - +o index (match _p_a_t_t_e_r_n in the message index) + 44..  UUssiinngg  TTaaggss + 55..  UUssiinngg  HHooookkss - +o indicator (arrow or bar used to indicate the current item in a menu) + 55..11..  MMeessssaaggee  MMaattcchhiinngg  iinn  HHooookkss - +o markers (the ``+'' markers at the beginning of wrapped lines in the pager) + 66..  UUssiinngg  tthhee  ssiiddeebbaarr + 77..  EExxtteerrnnaall  AAddddrreessss  QQuueerriieess + 88..  MMaaiillbbooxx  FFoorrmmaattss + 99..  MMaaiillbbooxx  SShhoorrttccuuttss + 1100..  HHaannddlliinngg  MMaaiilliinngg  LLiissttss + 1111..  EEddiittiinngg  tthhrreeaaddss - +o message (informational messages) + 1111..11..  LLiinnkkiinngg  tthhrreeaaddss + 1111..22..  BBrreeaakkiinngg  tthhrreeaaddss - +o normal + 1122..  DDeelliivveerryy  SSttaattuuss  NNoottiiffiiccaattiioonn  ((DDSSNN))  SSuuppppoorrtt + 1133..  PPOOPP33  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) + 1144..  IIMMAAPP  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) - +o quoted (text matching _$_q_u_o_t_e___r_e_g_e_x_p (section 7.4.229 , page 142) in the - body of a message) + 1144..11..  TThhee  FFoollddeerr  BBrroowwsseerr + 1144..22..  AAuutthheennttiiccaattiioonn - +o quoted1, quoted2, ..., quotedNN (higher levels of quoting) + 1155..  NNNNTTPP  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) - +o search (highlighting of words in the pager) + 1155..11..  AAggaaiinn::  SSccoorriinngg - The Mutt Next Generation E-Mail Client 29 + 1166..  SSMMTTPP  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) + 1177..  MMaannaaggiinngg  mmuullttiippllee  IIMMAAPP//PPOOPP//NNNNTTPP  aaccccoouunnttss  ((OOPPTTIIOONNAALL)) + 1188..  SSttaarrtt  aa  WWWWWW  BBrroowwsseerr  oonn  UURRLLss  ((EEXXTTEERRNNAALL)) + 1199..  CCoommpprreesssseedd  ffoollddeerrss  SSuuppppoorrtt  ((OOPPTTIIOONNAALL)) - +o signature + 1199..11..  OOppeenn  aa  ccoommpprreesssseedd  mmaaiillbbooxx  ffoorr  rreeaaddiinngg + 1199..22..  WWrriittee  aa  ccoommpprreesssseedd  mmaaiillbbooxx + 1199..33..  AAppppeenndd  aa  mmeessssaaggee  ttoo  aa  ccoommpprreesssseedd  mmaaiillbbooxx + 1199..44..  EEnnccrryypptteedd  ffoollddeerrss - +o status (mode lines used to display info about the mailbox or message) +1. Regular Expressions - +o tilde (the ``~'' used to pad blank lines in the pager) + All string patterns in Mutt-ng including those in more complex + ppaatttteerrnnss 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. - +o tree (thread tree drawn in the message index and attachment menu) + 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: ``\\''. - +o underline (highlighting underlined patterns in the body of messages) + 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. - _f_o_r_e_g_r_o_u_n_d and _b_a_c_k_g_r_o_u_n_d can be one of the following: + 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 mmuuttttrrcc--ssyynnttaaxx for more information on " and ' delimiter + processing. To match a literal " or ' you must preface it with \ + (backslash). - +o white + 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. - +o black + 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. - +o green + 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 _n_o_t in the list. For example, the + regular expression _]_0_1_2_3_4_5_6_7_8_9_] 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. - +o magenta + 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: - +o blue + [:alnum:] + Alphanumeric characters. - +o cyan + [:alpha:] + Alphabetic characters. - +o yellow + [:blank:] + Space or tab characters. - +o red + [:cntrl:] + Control characters. - +o default + [:digit:] + Numeric characters. - +o color_x + [:graph:] + Characters that are both printable and visible. (A space is + printable, but not visible, while an ``a'' is both.) - _f_o_r_e_g_r_o_u_n_d can optionally be prefixed with the keyword bright to make the fore- - ground color boldfaced (e.g., brightred). + [:lower:] + Lower-case alphabetic characters. + + [:print:] + Printable characters (characters that are not control + characters.) - If your terminal supports it, the special keyword _d_e_f_a_u_l_t can be used as a - transparent color. The value _b_r_i_g_h_t_d_e_f_a_u_l_t is also valid. If Mutt-ng is - linked against the _S_-_L_a_n_g library, you also need to set the _C_O_L_O_R_F_G_B_G environ- - ment variable to the default colors of your terminal for this to work; for - example (for Bourne-like shells): + [:punct:] + Punctuation characters (characters that are not letter, digits, + control characters, or space characters). - set COLORFGBG="green;black" - export COLORFGBG + [:space:] + Space characters (such as space, tab and formfeed, to name a + few). - NNoottee:: The _S_-_L_a_n_g library requires you to use the _l_i_g_h_t_g_r_a_y and _b_r_o_w_n keywords - instead of _w_h_i_t_e and _y_e_l_l_o_w when setting this variable. + [:upper:] + Upper-case alphabetic characters. - NNoottee:: The uncolor command can be applied to the index object only. It removes - entries from the list. You mmuusstt specify the same pattern specified in the color - command for it to be removed. The pattern ``*'' is a special token which means - to clear the color index list of all entries. + [:xdigit:] + Characters that are hexadecimal digits. - The Mutt Next Generation E-Mail Client 30 + 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, _[_[_:_d_i_g_i_t_:_]_] + is equivalent to _[_0_-_9_]. - Mutt-ng also recognizes the keywords _c_o_l_o_r_0, _c_o_l_o_r_1, ..., _c_o_l_o_rNN--11 (NN being the - number of colors supported by your terminal). This is useful when you remap - the colors for your display (for example by changing the color associated with - _c_o_l_o_r_2 for your xterm), since color names may then lose their normal meaning. + 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: - If your terminal does not support color, it is still possible change the video - attributes through the use of the ``mono'' command: + Collating Symbols + A collating symbol is a multi-character collating element + enclosed in ``[.'' and ``.]''. For example, if ``ch'' is a + collating element, then _[_[_._c_h_._]_] is a regexp that matches this + collating element, while _[_c_h_] is a regexp that matches either + ``c'' or ``h''. - Usage: mono _<_o_b_j_e_c_t_> _<_a_t_t_r_i_b_u_t_e_> [ _r_e_g_e_x_p ] + 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''. - Usage: mono index _a_t_t_r_i_b_u_t_e _p_a_t_t_e_r_n + A regular expression matching a single character may be followed by + one of several repetition operators: - Usage: unmono index _p_a_t_t_e_r_n [ _p_a_t_t_e_r_n ... ] + ? + The preceding item is optional and matched at most once. - where _a_t_t_r_i_b_u_t_e is one of the following: + * + The preceding item will be matched zero or more times. - +o none + + + The preceding item will be matched one or more times. - +o bold + {n} + The preceding item is matched exactly _n times. - +o underline + {n,} + The preceding item is matched _n or more times. - +o reverse + {,m} + The preceding item is matched at most _m times. - +o standout + {n,m} + The preceding item is matched at least _n times, but no more + than _m times. - _3_._9 _I_g_n_o_r_i_n_g _(_w_e_e_d_i_n_g_) _u_n_w_a_n_t_e_d _m_e_s_s_a_g_e _h_e_a_d_e_r_s + Two regular expressions may be concatenated; the resulting regular + expression matches any string formed by concatenating two substrings + that respectively match the concatenated subexpressions. - Usage: [un]ignore _p_a_t_t_e_r_n [ _p_a_t_t_e_r_n ... ] + Two regular expressions may be joined by the infix operator ``|''; the + resulting regular expression matches any string matching either + subexpression. - 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. + 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. - You do not need to specify the full header field name. For example, ``ignore - content-'' will ignore all header fields that begin with the pattern ``con- - tent-''. ``ignore *'' will ignore all headers. + _N_o_t_e_: If you compile Mutt-ng with the GNU _r_x package, the following + operators may also be used in regular expressions: - 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 pat- - tern. For example, if you do ``ignore x-'' it is possible to ``unignore x- - mailer''. + \\y + Matches the empty string at either the beginning or the end of + a word. - ``unignore *'' will remove all tokens from the ignore list. + \\B + Matches the empty string within a word. - For example: + \\< + Matches the empty string at the beginning of a word. - # 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: + \\> + Matches the empty string at the end of a word. - The Mutt Next Generation E-Mail Client 31 + \\w + Matches any word-constituent character (letter, digit, or + underscore). - _3_._1_0 _A_l_t_e_r_n_a_t_i_v_e _a_d_d_r_e_s_s_e_s + \\W + Matches any character that is not word-constituent. - Usage: [un]alternates _r_e_g_e_x_p [ _r_e_g_e_x_p ... ] + \\` + Matches the empty string at the beginning of a buffer (string). - 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 - _$_r_e_p_l_y___t_o (section 7.4.237 , page 144).) + \\' + Matches the empty string at the end of a buffer. - 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. + 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. - The unalternates command can be used to write exceptions to alternates pat- - terns. If an address matches something in an alternates command, but you none- - theless do not think it is from you, you can list a more precise pattern under - an unalternates command. +2. Patterns - To remove a regular expression from the alternates list, use the unalternates - command with exactly the same _r_e_g_e_x_p. Likewise, if the _r_e_g_e_x_p for a alternates - command matches an entry on the unalternates list, that unalternates entry will - be removed. If the _r_e_g_e_x_p for unalternates is ``*'', _a_l_l _e_n_t_r_i_e_s on alternates - will be removed. + 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 ppaatttteerrnnss in the Reference chapter. - _3_._1_1 _F_o_r_m_a_t _= _F_l_o_w_e_d + 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. - _3_._1_1_._1 _I_n_t_r_o_d_u_c_t_i_o_n +2.1. Complex Patterns - Mutt-ng contains support for so-called format=flowed messages. In the begin- - ning of email, each message had a fixed line width, and it was enough for dis- - playing 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 cre- - ating an incompatible email format that can also be displayed nicely on old - fixed-size terminals. + 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: - For introductory information on format=flowed messages, see - . +~s 'SPAM' ~U - _3_._1_1_._2 _R_e_c_e_i_v_i_n_g_: _D_i_s_p_l_a_y _S_e_t_u_p + The pattern above matches all messages that contain ``SPAM'' in the + subject and are unread. - When you receive emails that are marked as format=flowed messages, and is for- - matted 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: + To logical OR patterns, simply use the | operator. This one especially + useful when using local groups: - The Mutt Next Generation E-Mail Client 32 +~f ("nion@muttng\.org"|"ak@muttng\.org"|"pdmef@muttng\.org") +(~b mutt-ng|~s Mutt-ng) +!~x '@synflood\.at' - set wrapmargin = 10 + 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. - The code above makes the line break 10 columns before the right side of the - terminal. +2.2. Patterns and Dates - If your terminal is so wide that the lines are embarrassingly long, you can - also set a maximum line length: + 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 _a_f_t_e_r Juni + 1st, 2005. - set max_line_length = 120 + 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. - The example above will give you lines not longer than 120 characters. +~d 01/01/2005+1y +~d 18/10/2004-2w +~d 28/12/2004*1d - When you view at format=flowed messages, you will often see the quoting hierar- - chy like in the following example: + 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). - >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. + 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: - This obviously doesn't look very nice, and it makes it very hard to differenti- - ate between text and quoting character. The solution is to configure mutt-ng to - "stuff" the quoting: +~d >2w # messages older than two weeks +~d <3d # messages newer than 3 days +~d =1m # messages that are exactly one month old - set stuff_quoted +3. Format Strings - This will lead to a nicer result that is easier to read: +3.1. Introduction - > 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. + The so called _F_o_r_m_a_t_ _S_t_r_i_n_g_s offer great flexibility when configuring + mutt-ng. In short, they describe what items to print out how in menus + and status messages. - _3_._1_1_._3 _S_e_n_d_i_n_g + 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 _e_x_p_a_n_d_o. - If you want mutt-ng to send emails with format=flowed set, you need to explic- - itly set it: + 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: - set text_flowed + * the current hostname + * the current mutt-ng version number - The Mutt Next Generation E-Mail Client 33 + The setting for the status bar of the index is controlled via the + $$ssttaattuuss__ffoorrmmaatt 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: - 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. +set status_format = "%v on %h: ..." - Also note that _f_o_r_m_a_t_=_f_l_o_w_e_d 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: + 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: - +o > This is _n_o_t the quote character but a right angle used for other reasons +Mutt-ng 1.5.9i on mailhost: ... - +o From with a trailing space. + In the index, there're more useful information one could want to see: - +o just a space for formatting reasons + * which mailbox is open + * how man new, flagged or postponed messages + * ... - Please make sure that you manually prepend a space to each of them. + To include the mailbox' name is as easy as: - _3_._1_1_._4 _A_d_d_i_t_i_o_n_a_l _N_o_t_e_s +set status_format = "%v on %h: %B: ... - " + When the currently opened mailbox is Inbox, this will be expanded to: - For completeness, the _$_d_e_l_e_t_e___s_p_a_c_e (section 7.4.49 , page 98) variable pro- - vides the mechanism to generate a DelSp=yes parameter on _o_u_t_g_o_i_n_g 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 _w_i_t_h_o_u_t a space. This makes ordinary text unread- - able and is intended for languages rarely using spaces. So please use this set- - ting only if you're sure what you're doing. +Mutt-ng 1.5.9i on mailhost: Inbox: ... - _3_._1_2 _M_a_i_l_i_n_g _l_i_s_t_s + 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. - Usage: [un]lists _r_e_g_e_x_p [ _r_e_g_e_x_p ... ] +3.2. Conditional Expansion - Usage: [un]subscribe _r_e_g_e_x_p [ _r_e_g_e_x_p ... ] + To only print the number of messages if there are new messages in the + current mailbox, further extend $status_format to: - Mutt-ng has a few nice features for _h_a_n_d_l_i_n_g _m_a_i_l_i_n_g _l_i_s_t_s (section 4.10 , - page 58). In order to take advantage of them, you must specify which addresses - belong to mailing lists, and which mailing lists you are subscribed to. Once - you have done this, the _l_i_s_t_-_r_e_p_l_y (section 2.5.4 , page 12) function will - work for all known lists. Additionally, when you send a message to a sub- - scribed 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 per- - sonal CCs of list messages. Also note that the generation of the Mail-Fol- - lowup-To header is controlled by the _$_f_o_l_l_o_w_u_p___t_o (section 7.4.69 , page 103) - configuration variable. +set status_format = "%v on %h: %B %?n?%n new? ... - The Mutt Next Generation E-Mail Client 34 + This feature is called _n_o_n_z_e_r_o_-_p_r_i_n_t_i_n_g 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: - 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. + which tells mutt-ng to only look at if the value + of the %?&? - 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 this we can make mutt-ng to do the following: - _3_._1_3 _U_s_i_n_g _M_u_l_t_i_p_l_e _s_p_o_o_l _m_a_i_l_b_o_x_e_s + * 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 - Usage: mbox-hook [!]_p_a_t_t_e_r_n _m_a_i_l_b_o_x + The corresponding configuration is: - This command is used to move read messages from a specified mailbox to a dif- - ferent mailbox automatically when you quit or change folders. _p_a_t_t_e_r_n is a - regular expression specifying the mailbox to treat as a ``spool'' mailbox and - _m_a_i_l_b_o_x specifies where mail should be saved when read. +set status_format = "%v on %h: %B: %?n?%n new messages&no new messages? ... - Unlike some of the other _h_o_o_k commands, only the _f_i_r_s_t matching pattern is used - (it is not possible to save read mail in more than a single mailbox). + This doubles the use of the ``new messages'' string because it'll get + always printed. Thus, it can be shortened to: - _3_._1_4 _D_e_f_i_n_i_n_g _m_a_i_l_b_o_x_e_s _w_h_i_c_h _r_e_c_e_i_v_e _m_a_i_l +set status_format = "%v on %h: %B: %?n?%n&no? new messages ... - Usage: [un]mailboxes [!]_f_i_l_e_n_a_m_e [ _f_i_l_e_n_a_m_e ... ] + 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. - 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. +3.3. Modifications and Padding - When changing folders, pressing _s_p_a_c_e will cycle through folders with new mail. + Besides the information given so far, there're even more features of + format strings: - 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. + * When specifying %_ instead of just %, mutt-ng will + convert all characters in the expansion of to lowercase. + * When specifying %: instead of just %, mutt-ng will + convert all dots in the expansion of to underscores (_). - The Mutt Next Generation E-Mail Client 35 + Also, there's a feature called _P_a_d_d_i_n_g supplied by the following two + expandos: %|X and %>X . - Mutt-ng will automatically enter this mode when invoked from the command line - with the -y option. + %|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: - The ``unmailboxes'' command is used to remove a token from the list of folders - which receive mail. Use ``unmailboxes *'' to remove all tokens. +set status_format = "%v on %h: %B: %?n?%n&no? new messages %|-" - NNoottee:: new mail is detected by comparing the last modification time to the last - access time. Utilities like biff or frm or any other program which accesses - the mailbox might cause Mutt-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. + %>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 %>): - NNoottee:: the filenames in the mailboxes command are resolved when the command is - executed, so if these names contain _s_h_o_r_t_c_u_t _c_h_a_r_a_c_t_e_r_s (section 4.9 , page - 58) (such as ``='' and ``!''), any variable definition that affect these char- - acters (like _$_f_o_l_d_e_r (section 7.4.67 , page 102) and _$_s_p_o_o_l_f_i_l_e (section - 7.4.301 , page 159)) should be executed before the mailboxes command. +set status_format = "%B: %?n?%n&no? new messages %> (%v on %h)" - _3_._1_5 _U_s_e_r _d_e_f_i_n_e_d _h_e_a_d_e_r_s +4. Using Tags - Usage: + 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 + ppaatttteerrnnss 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 _n_e_x_t operation + will be applied to all tagged messages if that operation can be used + in that manner. If the $$aauuttoo__ttaagg variable is set, the next operation + applies to the tagged messages automatically, without requiring the + ``tag-prefix''. + + In mmaaccrroo or ppuusshh 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. + +5. Using Hooks + + A _h_o_o_k is a concept borrowed from the EMACS editor which allows you to + execute arbitrary commands before performing some operation. For + example, you may wish to tailor your configuration based upon which + mailbox you are reading, or to whom you are sending mail. In the + Mutt-ng world, a _h_o_o_k consists of a rreeggeexxpp or ppaatttteerrnnss along with a + configuration option/command. See + * ffoollddeerr--hhooookk + * sseenndd--hhooookk + * mmeessssaaggee--hhooookk + * ssaavvee--hhooookk + * mmbbooxx--hhooookk + * ffcccc--hhooookk + * ffcccc--ssaavvee--hhooookk + + for specific details on each type of _h_o_o_k available. + + _N_o_t_e_: 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 + sseenndd--hhooookk and the my_hdr directive: + +send-hook . 'unmy_hdr From:' +send-hook '~C ^b@b\.b$' my-hdr from: c@c.c + +5.1. Message Matching in Hooks + + Hooks that act upon messages (  sseenndd--hhooookk, ssaavvee--hhooookk, ffcccc--hhooookk, + mmeessssaaggee--hhooookk )are evaluated in a slightly different manner. For the + other types of hooks, a rreeggeexxpp is sufficient. But in dealing with + messages a finer grain of control is needed for matching since for + different purposes you want to match different criteria. + + Mutt-ng allows the use of the ppaatttteerrnnss language for matching messages + in hook commands. This works in exactly the same way as it would when + _l_i_m_i_t_i_n_g or_s_e_a_r_c_h_i_n_g the mailbox, except that you are restricted to + those operators which match information mutt extracts from the header + of the message (i.e. from, to, cc, date, subject, etc.). + + For example, if you wanted to set your return address based upon + sending mail to a specific address, you could do something like: +send-hook '~t ^me@cs\.hmc\.edu$' 'my-hdr From: Mutt-ng User ' + + which would execute the given command when sending mail to + _m_e_@_c_s_._h_m_c_._e_d_u. + + However, it is not required that you write the pattern to match using + the full searching language. You can still specify a simple _r_e_g_u_l_a_r + _e_x_p_r_e_s_s_i_o_n like the other hooks, in which case Mutt-ng will translate + your pattern into the full language, using the translation specified + by the ddeeffaauulltt--hhooookk variable. The pattern is translated at the time + the hook is declared, so the value of ddeeffaauulltt--hhooookk that is in effect + at that time will be used. + +6. Using the sidebar + + The sidebar, a feature specific to Mutt-ng, allows you to use a + mailbox listing which looks very similar to the ones you probably know + from GUI mail clients. The sidebar lists all specified mailboxes, + shows the number in each and highlights the ones with new email Use + the following configuration commands: +set sidebar_visible="yes" +set sidebar_width=25 + + If you want to specify the mailboxes you can do so with: +set mbox='=INBOX' +mailboxes INBOX \ +MBOX1 \ +MBOX2 \ +... + + You can also specify the colors for mailboxes with new mails by using: +color sidebar_new red black +color sidebar white black + + Reasonable key bindings look e.g. like this: +bind index \Cp sidebar-prev +bind index \Cn sidebar-next +bind index \Cb sidebar-open +bind pager \Cp sidebar-prev +bind pager \Cn sidebar-next +bind pager \Cb sidebar-open + +macro index B ':toggle sidebar_visible^M' +macro pager B ':toggle sidebar_visible^M' + + You can then go up and down by pressing Ctrl-P and Ctrl-N, and switch + on and off the sidebar simply by pressing 'B'. + +7. External Address Queries + + Mutt-ng supports connecting to external directory databases such as + LDAP, ph/qi, bbdb, or NIS through a wrapper script which connects to + mutt using a simple interface. Using the $$qquueerryy__ccoommmmaanndd variable, you + specify the wrapper command to use. For example: + +set query_command = "mutt_ldap_query.pl '%s'" + + The wrapper script should accept the query on the command-line. It + should return a one line message, then each matching response on a + single line, each line containing a tab separated address then name + thensome other optional information. On error, or if there are no + matching addresses, return a non-zero exit code and a one line error + message. + + An example multiple response output: +Searching database ... 20 entries ... 3 matching: +me@cs.hmc.edu Michael Elkins mutt dude +blong@fiction.net Brandon Long mutt and more +roessler@guug.de Thomas Roessler mutt pgp + + There are two mechanisms for accessing the query function of mutt. One + is to do a query from the index menu using the query function + (default: Q). This will prompt for a query, then bring up the query + menu which will list the matching responses. From the query menu, you + can select addresses to create aliases, or to mail. You can tag + multiple addressesto mail, start a new query, or have a new query + appended to the current responses. + + The other mechanism for accessing the query function is for address + completion, similar to the alias completion. In any prompt for address + entry, you can use the complete-query function (default: ^T) to run a + query based on the current address you have typed. Like aliases, mutt + will look for what you have typed back to the last space or comma. If + there is a single response for that query, mutt will expand the + address in place. If there are multiple responses, mutt will activate + the querymenu. At the query menu, you can select one or more addresses + to be added to the prompt. + +8. Mailbox Formats + + Mutt-ng supports reading and writing of four different mailbox + formats: mbox, MMDF, MH and Maildir. The mailbox type is autodetected, + so there is no need to use a flag for different mailbox types. When + creating newmailboxes, Mutt-ng uses the default specified with the + $$mmbbooxx__ttyyppee variable. + + _m_b_o_x. This is the most widely used mailbox format for UNIX. All + messages are stored in a single file. Each message has a line of the + form: + +From me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST + + to denote the start of a new message (this is often referred to as the + ``From_'' line). + + _M_M_D_F. This is a variant of the _m_b_o_x format. Each message is surrounded + by lines containing ``^A^A^A^A'' (four control-A's). + + _M_H. A radical departure from _m_b_o_x and _M_M_D_F, a mailbox consists of a + directory and each message is stored in a separate file. The filename + indicates the message number (however, this is may not correspond to + the message number Mutt-ng displays). Deleted messages arerenamed with + a comma (,) prepended to the filename. _N_o_t_e_: Mutt detects this type of + mailbox by looking for either .mh_sequences or .xmhcache (needed to + distinguish normal directories from MH mailboxes). + + _M_a_i_l_d_i_r. The newest of the mailbox formats, used by the Qmail MTA (a + replacement for sendmail). Similar to _M_H, except that it adds three + subdirectories of the mailbox: _t_m_p, _n_e_w and _c_u_r .Filenames for the + messages are chosen in such a way they are unique, even when + twoprograms are writing the mailbox over NFS, which means that no file + locking is needed. + +9. Mailbox Shortcuts + + There are a number of built in shortcuts which refer to specific + mailboxes. These shortcuts can be used anywhere you are prompted for a + file or mailbox path. + + * ! -- refers to your $$ssppoooollffiillee (incoming) mailbox + * > -- refers to your $$mmbbooxx file + * < -- refers to your $$rreeccoorrdd file + * ^ -- refers to the current mailbox + * - or !! -- refers to the file you've last visited + * ~ -- refers to your home directory + * = or + -- refers to your $$ffoollddeerr directory + * @_a_l_i_a_s -- refers to the ssaavvee--hhooookk as determined by the address of + the alias + +10. Handling Mailing Lists + + Mutt-ng has a few configuration options that make dealing with large + amounts of mail easier. The first thing you must do is to let Mutt + know what addresses you consider to be mailing lists (technically this + does not have to be a mailing list, but that is what it is most often + used for), and what lists you are subscribed to. This is accomplished + through the use of the lliissttss commands in your muttrc. + + Now that Mutt-ng knows what your mailing lists are, it can do several + things, the first of which is the ability to show the name of a list + through which you received a message (i.e., of a subscribed list) in + the _i_n_d_e_x menu display. This is useful to distinguish between personal + and list mail in the same mailbox. In the $$iinnddeexx__ffoorrmmaatt variable, the + escape ``%L'' will return the string ``To '' when ``list'' + appears in the ``To'' field, and ``Cc '' when it appears in the + ``Cc'' field (otherwise it returns the name of the author). + + Often times the ``To'' and ``Cc'' fields in mailing list messages tend + to get quite large. Most people do not bother to remove the author of + the message they are reply to from the list, resulting in two or more + copies being sent to that person. The ``list-reply'' function, which + by default is bound to ``L'' in the _i_n_d_e_x menu and _p_a_g_e_r, helps reduce + the clutter by only replying to the known mailing list addresses + instead of all recipients (except as specified by Mail-Followup-To, + see below). + + Mutt-ng also supports the Mail-Followup-To header. When you send a + message to a list of recipients which includes one or several + subscribed mailing lists, and if the $$ffoolllloowwuupp__ttoo option is set, mutt + will generate a Mail-Followup-To header which contains all the + recipients to whom you send this message, but not your address. This + indicates that group-replies or list-replies (also known as + ``followups'') to this message should only be sent to the original + recipients of the message, and not separately to you - you'll receive + your copy through one of the mailing lists you are subscribed to. + + Conversely, when group-replying or list-replying to a message which + has a Mail-Followup-To header, mutt will respect this header if the + $$hhoonnoorr__ffoolllloowwuupp__ttoo configuration variable is set. Using list-reply + will in this case also make sure that the reply goes to the mailing + list, even if it's not specified in the list of recipients in the + Mail-Followup-To. + + Note that, when header editing is enabled, you can create a + Mail-Followup-To header manually. Mutt-ng will only auto-generate this + header if it doesn't exist when you send the message. + + The other method some mailing list admins use is to generate a + ``Reply-To'' field which points back to the mailing list address + rather than the author of the message. This can create problems when + trying to reply directly to the author in private, since most mail + clients will automatically reply to the address given in the + ``Reply-To'' field. Mutt-ng uses the $$rreeppllyy__ttoo variable to help decide + which address to use. If set to _a_s_k_-_y_e_s or _a_s_k_-_n_o, you will be + prompted as to whether or not you would like to use the address given + inthe ``Reply-To'' field, or reply directly to the address given in + the ``From'' field. When set to _y_e_s, the ``Reply-To'' field will be + used when present. + + The ``X-Label:'' header field can be used to further identify mailing + lists or list subject matter (or just to annotate messages + individually). The $$iinnddeexx__ffoorrmmaatt variable's ``%y'' and ``%Y'' escapes + can be used to expand ``X-Label:'' fields in the index, and Mutt-ng's + pattern-matcher can match regular expressions to ``X-Label:'' fields + with the ``~y'' selector. ``X-Label:'' is not a standard message + header field, but it can easily be inserted by procmailand other mail + filtering agents. + + Lastly, Mutt-ng has the ability to ssoorrtt the mailbox into tthhrreeaaddss. A + thread is a group of messages which all relate to the same subject. + This is usually organized into a tree-like structure where a message + and all of its replies are represented graphically. If you've ever + used a threaded news client, this is the same concept. It makes + dealingwith large volume mailing lists easier because you can easily + delete uninteresting threads and quickly find topics of value. + +11. Editing threads + + Mutt-ng has the ability to dynamically restructure threads that are + broken either by misconfigured software or bad behavior from some + correspondents. This allows to clean your mailboxes formats) from + these annoyances which make it hard to follow a discussion. + +11.1. Linking threads + + Some mailers tend to "forget" to correctly set the "In-Reply-To:" and + "References:" headers when replying to a message. This results in + broken discussions because Mutt-ng has not enough information to guess + the correct threading. You can fix this by tagging the reply, then + moving to the parent message and using the ``link-threads'' function + (bound to & by default). The reply will then be connected to this + "parent" message. + + You can also connect multiple children at once, tagging them and using + the tag-prefix command (';') or the auto_tag option. + +11.2. Breaking threads + + On mailing lists, some people are in the bad habit of starting a new + discussion by hitting "reply" to any message from the list and + changing the subject to a totally unrelated one. You can fix such + threads by using the ``break-thread'' function (boundby default to #), + which will turn the subthread starting from the current message into a + whole different thread. + +12. Delivery Status Notification (DSN) Support + + RRffCC  11889944 defines a set of MIME content types for relaying information + about the status of electronic mail messages. These can be thought of + as ``return receipts.'' + + Users can make use of it in one of the following two ways: + + * Berkeley sendmail 8.8.x currently has some command line options in + which the mail client can make requests as to what type of status + messages should be returned. + * The SMTP support via libESMTP supports it, too. + + To support this, there are two variables: + + * $$ddssnn__nnoottiiffyy is used to request receipts for different results + (such as failed message,message delivered, etc.). + * $$ddssnn__rreettuurrnn requests how much of your message should be returned + with the receipt (headers or full message). + + Please see the reference chapter for possible values. + +13. POP3 Support (OPTIONAL) + + If Mutt-ng was compiled with POP3 support (by running the _c_o_n_f_i_g_u_r_e + script with the _-_-_e_n_a_b_l_e_-_p_o_p flag), it has the ability to work with + mailboxes located on a remote POP3 server and fetch mail for local + browsing. + + You can access the remote POP3 mailbox by selecting the folder + pop://popserver/. + + You can select an alternative port by specifying it with the server, + i.e.: pop://popserver:port/. + + You can also specify different username for each folder, i.e.: + pop://username@popserver[:port]/. + + Polling for new mail is more expensive over POP3 than locally. For + this reason the frequency at which Mutt-ng will check for mail + remotely can be controlled by the $$ppoopp__mmaaiill__cchheecckk variable, which + defaults to every 60 seconds. + + If Mutt-ng was compiled with SSL support (by running the _c_o_n_f_i_g_u_r_e + script with the _-_-_w_i_t_h_-_s_s_l flag), connections to POP3 servers can be + encrypted. This naturally requires that the server supports SSL + encrypted connections. To access a folder with POP3/SSL, you should + use pops: prefix, ie: pops://[username@]popserver[:port]/. + + Another way to access your POP3 mail is the _f_e_t_c_h_-_m_a_i_l function + (default: G). It allows to connect to ppoopp--hhoosstt ,fetch all your new + mail and place it in the local $$ssppoooollffiillee. After this point, Mutt-ng + runs exactly as if the mail had always been local. + + _N_o_t_e_: If you only need to fetch all messages to local mailbox you + should consider using a specialized program, such as fetchmail(1). + +14. IMAP Support (OPTIONAL) + + If Mutt-ng was compiled with IMAP support (by running the _c_o_n_f_i_g_u_r_e + script with the _-_-_e_n_a_b_l_e_-_i_m_a_p flag), it has the ability to work with + folders located on a remote IMAP server. + + You can access the remote inbox by selecting the folder via its URL: + +imap://imapserver/INBOX + + where imapserver is the name of the IMAP server and INBOX is the + special name for your spool mailbox on the IMAP server. If you want to + access another mail folder at the IMAP server, you should use + +imap://imapserver/path/to/folder + + where path/to/folder is the path of the folder you want to access. You + can select an alternative port by specifying it with the server, i.e.: + +imap://imapserver:port/INBOX + + You can also specify different username for each folder by prenpending + your username and an @ symbol to the server's name. + + If Mutt-ng was compiled with SSL support (by running the _c_o_n_f_i_g_u_r_e + script with the _-_-_w_i_t_h_-_s_s_l flag), connections to IMAP servers can be + encrypted. This naturally requires that the server supports SSL + encrypted connections. To access a folder with IMAP/SSL, you only need + to substitute the initial imap:// by imaps:// in the above examples. + + Note that not all servers use / as the hierarchy separator. Mutt-ng + should correctly notice which separator is being used by the server + and convertpaths accordingly. + + When browsing folders on an IMAP server, you can toggle whether to + look at only the folders you are subscribed to, or all folders with + the _t_o_g_g_l_e_-_s_u_b_s_c_r_i_b_e_d command. See also the $$iimmaapp__lliisstt__ssuubbssccrriibbeedd + variable. + + Polling for new mail on an IMAP server can cause noticeable delays. + So, you'll want to carefully tune the $$iimmaapp__mmaaiill__cchheecckk and $$ttiimmeeoouutt + variables. + + Note that if you are using mbox as the mail store on UW servers prior + tov12.250, the server has been reported to disconnect a client if + another client selects the same folder. + +14.1. The Folder Browser + + As of version 1.2, mutt supports browsing mailboxes on an IMAP server. + This is mostly the same as the local file browser, with the following + differences: + * Instead of file permissions, mutt displays the string "IMAP", + possibly followed by the symbol "+", indicating that the entry + contains both messages and subfolders. On Cyrus-like servers + folders will often contain both messages and subfolders. + * For the case where an entry can contain both messages and + subfolders, the selection key (bound to enter by default) will + choose to descend into the subfolder view. If you wish to view the + messages in that folder, you must use view-file instead (bound to + space by default). + * You can create, delete and rename mailboxes with the + create-mailbox, delete-mailbox, and rename-mailbox commands + (default bindings: C , d and r, respectively). You may also + subscribe and unsubscribe to mailboxes (normally these are bound + to s and u, respectively). + +14.2. Authentication + + Mutt-ng supports four authentication methods with IMAP servers: SASL, + GSSAPI, CRAM-MD5, and LOGIN (there is a patch by Grant Edwards to add + NTLM authentication for you poor exchange users out there, but it has + yet to be integrated into the main tree). There is also support for + the pseudo-protocol ANONYMOUS, which allows you to log in to a public + IMAP server without having an account. To use ANONYMOUS, simply make + your username blank or "anonymous". + + SASL is a special super-authenticator, which selects among several + protocols (including GSSAPI, CRAM-MD5, ANONYMOUS, and DIGEST-MD5) the + most secure method available on your host and the server. Using some + of these methods (including DIGEST-MD5 and possibly GSSAPI), your + entire session will be encrypted and invisible to those teeming + network snoops. It is the best option if you have it. To use it, you + must have the Cyrus SASL libraryinstalled on your system and compile + mutt with the _-_-_w_i_t_h_-_s_a_s_l flag. + + Mutt-ng will try whichever methods are compiled in and available on + the server, in the following order: SASL, ANONYMOUS, GSSAPI, CRAM-MD5, + LOGIN. + + There are a few variables which control authentication: + * $$iimmaapp__uusseerr - controls the username under which you request + authentication on the IMAP server, for all authenticators. This is + overridden by an explicit username in the mailbox path (i.e. by + using a mailbox name of the form {user@host}). + * $$iimmaapp__ppaassss - a password which you may preset, used by all + authentication methods where a password is needed. + * $$iimmaapp__aauutthheennttiiccaattoorrss - a colon-delimited list of IMAP + authentication methods to try, in the order you wish to try them. + If specified, this overrides mutt's default (attempt everything, + in the order listed above). + +15. NNTP Support (OPTIONAL) + + If compiled with ``--enable-nntp'' option, Mutt-ng can read news from + a newsserver via NNTP. You can open a newsgroup with the + ``change-newsgroup'' function from the index/pager which is by default + bound to i. + + The Default newsserver can be obtained from the $NNTPSERVER + environment variable. Like other news readers, info about subscribed + newsgroups is saved in a file as specified by the $$nnnnttpp__nneewwssrrcc + variable. Article headers are cached and can be loaded from a file + when a newsgroup is entered instead loading from newsserver; + currently, this caching mechanism still is different from the header + caching for maildir/IMAP. + +15.1. Again: Scoring + + Especially for Usenet, people often ask for advanced filtering and + scoring functionality. Of course, mutt-ng has scoring and allows a + killfile, too. How to use a killfile has been discussed in MMeessssaaggee + SSccoorriinngg. + + What has not been discusses in detail is mutt-ng's built-in realname + filter. For may newsreaders including those for ``advanced users'' + like _s_l_r_n or _t_i_n, there are frequent request for such functionality. + The solutions offered often are complicated regular expressions. + + In mutt-ng this is as easy as + +score ~* =42 + + This tells mutt-ng to apply a score of 42 to all messages whose sender + specified a valid realname and a valid email address. Using + +score !~* =42 + + on the contrary applies a score of 42 to all messages _n_o_t matching + those criteria which are very strict: + + * Email addresses must be valid according to RRffCC  22882222 + * the name must consist of at least 2 fields whereby a field must + not end in a dot. This means that ``Joe User'' and ``Joe A.User'' + are valid while ``J. User'' and ``J. A. User'' aren't. + * it's assumed that users are interested in reading their own mail + and mail from people who they have defined an alias forso that + those 2 groups of messages are excluded from the strict rules. + +16. SMTP Support (OPTIONAL) + + Mutt-ng can be built using a library called ``libESMTP'' which + provides SMTP functionality. When configure was called with + --with-libesmtp or the output muttng -v contains +USE_LIBESMTP, this + will be or is the case already. The SMTP support includes support for + Delivery Status Notification (see ddssnn section) as well as handling the + 8BITMIME flag controlled via $$uussee__88bbiittmmiimmee. + + To enable sending mail directly via SMTP without an MTA such as + Postfix or SSMTP and the like, simply set the $$ssmmttpp__hhoosstt variable + pointing to your SMTP server. + + Authentication mechanisms are available via the $$ssmmttpp__uusseerr and + $$ssmmttpp__ppaassss variables. + + Transport Encryption via the StartTLS command is also available. For + this to work, first of all Mutt-ng must be built with SSL or GNUTLS. + Secondly, the $$ssmmttpp__uussee__ttllss variable must be either set to ``enabled'' + or ``required.'' In both cases, StartTLS will be used if the server + supports it: for the second case, the connection will fail ifit + doesn't while switching back to unencrypted communication for the + first one. + + Some mail providers require user's to set a particular envelope + sender, i.e. they allow for only one value which may not be what the + user wants to send as the From: header. In this case, the variable + $$ssmmttpp__eennvveellooppee may be used to set the envelope different from the + From: header. + +17. Managing multiple IMAP/POP/NNTP accounts (OPTIONAL) + + If you happen to have accounts on multiple IMAP and/or POP servers, + you may find managing all the authentication settings inconvenient and + error-prone. The aaccccoouunntt--hhooookk command may help. This hook works like + ffoollddeerr--hhooookk but is invoked whenever you access a remote mailbox + (including inside the folder browser), not just when you open the + mailbox. + + Some examples: + +account-hook . 'unset imap_user; unset imap_pass; unset tunnel' +account-hook imap://host1/ 'set imap_user=me1 imap_pass=foo' +account-hook imap://host2/ 'set tunnel="ssh host2 /usr/libexec/imapd"' - my_hdr _s_t_r_i_n_g +18. Start a WWW Browser on URLs (EXTERNAL) - unmy_hdr _f_i_e_l_d [ _f_i_e_l_d ... ] + If a message contains URLs (_u_n_i_f_i_e_d_ _r_e_s_o_u_r_c_e_ _l_o_c_a_t_o_r = address in the + WWW space like _h_t_t_p_:_/_/_w_w_w_._m_u_t_t_._o_r_g_/), it is efficient to get a menu + with all the URLs and start a WWW browser on one of them. This + functionality is provided by the external urlview program which can be + retrieved at <> and the configuration + commands: +macro index \cb |urlview\n +macro pager \cb |urlview\n - The ``my_hdr'' command allows you to create your own header fields which will - be added to every message you send. +19. Compressed folders Support (OPTIONAL) - For example, if you would like to add an ``Organization:'' header field to all - of your outgoing messages, you can put the command + If Mutt-ng was compiled with compressed folders support (by running + the _c_o_n_f_i_g_u_r_e script with the _-_-_e_n_a_b_l_e_-_c_o_m_p_r_e_s_s_e_d flag), Mutt can open + folders stored in an arbitrary format, provided that the user has a + script to convert from/to this format to one of the accepted. - my_hdr Organization: A Really Big Company, Anytown, USA + The most common use is to open compressed archived folders e.g. with + gzip. - in your .muttrc. + In addition, the user can provide a script that gets a folder in an + accepted format and appends its context to the folder in the + user-defined format, which may be faster than converting the entire + folder to the accepted format, appending to it and converting back to + the user-defined format. - NNoottee:: space characters are _n_o_t allowed between the keyword and the colon - (``:''). The standard for electronic mail (RFC822) says that space is illegal - there, so Mutt-ng enforces the rule. + There are three hooks defined (ooppeenn--hhooookk, cclloossee--hhooookk and aappppeenndd--hhooookk + )which define commands to uncompress and compress a folder and to + append messages to an existing compressed folder respectively. - If you would like to add a header field to a single message, you should either - set the _e_d_i_t___h_e_a_d_e_r_s (section 7.4.57 , page 100) variable, or use the _e_d_i_t_- - _h_e_a_d_e_r_s function (default: ``E'') in the send-menu so that you can edit the - header of your message along with the body. + For example: - 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: +open-hook \\.gz$ "gzip -cd %f > %t" +close-hook \\.gz$ "gzip -c %t > %f" +append-hook \\.gz$ "gzip -c %t >> %f" - The Mutt Next Generation E-Mail Client 36 + You do not have to specify all of the commands. If you omit + aappppeenndd--hhooookk ,the folder will be open and closed again each time you + will add to it. If you omit cclloossee--hhooookk (or give empty command) , the + folder will be open in the mode. If you specify aappppeenndd--hhooookk though + you'll be able to append to the folder. - unmy_hdr to cc + Note that Mutt-ng will only try to use hooks if the file is not in one + of the accepted formats. In particular, if the file is empty, mutt + supposes it is not compressed. This is important because it allows the + use of programs that do not have well defined extensions. Just use "." + as a regexp. But this may be surprising if your compressing script + produces empty files. In this situation, unset $$ssaavvee__eemmppttyy ,so that + the compressed file will be removed if you delete all of the messages. - _3_._1_6 _D_e_f_i_n_i_n_g _t_h_e _o_r_d_e_r _o_f _h_e_a_d_e_r_s _w_h_e_n _v_i_e_w_i_n_g _m_e_s_s_a_g_e_s +19.1. Open a compressed mailbox for reading - Usage: hdr_order _h_e_a_d_e_r_1 _h_e_a_d_e_r_2 _h_e_a_d_e_r_3 + Usage: ooppeenn--hhooookk_r_e_g_e_x_p "_c_o_m_m_a_n_d" - With this command, you can specify an order in which mutt will attempt to - present headers to you when viewing messages. + The _c_o_m_m_a_n_d is the command that can be used for opening the folders + whose names match _r_e_g_e_x_p. - ``unhdr_order *'' will clear all previous headers from the order list, thus - removing the header order effects set by the system-wide startup file. + The _c_o_m_m_a_n_d string is the printf-like format string, and it should + accept two parameters: %f, which is replaced with the (compressed) + folder name, and %t which is replaced with the name of the temporary + folder to which to write. - hdr_order From Date: From: To: Cc: Subject: + %f and %t can be repeated any number of times in the command string, + and all of the entries are replaced with the appropriate folder name. + In addition, %% is replaced by %, as in printf, and any other + %anything is left as is. - _3_._1_7 _S_p_e_c_i_f_y _d_e_f_a_u_l_t _s_a_v_e _f_i_l_e_n_a_m_e + The _c_o_m_m_a_n_d should _n_o_t remove the original compressed file. The + _c_o_m_m_a_n_d should return non-zero exit status if it fails, so mutt knows + something's wrong. - Usage: save-hook [!]_p_a_t_t_e_r_n _f_i_l_e_n_a_m_e + Example: - This command is used to override the default filename used when saving mes- - sages. _f_i_l_e_n_a_m_e will be used as the default filename if the message is _F_r_o_m_: - an address matching _r_e_g_e_x_p or if you are the author and the message is - addressed _t_o_: something matching _r_e_g_e_x_p. +open-hook \\.gz$ "gzip -cd %f > %t" - See _M_e_s_s_a_g_e _M_a_t_c_h_i_n_g _i_n _H_o_o_k_s (section 4.5.1 , page 55) for information on the - exact format of _p_a_t_t_e_r_n. + If the _c_o_m_m_a_n_d is empty, this operation is disabled for this file + type. - Examples: +19.2. Write a compressed mailbox - save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins - save-hook aol\\.com$ +spam + Usage: cclloossee--hhooookk_r_e_g_e_x_p"_c_o_m_m_a_n_d" - Also see the _f_c_c_-_s_a_v_e_-_h_o_o_k (section 3.19 , page 37) command. + This is used to close the folder that was open with the ooppeenn--hhooookk + command after some changes were made to it. - _3_._1_8 _S_p_e_c_i_f_y _d_e_f_a_u_l_t _F_c_c_: _m_a_i_l_b_o_x _w_h_e_n _c_o_m_p_o_s_i_n_g + The _c_o_m_m_a_n_d string is the command that can be used for closing the + folders whose names match _r_e_g_e_x_p. It has the same format as in the + ooppeenn--hhooookk command. Temporary folder in this case is the folder + previously produced by the ooppeenn--hhooookk command. - Usage: fcc-hook [!]_p_a_t_t_e_r_n _m_a_i_l_b_o_x + The _c_o_m_m_a_n_d should _n_o_t remove the decompressed file. The _c_o_m_m_a_n_d + should return non-zero exit status if it fails, so mutt knows + something's wrong. - This command is used to save outgoing mail in a mailbox other than _$_r_e_c_o_r_d - (section 7.4.234 , page 143). Mutt-ng searches the initial list of message - recipients for the first matching _r_e_g_e_x_p and uses _m_a_i_l_b_o_x as the default Fcc: - mailbox. If no match is found the message will be saved to _$_r_e_c_o_r_d (section - 7.4.234 , page 143) mailbox. + Example: - The Mutt Next Generation E-Mail Client 37 +close-hook \\.gz$ "gzip -c %t > %f" - See _M_e_s_s_a_g_e _M_a_t_c_h_i_n_g _i_n _H_o_o_k_s (section 4.5.1 , page 55) for information on the - exact format of _p_a_t_t_e_r_n. + If the _c_o_m_m_a_n_d is empty, this operation is disabled for this file + type, and the file can only be open in the readonly mode. - Example: fcc-hook [@.]aol\\.com$ +spammers + cclloossee--hhooookk is not called when you exit from the folder if the folder + was not changed. - The above will save a copy of all messages going to the aol.com domain to the - `+spammers' mailbox by default. Also see the _f_c_c_-_s_a_v_e_-_h_o_o_k (section 3.19 , - page 37) command. +19.3. Append a message to a compressed mailbox - _3_._1_9 _S_p_e_c_i_f_y _d_e_f_a_u_l_t _s_a_v_e _f_i_l_e_n_a_m_e _a_n_d _d_e_f_a_u_l_t _F_c_c_: _m_a_i_l_b_o_x _a_t _o_n_c_e + Usage: aappppeenndd--hhooookk_r_e_g_e_x_p"_c_o_m_m_a_n_d" - Usage: fcc-save-hook [!]_p_a_t_t_e_r_n _m_a_i_l_b_o_x + This command is used for saving to an existing compressed folder. The + _c_o_m_m_a_n_d is the command that can be used for appending to the folders + whose names match _r_e_g_e_x_p. It has the same format as in the ooppeenn--hhooookk + command. The temporary folder in this case contains the messages that + are beingappended. - This command is a shortcut, equivalent to doing both a _f_c_c_-_h_o_o_k (section - 3.18 , page 36) and a _s_a_v_e_-_h_o_o_k (section 3.17 , page 36) with its arguments. + The _c_o_m_m_a_n_d should _n_o_t remove the decompressed file. The _c_o_m_m_a_n_d + should return non-zero exit status if it fails, so mutt knows + something's wrong. - _3_._2_0 _C_h_a_n_g_e _s_e_t_t_i_n_g_s _b_a_s_e_d _u_p_o_n _m_e_s_s_a_g_e _r_e_c_i_p_i_e_n_t_s + Example: - Usage: reply-hook [!]_p_a_t_t_e_r_n _c_o_m_m_a_n_d +append-hook \\.gz$ "gzip -c %t >> %f" - Usage: send-hook [!]_p_a_t_t_e_r_n _c_o_m_m_a_n_d + When aappppeenndd--hhooookk is used, the folder is not opened, which saves time, + but this means that we can not find out what the folder type is. Thus + the default ($$mmbbooxx__ttyyppee )type is always supposed (i.e. this is the + format used for the temporary folder). - Usage: send2-hook [!]_p_a_t_t_e_r_n _c_o_m_m_a_n_d + If the file does not exist when you save to it, cclloossee--hhooookk is called, + and not aappppeenndd--hhooookk. aappppeenndd--hhooookk is only for appending to existing + folders. - These commands can be used to execute arbitrary configuration commands based - upon recipients of the message. _p_a_t_t_e_r_n is a regular expression matching the - desired address. _c_o_m_m_a_n_d is executed when _r_e_g_e_x_p matches recipients of the - message. + If the _c_o_m_m_a_n_d is empty, this operation is disabled for this file + type. In this case, the folder will be open and closed again (using + ooppeenn--hhooookk and cclloossee--hhooookk respectively) each time you will add to it. - reply-hook is matched against the message you are _r_e_p_l_y_i_n_g ttoo, instead of the - message you are _s_e_n_d_i_n_g. send-hook is matched against all messages, both _n_e_w - and _r_e_p_l_i_e_s. NNoottee:: reply-hooks are matched bbeeffoorree the send-hook, rreeggaarrddlleessss of - the order specified in the users's configuration file. +19.4. Encrypted folders - send2-hook is matched every time a message is changed, either by editing it, or - by using the compose menu to change its recipients or subject. send2-hook is - executed after send-hook, and can, e.g., be used to set parameters such as the - _$_s_e_n_d_m_a_i_l (section 7.4.251 , page 147) variable depending on the message's - sender address. + The compressed folders support can also be used to handle encrypted + folders. If you want to encrypt a folder with PGP, you may want to + usethe following hooks: - 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). +open-hook \\.pgp$ "pgp -f < %f > %t" +close-hook \\.pgp$ "pgp -fe YourPgpUserIdOrKeyId < %t > %f" - See _M_e_s_s_a_g_e _M_a_t_c_h_i_n_g _i_n _H_o_o_k_s (section 4.5.1 , page 55) for information on the - exact format of _p_a_t_t_e_r_n. + Please note, that PGP does not support appending to an encrypted + folder, so there is no aappppeenndd--hhooookk defined. - Example: send-hook mutt 'set mime_forward signature=''' + _N_o_t_e_: the folder is temporary stored decrypted in the /tmp directory, + where it can be read by your system administrator. So thinkabout the + security aspects of this. - Another typical use for this command is to change the values of the +Chapter 5. Mutt-ng's MIME Support - The Mutt Next Generation E-Mail Client 38 + _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s - _$_a_t_t_r_i_b_u_t_i_o_n (section 7.4.17 , page 91), _$_s_i_g_n_a_t_u_r_e (section 7.4.263 , page - 150) and _$_l_o_c_a_l_e (section 7.4.117 , page 116) variables in order to change the - language of the attributions and signatures based upon the recipients. + 11..  UUssiinngg  MMIIMMEE  iinn  MMuutttt - NNoottee:: the send-hook's are only executed ONCE after getting the initial list of - recipients. Adding a recipient after replying or editing the message will NOT - cause any send-hook to be executed. Also note that my_hdr commands which mod- - ify recipient headers, or the message's subject, don't have any effect on the - current message when executed from a send-hook. + 11..11..  VViieewwiinngg  MMIIMMEE  mmeessssaaggeess  iinn  tthhee  ppaaggeerr + 11..22..  TThhee  AAttttaacchhmmeenntt  MMeennuu + 11..33..  TThhee  CCoommppoossee  MMeennuu - _3_._2_1 _C_h_a_n_g_e _s_e_t_t_i_n_g_s _b_e_f_o_r_e _f_o_r_m_a_t_t_i_n_g _a _m_e_s_s_a_g_e + 22..  MMIIMMEE  TTyyppee  ccoonnffiigguurraattiioonn  wwiitthh  mmiimmee..ttyyppeess + 33..  MMIIMMEE  VViieewweerr  ccoonnffiigguurraattiioonn  wwiitthh  mmaaiillccaapp - Usage: message-hook [!]_p_a_t_t_e_r_n _c_o_m_m_a_n_d + 33..11..  TThhee  BBaassiiccss  ooff  tthhee  mmaaiillccaapp  ffiillee + 33..22..  SSeeccuurree  uussee  ooff  mmaaiillccaapp + 33..33..  AAddvvaanncceedd  mmaaiillccaapp  UUssaaggee + 33..44..  EExxaammppllee  mmaaiillccaapp  ffiilleess - This command can be used to execute arbitrary configuration commands before - viewing or formatting a message based upon information about the message. _c_o_m_- - _m_a_n_d is executed if the _p_a_t_t_e_r_n matches the message to be displayed. When mul- - tiple matches occur, commands are executed in the order they are specified in - the muttrc. + 44..  MMIIMMEE  AAuuttoovviieeww + 55..  MMIIMMEE  MMuullttiippaarrtt//AAlltteerrnnaattiivvee + 66..  AAttttaacchhmmeenntt  SSeeaarrcchhiinngg  aanndd  CCoouunnttiinngg + 77..  MMIIMMEE  LLooookkuupp - See _M_e_s_s_a_g_e _M_a_t_c_h_i_n_g _i_n _H_o_o_k_s (section 4.5.1 , page 55) for information on the - exact format of _p_a_t_t_e_r_n. + Quite a bit of effort has been made to make Mutt-ng the premier + text-mode MIME MUA. Every effort has been made to provide the + functionality that the discerning MIME user requires, and the + conformance to the standards wherever possible. When configuring + Mutt-ng for MIME, there are two extratypes of configuration files + which Mutt-ng uses. One is the mime.types file, which contains the + mapping of file extensions to IANA MIME types. The other is the + mailcap file, which specifies the external commands to use for + handling specific MIME types. + +1. Using MIME in Mutt + + There are three areas/menus in Mutt-ng which deal with MIME, they are + the pager (while viewing a message), the attachment menu and the + compose menu. + +1.1. Viewing MIME messages in the pager + + When you select a message from the index and view it in the pager, + Mutt decodes the message to a text representation. Mutt-ng internally + supports a number of MIME types, including text/plain, text/enriched, + message/rfc822, and message/news .In addition, the export controlled + version of Mutt-ng recognizes a variety of PGP MIME types, including + PGP/MIME and application/pgp. + + Mutt-ng will denote attachments with a couple lines describing them. + These lines are of the form: +[-- Attachment #1: Description --] +[-- Type: text/plain, Encoding: 7bit, Size: 10000 --] + + Where the Description is the description or filename given for the + attachment, and the Encoding is one of + 7bit/8bit/quoted-printable/base64/binary. + + If Mutt-ng cannot deal with a MIME type, it will display a message + like: +[-- image/gif is unsupported (use 'v' to view this part) --] + +1.2. The Attachment Menu + + The default binding for view-attachments is `v', which displays the + attachment menu for a message. The attachment menu displays a list + ofthe attachments in a message. From the attachment menu, you can + save, print, pipe, delete, and view attachments. You can apply these + operations to a group of attachments at once, by tagging the + attachments and by using the ``tag-prefix'' operator. You can also + reply to the current message from this menu, and only the current + attachment (or the attachments tagged) will be quoted in your reply. + You can view attachments as text, or view them using the mailcap + viewer definition. + + Finally, you can apply the usual message-related functions (like + , and the reply and forward functions) to attachments + of type message/rfc822. + + See the help on the attachment menu for more information. + +1.3. The Compose Menu + + The compose menu is the menu you see before you send a message. It + allows you to edit the recipient list, the subject, and other aspects + of your message. It also contains a list of the attachments of your + message, including the main body. From this menu, you can print, copy, + filter, pipe, edit, compose, review, and rename an attachment or a + list of tagged attachments. You can also modifying the attachment + information, notably the type, encoding and description. + + Attachments appear as follows: +1 [text/plain, 7bit, 1K] /tmp/mutt-euler-8082-0 +2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz + + The '-' denotes that Mutt-ng will delete the file after sending (or + postponing, or canceling) the message. It can be toggled with the + toggle-unlink command (default: u). The next field is the MIME + content-type, and can be changed with the edit-type command (default: + ^T). The next field is the encoding for the attachment, which allows a + binary message to be encoded for transmission on 7bit links. It can be + changed with the edit-encoding command (default: ^E). The next field + is the size of the attachment, rounded to kilobytes or megabytes. The + next field is the filename, which can be changed with the rename-file + command (default: R). The final field is the description of the + attachment, and can be changed with the edit-description command + (default: d). + +2. MIME Type configuration with mime.types + + When you add an attachment to your mail message, Mutt-ng searches your + personal mime.types file within $HOME and then the system mime.types + file at /usr/local/share/mutt/mime.types or /etc/mime.types + + The mime.types file consist of lines containing a MIME type and a + space separated list of extensions. For example: +application/postscript ps eps +application/pgp pgp +audio/x-aiff aif aifc aiff + + A sample mime.types file comes with the Mutt-ng distribution, and + should contain most of the MIME types you are likely to use. + + If Mutt-ng can not determine the mime type by the extension of the + file you attach, it will look at the file. If the file is free of + binary information, Mutt-ng will assume that the file is plain text, + and mark it as text/plain. If the file contains binary information, + then Mutt-ng will mark it as application/octet-stream. You can change + the MIME type that Mutt-ng assigns to an attachment by using the + edit-type command from the compose menu (default: ^T). The MIME type + is actually a major mime type followed by the sub-type, separated by a + '/'. 6 major types: application, text, image, video, audio, and model + have been approved after various internet discussions. Mutt-ng + recognises all of these if the appropriate entry is found in the + mime.types file. It also recognises other major mime types, such as + the chemical type that is widely used in the molecular modelling + community to pass molecular data in various forms to various molecular + viewers. Non-recognised mime types should only be used if the + recipient of the message is likely to be expecting such attachments. + +3. MIME Viewer configuration with mailcap + + Mutt-ng supports RRffCC  11552244 MIME Configuration, in particular the Unix + specific format specified in Appendix A of the RfC. This file format + is commonly referred to as the mailcap format. Many MIME compliant + programs utilize the mailcap format, allowing you to specify handling + for all MIME types in one place for all programs. Programs known to + use this format include Netscape, XMosaic, lynx and metamail. + + In order to handle various MIME types that Mutt-ng can not handle + internally, Mutt-ng parses a series of external configuration files to + find an external handler. The default search string for these files is + a colon delimited list set to +${HOME}/.mailcap:/usr/local/share/mutt/mailcap:/etc/mailcap:/etc/mailcap:/usr/e +tc/mailcap:/usr/local/etc/mailcap + + where $HOME is your home directory. + + In particular, the metamail distribution will install a mailcap file, + usually as /usr/local/etc/mailcap, which contains some baseline + entries. + +3.1. The Basics of the mailcap file + + A mailcap file consists of a series of lines which are comments, + blank, or definitions. + + A comment line consists of a # character followed by anything you + want. + + A blank line is blank. + + A definition line consists of a content type, a view command, and any + number of optional fields. Each field of a definition line is + dividedby a semicolon ';' character. + + The content type is specified in the MIME standard type/subtype + method. For example, text/plain, text/html, image/gif, etc. In + addition, the mailcap format includes two formats for wildcards, one + using the special '*' subtype, the other is the implicit wild, where + you only include the major type. For example, image/* ,or video, will + match all image types and video types, respectively. + + The view command is a Unix command for viewing the type specified. + There are two different types of commands supported. The default is to + send the body of the MIME message to the command on stdin. You can + change this behavior by using %s as a parameter to your view command. + This will cause Mutt-ng to save the body of the MIME message to a + temporary file, and then call the view command with the %s replaced by + the name of the temporary file. In both cases, Mutt-ng will turn over + the terminal to the view program until the program quits, at which + time Mutt will remove the temporary file if it exists. + + So, in the simplest form, you can send a text/plain message to the + external pager more on stdin: +text/plain; more + + Or, you could send the message as a file: +text/plain; more %s + + Perhaps you would like to use lynx to interactively view a text/html + message: +text/html; lynx %s + + In this case, lynx does not support viewing a file from stdin, so you + must use the %s syntax. _N_o_t_e_:_S_o_m_e_ _o_l_d_e_r_ _v_e_r_s_i_o_n_s_ _o_f_ _l_y_n_x_ _c_o_n_t_a_i_n_ _a_ _b_u_g + _w_h_e_r_e_ _t_h_e_y_ _w_i_l_l_ _c_h_e_c_k_ _t_h_e_ _m_a_i_l_c_a_p_ _f_i_l_e_ _f_o_r_ _a_ _v_i_e_w_e_r_ _f_o_r_ _t_e_x_t_/_h_t_m_l_. + _T_h_e_y_ _w_i_l_l_ _f_i_n_d_ _t_h_e_ _l_i_n_e_ _w_h_i_c_h_ _c_a_l_l_s_ _l_y_n_x_,_ _a_n_d_ _r_u_n_ _i_t_._ _T_h_i_s_ _c_a_u_s_e_s_ _l_y_n_x + _t_o_ _c_o_n_t_i_n_u_o_u_s_l_y_ _s_p_a_w_n_ _i_t_s_e_l_f_ _t_o_ _v_i_e_w_ _t_h_e_ _o_b_j_e_c_t_. + + On the other hand, maybe you don't want to use lynx interactively, + youjust want to have it convert the text/html to text/plain, then you + can use: +text/html; lynx -dump %s | more + + Perhaps you wish to use lynx to view text/html files, and a pager on + all other text formats, then you would use the following: +text/html; lynx %s +text/*; more + + This is the simplest form of a mailcap file. + +3.2. Secure use of mailcap + + The interpretation of shell meta-characters embedded in MIME + parameters can lead to security problems in general. Mutt-ng tries to + quote parameters in expansion of %s syntaxes properly, and avoids + risky characters by substituting them, see the $$mmaaiillccaapp__ssaanniittiizzee + variable. + + Although mutt's procedures to invoke programs with mailcap seem to be + safe, there are other applications parsing mailcap, maybe taking less + care of it. Therefore you should pay attention to the following rules: + + _K_e_e_p_ _t_h_e_ _%_-_e_x_p_a_n_d_o_s_ _a_w_a_y_ _f_r_o_m_ _s_h_e_l_l_ _q_u_o_t_i_n_g_. Don't quote them with + single or double quotes. Mutt-ng does this for you, the right way, as + should any other program which interprets mailcap. Don't put them into + backtick expansions. Be highly careful with eval statements, and avoid + them if possible at all. Trying to fix broken behaviour with quotes + introduces new leaks - there is no alternative to correct quoting in + the first place. + + If you have to use the %-expandos' values in context where you need + quoting or backtick expansions, put that value into a shell variable + and reference the shell variable where necessary, as in the following + example (using $charset inside the backtick expansion is safe, since + it is not itself subject to any further expansion): + +text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \ +&& test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1 + +3.3. Advanced mailcap Usage + +3.3.1. Optional Fields + + In addition to the required content-type and view command fields, you + can add semi-colon ';' separated fields to set flags and other + options. Mutt-ng recognizes the following optional fields: + + copiousoutput + This flag tells Mutt-ng that the command passes possibly large + amounts of text on stdout. This causes Mutt-ng to invoke a + pager (either the internal pager or the external pager defined + by the pager variable) on the output of the view command. + Without this flag, Mutt-ng assumes that the command is + interactive. One could use this to replace the pipe to more in + the lynx -dump example in the Basic section: + +text/html; lynx -dump %s ; copiousoutput + + This will cause lynx to format the text/html output as + text/plain and Mutt-ng will use your standard pager to display + the results. + + needsterminal + Mutt-ng uses this flag when viewing attachments with aauuttoo__vviieeww, + in order to decide whether it should honor the setting of the + $$wwaaiitt__kkeeyy variable or not. When an attachment is viewed using + an interactive program, and the corresponding mailcap entry has + a _n_e_e_d_s_t_e_r_m_i_n_a_l flag, Mutt-ng will use $$wwaaiitt__kkeeyy and the exit + statusof the program to decide if it will ask you to press a + key after the external program has exited. In all other + situations it will not prompt you for a key. + + compose= + This flag specifies the command to use to create a new + attachment of a specific MIME type. Mutt-ng supports this from + the compose menu. + + composetyped= + This flag specifies the command to use to create a new + attachment of a specific MIME type. This command differs from + the compose command in that mutt will expect standard MIME + headers on the data. This can be used to specify parameters, + filename, description, etc. for a new attachment. Mutt-ng + supports this from the compose menu. + + print= + This flag specifies the command to use to print a specific MIME + type. Mutt-ng supports this from the attachment and compose + menus. + + edit= + This flag specifies the command to use to edit a specific MIME + type. Mutt-ng supports this from the compose menu, and also + uses it to compose new attachments. Mutt-ng will default to the + defined editor for text attachments. + + nametemplate=