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
}