#!/bin/sh
# Filename: grml-muttng
# Purpose: configuration script for mutt-ng
# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2.
# Latest change: Die Mär 01 00:26:17 CET 2005 [mika]
################################################################################
PATH=${PATH:-'/bin/:/sbin/:/usr/local/bin:/usr/bin:/usr/sbin'}
PN=`basename "$0"`
writemuttngrc() {
cat > $MUTTRC << EOF
# Filename: .muttngrc
# Purpose: configuration for mailclient muttng, created by 'grml-muttng'
# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2.
# Latest change: Son Feb 27 23:14:07 CET 2005 [mika]
################################################################################
## some general settings mutt understands:
# important variables - adjust them if necessary
set realname="$REALNAME"
set from="$MAILADDR"
# mailboxes
set pop_host="$POP3"
$POPDATA
mailboxes $IMAP
$IMAPDATA
# some default options:
set allow_8bit # send data as it is. no conversion.
unset arrow_cursor # Show current mail with an inverse bar.
set ascii_chars # set: use ASCII characters to build the thread tree
set autoedit # call editor without prompting for To: and Subject:
unset confirmappend # set: prompt for confirmation on appending mail to folder
set confirmcreate # set: prompt for confirmation on creation of folders
set copy # Always keep a copy of my mails!
set delete=ask-yes # ask before deleting any messages
set edit_headers # edit all headers lines in the editor
set editor=vim # use Vim as the editor (Vi IMproved www.vim.org)
set folder=~/Mail # directory with all mail folders
unset followup_to # do not generate a Followup-To header
set force_name # set: save outbound mail by username
set hidden_host # do not use a hostname in the address - PROBLEMATIC!
set history=100 # number of input lines for prompts to remember
set include # set: include mail as quoted text in replies
unset mark_old # set: make distinction between New mail and Old mail.
set mime_forward=ask-yes # ask: attach message - or just quote it?
unset move # do not move read mails from mailbox to $mbox (was: "set hold")
set pager_context=1 # number of lines that overlap on paging
# set pager_index_lines=0 # number of lines to see from the index
set pager_stop # "next_page" won't jump to next message at end of messages
# set print_command="mp|lpr" # pipe message to "mp" for formattting - then on to "lpr"
unset prompt_after # set: gives you a prompt when pager exits
set quote_regexp="^>" # some people just use '>' - *sigh*
set read_inc=10 # '10': show count number for every tenth mail
set recall=ask-yes # do not prompt for recalling postponed mails with 'm'
set reply_to=ask-yes # "reply": set: Use address in Reply-To?
set reverse_alias # show the name of sender as set with my alias for him
set reverse_name # reply as the user to whom the mail was sent to
set save_name # set: save outbound mail to =username if it exists
# set shell=zsh # use the zsh for shell commands
set sort=threads # sorting method - I definitely like "threads" best
set status_on_top # set: present the status bar at top, ie before the index
set strict_threads # set: use references: for threading only, ie do not
# thread by subject or in-reply-to
set tilde # show non-existant lines of text with a tilde at begin-of-line
set tmpdir="/tmp" # directory where temporary files are to be placed
set to_chars="X+TCF" # message flags: non-personal,personal,To:,Cc:,From:
set use_from # 'set from=' requires a 'set use_from'!
set write_inc=10 # update number after each tenth read mail
# Options with a long value:
# set alternates=...
set attribution="* %n <%a> [%(%y%m%d %H:%M)]:" # how to cite the author
set reply_regexp="^((aw|antw.?|antwort|re|r e|r?f|sv):[ \t]*)*"
# Format Options
set forward_format="(forw) %s"
set index_format="%4C %Z %[!%y%m%d] %-17.17F (%3l) %s"
set pager_format="%S [%C/%T] %n (%l) %s"
set status_format="%v: %f (%s) [%M/%m] [N=%n,*=%t,new=%b]"
# Show the "text/plain" part *before* the "text/html" part:
alternative_order text/plain text/html
auto_view text/html
# KEY BINDINGS
bind index zt current-top
bind index zz current-middle
bind index zb current-bottom
# HEADER DISPLAY
ignore *
unignore from: date: subject: to: cc: reply-to:
unignore sender:
unignore priority: importance:
unignore organization organisation
unignore mail-followup-to:
unignore resent- x-resent
# unignore user-agent: x-agent: x-mailer: x-newsreader: x-mailing-list:
# unignore x-editor
# unignore message-id: newsgroups: posted-to: posted-and-mailed:
# unignore x-also-posted-to: x-newsgroups:
# unignore delivered-to x-envelope-to:
# unignore x-accept-language
unhdr_order *
hdr_order Sender: From From: Reply-To: Subject: Organization: Date: Message-Id: User-Agent: X-Editor: X-Mailer: X-Newsreader: X-Agent: To: Cc: Newsgroups: X-Resent Followup-To: Mail-Followup-To:
## now the mutt-ng specific settings
# path to header cache file:
set header_cache="~/.mutt/headers"
# sidebar stuff:
set sidebar_visible="no"
set sidebar_width=25
set sidebar_shorten_hierarchy
color sidebar_new yellow default
# keybindings:
bind index F flag-message
bind pager F flag-message
macro index z "c?\t" "List mailboxes and switch to selected one"
macro index <f2> "<enter-command>set invsidebar_visible<enter>" "Toggle sidebar visibility"
macro index \cW ':push <sidebar-prev-new><enter>' "Jump to previous mailbox with new messages in sidebar"
macro index \cE ':push <sidebar-next-new><enter>' "Jump to next mailbox with new messages in sidebar"
macro index \cP ':push <sidebar-prev><enter>' "Jump to previous mailbox in sidebar"
macro index \cN ':push <sidebar-next><enter>' "Jump to next mailbox in sidebar"
macro index \cO ':push <sidebar-open><enter>' "Open selected mailbox in sidebar"
# bind index <space> sidebar-open
EOF
}
lightcolors() {
cat >> $MUTTRC << EOF
## color setup
## some misc stuff:
color normal black white
color error red white
color indicator blue green
color status white blue
color tree blue white
color hdrdefault red white
color quoted blue white
color quoted1 green white
color quoted2 magenta white
color quoted3 cyan white
color tilde yellow black
color signature blue white
color search white blue # "search" - matches found with search within the internal pager.
color markers red black # "markers" indicate a wrapped line when showing messages with looong lines.
color bold green black
color underline yellow black
## index-colors:
uncolor index *
# mail from myself *and* to myself (TODO items):
# color index black brightyellow '~p ~f prokop'
# Flagged Messages are important!
color index blue white ~N # New
color index magenta default ~T # Tagged
color index blue black ~D # Deleted Mails - use dark color as these are already "dealt with".
color index red default ~O # old messages
# mail from important people (like myself ;-):
# color index white red '~f prokop'
# Mails with no obvious addresses (empty To: and Cc: lines)
color index cyan white "! ~C ."
# "DONE mails" ie those I have already replied to.
color index blue white '~Q'
# non-multipart mails which are tex/html almost always are spam:
color index brightmagenta white "~h 'Content-Type: text/html'"
# Sent to "Undisclosed Recipients":
color index white magenta '~C Undisclosed.*Recipients'
# When the Subject indicates a reply (with ":re" but without "Fwd"!)
# then there *must* be a reference to the previous message!
# So if there is neither an In-Reply-To nor a References line
# then it must have been sent with a crappy mailer....
color index yellow white "~s re: ! ~s fwd: ! ~x . ! ~h 'in-reply-to: '"
# No characters in body -> SPAM!
color index white white "! ~b ."
color index brightred black ~F # Flagged
## body-colors:
# highlight important keywords
color body brightyellow black "grml"
# URLs (General Internet addresses):
color body yellow red "(finger|ftp|http|news|telnet)://[^ >]*"
color body yellow red "<URL:[^ ]*>"
# web address without "http":
color body yellow red "www\\.[-.a-z0-9]+\\.[a-z][a-z][a-z]?([-_./~a-z0-9]+)?"
# HTTPS addresses:
color body yellow red "https://[^ >]*"
# FTP addresses:
color body yellow red "ftp://[^ ]*"
# HTTP addresses:
color body yellow red "[[:alnum:]][-+.#_[:alnum:]]*@[-+.[:alnum:]]*[[:alnum:]]"
# File names ("/path/file")
# color body brightgreen white "\\~?\(/[-_.,a-zA-Z0-9{}äöüß]+\)+"
color body blue white "\\~?\(/[-_.,a-zA-Z0-9{}äöüß]+\)+"
# Path names ("/path/")
color body brightred white "\(/[-_.a-zA-Z0-9]+\)+/"
# Variables ("$HOME")
color body brightmagenta white "\\$[a-zA-Z][-_a-zA-Z]+"
# Attribution line:
# color body red white "^[*] .*:$"
## abbreviations and "SCREAMING IN CAPS" in body:
# The following includes umlauts - but that's quite clunky.
# color body brightyellow red "[A-ZÄÖÜ][-A-ZÄÖÜ]+[A-ZÄÖÜ][ .!?]?"
# "+USE_GNU_REGEX":
# When you use "+USE_GNU_REGEX" then you can also make use
# of "start of word" ("\<") and "end of word" ("\>"):
color body red white "\\<[-A-Z']{3,}\\>"
# *Emphasized*, /emphasized/, and _emphasized_ words:
# color body brightred black "[*/_]+ *[- &[:alnum:]]+ *[*/_]+"
# this would catch false positives of the kind _foo* and /bar_
# so we should choose matching pairs only:
color body brightred white "[*][-[:alnum:]]+[*]"
color body brightred white "/[-[:alnum:]]+/"
color body brightred white "_[-[:alnum:]]+_"
# Smileys: :-) ;-) :-| :-/ :-(
color body brightyellow white "[;:]-[)/(|]"
# Grinning: "grin" ([g]) and "big grin" ([bg]):
color body blue red "<[Gg]>"
color body blue red "<[Bb][Gg]>"
# Border Lines of length three or more.
# (Several Newsletters use border lines..)
color body green white "[-_=+~/\*]{3,}"
# Extensive use of exclamation and question marks:
# "!!!" "???"
color body red white "[!?]{3,}"
# Percentages ("Save xx.x %!")
color body brightgreen white "[.0-9]+ ?%"
# Copyright (C) and Registered Trademark (r)
color body red white "[(][cr][)]"
color body red white "\\(c\\)"
# Year Numbers 1980-2002
color body blue white "19[89][0-9]"
color body blue white "200[012]"
# Phone Numbers:
color body blue white "1-[0-9]{3}[- ][-0-9]+ +ext.? [0-9]+"
color body blue white \
"(tele)?(cell|fax|fon|phone|tel)[.: ]+[+]?[- 0-9/()]{4,}[0-9]"
# RTFM!
# " man word"
color body white red "^ +[$]? *man \\w+"
# Lists
# bulleted list:
# * one
# * two
# * three
# dashed list:
# - one
# - two
# - three
# color body red black "^ *[-*] +"
# this pattern yields many false positives as it
# spans lines for which there is no syntax language.
# this is easier with Vim's syntax coloring.
color body red white "^ *[-*] +"
# special IP host addresses:
# 192.x.x.x
color body white blue "129.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"
color body white blue "193.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"
# HTML tags
color body yellow black "</?\w+>"
# Emphasis by interspersed spaces
# Example: E M P H A S I S
color body red white '\<\w( +\w\>)+'
# verbatim marks (#v+ till #v-)
color body yellow red ^\#v[-+]
color attachment black white
EOF
}
dialog --stdout --title "$PN" --msgbox "Welcome to $PN!
This script will create a simple base
configuration for the mailclient mutt-ng.
Report bugs, send wishes and feedback to the grml team:
http://www.grml.org/ - contact (at) grml.org
" 13 65
GETREALNAME=$(dialog --stdout --title "$PN" --inputbox "Your real name (eg 'John GRML User'):" 0 56) || exit 0
REALNAME=${GETREALNAME%/*}
GETMAILADDR=$(dialog --stdout --title "$PN" --inputbox "Your main mail address (eg 'joedoe@grml.org'):" 0 56) || exit 0
MAILADDR=${GETMAILADDR%/*}
askpop(){
GETPOPUSER=$(dialog --stdout --title "$PN" --inputbox "Enter username for POP3 account" 0 0)
POPUSER=${GETPOPUSER}
GETPOPPWD=$(dialog --stdout --title "$PN" --passwordbox "Enter password for POP3 account (typing hidden)" 0 0)
POPPWD=${GETPOPPWD}
}
ASKPOP=$(dialog --stdout --title "$PN" --yesno "Configure POP3?" 0 0)
retval=$?
case $retval in
0)
GETPOP3=$(dialog --stdout --title "$PN" --inputbox "Your POP3 account (pop[s]://[user]@hostname[:port]):" 0 56 "pop://") || exit 0
POP3=${GETPOP3}
askpop && \
POPDATA=" set pop_user=\"$POPUSER\"
set pop_pass=\"$POPPWD\"
"
;;
esac
askimap(){
GETIMAPUSER=$(dialog --stdout --title "$PN" --inputbox "Enter username for IMAP account" 0 0)
IMAPUSER=${GETIMAPUSER}
GETIMAPPWD=$(dialog --stdout --title "$PN" --passwordbox "Enter password for IMAP account (typing hidden)" 0 0)
IMAPPWD=${GETIMAPPWD}
}
ASKIMAP=$(dialog --stdout --title "$PN" --yesno "Configure IMAP?" 0 0)
retval=$?
case $retval in
0)
GETIMAP=$(dialog --stdout --title "$PN" --inputbox "Your IMAP account (imap[s]://[user@]hostname[:port]/mailbox):" 0 65 "imap://") || exit 0
IMAP=${GETIMAP}
askimap && \
IMAPDATA=" set imap_user=\"$IMAPUSER\"
set imap_pass=\"$IMAPPWD\"
"
;;
esac
GETCOLOR=$(dialog --stdout --title "$PN" \
--radiolist "Which color setup do you want to use?" 10 65 2 \
dark "dark color setup (default)" on \
light "light color setup" off)
retval=$?
case $retval in
0) COLOR=$GETCOLOR ;;
*) exit 1 ;;
esac
writecolors() {
if [ "$COLOR" == 'light' ] ; then
lightcolors
fi
}
GETMUTTRC=$(dialog --stdout --title "$PN" --inputbox "Choose a filename for this configuration:" 0 56 "$HOME/.muttngrc") || exit 0
MUTTRC=${GETMUTTRC}
WRITEMUTTRC=$(dialog --stdout --title "$PN" --yesno "Write $MUTTRC?" 5 65)
retval=$?
case $retval in
0)
if [ -f "$MUTTRC" ] ; then
dialog --stdout --title "$PN" --yesno "$MUTTRC exists. Overwrite?" 5 65
retval=$?
case $retval in
0)
writemuttngrc && writecolors && \
dialog --stdout --title "$PN" --msgbox "Writing $MUTTRC was successful." 7 65 || \
dialog --stdout --title "$PN" --msgbox "Error $?: writing $MUTTRC failed." 7 65
;;
# *) exit 1 ;;
esac
else
writemuttngrc && writecolors && \
dialog --stdout --title "$PN" --msgbox "Writing $MUTTRC was successfull." 7 65 || \
dialog --stdout --title "$PN" --msgbox "Error $?: writing $MUTTRC failed." 7 65
fi
;;
# *) exit 1 ;;
esac
dialog --stdout --title "$PN" --msgbox "Thanks for using $PN!
More information on mutt-ng:
Manuals: man 1 muttng
man 5 muttngrc
Webpages:
http://mutt-ng.berlios.de/
http://mutt-ng.supersized.org/
http://www.strcat.de/muttng/pmwiki.php
#######################################################
Report bugs, send wishes and feedback to the grml team:
http://www.grml.org/ - contact (at) grml.org
" 24 65
## END OF FILE #################################################################
syntax highlighted by Code2HTML, v. 0.9.1