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