X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=doc%2Fmanual.txt;h=1da723318b1c7bc0a9d1c0a65dce670bef5df681;hp=f6dd5afd370bce6985f42d777c94a7cfc0610795;hb=f98da767a1df0098d7b8a343e8416e489484fb85;hpb=5bba49f1904801c2221426a7d8e2cc5cce055f02 diff --git a/doc/manual.txt b/doc/manual.txt index f6dd5af..1da7233 100644 --- a/doc/manual.txt +++ b/doc/manual.txt @@ -1,12390 +1,11209 @@ - The Mutt Next Generation E-Mail Client - Andreas Krennmair +The Mutt Next Generation E-Mail Client - +Andreas Krennmair - Michael Elkins + - +Michael Elkins - version devel-r541 + - Abstract + version devel-r790 - Michael Elinks on mutt, circa 1995: ``All mail clients suck. This one just - sucks less.'' + _A_b_s_t_r_a_c_t + + 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 + + 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 + + 33..  CCoonnffiigguurraattiioonn + + 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 + + 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 + + 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 - Table of Contents + _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s - 1. Introduction + 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 +1. Overview - 2. Mutt-ng Home Page + _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. - 3. Mailing Lists + 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. - 4. Software Distribution Sites +2. Mutt-ng Home Page - 5. IRC + <> - 6. Weblog +3. Mailing Lists - 7. Copyright + * : This is where the mutt-ng user + support happens. + * : The development mailing list for + mutt-ng - 8. Manual Conventions +4. Software Distribution Sites - 2. Getting Started + So far, there are no official releases of Mutt-ng, but you can + download daily snapshots from <> - 1. Basic Concepts +5. IRC - 1.1. Screens and Menus + Visit channel _#_m_u_t_t_n_g on iirrcc..ffrreeeennooddee..nneett  ((wwwwww..ffrreeeennooddee..nneett)) to chat + with other people interested in Mutt-ng. - 1.2. Configuration +6. Weblog - 1.3. Functions + 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. - 1.4. Interaction +7. Copyright - 1.5. Modularization + Mutt is Copyright (C) 1996-2000 Michael R. Elkins and + others - 1.6. Patterns + 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. - 2. Screens and Menus + 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. - 2.1. Index + 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. - 2.2. Pager +8. Manual Conventions - 2.3. File Browser + This manual contains several (hopefully consistent) conventions to + specially layout different items in different fashions. - 2.4. Sidebar + * 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. - 2.5. Help + If, while reading this fine manual, you find any inconsistencies of + whatever kind, please contact the developers via + to report it. - 2.6. Compose Menu +Chapter 2. Getting Started - 2.7. Alias Menu + _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s - 2.8. Attachment Menu + 11..  BBaassiicc  CCoonncceeppttss - 2.9. Key Menu + 11..11..  SSccrreeeennss  aanndd  MMeennuuss + 11..22..  CCoonnffiigguurraattiioonn + 11..33..  FFuunnccttiioonnss + 11..44..  IInntteerraaccttiioonn + 11..55..  MMoodduullaarriizzaattiioonn + 11..66..  PPaatttteerrnnss - 3. Moving Around in Menus + 22..  SSccrreeeennss  aanndd  MMeennuuss - 4. Editing Input Fields + 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 - 5. Reading Mail - The Index and Pager + 33..  MMoovviinngg  AArroouunndd  iinn  MMeennuuss + 44..  EEddiittiinngg  IInnppuutt  FFiieellddss + 55..  RReeaaddiinngg  MMaaiill  --  TThhee  IInnddeexx  aanndd  PPaaggeerr - 5.1. The Message Index + 55..11..  TThhee  MMeessssaaggee  IInnddeexx + 55..22..  TThhee  PPaaggeerr + 55..33..  TThhrreeaaddeedd  MMooddee + 55..44..  MMiisscceellllaanneeoouuss  FFuunnccttiioonnss - 5.2. The Pager + 66..  SSeennddiinngg  MMaaiill - 5.3. Threaded Mode + 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 - 5.4. Miscellaneous Functions + 77..  FFoorrwwaarrddiinngg  aanndd  BBoouunncciinngg  MMaaiill + 88..  PPoossttppoonniinngg  MMaaiill - 6. Sending Mail +1. Basic Concepts - 6.1. Composing new messages +1.1. Screens and Menus - 6.2. Replying + mutt-ng offers different screens of which every has its special + purpose: - 6.3. Editing the message header + * 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. - 6.4. Using Mutt-ng with PGP + When mutt-ng is started without any further options, it'll open the + users default mailbox and display the index. - 6.5. Sending anonymous messages via mixmaster +1.2. Configuration - 7. Forwarding and Bouncing Mail + 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.) - 8. Postponing Mail + Mutt-ng is configured using configuration files which allow users to + add comments or manage them via version control systems to ease + maintenance. - 3. Configuration + 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. Locations of Configuration Files +1.3. Functions - 2. Basic Syntax of Initialization Files + 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. - 3. Expansion within variables +1.4. Interaction - 3.1. Commands' Output + Mutt-ng has two basic concepts of user interaction: - 3.2. Environment Variables + 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. - 3.3. Configuration Variables +1.5. Modularization - 3.4. Self-Defined Variables + 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. - 3.5. Pre-Defined Variables +1.6. Patterns - 3.6. Type Conversions + 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. - 4. Defining/Using aliases +2. Screens and Menus - 5. Changing the default key bindings +2.1. Index - 6. Defining aliases for character sets + 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. - 7. Setting variables based upon mailbox +2.2. Pager - 8. Keyboard macros + 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. - 9. Using color and mono video attributes + 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 - 10. Ignoring (weeding) unwanted message headers + FIXME - 11. Alternative addresses +3. Moving Around in Menus - 12. Format = Flowed + Information is presented in menus, very similar to ELM. Here is a + tableshowing the common keys used to navigate menus in Mutt-ng. - 12.1. Introduction + _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 - 12.2. Receiving: Display Setup +4. Editing Input Fields - 12.3. Sending + 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. - 12.4. Additional Notes + _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 - 13. Mailing lists + 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 - 14. Using Multiple spool mailboxes + bind editor backspace - 15. Defining mailboxes which receive mail +5. Reading Mail - The Index and Pager - 16. User defined headers + 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.'' - 17. Defining the order of headers when viewing messages + The next few sections describe the functions provided in each of these + modes. - 18. Specify default save filename +5.1. The Message Index - 19. Specify default Fcc: mailbox when composing + _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 - 20. Specify default save filename and default Fcc: mailbox at - once +5.1.1. Status Flags - 21. Change settings based upon message recipients + 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: - 22. Change settings before formatting a message + D + message is deleted (is marked for deletion) - 23. Choosing the cryptographic key of the recipient + d + message have attachments marked for deletion - 24. Adding key sequences to the keyboard buffer + K + contains a PGP public key - 25. Executing functions + N + message is new - 26. Message Scoring + O + message is old - 27. Spam detection + P + message is PGP encrypted - 28. Setting variables + r + message has been replied to - 29. Reading initialization commands from another file + S + message is signed, and the signature is succesfully verified - 30. Removing hooks + s + message is signed - 31. Sharing Setups + ! + message is flagged - 31.1. Character Sets + * + message is tagged - 31.2. Modularization + 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) - 31.3. Conditional parts + Furthermore, the following flags reflect who the message is addressed + to. They can be customized with the $$ttoo__cchhaarrss variable. - 32. Obsolete Variables + + + message is to you and you only - 4. Advanced Usage + T + message is to you, but also to or cc'ed to others - 1. Regular Expressions + C + message is cc'ed to you - 2. Patterns + F + message is from you - 2.1. Complex Patterns + L + message is sent to a subscribed mailing list - 2.2. Patterns and Dates +5.2. The Pager - 3. Format Strings + 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) - 3.1. Introduction + _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 - 3.2. Conditional Expansion + 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. - 3.3. Modifications and Padding + See also the $$ssttrriicctt__tthhrreeaaddss variable. - 4. Using Tags +5.4. Miscellaneous Functions - 5. Using Hooks + (default: a) - 5.1. Message Matching in Hooks + 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. - 6. Using the sidebar + (default: E-P) - 7. External Address Queries + 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. - 8. Mailbox Formats + (default: h) - 9. Mailbox Shortcuts + Toggles the weeding of message header fields specified by iiggnnoorree + commands. - 10. Handling Mailing Lists + (default: e) - 11. Editing threads + 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. - 11.1. Linking threads + (default: ) (default: C-E on the attachment menu, and in + the pager and index menus; C-T on the compose menu) - 11.2. Breaking threads + 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. - 12. Delivery Status Notification (DSN) Support + 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. - 13. POP3 Support (OPTIONAL) + (default: :) - 14. IMAP Support (OPTIONAL) + 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. - 14.1. The Folder Browser + (default: C-K) - 14.2. Authentication + This command extracts PGP public keys from the current or tagged + message(s) and adds them to your PGP public key ring. - 15. NNTP Support (OPTIONAL) + (default: C-F) - 15.1. Again: Scoring + This command wipes the passphrase(s) from memory. It is useful, if you + misspelled the passphrase. - 16. SMTP Support (OPTIONAL) + (default: L) - 17. Managing multiple IMAP/POP/NNTP accounts (OPTIONAL) + 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. - 18. Start a WWW Browser on URLs (EXTERNAL) + (default: ) - 19. Compressed folders Support (OPTIONAL) + 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. - 19.1. Open a compressed mailbox for reading + (default: E-e) - 19.2. Write a compressed mailbox + 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. - 19.3. Append a message to a compressed mailbox + 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. - 19.4. Encrypted folders + (default: !) - 5. Mutt-ng's MIME Support + 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. - 1. Using MIME in Mutt + (default: T) - 1.1. Viewing MIME messages in the pager + 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. - 1.2. The Attachment Menu + (default: S) - 1.3. The Compose Menu + This function will go to the next line of non-quoted text which come + after a line of quoted text in the internal pager. - 2. MIME Type configuration with mime.types +6. Sending Mail - 3. MIME Viewer configuration with mailcap + The following bindings are available in the _i_n_d_e_x for sending + messages. - 3.1. The Basics of the mailcap file + _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 - 3.2. Secure use of mailcap + 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. - 3.3. Advanced mailcap Usage +6.1. Composing new messages - 3.4. Example mailcap files + 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: - 4. MIME Autoview +To: - 5. MIME Multipart/Alternative + 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. - 6. Attachment Searching and Counting + The editor that is called is selected in the following way: you can + e.g. set it in the mutt-ng configuration: - 7. MIME Lookup +set editor = "vim +/^$/ -c ':set tw=72'" +set editor = "nano" +set editor = "emacs" - 6. Security Considerations + 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 - 1. Passwords + 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: - 2. Temporary Files + _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 - 3. Information Leaks + _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. - 3.1. Message-ID: headers + The quote attribution is configurable, by default it is set to +set attribution = "On %d, %n wrote:" - 3.2. mailto:-style links + It can also be set to something more compact, e.g. +set attribution = "attribution="* %n <%a> [%(%y-%m-%d %H:%M)]:" - 4. External applications + 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. - 4.1. mailcap + 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. - 4.2. Other + 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. - 7. Reference +6.2.2. Group Replies - 1. Command line options + 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. - 2. Patterns +6.2.3. List Replies - 3. Configuration Commands + 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. - 4. Configuration variables + 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. - 5. Functions +lists linuxevent@luga\.at vuln-dev@ mutt-ng-users@ - 5.1. generic + 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. - 5.2. index +6.3. Editing the message header - 5.3. pager + When editing the header of your outgoing message, there are a couple + of special features available. - 5.4. alias + 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. - 5.5. query + You can also attach files to your message by specifying +Attach: filename [description] - 5.6. attach + 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. - 5.7. compose + 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. - 5.8. postpone + Also see the $$eeddiitt__hheeaaddeerrss and $$eeddiittoorr__hheeaaddeerrss variables - 5.9. browser +6.4. Using Mutt-ng with PGP - 5.10. pgp + If you want to use PGP, you can specify +Pgp: [E | S | S id] - 5.11. editor + ``E'' encrypts, ``S'' signs and ``S'' signs with the given key, + setting $$ppggpp__ssiiggnn__aass permanently. - 5.12. sidebar + 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. - A. Acknowledgments + 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. - B. Hacking Documentation + Once you have successfully finished the key selection, the message + will be encrypted using the selected public keys, and sent out. - Index + 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. - List of Tables + The flags sequence (%f) will expand to one of the following flags: - 2.1. Most commonly used movement bindings + _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. - 2.2. Line Editor Functions + 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 - 2.3. Most commonly used Index Bindings + 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. - 2.4. Most commonly used Pager Bindings + 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. - 2.5. ANSI Escape Sequences + 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. - 2.6. ANSI Colors + 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. - 2.7. Most commonly used thread-related bindings +7. Forwarding and Bouncing Mail - 2.8. Most commonly used Mail Composition Bindings + Often, it is necessary to forward mails to other people. Therefore, + mutt-ng supports forwarding messages in two different ways. - 2.9. Most commonly used Compose Menu Bindings + 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: - 2.10. PGP Key Menu Flags +----- Forwarded message from Lucas User ----- - 3.1. Alternative Key Names +From: Lucas User +Date: Thu, 02 Dec 2004 03:08:34 +0100 +To: Michael Random +Subject: Re: blackmail - 7.1. Reference: Command Line Options +Pay me EUR 50,000.- cash or your favorite stuffed animal will die +a horrible death. - 7.2. Reference: Patterns +----- End forwarded message ----- - 7.3. Reference: Obsolete Variables + 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. - 7.4. Reference: Default Generic Function Bindings + 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. - 7.5. Reference: Default Index Function Bindings + 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. - 7.6. Reference: Default Pager Function Bindings +8. Postponing Mail - 7.7. Reference: Default Alias Menu Function Bindings + 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. - 7.8. Reference: Default Query Menu Function Bindings + 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. - 7.9. Reference: Default Attachment Menu Function Bindings + _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. - 7.10. Reference: Default Compose Menu Function Bindings + See also the $$ppoossttppoonnee quad-option. - 7.11. Reference: Default Postpone Menu Function Bindings +Chapter 3. Configuration - 7.12. Reference: Default Browser Menu Function Bindings + _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 - 7.13. Reference: Default PGP Menu Function Bindings +1. Locations of Configuration Files - 7.14. Reference: Default Editor Function Bindings + 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. - 7.15. Referene: Default Sidebar Function Bindings + .muttrc (or .muttngrc for Mutt-ng) is the file where you will usually + place your ccoommmmaannddss to configure Mutt-ng. -Chapter 1. Introduction +2. Basic Syntax of Initialization Files - Table of Contents + 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. - 1. Overview + 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. - 2. Mutt-ng Home Page + 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 ``#''. - 3. Mailing Lists +# folder-hook . \ +set realname="Michael \"MuttDude\" Elkins" - 4. Software Distribution Sites + 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! - 5. IRC + Abstract example: - 6. Weblog +line1\ +line2a # line2b\ +line3\ +line4 +line5 - 7. Copyright + 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. - 8. Manual Conventions + The commands understood by mutt are explained in the next paragraphs. + For a complete list, see the ccoommmmaannddss. -1. Overview +3. Expansion within variables - Mutt-ng is a small but very powerful text-based MIME mail client. Mutt-ng - is highly configurable, and is well suited to the mail power user with - advanced features like key bindings, keyboard macros, mail threading, - regular expression searches and a powerful pattern matching language for - selecting groups of messages. + Besides just assign static content to variables, there's plenty of + ways of adding external and more or less dynamic content. - This documentation additionally contains documentation to Mutt-NG ,a fork - from Mutt with the goal to fix all the little annoyances of Mutt, to - integrate all the Mutt patches that are floating around in the web, and to - add other new features. Features specific to Mutt-ng will be discussed in - an extra section. Don't be confused when most of the documentation talk - about Mutt and not Mutt-ng, Mutt-ng contains all Mutt features, plus many - more. +3.1. Commands' Output -2. Mutt-ng Home Page + It is possible to substitute the output of a Unix command in an + initialization file. This is accomplished by enclosing the command in + backquotes (``) as in, for example: - +my_hdr X-Operating-System: `uname -a` -3. Mailing Lists + 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 : This is where the mutt-ng user - support happens. +3.2. Environment Variables - o : The development mailing list for - mutt-ng + 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, -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 #muttng on irc.freenode.net (www.freenode.net) 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 Mutt-ng development weblog. - -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. - - o 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. $imap_mail_check - is a configuration variable while $EDITOR is an environment variable. - - o Muttng-specific functions are enclosed in <> and printed in a - typewriter font, too, as in . - - o 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. - - o 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 - - Table of Contents - - 1. Basic Concepts - - 1.1. Screens and Menus - - 1.2. Configuration - - 1.3. Functions - - 1.4. Interaction - - 1.5. Modularization - - 1.6. Patterns - - 2. Screens and Menus - - 2.1. Index - - 2.2. Pager - - 2.3. File Browser - - 2.4. Sidebar - - 2.5. Help - - 2.6. Compose Menu - - 2.7. Alias Menu - - 2.8. Attachment Menu - - 2.9. Key Menu - - 3. Moving Around in Menus - - 4. Editing Input Fields - - 5. Reading Mail - The Index and Pager - - 5.1. The Message Index - - 5.2. The Pager - - 5.3. Threaded Mode - - 5.4. Miscellaneous Functions - - 6. Sending Mail - - 6.1. Composing new messages - - 6.2. Replying - - 6.3. Editing the message header - - 6.4. Using Mutt-ng with PGP - - 6.5. Sending anonymous messages via mixmaster - - 7. Forwarding and Bouncing Mail - - 8. Postponing Mail - -1. Basic Concepts - - 1.1. Screens and Menus - - mutt-ng offers different screens of which every has its special purpose: - - o The index displays the contents of the currently opened mailbox. - - o The pager is responsible for displaying messages, that is, the header, - the body and all attached parts. - - o The file browser offers operations on and displays information of all - folders mutt-ng should watch for mail. - - o The sidebar offers a permanent view of which mailboxes contain how - many total, new and/or flagged mails. - - o The help screen lists for all currently available commands how to - invoke them as well as a short description. - - o The compose menu is a comfortable interface take last actions before - sending mail: change subjects, attach files, remove attachements, etc. - - o The attachement menu gives a summary and the tree structure of the - attachements of the current message. - - o The alias menu lists all or a fraction of the aliases a user has - defined. - - o The key menu used in connection with encryption lets users choose the - right key to encrypt with. - - When mutt-ng is started without any further options, it'll open the users - default mailbox and display the index. - - 1.2. Configuration - - Mutt-ng does not feature an internal configuration interface or menu due - to the simple fact that this would be too complex to handle (currently - there are several hundred variables which fine-tune the behaviour.) - - Mutt-ng is configured using configuration files which allow users to add - comments or manage them via version control systems to ease maintenance. - - Also, mutt-ng comes with a shell script named grml-muttng kindly - contributed by users which really helps and eases the creation of a user's - configuration file. When downloading the source code via a snapshot or via - subversion, it can be found in the contrib directory. - - 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 hooks. - Hooks specify actions the user wants to be performed at well-defined - situations: what to do when entering which folder, what to do when - displaying or replying to what kind of message, etc. These are - optional, i.e. a user doesn't need to specify them but can do so. - - 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. - - Table 2.1. Most commonly used movement bindings - - 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. - - Table 2.2. Line Editor Functions - - 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 editor functions using the bind command. For example, to - make the Delete key delete the character in front of the cursor rather - than under, you could use - - bind editor backspace - -5. Reading Mail - The Index and Pager - - Similar to many other mail clients, there are two modes in which mail - isread in Mutt-ng. The first is the index of messages in the mailbox, - which is called the ``index'' in Mutt-ng. The second mode is the display - of the message contents. This is called the ``pager.'' - - The next few sections describe the functions provided in each of these - modes. - - 5.1. The Message Index - - Table 2.3. Most commonly used Index Bindings - - 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 - - o set-flag (default: w) - - o clear-flag (default: W) - - Furthermore, the following flags reflect who the message is addressed to. - They can be customized with the $to_chars variable. - - + - - message is to you and you only - - T - - message is to you, but also to or cc'ed to others - - C - - message is cc'ed to you - - F - - message is from you - - 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 less though not - nearly as featureful. - - Table 2.4. Most commonly used Pager Bindings - - Key Function Description - Return go down one line - Space display the next page (or next message if at the end of a - message) - - go back to the previous page - n search for next match - S skip beyond quoted text - T toggle display of quoted text - ? show key bindings - / search for a regular expression (pattern) - 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 index are available in the - pager, such as delete-message or copy-message (this is one advantage over - using an external pager to view messages). - - Also, the internal pager supports a couple other advanced features. For - one, it will accept and translate the ``standard'' nroff sequences forbold - and underline. These sequences are a series of either the letter, - backspace (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 color objects to specify a color or mono attribute - for them. - - Additionally, the internal pager supports the ANSI escape sequences for - character attributes. Mutt-ng translates them into the correct color and - character settings. The sequences Mutt-ng supports are: ESC [ - Ps;Ps;Ps;...;Ps m (see table below for possible values for Ps). - - Table 2.5. ANSI Escape Sequences - - Value Attribute - 0 All Attributes Off - 1 Bold on - 4 Underline on - 5 Blink on - 7 Reverse video on - 3x Foreground color is x (see table below) - 4x Background color is x (see table below) - - Table 2.6. ANSI Colors - - Number Color - 0 black - 1 red - 2 green - 3 yellow - 4 blue - 5 magenta - 6 cyan - 7 white - - Mutt-ng uses these attributes for handling text/enriched messages, and - they can also be used by an external auto_view script for highlighting - purposes. Note: If you change the colors for your display, for example by - changing the color associated with color2 for your xterm, then that color - will be used instead of green. - - 5.3. Threaded Mode - - When the mailbox is sorted by threads ,there are a few additional - functions available in the index and pager modes. - - Table 2.7. Most commonly used thread-related bindings - - 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 - - Note: Collapsing a thread displays only the first message in the thread - and hides the others. This is useful when threads contain so many messages - that you can only see a handful of threads onthe screen. See %M in - $index_format. - - For example, you could use %?M?(#%03M)&(%4l)? in $index_format to - optionally display the number of hidden messages if the thread is - collapsed. - - See also the $strict_threads 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 alias command is added to the file - specified by the $alias_file variable for future use. Note: Specifying an - $alias_file does not add the aliases specified there-in, you must also - source the file. - - (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 ignore 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 attach-menu, you can change any - attachment's content type. These changes are not persistent, and get lost - upon changing folders. - - Note that this command is also available on the compose-menu .There, it's - used to fine-tune the properties of attachments you are going to send. - - (default: :) - - This command is used to execute any command you would normally put in a - configuration file. A common use is to check the settings of variables, or - in conjunction with macro to change settings on the fly. - - (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. - - (default: L) - - Reply to the current or tagged message(s) by extracting any addresses - which match the regular expressions given by the lists commands, but also - honor any Mail-Followup-To header(s) if the $honor_followup_to - configuration variable is set. Using this when replying to messages posted - to mailing lists helps avoid duplicate copies being sent to the author of - the message you are replying to. - - (default: ) - - Asks for an external Unix command and pipes the current or tagged - message(s) to it. The variables $pipe_decode, $pipe_split, $pipe_decode - and $wait_key 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 $weed variable. - - This function is also available from the attachment menu. You can use this - to easily resend a message which was included with a bounce message as a - message/rfc822 body part. - - (default: !) - - Asks for an external Unix command and executes it. The $wait_key can be - used to control whether Mutt-ng will wait for a key to be pressed when the - command returns (presumably to let the user read the output of the - command), based on the return status of the named command. - - (default: T) - - The pager uses the $quote_regexp variable to detect quoted text when - displaying the body of the message. This function toggles the displayof - the quoted material in the message. It is particularly useful when are - interested in just the response and there is a large amount of quoted text - in the way. - - (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 index for sending messages. - - Table 2.8. Most commonly used Mail Composition Bindings - - 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 forwarding-mail. - - 6.1. Composing new messages - - When you want to send an email using mutt-ng, simply press m on your - keyboard. Then, mutt-ng asks for the recipient via a prompt in the last - line: - - To: - - After you've finished entering the recipient(s), press return. If you want - to send an email to more than one recipient, separate the email addresses - using the comma ",". Mutt-ng then asks you for the email subject. Again, - press return after you've entered it. After that, mutt-ng got the most - important information from you, and starts up an editor where you can then - enter your email. - - The editor that is called is selected in the following way: you can e.g. - set it in the mutt-ng configuration: - - set editor = "vim +/^$/ -c ':set tw=72'" - set editor = "nano" - set editor = "emacs" - - If you don't set your preferred editor in your configuration, mutt-ng - first looks whether the environment variable $VISUAL is set, and if so, it - takes its value as editor command. Otherwise, it has a look at $EDITOR and - takes its value if it is set. If no editor command can be found, mutt-ng - simply assumes vi(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 compose menu. The following options are available: - - Table 2.9. Most commonly used Compose Menu Bindings - - 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 - - Note: The attach-message function will prompt you for a folder to attach - messages from. You can now tag messages in that folder and theywill be - attached to the message you are sending. Note that certainoperations like - composing a new mail, replying, forwarding, etc. are not permitted when - you are in that folder. The %r in $status_format will change to a 'A' to - indicate that you are in attach-message mode. - - 6.2. Replying - - 6.2.1. Simple Replies - - When you want to reply to an email message, select it in the index menu - and then press r. Mutt-ng's behaviour is then similar to the behaviour - when you compose a message: first, you will be asked for the recipient, - then for the subject, and then, mutt-ng will start the editor with the - quote attribution and the quoted message. This can e.g. look like the - example below. - - On Mon, Mar 07, 2005 at 05:02:12PM +0100, Michael Svensson wrote: - > Bill, can you please send last month's progress report to Mr. - > Morgan? We also urgently need the cost estimation for the new - > production server that we want to set up before our customer's - > project will go live. - - You can start editing the email message. It is strongly recommended to put - your answer below the quoted text and to only quote what is really - necessary and that you refer to. Putting your answer on top of the quoted - message, is, although very widespread, very often not considered to be a - polite way to answer emails. - - The quote attribution is configurable, by default it is set to - - set attribution = "On %d, %n wrote:" - - It can also be set to something more compact, e.g. - - set attribution = "attribution="* %n <%a> [%(%y-%m-%d %H:%M)]:" - - The example above results in the following attribution: - - * Michael Svensson [05-03-06 17:02]: - > Bill, can you please send last month's progress report to Mr. - > Morgan? We also urgently need the cost estimation for the new - > production server that we want to set up before our customer's - > project will go live. - - Generally, try to keep your attribution short yet information-rich. It is - not the right place for witty quotes, long "attribution" novels or - anything like that: the right place for such things is - if at all - the - email signature at the very bottom of the message. - - When you're done with writing your message, save and quit the editor. As - before, you will return to the compose menu, which is used in the same way - as before. - - 6.2.2. Group Replies - - In the situation where a group of people uses email as a discussion, most - of the emails will have one or more recipients, and probably several "Cc:" - recipients. The group reply functionalityensures that when you press g - instead of r to do a reply, each and every recipient that is contained in - the original message will receive a copy of the message, either as normal - recipient or as "Cc:" recipient. - - 6.2.3. List Replies - - When you use mailing lists, it's generally better to send your reply to a - message only to the list instead of the list and the original author. To - make this easy to use, mutt-ng features list replies. - - To do a list reply, simply press L. If the email contains a - Mail-Followup-To: header, its value will be used as reply address. - Otherwise, mutt-ng searches through all mail addresses in the original - message and tries to match them a list of regular expressions which can be - specified using the lists command. If any of the regular expression - matches, a mailing list address has been found, and it will be used as - reply address. - - lists linuxevent@luga\.at vuln-dev@ mutt-ng-users@ - - Nowadays, most mailing list software like GNU Mailman adds a - Mail-Followup-To: header to their emails anyway, so setting lists is - hardly ever necessary in practice. - - 6.3. Editing the message header - - When editing the header of your outgoing message, there are a couple of - special features available. - - If you specify Fcc:filename Mutt-ng will pick up filename just as if you - had used the edit-fcc function in the compose menu. - - You can also attach files to your message by specifying - - Attach: filename [description] - - where filename is the file to attach and description is an optional string - to use as the description of the attached file. - - When replying to messages, if you remove the In-Reply-To: field from the - header field, Mutt-ng will not generate a References: field, which allows - you to create a new message thread. - - Also see the $edit_headers and $editor_headers 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 $pgp_sign_as permanently. - - If you have told mutt to PGP encrypt a message, it will guide you through - a key selection process when you try to send the message. Mutt-ng will not - ask you any questions about keys which have a certified user ID matching - one of the message recipients' mail addresses. However, there may be - situations in which there are several keys, weakly certified user ID - fields, or where no matching keys can be found. - - In these cases, you are dropped into a menu with a list of keys from which - you can select one. When you quit this menu, or mutt can't find any - matching keys, you are prompted for a user ID. You can, as usually, abort - this prompt using 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 - $pgp_entry_format) have obvious meanings. But some explanations on the - capabilities, flags, and validity fields are in order. - - The flags sequence (%f) will expand to one of the following flags: - - Table 2.10. PGP Key Menu Flags - - Flag Description - R The key has been revoked and can't be used. - X The key is expired and can't be used. - d You have marked the key as disabled. - c There are unknown critical self-signature packets. - - The capabilities field (%c) expands to a two-character - sequencerepresenting a key's capabilities. The first character gives the - key's encryption capabilities: A minus sign (- )means that the key cannot - be used for encryption. A dot (. )means that it's marked as a signature - key in one of the user IDs, but may also be used for encryption. The - letter e indicates that this key can be used for encryption. - - The second character indicates the key's signing capabilities. Once again, - a ``-'' implies ``not for signing'', ``.'' implies that the key is marked - as an encryption key in one of the user-ids, and ``s'' denotes a key which - can be used for signing. - - Finally, the validity field (%t) indicates how well-certified a user-id - is. A question mark (?) indicates undefined validity, a minus character - (-) marks an untrusted association, a space character means a partially - trusted association, and a plus character (+ ) indicates complete - validity. - - 6.5. Sending anonymous messages via mixmaster - - You may also have configured mutt to co-operate with Mixmaster, an - anonymous remailer. Mixmaster permits you to send your messages - anonymously using a chain of remailers. Mixmaster support in mutt is for - mixmaster version 2.04 (beta 45 appears to be the latest) and 2.03. It - does not support earlier versions or the later so-called version 3 betas, - of which the latest appears to be called 2.9b23. - - To use it, you'll have to obey certain restrictions. Most important, you - cannot use the Cc and Bcc headers. To tell Mutt-ng to use mixmaster, you - have to select a remailer chain, using the mix function on the compose - menu. - - The chain selection screen is divided into two parts. In the (larger) - upper part, you get a list of remailers you may use. In the lower part, - you see the currently selected chain of remailers. - - You can navigate in the chain using the chain-prev and chain-next - functions, which are by default bound to the left and right arrows and to - the h and l keys (think vi keyboard bindings). To insert a remailer at the - current chain position, use the insert function. To append a remailer - behind the current chain position, use select-entry or append . You can - also delete entries from the chain, using the corresponding function. - Finally, to abandon your changes, leave the menu, or accept them pressing - (by default) the Return key. - - Note that different remailers do have different capabilities, indicated in - the %c entry of the remailer menu lines (see $mix_entry_format). Most - important is the ``middleman'' capability, indicated by a capital ``M'': - This means that the remailer in question cannot be used as the final - element of a chain, but will only forward messages to other mixmaster - remailers. For details on the other capabilities, please have a look at - the mixmaster documentation. - -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 - bouncing: when you bounce an email to another address, it will be sent in - practically the same format you send it (except for headers that are - created during transporting the message). To bounce a message, press b and - enter the recipient email address. By default, you are then asked whether - you really want to bounce the message to the specified recipient. If you - answer with yes, the message will then be bounced. - - To the recipient, the bounced email will look as if he got it like a - regular email where he was Bcc: recipient. The only possibility to find - out whether it was a bounced email is to carefully study the email headers - and to find out which host really sent the email. - -8. Postponing Mail - - At times it is desirable to delay sending a message that you have already - begun to compose. When the postpone-message function is used in the - compose menu, the body of your message and attachments are stored in the - mailbox specified by the $postponed variable. This means that you can - recall the message even if you exit Mutt-ng and then restart it at a later - time. - - Once a message is postponed, there are several ways to resume it. From the - command line you can use the ``-p'' option, or if you compose a new - message from the index or pager you will be prompted if postponed messages - exist. If multiple messages are currently postponed, the postponed menu - will pop up and you can select which message you would like to resume. - - Note: If you postpone a reply to a message, the reply setting of the - message is only updated when you actually finish the message and send it. - Also, you must be in the same folder with the message you replied to for - the status of the message to be updated. - - See also the $postpone quad-option. - -Chapter 3. Configuration - - Table of Contents - - 1. Locations of Configuration Files - - 2. Basic Syntax of Initialization Files - - 3. Expansion within variables - - 3.1. Commands' Output - - 3.2. Environment Variables - - 3.3. Configuration Variables - - 3.4. Self-Defined Variables - - 3.5. Pre-Defined Variables - - 3.6. Type Conversions - - 4. Defining/Using aliases - - 5. Changing the default key bindings - - 6. Defining aliases for character sets - - 7. Setting variables based upon mailbox - - 8. Keyboard macros - - 9. Using color and mono video attributes - - 10. Ignoring (weeding) unwanted message headers - - 11. Alternative addresses - - 12. Format = Flowed - - 12.1. Introduction - - 12.2. Receiving: Display Setup - - 12.3. Sending - - 12.4. Additional Notes - - 13. Mailing lists - - 14. Using Multiple spool mailboxes - - 15. Defining mailboxes which receive mail - - 16. User defined headers - - 17. Defining the order of headers when viewing messages - - 18. Specify default save filename - - 19. Specify default Fcc: mailbox when composing - - 20. Specify default save filename and default Fcc: mailbox at once - - 21. Change settings based upon message recipients - - 22. Change settings before formatting a message - - 23. Choosing the cryptographic key of the recipient - - 24. Adding key sequences to the keyboard buffer - - 25. Executing functions - - 26. Message Scoring - - 27. Spam detection - - 28. Setting variables - - 29. Reading initialization commands from another file - - 30. Removing hooks - - 31. Sharing Setups - - 31.1. Character Sets - - 31.2. Modularization - - 31.3. Conditional parts - - 32. Obsolete Variables - -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'' commandline option is specified. This - file is typically /usr/local/share/muttng/Muttngrc or /etc/Muttngrc , - Mutt-ng users will find this file in /usr/local/share/muttng/Muttrc or - /etc/Muttngrc. Mutt will next look for a file named .muttrc in your home - directory, Mutt-ng will look for .muttngrc. If this file does not exist - and your home directory has a subdirectory named .mutt , mutt try to load - a file named .muttng/muttngrc. - - .muttrc (or .muttngrc for Mutt-ng) is the file where you will usually - place your commands to configure Mutt-ng. - -2. Basic Syntax of Initialization Files - - An initialization file consists of a series of commands. Each line of the - file may contain one or more commands. When multiple commands are used, - they must be separated by a semicolon (;). - - set realname='Mutt-ng user' ; ignore x- - - The hash mark, or pound sign (``#''), is used as a ``comment'' character. - You can use it to annotate your initialization file. All text after the - comment character to the end of the line is ignored. For example, - - my_hdr X-Disclaimer: Why are you listening to me? # This is a comment - - Single quotes (') and double quotes (") can be used to quote strings which - contain spaces or other special characters. The difference between the two - types of quotes is similar to that of many popular shell programs, namely - that a single quote is used to specify a literal string (one that is not - interpreted for shell variables or quoting with a backslash (see next - paragraph), while double quotes indicate a string for which should be - evaluated. For example, backtics are evaluated inside of double quotes, - but not for single quotes. - - \ quotes the next character, just as in shells such as bash and zsh. For - example, if want to put quotes ``"'' inside of a string, you can use ``\'' - to force the next character to be a literal instead of interpreted - character. - - set realname="Michael \"MuttDude\" Elkins" - - ``\\'' means to insert a literal ``\'' into the line. ``\n'' and ``\r'' - have their usual C meanings of linefeed and carriage-return, respectively. - - A \ at the end of a line can be used to split commands over multiple - lines, provided that the split points don't appear in the middle of - command names. - - Please note that, unlike the various shells, mutt-ng interprets a ``\'' at - the end of a line also in comments. This allows you to disable a command - split over multiple lines with only one ``#''. - - # folder-hook . \ - set realname="Michael \"MuttDude\" Elkins" - - When testing your config files, beware the following caveat. The backslash - at the end of the commented line extends the current line with the next - line - then referred to as a ``continuation line''. As the first line is - commented with a hash (#) all following continuation lines are also part - of a comment and therefore are ignored, too. So take care of comments when - continuation lines are involved within your setup files! - - Abstract example: - - line1\ - line2a # line2b\ - line3\ - line4 - line5 - - line1 ``continues'' until line4. however, the part after the # is a - comment which includes line3 and line4. line5 is a new line of its own and - thus is interpreted again. - - The commands understood by mutt are explained in the next paragraphs. For - a complete list, see the commands. - -3. Expansion within variables - - Besides just assign static content to variables, there's plenty of ways of - adding external and more or less dynamic content. - - 3.1. Commands' Output - - It is possible to substitute the output of a Unix command in an - initialization file. This is accomplished by enclosing the command in - backquotes (``) as in, for example: - - my_hdr X-Operating-System: `uname -a` - - The output of the Unix command ``uname -a'' will be substituted before the - line is parsed. Note that since initialization files are line oriented, - only the first line of output from the Unix command will be substituted. - - 3.2. Environment Variables - - UNIX environments can be accessed like the way it is done in shells like - sh and bash: Prepend the name of the environment by a ``$'' sign. For - example, - - set record=+sent_on_$HOSTNAME - - sets the $record variable to the string +sent_on_ and appends the value of - the evironment variable $HOSTNAME. - - Note: There will be no warning if an environment variable is not defined. - The result will of the expansion will then be empty. - - 3.3. Configuration Variables - - As for environment variables, the values of all configuration variables as - string can be used in the same way, too. For example, - - set imap_home_namespace = $folder - - would set the value of $imap_home_namespace to the value to which $folder - is currently set to. - - Note: There're no logical links established in such cases so that the the - value for $imap_home_namespace won't change even if $folder gets changed. - - Note: There will be no warning if a configuration variable is not defined - or is empty. The result will of the expansion will then be empty. - - 3.4. Self-Defined Variables - - Mutt-ng flexibly allows users to define their own variables. To avoid - conflicts with the standard set and to prevent misleading error messages, - there's a reserved namespace for them: all user-defined variables must be - prefixed with user_ and can be used just like any ordinary configuration - or environment variable. - - For example, to view the manual, users can either define two macros like - the following - - macro generic "!less -r /path/to/manual" "Show manual" - macro pager "!less -r /path/to/manual" "Show manual" - - for generic, pager and index .The alternative is to define a custom - variable like so: - - set user_manualcmd = "!less -r /path/to_manual" - macro generic "$user_manualcmd" "Show manual" - macro pager "$user_manualcmd" "Show manual" - macro index "$user_manualcmd" "Show manual" - - to re-use the command sequence as in: - - macro index "$user_manualcmd | grep '\^[ ]\\+~. '" "Show Patterns" - - Using this feature, arbitrary sequences can be defined once and recalled - and reused where necessary. More advanced scenarios could include to save - a variable's value at the beginning of macro sequence and restore it at - end. - - When the variable is first defined, the first value it gets assigned is - also the initial value to which it can be reset using the reset command. - - The complete removal is done via the unset keyword. - - After the following sequence: - - set user_foo = 42 - set user_foo = 666 - - the variable $user_foo has a current value of 666 and an initial of 42. - The query - - set ?user_foo - - will show 666. After doing the reset via - - reset user_foo - - a following query will give 42 as the result. After unsetting it via - - unset user_foo - - any query or operation (except the noted expansion within other - statements) will lead to an error message. - - 3.5. Pre-Defined Variables - - In order to allow users to share one setup over a number of different - machines without having to change its contents, there's a number of - pre-defined variables. These are prefixed with muttng_ and are read-only, - i.e. they cannot be set, unset or reset. The reference chapter lists all - available variables. - - Please consult the local copy of your manual for their values as they may - differ from different manual sources. Where the manual is installed in can - be queried (already using such a variable) by running: - - $ muttng -Q muttng_docdir - - To extend the example for viewing the manual via self-defined variables, - it can be made more readable and more portable by changing the real path - in: - - set user_manualcmd = '!less -r /path/to_manual' - - to: - - set user_manualcmd = "!less -r $muttng_docdir/manual.txt" - - which works everywhere if a manual is installed. - - Please note that by the type of quoting, muttng determines when to expand - these values: when it finds double quotes, the value will be expanded - during reading the setup files but when it finds single quotes, it'll - expand it at runtime as needed. - - For example, the statement - - folder-hook . "set user_current_folder = $muttng_folder_name" - - will be already be translated to the following when reading the startup - files: - - folder-hook . "set user_current_folder = some_folder" - - with some_folder being the name of the first folder muttng opens. On the - contrary, - - folder-hook . 'set user_current_folder = $muttng_folder_name' - - will be executed at runtime because of the single quotes so that - user_current_folder will always have the value of the currently opened - folder. - - A more practical example is: - - folder-hook . 'source ~/.mutt/score-$muttng_folder_name' - - which can be used to source files containing score commands depending on - the folder the user enters. - - 3.6. Type Conversions - - A note about variable's types during conversion: internally values are - stored in internal types but for any dump/query or set operation they're - converted to and from string. That means that there's no need to worry - about types when referencing any variable. As an example, the following - can be used without harm (besides makeing muttng very likely behave - strange): - - set read_inc = 100 - set folder = $read_inc - set read_inc = $folder - set user_magic_number = 42 - set folder = $user_magic_number - -4. Defining/Using aliases - - Usage: aliaskey address [, address,...] - - It's usually very cumbersome to remember or type out the address of - someone you are communicating with. Mutt-ng allows you to create - ``aliases'' which map a short string to a full address. - - Note: if you want to create an alias for a group (by specifying more than - one address), you must separate the addresses with a comma (``,''). - - To remove an alias or aliases (``*'' means all aliases): - - Usage: unalias[* | key ... ] - - alias muttdude me@cs.hmc.edu (Michael Elkins) - alias theguys manny, moe, jack - - Unlike other mailers, Mutt-ng doesn't require aliases to be defined in a - special file. The alias command can appear anywhere in a configuration - file, as long as this file is source. Consequently, you can have multiple - alias files, or you can have all aliases defined in your muttrc. - - On the other hand, the function can use only one file, the - one pointed to by the $alias_file variable (which is ~/.muttrc by - default). This file is not special either, in the sense that Mutt-ng will - happily append aliases to any file, but in order for the new aliases to - take effect you need to explicitly source this file too. - - For example: - - source /usr/local/share/Mutt-ng.aliases - source ~/.mail_aliases - set alias_file=~/.mail_aliases - - To use aliases, you merely use the alias at any place in mutt where - muttprompts for addresses, such as the To: or Cc: prompt. You can also - enter aliases in your editor at the appropriate headers if you have the - $editor_headers variable set. - - In addition, at the various address prompts, you can use the tab character - to expand a partial alias to the full alias. If there are multiple - matches, mutt will bring up a menu with the matching aliases. In order to - be presented with the full list of aliases, you must hit tab with out a - partial alias, such as at the beginning of the prompt or after a comma - denoting multiple addresses. - - In the alias menu, you can select as many aliases as you want with the - select-entry key (default: RET), and use the exit key (default: q) to - return to the address prompt. - -5. Changing the default key bindings - - Usage: bindmap key function - - This command allows you to change the default key bindings (operation - invoked when pressing a key). - - map specifies in which menu the binding belongs. Multiple maps may be - specified by separating them with commas (no additional whitespace - isallowed). The currently defined maps are: - - generic - - This is not a real menu, but is used as a fallback for all of the - other menus except for the pager and editor modes. If a key is not - defined in another menu, Mutt-ng will look for a binding to use in - this menu. This allows you to bind a key to a certain function in - multiple menus instead of having multiple bind statements to - accomplish the same task. - - alias - - The alias menu is the list of your personal aliases as defined in - your muttrc. It is the mapping from a short alias name to the full - email address(es) of the recipient(s). - - attach - - The attachment menu is used to access the attachments on received - messages. - - browser - - The browser is used for both browsing the local directory - structure, and for listing all of your incoming mailboxes. - - editor - - The editor is the line-based editor the user enters text data. - - index - - The index is the list of messages contained in a mailbox. - - compose - - The compose menu is the screen used when sending a new message. - - pager - - The pager is the mode used to display message/attachment data, and - help listings. - - pgp - - The pgp menu is used to select the OpenPGP keys used for - encrypting outgoing messages. - - postpone - - The postpone menu is similar to the index menu, except is used - when recalling a message the user was composing, but saved until - later. - - key is the key (or key sequence) you wish to bind. To specify a control - character, use the sequence \Cx, where x is the letter of the control - character (for example, to specify control-A use ``\Ca''). Note that the - case of x as well as \C is ignored, so that \CA, \Ca, \cA and \ca are all - equivalent. An alternative form is to specify the key as a three digit - octal number prefixed with a ``\'' (for example \177 is equivalent to - \c?). - - In addition, key may consist of: - - Table 3.1. Alternative Key Names - - 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 - - key does not need to be enclosed in quotes unless it contains a space (`` - ''). - - function specifies which action to take when key is pressed. For a - complete list of functions, see the functions. The special function noop - unbinds the specified key sequence. - -6. Defining aliases for character sets - - Usage: charset-hookaliascharset - - Usage: iconv-hookcharsetlocal-charset - - The charset-hook command defines an alias for a character set. This is - useful to properly display messages which are tagged with a character set - name not known to mutt. - - The iconv-hook command defines a system-specific name for a character set. - This is helpful when your systems character conversion library insists on - using strange, system-specific names for character sets. - -7. Setting variables based upon mailbox - - Usage: folder-hook [!]regexpcommand - - It is often desirable to change settings based on which mailbox you are - reading. The folder-hook command provides a method by which you can - execute any configuration command. regexp is a regular expression - specifying in which mailboxes to execute command before loading. If a - mailbox matches multiple folder-hook's, they are executed in the order - given in the muttrc. - - Note: if you use the ``!'' shortcut for $spoolfile at the beginning of the - pattern, you must place it inside of double or single quotes in order to - distinguish it from the logical not operator for the expression. - - Note that the settings are not restored when you leave the mailbox. For - example, a command action to perform is to change the sorting methodbased - upon the mailbox being read: - - folder-hook mutt set sort=threads - - However, the sorting method is not restored to its previous value when - reading a different mailbox. To specify a default command, use the pattern - ``.'': - - folder-hook . set sort=date-sent - -8. Keyboard macros - - Usage: macromenu key sequence [description] - - Macros are useful when you would like a single key to perform a series of - actions. When you press key in menu menu ,Mutt-ng will behave as if you - had typed sequence. So if you have a common sequence of commands you type, - you can create a macro to execute those commands with a singlekey. - - menu is the maps which the macro will be bound. Multiple maps may be - specified by separating multiple menu arguments by commas. Whitespace may - not be used in between the menu arguments and thecommas separating them. - - key and sequence are expanded by the same rules as the bind. There are - some additions however. The first is that control characters in sequence - can also be specified as ^x. In order to get a caret (`^'') you need to - specify it twice. Secondly, to specify a certain key such as up or to - invoke a function directly, you can use the format and - .For a listing of key names see the section on bind. - Functions are listed in the functions. - - The advantage with using function names directly is that the macros - willwork regardless of the current key bindings, so they are not dependent - on the user having particular key definitions. This makes them more - robustand portable, and also facilitates defining of macros in files used - by more than one user (eg. the system Muttngrc). - - Optionally you can specify a descriptive text after sequence, which is - shown in the help screens. - - Note: Macro definitions (if any) listed in the help screen(s), are - silently truncated at the screen width, and are not wrapped. - -9. Using color and mono video attributes - - Usage: colorobject foreground background [regexp] - - Usage: colorindex foreground pattern - - Usage: uncolorindex pattern [pattern ...] - - If your terminal supports color, you can spice up Mutt-ng by creating your - own color scheme. To define the color of an object (type of information), - you must specify both a foreground color and a background color (it is not - possible to only specify one or the other). - - object can be one of: - - o attachment - - o body (match regexp in the body of messages) - - o bold (highlighting bold patterns in the body of messages) - - o error (error messages printed by Mutt-ng) - - o header (match regexp in the message header) - - o hdrdefault (default color of the message header in the pager) - - o index (match pattern in the message index) - - o indicator (arrow or bar used to indicate the current item in a menu) - - o markers (the ``+'' markers at the beginning of wrapped lines in the - pager) - - o message (informational messages) - - o normal - - o quoted (text matching $quote_regexp in the body of a message) - - o quoted1, quoted2, ..., quotedN (higher levels of quoting) - - o search (highlighting of words in the pager) - - o signature - - o status (mode lines used to display info about the mailbox or message) - - o tilde (the ``~'' used to pad blank lines in the pager) - - o tree (thread tree drawn in the message index and attachment menu) - - o underline (highlighting underlined patterns in the body of messages) - - foreground and background can be one of the following: - - o white - - o black - - o green - - o magenta - - o blue - - o cyan - - o yellow - - o red - - o default - - o colorx - - foreground can optionally be prefixed with the keyword bright to make the - foreground color boldfaced (e.g., brightred). - - If your terminal supports it, the special keyword default can be used as a - transparent color. The value brightdefault is also valid. If Mutt-ng is - linked against the S-Lang library, you also need to set the $COLORFGBG - environment variable to the default colors of your terminal for this to - work; for example (for Bourne-like shells): - - set COLORFGBG="green;black" - export COLORFGBG - - Note: The S-Lang library requires you to use the lightgray and brown - keywords instead of white and yellow when setting this variable. - - Note: The uncolor command can be applied to the index object only. It - removes entries from the list. You must specify the same pattern specified - in the color command for it to be removed. The pattern ``*'' is a special - token which means to clear the color index list of all entries. - - Mutt-ng also recognizes the keywords color0, color1 ,..., colorN-1 (N - being the number of colors supported by your terminal). This is useful - when you remap the colors for your display (for example by changing the - color associated with color2 for your xterm), since color names may then - lose their normal meaning. - - If your terminal does not support color, it is still possible change the - video attributes through the use of the ``mono'' command: - - Usage: monoobject attribute [regexp] - - Usage: monoindex attribute pattern - - Usage: unmonoindex pattern [pattern ...] - - where attribute is one of the following: - - o none - - o bold - - o underline - - o reverse - - o standout - -10. Ignoring (weeding) unwanted message headers - - Usage: ignorepattern [pattern ...] - - Usage: unignorepattern [pattern ...] - - Messages often have many header fields added by automatic processing - systems, or which may not seem useful to display on the screen. This - command allows you to specify header fields which you don't normally want - to see. - - You do not need to specify the full header field name. For example, - ``ignore content-'' will ignore all header fields that begin with the - pattern ``content-''. ``ignore *'' will ignore all headers. - - To remove a previously added token from the list, use the ``unignore'' - command. The ``unignore'' command will make Mutt-ng display headers with - the given pattern. For example, if you do ``ignore x-'' it is possible to - ``unignore x-mailer''. - - ``unignore *'' will remove all tokens from the ignore list. - - For example: - - # Sven's draconian header weeding - ignore * - unignore from date subject to cc - unignore organization organisation x-mailer: x-newsreader: x-mailing-list: - unignore posted-to: - -11. Alternative addresses - - Usage: alternatesregexp [regexp ...] - - Usage: unalternatesregexp [regexp ...] - - With various functions, mutt will treat messages differently, depending on - whether you sent them or whether you received them from someone else. For - instance, when replying to a message that you sent to a different party, - mutt will automatically suggest to send the response to the original - message's recipients--responding to yourself won't make much sense in many - cases. (See $reply_to.) - - Many users receive e-mail under a number of different addresses. To fully - use mutt's features here, the program must be able to recognize what - e-mail addresses you receive mail under. That's the purpose of the - alternates command: It takes a list of regular expressions, each of which - can identify an address under which you receive e-mail. - - The unalternates command can be used to write exceptions to alternates - patterns. If an address matches something in an alternates command, but - you nonetheless do not think it is from you, you can list a more precise - pattern under an unalternates command. - - To remove a regular expression from the alternates list, use the - unalternates command with exactly the same regexp . Likewise, if the - regexp for a alternates command matches an entry on the unalternates list, - that unalternates entry will be removed. If the regexp for unalternates is - ``*'', all entries on alternates will be removed. - -12. Format = Flowed - - 12.1. Introduction - - Mutt-ng contains support for so-called format=flowed messages. In the - beginning of email, each message had a fixed line width, and it was enough - for displaying them on fixed-size terminals. But times changed, and - nowadays hardly anybody still uses fixed-size terminals: more people - nowaydays use graphical user interfaces, with dynamically resizable - windows. This led to the demand of a new email format that makes it - possible for the email client to make the email look nice in a resizable - window without breaking quoting levels and creating an incompatible email - format that can also be displayed nicely on old fixed-size terminals. - - For introductory information on format=flowed messages, see - . - - 12.2. Receiving: Display Setup - - When you receive emails that are marked as format=flowed messages, and is - formatted correctly, mutt-ng will try to reformat the message to optimally - fit on your terminal. If you want a fixed margin on the right side of your - terminal, you can set the following: - - set wrapmargin = 10 - - The code above makes the line break 10 columns before the right side of - the terminal. - - If your terminal is so wide that the lines are embarrassingly long, you - can also set a maximum line length: - - set max_line_length = 120 - - The example above will give you lines not longer than 120 characters. - - When you view at format=flowed messages, you will often see the quoting - hierarchy like in the following example: - - >Bill, can you please send last month's progress report to Mr. - >Morgan? We also urgently need the cost estimation for the new - >production server that we want to set up before our customer's - >project will go live. - - This obviously doesn't look very nice, and it makes it very hard to - differentiate between text and quoting character. The solution is to - configure mutt-ng to "stuff" the quoting: - - set stuff_quoted - - This will lead to a nicer result that is easier to read: - - > Bill, can you please send last month's progress report to Mr. - > Morgan? We also urgently need the cost estimation for the new - > production server that we want to set up before our customer's - > project will go live. - - 12.3. Sending - - If you want mutt-ng to send emails with format=flowed set, you need to - explicitly set it: - - set text_flowed - - Additionally, you have to use an editor which supports writing - format=flowed-conforming emails. For vim(1), this is done by adding w to - the formatoptions (see :h formatoptions and :h fo-table) when writing - emails. - - Also note that format=flowed knows about ``space-stuffing'', that is, when - sending messages, some kinds of lines have to be indented with a single - space on the sending side. On the receiving side, the first space (if any) - is removed. As a consequence and in addition to the above simple setting, - please keep this in mind when making manual formattings within the editor. - Also note that mutt-ng currently violates the standard (RfC 3676) as it - does not space-stuff lines starting with: - - o > This is not the quote character but a right angle used for other - reasons - - Please make sure that you manually prepend a space to each of them. - - 12.4. Additional Notes - - For completeness, the $delete_space variable provides the mechanism to - generate a DelSp=yes parameter on outgoing messages. According to the - standard, clients receiving a format=flowed messages should delete the - last space of a flowed line but still interpret the line as flowed. - Because flowed lines usually contain only one space at the end, this - parameter would make the receiving client concatenate the last word of the - previous with the first of the current line without a space. This makes - ordinary text unreadable and is intended for languages rarely using - spaces. So please use this setting only if you're sure what you're doing. - -13. Mailing lists - - Usage: listsregexp [regexp ...] - - Usage: unlistsregexp [regexp ...] - - Usage: subscriberegexp [regexp ...] - - Usage: unsubscriberegexp [regexp ...] - - Mutt-ng has a few nice features for using-lists. In order to take - advantage of them, you must specify which addresses belong to mailing - lists, and which mailing lists you are subscribed to. Once you have done - this, the list-reply function will work for all known lists. Additionally, - when you send a message to a subscribed list, mutt will add a - Mail-Followup-To header to tell other users' mail user agents not to send - copies of replies to your personal address. Note that the Mail-Followup-To - header is a non-standard extension which is not supported by all mail user - agents. Adding it is not bullet-proof against receiving personal CCs of - list messages. Also note that the generation of the Mail-Followup-To - header is controlled by the $followup_to configuration variable. - - More precisely, Mutt-ng maintains lists of patterns for the addresses of - known and subscribed mailing lists. Every subscribed mailing list is - known. To mark a mailing list as known, use the ``lists'' command. To mark - it as subscribed, use ``subscribe''. - - You can use regular expressions with both commands. To mark all messages - sent to a specific bug report's address on mutt's bug tracking system as - list mail, for instance, you could say ``subscribe [0-9]*@bugs.guug.de''. - Often, it's sufficient to just give a portion of the list's e-mail - address. - - Specify as much of the address as you need to to remove ambiguity. For - example, if you've subscribed to the Mutt-ng mailing list, you will - receive mail addressed to mutt-users@mutt.org. So, to tell Mutt-ng that - this is a mailing list, you could add ``lists mutt-users'' to your - initialization file. To tell mutt that you are subscribed to it, add - ``subscribe mutt-users'' to your initialization file instead. If you also - happen to get mail from someone whose address is mutt-users@example.com, - you could use ``lists mutt-users@mutt\\.org'' or ``subscribe - mutt-users@mutt\\.org'' to match only mail from the actual list. - - The ``unlists'' command is used to remove a token from the list of known - and subscribed mailing-lists. Use ``unlists *'' to remove all tokens. - - To remove a mailing list from the list of subscribed mailing lists, but - keep it on the list of known mailing lists, use ``unsubscribe''. - -14. Using Multiple spool mailboxes - - Usage: mbox-hook [!]patternmailbox - - This command is used to move read messages from a specified mailbox to - adifferent mailbox automatically when you quit or change folders. pattern - is a regular expression specifying the mailbox to treat as a ``spool'' - mailbox and mailbox specifies where mail should be saved when read. - - Unlike some of the other hook commands, only the first matching pattern is - used (it is not possible to save read mail in more than a single mailbox). - -15. Defining mailboxes which receive mail - - Usage: mailboxes[!]filename [filename ... ] - - Usage: unmailboxes[!]filename [filename ... ] - - This command specifies folders which can receive mail and which will be - checked for new messages. By default, the main menu status bar displays - how many of these folders have new messages. - - When changing folders, pressing space will cycle through folders with new - mail. - - Pressing TAB in the directory browser will bring up a menu showing the - files specified by the mailboxes command, and indicate which contain new - messages. Mutt-ng will automatically enter this mode when invoked from the - command line with the -y option. - - The ``unmailboxes'' command is used to remove a token from the list of - folders which receive mail. Use ``unmailboxes *'' to remove all tokens. - - Note: new mail is detected by comparing the last modification time to the - last access time. Utilities like biff or frm or any other program which - accesses the mailbox might cause Mutt-ng to never detect new mail for that - mailbox if they do not properly reset the access time. Backup tools are - another common reason for updated access times. - - Note: the filenames in the mailboxes command are resolved when the command - is executed, so if these names contain shortcuts (such as ``='' and - ``!''), any variable definition that affect these characters (like $folder - and $spoolfile) should be executed before the mailboxes command. - -16. User defined headers - - Usage: my_hdrstring - - Usage: unmy_hdrfield [field ...] - - The ``my_hdr'' command allows you to create your own header fields which - will be added to every message you send. - - For example, if you would like to add an ``Organization:'' header field to - all of your outgoing messages, you can put the command - - my_hdr Organization: A Really Big Company, Anytown, USA - - in your .muttrc. - - Note: space characters are not allowed between the keyword and the colon - (``:''). The standard for electronic mail (RfC 822) says that space is - illegal there, so Mutt-ng enforces the rule. - - If you would like to add a header field to a single message, you should - either set the $edit_headers variable, or use the edit-headers function - (default: ``E'') in the send-menu so that you can edit the header of your - message along with the body. - - To remove user defined header fields, use the ``unmy_hdr'' command. You - may specify an asterisk (``*'') to remove all header fields, or the fields - to remove. For example, to remove all ``To'' and ``Cc'' header fields, you - could use: - - unmy_hdr to cc - -17. Defining the order of headers when viewing messages - - Usage: hdr_orderheader header [header ...] - - Usage: unhdr_order[ * | header header ...] - - With this command, you can specify an order in which mutt will attempt to - present headers to you when viewing messages. - - ``unhdr_order *'' will clear all previous headers from the order list, - thus removing the header order effects set by the system-wide startup - file. - - hdr_order From Date: From: To: Cc: Subject: - -18. Specify default save filename - - Usage: save-hook [!]patternfilename - - This command is used to override the default filename used when saving - messages. filename will be used as the default filename if the message is - From: an address matching regexp or if you are the author and the message - is addressed to: something matching regexp . - - See pattern-hook for information on the exact format of pattern. - - Examples: - - save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins - save-hook aol\\.com$ +spam - - Also see the fcc-save-hook command. - -19. Specify default Fcc: mailbox when composing - - Usage: fcc-hook [!]patternmailbox - - This command is used to save outgoing mail in a mailbox other than - $record. Mutt-ng searches the initial list of message recipients for the - first matching regexp and uses mailbox as the default Fcc: mailbox. If no - match is found the message will be saved to $record mailbox. - - See pattern-hook for information on the exact format of pattern. - - Example: - - fcc-hook [@.]aol\\.com$ +spammers - - The above will save a copy of all messages going to the aol.com domain to - the `+spammers' mailbox by default. Also see the fcc-save-hook command. - -20. Specify default save filename and default Fcc: mailbox at once - - Usage: fcc-save-hook [!]patternmailbox - - This command is a shortcut, equivalent to doing both a fcc-hook and a - save-hook with its arguments. - -21. Change settings based upon message recipients - - Usage: reply-hook [!]patterncommand - - Usage: send-hook [!]patterncommand - - Usage: send2-hook [!]patterncommand - - These commands can be used to execute arbitrary configuration commands - based upon recipients of the message. pattern is a regular expression - matching the desired address. command is executed when regexp matches - recipients of the message. - - reply-hook is matched against the message you are replying to, instead of - the message you are sending .send-hook is matched against all messages, - both new and replies .Note:reply-hooks are matched before the send-hook, - regardless of the order specified in the users's configuration file. - - send2-hook is matched every time a message is changed, either by editing - it, or by using the compose menu to change its recipients or subject. - send2-hook is executed after send-hook ,and can, e.g., be used to set - parameters such as the $sendmail variable depending on the message's - sender address. - - For each type of send-hook or reply-hook, when multiple matches occur, - commands are executed in the order they are specified in the muttrc (for - that type of hook). - - See pattern-hook for information on the exact format of pattern. - - Example: send-hook mutt "set mime_forward signature=''" - - Another typical use for this command is to change the values of the - $attribution, $signature and $locale variables in order to change the - language of the attributions and signatures based upon the recipients. - - Note: the send-hook's are only executed ONCE after getting the initial - list of recipients. Adding a recipient after replying or editing the - message will NOT cause any send-hook to be executed. Also note that my_hdr - commands which modify recipient headers, or the message's subject, don't - have any effect on the current message when executed from a send-hook. - -22. Change settings before formatting a message - - Usage: message-hook [!]patterncommand - - This command can be used to execute arbitrary configuration commands - before viewing or formatting a message based upon information about the - message. command is executed if the pattern matches the message to be - displayed. When multiple matches occur, commands are executed in the order - they are specified in the muttrc. - - See pattern-hook for information on the exact format of pattern. - - Example: - - message-hook ~A 'set pager=builtin' - message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject:.*\""' - -23. Choosing the cryptographic key of the recipient - - Usage: crypt-hookpatternkeyid - - When encrypting messages with PGP or OpenSSL, you may want to associate a - certain key with a given e-mail address automatically, either because the - recipient's public key can't be deduced from the destination address, or - because, for some reasons, you need to override the key Mutt-ng - wouldnormally use. The crypt-hook command provides a method by which you - can specify the ID of the public key to be used when encrypting messages - to a certain recipient. - - The meaning of "key id" is to be taken broadly in this context: You can - either put a numerical key ID here, an e-mail address, or even just a real - name. - -24. Adding key sequences to the keyboard buffer - - Usage: pushstring - - This command adds the named string to the keyboard buffer. The string may - contain control characters, key names and function names like the sequence - string in the macro command. You may use it to automatically run a - sequence of commands at startup, or when entering certain folders. For - example, the following command will automatically collapse all threads - when entering a folder: - - folder-hook . 'push ' - -25. Executing functions - - Usage: execfunction [function ... ] - - This command can be used to execute any function. Functions are listed in - the functions. ``exec function'' is equivalent to ``push ''. - -26. Message Scoring - - Usage: scorepattern value - - Usage: unscorepattern [pattern ... ] - - In situations where you have to cope with a lot of emails, e.g. when you - read many different mailing lists, and take part in discussions, it is - always useful to have the important messages marked and the annoying - messages or the ones that you aren't interested in deleted. For this - purpose, mutt-ng features a mechanism called ``scoring''. - - When you use scoring, every message has a base score of 0. You can then - use the score command to define patterns and a positive or negative value - associated with it. When a pattern matches a message, the message's score - will be raised or lowered by the amount of the value associated with the - pattern. - - score "~f nion@muttng\.org" 50 - score "~f @sco\.com" -100 - - If the pattern matches, it is also possible to set the score value of the - current message to a certain value and then stop evaluation: - - score "~f santaclaus@northpole\.int" =666 - - What is important to note is that negative score values will be rounded up - to 0. - - To make scoring actually useful, the score must be applied in some way. - That's what the score thresholds are for. Currently, there are three score - thresholds: - - o flag threshold: when a message has a score value equal or higher than - the flag threshold, it will be flagged. - - o read threshold: when a message has a score value equal or lower than - the read threshold, it will be marked as read. - - o delete threshold: when a message has a score value equal or lower than - the delete threshold, it will be marked as deleted. - - These three thresholds can be set via the variables $score_threshold_read, - $score_threshold_flag and $score_threshold_delete. - - By default, $score_threshold_read and $score_threshold_delete are set to - -1, which means that in the default threshold configuration no message - will ever get marked as read or deleted. - - Scoring gets especially interesting when combined with the color command - and the ~n pattern: - - color index black yellow "~n 10-" - color index red yellow "~n 100-" - - The rules above mark all messages with a score between 10 and 99 with - black and yellow, and messages with a score greater or equal 100 with red - and yellow. This might be unusual to you if you're used to e.g. slrn's - scoring mechanism, but it is more flexible, as it visually marks different - scores. - -27. Spam detection - - Usage: spampattern format - - Usage: nospampattern - - Mutt-ng has generalized support for external spam-scoring filters. By - defining your spam patterns with the spam and nospam commands, you can - limit, search, and sort your mail based on its spam attributes, as - determined by the external filter. You also can display the spam - attributes in your index display using the %H selector in the - $index_format variable. (Tip: try %?H?[%H] ? to display spam tags only - when they are defined for a given message.) - - Your first step is to define your external filter's spam patterns using - the spam command. pattern should be a regular expression that matches a - header in a mail message. If any message in the mailbox matches this - regular expression, it will receive a ``spam tag'' or ``spam attribute'' - (unless it also matches a nospam pattern -- see below.) The appearance of - this attribute is entirely up to you, and is governed by the format - parameter. format can be any static text, but it also can include - back-references from the pattern expression. (A regular expression - ``back-reference'' refers to a sub-expression contained within - parentheses.) %1 is replaced with the first back-reference in the regex, - %2 with the second, etc. - - If you're using multiple spam filters, a message can have more than one - spam-related header. You can define spam patterns for each filter you use. - If a message matches two or more of these patterns, and the - $spam_separator variable is set to a string, then the message's spam tag - will consist of all the format strings joined together, with the value of - $spam_separator separating them. - - For example, suppose I use DCC, SpamAssassin, and PureMessage. I might - define these spam settings: - - spam "X-DCC-.*-Metrics:.*(....)=many" "90+/DCC-%1" - spam "X-Spam-Status: Yes" "90+/SA" - spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM" - set spam_separator=", " - - If I then received a message that DCC registered with ``many'' hits under - the ``Fuz2'' checksum, and that PureMessage registered with a 97% - probability of being spam, that message's spam tag would read90+/DCC-Fuz2, - 97/PM. (The four characters before ``=many'' in a DCC report indicate the - checksum used -- in this case, ``Fuz2''.) - - If the $spam_separator variable is unset, then each spam pattern match - supersedes the previous one. Instead of getting joined format strings, - you'll get only the last one to match. - - The spam tag is what will be displayed in the index when you use %H in the - $index_format variable. It's also the string that the ~H pattern-matching - expression matches against for search and limit functions. And it's what - sorting by spam attribute will use as a sort key. - - That's a pretty complicated example, and most people's actual environments - will have only one spam filter. The simpler your configuration, the more - effective mutt can be, especially when it comes to sorting. - - Generally, when you sort by spam tag, mutt will sort lexically -- that is, - by ordering strings alphnumerically. However, if a spam tag begins with a - number, mutt will sort numerically first, and lexically only when two - numbers are equal in value. (This is like UNIX's sort -n.) A message with - no spam attributes at all -- that is, one that didn't match any of your - spam patterns -- is sorted at lowest priority. Numbers are sorted next, - beginning with 0 and ranging upward. Finally, non-numeric strings are - sorted, with ``a'' taking lowerpriority than ``z''. Clearly, in general, - sorting by spam tags is most effective when you can coerce your filter to - give you a raw number. But in case you can't, mutt can still do something - useful. - - The nospam command can be used to write exceptions to spam patterns. If a - header pattern matches something in a spam command, but you nonetheless do - not want it to receive a spam tag, you can list amore precise pattern - under a nospam command. - - If the pattern given to nospam is exactly the same as the pattern on an - existing spam list entry, the effect will be to remove the entry from the - spam list, instead of adding an exception. Likewise, if the pattern for a - spam command matches an entry on the nospam list, that nospam entry will - be removed. If the pattern for nospam is ``*'', all entries on both lists - will be removed. This might be the default action if you use spam and - nospam in conjunction with a folder-hook. - - You can have as many spam or nospam commands as you like. You can even do - your own primitive spam detection within mutt -- for example, if you - consider all mail from MAILER-DAEMON to be spam, you can use a spam - command like this: - - spam "^From: .*MAILER-DAEMON" "999" - -28. Setting variables - - Usage: set[no|inv]variable [=value] [variable...] - - Usage: togglevariable [variable ...] - - Usage: unsetvariable [variable ...] - - Usage: resetvariable [variable ...] - - This command is used to set (and unset) variables. There are four basic - types of variables: boolean, number, string and quadoption. boolean - variables can be set (true) or unset (false). number variables can be - assigned a positive integer value. - - string variables consist of any number of printable characters. strings - must be enclosed in quotes if they contain spaces or tabs. You may also - use the ``C'' escape sequences \n and \t for newline and tab, - respectively. - - quadoption variables are used to control whether or not to be prompted for - certain actions, or to specify a default action. A value of yes will cause - the action to be carried out automatically as if you had answered yes to - the question. Similarly, a value of no will cause the the action to be - carried out as if you had answered ``no.'' A value of ask-yes will cause a - prompt with a default answer of ``yes'' and ask-no will provide a default - answer of ``no.'' - - Prefixing a variable with ``no'' will unset it. Example: set noaskbcc . - - For boolean variables, you may optionally prefix the variable name with - inv to toggle the value (on or off). This is useful when writing macros. - Example: set invsmart_wrap. - - The toggle command automatically prepends the inv prefix to all specified - variables. - - The unset command automatically prepends the no prefix to all specified - variables. - - Using the enter-command function in the index menu, you can query the - value of a variable by prefixing the name of the variable with a question - mark: - - set ?allow_8bit - - The question mark is actually only required for boolean and quadoption - variables. - - The reset command resets all given variables to the compile time defaults - (hopefully mentioned in this manual). If you use the command set and - prefix the variable with ``&'' this has the same behavior as the reset - command. - - With the reset command there exists the special variable ``all'', which - allows you to reset all variables to their system defaults. - -29. Reading initialization commands from another file - - Usage: sourcefilename [filename ...] - - This command allows the inclusion of initialization commands from other - files. For example, I place all of my aliases in ~/.mail_aliases so that I - can make my ~/.muttrc readable and keep my aliases private. - - If the filename begins with a tilde (``~''), it will be expanded to the - path of your home directory. - - If the filename ends with a vertical bar (|), then filename is considered - to be an executable program from which to read input (eg. source - ~/bin/myscript|). - -30. Removing hooks - - Usage: unhook[* | hook-type] - - This command permits you to flush hooks you have previously defined. You - can either remove all hooks by giving the ``*'' character as an argument, - or you can remove all hooks of a specific type by saying something like - unhook send. - -31. Sharing Setups - - 31.1. Character Sets - - As users may run mutt-ng on different systems, the configuration must be - maintained because it's likely that people want to use the setup - everywhere they use mutt-ng. And mutt-ng tries to help where it can. - - To not produce conflicts with different character sets, mutt-ng allows - users to specify in which character set their configuration files are - encoded. Please note that while reading the configuration files, this is - only respected after the corresponding declaration appears. It's advised - to put the following at the very beginning of a users muttngrc: - - set config_charset = "..." - - and replacing the dots with the actual character set. To avoid problems - while maintaining the setup, vim(1) user's may want to use modelines as - show in: - - # vim:fileencoding=...: - - while, again, replacing the dots with the appropriate name. This tells - vim(1) as which character set to read and save the file. - - 31.2. Modularization - - ``Modularization'' means to divide the setup into several files while - sorting the options or commands by topic. Especially for longer setups - (e.g. with many hooks), this helps maintaining it and solving trouble. - - When using separation, setups may be, as a whole or in fractions, shared - over different systems. - - 31.3. Conditional parts - - When using a configuration on different systems, the user may not always - have influence on how mutt-ng is installed and which features it includes. - - To solve this, mutt-ng contain a feature based on the ``ifdef'' patch - written for mutt. Its basic syntax is: - - ifdef - ifndef - - ...whereby can be one of: - - o a function name - - o a variable name - - o a menu name - - o a feature name - - All available functions, variables and menus are documented elsewhere in - this manual but ``features'' is specific to these two commands. To test - for one, prefix one of the following keywords with feature_: ncurses, - slang, iconv, idn, dotlock, standalone, pop, nntp, imap, ssl, gnutls, - sasl, sasl2, libesmtp, compressed, color, classic_pgp, classic_smime, - gpgme, header_cache - - As an example, one can use the following in ~/.muttngrc: - - ifdef feature_imap 'source ~/.mutt-ng/setup-imap' - ifdef feature_pop 'source ~/.mutt-ng/setup-pop' - ifdef feature_nntp 'source ~/.mutt-ng/setup-nntp' - - ...to only source ~/.mutt-ng/setup-imap if IMAP support is built in, only - source ~/.mutt-ng/setup-pop if POP support is built in and only source - ~/.mutt-ng/setup-nntp if NNTP support is built in. - - An example for testing for variable names can be used if users use - different revisions of mutt-ng whereby the older one may not have a - certain variable. To test for the availability of $imap_mail_check use: - - ifdef imap_mail_check 'set imap_mail_check = 300' - - Provided for completeness is the test for menu names. To set - $pager_index_lines only if the pager menu is available, use: - - ifdef pager 'set pager_index_lines = 10' - - For completeness, too, the opposite of ifdef is provided: ifndef which - only executes the command if the test fails. For example, the following - two examples are equivalent: - - ifdef feature_ncurses 'source ~/.mutt-ng/setup-ncurses' - ifndef feature_ncurses 'source ~/.mutt-ng/setup-slang' - - ...and... - - ifdef feature_slang 'source ~/.mutt-ng/setup-slang' - ifndef feature_slang 'source ~/.mutt-ng/setup-ncurses' - -32. Obsolete Variables - - In the process of ensuring and creating more consistency, many variables - have been renamed and some of the old names were already removed. Please - see sect-obsolete for a complete list. - -Chapter 4. Advanced Usage - - Table of Contents - - 1. Regular Expressions - - 2. Patterns - - 2.1. Complex Patterns - - 2.2. Patterns and Dates - - 3. Format Strings - - 3.1. Introduction - - 3.2. Conditional Expansion - - 3.3. Modifications and Padding - - 4. Using Tags - - 5. Using Hooks - - 5.1. Message Matching in Hooks - - 6. Using the sidebar - - 7. External Address Queries - - 8. Mailbox Formats - - 9. Mailbox Shortcuts - - 10. Handling Mailing Lists - - 11. Editing threads - - 11.1. Linking threads - - 11.2. Breaking threads - - 12. Delivery Status Notification (DSN) Support - - 13. POP3 Support (OPTIONAL) - - 14. IMAP Support (OPTIONAL) - - 14.1. The Folder Browser - - 14.2. Authentication - - 15. NNTP Support (OPTIONAL) - - 15.1. Again: Scoring - - 16. SMTP Support (OPTIONAL) - - 17. Managing multiple IMAP/POP/NNTP accounts (OPTIONAL) - - 18. Start a WWW Browser on URLs (EXTERNAL) - - 19. Compressed folders Support (OPTIONAL) - - 19.1. Open a compressed mailbox for reading - - 19.2. Write a compressed mailbox - - 19.3. Append a message to a compressed mailbox - - 19.4. Encrypted folders - -1. Regular Expressions - - All string patterns in Mutt-ng including those in more complex patterns - must be specified using regular expressions (regexp) in the ``POSIX - extended'' syntax (which is more or less the syntax used by egrep and GNU - awk). For your convenience, we have included below a brief description of - this syntax. - - The search is case sensitive if the pattern contains at least one upper - case letter, and case insensitive otherwise. Note that ``\'' must be - quoted if used for a regular expression in an initialization command: - ``\\''. - - A regular expression is a pattern that describes a set of strings. Regular - expressions are constructed analogously to arithmetic expressions, by - using various operators to combine smaller expressions. - - Note that the regular expression can be enclosed/delimited by either " or - ' which is useful if the regular expression includes a white-space - character. See muttrc-syntax for more information on " and ' delimiter - processing. To match a literal " or ' you must preface it with \ - (backslash). - - The fundamental building blocks are the regular expressions that match a - single character. Most characters, including all letters and digits, are - regular expressions that match themselves. Any metacharacter with special - meaning may be quoted by preceding it with a backslash. - - The period ``.'' matches any single character. The caret ``^'' andthe - dollar sign ``$'' are metacharacters that respectively match the empty - string at the beginning and end of a line. - - A list of characters enclosed by ``]'' and ``]'' matches any single - character in that list; if the first character of the list is a caret - ``^'' then it matches any character not in the list. For example, the - regular expression ]0123456789] matches any single digit. A range of ASCII - characters may be specified by giving the first and last characters, - separated by a hyphen ``-''. Most metacharacters lose their special - meaning inside lists. To include a literal ``]'' place it first in the - list. Similarly, to include a literal ``^'' place it anywhere but first. - Finally, to include a literal hyphen ``-'' place it last. - - Certain named classes of characters are predefined. Character classes - consist of ``[:'', a keyword denoting the class, and ``:]''. The following - classes are defined by the POSIX standard: - - [:alnum:] - - Alphanumeric characters. - - [:alpha:] - - Alphabetic characters. - - [:blank:] - - Space or tab characters. - - [:cntrl:] - - Control characters. - - [:digit:] - - Numeric characters. - - [:graph:] - - Characters that are both printable and visible. (A space is - printable, but not visible, while an ``a'' is both.) - - [:lower:] - - Lower-case alphabetic characters. - - [:print:] - - Printable characters (characters that are not control characters.) - - [:punct:] - - Punctuation characters (characters that are not letter, digits, - control characters, or space characters). - - [:space:] - - Space characters (such as space, tab and formfeed, to name a few). - - [:upper:] - - Upper-case alphabetic characters. - - [:xdigit:] - - Characters that are hexadecimal digits. - - A character class is only valid in a regular expression inside the - brackets of a character list. Note that the brackets in these class names - are part of the symbolic names, and must be included in addition to the - brackets delimiting the bracket list. For example, [[:digit:]] is - equivalent to [0-9]. - - Two additional special sequences can appear in character lists. These - apply to non-ASCII character sets, which can have single symbols - (calledcollating elements) that are represented with more than one - character, as well as several characters that are equivalent for collating - or sorting purposes: - - Collating Symbols - - A collating symbol is a multi-character collating element enclosed - in ``[.'' and ``.]''. For example, if ``ch'' is a collating - element, then [[.ch.]] is a regexp that matches this collating - element, while [ch] is a regexp that matches either ``c'' or - ``h''. - - Equivalence Classes - - An equivalence class is a locale-specific name for a list of - characters that are equivalent. The name is enclosed in ``[='' and - ``=]''. For example, the name ``e'' might be used to represent all - of ``è'' ``é'' and ``e''. In this case, [[=e=]] is a regexp that - matches any of ``è'', ``é'' and ``e''. - - A regular expression matching a single character may be followed by one of - several repetition operators: - - ? - - The preceding item is optional and matched at most once. - - * - - The preceding item will be matched zero or more times. - - + - - The preceding item will be matched one or more times. - - {n} - - The preceding item is matched exactly n times. - - {n,} - - The preceding item is matched n or more times. - - {,m} - - The preceding item is matched at most m times. - - {n,m} - - The preceding item is matched at least n times, but no more than m - times. - - Two regular expressions may be concatenated; the resulting regular - expression matches any string formed by concatenating two substrings that - respectively match the concatenated subexpressions. - - Two regular expressions may be joined by the infix operator ``|''; the - resulting regular expression matches any string matching either - subexpression. - - Repetition takes precedence over concatenation, which in turn takes - precedence over alternation. A whole subexpression may be enclosed in - parentheses to override these precedence rules. - - Note: If you compile Mutt-ng with the GNU rx package, the following - operators may also be used in regular expressions: - - \\y - - Matches the empty string at either the beginning or the end of a - word. - - \\B - - Matches the empty string within a word. - - \\< - - Matches the empty string at the beginning of a word. - - \\> - - Matches the empty string at the end of a word. - - \\w - - Matches any word-constituent character (letter, digit, or - underscore). - - \\W - - Matches any character that is not word-constituent. - - \\` - - Matches the empty string at the beginning of a buffer (string). - - \\' - - Matches the empty string at the end of a buffer. - - Please note however that these operators are not defined by POSIX, so they - may or may not be available in stock libraries on various systems. - -2. Patterns - - Mutt-ng's pattern language provides a simple yet effective way to set up - rules to match messages, e.g. for operations like tagging and scoring. A - pattern consists of one or more sub-pattern, which can be logically - grouped, ORed, and negated. For a complete listing of these patterns, - please refer to table patterns in the Reference chapter. - - It must be noted that in this table, EXPR is a regular expression. For - ranges, the forms <[MAX], >>[MIN], [MIN]- and -[MAX] are also possible. - - 2.1. Complex Patterns - - It is possible to combine several sub-patterns to a more complex pattern. - The most simple possibility is to logically AND several patterns by - stringing them together: - - ~s 'SPAM' ~U - - The pattern above matches all messages that contain ``SPAM'' in the - subject and are unread. - - To logical OR patterns, simply use the | operator. This one especially - useful when using local groups: - - ~f ("nion@muttng\.org"|"ak@muttng\.org"|"pdmef@muttng\.org") - (~b mutt-ng|~s Mutt-ng) - !~x '@synflood\.at' - - The first pattern matches all messages that were sent by one of the - mutt-ng maintainers, while the seconds pattern matches all messages that - contain ``mutt-ng'' in the message body or ``Mutt-ng'' in the subject. The - third pattern matches all messages that do not contain ``@synflood\.at'' - in the References: header, i.e. messages that are not an (indirect) reply - to one of my messages. A pattern can be logicall negated using the ! - operator. - - 2.2. Patterns and Dates - - When using dates in patterns, the dates must be specified in a special - format, i.e. DD/MM/YYYY. If you don't specify month or year, they default - to the current month or year. When using date ranges, and you specify only - the minimum or the maximum, the specified date will be excluded, e.g. - 01/06/2005- matches against all messages after Juni 1st, 2005. - - It is also possible to use so-called ``error margins'' when specifying - date ranges. You simply specify a date, and then the error margin. This - margin needs to contain the information whether it goes ``forth'' or - ``back'' in time, by using + and -. Then follows a number and a unit, i.e. - y for years, m for months, w for weeks and d for days. If you use the - special * sign, it means that the error margin goes to both``directions'' - in time. - - ~d 01/01/2005+1y - ~d 18/10/2004-2w - ~d 28/12/2004*1d - - The first pattern matches all dates between January 1st, 2005 and January - 1st 2006. The second pattern matches all dates between October 18th, 2004 - and October 4th 2004 (2 weeks before 18/10/2004), while the third pattern - matches all dates 1 day around December 28th, 2004 (i.e. Dec 27th, 28th - and 29th). - - Relative dates are also very important, as they make it possible to - specify date ranges between a fixed number of units and the current date. - How this works can be seen in the following example: - - ~d >2w # messages older than two weeks - ~d <3d # messages newer than 3 days - ~d =1m # messages that are exactly one month old - -3. Format Strings - - 3.1. Introduction - - The so called Format Strings offer great flexibility when configuring - mutt-ng. In short, they describe what items to print out how in menus and - status messages. - - Basically, they work as this: for different menus and bars, there's a - variable specifying the layout. For every item available, there is a so - called expando. - - For example, when running mutt-ng on different machines or different - versions for testing purposes, it may be interesting to have the following - information always printed on screen when one is in the index: - - o the current hostname - - o the current mutt-ng version number - - The setting for the status bar of the index is controlled via the - $status_format variable. For the hostname and version string, there's an - expando for $status_format: %h expands to the hostname and %v to the - version string. When just configuring: - - set status_format = "%v on %h: ..." - - mutt-ng will replace the sequence %v with the version string and %h with - the host's name. When you are, for example, running mutt-ng version 1.5.9i - on host mailhost, you'll see the following when you're in the index: - - Mutt-ng 1.5.9i on mailhost: ... - - In the index, there're more useful information one could want to see: - - o which mailbox is open - - o how man new, flagged or postponed messages - - o ... - - To include the mailbox' name is as easy as: - - set status_format = "%v on %h: %B: ... - - When the currently opened mailbox is Inbox, this will be expanded to: - - Mutt-ng 1.5.9i on mailhost: Inbox: ... - - For the number of certain types of messages, one more feature of the - format strings is extremely useful. If there aren't messages of a certain - type, it may not be desired to print just that there aren't any but - instead only print something if there are any. - - 3.2. Conditional Expansion - - To only print the number of messages if there are new messages in the - current mailbox, further extend $status_format to: - - set status_format = "%v on %h: %B %?n?%n new? ... - - This feature is called nonzero-printing and works as this: some expandos - may be optionally printed nonzero, i.e. a portion of the format string is - only evaluated if the value of the expando is different from zero. The - basic syntax is: - - %??? - - which tells mutt-ng to only look at if the value of - the %?&? - - Using this we can make mutt-ng to do the following: - - o make it print ``n new messages'' whereby n is the count but only if - there new ones - - o and make it print ``no new messages'' if there aren't any - - The corresponding configuration is: - - set status_format = "%v on %h: %B: %?n?%n new messages&no new messages? ... - - This doubles the use of the ``new messages'' string because it'll get - always printed. Thus, it can be shortened to: - - set status_format = "%v on %h: %B: %?n?%n&no? new messages ... - - As you might see from this rather simple example, one can create very - complex but fancy status messages. Please see the reference chapter for - expandos and those which may be printed nonzero. - - 3.3. Modifications and Padding - - Besides the information given so far, there're even more features of - format strings: - - o When specifying %_ instead of just %, mutt-ng will convert - all characters in the expansion of to lowercase. - - o When specifying %: instead of just %, mutt-ng will convert - all dots in the expansion of to underscores (_). - - Also, there's a feature called Padding supplied by the following two - expandos: %|X and %>X . - - %|X - - When this occurs, mutt-ng will fill the rest of the line with the - character X. In our example, filling the rest of the line with - dashes is done by setting: - - set status_format = "%v on %h: %B: %?n?%n&no? new messages %|-" - - %>X - - Since the previous expando stops at the end of line, there must be - a way to fill the gap between two items via the %>X expando: it - puts as many characters X in between two items so that the rest of - the line will be right-justified. For example, to not put the - version string and hostname of our example on the left but on the - right and fill the gap with spaces, one might use (note the space - after %>): - - set status_format = "%B: %?n?%n&no? new messages %> (%v on %h)" - -4. Using Tags - - Sometimes it is desirable to perform an operation on a group of messages - all at once rather than one at a time. An example might be to save - messages to a mailing list to a separate folder, or to delete all messages - with a given subject. To tag all messages matching a pattern, use the - tag-pattern function, which is bound to ``shift-T'' by default. Or you can - select individual messages by hand using the ``tag-message'' function, - which is bound to ``t'' by default. See patterns for Mutt-ng's pattern - matching syntax. - - Once you have tagged the desired messages, you can use the ``tag-prefix'' - operator, which is the ``;'' (semicolon) key by default. When the - ``tag-prefix'' operator is used, the next operation will be applied to all - tagged messages if that operation can be used in that manner. If the - $auto_tag variable is set, the next operation applies to the tagged - messages automatically, without requiring the ``tag-prefix''. - - In macro or push commands, you can use the ``tag-prefix-cond'' operator. - If there are no tagged messages, mutt will "eat" the rest of the macro to - abort it's execution.Mutt-ng will stop "eating" the macro when it - encounters the ``end-cond'' operator; after this operator the rest of the - macro will be executed asnormal. - -5. Using Hooks - - A hook is a concept borrowed from the EMACS editor which allows you to - execute arbitrary commands before performing some operation. For example, - you may wish to tailor your configuration based upon which mailbox you are - reading, or to whom you are sending mail. In the Mutt-ng world, a hook - consists of a regexp or patterns along with a configuration - option/command. See - - o folder-hook - - o send-hook - - o message-hook - - o save-hook - - o mbox-hook - - o fcc-hook - - o fcc-save-hook - - for specific details on each type of hook available. - - Note: if a hook changes configuration settings, these changes remain - effective until the end of the current mutt session. As this is generally - not desired, a default hook needs to be added before all other hooks to - restore configuration defaults. Here is an example with send-hook and the - my_hdr directive: - - send-hook . 'unmy_hdr From:' - send-hook '~C ^b@b\.b$' my-hdr from: c@c.c - - 5.1. Message Matching in Hooks - - Hooks that act upon messages (send-hook, save-hook, fcc-hook,message-hook - )are evaluated in a slightly different manner. For the other types of - hooks, a regexp 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 patterns language for matching messages in - hook commands. This works in exactly the same way as it would when - limiting orsearching 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 me@cs.hmc.edu. - - However, it is not required that you write the pattern to match using the - full searching language. You can still specify a simple regular expression - like the other hooks, in which case Mutt-ng will translate your pattern - into the full language, using the translation specified by the - default-hook variable. The pattern is translated at the time the hook is - declared, so the value of default-hook 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 $query_command 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 $mbox_type - variable. - - mbox. 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). - - MMDF. This is a variant of the mbox format. Each message is surrounded by - lines containing ``^A^A^A^A'' (four control-A's). - - MH. A radical departure from mbox and MMDF, 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. Note: Mutt detects this type of mailbox by - looking for either .mh_sequences or .xmhcache (needed to distinguish - normal directories from MH mailboxes). - - Maildir. The newest of the mailbox formats, used by the Qmail MTA (a - replacement for sendmail). Similar to MH, except that it adds three - subdirectories of the mailbox: tmp, new and cur .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. - - o ! -- refers to your $spoolfile (incoming) mailbox - - o > -- refers to your $mbox file - - o < -- refers to your $record file - - o ^ -- refers to the current mailbox - - o - or !! -- refers to the file you've last visited - - o ~ -- refers to your home directory - - o = or + -- refers to your $folder directory - - o @alias -- refers to the save-hook 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 lists 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 - index menu display. This is useful to distinguish between personal and - list mail in the same mailbox. In the $index_format 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 index menu and pager, 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 $followup_to 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 - $honor_followup_to 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 $reply_to variable to help decide which address to use. - If set to ask-yes or ask-no, 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 yes, 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 $index_format 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 sort the mailbox into threads. 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 - - RfC 1894 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: - - o 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. - - o The SMTP support via libESMTP supports it, too. - - To support this, there are two variables: - - o $dsn_notify is used to request receipts for different results (such as - failed message,message delivered, etc.). - - o $dsn_return 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 configure script - with the --enable-pop 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 $pop_mail_check variable, which defaults to every 60 - seconds. - - If Mutt-ng was compiled with SSL support (by running the configure script - with the --with-ssl 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 fetch-mail function (default: - G). It allows to connect to pop-host ,fetch all your new mail and place it - in the local $spoolfile. After this point, Mutt-ng runs exactly as if the - mail had always been local. - - Note: 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 configure script - with the --enable-imap 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 configure script - with the --with-ssl 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 - toggle-subscribed command. See also the $imap_list_subscribed variable. - - Polling for new mail on an IMAP server can cause noticeable delays. So, - you'll want to carefully tune the $imap_mail_check and $timeout 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: - - o 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. - - o For the case where an entry can contain both messages and subfolders, - the selection key (bound to enter by default) will choose to descend - into the subfolder view. If you wish to view the messages in that - folder, you must use view-file instead (bound to space by default). - - o You can create, delete and rename mailboxes with the create-mailbox, - delete-mailbox, and rename-mailbox commands (default bindings: C , d - and r, respectively). You may also subscribe and unsubscribe to - mailboxes (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 --with-sasl - 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: - - o $imap_user - 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}). - - o $imap_pass - a password which you may preset, used by all - authentication methods where a password is needed. - - o $imap_authenticators - 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 $nntp_newsrc 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 Message Scoring. - - What has not been discusses in detail is mutt-ng's built-in realname - filter. For may newsreaders including those for ``advanced users'' like - slrn or tin, 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 not matching those - criteria which are very strict: - - o Email addresses must be valid according to RfC 2822 - - o 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. - - o 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 dsn section) as well as handling the 8BITMIME flag - controlled via $use_8bitmime. - - To enable sending mail directly via SMTP without an MTA such as Postfix or - SSMTP and the like, simply set the $smtp_host variable pointing to your - SMTP server. - - Authentication mechanisms are available via the $smtp_user and $smtp_pass - 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 $smtp_use_tls 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 $smtp_envelope 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 account-hook command may help. This hook works like - folder-hook but is invoked whenever you access a remote mailbox (including - inside the folder browser), not just when you open the mailbox. - - 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"' - -18. Start a WWW Browser on URLs (EXTERNAL) - - If a message contains URLs (unified resource locator = address in the WWW - space like http://www.mutt.org/), 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 - -19. Compressed folders Support (OPTIONAL) - - If Mutt-ng was compiled with compressed folders support (by running the - configure script with the --enable-compressed 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. - - The most common use is to open compressed archived folders e.g. with gzip. - - 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. - - There are three hooks defined (open-hook, close-hook and append-hook - )which define commands to uncompress and compress a folder and to append - messages to an existing compressed folder respectively. - - For example: - - open-hook \\.gz$ "gzip -cd %f > %t" - close-hook \\.gz$ "gzip -c %t > %f" - append-hook \\.gz$ "gzip -c %t >> %f" - - You do not have to specify all of the commands. If you omit append-hook - ,the folder will be open and closed again each time you will add to it. If - you omit close-hook (or give empty command) , the folder will be open in - the mode. If you specify append-hook though you'll be able to append to - the folder. - - 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 $save_empty ,so that the compressed - file will be removed if you delete all of the messages. - - 19.1. Open a compressed mailbox for reading - - Usage: open-hookregexp "command" - - The command is the command that can be used for opening the folders whose - names match regexp. - - The command 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. - - %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. - - The command should not remove the original compressed file. The command - should return non-zero exit status if it fails, so mutt knows something's - wrong. - - Example: - - open-hook \\.gz$ "gzip -cd %f > %t" - - If the command is empty, this operation is disabled for this file type. - - 19.2. Write a compressed mailbox - - Usage: close-hookregexp"command" - - This is used to close the folder that was open with the open-hook command - after some changes were made to it. - - The command string is the command that can be used for closing the folders - whose names match regexp. It has the same format as in the open-hook - command. Temporary folder in this case is the folder previously produced - by the open-hook command. - - The command should not remove the decompressed file. The command should - return non-zero exit status if it fails, so mutt knows something's wrong. - - Example: - - close-hook \\.gz$ "gzip -c %t > %f" - - If the command is empty, this operation is disabled for this file type, - and the file can only be open in the readonly mode. - - close-hook is not called when you exit from the folder if the folder was - not changed. - - 19.3. Append a message to a compressed mailbox - - Usage: append-hookregexp"command" - - This command is used for saving to an existing compressed folder. The - command is the command that can be used for appending to the folders whose - names match regexp. It has the same format as in the open-hook command. - The temporary folder in this case contains the messages that are - beingappended. - - The command should not remove the decompressed file. The command should - return non-zero exit status if it fails, so mutt knows something's wrong. - - Example: - - append-hook \\.gz$ "gzip -c %t >> %f" - - When append-hook 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 ($mbox_type )type is always supposed (i.e. this is the format used - for the temporary folder). - - If the file does not exist when you save to it, close-hook is called, and - not append-hook. append-hook is only for appending to existing folders. - - If the command is empty, this operation is disabled for this file type. In - this case, the folder will be open and closed again (using open-hook and - close-hook respectively) each time you will add to it. - - 19.4. Encrypted folders - - 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: - - open-hook \\.pgp$ "pgp -f < %f > %t" - close-hook \\.pgp$ "pgp -fe YourPgpUserIdOrKeyId < %t > %f" - - Please note, that PGP does not support appending to an encrypted folder, - so there is no append-hook defined. - - Note: 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. - -Chapter 5. Mutt-ng's MIME Support - - Table of Contents - - 1. Using MIME in Mutt - - 1.1. Viewing MIME messages in the pager - - 1.2. The Attachment Menu - - 1.3. The Compose Menu - - 2. MIME Type configuration with mime.types - - 3. MIME Viewer configuration with mailcap - - 3.1. The Basics of the mailcap file - - 3.2. Secure use of mailcap - - 3.3. Advanced mailcap Usage - - 3.4. Example mailcap files - - 4. MIME Autoview - - 5. MIME Multipart/Alternative - - 6. Attachment Searching and Counting - - 7. MIME Lookup - - 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 RfC 1524 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/etc/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. Note:Some older versions of lynx contain a bug where - they will check the mailcap file for a viewer for text/html. They will - find the line which calls lynx, and run it. This causes lynx to - continuously spawn itself to view the object. - - 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 $mailcap_sanitize 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: - - Keep the %-expandos away from shell quoting. 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 auto_view, in - order to decide whether it should honor the setting of the - $wait_key variable or not. When an attachment is viewed using an - interactive program, and the corresponding mailcap entry has a - needsterminal flag, Mutt-ng will use $wait_key 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=