Last active
December 25, 2020 09:03
-
-
Save guiniol/cbe48a5274ed8b53f9e9c995cca298af to your computer and use it in GitHub Desktop.
offlineimap + notmuch + mutt + gpg + mstmp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
xdg-open "$1" & | |
sleep 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
encrypt_to me@mailaccount |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
text/html; w3m -I %{charset} -T text/html; copiousoutput; | |
text/calendar; gcalcli import -d %s; copiousoutput; print=gcalcli --nocolor --reminder=10 --detail_url=short --calendar='me@mailaccount' import %s | |
application/ics; gcalcli import -d %s; copiousoutput; print=gcalcli --nocolor --reminder=10 --detail_url=short --calendar='me@mailaccount' import %s | |
image/*; imv %s | |
application/pgp-keys; pgp -f < %s ; copiousoutput | |
application/*; background-xdg-open.sh %s |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 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 yellow default "attachment" | |
color body brightwhite default ([a-zA-Z\+]+)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ | |
color body green default [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ | |
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 hdrdefault color81 default | |
color quoted color60 default | |
color quoted1 yellow default | |
color body green default "^gpg: Good signature from" | |
color body brightred default "^gpg: Bad signature from" | |
color body brightred default "^gpg: BAD signature from" | |
color body brightred default "^gpg: Note: This key has expired!" | |
color body brightyellow default "^gpg: WARNING: This key is not certified with a trusted signature!" | |
color body brightyellow default "^gpg: There is no indication that the signature belongs to the owner." | |
color body brightyellow default "^gpg: can't handle these multiple signatures" | |
color body brightyellow default "^gpg: signature verification suppressed" | |
color body brightyellow default "^gpg: invalid node with packet of type" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python2 | |
import gnomekeyring as gkey | |
keyring = gkey.get_default_keyring_sync() | |
attrs = {"repo": "MailAccount"} | |
items = gkey.find_items_sync(gkey.ITEM_NETWORK_PASSWORD, attrs) | |
print items[0].secret |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Accounts will inherit settings from this section | |
defaults | |
auth on | |
tls on | |
tls_trust_file /etc/ssl/certs/ca-certificates.crt | |
account MailAccount | |
host mail.account | |
port 465 | |
from me@mailaccount | |
user me@mailaccount | |
passwordeval python2 ~/.msmtp.py | |
tls_starttls off | |
# Set a default account | |
account default : MailAccount |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
offlineimap 1>~/.offlineimap/log 2>~/.offlineimap/error_log & | |
PID=$! | |
mutt | |
kill $PID | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set realname = "My Name" | |
set from = "me@mailaccount" | |
set use_from = yes | |
set sendmail = "/usr/bin/msmtp" | |
set editor = vim | |
set charset="utf-8" | |
set alias_file = ~/.mutt/aliases.muttrc | |
source ~/.mutt/aliases.muttrc | |
source /usr/share/doc/mutt/samples/vim-keybindings.rc | |
source ~/.mutt/molokai.muttrc | |
set mbox_type = Maildir | |
set folder = ~/.maildirs/MailAccount/INBOX | |
set header_cache = ~/.cache/mutt | |
set spoolfile = +/ | |
set record = +/ | |
set postponed = +/../INBOX.Drafts | |
set sort = 'threads' | |
set sort_aux = 'last-date-received' | |
#set date_format = "%d %b %Y" | |
set index_format = " %Z %<[y?%<[m?%<[d?%[ %H:%M]&%[ %a %d]>&%[ %b %d]>&%[%d/%m/%Y]> %-30.30F %<M?(%2M)& > %?GE?%GE& ? %?GA?%GA& ? %g %s" | |
unset help | |
ignore * | |
unignore from date subject to cc bcc | |
folder-hook . "exec collapse-all" | |
set markers = no | |
set smart_wrap | |
set pager_context = 5 | |
set pager_index_lines = 10 | |
set fast_reply = yes | |
set include = yes | |
set timeout = 5 | |
set edit_headers = yes | |
set crypt_use_gpgme = yes | |
#set pgp_use_gpg_agent = yes | |
#set pgp_sign_as = mypgpgkeyid | |
#set smime_default_key = mypgpkeyid | |
#set smime_encrypt_self = yes | |
set crypt_verify_sig = yes | |
set crypt_autosign = yes | |
set crypt_opportunistic_encrypt = yes | |
set mailcap_path=~/.mutt/mailcap | |
alternative_order text/plain text/html | |
auto_view text/html | |
auto_view text/calendar | |
auto_view application/ics | |
# Edit X-Labels | |
#bind index,pager yy edit-label | |
# Notmuch config | |
set nm_default_uri = "notmuch:///home/me/.maildirs/MailAccount" | |
set virtual_spoolfile=yes | |
set nm_hidden_tags = "inbox,unread,draft,flagged,passed,replied,signed,encrypted,attachment" | |
virtual-mailboxes "inbox" "notmuch://?query=tag:inbox and NOT tag:archive" | |
macro index \\\\ "<vfolder-from-query>" | |
macro index,pager A "<modify-labels>+archive -unread -inbox\\n" | |
bind index,pager + entire-thread | |
bind index,pager yy modify-labels | |
bind index,pager X change-vfolder | |
tag-transforms "attachment" "@" \ | |
"encrypted" "" | |
tag-formats "attachment" "GA" \ | |
"encrypted" "GE" | |
macro index,pager ut <tag-thread><limit>~T<enter><tag-thread> "show only current thread" | |
macro index,pager ua <limit>all<enter> "show everything" | |
macro attach s <save-entry><kill-line>/home/guiniol/downloads |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# .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/me/.maildirs/MailAccount | |
# 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=My Name | |
primary_email=me@mailaccount | |
# 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;inbox;tofilter; | |
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 | |
# Cryptography related configuration | |
# | |
# The following option is supported here: | |
# | |
# gpg_path | |
# binary name or full path to invoke gpg. | |
# | |
[crypto] | |
gpg_path=gpg |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
notmuch new --try-decrypt | |
notmuch tag +list tag:tofilter and subject:\([LIST]\) | |
notmuch tag +friend tag:tofilter and from:friend | |
notmuch tag -tofilter tag:tofilter and from:me@mailaccount | |
COUNT=$(notmuch count tag:tofilter) | |
notmuch tag -tofilter tag:tofilter | |
if [ ${COUNT} != 0 ]; then | |
notify-send -h string:bgcolor:#3579a8 -h string:fgcolor:#d0d0d0 "MAIL MOTHERFUCKER !!" "${COUNT} new messages" | |
mpv ~/.mutt/mail_motherfucker.m4a >/dev/null 2>&1 | |
fi | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python2 | |
import gnomekeyring as gkey | |
def set_credentials(repo, user, pw): | |
KEYRING_NAME = "offlineimap" | |
attrs = { "repo": repo, "user": user } | |
keyring = gkey.get_default_keyring_sync() | |
gkey.item_create_sync(keyring, gkey.ITEM_NETWORK_PASSWORD, KEYRING_NAME, attrs, pw, True) | |
def get_credentials(repo): | |
keyring = gkey.get_default_keyring_sync() | |
attrs = {"repo": repo} | |
items = gkey.find_items_sync(gkey.ITEM_NETWORK_PASSWORD, attrs) | |
return (items[0].attributes["user"], items[0].secret) | |
def get_username(repo): | |
return get_credentials(repo)[0] | |
def get_password(repo): | |
return get_credentials(repo)[1] | |
if __name__ == "__main__": | |
import sys | |
import os | |
import getpass | |
if len(sys.argv) != 3: | |
print "Usage: %s <repository> <username>" \ | |
% (os.path.basename(sys.argv[0])) | |
sys.exit(0) | |
repo, username = sys.argv[1:] | |
password = getpass.getpass("Enter password for user '%s': " % username) | |
password_confirmation = getpass.getpass("Confirm password: ") | |
if password != password_confirmation: | |
print "Error: password confirmation does not match" | |
sys.exit(1) | |
set_credentials(repo, username, password) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[general] | |
metadata = ~/.offlineimap | |
accounts = MailAccount | |
# maxsyncaccounts = 1 | |
ui = basic | |
# ignore-readonly = no | |
pythonfile = ~/.offlineimap.py | |
socktimeout = 60 | |
# fsync = true | |
[Account MailAcccount] | |
localrepository = LocalMailAccount | |
remoterepository = RemoteMailAccount | |
autorefresh = 5 | |
quick = 10 | |
# presynchook = imapfilter | |
postsynchook = ~/.offlineimap-filter-and-notify.sh | |
status_backend = sqlite | |
# maxsize = 2000000 | |
# maxage = | |
# maildir-windows-compatible = no | |
# synclabels = no | |
# labelsheader = X-Keywords | |
# ignorelabels = \Inbox, \Starred, \Sent, \Draft, \Spam, \Trash, \Important | |
# filterheaders = X-Some-Weird-Header | |
[Repository LocalMailAccount] | |
type = Maildir | |
localfolders = ~/.maildirs/MailAccount | |
# sep = . | |
# restoreatime = no | |
[Repository RemoteMailAccount] | |
type = IMAP | |
remotehost = mail.account | |
ssl = yes | |
remoteusereval = get_username("MailAccount") | |
remotepasseval = get_password("MailAccount") | |
cert_fingerprint = mailaccountfingerprint | |
# ssl_version = ssl23 | |
# remoteport = 993 | |
# preauthtunnel = ssh -q imaphost '/usr/bin/imapd ./Maildir' | |
# transporttunnel = openssl s_client -host myimap -port 993 -quiet | |
# reference = Mail | |
# idlefolders = ['INBOX', 'INBOX.Alerts'] | |
# usecompression = yes | |
# maxconnections = 2 | |
# holdconnectionopen = no | |
# keepalive = 60 | |
# expunge = no | |
# subscribedonly = no | |
# nametrans = lambda foldername: re.sub('^INBOX\.', '', foldername) | |
# dynamic_folderfilter = False | |
# folderfilter = lambda foldername: foldername in ['INBOX', 'Sent'] | |
# folderincludes = ['debian.user', 'debian.personal'] | |
# createfolders = True | |
# foldersort = lambda x, y: -cmp(x, y) | |
# readonly = False |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment