commit 3cbc58b12cef08cfedd33eca6e5ceefe94eca5f4
parent 623bd05abbfea61310de481b6aa1eae46bb7aa5b
Author: Jaromil <jaromil@dyne.org>
Date:   Mon, 18 Jun 2012 17:13:00 +0200
documentation updates for the release
Diffstat:
10 files changed, 817 insertions(+), 110 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,22 +1,39 @@
+Jaro Mail 1.0 - 18 June 2012 - E-Data addict
+
+	Software development went forward in a rather passionate way,
+	mostly motivated by the author's need to backup his rather big
+	archive of e-mails. So this release's focus is on stability,
+	search and backup features and a rather deep refactoring of the
+	codebase.
+
+	Mairix has been added as an integrated search engine.
+
+	Backup is possible also using search expressions (see manual)
+
+	Some new modules in statistics implement jquery reports.
+
+	Code is modularized in pre-compiled zsh modules.
+
+	Extensive testing has proven the whole setup to be stable and
+	ready for production use, hence the 1.0 release.
+
 Jaro Mail 0.9 - 06 May 2012 - The rush of the unemployed
 
-	After getting recently unemployed because of European
-	austerity cuts (and because of not working in a bank),
-	Jaromil followed up with a full pijama coding session
-	that lasted about a week, hammering out most issues
-	that make now this software enter BETA stage, while
-	starting to use it for real.
+	After getting recently unemployed because of European austerity
+	cuts (and because of not working in a bank), Jaromil followed up
+	with a full pijama coding session that lasted about a week,
+	hammering out most issues that make now this software enter BETA
+	stage, while starting to use it for real.
 
-	This is the first public release of Jaro Mail,
-	it comes with a User Manual and lots of usability
-	fixes over the previous, it was tested on GNU and OSX
-	operating systems.
+	This is the first public release of Jaro Mail, it comes with a
+	User Manual and lots of usability fixes over the previous, it was
+	tested on GNU and OSX operating systems.
 
 
 Jaro Mail 0.1 - 29 May 2012 - Initial release
-	After a dozen years of development and use,
-	Jaromil releases his own e-mail and mailinglist
-	desktop setup.
-	While doing so, J. asked his friend and PhD colleague
-	Max Kazemzadeh how he should call it, and Max replied:
-	Jaro Mail! :^D
+
+	After a dozen years of development and use, Jaromil releases his
+	own e-mail and mailinglist desktop setup.
+
+	While doing so, J. asked his friend and PhD colleague Max
+	Kazemzadeh how he should call it, and Max replied: Jaro Mail! :^D
diff --git a/doc/jaromail-manual.org b/doc/jaromail-manual.org
@@ -32,14 +32,15 @@ this manual is made available on http://files.dyne.org/jaromail/jaromail-manual.
 
    + Easy to deploy and use
    + Targets intensive usage of mailinglists
-   + Integrates addressbook and whitelisting
-   + Generates Procmail and Sieve filters
-   + Encrypts password storage (keyrings)
-   + Provides advanced maildir tools
+   + Does whitelisting and integrates addressbooks
+   + Can do search and backup by expressions
+   + Automatically generates filtering rules
+   + Computes and shows statistics on mail traffic
+   + Encrypts password storage (using keyrings)
+   + Provides advanced maildir management tools
    + Defers connections for off-line operations
    + Checks SSL certificates over (imap, smtp)
-   + Supports strong encryption (GnuPG)
-   + Is Based on solid GNU and BSD technology
+   + Supports strong encryption messaging (GnuPG)
    + Is Multi platform: GNU/Linux/BSD, Apple/OSX
    + Old school, used by its author for the past 10 years
 
@@ -85,7 +86,7 @@ and actions involved in managing one's email communication:
  | MTA     | Mail Transport Agent | [[http://www.fetchmail.info][Fetchmail]] |
  |         | Filtering Agent      | [[http://www.procmail.org][Procmail]]  |
  | SMTP    | Mail Delivery Agent  | [[http://msmtp.sourceforge.net][MSmtp]]     |
-
+ |         | Search engine        | [[http://www.rpcurnow.force9.co.uk/mairix/][Mairix]]    |
 #+LATEX: \pagebreak
 
 * Setup
@@ -389,13 +390,14 @@ whenever possible.
 
   After the indexing is done, you can use the command *jaro search*
   followed by any number of arguments to run the search. This is not a
-  glob match, but an absolute match on the single words. More than one
-  word is aloud to refine the match (they are all AND'ed together),
-  plus a number of tricks can be done: every single word following the
-  command can be a particular expression that indicates in which
-  header to search and for what. Here below a short reference of
-  possible expressions:
+  glob match, but an absolute match on the single words.
+
+  More than one word is aloud to refine the match (they are all AND'ed
+  together), plus a number of tricks can be done: every single word
+  following the command can be a particular expression that indicates
+  in which header to search and for what.
 
+  Here below a short reference of possible expressions:
 
   | word          | match word in message body and major headers                           |
   | t:word        | match word in To: header                                               |
@@ -418,7 +420,13 @@ whenever possible.
   | s:^substring= | match left-anchored substring in any word in Subject:                  |
   | s:substring=2 | match substring with <=2 errors in any word in Subject:                |
 
+  Besides expression, you can also use names of maildirs that you want
+  to search: they can be in any position following the *jaro search*
+  command. If no maildir was specified then the search is performed on
+  all stored maildirs.
 
+  At last, for a reference on how the date range works in search
+  expressions, you can look into the *backup* section in this manual.
 
 * Security
 
@@ -509,6 +517,7 @@ above the average.
 
 For more information about Tomb please refer to its own documentation.
 
+
 * Storage and backup
 
 
@@ -584,34 +593,30 @@ of any interest, but still might be useful to be retrieved just in
 case, Jaro Mail implements a function that will move all messages
 older than a certain date out of a maildir folder into another.
 
-: $ jaro backup ml.recent ml.yearsago 365
+: $ jaro backup ml.recent ml.yearsago d:5y-1y
 
 The above command will move out of the "ml.recent" maildir all e-mails
-that are older than 365 days and store them into the "ml.yearsago"
-maildir which for instance could be present on an external usb
-hard-disk or any other backup device, helping us to save space on the
-desktop in use.
+that are older than 1 year (up to 5 years before, can be more) and
+stores them into the "ml.yearsago" maildir which for instance could be
+present on an external usb hard-disk or any other backup device,
+helping us to save space on the desktop in use.
+
+:  jaro backup unsorted may98-may99 unsorted.week.old
+
+
+Will move all emails found in any folder that are dated between May
+1998 and May 1999. Here below more examples of date range expressions:
+
 #+BEGIN_EXAMPLE
-  check("2w-1w");
-  check("4m-1w");
-  check("2002-2003");
-  check("may2002-2003");
-  check("2002may-2003");
-  check("feb98-15may99");
-  check("feb98-15may1999");
-  check("2feb98-1y");
-  check("02feb98-1y");
-  check("970617-20010618");
+  d:2002-2003
+  d:may2002-2003
+  d:2002may-2003
+  d:feb98-15may99
+  d:feb98-15may1999
+  d:2feb98-1y
+  d:02feb98-1y
+  d:970617-20010618
 #+END_EXAMPLE
-*Caveat*: this system determines the date of emails from the time
-stamp of files, not from the Date: field in their headers nor from the
-time they were received. We need help to overcome this imperfection, a
-string parser for dates would be a welcome contribution, meanwhile
-users should be aware that if a maildir was copied around filesystems
-updating the timestamps of its files they will lose date information
-useful to the backup function and all mails will result more recent
-than they are.
-
 
 ** Filter a maildir
 
@@ -666,10 +671,10 @@ licenses, or available in the public domain.
 
 ** Jaro Mail credits
 
-Jaro Mail is written and maintained by Jaromil, it started from the
-intention to share his own 10 years old e-mail setup, encouraged by
-the typical geek attitude of exchanging configuration files between
-friends.
+Jaro Mail is written and maintained by Denis Roio (aka Jaromil) it
+started from the intention to share his own 10 years old e-mail setup,
+encouraged by the geek tradition of exchanging configuration files
+between friends.
 
 The RFC 822 address parser (fetchaddr) is originally written by
 Michael Elkins for the Mutt MUA.
@@ -677,8 +682,8 @@ Michael Elkins for the Mutt MUA.
 The gateway to Apple/OSX addressbook (ABQuery) was written by Brendan
 Cully and just slightly updated for our distribution.
 
-Thanks also go to Anatole Shaw for the help testing and debugging Jaro
-Mail.
+Thanks also go to Alvise Gottieri and Anatole Shaw for early testing
+and debugging.
 
 ** Mutt credits
 
@@ -698,6 +703,33 @@ have been helpful with the development of Mutt.
  Copyright (C) 2006-2008 Rocco Rutte <pdmef@gmx.net>
 #+END_EXAMPLE
 
+** Mairix credits
+Jaro Mail includes a search engine for e-mails that is also licensed
+GNU GPL v2. Here below the names of the copyright holders and all
+those who have written it:
+
+#+BEGIN_EXAMPLE
+ Copyright (C) Richard P. Curnow  2002,2003,2004,2005,2006,2007,2008
+ Copyright (C) Sanjoy Mahajan 2005
+ Copyright (C) James Cameron 2005
+ Copyright (C) Paul Fox 2006
+#+END_EXAMPLE
+
+Mairix received contributions from: Anand Kumria André Costa, Andreas
+Amann, Andre Costa, Aredridel, Balázs Szabó, Bardur Arantsson,
+Benj. Mako Hill, Chris Mason, Christoph Dworzak, Christopher Rosado,
+Chung-chieh Shan, Claus Alboege, Corrin Lakeland, Dan Egnor, Daniel
+Jacobowitz, Dirk Huebner, Ed Blackman, Emil Sit, Felipe Gustavo de
+Almeida, Ico Doornekamp, Jaime Velasco Juan, James Leifer, Jerry
+Jorgenson, Joerg Desch, Johannes Schindelin, Johannes Weißl, John
+Arthur Kane, John Keener, Jonathan Kamens, Josh Purinton, Karsten
+Petersen, Kevin Rosenberg, Mark Hills, Martin Danielsson, Matthias
+Teege, Mikael Ylikoski, Mika Fischer, Oliver Braun, Paramjit Oberoi,
+Paul Fox, Peter Chines, Peter Jeremy, Robert Hofer, Roberto Boati,
+Samuel Tardieu, Sanjoy Mahajan, Satyaki Das, Steven Lumos, Tim Harder,
+Tom Doherty, Vincent Lefevre, Vladimir V. Kisil, Will Yardley,
+Wolfgang Weisselberg.
+
 ** Fetchmail credits
 
 Fetchmail is also licensed GNU GPL v2
@@ -730,6 +762,36 @@ General Public License as published by the Free Software Foundation;
 either version 3 of the License, or (at your option) any later
 version.
 
+** Statistics modules
+   We are including some (experimental, still) modules for statistical
+   visualization using JQuery libraries. The first module inspiring us
+   to implement such a functionality is Timecloud, then other modules
+   followed.
+
+#+BEGIN_EXAMPLE
+   Timecloud is Copyright (C) 2008-2009 by Stefan Marsiske
+   Dual licensed under the MIT and GPLv3 licenses.
+
+   TagCloud version 1.1.2
+   (c) 2006 Lyo Kato <lyo.kato@gmail.com>
+   TagCloud is freely distributable under the terms of an MIT-style license.
+
+   ExCanvas is Copyright 2006 Google Inc.
+   Licensed under the Apache License, Version 2.0 (the "License");
+
+   jQuery project is distributed by the JQuery Foundation under the
+   terms of either the GNU General Public License (GPL) Version 2.
+
+   The Sizzle selector engine (which is included inside the jQuery
+   library) is held by the Dojo Foundation and is licensed under the
+   MIT, GPL, and BSD licenses.
+
+   JQuery.sparkline 2.0 is licensed under the New BSD License
+
+   Visualize.JQuery is written by Scott Jehl
+   Copyright (c) 2009 Filament Group 
+   licensed under MIT (filamentgroup.com/examples/mit-license.txt)
+#+END_EXAMPLE
 * Appendix
 
 ** Configuration examples
diff --git a/install.sh b/install.sh
@@ -99,6 +99,14 @@ if ! [ -r $WORKDIR/Mutt.txt ]; then
 # Mutt specific customizations
 # uncomment and fill in with your settings
 
+## dark background (uncomment to switch)
+# source \$HOME/Mail/jaro/.mutt/colors-solarized-dark-256
+# source \$HOME/Mail/jaro/.mutt/colors-solarized-dark-16
+
+## light background (uncomment to switch)
+# source \$HOME/Mail/jaro/.mutt/colors-solarized-light-256
+# source \$HOME/Mail/jaro/.mutt/colors-solarized-light-16
+
 # set locale=""                   # system default locale ("C")
 # set signature='~/.signature'    # signature file
 # set pgp_sign_as="0xC2B68E39"    # UserID/KeyID for signing
diff --git a/src/fetchdate.c b/src/fetchdate.c
@@ -1,3 +1,25 @@
+/* Jaro Mail
+ *
+ *  (C) Copyright 2012 Denis Roio <jaromil@dyne.org>
+ *      
+ * This is just a simple use of Mairix API to extract formatted dates
+ *
+ * This source code is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Public License as published 
+ * by the Free Software Foundation; either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * This source code 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.
+ * Please refer to the GNU Public License for more details.
+ *
+ * You should have received a copy of the GNU Public License along with
+ * this source code; if not, write to:
+ * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
 #include <stdio.h>
 #include <mairix.h>
 
diff --git a/src/jaro b/src/jaro
@@ -20,7 +20,7 @@
 # this source code; if not, write to:
 # Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-VERSION=0.9
+VERSION=1.0
 DATE=Jun/2012
 JAROMAILEXEC=$0
 typeset -a OLDARGS
@@ -272,11 +272,13 @@ Main commands:
  fetch  download unread emails from [account]
  send   send all mails queued in the outbox
  peek   look into the [account] mailbox without downloading
+ search search local maildirs for a string or an expression
 
 Options:
 
  -a     use a particular account instead of default (keyword)
  -l     whitelist or blacklist to use with learn/query/forget
+
  -h     print this help
  -v     version information for this tool
  -q     run quietly without printing informations
@@ -294,11 +296,16 @@ Maintenance commands:
  query    read mail from stdin, return 0 if known to list
  learn    learn addresses from mails piped in stdin
  forget   remove addresses found in mails piped in stdin
+ list     prints out the list of known addresses
 
- backup   move all mails older than N days from a maildir to another
- rmdupes  remove all duplicate mails into a maildir
+ backup   move mails from a maildir to a new one with search expr
+ rmdupes  remove all duplicated e-mails into a maildir
  merge    merge a maildir into another, removing all duplicates
+ filter   passes a maildir through the filters
 
+ stat     prints a statistical overview on stored maildirs
+ cert     import most common SSL certificates from the Internet
+ ramdisk  open/close activates fast cache in RAM on Mac/OSX
 Please report bugs on <http://bugs.dyne.org>.
 EOF
 }
diff --git a/src/mutt/colors-solarized-dark-16 b/src/mutt/colors-solarized-dark-16
@@ -0,0 +1,151 @@
+# vim: filetype=muttrc
+
+#
+#
+# make sure that you are using mutt linked against slang, not ncurses, or
+# suffer the consequences of weird color issues. use "mutt -v" to check this.
+
+# custom body highlights -----------------------------------------------
+# highlight my name and other personally relevant strings
+#color body          yellow          default         "(ethan|schoonover)"
+# custom index highlights ----------------------------------------------
+# messages which mention my name in the body
+#color index         yellow          default         "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P"
+#color index         J_cream         brightwhite     "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P"
+#color index         yellow          cyan            "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P"
+#color index         yellow          J_magent        "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P"
+## messages which are in reference to my mails
+#color index         J_magent        default         "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P"
+#color index         J_magent        brightwhite     "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P"
+#color index         J_magent        cyan            "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P"
+#color index         J_magent        red             "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P"
+
+# for background in 16 color terminal, valid background colors include:
+# base03, bg, black, any of the non brights
+
+# basic colors ---------------------------------------------------------
+color normal        brightyellow    default         
+color error         red             default         
+color tilde         black           default         
+color message       cyan            default         
+color markers       red             white           
+color attachment    white           default         
+color search        brightmagenta   default         
+#color status        J_black         J_status        
+color status        brightyellow    black           
+color indicator     brightblack     yellow          
+color tree          yellow          default                                     # arrow in threads
+
+# basic monocolor screen
+mono  bold          bold
+mono  underline     underline
+mono  indicator     reverse
+mono  error         bold
+
+# index ----------------------------------------------------------------
+
+#color index         red             default         "~D(!~p|~p)"               # deleted
+#color index         black           default         ~F                         # flagged
+#color index         brightred       default         ~=                         # duplicate messages
+#color index         brightgreen     default         "~A!~N!~T!~p!~Q!~F!~D!~P"  # the rest
+#color index         J_base          default         "~A~N!~T!~p!~Q!~F!~D"      # the rest, new
+color index         red             default         "~A"                        # all messages
+color index         brightred       default         "~E"                        # expired messages
+color index         blue            default         "~N"                        # new messages
+color index         blue            default         "~O"                        # old messages
+color index         brightmagenta   default         "~Q"                        # messages that have been replied to
+color index         brightgreen     default         "~R"                        # read messages
+color index         blue            default         "~U"                        # unread messages
+color index         blue            default         "~U~$"                      # unread, unreferenced messages
+color index         brightyellow    default         "~v"                        # messages part of a collapsed thread
+color index         brightyellow    default         "~P"                        # messages from me
+color index         cyan            default         "~p!~F"                     # messages to me
+color index         cyan            default         "~N~p!~F"                   # new messages to me
+color index         cyan            default         "~U~p!~F"                   # unread messages to me
+color index         brightgreen     default         "~R~p!~F"                   # messages to me
+color index         red             default         "~F"                        # flagged messages
+color index         red             default         "~F~p"                      # flagged messages to me
+color index         red             default         "~N~F"                      # new flagged messages
+color index         red             default         "~N~F~p"                    # new flagged messages to me
+color index         red             default         "~U~F~p"                    # new flagged messages to me
+color index         black           red             "~D"                        # deleted messages
+color index         brightcyan      default         "~v~(!~N)"                  # collapsed thread with no unread
+color index         yellow          default         "~v~(~N)"                   # collapsed thread with some unread
+color index         green           default         "~N~v~(~N)"                 # collapsed thread with unread parent
+# statusbg used to indicated flagged when foreground color shows other status
+# for collapsed thread
+color index         red             black           "~v~(~F)!~N"                # collapsed thread with flagged, no unread
+color index         yellow          black           "~v~(~F~N)"                 # collapsed thread with some unread & flagged
+color index         green           black           "~N~v~(~F~N)"               # collapsed thread with unread parent & flagged
+color index         green           black           "~N~v~(~F)"                 # collapsed thread with unread parent, no unread inside, but some flagged
+color index         cyan            black           "~v~(~p)"                   # collapsed thread with unread parent, no unread inside, some to me directly
+color index         yellow          red             "~v~(~D)"                   # thread with deleted (doesn't differentiate between all or partial)
+#color index         yellow          default         "~(~N)"                    # messages in threads with some unread
+#color index         green           default         "~S"                       # superseded messages
+#color index         red             default         "~T"                       # tagged messages
+#color index         brightred       red             "~="                       # duplicated messages
+
+# message headers ------------------------------------------------------
+
+#color header        brightgreen     default         "^"
+color hdrdefault    brightgreen     default         
+color header        brightyellow    default         "^(From)"
+color header        blue            default         "^(Subject)"
+
+# body -----------------------------------------------------------------
+
+color quoted        blue            default         
+color quoted1       cyan            default         
+color quoted2       yellow          default         
+color quoted3       red             default         
+color quoted4       brightred       default         
+
+color signature     brightgreen     default         
+color bold          black           default         
+color underline     black           default         
+color normal        default         default         
+#
+color body          brightcyan      default         "[;:][-o][)/(|]"    # emoticons
+color body          brightcyan      default         "[;:][)(|]"         # emoticons
+color body          brightcyan      default         "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
+                                                     |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
+                                                     |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
+color body          brightcyan      default         "[ ][*][^*]*[*][ ]?" # more emoticon?
+color body          brightcyan      default         "[ ]?[*][^*]*[*][ ]" # more emoticon?
+
+## pgp
+
+color body          red             default         "(BAD signature)"
+color body          cyan            default         "(Good signature)"
+color body          brightblack     default         "^gpg: Good signature .*"
+color body          brightyellow    default         "^gpg: "
+color body          brightyellow    red             "^gpg: BAD signature from.*"
+mono  body          bold                            "^gpg: Good signature"
+mono  body          bold                            "^gpg: BAD signature from.*"
+
+# yes, an insance URL regex
+color body          red             default         "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
+# and a heavy handed email regex
+#color body          J_magent        default         "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
+
+# Various smilies and the like
+#color body          brightwhite     default         "<[Gg]>"                            # <g>
+#color body          brightwhite     default         "<[Bb][Gg]>"                        # <bg>
+#color body          yellow          default         " [;:]-*[})>{(<|]"                  # :-) etc...
+# *bold*
+#color body          blue            default         "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+#mono  body          bold                            "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+# _underline_
+#color body          blue            default         "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+#mono  body          underline                       "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+# /italic/  (Sometimes gets directory names)
+#color body         blue            default         "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+#mono body          underline                       "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+
+# Border lines.
+#color body          blue            default         "( *[-+=#*~_]){6,}"
+
+#folder-hook .                  "color status        J_black         J_status        "
+#folder-hook gmail/inbox        "color status        J_black         yellow          "
+#folder-hook gmail/important    "color status        J_black         yellow          "
+
diff --git a/src/mutt/colors-solarized-dark-256 b/src/mutt/colors-solarized-dark-256
@@ -0,0 +1,151 @@
+# vim: filetype=muttrc
+
+#
+#
+# make sure that you are using mutt linked against slang, not ncurses, or
+# suffer the consequences of weird color issues. use "mutt -v" to check this.
+
+# custom body highlights -----------------------------------------------
+# highlight my name and other personally relevant strings
+#color body          color136        color234        "(ethan|schoonover)"
+# custom index highlights ----------------------------------------------
+# messages which mention my name in the body
+#color index         color136        color234        "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P"
+#color index         J_cream         color230        "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P"
+#color index         color136        color37         "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P"
+#color index         color136        J_magent        "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P"
+## messages which are in reference to my mails
+#color index         J_magent        color234        "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P"
+#color index         J_magent        color230        "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P"
+#color index         J_magent        color37         "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P"
+#color index         J_magent        color160        "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P"
+
+# for background in 16 color terminal, valid background colors include:
+# base03, bg, black, any of the non brights
+
+# basic colors ---------------------------------------------------------
+color normal        color241        color234        
+color error         color160        color234        
+color tilde         color235        color234        
+color message       color37         color234        
+color markers       color160        color254        
+color attachment    color254        color234        
+color search        color61         color234        
+#color status        J_black         J_status        
+color status        color241        color235        
+color indicator     color234        color136        
+color tree          color136        color234                                    # arrow in threads
+
+# basic monocolor screen
+mono  bold          bold
+mono  underline     underline
+mono  indicator     reverse
+mono  error         bold
+
+# index ----------------------------------------------------------------
+
+#color index         color160        color234        "~D(!~p|~p)"               # deleted
+#color index         color235        color234        ~F                         # flagged
+#color index         color166        color234        ~=                         # duplicate messages
+#color index         color240        color234        "~A!~N!~T!~p!~Q!~F!~D!~P"  # the rest
+#color index         J_base          color234        "~A~N!~T!~p!~Q!~F!~D"      # the rest, new
+color index         color160        color234        "~A"                        # all messages
+color index         color166        color234        "~E"                        # expired messages
+color index         color33         color234        "~N"                        # new messages
+color index         color33         color234        "~O"                        # old messages
+color index         color61         color234        "~Q"                        # messages that have been replied to
+color index         color240        color234        "~R"                        # read messages
+color index         color33         color234        "~U"                        # unread messages
+color index         color33         color234        "~U~$"                      # unread, unreferenced messages
+color index         color241        color234        "~v"                        # messages part of a collapsed thread
+color index         color241        color234        "~P"                        # messages from me
+color index         color37         color234        "~p!~F"                     # messages to me
+color index         color37         color234        "~N~p!~F"                   # new messages to me
+color index         color37         color234        "~U~p!~F"                   # unread messages to me
+color index         color240        color234        "~R~p!~F"                   # messages to me
+color index         color160        color234        "~F"                        # flagged messages
+color index         color160        color234        "~F~p"                      # flagged messages to me
+color index         color160        color234        "~N~F"                      # new flagged messages
+color index         color160        color234        "~N~F~p"                    # new flagged messages to me
+color index         color160        color234        "~U~F~p"                    # new flagged messages to me
+color index         color235        color160        "~D"                        # deleted messages
+color index         color245        color234        "~v~(!~N)"                  # collapsed thread with no unread
+color index         color136        color234        "~v~(~N)"                   # collapsed thread with some unread
+color index         color64         color234        "~N~v~(~N)"                 # collapsed thread with unread parent
+# statusbg used to indicated flagged when foreground color shows other status
+# for collapsed thread
+color index         color160        color235        "~v~(~F)!~N"                # collapsed thread with flagged, no unread
+color index         color136        color235        "~v~(~F~N)"                 # collapsed thread with some unread & flagged
+color index         color64         color235        "~N~v~(~F~N)"               # collapsed thread with unread parent & flagged
+color index         color64         color235        "~N~v~(~F)"                 # collapsed thread with unread parent, no unread inside, but some flagged
+color index         color37         color235        "~v~(~p)"                   # collapsed thread with unread parent, no unread inside, some to me directly
+color index         color136        color160        "~v~(~D)"                   # thread with deleted (doesn't differentiate between all or partial)
+#color index         color136        color234        "~(~N)"                    # messages in threads with some unread
+#color index         color64         color234        "~S"                       # superseded messages
+#color index         color160        color234        "~T"                       # tagged messages
+#color index         color166        color160        "~="                       # duplicated messages
+
+# message headers ------------------------------------------------------
+
+#color header        color240        color234        "^"
+color hdrdefault    color240        color234        
+color header        color241        color234        "^(From)"
+color header        color33         color234        "^(Subject)"
+
+# body -----------------------------------------------------------------
+
+color quoted        color33         color234        
+color quoted1       color37         color234        
+color quoted2       color136        color234        
+color quoted3       color160        color234        
+color quoted4       color166        color234        
+
+color signature     color240        color234        
+color bold          color235        color234        
+color underline     color235        color234        
+color normal        color244        color234        
+#
+color body          color245        color234        "[;:][-o][)/(|]"    # emoticons
+color body          color245        color234        "[;:][)(|]"         # emoticons
+color body          color245        color234        "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
+                                                     |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
+                                                     |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
+color body          color245        color234        "[ ][*][^*]*[*][ ]?" # more emoticon?
+color body          color245        color234        "[ ]?[*][^*]*[*][ ]" # more emoticon?
+
+## pgp
+
+color body          color160        color234        "(BAD signature)"
+color body          color37         color234        "(Good signature)"
+color body          color234        color234        "^gpg: Good signature .*"
+color body          color241        color234        "^gpg: "
+color body          color241        color160        "^gpg: BAD signature from.*"
+mono  body          bold                            "^gpg: Good signature"
+mono  body          bold                            "^gpg: BAD signature from.*"
+
+# yes, an insance URL regex
+color body          color160        color234        "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
+# and a heavy handed email regex
+#color body          J_magent        color234        "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
+
+# Various smilies and the like
+#color body          color230        color234        "<[Gg]>"                            # <g>
+#color body          color230        color234        "<[Bb][Gg]>"                        # <bg>
+#color body          color136        color234        " [;:]-*[})>{(<|]"                  # :-) etc...
+# *bold*
+#color body          color33         color234        "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+#mono  body          bold                            "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+# _underline_
+#color body          color33         color234        "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+#mono  body          underline                       "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+# /italic/  (Sometimes gets directory names)
+#color body         color33         color234        "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+#mono body          underline                       "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+
+# Border lines.
+#color body          color33         color234        "( *[-+=#*~_]){6,}"
+
+#folder-hook .                  "color status        J_black         J_status        "
+#folder-hook gmail/inbox        "color status        J_black         color136        "
+#folder-hook gmail/important    "color status        J_black         color136        "
+
diff --git a/src/mutt/colors-solarized-light-16 b/src/mutt/colors-solarized-light-16
@@ -0,0 +1,151 @@
+# vim: filetype=muttrc
+
+#
+#
+# make sure that you are using mutt linked against slang, not ncurses, or
+# suffer the consequences of weird color issues. use "mutt -v" to check this.
+
+# custom body highlights -----------------------------------------------
+# highlight my name and other personally relevant strings
+#color body          yellow          default         "(ethan|schoonover)"
+# custom index highlights ----------------------------------------------
+# messages which mention my name in the body
+#color index         yellow          default         "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P"
+#color index         J_cream         brightblack     "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P"
+#color index         yellow          cyan            "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P"
+#color index         yellow          J_magent        "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P"
+## messages which are in reference to my mails
+#color index         J_magent        default         "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P"
+#color index         J_magent        brightblack     "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P"
+#color index         J_magent        cyan            "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P"
+#color index         J_magent        red             "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P"
+
+# for background in 16 color terminal, valid background colors include:
+# base03, bg, black, any of the non brights
+
+# basic colors ---------------------------------------------------------
+color normal        brightblue      default         
+color error         red             default         
+color tilde         white           default         
+color message       cyan            default         
+color markers       red             black           
+color attachment    black           default         
+color search        brightmagenta   default         
+#color status        J_black         J_status        
+color status        brightblue      white           
+color indicator     brightwhite     yellow          
+color tree          yellow          default                                     # arrow in threads
+
+# basic monocolor screen
+mono  bold          bold
+mono  underline     underline
+mono  indicator     reverse
+mono  error         bold
+
+# index ----------------------------------------------------------------
+
+#color index         red             default         "~D(!~p|~p)"               # deleted
+#color index         white           default         ~F                         # flagged
+#color index         brightred       default         ~=                         # duplicate messages
+#color index         brightcyan      default         "~A!~N!~T!~p!~Q!~F!~D!~P"  # the rest
+#color index         J_base          default         "~A~N!~T!~p!~Q!~F!~D"      # the rest, new
+color index         red             default         "~A"                        # all messages
+color index         brightred       default         "~E"                        # expired messages
+color index         blue            default         "~N"                        # new messages
+color index         blue            default         "~O"                        # old messages
+color index         brightmagenta   default         "~Q"                        # messages that have been replied to
+color index         brightcyan      default         "~R"                        # read messages
+color index         blue            default         "~U"                        # unread messages
+color index         blue            default         "~U~$"                      # unread, unreferenced messages
+color index         brightblue      default         "~v"                        # messages part of a collapsed thread
+color index         brightblue      default         "~P"                        # messages from me
+color index         cyan            default         "~p!~F"                     # messages to me
+color index         cyan            default         "~N~p!~F"                   # new messages to me
+color index         cyan            default         "~U~p!~F"                   # unread messages to me
+color index         brightcyan      default         "~R~p!~F"                   # messages to me
+color index         red             default         "~F"                        # flagged messages
+color index         red             default         "~F~p"                      # flagged messages to me
+color index         red             default         "~N~F"                      # new flagged messages
+color index         red             default         "~N~F~p"                    # new flagged messages to me
+color index         red             default         "~U~F~p"                    # new flagged messages to me
+color index         white           red             "~D"                        # deleted messages
+color index         brightgreen     default         "~v~(!~N)"                  # collapsed thread with no unread
+color index         yellow          default         "~v~(~N)"                   # collapsed thread with some unread
+color index         green           default         "~N~v~(~N)"                 # collapsed thread with unread parent
+# statusbg used to indicated flagged when foreground color shows other status
+# for collapsed thread
+color index         red             white           "~v~(~F)!~N"                # collapsed thread with flagged, no unread
+color index         yellow          white           "~v~(~F~N)"                 # collapsed thread with some unread & flagged
+color index         green           white           "~N~v~(~F~N)"               # collapsed thread with unread parent & flagged
+color index         green           white           "~N~v~(~F)"                 # collapsed thread with unread parent, no unread inside, but some flagged
+color index         cyan            white           "~v~(~p)"                   # collapsed thread with unread parent, no unread inside, some to me directly
+color index         yellow          red             "~v~(~D)"                   # thread with deleted (doesn't differentiate between all or partial)
+#color index         yellow          default         "~(~N)"                    # messages in threads with some unread
+#color index         green           default         "~S"                       # superseded messages
+#color index         red             default         "~T"                       # tagged messages
+#color index         brightred       red             "~="                       # duplicated messages
+
+# message headers ------------------------------------------------------
+
+#color header        brightcyan      default         "^"
+color hdrdefault    brightcyan      default         
+color header        brightblue      default         "^(From)"
+color header        blue            default         "^(Subject)"
+
+# body -----------------------------------------------------------------
+
+color quoted        blue            default         
+color quoted1       cyan            default         
+color quoted2       yellow          default         
+color quoted3       red             default         
+color quoted4       brightred       default         
+
+color signature     brightcyan      default         
+color bold          white           default         
+color underline     white           default         
+color normal        default         default         
+#
+color body          brightgreen     default         "[;:][-o][)/(|]"    # emoticons
+color body          brightgreen     default         "[;:][)(|]"         # emoticons
+color body          brightgreen     default         "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
+                                                     |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
+                                                     |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
+color body          brightgreen     default         "[ ][*][^*]*[*][ ]?" # more emoticon?
+color body          brightgreen     default         "[ ]?[*][^*]*[*][ ]" # more emoticon?
+
+## pgp
+
+color body          red             default         "(BAD signature)"
+color body          cyan            default         "(Good signature)"
+color body          brightwhite     default         "^gpg: Good signature .*"
+color body          brightblue      default         "^gpg: "
+color body          brightblue      red             "^gpg: BAD signature from.*"
+mono  body          bold                            "^gpg: Good signature"
+mono  body          bold                            "^gpg: BAD signature from.*"
+
+# yes, an insance URL regex
+color body          red             default         "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
+# and a heavy handed email regex
+#color body          J_magent        default         "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
+
+# Various smilies and the like
+#color body          brightblack     default         "<[Gg]>"                            # <g>
+#color body          brightblack     default         "<[Bb][Gg]>"                        # <bg>
+#color body          yellow          default         " [;:]-*[})>{(<|]"                  # :-) etc...
+# *bold*
+#color body          blue            default         "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+#mono  body          bold                            "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+# _underline_
+#color body          blue            default         "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+#mono  body          underline                       "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+# /italic/  (Sometimes gets directory names)
+#color body         blue            default         "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+#mono body          underline                       "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+
+# Border lines.
+#color body          blue            default         "( *[-+=#*~_]){6,}"
+
+#folder-hook .                  "color status        J_black         J_status        "
+#folder-hook gmail/inbox        "color status        J_black         yellow          "
+#folder-hook gmail/important    "color status        J_black         yellow          "
+
diff --git a/src/mutt/colors-solarized-light-256 b/src/mutt/colors-solarized-light-256
@@ -0,0 +1,151 @@
+# vim: filetype=muttrc
+
+#
+#
+# make sure that you are using mutt linked against slang, not ncurses, or
+# suffer the consequences of weird color issues. use "mutt -v" to check this.
+
+# custom body highlights -----------------------------------------------
+# highlight my name and other personally relevant strings
+#color body          color136        color233        "(ethan|schoonover)"
+# custom index highlights ----------------------------------------------
+# messages which mention my name in the body
+#color index         color136        color233        "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P"
+#color index         J_cream         color233        "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P"
+#color index         color136        color37         "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P"
+#color index         color136        J_magent        "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P"
+## messages which are in reference to my mails
+#color index         J_magent        color233        "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P"
+#color index         J_magent        color233        "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P"
+#color index         J_magent        color37         "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P"
+#color index         J_magent        color160        "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P"
+
+# for background in 16 color terminal, valid background colors include:
+# base03, bg, black, any of the non brights
+
+# basic colors ---------------------------------------------------------
+color normal        color244        color233        
+color error         color160        color233        
+color tilde         color254        color233        
+color message       color37         color233        
+color markers       color160        color234        
+color attachment    color234        color233        
+color search        color61         color233        
+#color status        J_black         J_status        
+color status        color244        color254        
+color indicator     color230        color136        
+color tree          color136        color233                                    # arrow in threads
+
+# basic monocolor screen
+mono  bold          bold
+mono  underline     underline
+mono  indicator     reverse
+mono  error         bold
+
+# index ----------------------------------------------------------------
+
+#color index         color160        color233        "~D(!~p|~p)"               # deleted
+#color index         color254        color233        ~F                         # flagged
+#color index         color166        color233        ~=                         # duplicate messages
+#color index         color245        color233        "~A!~N!~T!~p!~Q!~F!~D!~P"  # the rest
+#color index         J_base          color233        "~A~N!~T!~p!~Q!~F!~D"      # the rest, new
+color index         color160        color233        "~A"                        # all messages
+color index         color166        color233        "~E"                        # expired messages
+color index         color33         color233        "~N"                        # new messages
+color index         color33         color233        "~O"                        # old messages
+color index         color61         color233        "~Q"                        # messages that have been replied to
+color index         color245        color233        "~R"                        # read messages
+color index         color33         color233        "~U"                        # unread messages
+color index         color33         color233        "~U~$"                      # unread, unreferenced messages
+color index         color244        color233        "~v"                        # messages part of a collapsed thread
+color index         color244        color233        "~P"                        # messages from me
+color index         color37         color233        "~p!~F"                     # messages to me
+color index         color37         color233        "~N~p!~F"                   # new messages to me
+color index         color37         color233        "~U~p!~F"                   # unread messages to me
+color index         color245        color233        "~R~p!~F"                   # messages to me
+color index         color160        color233        "~F"                        # flagged messages
+color index         color160        color233        "~F~p"                      # flagged messages to me
+color index         color160        color233        "~N~F"                      # new flagged messages
+color index         color160        color233        "~N~F~p"                    # new flagged messages to me
+color index         color160        color233        "~U~F~p"                    # new flagged messages to me
+color index         color254        color160        "~D"                        # deleted messages
+color index         color239        color233        "~v~(!~N)"                  # collapsed thread with no unread
+color index         color136        color233        "~v~(~N)"                   # collapsed thread with some unread
+color index         color64         color233        "~N~v~(~N)"                 # collapsed thread with unread parent
+# statusbg used to indicated flagged when foreground color shows other status
+# for collapsed thread
+color index         color160        color254        "~v~(~F)!~N"                # collapsed thread with flagged, no unread
+color index         color136        color254        "~v~(~F~N)"                 # collapsed thread with some unread & flagged
+color index         color64         color254        "~N~v~(~F~N)"               # collapsed thread with unread parent & flagged
+color index         color64         color254        "~N~v~(~F)"                 # collapsed thread with unread parent, no unread inside, but some flagged
+color index         color37         color254        "~v~(~p)"                   # collapsed thread with unread parent, no unread inside, some to me directly
+color index         color136        color160        "~v~(~D)"                   # thread with deleted (doesn't differentiate between all or partial)
+#color index         color136        color233        "~(~N)"                    # messages in threads with some unread
+#color index         color64         color233        "~S"                       # superseded messages
+#color index         color160        color233        "~T"                       # tagged messages
+#color index         color166        color160        "~="                       # duplicated messages
+
+# message headers ------------------------------------------------------
+
+#color header        color245        color233        "^"
+color hdrdefault    color245        color233        
+color header        color244        color233        "^(From)"
+color header        color33         color233        "^(Subject)"
+
+# body -----------------------------------------------------------------
+
+color quoted        color33         color233        
+color quoted1       color37         color233        
+color quoted2       color136        color233        
+color quoted3       color160        color233        
+color quoted4       color166        color233        
+
+color signature     color245        color233        
+color bold          color254        color233        
+color underline     color254        color233        
+color normal        color240        color233        
+#
+color body          color239        color233        "[;:][-o][)/(|]"    # emoticons
+color body          color239        color233        "[;:][)(|]"         # emoticons
+color body          color239        color233        "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
+                                                     |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
+                                                     |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
+color body          color239        color233        "[ ][*][^*]*[*][ ]?" # more emoticon?
+color body          color239        color233        "[ ]?[*][^*]*[*][ ]" # more emoticon?
+
+## pgp
+
+color body          color160        color233        "(BAD signature)"
+color body          color37         color233        "(Good signature)"
+color body          color230        color233        "^gpg: Good signature .*"
+color body          color244        color233        "^gpg: "
+color body          color244        color160        "^gpg: BAD signature from.*"
+mono  body          bold                            "^gpg: Good signature"
+mono  body          bold                            "^gpg: BAD signature from.*"
+
+# yes, an insance URL regex
+color body          color160        color233        "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
+# and a heavy handed email regex
+#color body          J_magent        color233        "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
+
+# Various smilies and the like
+#color body          color233        color233        "<[Gg]>"                            # <g>
+#color body          color233        color233        "<[Bb][Gg]>"                        # <bg>
+#color body          color136        color233        " [;:]-*[})>{(<|]"                  # :-) etc...
+# *bold*
+#color body          color33         color233        "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+#mono  body          bold                            "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
+# _underline_
+#color body          color33         color233        "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+#mono  body          underline                       "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+# /italic/  (Sometimes gets directory names)
+#color body         color33         color233        "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+#mono body          underline                       "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+
+# Border lines.
+#color body          color33         color233        "( *[-+=#*~_]){6,}"
+
+#folder-hook .                  "color status        J_black         J_status        "
+#folder-hook gmail/inbox        "color status        J_black         color136        "
+#folder-hook gmail/important    "color status        J_black         color136        "
+
diff --git a/src/zlibs/helpers b/src/zlibs/helpers
@@ -151,62 +151,49 @@ ramdisk() {
 # CERT
 # downloads and/or installs certificates
 cert() {
-    if [ -z $1 ]; then
-	error "Certificate handler called without an argument"
-	return 1;
-    fi
-
-    certificate="$1"
 
-    case $certificate in
-	gmail)
-	    cc=Equifax_Secure_Certificate_Authority
-	    if ! [ -r $WORKDIR/certs/${cc}.pem ]; then
+    act "Downloading all known certificates (needs Internet connectivity)"
+
+#	gmail)
+    cc=Equifax_Secure_Certificate_Authority
+    if ! [ -r $WORKDIR/certs/${cc}.pem ]; then
+	
+	curl -o $WORKDIR/certs/${cc}.pem \
+	    "https://www.geotrust.com/resources/root_certificates/certificates/${cc}.cer"
+	openssl x509 -in \
+	    $WORKDIR/certs/${cc}.pem -fingerprint \
+	    -subject -issuer -serial -hash -noout
+    fi
+    notice "Google CA succesfully installed"
+
+#	dyne|autistici|freaknet)
+    cc=Autistici_Certificate_Authority
+    if ! [ -r $WORKDIR/certs/${cc}.pem ]; then
+	curl -o $WORKDIR/certs/${cc}.pem \
+	    "http://ca.autistici.org/ca.pem"
+	openssl x509 -in \
+	    $WORKDIR/certs/${cc}.pem \
+	    -fingerprint -subject -issuer -serial -hash -noout
+    fi
+    notice "Aut/Inv CA succesfully installed"
+
+#	riseup)
+    cc=RiseupCA
+    if ! [ -r $WORKDIR/certs/${cc}.pem ]; then
+	curl -o $WORKDIR/certs/${cc}.pem "https://help.riseup.net/assets/43052/RiseupCA.pem"
+	openssl x509 -in \
+	    $WORKDIR/certs/${cc}.pem \
+	    -fingerprint -subject -issuer -serial -hash -noout
+    fi
+    notice "Riseup CA succesfully installed"
 
-		curl -o $WORKDIR/certs/${cc}.pem \
-		    "https://www.geotrust.com/resources/root_certificates/certificates/${cc}.cer"
-		openssl x509 -in \
-		    $WORKDIR/certs/${cc}.pem -fingerprint \
-		    -subject -issuer -serial -hash -noout
-	    fi
-	    ;;
-	dyne|autistici|freaknet)
-	    cc=Autistici_Certificate_Authority
-	    if ! [ -r $WORKDIR/certs/${cc}.pem ]; then
-		curl -o $WORKDIR/certs/${cc}.pem \
-		    "http://ca.autistici.org/ca.pem"
-		openssl x509 -in \
-		    $WORKDIR/certs/${cc}.pem \
-		    -fingerprint -subject -issuer -serial -hash -noout
-	    fi
-	    ;;
-	riseup)
-	    cc=RiseupCA
-	    if ! [ -r $WORKDIR/certs/${cc}.pem ]; then
-		curl -o $WORKDIR/certs/${cc}.pem "https://help.riseup.net/assets/43052/RiseupCA.pem"
-		openssl x509 -in \
-		    $WORKDIR/certs/${cc}.pem \
-		    -fingerprint -subject -issuer -serial -hash -noout
-	    fi
-	    ;;
-	*)
-	    cc="`basename $certificate`"
-	    curl -o "$WORKDIR/certs/${cc}" "$certificate"
-	    if [ $? != 0 ]; then
-		error "Error downloading certificate: $certificate"
-		return 1
-	    fi
-	    openssl x509 -in \
-		"$WORKDIR/certs/${cc}" \
-		-fingerprint -subject -issuer -serial -hash -noout
-	    ;;
-    esac
     act "refreshing certificates"
     c_rehash $WORKDIR/certs > /dev/null
     if [ $? != 0 ]; then
 	error "Error refreshing certificates in $WORKDIR/certs"
 	c_rehash $WORKDIR/certs
     fi
+    notice "Done importing most common certificates."
     return 0
 }