## ## 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 ## ## 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