dotfiles/dot_config/isync/mbsyncrc

152 lines
4.7 KiB
Plaintext

##
## overall design
##
## Each of these configurations assume that I don't use the web interfaces
## (usually) for any of my servers and that I only use mu4e as my email client
## (because I am smarter than my smartphone).
## Further assumptions include that that the only "folders" (or labels) that I
## care about are inbox, archive, trash, drafts (maybe) and junk. Anything
## beyond this turns email into something it is not (a terrible todo list). Junk
## is only useful for my hosted email so that I can train the bayesian filter.
## To elaborate on the folders I do care about:
##
## - Inbox is the main interaction point with the email server/client. Mail
## comes in and I make the decision to reply (keep thread open in inbox),
## archive (important enough to keep, but not enough to stay in sight), or
## delete (just plain useless). (Note there is instant delete or move to trash
## depending on how sure I am of the message's uselessness). Note that ideally
## the inbox is empty...as in no files (regardless of read/unread). This keeps
## it fast and uncluttered.
##
## - Archive (or whatever this is called in the server) is for old messages that
## may be useful for reference). This is where many messages end up and accounts
## for most of the size/bulk of the files. This is also why small inbox is
## important, because searching through all these files is sloowwww.
##
## - Sent is useless (just search for To:notme in archive) so don't bother
## syncing at all.
##
## - Trash is useful but only locally. I found it was a pain to get trash to
## sync correctly with everything else mu4e does, so I don't actually sync this
## folder. Instead, server trash is for spam/auto- deleted crap found by my
## filters. Client trash works like actual trash on the web interface. If I lose
## my laptop...oh well, it's just trash :)
##
## - Drafts works just like trash in that it only is useful locally and not
## synced with the server. Ideally it is empty (why keep empty drafts??).
##
## gmail server
##
## To the best of my knowledge, gmail uses one giant folder and a bunch of
## "labels" to group emails. This is frustrating because it does not map to
## on-disk filesystem paths very nicely by default. Specifically, "All Mail"
## refers to everything minus trash/spam, and an "Inbox" label (folder?) is
## applied on top of this to denote the inbox messages. This leads to duplicates
## in many vanilla IMAP syncing solutions.
## To get around this, I created a new label called "rxv" (archive, because
## apparently this name is "system reserved" in gmail) to denote the "non-inbox"
## messages. This works but assumes that these labels are mutually exclusive
## (which has no enforcement in gmail) so all handling is done by mu4e to ensure
## that these are updated properly (eg msgs from inbox moved to archive folder).
## I also set auto-expunge = off and set deleted/expunged messages to be moved
## to trash (it could also be set to "delete forever" but trash is safer).
## NOTE: this does not seem to work all that well when one moves from archive
## back to inbox (eg it actually double-labels the message) Since I hardly ever
## do this...whatever
IMAPAccount gmail
Host imap.gmail.com
User natedwarshuis@gmail.com
PassCmd "oauth-refresh natedwarshuis@gmail.com"
AuthMechs XOAUTH2
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
# CertificateFile ~/.local/etc/certs/imap.gmail.com.pem
# PipelineDepth 1
IMAPStore gmail-remote
Account gmail
MaildirStore gmail-local
Subfolders Verbatim
Path /mnt/data/Mail/gmail/
Inbox /mnt/data/Mail/gmail/inbox
Channel gmail-inbox
Far :gmail-remote:"INBOX"
Near :gmail-local:"inbox"
Create Both
Expunge Far
SyncState *
Channel gmail-all
Far :gmail-remote:"rxv"
Near :gmail-local:"archive"
Create Both
Expunge Near
SyncState *
Group gmail
Channel gmail-inbox
Channel gmail-all
##
## private email server
##
IMAPAccount yavin4
Host portnoy4prez.yavin4.ch
User ndwar@yavin4.ch
PassCmd "pass email/ndwar@yavin4.ch/plain"
AuthMechs PLAIN
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
PipelineDepth 1
IMAPStore yavin4-remote
Account yavin4
MailDirStore yavin4-local
Path /mnt/data/Mail/yavin4/
Inbox /mnt/data/Mail/yavin4/inbox
Channel yavin4-inbox
Far :yavin4-remote:"INBOX"
Near :yavin4-local:"inbox"
Create Both
Expunge Both
SyncState *
Channel yavin4-sent
Far :yavin4-remote:"Sent"
Near :yavin4-local:"sent"
Create Both
Expunge Both
SyncState *
Channel yavin4-archive
Far :yavin4-remote:"Archive"
Near :yavin4-local:"archive"
Create Both
Expunge Both
SyncState *
Channel yavin4-junk
Far :yavin4-remote:"Junk"
Near :yavin4-local:"junk"
Create Both
Expunge Both
SyncState *
Group yavin4
Channel yavin4-inbox
Channel yavin4-sent
Channel yavin4-archive