3 # Purpose: configuration script for mutt
4 # Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
5 # Bug-Reports: see http://grml.org/bugs/
6 # License: This file is licensed under the GPL v2.
7 ################################################################################
9 PATH=${PATH:-'/bin/:/sbin/:/usr/local/bin:/usr/bin:/usr/sbin'}
12 if [ -r /etc/grml/script-functions ] ; then
13 . /etc/grml/script-functions
14 check4progs dialog mutt || echo "Warning - mutt is not available. Continuing anyway.">&2
20 # Purpose: configuration for mailclient mutt, created by 'grml-mutt'
21 # Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
22 # Bug-Reports: see http://grml.org/bugs/
23 # License: This file is licensed under the GPL v2.
24 ################################################################################
26 # important variables - adjust them if necessary
27 set realname="$REALNAME"
35 # some default options:
36 set allow_8bit # send data as it is. no conversion.
37 unset arrow_cursor # Show current mail with an inverse bar.
38 set ascii_chars # set: use ASCII characters to build the thread tree
39 unset autoedit # call editor without prompting for To: and Subject:?
40 set auto_tag=yes # the next operation applies to the tagged messages automatically
41 unset confirmappend # set: prompt for confirmation on appending mail to folder
42 set confirmcreate # set: prompt for confirmation on creation of folders
43 set copy # Always keep a copy of my mails!
44 set delete=ask-yes # ask before deleting any messages
45 set edit_headers # edit all headers lines in the editor
46 set editor=vim # use Vim as the editor (Vi IMproved www.vim.org)
47 set folder=~/Mail # directory with all mail folders
48 unset followup_to # do not generate a Followup-To header
49 # set force_name # set: save outbound mail by username
50 set hidden_host # do not use a hostname in the address - PROBLEMATIC!
51 set history=100 # number of input lines for prompts to remember
52 set include # set: include mail as quoted text in replies
53 unset mark_old # set: make distinction between New mail and Old mail.
54 set mime_forward=ask-yes # ask: attach message - or just quote it?
55 unset move # do not move read mails from mailbox to $mbox (was: "set hold")
56 set pager_context=1 # number of lines that overlap on paging
57 # set pager_index_lines=0 # number of lines to see from the index
58 set pager_stop # "next_page" won't jump to next message at end of messages
59 set postponed=+postponed # where save postponed messages?
60 # set print_command="mp|lpr" # pipe message to "mp" for formattting - then on to "lpr"
61 unset prompt_after # set: gives you a prompt when pager exits
62 set quit=ask-yes # ask before exiting
63 set quote_regexp="^>" # some people just use '>' - *sigh*
64 set read_inc=10 # '10': show count number for every tenth mail
65 set record=+outbox # outbox / where to save outgoing mails
66 set recall=ask-yes # do not prompt for recalling postponed mails with 'm'
67 set reply_to=ask-yes # "reply": set: Use address in Reply-To?
68 set reverse_alias # show the name of sender as set with my alias for him
69 set reverse_name # reply as the user to whom the mail was sent to
70 # set save_name # set: save outbound mail to =username if it exists
71 # set sendmail="/usr/bin/msmtp" # which sendmail program should be used?
72 # set shell=zsh # use the zsh for shell commands
73 set sort=threads # sorting method - I definitely like "threads" best
74 set status_on_top # set: present the status bar at top, ie before the index
75 set strict_threads # set: use references: for threading only, ie do not
76 # thread by subject or in-reply-to
77 set tilde # show non-existant lines of text with a tilde at begin-of-line
78 set tmpdir="/tmp" # directory where temporary files are to be placed
79 set to_chars="X+TCF" # message flags: non-personal,personal,To:,Cc:,From:
80 set use_from # 'set from=' requires a 'set use_from'!
81 # set use_envelope_from # when set, mutt will use $envelope_from_address as the envelope sender
82 set write_inc=10 # update number after each tenth read mail
85 # Options with a long value:
87 set attribution="* %n <%a> [%(%y%m%d %H:%M)]:" # how to cite the author
88 set reply_regexp="^((aw|antw.?|antwort|re|r e|r?f|sv):[ \t]*)*"
91 set forw_format="(forw) %s"
92 set index_format="%4C %Z %[!%y%m%d] %-17.17F (%3l) %s"
93 set pager_format="%S [%C/%T] %n (%l) %s"
94 set status_format="%v: %f (%s) [%M/%m] [N=%n,*=%t,new=%b]"
96 # Show the "text/plain" part *before* the "text/html" part:
97 alternative_order text/plain text/html
101 bind index zt current-top
102 bind index zz current-middle
103 bind index zb current-bottom
107 unignore from: date: subject: to: cc: reply-to:
109 unignore priority: importance:
110 unignore organization organisation
111 unignore mail-followup-to:
112 unignore resent- x-resent
113 # unignore user-agent: x-agent: x-mailer: x-newsreader: x-mailing-list:
115 # unignore message-id: newsgroups: posted-to: posted-and-mailed:
116 # unignore x-also-posted-to: x-newsgroups:
117 # unignore delivered-to x-envelope-to:
118 # unignore x-accept-language
120 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:
125 cat >> $MUTTRC << EOF
130 color normal black white
131 color error red white
132 color indicator blue green
133 color status white blue
134 color tree blue white
135 color hdrdefault red white
136 color quoted blue white
137 color quoted1 green white
138 color quoted2 magenta white
139 color quoted3 cyan white
140 color tilde yellow black
141 color signature blue white
142 color search white blue # "search" - matches found with search within the internal pager.
143 color markers red black # "markers" indicate a wrapped line when showing messages with looong lines.
144 color bold green black
145 color underline yellow black
150 # mail from myself *and* to myself (TODO items):
151 # color index black brightyellow '~p ~f prokop'
153 # Flagged Messages are important!
154 color index blue white ~N # New
155 color index magenta default ~T # Tagged
156 color index blue black ~D # Deleted Mails - use dark color as these are already "dealt with".
157 color index red default ~O # old messages
159 # mail from important people (like myself ;-):
160 # color index white red '~f prokop'
162 # Mails with no obvious addresses (empty To: and Cc: lines)
163 color index cyan white "! ~C ."
165 # "DONE mails" ie those I have already replied to.
166 color index blue white '~Q'
168 # non-multipart mails which are tex/html almost always are spam:
169 color index brightmagenta white "~h 'Content-Type: text/html'"
171 # Sent to "Undisclosed Recipients":
172 color index white magenta '~C Undisclosed.*Recipients'
174 # When the Subject indicates a reply (with ":re" but without "Fwd"!)
175 # then there *must* be a reference to the previous message!
176 # So if there is neither an In-Reply-To nor a References line
177 # then it must have been sent with a crappy mailer....
178 color index yellow white "~s re: ! ~s fwd: ! ~x . ! ~h 'in-reply-to: '"
180 # No characters in body -> SPAM!
181 color index white white "! ~b ."
183 color index brightred black ~F # Flagged
187 # highlight important keywords
188 color body brightyellow black "grml"
190 # URLs (General Internet addresses):
191 color body yellow red "(finger|ftp|http|news|telnet)://[^ >]*"
192 color body yellow red "<URL:[^ ]*>"
193 # web address without "http":
194 color body yellow red "www\\.[-.a-z0-9]+\\.[a-z][a-z][a-z]?([-_./~a-z0-9]+)?"
197 color body yellow red "https://[^ >]*"
200 color body yellow red "ftp://[^ ]*"
203 color body yellow red "[[:alnum:]][-+.#_[:alnum:]]*@[-+.[:alnum:]]*[[:alnum:]]"
205 # File names ("/path/file")
206 # color body brightgreen white "\\~?\(/[-_.,a-zA-Z0-9{}äöüß]+\)+"
207 color body blue white "\\~?\(/[-_.,a-zA-Z0-9{}äöüß]+\)+"
209 # Path names ("/path/")
210 color body brightred white "\(/[-_.a-zA-Z0-9]+\)+/"
212 # Variables ("$HOME")
213 color body brightmagenta white "\\$[a-zA-Z][-_a-zA-Z]+"
216 # color body red white "^[*] .*:$"
218 ## abbreviations and "SCREAMING IN CAPS" in body:
219 # The following includes umlauts - but that's quite clunky.
220 # color body brightyellow red "[A-ZÄÖÜ][-A-ZÄÖÜ]+[A-ZÄÖÜ][ .!?]?"
223 # When you use "+USE_GNU_REGEX" then you can also make use
224 # of "start of word" ("\<") and "end of word" ("\>"):
225 color body red white "\\<[-A-Z']{3,}\\>"
227 # *Emphasized*, /emphasized/, and _emphasized_ words:
228 # color body brightred black "[*/_]+ *[- &[:alnum:]]+ *[*/_]+"
229 # this would catch false positives of the kind _foo* and /bar_
230 # so we should choose matching pairs only:
231 color body brightred white "[*][-[:alnum:]]+[*]"
232 color body brightred white "/[-[:alnum:]]+/"
233 color body brightred white "_[-[:alnum:]]+_"
235 # Smileys: :-) ;-) :-| :-/ :-(
236 color body brightyellow white "[;:]-[)/(|]"
237 # Grinning: "grin" ([g]) and "big grin" ([bg]):
238 color body blue red "<[Gg]>"
239 color body blue red "<[Bb][Gg]>"
241 # Border Lines of length three or more.
242 # (Several Newsletters use border lines..)
243 color body green white "[-_=+~/\*]{3,}"
245 # Extensive use of exclamation and question marks:
247 color body red white "[!?]{3,}"
249 # Percentages ("Save xx.x %!")
250 color body brightgreen white "[.0-9]+ ?%"
252 # Copyright (C) and Registered Trademark (r)
253 color body red white "[(][cr][)]"
254 color body red white "\\(c\\)"
256 # Year Numbers 1980-2002
257 color body blue white "19[89][0-9]"
258 color body blue white "200[012]"
261 color body blue white "1-[0-9]{3}[- ][-0-9]+ +ext.? [0-9]+"
262 color body blue white \
263 "(tele)?(cell|fax|fon|phone|tel)[.: ]+[+]?[- 0-9/()]{4,}[0-9]"
267 color body white red "^ +[$]? *man \\w+"
278 # color body red black "^ *[-*] +"
279 # this pattern yields many false positives as it
280 # spans lines for which there is no syntax language.
281 # this is easier with Vim's syntax coloring.
282 color body red white "^ *[-*] +"
284 # special IP host addresses:
286 color body white blue "129.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"
287 color body white blue "193.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"
290 color body yellow black "</?\w+>"
292 # Emphasis by interspersed spaces
293 # Example: E M P H A S I S
294 color body red white '\<\w( +\w\>)+'
296 # verbatim marks (#v+ till #v-)
297 color body yellow red ^\#v[-+]
299 color attachment black white
303 dialog --stdout --title "$PN" --msgbox "Welcome to $PN!
305 This script will create a simple base
306 configuration for the mailclient mutt.
308 Report bugs, send wishes and feedback to the grml team:
309 http://www.grml.org/ - contact (at) grml.org
312 GETREALNAME=$(dialog --stdout --title "$PN" --inputbox "Your real name (eg 'John GRML User'):" 0 56) || exit 0
313 REALNAME=${GETREALNAME%/*}
315 GETMAILADDR=$(dialog --stdout --title "$PN" --inputbox "Your main mail address (eg 'joedoe@grml.org'):" 0 56) || exit 0
316 MAILADDR=${GETMAILADDR%/*}
319 GETPOPUSER=$(dialog --stdout --title "$PN" --inputbox "Enter username for POP3 account" 0 0)
320 POPUSER=${GETPOPUSER}
322 GETPOPPWD=$(dialog --stdout --title "$PN" --passwordbox "Enter password for POP3 account (typing hidden)" 0 0)
326 ASKPOP=$(dialog --stdout --title "$PN" --yesno "Configure POP3?" 0 0)
331 GETPOP3=$(dialog --stdout --title "$PN" --inputbox "Your POP3 account (pop[s]://[user]@hostname[:port]):" 0 56 "pop://") || exit 0
334 POPDATA=" set pop_user=\"$POPUSER\"
335 set pop_pass=\"$POPPWD\"
341 GETIMAPUSER=$(dialog --stdout --title "$PN" --inputbox "Enter username for IMAP account" 0 0)
342 IMAPUSER=${GETIMAPUSER}
344 GETIMAPPWD=$(dialog --stdout --title "$PN" --passwordbox "Enter password for IMAP account (typing hidden)" 0 0)
345 IMAPPWD=${GETIMAPPWD}
348 ASKIMAP=$(dialog --stdout --title "$PN" --yesno "Configure IMAP?" 0 0)
353 GETIMAP=$(dialog --stdout --title "$PN" --inputbox "Your IMAP account (imap[s]://[user@]hostname[:port]/mailbox):" 0 65 "imap://") || exit 0
356 IMAPDATA=" set imap_user=\"$IMAPUSER\"
357 set imap_pass=\"$IMAPPWD\"
362 GETCOLOR=$(dialog --stdout --title "$PN" \
363 --radiolist "Which color setup do you want to use?" 10 65 2 \
364 dark "dark color setup (default)" on \
365 light "light color setup" off)
369 0) COLOR=$GETCOLOR ;;
374 if [ "$COLOR" = 'light' ] ; then
379 GETMUTTRC=$(dialog --stdout --title "$PN" --inputbox "Choose a filename for this configuration:" 0 56 "$HOME/.muttrc") || exit 0
382 WRITEMUTTRC=$(dialog --stdout --title "$PN" --yesno "Write $MUTTRC?" 5 65)
387 if [ -f "$MUTTRC" ] ; then
388 dialog --stdout --title "$PN" --yesno "$MUTTRC exists. Overwrite?" 5 65
392 writemuttrc && writecolors && \
393 dialog --stdout --title "$PN" --msgbox "Writing $MUTTRC was successful." 7 65 || \
394 { dialog --stdout --title "$PN" --msgbox "Error $?: writing $MUTTRC failed." 7 65 ; exit 1 ; }
398 writemuttrc && writecolors && \
399 dialog --stdout --title "$PN" --msgbox "Writing $MUTTRC was successfull." 7 65 || \
400 { dialog --stdout --title "$PN" --msgbox "Error $?: writing $MUTTRC failed." 7 65 ; exit 1 ; }
405 dialog --stdout --title "$PN" --msgbox "Thanks for using $PN!
407 More information on mutt:
415 www.spinnaker.de/mutt/
416 www.michael-prokop.at/mutt/
418 #######################################################
420 Report bugs, send wishes and feedback to the grml team:
421 http://www.grml.org/ - contact (at) grml.org
424 ## END OF FILE #################################################################