diff options
| author | Paul Iannetta <paul.iannetta@ens-lyon.fr> | 2022-04-21 23:53:31 +0200 |
|---|---|---|
| committer | Paul Iannetta <paul.iannetta@ens-lyon.fr> | 2022-04-22 08:24:15 +0200 |
| commit | e83c4515e0179221e7315abb606452ab2f7b561d (patch) | |
| tree | 355f7c3fd0e9e05c5d8d7ddc2786521eb8bd8b5c | |
| parent | e5cb4057fda66962ccb710b460a363bd8aab7414 (diff) | |
add partial mutt config
| -rwxr-xr-x | .config/mutt/aliases | 2 | ||||
| -rwxr-xr-x | .config/mutt/bindings | 31 | ||||
| -rwxr-xr-x | .config/mutt/colors/darnir.mutt | 169 | ||||
| -rwxr-xr-x | .config/mutt/colors/default.mutt | 91 | ||||
| -rwxr-xr-x | .config/mutt/colors/gruvbox-alpha.mutt | 88 | ||||
| -rwxr-xr-x | .config/mutt/colors/gruvbox.mutt | 88 | ||||
| -rwxr-xr-x | .config/mutt/colors/monokai.mutt | 67 | ||||
| -rwxr-xr-x | .config/mutt/colors/solarized.mutt | 73 | ||||
| -rwxr-xr-x | .config/mutt/common | 60 | ||||
| -rwxr-xr-x | .config/mutt/ens | 21 | ||||
| -rwxr-xr-x | .config/mutt/gpg | 12 | ||||
| -rwxr-xr-x | .config/mutt/inria | 22 | ||||
| -rwxr-xr-x | .config/mutt/mailboxes.py | 12 | ||||
| -rwxr-xr-x | .config/mutt/mailcap | 11 | ||||
| -rwxr-xr-x | .config/mutt/mailcap.new | 107 | ||||
| -rwxr-xr-x | .config/mutt/mutt-gnupg-howto | 611 | ||||
| -rwxr-xr-x | .config/mutt/muttrc | 39 | ||||
| -rwxr-xr-x | .config/mutt/paplevetoe | 22 | ||||
| -rwxr-xr-x | .config/mutt/pgp | 24 | ||||
| -rwxr-xr-x | .config/mutt/sig_ens.sig | 0 | ||||
| -rwxr-xr-x | .config/mutt/sig_inria.sig | 0 | ||||
| -rwxr-xr-x | .config/mutt/sig_paplevetoe.sig | 0 | ||||
| -rwxr-xr-x | .config/mutt/vmailboxes | 1 |
23 files changed, 1551 insertions, 0 deletions
diff --git a/.config/mutt/aliases b/.config/mutt/aliases new file mode 100755 index 0000000..8c7056e --- /dev/null +++ b/.config/mutt/aliases @@ -0,0 +1,2 @@ +# vim: set ft=muttrc + diff --git a/.config/mutt/bindings b/.config/mutt/bindings new file mode 100755 index 0000000..efb8675 --- /dev/null +++ b/.config/mutt/bindings @@ -0,0 +1,31 @@ +# == +# Regular bindings +# =========================== + +# Ctrl-Shift-P – Previous Mailbox +bind index,pager \CP sidebar-prev + +# Ctrl-Shift-N – Next Mailbox +bind index,pager \CN sidebar-next + +# Ctrl-Shift-O – Open Highlighted Mailbox +bind index,pager \cO sidebar-open + +# Shift-Tab-t — Toggle sidebar +bind index,pager <backtab>t sidebar-toggle-visible + +# i — Notmuch query +bind index i vfolder-from-query + +# == +# Macros +# =========================== +macro generic ,<Space> ":source ~/.mail_config/mutt/muttrc\n" "Reload mutt's configuration file" + +#macro index \cn <next-unread-mailbox> + +macro pager j <next-line> + +macro pager k <previous-line> + +# vim: ft=muttrc diff --git a/.config/mutt/colors/darnir.mutt b/.config/mutt/colors/darnir.mutt new file mode 100755 index 0000000..fae2160 --- /dev/null +++ b/.config/mutt/colors/darnir.mutt @@ -0,0 +1,169 @@ +# Credit: https://gist.github.com/darnir/0c3cedf42c7684c8f6ae50a765edb066 +# for background in 16 color terminal, valid background colors include: +# base03, bg, black, any of the non brights + +# style notes: +# when bg=235, that's a highlighted message +# normal bg=233 + +# basic colors --------------------------------------------------------- +# color normal brightyellow default +color error color196 color235 # message line error text +color tilde color81 color233 # vi-like tildes marking blank lines +color message color82 color235 +color markers brightcolor232 color222 # wrapped-line /^\+/ markers +color attachment brightcolor165 color235 # attachment headers +color search color232 color154 # search patterns in pager +color status brightcolor232 color39 +color indicator brightcolor232 color154 # selected email in index +color tree brightcolor165 color233 # arrow in threads (`-->') + +# basic monochrome screen +mono bold bold +mono underline underline +mono indicator reverse +mono error bold +mono header bold "^(From|Subject|Date|To|Cc|Bcc):" +mono quoted bold + +# index ---------------------------------------------------------------- + +color index color160 color233 "~A" # all messages +color index color166 color233 "~E" # expired messages +color index brightcolor154 color233 "~N" # new messages +color index color154 color233 "~O" # old messages +color index color244 color233 "~R" # read messages +color index brightcolor39 color233 "~Q" # messages that have been replied to +color index brightcolor154 color233 "~U" # unread messages +color index brightcolor154 color233 "~U~$" # unread, unreferenced messages +color index color222 color233 "~v" # messages part of a collapsed thread +color index color222 color233 "~P" # messages from me +#color index color39 color233 "~p!~F" # messages to me +#color index color39 color233 "~N~p!~F" # new messages to me +#color index color39 color233 "~U~p!~F" # unread messages to me +#color index color244 color233 "~R~p!~F" # messages to me +color index brightcolor165 color233 "~F" # flagged messages +color index brightcolor165 color233 "~F~p" # flagged messages to me +color index brightcolor165 color233 "~N~F" # new flagged messages +color index brightcolor165 color233 "~N~F~p" # new flagged messages to me +color index brightcolor165 color233 "~U~F~p" # new flagged messages to me +color index color232 color196 "!~N ~D" # deleted messages +color index color232 color196 "~N ~D" # deleted new messages +color index color244 color233 "~v~(!~N)" # collapsed thread with no unread +color index color81 color233 "~v~(~N)" # collapsed thread with some unread +color index color81 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 color233 "~v~(~F)!~N" # collapsed thread with flagged, no unread +color index color81 color233 "~v~(~F~N)" # collapsed thread with some unread & flagged +color index color81 color233 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged +color index color81 color233 "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged +color index color39 color233 "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly +color index color81 color160 "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial) +color index color222 color233 "~T" # tagged messages +color index brightcolor222 color233 "~T~F" # tagged, flagged messages +color index brightcolor222 color233 "~T~N" # tagged, new messages +color index brightcolor222 color233 "~T~U" # tagged, unread messages + +# 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 brightgreen default "~A~N!~T!~p!~Q!~F!~D" # the rest, new +color index black red "~D" # deleted messages +color index yellow default "~(~N)" # messages in threads with some unread +color index green default "~S" # superseded messages +color index yellow default "~T" # tagged messages +color index brightred red "~=" # duplicated messages + +# message headers ------------------------------------------------------ + +color hdrdefault brightcolor222 color235 +color header brightcolor39 color235 "^(From|To|Cc|Bcc)" +color header brightcolor165 color235 "^(Subject|Date)" + +# body ----------------------------------------------------------------- + +color quoted color39 color235 +color quoted1 color165 color235 +color quoted2 color39 color235 +color quoted3 color222 color235 +color quoted4 color166 color235 +color signature color81 color235 # everything below /^--\s*$/ + +color bold color255 color233 +color underline color233 color244 +color normal color244 color233 + +## pgp + +color body color160 color233 "(BAD signature)" +color body color39 color233 "(Good signature)" +color body color235 color233 "^gpg: Good signature .*" +color body color241 color233 "^gpg: " +color body color241 color160 "^gpg: BAD signature from.*" +mono body bold "^gpg: Good signature" +mono body bold "^gpg: BAD signature from.*" + +# yes, an insane URL regex +color body brightcolor39 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 brightcolor39 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]\\])" + +# simplified regex for URL & email +#color body magenta default "(ftp|https?|gopher|news|telnet|finger)://[^ \"\t\r\n]+" +#color body magenta default "[-a-z_0-9.]+@[-a-z_0-9.]+" + +# _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:]]|$)" + +# Color if the attachment is autoviewed +color attach_headers brightgreen default "Autoview" + +# Color only the brackets around the headers +color attach_headers brightyellow default "^\\[--" +color attach_headers brightyellow default "--]$" + +# Color the mime type and the size +color attach_headers green default "Type: [a-z]+/[a-z0-9\-]+" +color attach_headers green default "Size: [0-9\.]+[KM]" + +# Color GPGME signature checks +color attach_headers brightgreen default "Good signature from.*" +color attach_headers brightred default "Bad signature from.*" +color attach_headers brightred default "BAD signature from.*" +color attach_headers brightred default "Note: This key has expired!" +color attach_headers brightmagenta default "Problem signature from.*" +color attach_headers brightmagenta default "WARNING: This key is not certified with a trusted signature!" +color attach_headers brightmagenta default " There is no indication that the signature belongs to the owner." +color attach_headers brightmagenta default "can't handle these multiple signatures" +color attach_headers brightmagenta default "signature verification suppressed" +color attach_headers brightmagenta default "invalid node with packet of type" + +# color index_collapsed +# color index_date +# color index_flags +# color index_label +# color index_number +# color index_size +# color index_subject +# color index_tag +# color index_tags + +# color prompt + +# color sidebar_divider +# color sidebar_flagged +# color sidebar_highlight +# color sidebar_indicator +# color sidebar_new +# color sidebar_ordinary +# color sidebar_spoolfile + +# color progress white red +color index_flags default red '~F' +# vi: ft=muttrc ts=4 sw=4 sts=4 et diff --git a/.config/mutt/colors/default.mutt b/.config/mutt/colors/default.mutt new file mode 100755 index 0000000..efba1cb --- /dev/null +++ b/.config/mutt/colors/default.mutt @@ -0,0 +1,91 @@ +# This color scheme aims to highlight as much useful information as +# possible without spoiling user's visual experience by irritating +# contrasts. Optimized for dark or transparent background. +# --Dmitry Borodaenko <angdraug@mail.ru> + +# override defaults, make transparency work +color normal white default +color attachment green default # +color hdrdefault cyan default +color indicator black cyan +color markers brightred default +color quoted green default +color signature brightblue default # +color status brightgreen blue +color tilde brightblue default # +color tree red default + +# paint different quote levels +color quoted green default +color quoted1 cyan default +color quoted2 yellow default +color quoted3 red default + +color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # email +color body brightblue default "(http|ftp)://[\-\.\,/+=&%~_:?\#a-zA-Z0-9]+" # URL +color body brightgreen default "(^| |[-.[:alnum:]]+:+)~?\(/[-_.'[:alnum:]]+\)+/?" # Unix file path +color body brightgreen default "(^| +)[[:alpha:]]:[-_.[:alnum:]\]+" # DOS file path +color body brightmagenta default "(^|[ '\"]+)\\$[[:alpha:]][-_[:alpha:]]+" # variable +color body brightred default "(^| )[*_]+[-&[:alnum:]]+[*_]( |$)" # bold/underline +color body yellow default "(^| )[;:8ö][-^o]?[)>(|/\\]+" # smiley +color body red default "[!?]{3,}" # exclamation +color body green default "^ *[-+*o] +" # list item + +# date formats +color body cyan default "[0-9]{1,2}:[0-9]{2}(:[0-9]{2})?( ?(AM|PM|am|pm))?( +[+-][0-9]{4})?" +color body cyan default "(\(19|20\)?[0-9]{2}/[01]?[0-9]/[0123]?[0-9]|[0123]?[0-9][/.][01]?[0-9][/.]\(19|20\)?[0-9]{2})(( at)? +[0-9]{1,2}:[0-9]{2}(:[0-9]{2})?( ?(AM|PM|am|pm))?( +[+-][0-9]{4})?)?" +color body cyan default "((Sun(day)?|Mon(day)?|Tue(sday)?|Wed(nesday)?|Thu(sday)?|Fri(day)?|Sat(urday)?),? +)?(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sep(ember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)[ .]+[0-9]{1,2}(st|nd|rd|th)?,?( +(19|20)[0-9]{2}(,?( at)? [0-9]{1,2}:[0-9]{2}(:[0-9]{2})?( ?(AM|PM|am|pm))?( +[+-][0-9]{4})?)?)?" +color body cyan default "((Sun(day)?|Mon(day)?|Tue(sday)?|Wed(nesday)?|Thu(sday)?|Fri(day)?|Sat(urday)?),? +)?[0-9]{1,2}(st|nd|rd|th)?[ .]+(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sep(ember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?),?( +(19|20)?[0-9]{2})?(( at)? [0-9]{1,2}:[0-9]{2}(:[0-9]{2})?( ?(AM|PM|am|pm))?( +[+-][0-9]{4})?)?" + +color header brightgreen default ^From: +color header brightcyan default ^To: +color header brightcyan default ^Reply-To: +color header brightcyan default ^Cc: +color header brightblue default ^Subject: + +color header brightcyan default "^newsgroups: " +color header yellow default "^Delivered-To: " +color header green default "^sender: " +color header green default "^organi[sz]ation: " +color header green default "x-editor: " +color header green default "(x-mailer|user-agent): " +color header green default "X-Operating-System: " +color header green default "X-MimeOLE: " +color header green default "X-Accept-Language: " +color header red default "^message-id:" +color header red default "^in-reply-to: " +color header red default "^references: " +color header cyan default "^followup-to: " +color header cyan default "^mail-followup-to: " +color header cyan default "^reply-to: " +color header magenta default "MIME-Version: " +color header magenta default "Content-Type: " +color header magenta default "Content-Transfer-Encoding: " +color header magenta default "Content-Disposition: " +color header magenta default "Content-Encoding: " +color header magenta default "Content-Language: " + +color status brightwhite blue + +color index brightblue default '~P' # from me +color index cyan default '~p' # personal +color index brightcyan default '~G' # PGP +color index brightred default '~F' # flagged +color index green default '~Q' # replied +color index brightwhite default '~N' # new +color index red default '~D' # deleted + +# threads +#color index brightyellow default "~h 'References: +<.+>'" +#color index yellow default "~h 'References: +<.+> +<.+>'" +#color index brightred default "~h 'References: +<.+> +<.+> +<.+>'" +#color index red default "~h 'References: +<.+> +<.+> +<.+> +<.+>'" +#color index blue default "~h 'References: +<.+> +<.+> +<.+> +<.+> +<.+>'" +#color index green default "~h 'References: +<.+> +<.+> +<.+> +<.+> +<.+> +<.+>'" + +# spam +color index magenta default "\(Resent-\)?Message-Id: <>" +color index magenta default "\(Resent-\)?Message-Id: '<.* .*>'" +color index magenta default "\(Resent-\)?Message-Id: localhost" +color index magenta default "! \(Resent-\)?Message-Id: @" +color index magenta default '~C Undisclosed.*Recipients' diff --git a/.config/mutt/colors/gruvbox-alpha.mutt b/.config/mutt/colors/gruvbox-alpha.mutt new file mode 100755 index 0000000..da72fe4 --- /dev/null +++ b/.config/mutt/colors/gruvbox-alpha.mutt @@ -0,0 +1,88 @@ +# gruvbox dark (contrast dark): +# Credit: https://www.sthu.org/code/codesnippets/mutt-gruvbox.html + +# bg0 = 234 +# bg1 = 237 +# bg2 = 239 +# bg3 = 241 +# bg4 = 243 +# +# gray = 245 +# +# fg0 = 229 +# fg1 = 223 +# fg2 = 250 +# fg3 = 248 +# fg4 = 246 +# +# red = 167 +# green = 142 +# yellow = 214 +# blue = 109 +# purple = 175 +# aqua = 108 +# orange = 208 + + +# See http://www.mutt.org/doc/manual/#color + +color attachment color109 default +color bold color229 default +color error color167 default +color hdrdefault color246 default +color indicator color223 color237 +color markers color243 default +color normal color223 default +color quoted color250 default +color quoted1 color108 default +color quoted2 color250 default +color quoted3 color108 default +color quoted4 color250 default +color quoted5 color108 default +color search color234 color208 +color signature color108 default +color status color234 color250 +color tilde color243 default +color tree color142 default +color underline color223 color239 + +color sidebar_divider color250 default +color sidebar_new color142 default + +color index color142 default ~N +color index color108 default ~O +color index color109 default ~P +color index color214 default ~F +color index color175 default ~Q +color index color167 default ~= +color index color234 color223 ~T +color index color234 color167 ~D + +color header color214 default "^(To:|From:)" +color header color142 default "^Subject:" +color header color108 default "^X-Spam-Status:" +color header color108 default "^Received:" + +color body color142 default "[a-z]{3,256}://[-a-zA-Z0-9@:%._\\+~#=/?&,]+" +#color body color142 default "[a-zA-Z]([-a-zA-Z0-9_]+\\.){2,256}[-a-zA-Z0-9_]{2,256}" +color body color208 default "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+" +color body color208 default "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+" +color body color234 color214 "[;:]-*[)>(<lt;|]" +color body color229 default "\\*[- A-Za-z]+\\*" + +color body color214 default "^-.*PGP.*-*" +color body color142 default "^gpg: Good signature from" +color body color167 default "^gpg: Can't.*$" +color body color214 default "^gpg: WARNING:.*$" +color body color167 default "^gpg: BAD signature from" +color body color167 default "^gpg: Note: This key has expired!" +color body color214 default "^gpg: There is no indication that the signature belongs to the owner." +color body color214 default "^gpg: can't handle these multiple signatures" +color body color214 default "^gpg: signature verification suppressed" +color body color214 default "^gpg: invalid node with packet of type" +color compose header color223 default +color compose security_encrypt color175 default +color compose security_sign color109 default +color compose security_both color142 default +color compose security_none color208 default + diff --git a/.config/mutt/colors/gruvbox.mutt b/.config/mutt/colors/gruvbox.mutt new file mode 100755 index 0000000..78c0f17 --- /dev/null +++ b/.config/mutt/colors/gruvbox.mutt @@ -0,0 +1,88 @@ +# gruvbox dark (contrast dark): +# Credit: https://www.sthu.org/code/codesnippets/mutt-gruvbox.html + +# bg0 = 234 +# bg1 = 237 +# bg2 = 239 +# bg3 = 241 +# bg4 = 243 +# +# gray = 245 +# +# fg0 = 229 +# fg1 = 223 +# fg2 = 250 +# fg3 = 248 +# fg4 = 246 +# +# red = 167 +# green = 142 +# yellow = 214 +# blue = 109 +# purple = 175 +# aqua = 108 +# orange = 208 + + +# See http://www.mutt.org/doc/manual/#color + +color attachment color109 color234 +color bold color229 color234 +color error color167 color234 +color hdrdefault color246 color234 +color indicator color223 color237 +color markers color243 color234 +color normal color223 color234 +color quoted color250 color234 +color quoted1 color108 color234 +color quoted2 color250 color234 +color quoted3 color108 color234 +color quoted4 color250 color234 +color quoted5 color108 color234 +color search color234 color208 +color signature color108 color234 +color status color234 color250 +color tilde color243 color234 +color tree color142 color234 +color underline color223 color239 + +color sidebar_divider color250 color234 +color sidebar_new color142 color234 + +color index color142 color234 ~N +color index color108 color234 ~O +color index color109 color234 ~P +color index color214 color234 ~F +color index color175 color234 ~Q +color index color167 color234 ~= +color index color234 color223 ~T +color index color234 color167 ~D + +color header color214 color234 "^(To:|From:)" +color header color142 color234 "^Subject:" +color header color108 color234 "^X-Spam-Status:" +color header color108 color234 "^Received:" + +color body color142 color234 "[a-z]{3,256}://[-a-zA-Z0-9@:%._\\+~#=/?&,]+" +#color body color142 color234 "[a-zA-Z]([-a-zA-Z0-9_]+\\.){2,256}[-a-zA-Z0-9_]{2,256}" +color body color208 color234 "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+" +color body color208 color234 "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+" +color body color234 color214 "[;:]-*[)>(<lt;|]" +color body color229 color234 "\\*[- A-Za-z]+\\*" + +color body color214 color234 "^-.*PGP.*-*" +color body color142 color234 "^gpg: Good signature from" +color body color167 color234 "^gpg: Can't.*$" +color body color214 color234 "^gpg: WARNING:.*$" +color body color167 color234 "^gpg: BAD signature from" +color body color167 color234 "^gpg: Note: This key has expired!" +color body color214 color234 "^gpg: There is no indication that the signature belongs to the owner." +color body color214 color234 "^gpg: can't handle these multiple signatures" +color body color214 color234 "^gpg: signature verification suppressed" +color body color214 color234 "^gpg: invalid node with packet of type" +color compose header color223 color234 +color compose security_encrypt color175 color234 +color compose security_sign color109 color234 +color compose security_both color142 color234 +color compose security_none color208 color234 + diff --git a/.config/mutt/colors/monokai.mutt b/.config/mutt/colors/monokai.mutt new file mode 100755 index 0000000..feee89c --- /dev/null +++ b/.config/mutt/colors/monokai.mutt @@ -0,0 +1,67 @@ +# Credit: https://github.com/guiniol +# color setup +# +# ====================================================================== +# INDEX OBJECT PATTERN? pattern description +# index pattern default highlighting of the entire index line +# index_date the date field +# index_flags pattern %S %Z the message flags +# index_number %C the message number +# index_collapsed %M the number of messages in a collapsed thread +# index_author pattern %AaFLn the author name +# index_subject pattern %s the subject line +# index_size %c %l the message size +# index_label %y %Y the message label +# index_tags %g the transformed message tags +# index_tag pattern/tag %G an individual message tag +# ====================================================================== + +color normal default default +color index_number brightblack default +color index_date magenta default +color index_flags yellow default . +color index_collapsed cyan default +color index green default ~N +color index green default ~v~(~N) +color index red default ~F +color index cyan default ~T +color index blue default ~D +color index_label brightred default +color index_tags red default +color index_tag brightmagenta default "encrypted" +color index_tag brightgreen default "signed" +color index_tag yellow default "attachment" +color body brightwhite default ([a-zA-Z\+]+)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ # urls +color body green default [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ # mail addresses +color attachment yellow default +color signature green default +color search brightred black + +color indicator cyan brightblack +color error brightred default +color status brightcyan brightblack +color tree brightcyan default +color tilde cyan default +color progress white red + +color sidebar_indicator brightred default +color sidebar_highlight cyan brightblack +color sidebar_divider red default +color sidebar_flagged red default +color sidebar_new green default + +color hdrdefault color81 default +color header green default "^Subject: .*" +color header yellow default "^Date: .*" +color header red default "^Tags: .*" + +color quoted color60 default +color quoted1 yellow default + +color body brightgreen default "Good signature from.*" +color body green default "Fingerprint:( [A-Z0-9]{4}){5} ( [A-Z0-9]{4}){5}" +color body brightred default "Bad signature from.*" +color body brightred default "Note: This key has expired!" +color body brightmagenta default "Problem signature from.*" +color body brightmagenta default "WARNING: .*" + diff --git a/.config/mutt/colors/solarized.mutt b/.config/mutt/colors/solarized.mutt new file mode 100755 index 0000000..c90b571 --- /dev/null +++ b/.config/mutt/colors/solarized.mutt @@ -0,0 +1,73 @@ +# Screenshot http://trovao.droplinegnome.org/stuff/mutt-zenburnt.png +# +# This is a zenburn-based mutt color scheme that is not (even by far) +# complete. There's no copyright involved. Do whatever you want with it. +# Just be aware that I won't be held responsible if the current color-scheme +# explodes your mail client. ;) +# +# Do notice that this color scheme requires a terminal emulator that supports +# 256 color. Any modern X terminal emulator should have support for that and +# you can enable it by calling mutt as "TERM=xterm-256color mutt" or, if you +# use screen, by adding "term screen-256color" to your .screenrc. +# +# This file is in the public domain. +# + +# general-doesn't-fit stuff +color normal color188 color237 +#color error color115 color236 +color error color236 color210 +color markers color142 color238 +color tilde color108 color237 +color status color144 color234 + +# index stuff +#color indicator color229 color238 +color indicator color236 color188 +color tree color109 color237 +color index color188 color237 ~A +color index color228 color237 ~N # New +color index color174 color237 ~F # Flagged +color index color223 color237 ~O # Old +color index color108 color237 ~P # From me +color index color210 color237 ~D # Deleted + +# header stuff +color hdrdefault color223 color237 +color header color223 color237 "^Subject" + +# gpg stuff +color body color188 color237 "^gpg: Good signature.*" +color body color115 color236 "^gpg: BAD signature.*" +color body color174 color237 "^gpg: Can't check signature.*" +color body color174 color237 "^-----BEGIN PGP SIGNED MESSAGE-----" +color body color174 color237 "^-----BEGIN PGP SIGNATURE-----" +color body color174 color237 "^-----END PGP SIGNED MESSAGE-----" +color body color174 color237 "^-----END PGP SIGNATURE-----" +color body color174 color237 "^Version: GnuPG.*" +color body color174 color237 "^Comment: .*" + +# url, email and web stuff +color body color174 color237 "(finger|ftp|http|https|news|telnet)://[^ >]*" +color body color174 color237 "<URL:[^ ]*>" +color body color174 color237 "www\\.[-.a-z0-9]+\\.[a-z][a-z][a-z]?([-_./~a-z0-9]+)?" +color body color174 color237 "mailto: *[^ ]+\(\\i?subject=[^ ]+\)?" +color body color174 color237 "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+" + +# misc body stuff +color attachment color174 color237 #Add-ons to the message +color signature color223 color237 + +# quote levels +color quoted color108 color237 +color quoted1 color116 color237 +color quoted2 color247 color237 +color quoted3 color108 color237 +color quoted4 color116 color237 +color quoted5 color247 color237 +color quoted6 color108 color237 +color quoted7 color116 color237 +color quoted8 color247 color237 +color quoted9 color108 color237 + +# vim: set ft=muttrc diff --git a/.config/mutt/common b/.config/mutt/common new file mode 100755 index 0000000..92c9493 --- /dev/null +++ b/.config/mutt/common @@ -0,0 +1,60 @@ +#------------------------------------------------------# +# ~/.config/mutt/common + +set check_new = yes +set beep_new = yes +set realname = "Paul Iannetta" +set mail_check = 60 # Check for new mail in all mailboxes + # every minute +set timeout = 30 +set use_from = yes # Required for msmtp to know which account to use for emails + +set wait_key=no +set mail_check_stats +# defaults for how to open attachments +set mailcap_path = ~/.config/mutt/mailcap +auto_view text/html + +set sort = 'threads' +set sort_aux = 'last-date-received' +set imap_check_subscribed = yes + +set header_cache = ~/.config/mutt/cache/headers +set message_cachedir = ~/.config/mutt/cache/bodies +set certificate_file = ~/.config/mutt/certificates + +set move=no # Don't move mail from the spool. + +set wrap=80 + +unset use_domain +set index_format="%4C %Z %?X?a& ? %{%y%m%d} %-12.12L %?M?(#%03M)&(%4c)? %?y?(%.20Y) ?%s" + +# sidebar +# set sidebar_visible +set sidebar_short_path = yes +set sidebar_folder_indent = yes +set sidebar_indent_string = ".." +set sidebar_format = "%B%* %?N?%N?" +#======================================================# +set editor="nvim -c 'set tw=70 et' -c 'set spell' '+/^$' " +set edit_headers # See the headers when editing + +#======================================================# +# Order of headers and what to show +hdr_order Date: From: User-Agent: X-Mailer \ + To: Cc: Reply-To: Subject: +ignore * +unignore Date: From: User-Agent: X-Mailer: X-PGP-Key: \ + To: Cc: Reply-To: Subject: + +#======================================================# +# Odds and Ends +set sort_alias=alias # sort aliases in alpha order by alias name +set markers # mark wrapped lines of text in the pager with a + +set smart_wrap # Don't wrap mid-word +set pager_context=6 # Retain 6 lines of previous page when scrolling. +set status_on_top # Status bar on top. +push <show-version> # Shows mutt version at startup + +# vim: ft=muttrc diff --git a/.config/mutt/ens b/.config/mutt/ens new file mode 100755 index 0000000..e012489 --- /dev/null +++ b/.config/mutt/ens @@ -0,0 +1,21 @@ +# ens configuration + +# save copies of sent emails to the ${folder}Sent directory +# the '+' expands to $folders (like '~' to $HOME in the bash shell) +set record = +ens/sent +set postponed = +ens/drafts +set signature = ~/.config/mutt/sig_ens.sig +set from = "" + +# use msmtp to send outgoing mail to the mailserver +# see ~/.msmtp for configuration +set sendmail="/usr/bin/msmtp -C $HOME/.config/msmtp/msmtprc -a ens" + +# bcc myself to make gmail style threaded conversations +my_hdr bcc: name@domain + +# pgp settings +#set pgp_sign_as=MY_PGP_KEY_ID +#set pgp_autosign=yes + +# vim: set ft=muttrc diff --git a/.config/mutt/gpg b/.config/mutt/gpg new file mode 100755 index 0000000..5cefdc3 --- /dev/null +++ b/.config/mutt/gpg @@ -0,0 +1,12 @@ +set crypt_use_gpgme = yes +set crypt_autosign = yes +set crypt_verify_sig = yes +set crypt_replysign = yes +set crypt_replyencrypt = no +set crypt_replysignencrypted = no +set crypt_autoencrypt = no + +set pgp_default_key="105968781676391EBE04EBF3AF5D6D9C44D44F82" +set pgp_check_gpg_decrypt_status_fd +set pgp_use_gpg_agent = yes +set pgp_self_encrypt = yes diff --git a/.config/mutt/inria b/.config/mutt/inria new file mode 100755 index 0000000..e2ff14d --- /dev/null +++ b/.config/mutt/inria @@ -0,0 +1,22 @@ +# inria configuration + +# save copies of sent emails to the ${folder}Sent directory +# the '+' expands to $folders (like '~' to $HOME in the bash shell) +set record = +inria/sent +set postponed = +inria/drafts +set signature = ~/.mail_config/mutt/sig_inria.sig +set from = "" + +# use msmtp to send outgoing mail to the mailserver +# see ~/.msmtp for configuration +set sendmail="/usr/bin/msmtp -C $HOME/.config/msmtp/msmtprc -a inria" + +# bcc myself to make gmail style threaded conversations +my_hdr bcc: name@domain + +# pgp settings +#my_hdr X-PGP-Key: http://my.website.com/pubkey.asc +#set pgp_sign_as=MY_PGP_KEY_ID +#set pgp_autosign=yes + +# vim: set ft=muttrc diff --git a/.config/mutt/mailboxes.py b/.config/mutt/mailboxes.py new file mode 100755 index 0000000..1538122 --- /dev/null +++ b/.config/mutt/mailboxes.py @@ -0,0 +1,12 @@ +import sys +import json + +account = str(sys.argv[1]) + +mailboxes = [] +with open('/home/lys/.offlineimap/mbnames/{}.json'.format(account), 'r') as f: + data = json.load(f) + for folder in data: + mailboxes.append('"+{}/{}"'.format(account,folder['foldername'])) + +print('{}'.format(' '.join(mailboxes))) diff --git a/.config/mutt/mailcap b/.config/mutt/mailcap new file mode 100755 index 0000000..5732650 --- /dev/null +++ b/.config/mutt/mailcap @@ -0,0 +1,11 @@ +text/html; firefox %s >/dev/null 2>&1; nametemplate=%s.html; test=test -n "$DISPLAY"; +text/html; elinks %s; nametemplate=%s.html; copiousoutput +application/pdf; mutt_bgrun /usr/bin/zathura %s >/dev/null 2>&1; +image/png; mutt_bgrun sxiv %s >/dev/null 2>&1; +image/jpeg; mutt_bgrun sxiv %s >/dev/null 2>&1; +video/mp4; mutt_bgrun mpv %s >/dev/null 2>&1; +application/vnd.ms-excel; mutt_bgrun libreoffice %s >/dev/null 2>&1; +application/vnd.oasis.opendocument.text; mutt_bgrun libreoffice '%s' >/dev/null 2>&1; +application/vnd.openxmlformats-officedocument.wordprocessingml.document; mutt_bgrun libreoffice '%s' >/dev/null 2>&1; +application/vnd.oasis.opendocument.spreadsheet; mutt_bgrun libreoffice '%s' >/dev/null 2>&1; +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; mutt_bgrun libreoffice '%s' >/dev/null 2>&1; diff --git a/.config/mutt/mailcap.new b/.config/mutt/mailcap.new new file mode 100755 index 0000000..f6357e0 --- /dev/null +++ b/.config/mutt/mailcap.new @@ -0,0 +1,107 @@ +# This file tells mutt how to open mail attachments. Your distribution may come with one by default. + +application/gpg; gpg -d %s; copiousoutput +application/msexcel; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Microsoft Excel Document"; nametemplate=%s.xls +application/mspowerpoint; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Microsoft PowerPoint Document"; nametemplate=%s.ppt +application/msword; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Microsoft Word Document"; nametemplate=%s.doc +application/pdf; pdftotext -layout %s -; copiousoutput +application/rtf; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Rich Text Format"; nametemplate=%s.rtf +application/vnd.lotus-1-2-3; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Lotus 1-2-3 spreadsheet"; nametemplate=%s.123 +application/vnd.ms-excel.sheet.macroEnabled.12; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet with Macros Enabled"; nametemplate=%s.xlsm +application/vnd.ms-excel; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Microsoft Excel Document"; nametemplate=%s.xls +application/vnd.ms-excel.template.macroEnabled.12; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template with Macros Enabled"; nametemplate=%s.xltm +application/vnd.ms-excel; xls2csv '%s'; copiousoutput; description="MS Excel sheet"; +application/vnd.ms-powerpoint; catppt '%s'; copiousoutput; description="MS PowerPoint presentation"; +application/vnd.ms-powerpoint.presentation.macroEnabled.12; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation with Macros Enabled"; nametemplate=%s.pptm +application/vnd.ms-powerpoint.slideshow.macroEnabled.12; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show with Macros Enabled"; nametemplate=%s.ppsm +application/vnd.ms-powerpoint; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Microsoft PowerPoint Document"; nametemplate=%s.ppt +application/vnd.ms-powerpoint.template.macroEnabled.12; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template with Macros Enabled"; nametemplate=%s.potm +application/vnd.ms-word.document.macroEnabled.12; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document with Macros Enabled"; nametemplate=%s.docm +application/vnd.ms-word.template.macroEnabled.12; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document Template with Macros Enabled"; nametemplate=%s.dotm +application/vnd.ms-works; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Microsoft Works Document"; nametemplate=%s.wps +application/vnd.oasis.opendocument.chart; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenDocument Chart"; nametemplate=%s.odc +application/vnd.oasis.opendocument.database; soffice -no-oosplash -base '%s'; edit=soffice -no-oosplash -base '%s'; test=test -n "$DISPLAY"; description="OpenDocument Database"; nametemplate=%s.odb +application/vnd.oasis.opendocument.formula; soffice -no-oosplash -math '%s'; edit=soffice -no-oosplash -math '%s'; test=test -n "$DISPLAY"; description="OpenDocument Formula"; nametemplate=%s.odf +application/vnd.oasis.opendocument.graphics; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="OpenDocument Drawing"; nametemplate=%s.odg +application/vnd.oasis.opendocument.graphics-template; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="OpenDocument Drawing Template"; nametemplate=%s.otg +application/vnd.oasis.opendocument.presentation; odt2txt --width=96 %s; copiousoutput +application/vnd.oasis.opendocument.presentation; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="OpenDocument Presentation"; nametemplate=%s.odp +application/vnd.oasis.opendocument.presentation-template; odt2txt --width=96 %s; copiousoutput +application/vnd.oasis.opendocument.presentation-template; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="OpenDocument Presentation Template"; nametemplate=%s.otp +application/vnd.oasis.opendocument.spreadsheet; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet"; nametemplate=%s.ods +application/vnd.oasis.opendocument.spreadsheet-template; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet Template"; nametemplate=%s.ots +application/vnd.oasis.opendocument.text-master; odt2txt --width=96 %s; copiousoutput +application/vnd.oasis.opendocument.text-master; soffice -no-oosplash -global '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="OpenDocument Master Document"; nametemplate=%s.odm +application/vnd.oasis.opendocument.text; odt2txt --width=96 %s; copiousoutput +application/vnd.oasis.opendocument.text; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="OpenDocument Text Document"; nametemplate=%s.odt +application/vnd.oasis.opendocument.text-template; odt2txt --width=96 %s; copiousoutput +application/vnd.oasis.opendocument.text-template; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="OpenDocument Text Document Template"; nametemplate=%s.ott +application/vnd.oasis.opendocument.text-web; odt2txt --width=96 %s; copiousoutput +application/vnd.oasis.opendocument.text-web; soffice -no-oosplash -web '%s'; edit=soffice -no-oosplash -web '%s'; test=test -n "$DISPLAY"; description="OpenDocument HTML Document Template"; nametemplate=%s.oth +application/vnd.openxmlformats-officedocument.presentationml.presentation; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation"; nametemplate=%s.pptx +application/vnd.openxmlformats-officedocument.presentationml.slideshow; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show"; nametemplate=%s.ppsx +application/vnd.openxmlformats-officedocument.presentationml.template; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template"; nametemplate=%s.potx +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet"; nametemplate=%s.xlsx +application/vnd.openxmlformats-officedocument.spreadsheetml.template; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template"; nametemplate=%s.xltx +application/vnd.openxmlformats-officedocument.wordprocessingml.document; docx2txt < %s -; copiousoutput +application/vnd.openxmlformats-officedocument.wordprocessingml.document; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document"; nametemplate=%s.docx +application/vnd.openxmlformats-officedocument.wordprocessingml.template; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document Template"; nametemplate=%s.dotx +application/vnd.stardivision.calc; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="StarCalc 5.0"; nametemplate=%s.sdc +application/vnd.stardivision.chart; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="StarChart 5.0"; nametemplate=%s.sds +application/vnd.stardivision.draw; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="StarDraw 5.0"; nametemplate=%s.sda +application/vnd.stardivision.impress; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="StarImpress 5.0"; nametemplate=%s.sdd +application/vnd.stardivision.math; soffice -no-oosplash -math '%s'; edit=soffice -no-oosplash -math '%s'; test=test -n "$DISPLAY"; description="StarMath 5.0"; nametemplate=%s.sdf +application/vnd.stardivision.writer-global; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="StarWriter 5.0 Master Document"; nametemplate=%s.sgl +application/vnd.stardivision.writer; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="StarWriter 5.0"; nametemplate=%s.sdw +application/vnd.sun.xml.base; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; description="OpenOffice.org Database"; nametemplate=%s.sdb +application/vnd.sun.xml.calc; odt2txt --width=96 %s; copiousoutput +application/vnd.sun.xml.calc; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet"; nametemplate=%s.sxc +application/vnd.sun.xml.calc.template; odt2txt --width=96 %s; copiousoutput +application/vnd.sun.xml.calc.template; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet Template"; nametemplate=%s.stc +application/vnd.sun.xml.draw; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing"; nametemplate=%s.sxd +application/vnd.sun.xml.draw.template; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing Template"; nametemplate=%s.std +application/vnd.sun.xml.impress; odt2txt --width=96 %s; copiousoutput +application/vnd.sun.xml.impress; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation"; nametemplate=%s.sxi +application/vnd.sun.xml.impress.template; odt2txt --width=96 %s; copiousoutput +application/vnd.sun.xml.impress.template; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation Template"; nametemplate=%s.sti +application/vnd.sun.xml.math; soffice -no-oosplash -math '%s'; edit=soffice -no-oosplash -math '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Formula"; nametemplate=%s.sxm +application/vnd.sun.xml.writer.global; odt2txt --width=96 %s; copiousoutput +application/vnd.sun.xml.writer.global; soffice -no-oosplash -global '%s'; edit=soffice -no-oosplash --writer '%s'; description="OpenOffice.org Master Document"; nametemplate=%s.sxg +application/vnd.sun.xml.writer; odt2txt --width=96 %s; copiousoutput +application/vnd.sun.xml.writer; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; description="OpenOffice.org Text Document"; nametemplate=%s.sxw +application/vnd.sun.xml.writer.template; odt2txt --width=96 %s; copiousoutput +application/vnd.sun.xml.writer.template; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; description="OpenOffice.org Text Document Template"; nametemplate=%s.stw +application/vnd.wordperfect; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="WordPerfect Document"; nametemplate=%s.wp +application/wordperfect; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="WordPerfect Document"; nametemplate=%s.wp +application/x-7z-compressed; 7z l %s; copiousoutput +application/x-7z-compressed-tar; tar --list %s; copiousoutput +application/x-bzip1-compressed-tar; tar --list %s; copiousoutput +application/x-bzip1; tar --list %s; copiousoutput +application/x-bzip-compressed-tar; tar --list %s; copiousoutput +application/x-bzip; tar --list %s; copiousoutput +application/x-bzpdf; pdftotext -layout %s -; copiousoutput +application/x-dbase; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="xBase Document"; nametemplate=%s.dbf +application/x-dbf; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="xBase Document"; nametemplate=%s.dbf +application/x-extension-txt; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Plain Text Document"; nametemplate=%s.txt +application/x-gzpdf; pdftotext -layout %s -; copiousoutput +application/x-lzma-compressed-tar; xz -l %s; copiousoutput +application/x-lzma; xz -l %s; copiousoutput +application/x-pdf; pdftotext -layout %s -; copiousoutput +application/x-quattropro; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Quattro Pro 6 for Windows Spreadsheet"; nametemplate=%s.wb2 +application/x-t602; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="T602 Document"; nametemplate=%s.602 +application/x-tar; tar --list %s; copiousoutput +application/x-tarz; tar --list %s; copiousoutput +application/x-xz-compressed-tar; xz -l %s; copiousoutput +application/x-xz; xz -l %s; copiousoutput +application/x-zip-compressed; unzip -l %s; copiousoutput +application/x-zip; unzip -l %s; copiousoutput +application/zip; unzip -l %s; copiousoutput +image/*; feh %s +text/csv; less %s; copiousoutput +text/html; less '%s'; needsterminal +text/mathml; soffice -no-oosplash -math '%s'; edit=soffice -no-oosplash -math '%s'; test=test -n "$DISPLAY"; description="MathML Formula"; nametemplate=%s.mml +text/plain; less '%s'; needsterminal +text/rtf; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Rich Text Format"; nametemplate=%s.rtf +text/spreadsheet; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Spreadsheet Interchange Document"; nametemplate=%s.slk +text/tab-separated-values; less %s; copiousoutput +text/x-csv; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="CSV Document"; nametemplate=%s.csv diff --git a/.config/mutt/mutt-gnupg-howto b/.config/mutt/mutt-gnupg-howto new file mode 100755 index 0000000..cea471a --- /dev/null +++ b/.config/mutt/mutt-gnupg-howto @@ -0,0 +1,611 @@ +======================================================================== + + Everything You Need To Know To Start Using GnuPG with Mutt + +======================================================================== + + By Justin R. Miller <justin@solidlinux.com> + + Revision 0.1, Released 23 September 2001 + +======================================================================== + + I. Purpose + II. Overview + III. Assumptions + IV. Configuring GnuPG + V. Protecting Your Private Key + VI. Publicizing Your Public Key + VII. Understanding Validity and Your Web of Trust + VIII. Understanding The Need For Message Signatures + IX. Understanding How Signatures Are Made + X. Understanding How Encryption Is Done + XI. A Practical Example of Manual Key Management + XII. A Practical Example of Manual Signing and Verification + XIII. A Practical Example of Manual Encryption and Decryption + XIV. Configuring Mutt For Use With GnuPG + XV. Trying It All Out + XVI. Links For More Information + XVII. Contributors + XVIII. Feedback + +======================================================================== + +I. Purpose + +I'm writing this document for a couple of reasons. Firstly, I believe +that everyone should be using encryption and signatures in their email. + +Secondly, I believe that if you are already using a mail client such as +Mutt (which a lot of people are), then there is absolutely no reason for +you not to be using PGP-compatible software. + +Thirdly, all of the documentation that I've seen thus far is geared +toward someone who is already familiar with PGP, so it just explains +things like how to configure Mutt to do such tasks as automatically sign +outgoing messages or write a procmail recipe to rewrite old-style inline +PGP messages as S/MIME messages. This info means little if you don't +understand the technical jargon. By no means do I want to trample the +existing documentation for Mutt or GnuPG, the Mutt-i, GnuPG and PGP +Howto, nor any other existing documentation. I want simply to provide a +resource for the use of Mutt with GnuPG exclusively and to summarize the +important points of the whole matter so that one can get started quickly +and responsibly. + +Fourthly, I am trying to promote both Mutt and GnuPG, as free software +projects, for use in everyday communications. + +Lastly, I enjoy writing tutorials and I hope that this one is of use to +many people. I did a lot of research and I figured a number of things +out on my own, and now I want to help people along. + +======================================================================== + +II. Overview + +When you are finished with this document, you will be able to send and +receive cryptographically signed and/or encrypted email with the Mutt +mail reader and GnuPG, the GNU software implementation of OpenPGP +(RFC2440). If you want to know why you should use encryption, please +read about that topic first (see the links at the end of this document). + +Using GnuPG with Mutt is quite easy, but the main things to be learned +are the details and the theory behind the actual actions. This document +will explain the need for signing and how to sign messages, how to +verify signatures on mail sent to you, how to encrypt messages, and how +to decrypt messages. It will also show you, within the scope of Mutt, +how to collect and manage the public keys of your correspondents and how +to manage your own private key. Lastly, it will show you how to +publicize your own public key and how to encourage others to use PGP +when communicating with you. + +======================================================================== + +III. Assumptions + +Before reading this document, you should have a working knowledge of the +Mutt mail reader and you should know the basics of public key +cryptography. You should understand that a public key is for others to +use when encrypting messages to you and when verifying signatures from +you, and that a private key is used for creating signatures and for +decrypting messages to you. + +======================================================================== + +IV. Configuring GnuPG + +Follow the instructions that came with GnuPG in order to create a +private and public key. If you are not sure what values to use, pick +the default values for key type and key size and use your name and email +address as you would normally address your email. + +The only other thing that you might want to do is to configure GnuPG to +automatically fetch public keys as necessary. This comes in very handy +with Mutt, as you won't have to go and download and import a key +manually in another terminal. In order to do this, add this line to +your ~/.gnupg/options file: + + keyserver <keyserver address> + +Some good keyservers are: + + wwwkeys.pgp.net + search.keyserver.net + pgp.ai.mit.edu + +Please note that key retrievals do not happen over HTTP and as such, the +keyserver address should not start with 'http://'. + +You may test this out by retrieving my public key: + + gpg --recv-keys 0xC9C40C31 + +You may then confirm that the key was added to your keyring: + + gpg --list-keys justin + +======================================================================== + +V. Protecting Your Private Key + +The most important security points to remember in all of this are to +protect your private keyring file, and above that, to protect your +passphrase. There is still a chance that your private key can be +cracked without the passphrase, but it is slim in the hands of one +person. + +You should limit the number of machines on which your private key is +copied. You should only transfer your private key via a floppy disk or +other physical media. If you do not trust the environment on which you +will be working to be free from the possiblity of snooping (i.e. a work +computer where others have access to your personal files), then you +should not introduce your private key to this environment. Either that, +or you should create a separate key for use as a "work key" and keep +your "home key" in a safe environment. + +Theft of your private key by anyone means theft of your identity. In an +increasingly digital world, your private key will soon carry as much +weight as a photo ID, and in some situations already carries more. + +======================================================================== + +VI. Publicizing Your Public Key + +People will need your public key both to verify signed messages by you +and to send you encrypted messages. You can make it available by +putting it on a website, publishing it in print, mailing it via email or +postal mail, faxing it, uploading it to a keyserver, or any number of +other means. + +The more places your public key is put, the better, since there is a +lower chance of all of them being modified and distributed falsely. +However, just because a key can be obtained from multiple places and all +copies may match doesn't mean that the key should be considered valid. +A key should only be considered valid (i.e. truly belonging to its +owner) if it does so within your web of trust (see next section). To +clarify, you can determine whether or not a message originated from a +particular key, but you cannot, aside from a validity check, determine +whether that key belongs to who it seems to belong to. + +You can find my public key in this document, by searching a keyserver +for key ID 0xC9C40C31 or my name, or from my website. In addition, Mutt +makes it easy to send your public key to someone (once Mutt is +configured to work with GnuPG as described below) through the Esc-k key +sequence. + +You may also add an X-header to your outgoing mail to provide key +download information. All of my personal mail includes this header: + + X-PGP-Key: http://solidlinux.com/~justin/pubkey.asc + +All of these approaches, as well as signing all outgoing mail, help +publicize the fact that you wish to use cryptography for secure email +communication. These things will also often generate questions about +what the signature attachment means or why you have a file full of +garbled characters on your website. This lets you have all the more +chances to publicize PGP usage and awareness. + +There is considerable debate as whether signing messages that are sent +out to mass audiences (via mailing lists and the like) is appropriate. +I hope to make available in the near future some arguments for both +sides of this debate, but if you'd like more info, you can search the +mutt-users and gnupg-users mailing list archives. + +======================================================================== + +VII. Understanding Validity and Your Web of Trust + +'Validity' for a particular key refers to the knowledge that the key +belongs to the person to whom you expect it to belong. This knowledge +comes about based on your trust in the people who have signed the key +(including, but not limited to, the key owner). + +'Trust' in a person is a property of your particular installation of +GnuPG. Trust is a private value that only you have to know about and +refers to whether or not you trust the person's signature on a key to be +as good as your signature on a key, and the degree to which that trust +exists. Initially, key owners have a trust value of 'unknown'. You may +give them a trust value of 'none' if they are known to improperly sign +keys. A value of 'marginal' means that they understand key signing and +perform it properly. A value of 'full' means that they have an +excellent understanding of key signing and that you trust their +signature on a key as well as if you had signed the key yourself. + +By default, a key is considered valid if it is signed by at least one +person to whom you give full trust, or it is signed by at least three +people to whom you give marginal trust. This can of course be +reconfigured, and a lower number of marginally trusted owners would +signify a smaller number of people who would have to conspire against +you to pass a key off as valid. + +Without the necessary trusted signatures, the key is not considered +valid. This does not necessarily mean that the key does not belong to +whom you expect it to, but that the software is warning you that it has +no way of knowing. Obviously, the web of trust is the weak point in +public key cryptography, but when used properly can introduce some level +of assurance into the situation. + +Allow me to illustrate the importance of key validity with an example. +Say that you have met someone on IRC and that she has helped you for a +long time with many systems administration issues. She tells you that +she is going to send you a script that you should run as root on your +machine. If you know this script to come from this person, you would +have no problem running it on your machine, due to your trust in her. +But, perhaps someone has previously hijacked the communication between +you and friend in which you obtained her public key. Then, they could +have possibly altered the message to contain a harmful script and passed +it off as valid. The end result is that you are harmed and that you +possibly blame your friend. + +If you had first validated the public key being used, this would have +been avoided. You could have done this by signing the key yourself. +You also could have insured that the key was signed by at least one +other person to whom you have given full trust. Lastly, you could have +insured that the key was signed by at least three key owners to whom you +have given marginal trust. + +In order to sign a public key with your own private key, you must be +absolutely sure that the key belongs to a person who is who they say +they are. You should use a reliable method of communication to verify +the key fingerprint of the key before signing it with your own. You may +obtain a key fingerprint by doing this: + + gpg --fingerprint <key owner name> + +For example, my key fingerprint is: + + 2231 DFF0 869E E3A5 885A E7D4 F787 7A2B C9C4 0C31 + +If you communicate with the key owner, perhaps in person, or over the +phone (if you know their voice), or over certified mail, you know them +to be who they say they are, and the key fingerprints match, then you +may sign the key. You do this by issuing this command: + + gpg --sign-key <key owner name> + +In order to assign trust to a key owner, you must assign the owner a +value in your GnuPG trust database. You do this by editing their key: + + gpg --edit-key <key owner name> + +Type 'trust' and then follow the directions. + +After all of this is done, if you trust someone fully to understand the +significance of key signing, you can thereby, via your web of trust, +validate all keys signed by them. + +======================================================================== + +VIII. Understanding The Need For Message Signatures + +The first reason for message signatures is authenticity. It is a +largely unknown fact that the From: header of email can be trivially +forged. A quick glance can lead you to believe that the mail was sent +by someone who might not have had anything to do with the message. A +signature will help you determine if the mail was really sent by who you +think it was sent by. + +The second reason for signatures is integrity. Someone who has access +to any piece of mail that is waiting for you (perhaps at your ISP) can +change the message. This could affect something as simple as where you +should meet someone to something as serious as which bank account you +should transfer money to. A signature can tell you if the message was +modified between the sender and your mail client. + +======================================================================== + +IX. Understanding How Signatures Are Made + +Signatures typically are attached to the message. Detached signatures +that are placed in an alternate download location are possible, but are +not practical for something such as email, where all-in-one +communication is the goal. The outdated standard for making attached +signatures was to paste it at the bottom of the message, but the new +standard involves an actual MIME attachment to the message. Regardless, +Mutt can verify either style. + +The important thing to understand is that the signature for each piece +of mail is different and is based on both the sender's key and the +content of the message. If all signatures from a person were the same, +then one could just copy the signature from a mailing list post and +start putting it on their own mail. Therefore, the signature is based +partly on the contents of the data being signed. + +Another important point to note that has been brought up recently in +security forums is a weakness of signatures. Because signatures sign +only the body of an email, a malicious hacker could intercept a message +from one person and redirect it to another while still keeping the +signature intact. For example, if your boss emails a co-worker and says +"You're fired!", you could then send this message on to someone else who +would think it was addressed to them and see that the signature belongs +to their boss. The approach to get around this is to always make it +clear in the message body to whom the message is addressed and to put +things in context so that they could not be misconstrued by a third +party. + +======================================================================== + +X. Understanding How Encryption Is Done + +Aside from the obvious fact that the message is encrypted, an important +thing to note about encryption is that even the sender cannot read the +encrypted message. Fortunately, Mutt has two ways around this. There +is an option that lets you save a plaintext copy of your outgoing +messages when saving to a 'sent' folder (see Mutt's 'fcc_clear' option). +You may also configure Mutt to use GnuPG's '--encrypt-to' option to +additionally encrypt all encrypted mail to you so that encrypted mail in +your 'sent' folder can be decrypted by you. Without one of these +options, only the intended recipient can decrypt the message that was +sent out, even if a copy resides in your 'sent' folder. + +In order to encrypt a message to someone, you need their public key. +Once you've got that, you name them as the recipient and the message is +encrypted in an (as of yet) unbreakable code. + +Remember that encryption alone does not guarantee authenticity, as +anyone with the recipient's public key can send them encrypted mail. +Adding a signature to encrypted mail ensures that it originated from you +and was encrypted by you. + +======================================================================== + +XI. A Practical Example of Manual Key Management + +In order to understand what Mutt is going to do for you, you need to +know what happens behind the scenes. In order to verify a signature or +encrypt a piece of mail for someone, you need their public key. You can +either download it from a person's website or request it from a +keyserver, or perhaps the person will email it to you (by the way, Mutt +of course has a handy shortcut to let you get keys out of an email with +the Control-k keystroke). A key looks something like this (below is my +public key): + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.0.6 (GNU/Linux) +Comment: For info see http://www.gnupg.org + +mQGiBDsNpPoRBAC5A1vMkEiE2Z4AE9YYn3FOYi0K/ZDjUIz2/5wK4vX5IN149Yo5 +HzOH0ftJK2oTBRaKJXF1DvUO+eyIRn02BiWoLB/Dy624LEZ7psyfGLB9v/OO1T8k +2RxAHVZefMOlJZhuAXpts2dtzkc0hBApo80Jgka1LW+i1uR/0EMj98hGwwCgl8cE +k2xD4PZGNygAQ8NkVjkkVr8EALVGxfr4+WmmOn/RFyCnFppyYnTkBIPV0/5fUSzr +z53AYXXCfbHx8eF8rRxCjmFdzSu212s7ISOqUXCahLSDcsWhjaavMzD/pA/GvWhO +vTaVprdqT6pipQTvFXE4IgD1PRwl4KCu6BsJMeVWXQkjmh36y1FIA2Ub43VQnZJE +ZBitBACaS+S7+fVFvyvK654Chh0K3Klc1zUL9TE5l0Os2veFLS2s9d6y6fpEhnB0 +iABWPPXZRuPFjM8GG1cw/KtQDo/H2y2PtwG3mElF3fdZklGurvCTffWJyE2UZBz0 +s1owo2LJF978mzKonLOc2sYT7Ix5mdsgdBAjZ4kH8EP7t3NukrQjSnVzdGluIFIu +IE1pbGxlciA8anVzdGluQHZveGVsLm5ldD6IVwQTEQIAFwUCOw2k+gULBwoDBAMV +AwIDFgIBAheAAAoJEPeHeivJxAwxVeEAnRdggrNekDQMyTmd5C1UjITxIhEoAJ9m +q4RDI8Fw8waK4xIGkT32gcR7H4hGBBARAgAGBQI7DcFUAAoJEN+hndnKoo+RBgMA +n3VjFLMZUJO86aqg4MEoQaouK5L4AJ9X5s07QlGNqRruAAVvyQ2tCIz7KbQoSnVz +dGluIFIuIE1pbGxlciA8anVzdGluQHNvbGlkbGludXguY29tPohXBBMRAgAXBQI7 +DsfIBQsHCgMEAxUDAgMWAgECF4AACgkQ94d6K8nEDDFB/QCfYengAcA03vdik/vp +ktnSg88R8Q8An1iQ8g9UKNIBPzbhLYOSOa441y9guQENBDsNpP4QBAC6KTosKykU +PZQY+bd+hTPBHArGLFXGHC5RJtCVEU7iZHt4CEEEveAt6pAzoM/IBEIl0kHoG9Zq +KUE8DY8Wnc/c0fLBFuLxa5G5J+6NBXrQwf7mOhbpFjvUPegnJJpUaTJRCYLc4sBt +jMfaAUZJR5xRXVipLk0e8EwIuDDR1eVwbwADBwP7BU/PbNPMkGcxdrCyznBEvZAA +txqvplJwPZbOpMJ6ck/ckeXoy6G8f3vGUyGqg8bwS8SC+pxOkaBVDdpLXcfcJwJJ +R88HXIjfYZdalnMDELDHAvSsHxDsjs49tLzXRRQ0NpGPEGFiXHzMv43Ke8oYErqd +BvyyxvcrgZ6DdScYwWOIRgQYEQIABgUCOw2k/gAKCRD3h3orycQMMX4zAKCBlYSH +yeddCzek9yaiPoOD+6s3zQCfU0FwlY6o+vDLhSRerSfoA90g7gk= +=ERSn +-----END PGP PUBLIC KEY BLOCK----- + +Once you've got the key in a file on your computer, to add it to your +keyring, or your store of available keys, you would do this: + + gpg --import <key file> + +GnuPG will take care of the rest. The nice thing about the whole system +is that extraneous text before the beginning and ending markers is +ignored, so keys can be embedded with text files that contain other +information, and GnuPG will still be able to import the key(s) from +those files. + +You can verify that a key is now in your keyring by listing all of your +keys: + + gpg --list-keys + +You can also list particular keys by key ID or a word from the owner's +name: + + gpg --list-keys <owner's first name> + +Please note that this is the bare minimum way to use public keys. You +should also take into account your web of trust and later edit the trust +value for the key's owner and/or sign the key if you really want to rely +on communications using it. + +======================================================================== + +XII. A Practical Example of Manual Signing and Verification + +Take for example a sample piece of text: + + Here is some sample text. + +If I saved this to a file called sample.txt and wanted to sign it before +distributing it, I would do this: + + gpg --clearsign sample.txt + +After entering my passphrase, this will output a new, signed version at +sample.txt.asc: + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +Here is some sample text. +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.0.6 (GNU/Linux) +Comment: For info see http://www.gnupg.org + +iD8DBQE7fE+B94d6K8nEDDERAnWcAJ9ZOEiWcmfuDokPfvJtch/ERbZZFwCfeNKS +3UFUmgeigIIJQcZbhocMJUQ= +=FCcr +-----END PGP SIGNATURE----- + +With Mutt, your text can be signed automatically, the passphrase can be +cached for a customizable amount of time, and the recipient will get +your message along with a MIME attachment of the signature. + +In order to verify a signed file, I would do this: + + gpg --verify sample.txt.asc + +The output, providing I have the signer's (my own) public key, looks +like this: + + gpg: Signature made Thu 16 Aug 2001 06:56:01 PM EDT using DSA key ID C9C40C31 + gpg: Good signature from "Justin R. Miller <justin@solidlinux.com>" + +Mutt can automatically verify signatures, retrieving public keys if +necessary, and will show signed messages as just the message text with +some status bar info regarding the signature validity. It looks almost +like regular mail, and you don't have to do a thing to verify the +message's integrity besides have the sender's public key (or have it +automatically fetched). + +======================================================================== + +XIII. A Practical Example of Manual Encryption and Decryption + +In order to encrypt our file, we would run this: + + gpg --encrypt --armor sample.txt + +The '--armor' option causes the encrypted file to be outputted as text +instead of binary data. After choosing the public key of the intended +recipient, an encrypted file might look like this: + +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1.0.6 (GNU/Linux) +Comment: For info see http://www.gnupg.org + +wh/HTTQIPdAOfSz9ZwsabH5dS9llSpeHHNGpO2cyR90owL3/p59IqG/7YycnaT6m +s5v45hAdGVVwHjwkUlqJElKgqD02S3i7qbOxOfE5vdeMhdew96/Axvi4QW94gY9R +ZTKjfes5QstgMHswNtn8MHIjZBShVCmRzTh04LjC8R3u/hWSvOZZes2+dJIcZOUE +AMvRRpatVVEb5AzdPRO1QaSHVwKQb+1DxeOWUviVOzp6CkPfmJPeazHRL6QjMZAM +AW5SCo4WME7Gupx931TxckRhCxDjoC63fz5sZzDB6mZhDZRxJf8HcG0L0sz4oCXr +hQEOA5Bet+UpglfCEAQAxojHuWKt/kcsdN8wZc4f0IJUU4WWEXWNoXUx+rN2Qkah +QXNDInfL5U98QkLtiPMLIifkm7YjQtqx0/9Sm8ngpFKb0lkBve/VUt+Z6bRp+2iC +m1KtBnoml6mYKCg05bRY6jrd2/0iT5sVBEHnaA== +=jW1T +-----END PGP MESSAGE----- + +With Mutt, you can just indicate that you would like to encrypt a +message, choose the intended recipient's public key from a menu, and the +message is sent without you ever having to see the encryption. + +Since I cannot decrypt the above file (as it wasn't intended for me), I +will just show the steps necessary to decrypt a file: + + gpg --decrypt <encrypted file> + +After entering my passphrase and if the message was intended for me, a +new file will be written containing the decrypted text. + +With Mutt, the passphrase can be cached and messages will automatically +be decrypted and displayed in the message view screen, along with a +brief indication of whether encryption and/or a signature was involved. + +======================================================================== + +XIV. Configuring Mutt For Use With GnuPG + +In order to use Mutt with GnuPG, PGP support must be compiled in when +building Mutt (this happens by default). Also, you need to add some +directives to your .muttrc (or source a file containing these +directives) which tells Mutt how to interact with GnuPG. Here are the +commands that I use: + +set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f" +set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f" +set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f" +set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f" +set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f" +set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0xC9C40C31 -- -r %r -- %f" +set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0xC9C40C31 -- -r %r -- %f" +set pgp_import_command="gpg --no-verbose --import -v %f" +set pgp_export_command="gpg --no-verbose --export --armor %r" +set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r" +set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r" +set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r" +set pgp_autosign=yes +set pgp_sign_as=0xC9C40C31 +set pgp_replyencrypt=yes +set pgp_timeout=1800 +set pgp_good_sign="^gpg: Good signature from" + +Aside from the basic commands necessary to inter-operate with GnuPG, +these directives also tell Mutt to automatically sign all outgoing +messages using key ID 0xC9C40C31 (my key), to encrypt all encrypted mail +to me as well (for storage in my 'sent' folder, and to cache my +passphrase for a half hour. + +======================================================================== + +XV. Trying It All Out + +Mutt should be ready to go at this point. The first time you send a +message, Mutt will ask you for your passphrase, which it will then +cache, then it will sign all outgoing messages. When you receive a +signed message, Mutt will use the sender's public key (fetching it if it +has to) to verify the signature. When encrypting messages, it will ask +for your passphrase (if not cached) and will present you with a menu of +public keys that it believes match the intended recipient. Lastly, when +decrypting messages, it will ask you for your passphrase if the cache +has expired or it hasn't been entered yet. + +======================================================================== + +XVI. Links For More Information + +The Mutt E-Mail Client Home Page + (http://www.mutt.org/) + +The GNU Privacy Guard Home Page + (http://www.gnupg.org/) + +The Mutt-i, GnuPG and PGP Howto + (http://linuxdoc.org/HOWTO/Mutt-GnuPG-PGP-HOWTO.html) + +The International PGP Home Page + (http://www.pgpi.org/) + +Why You Should Use Encryption + (http://www.goingware.com/encryption/) + +======================================================================== + +XVII. Contributors + +I'd like to thank the following people for assistance in revising this +document: + + - Dave Chapeskie, for many clarifications, corrections, + recommendations, and security tips + + - Thomas Roessler, for a very clear explanation of validity and trust + +I'd like to thank the following people for suggestions and feedback that +I may incorporate into a later revision of this document: + + - Andrew McDonald + - Rick Moen + - Andy Smith + +Lastly, I would like to thank you for reading this far! + +======================================================================== + +XVIII. Feedback + +I hope that this document has been of use to you. Please let me know if +there is any way that I can improve it. You can contact me via email at +justin@solidlinux.com, and I would of course prefer that you use +encryption when doing so using my public key, found elsewhere in this +document or at http://solidlinux.com/~justin/pubkey.asc. + +$Id: mutt-gnupg-howto,v 1.1.1.1 2002/03/04 00:03:18 incanus Exp $ +http://codesorcery.net/old/mutt/mutt-gnupg-howto diff --git a/.config/mutt/muttrc b/.config/mutt/muttrc new file mode 100755 index 0000000..bddefd5 --- /dev/null +++ b/.config/mutt/muttrc @@ -0,0 +1,39 @@ +set folder = ~/.mail +set spoolfile = +"ens/INBOX" + +# Setup mailboxes that will appear in the sidebar +named-mailboxes "archives" "=.archives" +mailboxes "+archives/ml/boost" +mailboxes "+archives/ml/gcc" +mailboxes "+archives/ml/llvm" +named-mailboxes "ens" "=.ens" +mailboxes `python ~/.config/mutt/mailboxes.py ens` +named-mailboxes "inria" "=.inria" +mailboxes `python ~/.config/mutt/mailboxes.py inria` + +source ~/.config/mutt/gpg +source ~/.config/mutt/common +source ~/.config/mutt/bindings + +# Load colorscheme +# source ~/.config/mutt/colors/gruvbox.mutt +source ~/.config/mutt/colors/gruvbox-alpha.mutt + +# Aliases and LDAP integration through lbdb +source ~/.config/mutt/aliases +set query_command="lbdbq '%s'" + +# if we are in any directory starting with the following, pull +# specific settings from somewhere else +folder-hook +ens/.* "source ~/.config/mutt/ens" +folder-hook +inria/.* "source ~/.config/mutt/inria" +folder-hook +paplevetoe/.* "source ~/.config/mutt/paplevetoe" + +# Mutt will mark emails from these addresses as having been sent by you +alternates name@domain name@domain etc. + +alternative_order text/plain text/html + +# notmuch +#set virtual_spoolfile=yes +source ~/.config/mutt/vmailboxes diff --git a/.config/mutt/paplevetoe b/.config/mutt/paplevetoe new file mode 100755 index 0000000..79df6e1 --- /dev/null +++ b/.config/mutt/paplevetoe @@ -0,0 +1,22 @@ +# paplevetoe configuration + +# save copies of sent emails to the ${folder}Sent directory +# the '+' expands to $folders (like '~' to $HOME in the bash shell) +set record = +paplevetoe/sent +set postponed = +paplevetoe/drafts +set signature = ~/.mail_config/mutt/sig_paplevetoe.sig +set from = "" + +# use msmtp to send outgoing mail to the mailserver +# see ~/.msmtp for configuration +set sendmail="/usr/bin/msmtp -C $HOME/.config/msmtp/msmtprc -a paplevetoe" + +# bcc myself to make gmail style threaded conversations +my_hdr bcc: name@domain + +# pgp settings +#my_hdr X-PGP-Key: http://my.website.com/pubkey.asc +#set pgp_sign_as=MY_PGP_KEY_ID +#set pgp_autosign=yes + +# vim: set ft=muttrc diff --git a/.config/mutt/pgp b/.config/mutt/pgp new file mode 100755 index 0000000..aec06f7 --- /dev/null +++ b/.config/mutt/pgp @@ -0,0 +1,24 @@ +# from Justin R. Miller's +# `Everything You Need To Know To Start Using GnuPG with Mutt' +# http://codesorcery.net/old/mutt/mutt-gnupg-howto + +set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f" +set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f" +set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f" +set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f" +set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f" +set pgp_encrypt_only_command="/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0xFC29BDCDF15F5BE8 -- -r %r -- %f" +set pgp_encrypt_sign_command="/usr/lib/mutt/pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0xFC29BDCDF15F5BE8 -- -r %r -- %f" +set pgp_import_command="gpg --no-verbose --import -v %f" +set pgp_export_command="gpg --no-verbose --export --armor %r" +set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r" +set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r" +set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r" +#set pgp_autosign=yes +#set pgp_sign_as=PGP_KEY_ID +set pgp_replyencrypt=yes +set pgp_timeout=1800 +set pgp_good_sign="^gpg: Good signature from" + +set pgp_use_gpg_agent = yes +# vim: set ft=muttrc diff --git a/.config/mutt/sig_ens.sig b/.config/mutt/sig_ens.sig new file mode 100755 index 0000000..e69de29 --- /dev/null +++ b/.config/mutt/sig_ens.sig diff --git a/.config/mutt/sig_inria.sig b/.config/mutt/sig_inria.sig new file mode 100755 index 0000000..e69de29 --- /dev/null +++ b/.config/mutt/sig_inria.sig diff --git a/.config/mutt/sig_paplevetoe.sig b/.config/mutt/sig_paplevetoe.sig new file mode 100755 index 0000000..e69de29 --- /dev/null +++ b/.config/mutt/sig_paplevetoe.sig diff --git a/.config/mutt/vmailboxes b/.config/mutt/vmailboxes new file mode 100755 index 0000000..b1608b6 --- /dev/null +++ b/.config/mutt/vmailboxes @@ -0,0 +1 @@ +virtual-mailboxes "inbox" "notmuch://?query=tag:inbox" |
