From 75254682ac295c8bd39ec01d8e96c5d9b0938682 Mon Sep 17 00:00:00 2001 From: Pierre Habouzit Date: Sat, 28 Oct 2006 00:04:14 +0200 Subject: [PATCH 1/1] remove patchlist things, and more generated and commited things. --- Makefile.am | 36 +- doc/manual.txt | 11209 ----------------------------------------------- doconfig.sh | 1 + main.c | 3 +- patchlist.sh | 20 - protos.h | 1 - 6 files changed, 5 insertions(+), 11265 deletions(-) delete mode 100644 doc/manual.txt delete mode 100755 patchlist.sh diff --git a/Makefile.am b/Makefile.am index 161763b..12c4aa0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -23,7 +23,7 @@ SUBDIRS = m4 po intl doc contrib lib $(IMAP_SUBDIR) $(POP_SUBDIR) $(NNTP_SUBDIR) bin_SCRIPTS = muttngbug fleang -BUILT_SOURCES = keymap_defs.h patchlist.c version.h +BUILT_SOURCES = keymap_defs.h version.h bin_PROGRAMS = muttng @DOTLOCK_TARGET@ @PGPAUX_TARGET@ @SMIMEAUX_TARGET@ muttng_SOURCES = $(BUILT_SOURCES) \ @@ -106,7 +106,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO \ _regex.h OPS.MIX remailer.c remailer.h browser.h state.h \ mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h Muttngrc.head Muttngrc \ makedoc.c stamp-doc-rc README.SSL smime.h\ - muttngbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \ + muttngbug pgppacket.h depcomp ascii.h BEWARE \ mkchangelog.sh cvslog2changelog.pl mutt_idna.h \ snprintf.c regex.c mutt_libesmtp.h crypt-gpgme.h @@ -126,7 +126,7 @@ mutt_dotlock.c: dotlock.c cp $(srcdir)/dotlock.c mutt_dotlock.c CLEANFILES = mutt_dotlock.c stamp-doc-rc makedoc \ - keymap_alldefs.h keymap_defs.h patchlist.c version.h + keymap_alldefs.h keymap_defs.h version.h ACLOCAL_AMFLAGS = -I m4 @@ -158,9 +158,6 @@ version.h: $(srcdir)/VERSION.svn reldate: echo 'const char *ReleaseDate = "'`date +%Y-%m-%d`'";' > $(srcdir)/reldate.h -patchlist.c: $(srcdir)/PATCHES $(srcdir)/patchlist.sh - $(srcdir)/patchlist.sh < $(srcdir)/PATCHES > patchlist.c - install-exec-hook: if test -f $(DESTDIR)$(bindir)/mutt.dotlock && test -f $(DESTDIR)$(bindir)/muttng_dotlock ; then \ rm -f $(DESTDIR)$(bindir)/mutt.dotlock ; \ @@ -186,31 +183,6 @@ install-data-local: Muttngrc fi -# Don't make this one ChangeLog - it's intended to be -# used manually. - -pclean: - cat /dev/null > $(top_srcdir)/PATCHES - -check-security: - (cd $(top_srcdir) && ./check_sec.sh) - -commit-real: - (cd $(top_srcdir) && cvs commit) - -commit-changelog: - (cd $(top_srcdir) && cvs commit -m "# changelog commit" ChangeLog) - -commit: pclean check-security commit-real changelog commit-changelog - -changelog: - (cd $(top_srcdir); \ - cvs update ChangeLog; \ - sh ./mkchangelog.sh | fmt -c | cat - ChangeLog > ChangeLog.$$$$ && mv ChangeLog.$$$$ ChangeLog; \ - $${VISUAL:-vi} ChangeLog) - -ChangeLog: changelog - # kluge around automake problems. dist-hook: @@ -231,5 +203,3 @@ stamp-doc-rc: $(srcdir)/init.h makedoc Muttngrc.head touch stamp-doc-rc -.PHONY: commit pclean check-security commit-real commit-changelog -.PHONY: changelog ChangeLog diff --git a/doc/manual.txt b/doc/manual.txt deleted file mode 100644 index 1da7233..0000000 --- a/doc/manual.txt +++ /dev/null @@ -1,11209 +0,0 @@ - -The Mutt Next Generation E-Mail Client - -Andreas Krennmair - - - -Michael Elkins - - - - version devel-r790 - - _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 - - _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s - - 11..  OOvveerrvviieeww - 22..  MMuutttt--nngg  HHoommee  PPaaggee - 33..  MMaaiilliinngg  LLiissttss - 44..  SSooffttwwaarree  DDiissttrriibbuuttiioonn  SSiitteess - 55..  IIRRCC - 66..  WWeebblloogg - 77..  CCooppyyrriigghhtt - 88..  MMaannuuaall  CCoonnvveennttiioonnss - -1. Overview - - _M_u_t_t_-_n_g is a small but very powerful text-based MIME mail client. - Mutt-ng is highly configurable, and is well suited to the mail power - user with advanced features like key bindings, keyboard macros, mail - threading, regular expression searches and a powerful pattern matching - language for selecting groups of messages. - - This documentation additionally contains documentation to _M_u_t_t_-_N_G ,a - fork from Mutt with the goal to fix all the little annoyances of Mutt, - to integrate all the Mutt patches that are floating around in the web, - and to add other new features. Features specific to Mutt-ng will be - discussed in an extra section. Don't be confused when most of the - documentation talk about Mutt and not Mutt-ng, Mutt-ng contains all - Mutt features, plus many more. - -2. Mutt-ng Home Page - - <> - -3. Mailing Lists - - * : This is where the mutt-ng user - support happens. - * : The development mailing list for - mutt-ng - -4. Software Distribution Sites - - So far, there are no official releases of Mutt-ng, but you can - download daily snapshots from <> - -5. IRC - - Visit channel _#_m_u_t_t_n_g on iirrcc..ffrreeeennooddee..nneett  ((wwwwww..ffrreeeennooddee..nneett)) to chat - with other people interested in Mutt-ng. - -6. Weblog - - If you want to read fresh news about the latest development in - Mutt-ng, and get informed about stuff like interesting, - Mutt-ng-related articles and packages for your favorite distribution, - you can read and/or subscribe to our MMuutttt--nngg  ddeevveellooppmmeenntt  wweebblloogg. - -7. Copyright - - Mutt is Copyright (C) 1996-2000 Michael R. Elkins and - others - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at - your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. - -8. Manual Conventions - - This manual contains several (hopefully consistent) conventions to - specially layout different items in different fashions. - - * Configuration and environment variables will be printed in a - typewriter font and both prefixed with a dollar sign as it's - common for UNIX-like environments. Configuration variables are - lower-case only while environment variables are upper-case only. - $$iimmaapp__mmaaiill__cchheecckk is a configuration variable while $EDITOR is an - environment variable. - * Muttng-specific functions are enclosed in <> and printed in a - typewriter font, too, as in . - * As common for UNIX-like environments, references to manual pages - are printed with the section enclosed in braces, as in vi(1) or - muttngrc(5). Execute man [section] [name] to view the manual page. - * Keys are presented in the following way: ordinary keys are just - given as-is, e.g. q. Control characters are prefixed with C- (e.g. - the screen can be redraw by pressing C-L) and E- for Escape, e.g. - a folder can be opened read-only with E-c. - - If, while reading this fine manual, you find any inconsistencies of - whatever kind, please contact the developers via - to report it. - -Chapter 2. Getting Started - - _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s - - 11..  BBaassiicc  CCoonncceeppttss - - 11..11..  SSccrreeeennss  aanndd  MMeennuuss - 11..22..  CCoonnffiigguurraattiioonn - 11..33..  FFuunnccttiioonnss - 11..44..  IInntteerraaccttiioonn - 11..55..  MMoodduullaarriizzaattiioonn - 11..66..  PPaatttteerrnnss - - 22..  SSccrreeeennss  aanndd  MMeennuuss - - 22..11..  IInnddeexx - 22..22..  PPaaggeerr - 22..33..  FFiillee  BBrroowwsseerr - 22..44..  SSiiddeebbaarr - 22..55..  HHeellpp - 22..66..  CCoommppoossee  MMeennuu - 22..77..  AAlliiaass  MMeennuu - 22..88..  AAttttaacchhmmeenntt  MMeennuu - 22..99..  KKeeyy  MMeennuu - - 33..  MMoovviinngg  AArroouunndd  iinn  MMeennuuss - 44..  EEddiittiinngg  IInnppuutt  FFiieellddss - 55..  RReeaaddiinngg  MMaaiill  --  TThhee  IInnddeexx  aanndd  PPaaggeerr - - 55..11..  TThhee  MMeessssaaggee  IInnddeexx - 55..22..  TThhee  PPaaggeerr - 55..33..  TThhrreeaaddeedd  MMooddee - 55..44..  MMiisscceellllaanneeoouuss  FFuunnccttiioonnss - - 66..  SSeennddiinngg  MMaaiill - - 66..11..  CCoommppoossiinngg  nneeww  mmeessssaaggeess - 66..22..  RReeppllyyiinngg - 66..33..  EEddiittiinngg  tthhee  mmeessssaaggee  hheeaaddeerr - 66..44..  UUssiinngg  MMuutttt--nngg  wwiitthh  PPGGPP - 66..55..  SSeennddiinngg  aannoonnyymmoouuss  mmeessssaaggeess  vviiaa  mmiixxmmaasstteerr - - 77..  FFoorrwwaarrddiinngg  aanndd  BBoouunncciinngg  MMaaiill - 88..  PPoossttppoonniinngg  MMaaiill - -1. Basic Concepts - -1.1. Screens and Menus - - mutt-ng offers different screens of which every has its special - purpose: - - * The _i_n_d_e_x displays the contents of the currently opened mailbox. - * The _p_a_g_e_r is responsible for displaying messages, that is, the - header, the body and all attached parts. - * The _f_i_l_e_ _b_r_o_w_s_e_r offers operations on and displays information of - all folders mutt-ng should watch for mail. - * The _s_i_d_e_b_a_r offers a permanent view of which mailboxes contain how - many total, new and/or flagged mails. - * The _h_e_l_p_ _s_c_r_e_e_n lists for all currently available commands how to - invoke them as well as a short description. - * The _c_o_m_p_o_s_e menu is a comfortable interface take last actions - before sending mail: change subjects, attach files, remove - attachements, etc. - * The _a_t_t_a_c_h_e_m_e_n_t menu gives a summary and the tree structure of the - attachements of the current message. - * The _a_l_i_a_s menu lists all or a fraction of the aliases a user has - defined. - * The _k_e_y menu used in connection with encryption lets users choose - the right key to encrypt with. - - When mutt-ng is started without any further options, it'll open the - users default mailbox and display the index. - -1.2. Configuration - - Mutt-ng does _n_o_t feature an internal configuration interface or menu - due to the simple fact that this would be too complex to handle - (currently there are several _h_u_n_d_r_e_d variables which fine-tune the - behaviour.) - - Mutt-ng is configured using configuration files which allow users to - add comments or manage them via version control systems to ease - maintenance. - - Also, mutt-ng comes with a shell script named grml-muttng kindly - contributed by users which really helps and eases the creation of a - user's configuration file. When downloading the source code via a - snapshot or via subversion, it can be found in the contrib directory. - -1.3. Functions - - Mutt-ng offers great flexibility due to the use of functions: - internally, every action a user can make mutt-ng perform is named - ``function.'' Those functions are assigned to keys (or even key - sequences) and may be completely adjusted to user's needs. The basic - idea is that the impatient users get a very intuitive interface to - start off with and advanced users virtually get no limits to - adjustments. - -1.4. Interaction - - Mutt-ng has two basic concepts of user interaction: - - 1. There is one dedicated line on the screen used to query the user - for input, issue any command, query variables and display error - and informational messages. As for every type of user input, this - requires manual action leading to the need of input. - 2. The automatized interface for interaction are the so called _h_o_o_k_s. - Hooks specify actions the user wants to be performed at - well-defined situations: what to do when entering which folder, - what to do when displaying or replying to what kind of message, - etc. These are optional, i.e. a user doesn't need to specify them - but can do so. - -1.5. Modularization - - Although mutt-ng has many functionality built-in, many features can be - delegated to external tools to increase flexibility: users can define - programs to filter a message through before displaying, users can use - any program they want for displaying a message, message types (such as - PDF or PostScript) for which mutt-ng doesn't have a built-in filter - can be rendered by arbitrary tools and so forth. Although mutt-ng has - an alias mechanism built-in, it features using external tools to query - for nearly every type of addresses from sources like LDAP, databases - or just the list of locally known users. - -1.6. Patterns - - Mutt-ng has a built-in pattern matching ``language'' which is as - widely used as possible to present a consistent interface to users. - The same ``pattern terms'' can be used for searching, scoring, message - selection and much more. - -2. Screens and Menus - -2.1. Index - - The index is the screen that you usually see first when you start - mutt-ng. It gives an overview over your emails in the currently opened - mailbox. By default, this is your system mailbox. The information you - see in the index is a list of emails, each with its number on the - left, its flags (new email, important email, email that has been - forwarded or replied to, tagged email, ...), the date when email was - sent, its sender, the email size, and the subject. Additionally, the - index also shows thread hierarchies: when you reply to an email, and - the other person replies back, you can see the other's person email in - a "sub-tree" below. This is especially useful for personal email - between a group of people or when you've subscribed to mailing lists. - -2.2. Pager - - The pager is responsible for showing the email content. On the top of - the pager you have an overview over the most important email headers - like the sender, the recipient, the subject, and much more - information. How much information you actually see depends on your - configuration, which we'll describe below. - - Below the headers, you see the email body which usually contains the - message. If the email contains any attachments, you will see more - information about them below the email body, or, if the attachments - are text files, you can view them directly in the pager. - - To give the user a good overview, it is possible to configure mutt-ng - to show different things in the pager with different colors. Virtually - everything that can be described with a regular expression can be - colored, e.g. URLs, email addresses or smileys. - -2.3. File Browser - - The file browser is the interface to the local or remote file system. - When selecting a mailbox to open, the browser allows custom sorting of - items, limiting the items shown by a regular expression and a freely - adjustable format of what to display in which way. It also allows for - easy navigation through the file system when selecting file(s) to - attach to a message, select multiple files to attach and many more. - -2.4. Sidebar - - The sidebar comes in handy to manage mails which are spread over - different folders. All folders users setup mutt-ng to watch for new - mail will be listed. The listing includes not only the name but also - the number of total messages, the number of new and flagged messages. - Items with new mail may be colored different from those with flagged - mail, items may be shortened or compress if they're they to long to be - printed in full form so that by abbreviated names, user still now what - the name stands for. - -2.5. Help - - The help screen is meant to offer a quick help to the user. It lists - the current configuration of key bindings and their associated - commands including a short description, and currently unbound - functions that still need to be associated with a key binding (or - alternatively, they can be called via the mutt-ng command prompt). - -2.6. Compose Menu - - The compose menu features a split screen containing the information - which really matter before actually sending a message by mail or - posting an article to a newsgroup: who gets the message as what - (recipient, newsgroup, who gets what kind of copy). Additionally, - users may set security options like deciding whether to sign, encrypt - or sign and encrypt a message with/for what keys. - - Also, it's used to attach messages, news articles or files to a - message, to re-edit any attachment including the message itself. - -2.7. Alias Menu - - The alias menu is used to help users finding the recipients of - messages. For users who need to contact many people, there's no need - to remember addresses or names completely because it allows for - searching, too. The alias mechanism and thus the alias menu also - features grouping several addresses by a shorter nickname, the actual - alias, so that users don't have to select each single recipient - manually. - -2.8. Attachment Menu - - As will be later discussed in detail, mutt-ng features a good and - stable MIME implementation, that is, is greatly supports sending and - receiving messages of arbitrary type. The attachment menu displays a - message's structure in detail: what content parts are attached to - which parent part (which gives a true tree structure), which type is - of what type and what size. Single parts may saved, deleted or - modified to offer great and easy access to message's internals. - -2.9. Key Menu - - FIXME - -3. Moving Around in Menus - - Information is presented in menus, very similar to ELM. Here is a - tableshowing the common keys used to navigate menus in Mutt-ng. - - _T_a_b_l_e_ _2_._1_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _m_o_v_e_m_e_n_t_ _b_i_n_d_i_n_g_s - Key Function Description - j or Down move to the next entry - k or Up move to the previous entry - z or PageDn go to the next page - Z or PageUp go to the previous page - = or Home jump to the first entry - * or End jump to the last entry - q exit the current menu - ? list all key bindings for the current menu - -4. Editing Input Fields - - Mutt-ng has a builtin line editor which is used as the primary way to - input textual data such as email addresses or filenames. The keys used - to move around while editing are very similar to those of Emacs. - - _T_a_b_l_e_ _2_._2_._ _L_i_n_e_ _E_d_i_t_o_r_ _F_u_n_c_t_i_o_n_s - Key Function Description - C-A or Home move to the start of the line - C-B or Left move back one char - E-B move back one word - C-D or Delete delete the char under the cursor - C-E or End move to the end of the line - C-F or Right move forward one char - E-F move forward one word - Tab complete filename or alias - C-T complete address with query - C-K delete to the end of the line - E-d delete to the end of the word - C-W kill the word in front of the cursor - C-U delete entire line - C-V quote the next typed key - Up recall previous string from history - Down recall next string from history - BackSpace kill the char in front of the cursor - E-u convert word to upper case - E-l convert word to lower case - E-c capitalize the word - C-G abort - Return finish editing - - You can remap the _e_d_i_t_o_r functions using the bbiinndd command. For - example, to make the _D_e_l_e_t_e key delete the character in front of the - cursor rather than under, you could use - - bind editor backspace - -5. Reading Mail - The Index and Pager - - Similar to many other mail clients, there are two modes in which mail - isread in Mutt-ng. The first is the index of messages in the mailbox, - which is called the ``index'' in Mutt-ng. The second mode is the - display of the message contents. This is called the ``pager.'' - - The next few sections describe the functions provided in each of these - modes. - -5.1. The Message Index - - _T_a_b_l_e_ _2_._3_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _I_n_d_e_x_ _B_i_n_d_i_n_g_s - Key Function Description - c change to a different mailbox - E-c change to a folder in read-only mode - C copy the current message to another mailbox - E-C decode a message and copy it to a folder - E-s decode a message and save it to a folder - D delete messages matching a pattern - d delete the current message - F mark as important - l show messages matching a pattern - N mark message as new - o change the current sort method - O reverse sort the mailbox - q save changes and exit - s save-message - T tag messages matching a pattern - t toggle the tag on a message - E-t toggle tag on entire message thread - U undelete messages matching a pattern - u undelete-message - v view-attachments - x abort changes and exit - Return display-message - Tab jump to the next new or unread message - @ show the author's full e-mail address - $ save changes to mailbox - / search - E-/ search-reverse - C-L clear and redraw the screen - C-T untag messages matching a pattern - -5.1.1. Status Flags - - In addition to who sent the message and the subject, a short summary - of the disposition of each message is printed beside the message - number. Zero or more of the following ``flags'' may appear, which - mean: - - D - message is deleted (is marked for deletion) - - d - message have attachments marked for deletion - - K - contains a PGP public key - - N - message is new - - O - message is old - - P - message is PGP encrypted - - r - message has been replied to - - S - message is signed, and the signature is succesfully verified - - s - message is signed - - ! - message is flagged - - * - message is tagged - - Some of the status flags can be turned on or off using - * _s_e_t_-_f_l_a_g (default: w) - * _c_l_e_a_r_-_f_l_a_g (default: W) - - Furthermore, the following flags reflect who the message is addressed - to. They can be customized with the $$ttoo__cchhaarrss variable. - - + - message is to you and you only - - T - message is to you, but also to or cc'ed to others - - C - message is cc'ed to you - - F - message is from you - - L - message is sent to a subscribed mailing list - -5.2. The Pager - - By default, Mutt-ng uses its builtin pager to display the body of - messages. The pager is very similar to the Unix program _l_e_s_s though - not nearly as featureful. - - _T_a_b_l_e_ _2_._4_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _P_a_g_e_r_ _B_i_n_d_i_n_g_s - Key Function Description - Return go down one line - Space display the next page (or next message if at the end of a - message) - - go back to the previous page - n search for next match - S skip beyond quoted text - T toggle display of quoted text - ? show key bindings - / search for a regular expression (pattern) - E-/ search backwards for a regular expression - \ toggle search pattern coloring - ^ jump to the top of the message - - In addition, many of the functions from the _i_n_d_e_x are available in the - pager, such as _d_e_l_e_t_e_-_m_e_s_s_a_g_e or _c_o_p_y_-_m_e_s_s_a_g_e (this is one advantage - over using an external pager to view messages). - - Also, the internal pager supports a couple other advanced features. - For one, it will accept and translate the ``standard'' nroff sequences - forbold and underline. These sequences are a series of either the - letter, backspace (C-H), the letter again for bold or the letter, - backspace, _ for denoting underline. Mutt-ng will attempt to display - these in bold and underline respectively if your terminal supports - them. If not, you can use the bold and underline ccoolloorr objects to - specify a color or mono attribute for them. - - Additionally, the internal pager supports the ANSI escape sequences - for character attributes. Mutt-ng translates them into the correct - color and character settings. The sequences Mutt-ng supports are: ESC - [ Ps;Ps;Ps;...;Ps m (see table below for possible values for Ps). - - _T_a_b_l_e_ _2_._5_._ _A_N_S_I_ _E_s_c_a_p_e_ _S_e_q_u_e_n_c_e_s - Value Attribute - 0 All Attributes Off - 1 Bold on - 4 Underline on - 5 Blink on - 7 Reverse video on - 3x Foreground color is x (see table below) - 4x Background color is x (see table below) - - _T_a_b_l_e_ _2_._6_._ _A_N_S_I_ _C_o_l_o_r_s - Number Color - 0 black - 1 red - 2 green - 3 yellow - 4 blue - 5 magenta - 6 cyan - 7 white - - Mutt-ng uses these attributes for handling text/enriched messages, and - they can also be used by an external aauuttoo__vviieeww script for highlighting - purposes. _N_o_t_e_: If you change the colors for your display, for example - by changing the color associated with color2 for your xterm, then that - color will be used instead of green. - -5.3. Threaded Mode - - When the mailbox is ssoorrtteedd by _t_h_r_e_a_d_s ,there are a few additional - functions available in the _i_n_d_e_x and _p_a_g_e_r modes. - - _T_a_b_l_e_ _2_._7_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _t_h_r_e_a_d_-_r_e_l_a_t_e_d_ _b_i_n_d_i_n_g_s - Key Function Description - C-D delete all messages in the current thread - C-U undelete all messages in the current thread - C-N jump to the start of the next thread - C-P jump to the start of the previous thread - C-R mark the current thread as read - E-d delete all messages in the current subthread - E-u undelete all messages in the current - subthread - E-n jump to the start of the next subthread - E-p jump to the start of the previous subthread - E-r mark the current subthread as read - E-t toggle the tag on the current thread - E-v toggle collapse for the current thread - E-V toggle collapse for all threads - P jump to parent message in thread - - _N_o_t_e_: Collapsing a thread displays only the first message in the - thread and hides the others. This is useful when threads contain so - many messages that you can only see a handful of threads onthe screen. - See %M in $$iinnddeexx__ffoorrmmaatt. - - For example, you could use %?M?(#%03M)&(%4l)? in $$iinnddeexx__ffoorrmmaatt to - optionally display the number of hidden messages if the thread is - collapsed. - - See also the $$ssttrriicctt__tthhrreeaaddss variable. - -5.4. Miscellaneous Functions - - (default: a) - - Creates a new alias based upon the current message (or prompts for a - new one). Once editing is complete, an aalliiaass command is added to the - file specified by the $$aalliiaass__ffiillee variable for future use. _N_o_t_e_: - Specifying an $$aalliiaass__ffiillee does not add the aliases specified there-in, - you must also ssoouurrccee the file. - - (default: E-P) - - This function will search the current message for content signed or - encrypted with PGP the "traditional" way, that is, without proper MIME - tagging. Technically, this function will temporarily change the MIME - content types of the body parts containing PGP data; this is similar - to the function's effect. - - (default: h) - - Toggles the weeding of message header fields specified by iiggnnoorree - commands. - - (default: e) - - This command (available in the ``index'' and ``pager'') allows you to - edit the raw current message as it's present in the mail folder. After - you have finished editing, the changed message will be appended to the - current folder, and the original message will be marked for deletion. - - (default: ) (default: C-E on the attachment menu, and in - the pager and index menus; C-T on the compose menu) - - This command is used to temporarily edit an attachment's content type - to fix, for instance, bogus character set parameters. When invoked - from the index or from the pager, you'll have the opportunity to edit - the top-level attachment's content type. On the aattttaacchh--mmeennuu, you can - change any attachment's content type. These changes are not - persistent, and get lost upon changing folders. - - Note that this command is also available on the ccoommppoossee--mmeennuu .There, - it's used to fine-tune the properties of attachments you are going to - send. - - (default: :) - - This command is used to execute any command you would normally put in - a configuration file. A common use is to check the settings of - variables, or in conjunction with mmaaccrroo to change settings on the fly. - - (default: C-K) - - This command extracts PGP public keys from the current or tagged - message(s) and adds them to your PGP public key ring. - - (default: C-F) - - This command wipes the passphrase(s) from memory. It is useful, if you - misspelled the passphrase. - - (default: L) - - Reply to the current or tagged message(s) by extracting any addresses - which match the regular expressions given by the lliissttss commands, but - also honor any Mail-Followup-To header(s) if the $$hhoonnoorr__ffoolllloowwuupp__ttoo - configuration variable is set. Using this when replying to messages - posted to mailing lists helps avoid duplicate copies being sent to the - author of the message you are replying to. - - (default: ) - - Asks for an external Unix command and pipes the current or tagged - message(s) to it. The variables $$ppiippee__ddeeccooddee, $$ppiippee__sspplliitt, - $$ppiippee__ddeeccooddee and $$wwaaiitt__kkeeyy control the exact behavior of this - function. - - (default: E-e) - - With resend-message, mutt takes the current message as a template for - a new message. This function is best described as "recall from - arbitrary folders". It can conveniently be used to forward MIME - messages while preserving the original mail structure. Note that the - amount of headers included here depends on the value of the $$wweeeedd - variable. - - 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 $$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. - - (default: T) - - The _p_a_g_e_r uses the $$qquuoottee__rreeggeexxpp variable to detect quoted text when - displaying the body of the message. This function toggles the - displayof the quoted material in the message. It is particularly - useful when are interested in just the response and there is a large - amount of quoted text in the way. - - (default: S) - - This function will go to the next line of non-quoted text which come - after a line of quoted text in the internal pager. - -6. Sending Mail - - The following bindings are available in the _i_n_d_e_x for sending - messages. - - _T_a_b_l_e_ _2_._8_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _M_a_i_l_ _C_o_m_p_o_s_i_t_i_o_n_ _B_i_n_d_i_n_g_s - Key Function Description - m compose a new message - r reply to sender - g reply to all recipients - L reply to mailing list address - f forward message - b bounce (remail) message - E-k mail a PGP public key to someone - - Bouncing a message sends the message as is to the recipient you - specify. Forwarding a message allows you to add comments or modify the - message you are forwarding. These items are discussed in greater - detail in the next chapter ffoorrwwaarrddiinngg--mmaaiill. - -6.1. Composing new messages - - When you want to send an email using mutt-ng, simply press m on your - keyboard. Then, mutt-ng asks for the recipient via a prompt in the - last line: - -To: - - After you've finished entering the recipient(s), press return. If you - want to send an email to more than one recipient, separate the email - addresses using the comma ",". Mutt-ng then asks you for the email - subject. Again, press return after you've entered it. After that, - mutt-ng got the most important information from you, and starts up an - editor where you can then enter your email. - - The editor that is called is selected in the following way: you can - e.g. set it in the mutt-ng configuration: - -set editor = "vim +/^$/ -c ':set tw=72'" -set editor = "nano" -set editor = "emacs" - - If you don't set your preferred editor in your configuration, mutt-ng - first looks whether the environment variable $VISUAL is set, and if - so, it takes its value as editor command. Otherwise, it has a look at - $EDITOR and takes its value if it is set. If no editor command can be - found, mutt-ng simply assumes vi(1) to be the default editor, since - it's the most widespread editor in the Unix world and it's pretty safe - to assume that it is installed and available. - - When you've finished entering your message, save it and quit your - editor. Mutt-ng will then present you with a summary screen, the - compose menu. On the top, you see a summary of the most important - available key commands. Below that, you see the sender, the - recipient(s), Cc and/or Bcc recipient(s), the subject, the reply-to - address, and optionally information where the sent email will be - stored and whether it should be digitally signed and/or encrypted. - - Below that, you see a list of "attachments". The mail you've just - entered before is also an attachment, but due to its special type - (it's plain text), it will be displayed as the normal message on the - receiver's side. - - At this point, you can add more attachments, pressing a, you can edit - the recipient addresses, pressing t for the "To:" field, c for the - "Cc:" field, and b for the "Bcc: field. You can also edit the subject - the subject by simply pressing s or the email message that you've - entered before by pressing e. You will then again return to the - editor. You can even edit the sender, by pressing f, but this - shall only be used with caution. - - Alternatively, you can configure mutt-ng in a way that most of the - above settings can be edited using the editor. Therefore, you only - need to add the following to your configuration: - -set edit_headers - - Once you have finished editing the body of your mail message, you are - returned to the _c_o_m_p_o_s_e menu. The following options are available: - - _T_a_b_l_e_ _2_._9_._ _M_o_s_t_ _c_o_m_m_o_n_l_y_ _u_s_e_d_ _C_o_m_p_o_s_e_ _M_e_n_u_ _B_i_n_d_i_n_g_s - Key Function Description - a attach a file - A attach message(s) to the message - E-k attach a PGP public key - d edit description on attachment - D detach a file - t edit the To field - E-f edit the From field - r edit the Reply-To field - c edit the Cc field - b edit the Bcc field - y send the message - s edit the Subject - S select S/MIME options - f specify an ``Fcc'' mailbox - p select PGP options - P postpone this message until later - q quit (abort) sending the message - w write the message to a folder - i check spelling (if available on your system) - C-F wipe passphrase(s) from memory - - _N_o_t_e_: The attach-message function will prompt you for a folder to - attach messages from. You can now tag messages in that folder and - theywill be attached to the message you are sending. Note that - certainoperations like composing a new mail, replying, forwarding, - etc. are not permitted when you are in that folder. The %r in - $$ssttaattuuss__ffoorrmmaatt will change to a 'A' to indicate that you are in - attach-message mode. - -6.2. Replying - -6.2.1. Simple Replies - - When you want to reply to an email message, select it in the index - menu and then press r. Mutt-ng's behaviour is then similar to the - behaviour when you compose a message: first, you will be asked for the - recipient, then for the subject, and then, mutt-ng will start the - editor with the quote attribution and the quoted message. This can - e.g. look like the example below. - -On Mon, Mar 07, 2005 at 05:02:12PM +0100, Michael Svensson wrote: -> Bill, can you please send last month's progress report to Mr. -> Morgan? We also urgently need the cost estimation for the new -> production server that we want to set up before our customer's -> project will go live. - - You can start editing the email message. It is strongly recommended to - put your answer _b_e_l_o_w the quoted text and to only quote what is really - necessary and that you refer to. Putting your answer on top of the - quoted message, is, although very widespread, very often not - considered to be a polite way to answer emails. - - The quote attribution is configurable, by default it is set to -set attribution = "On %d, %n wrote:" - - It can also be set to something more compact, e.g. -set attribution = "attribution="* %n <%a> [%(%y-%m-%d %H:%M)]:" - - The example above results in the following attribution: -* Michael Svensson [05-03-06 17:02]: -> Bill, can you please send last month's progress report to Mr. -> Morgan? We also urgently need the cost estimation for the new -> production server that we want to set up before our customer's -> project will go live. - - Generally, try to keep your attribution short yet information-rich. It - is _n_o_t the right place for witty quotes, long "attribution" novels or - anything like that: the right place for such things is - if at all - - the email signature at the very bottom of the message. - - When you're done with writing your message, save and quit the editor. - As before, you will return to the compose menu, which is used in the - same way as before. - -6.2.2. Group Replies - - In the situation where a group of people uses email as a discussion, - most of the emails will have one or more recipients, and probably - several "Cc:" recipients. The group reply functionalityensures that - when you press g instead of r to do a reply, each and every recipient - that is contained in the original message will receive a copy of the - message, either as normal recipient or as "Cc:" recipient. - -6.2.3. List Replies - - When you use mailing lists, it's generally better to send your reply - to a message only to the list instead of the list and the original - author. To make this easy to use, mutt-ng features list replies. - - To do a list reply, simply press L. If the email contains a - Mail-Followup-To: header, its value will be used as reply address. - Otherwise, mutt-ng searches through all mail addresses in the original - message and tries to match them a list of regular expressions which - can be specified using the lists command. If any of the regular - expression matches, a mailing list address has been found, and it will - be used as reply address. - -lists linuxevent@luga\.at vuln-dev@ mutt-ng-users@ - - Nowadays, most mailing list software like GNU Mailman adds a - Mail-Followup-To: header to their emails anyway, so setting lists is - hardly ever necessary in practice. - -6.3. Editing the message header - - When editing the header of your outgoing message, there are a couple - of special features available. - - If you specify Fcc:_f_i_l_e_n_a_m_e Mutt-ng will pick up _f_i_l_e_n_a_m_e just as if - you had used the _e_d_i_t_-_f_c_c function in the _c_o_m_p_o_s_e menu. - - You can also attach files to your message by specifying -Attach: filename [description] - - where _f_i_l_e_n_a_m_e is the file to attach and _d_e_s_c_r_i_p_t_i_o_n is an optional - string to use as the description of the attached file. - - When replying to messages, if you remove the _I_n_-_R_e_p_l_y_-_T_o_: field from - the header field, Mutt-ng will not generate a _R_e_f_e_r_e_n_c_e_s_: field, which - allows you to create a new message thread. - - Also see the $$eeddiitt__hheeaaddeerrss and $$eeddiittoorr__hheeaaddeerrss variables - -6.4. Using Mutt-ng with PGP - - If you want to use PGP, you can specify -Pgp: [E | S | S id] - - ``E'' encrypts, ``S'' signs and ``S'' signs with the given key, - setting $$ppggpp__ssiiggnn__aass permanently. - - If you have told mutt to PGP encrypt a message, it will guide you - through a key selection process when you try to send the message. - Mutt-ng will not ask you any questions about keys which have a - certified user ID matching one of the message recipients' mail - addresses. However, there may be situations in which there are several - keys, weakly certified user ID fields, or where no matching keys can - be found. - - In these cases, you are dropped into a menu with a list of keys from - which you can select one. When you quit this menu, or mutt can't find - any matching keys, you are prompted for a user ID. You can, as - usually, abort this prompt using C-G. When you do so, mutt will return - to the compose screen. - - Once you have successfully finished the key selection, the message - will be encrypted using the selected public keys, and sent out. - - Most fields of the entries in the key selection menu (see also - $$ppggpp__eennttrryy__ffoorrmmaatt) have obvious meanings. But some explanations on the - capabilities, flags, and validity fields are in order. - - The flags sequence (%f) will expand to one of the following flags: - - _T_a_b_l_e_ _2_._1_0_._ _P_G_P_ _K_e_y_ _M_e_n_u_ _F_l_a_g_s - Flag Description - R The key has been revoked and can't be used. - X The key is expired and can't be used. - d You have marked the key as disabled. - c There are unknown critical self-signature packets. - - The capabilities field (%c) expands to a two-character - sequencerepresenting a key's capabilities. The first character gives - the key's encryption capabilities: A minus sign (_- )means that the key - cannot be used for encryption. A dot (_. )means that it's marked as a - signature key in one of the user IDs, but may also be used for - encryption. The letter _e indicates that this key can be used for - encryption. - - The second character indicates the key's signing capabilities. Once - again, a ``_-'' implies ``not for signing'', ``_.'' implies that the key - is marked as an encryption key in one of the user-ids, and ``_s'' - denotes a key which can be used for signing. - - Finally, the validity field (%t) indicates how well-certified a - user-id is. A question mark (_?) indicates undefined validity, a minus - character (_-) marks an untrusted association, a space character means - a partially trusted association, and a plus character (_+ ) indicates - complete validity. - -6.5. Sending anonymous messages via mixmaster - - You may also have configured mutt to co-operate with Mixmaster, an - anonymous remailer. Mixmaster permits you to send your messages - anonymously using a chain of remailers. Mixmaster support in mutt is - for mixmaster version 2.04 (beta 45 appears to be the latest) and - 2.03. It does not support earlier versions or the later so-called - version 3 betas, of which the latest appears to be called 2.9b23. - - To use it, you'll have to obey certain restrictions. Most important, - you cannot use the Cc and Bcc headers. To tell Mutt-ng to use - mixmaster, you have to select a remailer chain, using the mix function - on the compose menu. - - The chain selection screen is divided into two parts. In the (larger) - upper part, you get a list of remailers you may use. In the lower - part, you see the currently selected chain of remailers. - - You can navigate in the chain using the chain-prev and chain-next - functions, which are by default bound to the left and right arrows and - to the h and l keys (think vi keyboard bindings). To insert a remailer - at the current chain position, use the insert function. To append a - remailer behind the current chain position, use select-entry or append - . You can also delete entries from the chain, using the corresponding - function. Finally, to abandon your changes, leave the menu, or accept - them pressing (by default) the Return key. - - Note that different remailers do have different capabilities, - indicated in the %c entry of the remailer menu lines (see - $$mmiixx__eennttrryy__ffoorrmmaatt). Most important is the ``middleman'' capability, - indicated by a capital ``M'': This means that the remailer in question - cannot be used as the final element of a chain, but will only forward - messages to other mixmaster remailers. For details on the other - capabilities, please have a look at the mixmaster documentation. - -7. Forwarding and Bouncing Mail - - Often, it is necessary to forward mails to other people. Therefore, - mutt-ng supports forwarding messages in two different ways. - - The first one is regular forwarding, as you probably know it from - other mail clients. You simply press f, enter the recipient email - address, the subject of the forwarded email, and then you can edit the - message to be forwarded in the editor. The forwarded message is - separated from the rest of the message via the two following markers: - ------ Forwarded message from Lucas User ----- - -From: Lucas User -Date: Thu, 02 Dec 2004 03:08:34 +0100 -To: Michael Random -Subject: Re: blackmail - -Pay me EUR 50,000.- cash or your favorite stuffed animal will die -a horrible death. - ------ End forwarded message ----- - - When you're done with editing the mail, save and quit the editor, and - you will return to the compose menu, the same menu you also encounter - when composing or replying to mails. - - The second mode of forwarding emails with mutt-ng is the so-called - _b_o_u_n_c_i_n_g: when you bounce an email to another address, it will be sent - in practically the same format you send it (except for headers that - are created during transporting the message). To bounce a message, - press b and enter the recipient email address. By default, you are - then asked whether you really want to bounce the message to the - specified recipient. If you answer with yes, the message will then be - bounced. - - To the recipient, the bounced email will look as if he got it like a - regular email where he was Bcc: recipient. The only possibility to - find out whether it was a bounced email is to carefully study the - email headers and to find out which host really sent the email. - -8. Postponing Mail - - At times it is desirable to delay sending a message that you have - already begun to compose. When the _p_o_s_t_p_o_n_e_-_m_e_s_s_a_g_e function is used - in the _c_o_m_p_o_s_e menu, the body of your message and attachments are - stored in the mailbox specified by the $$ppoossttppoonneedd variable. This means - that you can recall the message even if you exit Mutt-ng and then - restart it at a later time. - - Once a message is postponed, there are several ways to resume it. From - the command line you can use the ``-p'' option, or if you _c_o_m_p_o_s_e a - new message from the _i_n_d_e_x or _p_a_g_e_r you will be prompted if postponed - messages exist. If multiple messages are currently postponed, the - _p_o_s_t_p_o_n_e_d menu will pop up and you can select which message you would - like to resume. - - _N_o_t_e_: If you postpone a reply to a message, the reply setting of the - message is only updated when you actually finish the message and send - it. Also, you must be in the same folder with the message you replied - to for the status of the message to be updated. - - See also the $$ppoossttppoonnee quad-option. - -Chapter 3. Configuration - - _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s - - 11..  LLooccaattiioonnss  ooff  CCoonnffiigguurraattiioonn  FFiilleess - 22..  BBaassiicc  SSyynnttaaxx  ooff  IInniittiiaalliizzaattiioonn  FFiilleess - 33..  EExxppaannssiioonn  wwiitthhiinn  vvaarriiaabblleess - - 33..11..  CCoommmmaannddss''  OOuuttppuutt - 33..22..  EEnnvviirroonnmmeenntt  VVaarriiaabblleess - 33..33..  CCoonnffiigguurraattiioonn  VVaarriiaabblleess - 33..44..  SSeellff--DDeeffiinneedd  VVaarriiaabblleess - 33..55..  PPrree--DDeeffiinneedd  VVaarriiaabblleess - 33..66..  TTyyppee  CCoonnvveerrssiioonnss - - 44..  DDeeffiinniinngg//UUssiinngg  aalliiaasseess - 55..  CChhaannggiinngg  tthhee  ddeeffaauulltt  kkeeyy  bbiinnddiinnggss - 66..  DDeeffiinniinngg  aalliiaasseess  ffoorr  cchhaarraacctteerr  sseettss - 77..  SSeettttiinngg  vvaarriiaabblleess  bbaasseedd  uuppoonn  mmaaiillbbooxx - 88..  KKeeyybbooaarrdd  mmaaccrrooss - 99..  UUssiinngg  ccoolloorr  aanndd  mmoonnoo  vviiddeeoo  aattttrriibbuutteess - 1100..  IIggnnoorriinngg  ((wweeeeddiinngg))  uunnwwaanntteedd  mmeessssaaggee  hheeaaddeerrss - 1111..  AAlltteerrnnaattiivvee  aaddddrreesssseess - 1122..  FFoorrmmaatt  ==  FFlloowweedd - - 1122..11..  IInnttrroodduuccttiioonn - 1122..22..  RReecceeiivviinngg::  DDiissppllaayy  SSeettuupp - 1122..33..  SSeennddiinngg - 1122..44..  AAddddiittiioonnaall  NNootteess - - 1133..  MMaaiilliinngg  lliissttss - 1144..  UUssiinngg  MMuullttiippllee  ssppooooll  mmaaiillbbooxxeess - 1155..  DDeeffiinniinngg  mmaaiillbbooxxeess  wwhhiicchh  rreecceeiivvee  mmaaiill - 1166..  UUsseerr  ddeeffiinneedd  hheeaaddeerrss - 1177..  DDeeffiinniinngg  tthhee  oorrddeerr  ooff  hheeaaddeerrss  wwhheenn  vviieewwiinngg  mmeessssaaggeess - 1188..  SSppeecciiffyy  ddeeffaauulltt  ssaavvee  ffiilleennaammee - 1199..  SSppeecciiffyy  ddeeffaauulltt  FFcccc::  mmaaiillbbooxx  wwhheenn  ccoommppoossiinngg - 2200..  SSppeecciiffyy  ddeeffaauulltt  ssaavvee  ffiilleennaammee  aanndd  ddeeffaauulltt  FFcccc::  mmaaiillbbooxx  aatt  oonnccee - 2211..  CChhaannggee  sseettttiinnggss  bbaasseedd  uuppoonn  mmeessssaaggee  rreecciippiieennttss - 2222..  CChhaannggee  sseettttiinnggss  bbeeffoorree  ffoorrmmaattttiinngg  aa  mmeessssaaggee - 2233..  CChhoooossiinngg  tthhee  ccrryyppttooggrraapphhiicc  kkeeyy  ooff  tthhee  rreecciippiieenntt - 2244..  AAddddiinngg  kkeeyy  sseeqquueenncceess  ttoo  tthhee  kkeeyybbooaarrdd  bbuuffffeerr - 2255..  EExxeeccuuttiinngg  ffuunnccttiioonnss - 2266..  MMeessssaaggee  SSccoorriinngg - 2277..  SSppaamm  ddeetteeccttiioonn - 2288..  SSeettttiinngg  vvaarriiaabblleess - 2299..  RReeaaddiinngg  iinniittiiaalliizzaattiioonn  ccoommmmaannddss  ffrroomm  aannootthheerr  ffiillee - 3300..  RReemmoovviinngg  hhooookkss - 3311..  SShhaarriinngg  SSeettuuppss - - 3311..11..  CChhaarraacctteerr  SSeettss - 3311..22..  MMoodduullaarriizzaattiioonn - 3311..33..  CCoonnddiittiioonnaall  ppaarrttss - - 3322..  OObbssoolleettee  VVaarriiaabblleess - -1. Locations of Configuration Files - - While the default configuration (or ``preferences'') make Mutt-ng - usable right out of the box, it is often desirable to tailor Mutt-ng - to suit your own tastes. When Mutt-ng is first invoked, it will - attempt to read the ``system'' configuration file (defaults set by - your local system administrator), unless the ``-n'' ccoommmmaannddlliinnee option - is specified. This file is typically /usr/local/share/muttng/Muttngrc - or /etc/Muttngrc , Mutt-ng users will find this file in - /usr/local/share/muttng/Muttrc or /etc/Muttngrc. Mutt will next look - for a file named .muttrc in your home directory, Mutt-ng will look for - .muttngrc. If this file does not exist and your home directory has a - subdirectory named .mutt , mutt try to load a file named - .muttng/muttngrc. - - .muttrc (or .muttngrc for Mutt-ng) is the file where you will usually - place your ccoommmmaannddss to configure Mutt-ng. - -2. Basic Syntax of Initialization Files - - An initialization file consists of a series of ccoommmmaannddss. Each line of - the file may contain one or more commands. When multiple commands are - used, they must be separated by a semicolon (;). -set realname='Mutt-ng user' ; ignore x- - - The hash mark, or pound sign (``#''), is used as a ``comment'' - character. You can use it to annotate your initialization file. All - text after the comment character to the end of the line is ignored. - For example, - -my_hdr X-Disclaimer: Why are you listening to me? # This is a comment - - Single quotes (') and double quotes (") can be used to quote strings - which contain spaces or other special characters. The difference - between the two types of quotes is similar to that of many popular - shell programs, namely that a single quote is used to specify a - literal string (one that is not interpreted for shell variables or - quoting with a backslash (see next paragraph), while double quotes - indicate a string for which should be evaluated. For example, backtics - are evaluated inside of double quotes, but _n_o_t for single quotes. - - \ quotes the next character, just as in shells such as bash and zsh. - For example, if want to put quotes ``"'' inside of a string, you can - use ``\'' to force the next character to be a literal instead of - interpreted character. -set realname="Michael \"MuttDude\" Elkins" - - ``\\'' means to insert a literal ``\'' into the line. ``\n'' and - ``\r'' have their usual C meanings of linefeed and carriage-return, - respectively. - - A \ at the end of a line can be used to split commands over multiple - lines, provided that the split points don't appear in the middle of - command names. - - Please note that, unlike the various shells, mutt-ng interprets a - ``\'' at the end of a line also in comments. This allows you to - disable a command split over multiple lines with only one ``#''. - -# folder-hook . \ -set realname="Michael \"MuttDude\" Elkins" - - When testing your config files, beware the following caveat. The - backslash at the end of the commented line extends the current line - with the next line - then referred to as a ``continuation line''. As - the first line is commented with a hash (#) all following continuation - lines are also part of a comment and therefore are ignored, too. So - take care of comments when continuation lines are involved within your - setup files! - - Abstract example: - -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 ccoommmmaannddss. - -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 $$rreeccoorrdd variable to the string _+_s_e_n_t___o_n__ and appends the - value of the evironment variable $HOSTNAME. - - _N_o_t_e_: There will be no warning if an environment variable is not - defined. The result will of the expansion will then be empty. - -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 $$iimmaapp__hhoommee__nnaammeessppaaccee to the value to which - $$ffoollddeerr is _c_u_r_r_e_n_t_l_y set to. - - _N_o_t_e_: There're no logical links established in such cases so that the - the value for $$iimmaapp__hhoommee__nnaammeessppaaccee won't change even if $$ffoollddeerr gets - changed. - - _N_o_t_e_: There will be no warning if a configuration variable is not - defined or is empty. The result will of the expansion will then be - empty. - -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. - - _P_l_e_a_s_e_ _c_o_n_s_u_l_t_ _t_h_e_ _l_o_c_a_l_ _c_o_p_y_ _o_f_ _y_o_u_r_ _m_a_n_u_a_l_ _f_o_r_ _t_h_e_i_r_ _v_a_l_u_e_s_ _a_s_ _t_h_e_y - _m_a_y_ _d_i_f_f_e_r_ _f_r_o_m_ _d_i_f_f_e_r_e_n_t_ _m_a_n_u_a_l_ _s_o_u_r_c_e_s_. Where the manual is - installed in can be queried (already using such a variable) by - running: - -$ 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: alias_k_e_y_ _a_d_d_r_e_s_s_ _[_,_ _a_d_d_r_e_s_s_,_._._._] - - 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. - - _N_o_t_e_: if you want to create an alias for a group (by specifying more - than one address), you _m_u_s_t separate the addresses with a comma - (``,''). - - To remove an alias or aliases (``*'' means all aliases): - - Usage: unalias_[_*_ _|_ _k_e_y_ _._._._ _] - -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 ssoouurrccee. 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 $$aalliiaass__ffiillee variable (which is ~/.muttrc by - default). This file is not special either, in the sense that Mutt-ng - will happily append aliases to any file, but in order for the new - aliases to take effect you need to explicitly ssoouurrccee this file too. - - 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 _T_o_: or _C_c_: prompt. You can also - enter aliases in your editor at the appropriate headers if you have - the $$eeddiittoorr__hheeaaddeerrss variable set. - - 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 - _s_e_l_e_c_t_-_e_n_t_r_y key (default: RET), and use the _e_x_i_t key (default: q) to - return to the address prompt. - -5. Changing the default key bindings - - Usage: bind_m_a_p_ _k_e_y_ _f_u_n_c_t_i_o_n - - This command allows you to change the default key bindings (operation - invoked when pressing a key). - - _m_a_p specifies in which menu the binding belongs. Multiple maps may be - specified by separating them with commas (no additional whitespace - isallowed). The currently defined maps are: - - generic - This is not a real menu, but is used as a fallback for all of - the other menus except for the pager and editor modes. If a key - is not defined in another menu, Mutt-ng will look for a binding - to use in this menu. This allows you to bind a key to a certain - function in multiple menus instead of having multiple bind - statements to accomplish the same task. - - alias - The alias menu is the list of your personal aliases as defined - in your muttrc. It is the mapping from a short alias name to - the full email address(es) of the recipient(s). - - attach - The attachment menu is used to access the attachments on - received messages. - - browser - The browser is used for both browsing the local directory - structure, and for listing all of your incoming mailboxes. - - editor - The editor is the line-based editor the user enters text data. - - index - The index is the list of messages contained in a mailbox. - - compose - The compose menu is the screen used when sending a new message. - - pager - The pager is the mode used to display message/attachment data, - and help listings. - - pgp - The pgp menu is used to select the OpenPGP keys used for - encrypting outgoing messages. - - postpone - The postpone menu is similar to the index menu, except is used - when recalling a message the user was composing, but saved - until later. - - _k_e_y is the key (or key sequence) you wish to bind. To specify a - control character, use the sequence _\_C_x, where _x is the letter of the - control character (for example, to specify control-A use ``\Ca''). - Note that the case of _x as well as _\_C is ignored, so that _\_C_A, _\_C_a, - _\_c_A and _\_c_a are all equivalent. An alternative form is to specify the - key as a three digit octal number prefixed with a ``\'' (for example - _\_1_7_7 is equivalent to _\_c_?). - - In addition, _k_e_y may consist of: - - _T_a_b_l_e_ _3_._1_._ _A_l_t_e_r_n_a_t_i_v_e_ _K_e_y_ _N_a_m_e_s - Sequence Description - \t tab - tab - backtab / shift-tab - \r carriage return - \n newline - \e escape - escape - up arrow - down arrow - left arrow - right arrow - Page Up - Page Down - Backspace - Delete - Insert - Enter - Return - Home - End - Space bar - function key 1 - function key 10 - - _k_e_y does not need to be enclosed in quotes unless it contains a space - (`` ''). - - _f_u_n_c_t_i_o_n specifies which action to take when _k_e_y is pressed. For a - complete list of functions, see the ffuunnccttiioonnss. The special function - noop unbinds the specified key sequence. - -6. Defining aliases for character sets - - Usage: cchhaarrsseett--hhooookk_a_l_i_a_s_c_h_a_r_s_e_t - - Usage: iiccoonnvv--hhooookk_c_h_a_r_s_e_t_l_o_c_a_l_-_c_h_a_r_s_e_t - - The cchhaarrsseett--hhooookk command defines an alias for a character set. This is - useful to properly display messages which are tagged with a character - set name not known to mutt. - - The iiccoonnvv--hhooookk command defines a system-specific name for a character - set. This is helpful when your systems character conversion library - insists on using strange, system-specific names for character sets. - -7. Setting variables based upon mailbox - - Usage: ffoollddeerr--hhooookk [!]_r_e_g_e_x_p_c_o_m_m_a_n_d - - It is often desirable to change settings based on which mailbox you - are reading. The ffoollddeerr--hhooookk command provides a method by which you - can execute any configuration command. _r_e_g_e_x_p is a regular expression - specifying in which mailboxes to execute _c_o_m_m_a_n_d before loading. If a - mailbox matches multiple ffoollddeerr--hhooookk's, they are executed in the order - given in the muttrc. - - _N_o_t_e_: if you use the ``!'' shortcut for $$ssppoooollffiillee at the beginning of - the pattern, you must place it inside of double or single quotes in - order to distinguish it from the logical _n_o_t operator for the - expression. - - Note that the settings are _n_o_t restored when you leave the mailbox. - For example, a command action to perform is to change the sorting - methodbased upon the mailbox being read: - -folder-hook mutt set sort=threads - - However, the sorting method is not restored to its previous value when - reading a different mailbox. To specify a _d_e_f_a_u_l_t command, use the - pattern ``.'': - -folder-hook . set sort=date-sent - -8. Keyboard macros - - Usage: macro_m_e_n_u_ _k_e_y_ _s_e_q_u_e_n_c_e_ _[_d_e_s_c_r_i_p_t_i_o_n_] - - Macros are useful when you would like a single key to perform a series - of actions. When you press _k_e_y in menu _m_e_n_u ,Mutt-ng will behave as if - you had typed _s_e_q_u_e_n_c_e. So if you have a common sequence of commands - you type, you can create a macro to execute those commands with a - singlekey. - - _m_e_n_u is the mmaappss which the macro will be bound. Multiple maps may be - specified by separating multiple menu arguments by commas. Whitespace - may not be used in between the menu arguments and thecommas separating - them. - - _k_e_y and _s_e_q_u_e_n_c_e are expanded by the same rules as the bbiinndd. There are - some additions however. The first is that control characters in - _s_e_q_u_e_n_c_e can also be specified as ^x. In order to get a caret (`^'') - you need to specify it twice. Secondly, to specify a certain key such - as _u_p or to invoke a function directly, you can use the format _<_k_e_y - _n_a_m_e_> and _<_f_u_n_c_t_i_o_n_ _n_a_m_e_> .For a listing of key names see the section - on bbiinndd. Functions are listed in the ffuunnccttiioonnss. - - The advantage with using function names directly is that the macros - willwork regardless of the current key bindings, so they are not - dependent on the user having particular key definitions. This makes - them more robustand portable, and also facilitates defining of macros - in files used by more than one user (eg. the system Muttngrc). - - Optionally you can specify a descriptive text after _s_e_q_u_e_n_c_e, which is - shown in the help screens. - - _N_o_t_e_: Macro definitions (if any) listed in the help screen(s), are - silently truncated at the screen width, and are not wrapped. - -9. Using color and mono video attributes - - Usage: color_o_b_j_e_c_t_ _f_o_r_e_g_r_o_u_n_d_ _b_a_c_k_g_r_o_u_n_d_ _[_r_e_g_e_x_p_] - - Usage: color_i_n_d_e_x_ _f_o_r_e_g_r_o_u_n_d_ _p_a_t_t_e_r_n - - Usage: uncolor_i_n_d_e_x_ _p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._] - - If your terminal supports color, you can spice up Mutt-ng by creating - your own color scheme. To define the color of an object (type of - information), you must specify both a foreground color _a_n_d a - background color (it is not possible to only specify one or the - other). - - _o_b_j_e_c_t can be one of: - - * attachment - * body (match _r_e_g_e_x_p in the body of messages) - * bold (highlighting bold patterns in the body of messages) - * error (error messages printed by Mutt-ng) - * header (match _r_e_g_e_x_p in the message header) - * hdrdefault (default color of the message header in the pager) - * index (match _p_a_t_t_e_r_n in the message index) - * indicator (arrow or bar used to indicate the current item in a - menu) - * markers (the ``+'' markers at the beginning of wrapped lines in - the pager) - * message (informational messages) - * normal - * quoted (text matching $$qquuoottee__rreeggeexxpp in the body of a message) - * quoted1, quoted2, ..., quoted_N (higher levels of quoting) - * search (highlighting of words in the pager) - * signature - * status (mode lines used to display info about the mailbox or - message) - * tilde (the ``~'' used to pad blank lines in the pager) - * tree (thread tree drawn in the message index and attachment menu) - * underline (highlighting underlined patterns in the body of - messages) - - _f_o_r_e_g_r_o_u_n_d and _b_a_c_k_g_r_o_u_n_d can be one of the following: - - * white - * black - * green - * magenta - * blue - * cyan - * yellow - * red - * default - * color_x - - _f_o_r_e_g_r_o_u_n_d can optionally be prefixed with the keyword bright to make - the foreground color boldfaced (e.g., brightred). - - If your terminal supports it, the special keyword _d_e_f_a_u_l_t can be used - as a transparent color. The value _b_r_i_g_h_t_d_e_f_a_u_l_t is also valid. If - Mutt-ng is linked against the _S_-_L_a_n_g library, you also need to set the - $COLORFGBG environment variable to the default colors of your terminal - for this to work; for example (for Bourne-like shells): - -set COLORFGBG="green;black" -export COLORFGBG - - _N_o_t_e_: The _S_-_L_a_n_g library requires you to use the _l_i_g_h_t_g_r_a_y and _b_r_o_w_n - keywords instead of _w_h_i_t_e and _y_e_l_l_o_w when setting this variable. - - _N_o_t_e_: The uncolor command can be applied to the index object only. It - removes entries from the list. You _m_u_s_t specify the same pattern - specified in the color command for it to be removed. The pattern ``*'' - is a special token which means to clear the color index list of all - entries. - - Mutt-ng also recognizes the keywords _c_o_l_o_r_0, _c_o_l_o_r_1 ,..., _c_o_l_o_r_N_-_1 (_N - being the number of colors supported by your terminal). This is useful - when you remap the colors for your display (for example by changing - the color associated with _c_o_l_o_r_2 for your xterm), since color names - may then lose their normal meaning. - - If your terminal does not support color, it is still possible change - the video attributes through the use of the ``mono'' command: - - Usage: mono_o_b_j_e_c_t_ _a_t_t_r_i_b_u_t_e_ _[_r_e_g_e_x_p_] - - Usage: mono_i_n_d_e_x_ _a_t_t_r_i_b_u_t_e_ _p_a_t_t_e_r_n - - Usage: unmono_i_n_d_e_x_ _p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._] - - where _a_t_t_r_i_b_u_t_e is one of the following: - - * none - * bold - * underline - * reverse - * standout - -10. Ignoring (weeding) unwanted message headers - - Usage: ignore_p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._] - - Usage: unignore_p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._] - - Messages often have many header fields added by automatic processing - systems, or which may not seem useful to display on the screen. This - command allows you to specify header fields which you don't normally - want to see. - - You do not need to specify the full header field name. For example, - ``ignore content-'' will ignore all header fields that begin with the - pattern ``content-''. ``ignore *'' will ignore all headers. - - To remove a previously added token from the list, use the ``unignore'' - command. The ``unignore'' command will make Mutt-ng display headers - with the given pattern. For example, if you do ``ignore x-'' it is - possible to ``unignore x-mailer''. - - ``unignore *'' will remove all tokens from the ignore list. - - For example: -# Sven's draconian header weeding -ignore * -unignore from date subject to cc -unignore organization organisation x-mailer: x-newsreader: x-mailing-list: -unignore posted-to: - -11. Alternative addresses - - Usage: alternates_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - - Usage: unalternates_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - - With various functions, mutt will treat messages differently, - depending on whether you sent them or whether you received them from - someone else. For instance, when replying to a message that you sent - to a different party, mutt will automatically suggest to send the - response to the original message's recipients--responding to yourself - won't make much sense in many cases. (See $$rreeppllyy__ttoo.) - - 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 _r_e_g_e_x_p . Likewise, if the - _r_e_g_e_x_p for a alternates command matches an entry on the unalternates - list, that unalternates entry will be removed. If the _r_e_g_e_x_p for - unalternates is ``*'', _a_l_l_ _e_n_t_r_i_e_s on alternates will be removed. - -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 _f_o_r_m_a_t_=_f_l_o_w_e_d knows about ``space-stuffing'', that is, - when sending messages, some kinds of lines have to be indented with a - single space on the sending side. On the receiving side, the first - space (if any) is removed. As a consequence and in addition to the - above simple setting, please keep this in mind when making manual - formattings within the editor. Also note that mutt-ng currently - violates the standard (RRffCC  33667766) as it does not space-stuff lines - starting with: - - * > This is _n_o_t 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 $$ddeelleettee__ssppaaccee variable provides the mechanism to - generate a DelSp=yes parameter on _o_u_t_g_o_i_n_g messages. According to the - standard, clients receiving a format=flowed messages should delete the - last space of a flowed line but still interpret the line as flowed. - Because flowed lines usually contain only one space at the end, this - parameter would make the receiving client concatenate the last word of - the previous with the first of the current line _w_i_t_h_o_u_t a space. This - makes ordinary text unreadable and is intended for languages rarely - using spaces. So please use this setting only if you're sure what - you're doing. - -13. Mailing lists - - Usage: lists_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - - Usage: unlists_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - - Usage: subscribe_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - - Usage: unsubscribe_r_e_g_e_x_p_ _[_r_e_g_e_x_p_ _._._._] - - Mutt-ng has a few nice features for uussiinngg--lliissttss. In order to take - advantage of them, you must specify which addresses belong to mailing - lists, and which mailing lists you are subscribed to. Once you have - done this, the lliisstt--rreeppllyy function will work for all known lists. - Additionally, when you send a message to a subscribed list, mutt will - add a Mail-Followup-To header to tell other users' mail user agents - not to send copies of replies to your personal address. Note that the - Mail-Followup-To header is a non-standard extension which is not - supported by all mail user agents. Adding it is not bullet-proof - against receiving personal CCs of list messages. Also note that the - generation of the Mail-Followup-To header is controlled by the - $$ffoolllloowwuupp__ttoo configuration variable. - - 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 _m_u_t_t_-_u_s_e_r_s_@_m_u_t_t_._o_r_g. So, to tell Mutt-ng - that this is a mailing list, you could add ``lists mutt-users'' to - your initialization file. To tell mutt that you are subscribed to it, - add ``subscribe mutt-users'' to your initialization file instead. If - you also happen to get mail from someone whose address is - _m_u_t_t_-_u_s_e_r_s_@_e_x_a_m_p_l_e_._c_o_m, you could use ``lists mutt-users@mutt\\.org'' - or ``subscribe mutt-users@mutt\\.org'' to match only mail from the - actual list. - - 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: mmbbooxx--hhooookk [!]_p_a_t_t_e_r_n_m_a_i_l_b_o_x - - This command is used to move read messages from a specified mailbox to - adifferent mailbox automatically when you quit or change folders. - _p_a_t_t_e_r_n is a regular expression specifying the mailbox to treat as a - ``spool'' mailbox and _m_a_i_l_b_o_x specifies where mail should be saved - when read. - - Unlike some of the other _h_o_o_k commands, only the _f_i_r_s_t matching - pattern is used (it is not possible to save read mail in more than a - single mailbox). - -15. Defining mailboxes which receive mail - - Usage: mailboxes_[_!_]_f_i_l_e_n_a_m_e_ _[_f_i_l_e_n_a_m_e_ _._._._ _] - - Usage: unmailboxes_[_!_]_f_i_l_e_n_a_m_e_ _[_f_i_l_e_n_a_m_e_ _._._._ _] - - 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 _s_p_a_c_e 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. - - _N_o_t_e_: new mail is detected by comparing the last modification time to - the last access time. Utilities like biff or frm or any other program - which accesses the mailbox might cause Mutt-ng to never detect new - mail for that mailbox if they do not properly reset the access time. - Backup tools are another common reason for updated access times. - - _N_o_t_e_: the filenames in the mailboxes command are resolved when the - command is executed, so if these names contain sshhoorrttccuuttss (such as - ``='' and ``!''), any variable definition that affect these characters - (like $$ffoollddeerr and $$ssppoooollffiillee) should be executed before the mailboxes - command. - -16. User defined headers - - Usage: my_hdr_s_t_r_i_n_g - - Usage: unmy_hdr_f_i_e_l_d_ _[_f_i_e_l_d_ _._._._] - - 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. - - _N_o_t_e_: space characters are _n_o_t allowed between the keyword and the - colon (``:''). The standard for electronic mail (RRffCC  882222) says that - space is illegal there, so Mutt-ng enforces the rule. - - If you would like to add a header field to a single message, you - should either set the $$eeddiitt__hheeaaddeerrss variable, or use the _e_d_i_t_-_h_e_a_d_e_r_s - function (default: ``E'') in the send-menu so that you can edit the - header of your message along with the body. - - To 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_order_h_e_a_d_e_r_ _h_e_a_d_e_r_ _[_h_e_a_d_e_r_ _._._._] - - Usage: unhdr_order_[_ _*_ _|_ _h_e_a_d_e_r_ _h_e_a_d_e_r_ _._._._] - - 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: ssaavvee--hhooookk [!]_p_a_t_t_e_r_n_f_i_l_e_n_a_m_e - - This command is used to override the default filename used when saving - messages. _f_i_l_e_n_a_m_e will be used as the default filename if the message - is _F_r_o_m_: an address matching _r_e_g_e_x_p or if you are the author and the - message is addressed _t_o_: something matching _r_e_g_e_x_p . - - See ppaatttteerrnn--hhooookk for information on the exact format of _p_a_t_t_e_r_n. - - Examples: - -save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins -save-hook aol\\.com$ +spam - - Also see the ffcccc--ssaavvee--hhooookk command. - -19. Specify default Fcc: mailbox when composing - - Usage: ffcccc--hhooookk [!]_p_a_t_t_e_r_n_m_a_i_l_b_o_x - - This command is used to save outgoing mail in a mailbox other than - $$rreeccoorrdd. Mutt-ng searches the initial list of message recipients for - the first matching _r_e_g_e_x_p and uses _m_a_i_l_b_o_x as the default Fcc: - mailbox. If no match is found the message will be saved to $$rreeccoorrdd - mailbox. - - See ppaatttteerrnn--hhooookk for information on the exact format of _p_a_t_t_e_r_n. - - 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 ffcccc--ssaavvee--hhooookk - command. - -20. Specify default save filename and default Fcc: mailbox at once - - Usage: ffcccc--ssaavvee--hhooookk [!]_p_a_t_t_e_r_n_m_a_i_l_b_o_x - - This command is a shortcut, equivalent to doing both a ffcccc--hhooookk and a - ssaavvee--hhooookk with its arguments. - -21. Change settings based upon message recipients - - Usage: rreeppllyy--hhooookk [!]_p_a_t_t_e_r_n_c_o_m_m_a_n_d - - Usage: sseenndd--hhooookk [!]_p_a_t_t_e_r_n_c_o_m_m_a_n_d - - Usage: sseenndd22--hhooookk [!]_p_a_t_t_e_r_n_c_o_m_m_a_n_d - - These commands can be used to execute arbitrary configuration commands - based upon recipients of the message. _p_a_t_t_e_r_n is a regular expression - matching the desired address. _c_o_m_m_a_n_d is executed when _r_e_g_e_x_p matches - recipients of the message. - - rreeppllyy--hhooookk is matched against the message you are _r_e_p_l_y_i_n_g _t_o, instead - of the message you are _s_e_n_d_i_n_g .  sseenndd--hhooookk is matched against all - messages, both _n_e_w and _r_e_p_l_i_e_s ._N_o_t_e_:rreeppllyy--hhooookks are matched _b_e_f_o_r_e - the sseenndd--hhooookk, _r_e_g_a_r_d_l_e_s_s of the order specified in the users's - configuration file. - - sseenndd22--hhooookk is matched every time a message is changed, either by - editing it, or by using the compose menu to change its recipients or - subject. sseenndd22--hhooookk is executed after sseenndd--hhooookk ,and can, e.g., be - used to set parameters such as the $$sseennddmmaaiill variable depending on the - message's sender address. - - For each type of sseenndd--hhooookk or rreeppllyy--hhooookk, when multiple matches occur, - commands are executed in the order they are specified in the muttrc - (for that type of hook). - - See ppaatttteerrnn--hhooookk for information on the exact format of _p_a_t_t_e_r_n. - - Example: send-hook mutt "set mime_forward signature=''" - - Another typical use for this command is to change the values of the - $$aattttrriibbuuttiioonn, $$ssiiggnnaattuurree and $$llooccaallee variables in order to change the - language of the attributions and signatures based upon the recipients. - - _N_o_t_e_: the sseenndd--hhooookk's are only executed ONCE after getting the initial - list of recipients. Adding a recipient after replying or editing the - message will NOT cause any sseenndd--hhooookk to be executed. Also note that - my_hdr commands which modify recipient headers, or the message's - subject, don't have any effect on the current message when executed - from a sseenndd--hhooookk. - -22. Change settings before formatting a message - - Usage: mmeessssaaggee--hhooookk [!]_p_a_t_t_e_r_n_c_o_m_m_a_n_d - - This command can be used to execute arbitrary configuration commands - before viewing or formatting a message based upon information about - the message. _c_o_m_m_a_n_d is executed if the _p_a_t_t_e_r_n matches the message to - be displayed. When multiple matches occur, commands are executed in - the order they are specified in the muttrc. - - See ppaatttteerrnn--hhooookk for information on the exact format of _p_a_t_t_e_r_n. - - 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: ccrryypptt--hhooookk_p_a_t_t_e_r_n_k_e_y_i_d - - When encrypting messages with PGP or OpenSSL, you may want to - associate a certain key with a given e-mail address automatically, - either because the recipient's public key can't be deduced from the - destination address, or because, for some reasons, you need to - override the key Mutt-ng wouldnormally use. The ccrryypptt--hhooookk command - provides a method by which you can specify the ID of the public key to - be used when encrypting messages to a certain recipient. - - 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: push_s_t_r_i_n_g - - This command adds the named string to the keyboard buffer. The string - may contain control characters, key names and function names like the - sequence string in the mmaaccrroo command. You may use it to automatically - run a sequence of commands at startup, or when entering certain - folders. For example, the following command will automatically - collapse all threads when entering a folder: -folder-hook . 'push ' - -25. Executing functions - - Usage: exec_f_u_n_c_t_i_o_n_ _[_f_u_n_c_t_i_o_n_ _._._._ _] - - This command can be used to execute any function. Functions are listed - in the ffuunnccttiioonnss. ``exec function'' is equivalent to ``push - ''. - -26. Message Scoring - - Usage: score_p_a_t_t_e_r_n_ _v_a_l_u_e - - Usage: unscore_p_a_t_t_e_r_n_ _[_p_a_t_t_e_r_n_ _._._._ _] - - In situations where you have to cope with a lot of emails, e.g. when - you read many different mailing lists, and take part in discussions, - it is always useful to have the important messages marked and the - annoying messages or the ones that you aren't interested in deleted. - For this purpose, mutt-ng features a mechanism called ``scoring''. - - When you use scoring, every message has a base score of 0. You can - then use the score command to define patterns and a positive or - negative value associated with it. When a pattern matches a message, - the message's score will be raised or lowered by the amount of the - value associated with the pattern. - -score "~f nion@muttng\.org" 50 -score "~f @sco\.com" -100 - - If the pattern matches, it is also possible to set the score value of - the current message to a certain value and then stop evaluation: - -score "~f santaclaus@northpole\.int" =666 - - What is important to note is that negative score values will be - rounded up to 0. - - To make scoring actually useful, the score must be applied in some - way. That's what the _s_c_o_r_e_ _t_h_r_e_s_h_o_l_d_s are for. Currently, there are - three score thresholds: - - * flag threshold: when a message has a score value equal or higher - than the flag threshold, it will be flagged. - * read threshold: when a message has a score value equal or lower - than the read threshold, it will be marked as read. - * delete threshold: when a message has a score value equal or lower - than the delete threshold, it will be marked as deleted. - - These three thresholds can be set via the variables - $$ssccoorree__tthhrreesshhoolldd__rreeaadd, $$ssccoorree__tthhrreesshhoolldd__ffllaagg and - $$ssccoorree__tthhrreesshhoolldd__ddeelleettee. - - By default, $$ssccoorree__tthhrreesshhoolldd__rreeaadd and $$ssccoorree__tthhrreesshhoolldd__ddeelleettee are set - to -1, which means that in the default threshold configuration no - message will ever get marked as read or deleted. - - Scoring gets especially interesting when combined with the color - command and the ~n pattern: - -color index black yellow "~n 10-" -color index red yellow "~n 100-" - - The rules above mark all messages with a score between 10 and 99 with - black and yellow, and messages with a score greater or equal 100 with - red and yellow. This might be unusual to you if you're used to e.g. - slrn's scoring mechanism, but it is more flexible, as it visually - marks different scores. - -27. Spam detection - - Usage: spam_p_a_t_t_e_r_n_ _f_o_r_m_a_t - - Usage: nospam_p_a_t_t_e_r_n - - Mutt-ng has generalized support for external spam-scoring filters. By - defining your spam patterns with the spam and nospam commands, you can - _l_i_m_i_t, _s_e_a_r_c_h, and _s_o_r_t your mail based on its spam attributes, as - determined by the external filter. You also can display the spam - attributes in your index display using the %H selector in the - $$iinnddeexx__ffoorrmmaatt variable. (Tip: try %?H?[%H] ? to display spam tags only - when they are defined for a given message.) - - Your first step is to define your external filter's spam patterns - using the spam command. _p_a_t_t_e_r_n should be a regular expression that - matches a header in a mail message. If any message in the mailbox - matches this regular expression, it will receive a ``spam tag'' or - ``spam attribute'' (unless it also matches a nospam pattern -- see - below.) The appearance of this attribute is entirely up to you, and is - governed by the _f_o_r_m_a_t parameter. _f_o_r_m_a_t can be any static text, but - it also can include back-references from the _p_a_t_t_e_r_n expression. (A - regular expression ``back-reference'' refers to a sub-expression - contained within parentheses.) %1 is replaced with the first - back-reference in the regex, %2 with the second, etc. - - If you're using multiple spam filters, a message can have more than - one spam-related header. You can define spam patterns for each filter - you use. If a message matches two or more of these patterns, and the - $spam_separator variable is set to a string, then the message's spam - tag will consist of all the _f_o_r_m_a_t strings joined together, with the - value of $spam_separator separating them. - - For example, suppose I use DCC, SpamAssassin, and PureMessage. I might - define these spam settings: -spam "X-DCC-.*-Metrics:.*(....)=many" "90+/DCC-%1" -spam "X-Spam-Status: Yes" "90+/SA" -spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM" -set spam_separator=", " - - If I then received a message that DCC registered with ``many'' hits - under the ``Fuz2'' checksum, and that PureMessage registered with a - 97% probability of being spam, that message's spam tag would - read90+/DCC-Fuz2, 97/PM. (The four characters before ``=many'' in a - DCC report indicate the checksum used -- in this case, ``Fuz2''.) - - If the $spam_separator variable is unset, then each spam pattern match - supersedes the previous one. Instead of getting joined _f_o_r_m_a_t strings, - you'll get only the last one to match. - - The spam tag is what will be displayed in the index when you use %H in - the $index_format variable. It's also the string that the ~H - pattern-matching expression matches against for _s_e_a_r_c_h and _l_i_m_i_t - functions. And it's what sorting by spam attribute will use as a sort - key. - - That's a pretty complicated example, and most people's actual - environments will have only one spam filter. The simpler your - configuration, the more effective mutt can be, especially when it - comes to sorting. - - Generally, when you sort by spam tag, mutt will sort _l_e_x_i_c_a_l_l_y -- that - is, by ordering strings alphnumerically. However, if a spam tag begins - with a number, mutt will sort numerically first, and lexically only - when two numbers are equal in value. (This is like UNIX's sort -n.) A - message with no spam attributes at all -- that is, one that didn't - match _a_n_y of your spam patterns -- is sorted at lowest priority. - Numbers are sorted next, beginning with 0 and ranging upward. Finally, - non-numeric strings are sorted, with ``a'' taking lowerpriority than - ``z''. Clearly, in general, sorting by spam tags is most effective - when you can coerce your filter to give you a raw number. But in case - you can't, mutt can still do something useful. - - The nospam command can be used to write exceptions to spam patterns. - If a header pattern matches something in a spam command, but you - nonetheless do not want it to receive a spam tag, you can list amore - precise pattern under a nospam command. - - If the _p_a_t_t_e_r_n given to nospam is exactly the same as the _p_a_t_t_e_r_n on - an existing spam list entry, the effect will be to remove the entry - from the spam list, instead of adding an exception. Likewise, if the - _p_a_t_t_e_r_n for a spam command matches an entry on the nospam list, that - nospam entry will be removed. If the _p_a_t_t_e_r_n for nospam is ``*'', _a_l_l - _e_n_t_r_i_e_s_ _o_n_ _b_o_t_h_ _l_i_s_t_s will be removed. This might be the default - action if you use spam and nospam in conjunction with a ffoollddeerr--hhooookk. - - You can have as many spam or nospam commands as you like. You can even - do your own primitive spam detection within mutt -- for example, if - you consider all mail from MAILER-DAEMON to be spam, you can use a - spam command like this: - -spam "^From: .*MAILER-DAEMON" "999" - -28. Setting variables - - Usage: set_[_n_o_|_i_n_v_]_v_a_r_i_a_b_l_e_ _[_=_v_a_l_u_e_]_ _[_v_a_r_i_a_b_l_e_._._._] - - Usage: toggle_v_a_r_i_a_b_l_e_ _[_v_a_r_i_a_b_l_e_ _._._._] - - Usage: unset_v_a_r_i_a_b_l_e_ _[_v_a_r_i_a_b_l_e_ _._._._] - - Usage: reset_v_a_r_i_a_b_l_e_ _[_v_a_r_i_a_b_l_e_ _._._._] - - This command is used to set (and unset) vvaarriiaabblleess. There are four - basic types of variables: boolean, number, string and quadoption. - _b_o_o_l_e_a_n variables can be _s_e_t (true) or _u_n_s_e_t (false). _n_u_m_b_e_r variables - can be assigned a positive integer value. - - _s_t_r_i_n_g variables consist of any number of printable characters. - _s_t_r_i_n_g_s must be enclosed in quotes if they contain spaces or tabs. You - may also use the ``C'' escape sequences _\_n and _\_t for newline and tab, - respectively. - - _q_u_a_d_o_p_t_i_o_n variables are used to control whether or not to be prompted - for certain actions, or to specify a default action. A value of _y_e_s - will cause the action to be carried out automatically as if you had - answered yes to the question. Similarly, a value of _n_o will cause the - the action to be carried out as if you had answered ``no.'' A value of - _a_s_k_-_y_e_s will cause a prompt with a default answer of ``yes'' and - _a_s_k_-_n_o will provide a default answer of ``no.'' - - Prefixing a variable with ``no'' will unset it. Example: set noaskbcc - . - - For _b_o_o_l_e_a_n variables, you may optionally prefix the variable name - with inv to toggle the value (on or off). This is useful when writing - macros. Example: set invsmart_wrap. - - 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 _i_n_d_e_x menu, you can query the - value of a variable by prefixing the name of the variable with a - question mark: - -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: source_f_i_l_e_n_a_m_e_ _[_f_i_l_e_n_a_m_e_ _._._._] - - 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 _f_i_l_e_n_a_m_e is - considered to be an executable program from which to read input (eg. - source ~/bin/myscript|). - -30. Removing hooks - - Usage: unhook_[_*_ _|_ _h_o_o_k_-_t_y_p_e_] - - 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: - - * a function name - * a variable name - * a menu name - * a feature name - - All available functions, variables and menus are documented elsewhere - in this manual but ``features'' is specific to these two commands. To - test for one, prefix one of the following keywords with feature_: - ncurses, slang, iconv, idn, dotlock, standalone, pop, nntp, imap, ssl, - gnutls, sasl, sasl2, libesmtp, compressed, color, classic_pgp, - classic_smime, gpgme, header_cache - - As an example, one can use the following in ~/.muttngrc: - -ifdef feature_imap 'source ~/.mutt-ng/setup-imap' -ifdef feature_pop 'source ~/.mutt-ng/setup-pop' -ifdef feature_nntp 'source ~/.mutt-ng/setup-nntp' - - ...to only source ~/.mutt-ng/setup-imap if IMAP support is built in, - only source ~/.mutt-ng/setup-pop if POP support is built in and only - source ~/.mutt-ng/setup-nntp if NNTP support is built in. - - An example for testing for variable names can be used if users use - different revisions of mutt-ng whereby the older one may not have a - certain variable. To test for the availability of $$iimmaapp__mmaaiill__cchheecckk - use: - -ifdef imap_mail_check 'set imap_mail_check = 300' - - Provided for completeness is the test for menu names. To set - $$ppaaggeerr__iinnddeexx__lliinneess 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 sseecctt--oobbssoolleettee for a complete list. - -Chapter 4. Advanced Usage - - _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s - - 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 - -1. Regular Expressions - - All string patterns in Mutt-ng including those in more complex - ppaatttteerrnnss must be specified using regular expressions (regexp) in the - ``POSIX extended'' syntax (which is more or less the syntax used by - egrep and GNU awk). For your convenience, we have included below a - brief description of this syntax. - - 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 mmuuttttrrcc--ssyynnttaaxx 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 _n_o_t in the list. For example, the - regular expression _]_0_1_2_3_4_5_6_7_8_9_] matches any single digit. A range of - ASCII characters may be specified by giving the first and last - characters, separated by a hyphen ``-''. Most metacharacters lose - their special meaning inside lists. To include a literal ``]'' place - it first in the list. Similarly, to include a literal ``^'' place it - anywhere but first. Finally, to include a literal hyphen ``-'' place - it last. - - 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, _[_[_:_d_i_g_i_t_:_]_] - 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 _[_[_._c_h_._]_] is a regexp that matches this - collating element, while _[_c_h_] 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. - - _N_o_t_e_: If you compile Mutt-ng with the GNU _r_x package, the following - operators may also be used in regular expressions: - - \\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 ppaatttteerrnnss 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 _a_f_t_e_r 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 _F_o_r_m_a_t_ _S_t_r_i_n_g_s offer great flexibility when configuring - mutt-ng. In short, they describe what items to print out how in menus - and status messages. - - Basically, they work as this: for different menus and bars, there's a - variable specifying the layout. For every item available, there is a - so called _e_x_p_a_n_d_o. - - For example, when running mutt-ng on different machines or different - versions for testing purposes, it may be interesting to have the - following information always printed on screen when one is in the - index: - - * the current hostname - * the current mutt-ng version number - - The setting for the status bar of the index is controlled via the - $$ssttaattuuss__ffoorrmmaatt variable. For the hostname and version string, there's - an expando for $status_format: %h expands to the hostname and %v to - the version string. When just configuring: - -set status_format = "%v on %h: ..." - - mutt-ng will replace the sequence %v with the version string and %h - with the host's name. When you are, for example, running mutt-ng - version 1.5.9i on host mailhost, you'll see the following when you're - in the index: - -Mutt-ng 1.5.9i on mailhost: ... - - In the index, there're more useful information one could want to see: - - * which mailbox is open - * how man new, flagged or postponed messages - * ... - - To include the mailbox' name is as easy as: - -set status_format = "%v on %h: %B: ... - - When the currently opened mailbox is Inbox, this will be expanded to: - -Mutt-ng 1.5.9i on mailhost: Inbox: ... - - For the number of certain types of messages, one more feature of the - format strings is extremely useful. If there aren't messages of a - certain type, it may not be desired to print just that there aren't - any but instead only print something if there are any. - -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 _n_o_n_z_e_r_o_-_p_r_i_n_t_i_n_g and works as this: some - expandos may be optionally printed nonzero, i.e. a portion of the - format string is only evaluated if the value of the expando is - different from zero. The basic syntax is: - -%??? - - which tells mutt-ng to only look at if the value - of the %?&? - - Using this we can make mutt-ng to do the following: - - * make it print ``_n new messages'' whereby _n is the count but only - if there new ones - * and make it print ``no new messages'' if there aren't any - - The corresponding configuration is: - -set status_format = "%v on %h: %B: %?n?%n new messages&no new messages? ... - - This doubles the use of the ``new messages'' string because it'll get - always printed. Thus, it can be shortened to: - -set status_format = "%v on %h: %B: %?n?%n&no? new messages ... - - As you might see from this rather simple example, one can create very - complex but fancy status messages. Please see the reference chapter - for expandos and those which may be printed nonzero. - -3.3. Modifications and Padding - - Besides the information given so far, there're even more features of - format strings: - - * When specifying %_ instead of just %, mutt-ng will - convert all characters in the expansion of to lowercase. - * When specifying %: instead of just %, mutt-ng will - convert all dots in the expansion of to underscores (_). - - Also, there's a feature called _P_a_d_d_i_n_g 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 - ppaatttteerrnnss for Mutt-ng's pattern matching syntax. - - Once you have tagged the desired messages, you can use the - ``tag-prefix'' operator, which is the ``;'' (semicolon) key by - default. When the ``tag-prefix'' operator is used, the _n_e_x_t operation - will be applied to all tagged messages if that operation can be used - in that manner. If the $$aauuttoo__ttaagg variable is set, the next operation - applies to the tagged messages automatically, without requiring the - ``tag-prefix''. - - In mmaaccrroo or ppuusshh commands, you can use the ``tag-prefix-cond'' - operator. If there are no tagged messages, mutt will "eat" the rest of - the macro to abort it's execution.Mutt-ng will stop "eating" the macro - when it encounters the ``end-cond'' operator; after this operator the - rest of the macro will be executed asnormal. - -5. Using Hooks - - A _h_o_o_k is a concept borrowed from the EMACS editor which allows you to - execute arbitrary commands before performing some operation. For - example, you may wish to tailor your configuration based upon which - mailbox you are reading, or to whom you are sending mail. In the - Mutt-ng world, a _h_o_o_k consists of a rreeggeexxpp or ppaatttteerrnnss along with a - configuration option/command. See - * ffoollddeerr--hhooookk - * sseenndd--hhooookk - * mmeessssaaggee--hhooookk - * ssaavvee--hhooookk - * mmbbooxx--hhooookk - * ffcccc--hhooookk - * ffcccc--ssaavvee--hhooookk - - for specific details on each type of _h_o_o_k available. - - _N_o_t_e_: if a hook changes configuration settings, these changes remain - effective until the end of the current mutt session. As this is - generally not desired, a default hook needs to be added before all - other hooks to restore configuration defaults. Here is an example with - sseenndd--hhooookk and the my_hdr directive: - -send-hook . 'unmy_hdr From:' -send-hook '~C ^b@b\.b$' my-hdr from: c@c.c - -5.1. Message Matching in Hooks - - Hooks that act upon messages (  sseenndd--hhooookk, ssaavvee--hhooookk, ffcccc--hhooookk, - mmeessssaaggee--hhooookk )are evaluated in a slightly different manner. For the - other types of hooks, a rreeggeexxpp is sufficient. But in dealing with - messages a finer grain of control is needed for matching since for - different purposes you want to match different criteria. - - Mutt-ng allows the use of the ppaatttteerrnnss language for matching messages - in hook commands. This works in exactly the same way as it would when - _l_i_m_i_t_i_n_g or_s_e_a_r_c_h_i_n_g the mailbox, except that you are restricted to - those operators which match information mutt extracts from the header - of the message (i.e. from, to, cc, date, subject, etc.). - - For example, if you wanted to set your return address based upon - sending mail to a specific address, you could do something like: -send-hook '~t ^me@cs\.hmc\.edu$' 'my-hdr From: Mutt-ng User ' - - which would execute the given command when sending mail to - _m_e_@_c_s_._h_m_c_._e_d_u. - - However, it is not required that you write the pattern to match using - the full searching language. You can still specify a simple _r_e_g_u_l_a_r - _e_x_p_r_e_s_s_i_o_n like the other hooks, in which case Mutt-ng will translate - your pattern into the full language, using the translation specified - by the ddeeffaauulltt--hhooookk variable. The pattern is translated at the time - the hook is declared, so the value of ddeeffaauulltt--hhooookk that is in effect - at that time will be used. - -6. Using the sidebar - - The sidebar, a feature specific to Mutt-ng, allows you to use a - mailbox listing which looks very similar to the ones you probably know - from GUI mail clients. The sidebar lists all specified mailboxes, - shows the number in each and highlights the ones with new email Use - the following configuration commands: -set sidebar_visible="yes" -set sidebar_width=25 - - If you want to specify the mailboxes you can do so with: -set mbox='=INBOX' -mailboxes INBOX \ -MBOX1 \ -MBOX2 \ -... - - You can also specify the colors for mailboxes with new mails by using: -color sidebar_new red black -color sidebar white black - - Reasonable key bindings look e.g. like this: -bind index \Cp sidebar-prev -bind index \Cn sidebar-next -bind index \Cb sidebar-open -bind pager \Cp sidebar-prev -bind pager \Cn sidebar-next -bind pager \Cb sidebar-open - -macro index B ':toggle sidebar_visible^M' -macro pager B ':toggle sidebar_visible^M' - - You can then go up and down by pressing Ctrl-P and Ctrl-N, and switch - on and off the sidebar simply by pressing 'B'. - -7. External Address Queries - - Mutt-ng supports connecting to external directory databases such as - LDAP, ph/qi, bbdb, or NIS through a wrapper script which connects to - mutt using a simple interface. Using the $$qquueerryy__ccoommmmaanndd variable, you - specify the wrapper command to use. For example: - -set query_command = "mutt_ldap_query.pl '%s'" - - The wrapper script should accept the query on the command-line. It - should return a one line message, then each matching response on a - single line, each line containing a tab separated address then name - thensome other optional information. On error, or if there are no - matching addresses, return a non-zero exit code and a one line error - message. - - An example multiple response output: -Searching database ... 20 entries ... 3 matching: -me@cs.hmc.edu Michael Elkins mutt dude -blong@fiction.net Brandon Long mutt and more -roessler@guug.de Thomas Roessler mutt pgp - - There are two mechanisms for accessing the query function of mutt. One - is to do a query from the index menu using the query function - (default: Q). This will prompt for a query, then bring up the query - menu which will list the matching responses. From the query menu, you - can select addresses to create aliases, or to mail. You can tag - multiple addressesto mail, start a new query, or have a new query - appended to the current responses. - - The other mechanism for accessing the query function is for address - completion, similar to the alias completion. In any prompt for address - entry, you can use the complete-query function (default: ^T) to run a - query based on the current address you have typed. Like aliases, mutt - will look for what you have typed back to the last space or comma. If - there is a single response for that query, mutt will expand the - address in place. If there are multiple responses, mutt will activate - the querymenu. At the query menu, you can select one or more addresses - to be added to the prompt. - -8. Mailbox Formats - - Mutt-ng supports reading and writing of four different mailbox - formats: mbox, MMDF, MH and Maildir. The mailbox type is autodetected, - so there is no need to use a flag for different mailbox types. When - creating newmailboxes, Mutt-ng uses the default specified with the - $$mmbbooxx__ttyyppee variable. - - _m_b_o_x. This is the most widely used mailbox format for UNIX. All - messages are stored in a single file. Each message has a line of the - form: - -From me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST - - to denote the start of a new message (this is often referred to as the - ``From_'' line). - - _M_M_D_F. This is a variant of the _m_b_o_x format. Each message is surrounded - by lines containing ``^A^A^A^A'' (four control-A's). - - _M_H. A radical departure from _m_b_o_x and _M_M_D_F, a mailbox consists of a - directory and each message is stored in a separate file. The filename - indicates the message number (however, this is may not correspond to - the message number Mutt-ng displays). Deleted messages arerenamed with - a comma (,) prepended to the filename. _N_o_t_e_: Mutt detects this type of - mailbox by looking for either .mh_sequences or .xmhcache (needed to - distinguish normal directories from MH mailboxes). - - _M_a_i_l_d_i_r. The newest of the mailbox formats, used by the Qmail MTA (a - replacement for sendmail). Similar to _M_H, except that it adds three - subdirectories of the mailbox: _t_m_p, _n_e_w and _c_u_r .Filenames for the - messages are chosen in such a way they are unique, even when - twoprograms are writing the mailbox over NFS, which means that no file - locking is needed. - -9. Mailbox Shortcuts - - There are a number of built in shortcuts which refer to specific - mailboxes. These shortcuts can be used anywhere you are prompted for a - file or mailbox path. - - * ! -- refers to your $$ssppoooollffiillee (incoming) mailbox - * > -- refers to your $$mmbbooxx file - * < -- refers to your $$rreeccoorrdd file - * ^ -- refers to the current mailbox - * - or !! -- refers to the file you've last visited - * ~ -- refers to your home directory - * = or + -- refers to your $$ffoollddeerr directory - * @_a_l_i_a_s -- refers to the ssaavvee--hhooookk as determined by the address of - the alias - -10. Handling Mailing Lists - - Mutt-ng has a few configuration options that make dealing with large - amounts of mail easier. The first thing you must do is to let Mutt - know what addresses you consider to be mailing lists (technically this - does not have to be a mailing list, but that is what it is most often - used for), and what lists you are subscribed to. This is accomplished - through the use of the lliissttss commands in your muttrc. - - Now that Mutt-ng knows what your mailing lists are, it can do several - things, the first of which is the ability to show the name of a list - through which you received a message (i.e., of a subscribed list) in - the _i_n_d_e_x menu display. This is useful to distinguish between personal - and list mail in the same mailbox. In the $$iinnddeexx__ffoorrmmaatt variable, the - escape ``%L'' will return the string ``To '' when ``list'' - appears in the ``To'' field, and ``Cc '' when it appears in the - ``Cc'' field (otherwise it returns the name of the author). - - Often times the ``To'' and ``Cc'' fields in mailing list messages tend - to get quite large. Most people do not bother to remove the author of - the message they are reply to from the list, resulting in two or more - copies being sent to that person. The ``list-reply'' function, which - by default is bound to ``L'' in the _i_n_d_e_x menu and _p_a_g_e_r, helps reduce - the clutter by only replying to the known mailing list addresses - instead of all recipients (except as specified by Mail-Followup-To, - see below). - - Mutt-ng also supports the Mail-Followup-To header. When you send a - message to a list of recipients which includes one or several - subscribed mailing lists, and if the $$ffoolllloowwuupp__ttoo option is set, mutt - will generate a Mail-Followup-To header which contains all the - recipients to whom you send this message, but not your address. This - indicates that group-replies or list-replies (also known as - ``followups'') to this message should only be sent to the original - recipients of the message, and not separately to you - you'll receive - your copy through one of the mailing lists you are subscribed to. - - Conversely, when group-replying or list-replying to a message which - has a Mail-Followup-To header, mutt will respect this header if the - $$hhoonnoorr__ffoolllloowwuupp__ttoo configuration variable is set. Using list-reply - will in this case also make sure that the reply goes to the mailing - list, even if it's not specified in the list of recipients in the - Mail-Followup-To. - - Note that, when header editing is enabled, you can create a - Mail-Followup-To header manually. Mutt-ng will only auto-generate this - header if it doesn't exist when you send the message. - - The other method some mailing list admins use is to generate a - ``Reply-To'' field which points back to the mailing list address - rather than the author of the message. This can create problems when - trying to reply directly to the author in private, since most mail - clients will automatically reply to the address given in the - ``Reply-To'' field. Mutt-ng uses the $$rreeppllyy__ttoo variable to help decide - which address to use. If set to _a_s_k_-_y_e_s or _a_s_k_-_n_o, you will be - prompted as to whether or not you would like to use the address given - inthe ``Reply-To'' field, or reply directly to the address given in - the ``From'' field. When set to _y_e_s, the ``Reply-To'' field will be - used when present. - - The ``X-Label:'' header field can be used to further identify mailing - lists or list subject matter (or just to annotate messages - individually). The $$iinnddeexx__ffoorrmmaatt variable's ``%y'' and ``%Y'' escapes - can be used to expand ``X-Label:'' fields in the index, and Mutt-ng's - pattern-matcher can match regular expressions to ``X-Label:'' fields - with the ``~y'' selector. ``X-Label:'' is not a standard message - header field, but it can easily be inserted by procmailand other mail - filtering agents. - - Lastly, Mutt-ng has the ability to ssoorrtt the mailbox into tthhrreeaaddss. A - thread is a group of messages which all relate to the same subject. - This is usually organized into a tree-like structure where a message - and all of its replies are represented graphically. If you've ever - used a threaded news client, this is the same concept. It makes - dealingwith large volume mailing lists easier because you can easily - delete uninteresting threads and quickly find topics of value. - -11. Editing threads - - Mutt-ng has the ability to dynamically restructure threads that are - broken either by misconfigured software or bad behavior from some - correspondents. This allows to clean your mailboxes formats) from - these annoyances which make it hard to follow a discussion. - -11.1. Linking threads - - Some mailers tend to "forget" to correctly set the "In-Reply-To:" and - "References:" headers when replying to a message. This results in - broken discussions because Mutt-ng has not enough information to guess - the correct threading. You can fix this by tagging the reply, then - moving to the parent message and using the ``link-threads'' function - (bound to & by default). The reply will then be connected to this - "parent" message. - - You can also connect multiple children at once, tagging them and using - the tag-prefix command (';') or the auto_tag option. - -11.2. Breaking threads - - On mailing lists, some people are in the bad habit of starting a new - discussion by hitting "reply" to any message from the list and - changing the subject to a totally unrelated one. You can fix such - threads by using the ``break-thread'' function (boundby default to #), - which will turn the subthread starting from the current message into a - whole different thread. - -12. Delivery Status Notification (DSN) Support - - RRffCC  11889944 defines a set of MIME content types for relaying information - about the status of electronic mail messages. These can be thought of - as ``return receipts.'' - - Users can make use of it in one of the following two ways: - - * Berkeley sendmail 8.8.x currently has some command line options in - which the mail client can make requests as to what type of status - messages should be returned. - * The SMTP support via libESMTP supports it, too. - - To support this, there are two variables: - - * $$ddssnn__nnoottiiffyy is used to request receipts for different results - (such as failed message,message delivered, etc.). - * $$ddssnn__rreettuurrnn requests how much of your message should be returned - with the receipt (headers or full message). - - Please see the reference chapter for possible values. - -13. POP3 Support (OPTIONAL) - - If Mutt-ng was compiled with POP3 support (by running the _c_o_n_f_i_g_u_r_e - script with the _-_-_e_n_a_b_l_e_-_p_o_p flag), it has the ability to work with - mailboxes located on a remote POP3 server and fetch mail for local - browsing. - - You can access the remote POP3 mailbox by selecting the folder - pop://popserver/. - - You can select an alternative port by specifying it with the server, - i.e.: pop://popserver:port/. - - You can also specify different username for each folder, i.e.: - pop://username@popserver[:port]/. - - Polling for new mail is more expensive over POP3 than locally. For - this reason the frequency at which Mutt-ng will check for mail - remotely can be controlled by the $$ppoopp__mmaaiill__cchheecckk variable, which - defaults to every 60 seconds. - - If Mutt-ng was compiled with SSL support (by running the _c_o_n_f_i_g_u_r_e - script with the _-_-_w_i_t_h_-_s_s_l flag), connections to POP3 servers can be - encrypted. This naturally requires that the server supports SSL - encrypted connections. To access a folder with POP3/SSL, you should - use pops: prefix, ie: pops://[username@]popserver[:port]/. - - Another way to access your POP3 mail is the _f_e_t_c_h_-_m_a_i_l function - (default: G). It allows to connect to ppoopp--hhoosstt ,fetch all your new - mail and place it in the local $$ssppoooollffiillee. After this point, Mutt-ng - runs exactly as if the mail had always been local. - - _N_o_t_e_: If you only need to fetch all messages to local mailbox you - should consider using a specialized program, such as fetchmail(1). - -14. IMAP Support (OPTIONAL) - - If Mutt-ng was compiled with IMAP support (by running the _c_o_n_f_i_g_u_r_e - script with the _-_-_e_n_a_b_l_e_-_i_m_a_p flag), it has the ability to work with - folders located on a remote IMAP server. - - You can access the remote inbox by selecting the folder via its URL: - -imap://imapserver/INBOX - - where imapserver is the name of the IMAP server and INBOX is the - special name for your spool mailbox on the IMAP server. If you want to - access another mail folder at the IMAP server, you should use - -imap://imapserver/path/to/folder - - where path/to/folder is the path of the folder you want to access. You - can select an alternative port by specifying it with the server, i.e.: - -imap://imapserver:port/INBOX - - You can also specify different username for each folder by prenpending - your username and an @ symbol to the server's name. - - If Mutt-ng was compiled with SSL support (by running the _c_o_n_f_i_g_u_r_e - script with the _-_-_w_i_t_h_-_s_s_l flag), connections to IMAP servers can be - encrypted. This naturally requires that the server supports SSL - encrypted connections. To access a folder with IMAP/SSL, you only need - to substitute the initial imap:// by imaps:// in the above examples. - - Note that not all servers use / as the hierarchy separator. Mutt-ng - should correctly notice which separator is being used by the server - and convertpaths accordingly. - - When browsing folders on an IMAP server, you can toggle whether to - look at only the folders you are subscribed to, or all folders with - the _t_o_g_g_l_e_-_s_u_b_s_c_r_i_b_e_d command. See also the $$iimmaapp__lliisstt__ssuubbssccrriibbeedd - variable. - - Polling for new mail on an IMAP server can cause noticeable delays. - So, you'll want to carefully tune the $$iimmaapp__mmaaiill__cchheecckk and $$ttiimmeeoouutt - variables. - - Note that if you are using mbox as the mail store on UW servers prior - tov12.250, the server has been reported to disconnect a client if - another client selects the same folder. - -14.1. The Folder Browser - - As of version 1.2, mutt supports browsing mailboxes on an IMAP server. - This is mostly the same as the local file browser, with the following - differences: - * Instead of file permissions, mutt displays the string "IMAP", - possibly followed by the symbol "+", indicating that the entry - contains both messages and subfolders. On Cyrus-like servers - folders will often contain both messages and subfolders. - * For the case where an entry can contain both messages and - subfolders, the selection key (bound to enter by default) will - choose to descend into the subfolder view. If you wish to view the - messages in that folder, you must use view-file instead (bound to - space by default). - * You can create, delete and rename mailboxes with the - create-mailbox, delete-mailbox, and rename-mailbox commands - (default bindings: C , d and r, respectively). You may also - subscribe and unsubscribe to mailboxes (normally these are bound - to s and u, respectively). - -14.2. Authentication - - Mutt-ng supports four authentication methods with IMAP servers: SASL, - GSSAPI, CRAM-MD5, and LOGIN (there is a patch by Grant Edwards to add - NTLM authentication for you poor exchange users out there, but it has - yet to be integrated into the main tree). There is also support for - the pseudo-protocol ANONYMOUS, which allows you to log in to a public - IMAP server without having an account. To use ANONYMOUS, simply make - your username blank or "anonymous". - - SASL is a special super-authenticator, which selects among several - protocols (including GSSAPI, CRAM-MD5, ANONYMOUS, and DIGEST-MD5) the - most secure method available on your host and the server. Using some - of these methods (including DIGEST-MD5 and possibly GSSAPI), your - entire session will be encrypted and invisible to those teeming - network snoops. It is the best option if you have it. To use it, you - must have the Cyrus SASL libraryinstalled on your system and compile - mutt with the _-_-_w_i_t_h_-_s_a_s_l flag. - - Mutt-ng will try whichever methods are compiled in and available on - the server, in the following order: SASL, ANONYMOUS, GSSAPI, CRAM-MD5, - LOGIN. - - There are a few variables which control authentication: - * $$iimmaapp__uusseerr - controls the username under which you request - authentication on the IMAP server, for all authenticators. This is - overridden by an explicit username in the mailbox path (i.e. by - using a mailbox name of the form {user@host}). - * $$iimmaapp__ppaassss - a password which you may preset, used by all - authentication methods where a password is needed. - * $$iimmaapp__aauutthheennttiiccaattoorrss - a colon-delimited list of IMAP - authentication methods to try, in the order you wish to try them. - If specified, this overrides mutt's default (attempt everything, - in the order listed above). - -15. NNTP Support (OPTIONAL) - - If compiled with ``--enable-nntp'' option, Mutt-ng can read news from - a newsserver via NNTP. You can open a newsgroup with the - ``change-newsgroup'' function from the index/pager which is by default - bound to i. - - The Default newsserver can be obtained from the $NNTPSERVER - environment variable. Like other news readers, info about subscribed - newsgroups is saved in a file as specified by the $$nnnnttpp__nneewwssrrcc - variable. Article headers are cached and can be loaded from a file - when a newsgroup is entered instead loading from newsserver; - currently, this caching mechanism still is different from the header - caching for maildir/IMAP. - -15.1. Again: Scoring - - Especially for Usenet, people often ask for advanced filtering and - scoring functionality. Of course, mutt-ng has scoring and allows a - killfile, too. How to use a killfile has been discussed in MMeessssaaggee - SSccoorriinngg. - - What has not been discusses in detail is mutt-ng's built-in realname - filter. For may newsreaders including those for ``advanced users'' - like _s_l_r_n or _t_i_n, there are frequent request for such functionality. - The solutions offered often are complicated regular expressions. - - In mutt-ng this is as easy as - -score ~* =42 - - This tells mutt-ng to apply a score of 42 to all messages whose sender - specified a valid realname and a valid email address. Using - -score !~* =42 - - on the contrary applies a score of 42 to all messages _n_o_t matching - those criteria which are very strict: - - * Email addresses must be valid according to RRffCC  22882222 - * the name must consist of at least 2 fields whereby a field must - not end in a dot. This means that ``Joe User'' and ``Joe A.User'' - are valid while ``J. User'' and ``J. A. User'' aren't. - * it's assumed that users are interested in reading their own mail - and mail from people who they have defined an alias forso that - those 2 groups of messages are excluded from the strict rules. - -16. SMTP Support (OPTIONAL) - - Mutt-ng can be built using a library called ``libESMTP'' which - provides SMTP functionality. When configure was called with - --with-libesmtp or the output muttng -v contains +USE_LIBESMTP, this - will be or is the case already. The SMTP support includes support for - Delivery Status Notification (see ddssnn section) as well as handling the - 8BITMIME flag controlled via $$uussee__88bbiittmmiimmee. - - To enable sending mail directly via SMTP without an MTA such as - Postfix or SSMTP and the like, simply set the $$ssmmttpp__hhoosstt variable - pointing to your SMTP server. - - Authentication mechanisms are available via the $$ssmmttpp__uusseerr and - $$ssmmttpp__ppaassss variables. - - Transport Encryption via the StartTLS command is also available. For - this to work, first of all Mutt-ng must be built with SSL or GNUTLS. - Secondly, the $$ssmmttpp__uussee__ttllss variable must be either set to ``enabled'' - or ``required.'' In both cases, StartTLS will be used if the server - supports it: for the second case, the connection will fail ifit - doesn't while switching back to unencrypted communication for the - first one. - - Some mail providers require user's to set a particular envelope - sender, i.e. they allow for only one value which may not be what the - user wants to send as the From: header. In this case, the variable - $$ssmmttpp__eennvveellooppee may be used to set the envelope different from the - From: header. - -17. Managing multiple IMAP/POP/NNTP accounts (OPTIONAL) - - If you happen to have accounts on multiple IMAP and/or POP servers, - you may find managing all the authentication settings inconvenient and - error-prone. The aaccccoouunntt--hhooookk command may help. This hook works like - ffoollddeerr--hhooookk but is invoked whenever you access a remote mailbox - (including inside the folder browser), not just when you open the - mailbox. - - Some examples: - -account-hook . 'unset imap_user; unset imap_pass; unset tunnel' -account-hook imap://host1/ 'set imap_user=me1 imap_pass=foo' -account-hook imap://host2/ 'set tunnel="ssh host2 /usr/libexec/imapd"' - -18. Start a WWW Browser on URLs (EXTERNAL) - - If a message contains URLs (_u_n_i_f_i_e_d_ _r_e_s_o_u_r_c_e_ _l_o_c_a_t_o_r = address in the - WWW space like _h_t_t_p_:_/_/_w_w_w_._m_u_t_t_._o_r_g_/), it is efficient to get a menu - with all the URLs and start a WWW browser on one of them. This - functionality is provided by the external urlview program which can be - retrieved at <> and the configuration - commands: -macro index \cb |urlview\n -macro pager \cb |urlview\n - -19. Compressed folders Support (OPTIONAL) - - If Mutt-ng was compiled with compressed folders support (by running - the _c_o_n_f_i_g_u_r_e script with the _-_-_e_n_a_b_l_e_-_c_o_m_p_r_e_s_s_e_d flag), Mutt can open - folders stored in an arbitrary format, provided that the user has a - script to convert from/to this format to one of the accepted. - - 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 (ooppeenn--hhooookk, cclloossee--hhooookk and aappppeenndd--hhooookk - )which define commands to uncompress and compress a folder and to - append messages to an existing compressed folder respectively. - - 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 - aappppeenndd--hhooookk ,the folder will be open and closed again each time you - will add to it. If you omit cclloossee--hhooookk (or give empty command) , the - folder will be open in the mode. If you specify aappppeenndd--hhooookk though - you'll be able to append to the folder. - - Note that Mutt-ng will only try to use hooks if the file is not in one - of the accepted formats. In particular, if the file is empty, mutt - supposes it is not compressed. This is important because it allows the - use of programs that do not have well defined extensions. Just use "." - as a regexp. But this may be surprising if your compressing script - produces empty files. In this situation, unset $$ssaavvee__eemmppttyy ,so that - the compressed file will be removed if you delete all of the messages. - -19.1. Open a compressed mailbox for reading - - Usage: ooppeenn--hhooookk_r_e_g_e_x_p "_c_o_m_m_a_n_d" - - The _c_o_m_m_a_n_d is the command that can be used for opening the folders - whose names match _r_e_g_e_x_p. - - The _c_o_m_m_a_n_d string is the printf-like format string, and it should - accept two parameters: %f, which is replaced with the (compressed) - folder name, and %t which is replaced with the name of the temporary - folder to which to write. - - %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 _c_o_m_m_a_n_d should _n_o_t remove the original compressed file. The - _c_o_m_m_a_n_d should return non-zero exit status if it fails, so mutt knows - something's wrong. - - Example: - -open-hook \\.gz$ "gzip -cd %f > %t" - - If the _c_o_m_m_a_n_d is empty, this operation is disabled for this file - type. - -19.2. Write a compressed mailbox - - Usage: cclloossee--hhooookk_r_e_g_e_x_p"_c_o_m_m_a_n_d" - - This is used to close the folder that was open with the ooppeenn--hhooookk - command after some changes were made to it. - - The _c_o_m_m_a_n_d string is the command that can be used for closing the - folders whose names match _r_e_g_e_x_p. It has the same format as in the - ooppeenn--hhooookk command. Temporary folder in this case is the folder - previously produced by the ooppeenn--hhooookk command. - - The _c_o_m_m_a_n_d should _n_o_t remove the decompressed file. The _c_o_m_m_a_n_d - should return non-zero exit status if it fails, so mutt knows - something's wrong. - - Example: - -close-hook \\.gz$ "gzip -c %t > %f" - - If the _c_o_m_m_a_n_d is empty, this operation is disabled for this file - type, and the file can only be open in the readonly mode. - - cclloossee--hhooookk 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: aappppeenndd--hhooookk_r_e_g_e_x_p"_c_o_m_m_a_n_d" - - This command is used for saving to an existing compressed folder. The - _c_o_m_m_a_n_d is the command that can be used for appending to the folders - whose names match _r_e_g_e_x_p. It has the same format as in the ooppeenn--hhooookk - command. The temporary folder in this case contains the messages that - are beingappended. - - The _c_o_m_m_a_n_d should _n_o_t remove the decompressed file. The _c_o_m_m_a_n_d - should return non-zero exit status if it fails, so mutt knows - something's wrong. - - Example: - -append-hook \\.gz$ "gzip -c %t >> %f" - - When aappppeenndd--hhooookk is used, the folder is not opened, which saves time, - but this means that we can not find out what the folder type is. Thus - the default ($$mmbbooxx__ttyyppee )type is always supposed (i.e. this is the - format used for the temporary folder). - - If the file does not exist when you save to it, cclloossee--hhooookk is called, - and not aappppeenndd--hhooookk. aappppeenndd--hhooookk is only for appending to existing - folders. - - If the _c_o_m_m_a_n_d is empty, this operation is disabled for this file - type. In this case, the folder will be open and closed again (using - ooppeenn--hhooookk and cclloossee--hhooookk respectively) each time you will add to it. - -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 aappppeenndd--hhooookk defined. - - _N_o_t_e_: the folder is temporary stored decrypted in the /tmp directory, - where it can be read by your system administrator. So thinkabout the - security aspects of this. - -Chapter 5. Mutt-ng's MIME Support - - _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s - - 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 - - Quite a bit of effort has been made to make Mutt-ng the premier - text-mode MIME MUA. Every effort has been made to provide the - functionality that the discerning MIME user requires, and the - conformance to the standards wherever possible. When configuring - Mutt-ng for MIME, there are two extratypes of configuration files - which Mutt-ng uses. One is the mime.types file, which contains the - mapping of file extensions to IANA MIME types. The other is the - mailcap file, which specifies the external commands to use for - handling specific MIME types. - -1. Using MIME in Mutt - - There are three areas/menus in Mutt-ng which deal with MIME, they are - the pager (while viewing a message), the attachment menu and the - compose menu. - -1.1. Viewing MIME messages in the pager - - When you select a message from the index and view it in the pager, - Mutt decodes the message to a text representation. Mutt-ng internally - supports a number of MIME types, including text/plain, text/enriched, - message/rfc822, and message/news .In addition, the export controlled - version of Mutt-ng recognizes a variety of PGP MIME types, including - PGP/MIME and application/pgp. - - Mutt-ng will denote attachments with a couple lines describing them. - These lines are of the form: -[-- Attachment #1: Description --] -[-- Type: text/plain, Encoding: 7bit, Size: 10000 --] - - Where the Description is the description or filename given for the - attachment, and the Encoding is one of - 7bit/8bit/quoted-printable/base64/binary. - - If Mutt-ng cannot deal with a MIME type, it will display a message - like: -[-- image/gif is unsupported (use 'v' to view this part) --] - -1.2. The Attachment Menu - - The default binding for view-attachments is `v', which displays the - attachment menu for a message. The attachment menu displays a list - ofthe attachments in a message. From the attachment menu, you can - save, print, pipe, delete, and view attachments. You can apply these - operations to a group of attachments at once, by tagging the - attachments and by using the ``tag-prefix'' operator. You can also - reply to the current message from this menu, and only the current - attachment (or the attachments tagged) will be quoted in your reply. - You can view attachments as text, or view them using the mailcap - viewer definition. - - Finally, you can apply the usual message-related functions (like - , and the reply and forward functions) to attachments - of type message/rfc822. - - See the help on the attachment menu for more information. - -1.3. The Compose Menu - - The compose menu is the menu you see before you send a message. It - allows you to edit the recipient list, the subject, and other aspects - of your message. It also contains a list of the attachments of your - message, including the main body. From this menu, you can print, copy, - filter, pipe, edit, compose, review, and rename an attachment or a - list of tagged attachments. You can also modifying the attachment - information, notably the type, encoding and description. - - Attachments appear as follows: -1 [text/plain, 7bit, 1K] /tmp/mutt-euler-8082-0 -2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz - - The '-' denotes that Mutt-ng will delete the file after sending (or - postponing, or canceling) the message. It can be toggled with the - toggle-unlink command (default: u). The next field is the MIME - content-type, and can be changed with the edit-type command (default: - ^T). The next field is the encoding for the attachment, which allows a - binary message to be encoded for transmission on 7bit links. It can be - changed with the edit-encoding command (default: ^E). The next field - is the size of the attachment, rounded to kilobytes or megabytes. The - next field is the filename, which can be changed with the rename-file - command (default: R). The final field is the description of the - attachment, and can be changed with the edit-description command - (default: d). - -2. MIME Type configuration with mime.types - - When you add an attachment to your mail message, Mutt-ng searches your - personal mime.types file within $HOME and then the system mime.types - file at /usr/local/share/mutt/mime.types or /etc/mime.types - - The mime.types file consist of lines containing a MIME type and a - space separated list of extensions. For example: -application/postscript ps eps -application/pgp pgp -audio/x-aiff aif aifc aiff - - A sample mime.types file comes with the Mutt-ng distribution, and - should contain most of the MIME types you are likely to use. - - If Mutt-ng can not determine the mime type by the extension of the - file you attach, it will look at the file. If the file is free of - binary information, Mutt-ng will assume that the file is plain text, - and mark it as text/plain. If the file contains binary information, - then Mutt-ng will mark it as application/octet-stream. You can change - the MIME type that Mutt-ng assigns to an attachment by using the - edit-type command from the compose menu (default: ^T). The MIME type - is actually a major mime type followed by the sub-type, separated by a - '/'. 6 major types: application, text, image, video, audio, and model - have been approved after various internet discussions. Mutt-ng - recognises all of these if the appropriate entry is found in the - mime.types file. It also recognises other major mime types, such as - the chemical type that is widely used in the molecular modelling - community to pass molecular data in various forms to various molecular - viewers. Non-recognised mime types should only be used if the - recipient of the message is likely to be expecting such attachments. - -3. MIME Viewer configuration with mailcap - - Mutt-ng supports RRffCC  11552244 MIME Configuration, in particular the Unix - specific format specified in Appendix A of the RfC. This file format - is commonly referred to as the mailcap format. Many MIME compliant - programs utilize the mailcap format, allowing you to specify handling - for all MIME types in one place for all programs. Programs known to - use this format include Netscape, XMosaic, lynx and metamail. - - In order to handle various MIME types that Mutt-ng can not handle - internally, Mutt-ng parses a series of external configuration files to - find an external handler. The default search string for these files is - a colon delimited list set to -${HOME}/.mailcap:/usr/local/share/mutt/mailcap:/etc/mailcap:/etc/mailcap:/usr/e -tc/mailcap:/usr/local/etc/mailcap - - where $HOME is your home directory. - - In particular, the metamail distribution will install a mailcap file, - usually as /usr/local/etc/mailcap, which contains some baseline - entries. - -3.1. The Basics of the mailcap file - - A mailcap file consists of a series of lines which are comments, - blank, or definitions. - - A comment line consists of a # character followed by anything you - want. - - A blank line is blank. - - A definition line consists of a content type, a view command, and any - number of optional fields. Each field of a definition line is - dividedby a semicolon ';' character. - - The content type is specified in the MIME standard type/subtype - method. For example, text/plain, text/html, image/gif, etc. In - addition, the mailcap format includes two formats for wildcards, one - using the special '*' subtype, the other is the implicit wild, where - you only include the major type. For example, image/* ,or video, will - match all image types and video types, respectively. - - The view command is a Unix command for viewing the type specified. - There are two different types of commands supported. The default is to - send the body of the MIME message to the command on stdin. You can - change this behavior by using %s as a parameter to your view command. - This will cause Mutt-ng to save the body of the MIME message to a - temporary file, and then call the view command with the %s replaced by - the name of the temporary file. In both cases, Mutt-ng will turn over - the terminal to the view program until the program quits, at which - time Mutt will remove the temporary file if it exists. - - So, in the simplest form, you can send a text/plain message to the - external pager more on stdin: -text/plain; more - - Or, you could send the message as a file: -text/plain; more %s - - Perhaps you would like to use lynx to interactively view a text/html - message: -text/html; lynx %s - - In this case, lynx does not support viewing a file from stdin, so you - must use the %s syntax. _N_o_t_e_:_S_o_m_e_ _o_l_d_e_r_ _v_e_r_s_i_o_n_s_ _o_f_ _l_y_n_x_ _c_o_n_t_a_i_n_ _a_ _b_u_g - _w_h_e_r_e_ _t_h_e_y_ _w_i_l_l_ _c_h_e_c_k_ _t_h_e_ _m_a_i_l_c_a_p_ _f_i_l_e_ _f_o_r_ _a_ _v_i_e_w_e_r_ _f_o_r_ _t_e_x_t_/_h_t_m_l_. - _T_h_e_y_ _w_i_l_l_ _f_i_n_d_ _t_h_e_ _l_i_n_e_ _w_h_i_c_h_ _c_a_l_l_s_ _l_y_n_x_,_ _a_n_d_ _r_u_n_ _i_t_._ _T_h_i_s_ _c_a_u_s_e_s_ _l_y_n_x - _t_o_ _c_o_n_t_i_n_u_o_u_s_l_y_ _s_p_a_w_n_ _i_t_s_e_l_f_ _t_o_ _v_i_e_w_ _t_h_e_ _o_b_j_e_c_t_. - - On the other hand, maybe you don't want to use lynx interactively, - youjust want to have it convert the text/html to text/plain, then you - can use: -text/html; lynx -dump %s | more - - Perhaps you wish to use lynx to view text/html files, and a pager on - all other text formats, then you would use the following: -text/html; lynx %s -text/*; more - - This is the simplest form of a mailcap file. - -3.2. Secure use of mailcap - - The interpretation of shell meta-characters embedded in MIME - parameters can lead to security problems in general. Mutt-ng tries to - quote parameters in expansion of %s syntaxes properly, and avoids - risky characters by substituting them, see the $$mmaaiillccaapp__ssaanniittiizzee - variable. - - Although mutt's procedures to invoke programs with mailcap seem to be - safe, there are other applications parsing mailcap, maybe taking less - care of it. Therefore you should pay attention to the following rules: - - _K_e_e_p_ _t_h_e_ _%_-_e_x_p_a_n_d_o_s_ _a_w_a_y_ _f_r_o_m_ _s_h_e_l_l_ _q_u_o_t_i_n_g_. Don't quote them with - single or double quotes. Mutt-ng does this for you, the right way, as - should any other program which interprets mailcap. Don't put them into - backtick expansions. Be highly careful with eval statements, and avoid - them if possible at all. Trying to fix broken behaviour with quotes - introduces new leaks - there is no alternative to correct quoting in - the first place. - - If you have to use the %-expandos' values in context where you need - quoting or backtick expansions, put that value into a shell variable - and reference the shell variable where necessary, as in the following - example (using $charset inside the backtick expansion is safe, since - it is not itself subject to any further expansion): - -text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \ -&& test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1 - -3.3. Advanced mailcap Usage - -3.3.1. Optional Fields - - In addition to the required content-type and view command fields, you - can add semi-colon ';' separated fields to set flags and other - options. Mutt-ng recognizes the following optional fields: - - copiousoutput - This flag tells Mutt-ng that the command passes possibly large - amounts of text on stdout. This causes Mutt-ng to invoke a - pager (either the internal pager or the external pager defined - by the pager variable) on the output of the view command. - Without this flag, Mutt-ng assumes that the command is - interactive. One could use this to replace the pipe to more in - the lynx -dump example in the Basic section: - -text/html; lynx -dump %s ; copiousoutput - - This will cause lynx to format the text/html output as - text/plain and Mutt-ng will use your standard pager to display - the results. - - needsterminal - Mutt-ng uses this flag when viewing attachments with aauuttoo__vviieeww, - in order to decide whether it should honor the setting of the - $$wwaaiitt__kkeeyy variable or not. When an attachment is viewed using - an interactive program, and the corresponding mailcap entry has - a _n_e_e_d_s_t_e_r_m_i_n_a_l flag, Mutt-ng will use $$wwaaiitt__kkeeyy and the exit - statusof the program to decide if it will ask you to press a - key after the external program has exited. In all other - situations it will not prompt you for a key. - - compose= - This flag specifies the command to use to create a new - attachment of a specific MIME type. Mutt-ng supports this from - the compose menu. - - composetyped= - This flag specifies the command to use to create a new - attachment of a specific MIME type. This command differs from - the compose command in that mutt will expect standard MIME - headers on the data. This can be used to specify parameters, - filename, description, etc. for a new attachment. Mutt-ng - supports this from the compose menu. - - print= - This flag specifies the command to use to print a specific MIME - type. Mutt-ng supports this from the attachment and compose - menus. - - edit= - This flag specifies the command to use to edit a specific MIME - type. Mutt-ng supports this from the compose menu, and also - uses it to compose new attachments. Mutt-ng will default to the - defined editor for text attachments. - - nametemplate=