Skip to content

Commit

Permalink
mail: initial import
Browse files Browse the repository at this point in the history
Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
  • Loading branch information
kiryl committed Jan 16, 2015
1 parent b35f8be commit 37bca36
Show file tree
Hide file tree
Showing 8 changed files with 312 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -2,7 +2,7 @@ MAKEFLAGS += -rR --no-print-directory
srctree := $(CURDIR)
export srctree

components ?= awesome fontconfig hg git pentadactyl proxy tmux vim xsession zsh
components ?= awesome fontconfig hg git mail pentadactyl proxy tmux vim xsession zsh

all: $(components)

Expand Down
6 changes: 6 additions & 0 deletions mail/Makefile
@@ -0,0 +1,6 @@
files = \
dovecot.sieve \
mutt.colors \
muttrc \
notmuch-config \
signature
15 changes: 15 additions & 0 deletions mail/dovecot.sieve
@@ -0,0 +1,15 @@
# vim: set ft=sieve :

require ["date", "variables", "fileinto", "mailbox"];

if date :matches "date" "day" "*" { set "day" "${1}"; } else { set "day" "-"; }
if date :matches "date" "month" "*" { set "month" "${1}"; } else { set "month" "-"; }
if date :matches "date" "year" "*" { set "year" "${1}"; } else { set "year" "-"; }

if anyof ( string :is "${year}" "-", string :is "${month}" "-", string :is "${year}" "-" ) {
if currentdate :matches "day" "*" { set "day" "${1}"; }
if currentdate :matches "month" "*" { set "month" "${1}"; }
if currentdate :matches "year" "*" { set "year" "${1}"; }
}

fileinto :create "${year}/${month}/${day}";
80 changes: 80 additions & 0 deletions mail/mutt.colors
@@ -0,0 +1,80 @@
# Rich color scheme for Mutt (black background)
# Maintainer: Dmitry Borodaenko <angdraug@debian.org>
# Last Change: 7 Oct 2003
# Home: http://people.debian.org/~angdraug/
#
# 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.

# override defaults, make transparency work
color normal default default
color attachment green default #
color hdrdefault cyan default
color indicator black white
color markers brightred default
color signature brightblue default #
color status yellow black
color tilde brightblue default #
color tree yellow default

# paint different quote levels
set quote_regexp="^(( {0,4}| )[>|]| {0,4}[a-z0-9]+[>|]+)+"
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 "(^| )[;:ö][-^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(rsday)?|Fri(day)?|Sat(urday)?),? +)?(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sept?(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(rsday)?|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)?|Sept?(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})?)?"

# unignored headers
color header brightgreen default "^From: "
color header brightblue default "^Subject: "
color header brightcyan default "^To: "
color header brightcyan default "^Cc: "
color header brightcyan default "^Newsgroups: "

# other headers
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 brightcyan default "^followup-to: "
color header brightcyan default "^mail-followup-to: "
color header brightcyan 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 index brightblue default '~P' # from me
color index cyan default '~p' # personal
color index brightcyan default '~G' # PGP
color index green default '~Q' # replied
color index brightred default '~F' # flagged
#color index brightred default '~h "Importance: High"'
color index white default '~N' # new
color index red default '~D' # deleted
120 changes: 120 additions & 0 deletions mail/muttrc
@@ -0,0 +1,120 @@
set edit_headers
set folder=""
set from="Kirill A. Shutemov <kirill@shutemov.name>"
set include=yes
set index_format='%4C %Z %[%y.%m.%d] %-18.18n %s%>'
set nm_default_uri="notmuch:///home/kas/mail"
set nm_exclude_tags="deleted,spam"
set nm_hidden_tags="unread,draft,flagged,passed,inbox"
set pager_format="-%Z- %C/%m: %-20.20n %s%* -- %?g?(%g)? - (%P)"
set pager_index_lines=15
set record=""
set sort_browser=unsorted
set sort=threads
set vfolder_format="%?N?*& ?%20f %6N %10n"
set virtual_spoolfile=yes

bind browser <right> select-entry
bind browser <left> noop

bind index <right> display-message
macro index <left> "<sync-mailbox><change-vfolder>?"
bind index X vfolder-from-query
macro index A "<modify-labels-then-hide>+archive -unread\n<sync-mailbox>"
macro index I "<shell-escape>notmuch new<enter><sync-mailbox>"
macro index S "<modify-labels-then-hide>+spam\n<sync-mailbox>"
macro index d "<modify-labels-then-hide>+deleted\n<sync-mailbox>"

bind pager <up> previous-line
bind pager <down> next-line
bind pager <left> exit
bind pager <right> view-attachments
bind pager X vfolder-from-query
macro pager A "<modify-labels-then-hide>+archive -unread\n<sync-mailbox>"
macro pager I "<shell-escape>notmuch new<enter><sync-mailbox>"
macro pager S "<modify-labels-then-hide>+spam\n<sync-mailbox>"
macro pager d "<modify-labels-then-hide>+deleted\n<sync-mailbox>"

bind attach <left> exit
bind attach <right> view-attach

source ~/.mutt.colors

ignore *
unignore from date subject to cc
unignore list-id x-mailer user-agent message-id

tag-transforms \
"inbox" "i" \
"unread" "N" \
"replied" "↻" \
"sent" "➥" \
"deleted" "D" \
"attachment" "⎘" \
"signed" "✓" \
"lists" "L" \
#

tag-formats \
"inbox" "GI" \
"unread" "GU" \
"replied" "GR" \
"sent" "GS" \
"deleted" "GD" \
"lists" "GL" \
#

virtual-mailboxes \
"people/shutemov" "notmuch://?query=shutemov (date:3month.. or tag:unread)" \
"linux/mm" "notmuch://?query=to:linux-mm@kvack.org (date:3month.. or tag:unread)" \
"people/akpm" "notmuch://?query=from:akpm (date:3month.. or tag:unread) not to:mm-commits@" \
"people/andi" "notmuch://?query=from:kleen" \
"people/ash" "notmuch://?query=from:shishkin" \
"people/dhansen" "notmuch://?query=from:dave\ hansen" \
"people/hugh" "notmuch://?query=from:hughd@google.com" \
"people/linus" "notmuch://?query=from:linus.torvalds" \
"people/mel" "notmuch://?query=from:mgorman" \
"people/riel" "notmuch://?query=from:riel" \
"people/peterz" "notmuch://?query=from:zijlstra (date:3month.. or tag:unread)" \
"people/viro" "notmuch://?query=from:viro" \
"linux/mm/commits" "notmuch://?query=to:mm-commits@vger.kernel.org" \
"linux/fs" "notmuch://?query=to:linux-fsdevel@vger.kernel.org (date:3month.. or tag:unread)" \
"linux/api" "notmuch://?query=to:linux-api@vger.kernel.org" \
"linux/btrfs" "notmuch://?query=to:linux-btrfs@vger.kernel.org" \
"linux/kbuild" "notmuch://?query=to:linux-kbuild@vger.kernel.org" \
"linux/cgroups" "notmuch://?query=to:cgroups@vger.kernel.org" \
"linux/containers" "notmuch://?query=to:containers@lists.linux-foundation.org" \
"linux/trinity" "notmuch://?query=to:trinity@vger.kernel.org" \
"linux/ksummit" "notmuch://?query=to:ksummit-discuss@lists.linuxfoundation.org" \
"linux/kernel" "notmuch://?type=threads&query=to:linux-kernel@vger.kernel.org and tag:unread" \
"lj" "notmuch://?query=from:lj_notify@livejournal.com" \
"google/plus" "notmuch://?query=from:plus.google.com" \
"youtube" "notmuch://?query=from:youtube.com" \
"ixbt" "notmuch://?query=forum.ixbt.com" \
"github" "notmuch://?query=from:github.com" \
"git" "notmuch://?query=to:git@vger.kernel.org (date:3month.. or tag:unread)" \
"glibc" "notmuch://?query=to:libc-alpha@sourceware.org" \
"klibc" "notmuch://?query=to:klibc@zytor.com" \
"elfutils" "notmuch://?query=to:elfutils-devel@lists.fedorahosted.org" \
"binutils" "notmuch://?query=to:binutils@sourceware.org" \
"gcc" "notmuch://?query=to:gcc@gcc.gnu.org (date:3month.. or tag:unread)" \
"gcc/patches" "notmuch://?query=to:gcc-patches@gcc.gnu.org (date:3month.. or tag:unread)" \
"gcc/bugs" "notmuch://?query=from:gcc-bugzilla@gcc.gnu.org" \
"qemu" "notmuch://?query=to:qemu-devel@nongnu.org (date:3month.. or tag:unread)" \
"notmuch" "notmuch://?query=to:notmuch@notmuchmail.org" \
"rpm/maint" "notmuch://?query=to:rpm-maint@lists.rpm.org" \
"rpm/list" "notmuch://?query=to:rpm-list@lists.rpm.org" \
"go/devel" "notmuch://?query=to:golang-dev@googlegroups.com (date:3month.. or tag:unread)" \
"go/nuts" "notmuch://?query=to:golang-nuts@googlegroups.com (date:3month.. or tag:unread)" \
"9fans" "notmuch://?query=to:9fans@9fans.net" \
"dovecot" "notmuch://?query=to:dovecot@dovecot.org" \
"ccan" "notmuch://?query=to:ccan@lists.ozlabs.org" \
"wayland" "notmuch://?query=to:wayland-devel@lists.freedesktop.org" \
"alt/devel" "notmuch://?query=to:devel@lists.altlinux.org" \
"alt/devel-ports" "notmuch://?query=to:devel-ports@lists.altlinux.org" \
"alt/cyber" "notmuch://?query=to:sisyphus-cybertalk@lists.altlinux.org or \
git-update-subscribers@altlinux.org" \
"alt/bugzilla" "notmuch://?query=from:bugzilla-daemon@altlinux.ru" \
"ebay" "notmuch://?query=from:eBay@reply.ebay.co.uk" \
"all" "notmuch://?query=date:1week.. or tag:unread" \
#
88 changes: 88 additions & 0 deletions mail/notmuch-config
@@ -0,0 +1,88 @@
# .notmuch-config - Configuration file for the notmuch mail system
#
# For more information about notmuch, see http://notmuchmail.org

# Database configuration
#
# The only value supported here is 'path' which should be the top-level
# directory where your mail currently exists and to where mail will be
# delivered in the future. Files should be individual email messages.
# Notmuch will store its database within a sub-directory of the path
# configured here named ".notmuch".
#
[database]
path=/home/kas/mail

# User configuration
#
# Here is where you can let notmuch know how you would like to be
# addressed. Valid settings are
#
# name Your full name.
# primary_email Your primary email address.
# other_email A list (separated by ';') of other email addresses
# at which you receive email.
#
# Notmuch will use the various email addresses configured here when
# formatting replies. It will avoid including your own addresses in the
# recipient list of replies, and will set the From address based on the
# address to which the original email was addressed.
#
[user]
name=Kirill A. Shutemov
primary_email=kirill@shutemov.name
other_email=k.shutemov@gmail.com

# Configuration for "notmuch new"
#
# The following options are supported here:
#
# tags A list (separated by ';') of the tags that will be
# added to all messages incorporated by "notmuch new".
#
# ignore A list (separated by ';') of file and directory names
# that will not be searched for messages by "notmuch new".
#
# NOTE: *Every* file/directory that goes by one of those
# names will be ignored, independent of its depth/location
# in the mail store.
#
[new]
tags=unread;
ignore=

# Search configuration
#
# The following option is supported here:
#
# exclude_tags
# A ;-separated list of tags that will be excluded from
# search results by default. Using an excluded tag in a
# query will override that exclusion.
#
[search]
exclude_tags=deleted;spam;

# Maildir compatibility configuration
#
# The following option is supported here:
#
# synchronize_flags Valid values are true and false.
#
# If true, then the following maildir flags (in message filenames)
# will be synchronized with the corresponding notmuch tags:
#
# Flag Tag
# ---- -------
# D draft
# F flagged
# P passed
# R replied
# S unread (added when 'S' flag is not present)
#
# The "notmuch new" command will notice flag changes in filenames
# and update tags, while the "notmuch tag" and "notmuch restore"
# commands will notice tag changes and update flags in filenames
#
[maildir]
synchronize_flags=true
1 change: 1 addition & 0 deletions mail/signature
@@ -0,0 +1 @@
Kirill A. Shutemov
1 change: 1 addition & 0 deletions vim/vim/ftplugin/mail.vim
@@ -0,0 +1 @@
set textwidth=74

0 comments on commit 37bca36

Please sign in to comment.