Skip to content

Instantly share code, notes, and snippets.

@jirib
Last active December 13, 2021 09:03
Show Gist options
  • Save jirib/4fd61b34506a63a2e44ab0625eeef30b to your computer and use it in GitHub Desktop.
Save jirib/4fd61b34506a63a2e44ab0625eeef30b to your computer and use it in GitHub Desktop.

WIP: neomutt with notmuch and multiple accounts

~/.notmuch-config

[database]
path=/home/foo/.mail

[user]
name=foo
[email protected]

[email protected]

[new]
tags=unread;inbox;
ignore=.mbsyncstate;.mbsyncstate.journal;.mbsyncstate.lock;.mbsyncstate.new;.uidvalidity;.isyncuidmap.db

[search]
exclude_tags=spam;deleted

[maildir]

~/.neomutt/muttrc

source ~/.neomutt/globals
source "~/.neomutt/accounts.sh|"
source ~/.neomutt/bindings
#source ~/.neomutt/pgp
source ~/.neomutt/colors
source ~/.neomutt/headers

~/.neomutt/globals

# Setting
set pager_context=4
set pager_index_lines=10
set pager_stop
set mbox_type=Maildir
set header_cache = ~/.cache/mutt/header_cache
set spoolfile=+Inbox
set postponed=+Drafts
set record=+Sent
set trash=+Trash
set edit_headers=yes
set sort=threads
set sort_aux=last-date-received
set editor="emacs -nw"
set virtual_spoolfile=yes
set folder = "~/.mail/"
set nm_default_url = "notmuch:///home/foo/.mail"

virtual-mailboxes "My INBOX" "notmuch://?query=tag:inbox"
folder-hook "My INBOX" "souce ~/.neomutt/colors"
set index_format="%4C %Z %{%b %d} %-35.35A %-80.80s %-40.40g [%X] (%?l?%4l&%4c?)"

~/.neomutt/accounts.sh

#!/bin/bash
for i in $(dirname $0)/accounts/* ; do
	cat $i
done

an example of ~/.neomutt/accounts.sh output

folder-hook (foo|myfriend1)) 'set sendmail="/usr/bin/msmtp -v -d -a foo"'
folder-hook (foo|myfriend1) 'set realname="[email protected]"'
folder-hook (foo|myfriend1) 'set from="[email protected]"'
folder-hook (foo|myfriend1) 'set from="[email protected]"'
folder-hook (foo|myfriend1) 'color index white red'
folder-hook (foo|myfriend1) 'color tree red default'
folder-hook (foo|myfriend1) 'color status    black        red'
folder-hook (foo|myfriend1) 'color indicator brightwhite  red'
folder-hook (foo|myfriend1) 'color normal    red          default'
folder-hook (foo|myfriend1) 'color indicator brightwhite  red'
folder-hook (foo|myfriend1) 'color index     brightred    default ~F'

virtual-mailboxes "foo" "notmuch://?query=tag:foo"
virtual-mailboxes "myfriend1" "notmuch://?query=tag:myfriend1"

~/.neomutt/colors

# On to the colors
color	attachment  blue         default
color	header      green        default  "^message-id:"
color	header      green        default  "^x-mailer:"
color	header      green        default  "^user-agent:"
color	header      blue         default  "^date: "
color	header      brightblue   default  "^from: "
color	header      green        default  "^subject: "
color	header      brightblue   default  "^to: "
color	header      brightblue   default  "^cc: "
color	header      brightblue   default  "^reply-to: "
color	index       green        default  ~F
color	index       red          default  ~D
color	index       blue         default  ~T
color	index       brightblue   default  ~N
color	indicator   brightwhite  blue
color	markers     red          default
color	quoted      magenta      default
color	signature   brightblue   default
color	tilde       cyan         default
color	body        black        default  "(^| )_[-a-z0-9_]+_[,.?]?[ \n]"
color	tree        blue         default
color	status      black  green
color	indicator   brightwhite  green

~/.neomutt/headers

# What headers to show
ignore *
unignore from: date subject to cc reply-to:
unignore resent- x-resent

# What order to show them
unhdr_order *
hdr_order Date: From: To: Reply-To: Cc: Subject:

~/.mail/.notmuch/hooks/pre-new

#!/bin/bash

mbsync -Va

~/.mail/.notmuch/hooks/post-new

#!/bin/bash

# retag all "new" messages "inbox" and "unread"
notmuch tag +inbox +unread -new -- tag:new

# accounts
notmuch tag +foo path:/foo/
notmuch tag +bar path:/bar/

# tag all messages from "me" as sent and remove tags inbox and unread
notmuch tag -new -inbox +sent -- from:[email protected] or from:[email protected]
notmuch tag -new -inbox +sent -- from:[email protected] or from:[email protected]
# pcint
notmuch tag +myfriend1 -- from:[email protected]

~/.msmtprc

defaults
auth           on
domain         example.com
tls            on
tls_starttls   on
tls_certcheck  on
tls_trust_file /etc/ssl/ca-bundle.pem
logfile        ~/.cache/msmtp/log
timeout        180

# foo
account        foo
host           foo.example.com
port           587
from           [email protected]
user           [email protected]
password       foo

account        bar
host           bar.example.com
port           465
tls            on
tls_starttls   off
from           [email protected]
user           [email protected]
password       bar

account default : foo

~/.mbsyncrc

IMAPStore foo-remote
Host foo.example.com
User [email protected]
Pass foo
SSLType IMAPS
SSLVersions TLSv1.2
CertificateFile /etc/ssl/ca-bundle.pem
Timeout 0

IMAPStore bar-remote
Host bar.exampl.ecom
User [email protected]
Pass bar
SSLType IMAPS
SSLVersions TLSv1.2
CertificateFile /etc/ssl/ca-bundle.pem
Timeout 0

MaildirStore foo-local
Path ~/.mail/foo/
Inbox ~/.mail/foo/Inbox
SubFolders Verbatim

MaildirStore bar-local
Path ~/.mail/bar/
Inbox ~/.mail/bar/Inbox
SubFolders Verbatim

Channel foo
Far :foo-remote:
Near :foo-local:
Patterns *
Create Both
SyncState *
Sync All

Channel bar
Far :bar-remote:
Near :bar-local:
Patterns *
Create Both
SyncState *
Sync All
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment