dotfiles/dot_config/isync/mbsyncrc

249 lines
6.5 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, and drafts (maybe).
## Anything beyond this turns email into something it is not (a
## terrible todo list). Spam/junk are useless to sync to a client
## machine (unless something important "goes to junk" which in my
## experience is extremely rare).
## 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. (No idea why gmail was designed this way).
## 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 move 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
##
## gatech office365 server
##
## this is very similar to the gmail setup except that the sent
## folder must by synced as outlook does not group sent mail
## automagically in the inbox as gmail does (as a consequence of the
## "all mail" folder behavior?)
IMAPAccount gatech
Host outlook.office365.com
User ndwarshuis3@gatech.edu
PassCmd "oauth-refresh ndwarshuis3@gatech.edu"
AuthMechs XOAUTH2
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
PipelineDepth 1
IMAPStore gatech-remote
Account gatech
MailDirStore gatech-local
Path /mnt/data/Mail/gatech/
Inbox /mnt/data/Mail/gatech/inbox
Channel gatech-inbox
Far :gatech-remote:"INBOX"
Near :gatech-local:"inbox"
Create Both
Expunge Both
SyncState *
Channel gatech-sent
Far :gatech-remote:"Sent Items"
Near :gatech-local:"sent"
Create Both
Expunge Both
SyncState *
Channel gatech-archive
Far :gatech-remote:"Archive"
Near :gatech-local:"archive"
Create Both
Expunge Both
SyncState *
Group gatech
Channel gatech-inbox
Channel gatech-sent
Channel gatech-archive
##
## emory office365 server
##
## identical to gatech server except different credentials
IMAPAccount emory
Host outlook.office365.com
User ndwarsh@emory.edu
PassCmd "pass email/ndwarsh@emory.edu/plain"
AuthMechs PLAIN
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
PipelineDepth 1
IMAPStore emory-remote
Account emory
MailDirStore emory-local
Path /mnt/data/Mail/emory/
Inbox /mnt/data/Mail/emory/inbox
Channel emory-inbox
Far :emory-remote:"INBOX"
Near :emory-local:"inbox"
Create Both
Expunge Both
SyncState *
Channel emory-sent
Far :emory-remote:"Sent Items"
Near :emory-local:"sent"
Create Both
Expunge Both
SyncState *
Channel emory-archive
Far :emory-remote:"Archive"
Near :emory-local:"archive"
Create Both
Expunge Both
SyncState *
Group emory
Channel emory-inbox
Channel emory-sent
Channel emory-archive
##
## 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 *
Group yavin4
Channel yavin4-inbox
Channel yavin4-sent
Channel yavin4-archive