Last I looked there were two main local mail clients for the commandline with good emacs,vim bindings: notmuch and mu. Both store mail locally and both use xapian for efficient local searching.
When I was choosing between the two, there was one big difference between the two: notmuch was built around an idea that you mark your messages with tags for organization, while mu assumed you organize stuff into IMAP folders. The notmuch tag database is not a standard IMAP concept, so syncing your IMAP directories wouldn't sync your tags, and moving from one machine to another required extra work. mu by contrast just does the normal IMAP thing, so you sync the IMAP on one machine, and all your other machines can read the IMAP data, and that's it.
I've been using mu for years, and it's fantastic. From personal experience, the tags/folders distinction is mostly immaterial: the vast majority of searches are for text or sender or subject, or something.
If I'm misrepresenting notmuch here, somebody please correct me!
> The notmuch tag database is not a standard IMAP concept
This is not quite true. IMAP has a notion of “keywords”, which are arbitrary strings, that you can associate with any message.
This is described in the IMAP RFC [0]. Unfortunately, very few email web applications expose this feature in their UIs so it remains obscure.
FWIW Google Mail does store unlimited keywords on the server. So does Fastmail but last time checked (years ago) it only supported a maximum of 128 per IMAP mailbox.
I prefer notmuch because it is extremely simple. Everything is a tag. There are no folders.
Furthermore, notmuch never ever touches your mail storage. It just operates on tags. It is up to you how to turn tag changes into actions. I find this incredibly elegant and flexible.
I do not tag things manually. I tag incoming messages automatically using searches. Since search is so powerful and quick, I do not really feel I need tags. If you do, mu or mutt/neomutt might be better suited.
neomutt's main selling point was that it has first class integration with notmuch and that because that it has a unified inbox like the desktop clients.
One thing I could never figure out with the folderless approach like neomutt is how to make per account compose and responses. In mutt I would set the account based on the folder I'm in and depending on what I'm responding to, but I don't know how to do that in neomutt or rather how to do it when using notmuch in neomutt.
I do use mu4e, which seems to be a bit easier to configure for multiple accounts.
You do it with folder-hooks. When you switch to a query that returns mail from a different account, you set a folder-hook that switches your From: address.
i use tags for annotations and actions: this email i need to reply to. that one links to a story i want to read later. etc. it's not possible to search for that without tags, because those states change and don't depend on the actual emails
- a homeserver who grab emails from upstream and allow ssh access
- muchsync (who run over ssh) from my desktop(s)/laptop to the server
Doing so allow full sync, no need to sync mails in a maildir with other means, all you need is SSH. Sure it's not "P2P", there is still a central point of potential failure but the homeserver run many things, not just my mail so it's something I care more than the rest and it's anyway under my full control...
mu on it's side offer a nice extras (separate small binary who wrap external WebKit) to render html emails as a modern WebVM (the monsters commonly known as "browsers" for legacy reasons), while in most client (i.e. notmuch-emacs by default you just get text or shr-rendered html).
Outside Emacs I think there are one or two TUI (curses) client able to run or notmuch or mu, and a notmuch GUI (Astroid) who is not much comfy IMVHO. Notmuch also have a small external webserver with a built-in webUI but seems to be abandoned.
Unfortunately ALL use emails, almost nobody care to archive and use them on personal iron treating mails like a proprietary third party platform bound to an webmail... A day most will regret that, but still most would not learn anyway...
I want to give a shout-out to “lieer” (formerly “gmailieer”) which is a nifty tool for fetching to maildir and two-way tag synchronization between gmail and notmuch: http://lieer.gaute.vetsj.com/
Gotta love the naming choice: of the two mentioned well-known CLI clients with good Emacs and Vim integration, notmuch and mu, guess which one is mujmap made for?
This is roughly correct. There are utilities that move email between IMAP folders based on their notmuch tags, but obviously the two are different concepts so there's not a 1:1 mapping.
The way I, and some others I know, deal with this is to simply think of their notmuch database as separate from, but complementary to, the IMAP data. The database is stored centrally. (I personally do this by replacing the notmuch command on my clients with a shell script that runs notmuch over ssh. Works fairly transparently.)
This is exactly the same concept as Thunderbird and Outlook smart folders. Gmail addresses this using labels which adds metadata to the IMAP messages. IMAP folders are not reliable to tag messages as having multiple tags essentially duplicates the message on the IMAP server.
I switched to mbsync plus notmuch-emacs a few months ago, after having been a loyal Thunderbird user for ~15 years. I had to change my workflow, but the new one is much better and I do not plan to go back.
I have always failed to regularly use TODO apps to remember stuff to do. So with Thunderbird I settled on the habit of keeping all the emails that required some action as «unread». This worked because I never fail to check my email during the workday and unread emails are easily recognizable in Thunderbird because they are highlighted in bold. However, in the end it was not optimal because not-urgent emails slowly crawled outside of the visible space in the email list, and it happened more than not that I forgot those emails.
Since I switched to notmuch, I archive every email that does not require more action on my side, with the result that my inbox looks far less cluttered and only contains those emails that still need some action. It's true that I could have used the «Archived» folder in Thunderbird for the same purpose, and for some time before switching to notmuch I even tried. But it never worked well, because when it happens that I have to recover an archived email I had to fight against Thunderbird search tools, which are quite lacking: they are quite slow and I've never understood how to run complex search queries.
On the contrary, notmuch search is awesome: powerful [1] and insanely fast.
Apart from this workflow, I'm loving the fact that I can write emails using Emacs. It's my daily driver and I have a heavily customized setup, so it's really fast for me to type new emails, copy-and-paste snippets of code, reformat paragraphs the way I want, etc.
One nice side effect of the switch is that I finally settled to dispose my old Outlook account (it's really hard to configure mbsync to use it!) and only use Gmail. The number of missed emails dropped significantly, as now I have only one email address to check.
I used this for a while with the 'alot' frontend[0] (before work moved to a different mail system and broke my set-up). It really does live up to the claims on the home page.
If you like TUIs (especially vim) but find things like mutt to be a bit too basic or inflexible, give this combination a try.
notmuch can search gpg encrypted mail, it is superb and seamless. I worked somewhere where all internal e-mail was encrypted by default and notmuch was a godsend for my productivity. It’s like using gmail over encrypted mail.
Admittedly, this is an edge case. But if you happen to do a lot of encrypted emailing I don’t know if anything else like notmuch.
Does IMAP search not give you most of this functionality? I wrote a little mh-like cli for IMAP awhile back (https://github.com/pjz/mhi) that lets me search just fine, though it's admittedly single-folder-at-a-time search. I did make it composable though (eg. `pick` returns a valid message-list`, so I can `scan $(pick from somesender)` or `rmm $(pick from knownspammer)`
I use thunderbird for most of my email reading, and MHI for searching and scripting. I set up a cron job on an always-up machine that does periodic auto-refiling for me; it's not quite 'on receipt' actions, but it's still handy.
Last time I checked I disliked the size of search index folders and files. So I am sticking to mairix, which integrates well with mutt and is small and fast.
I have hosted my own email for over 18 years and I have found notmuch quite useful, albeit not on a daily basis, but it has really proved its worth in several occasions where I just had to find a specific email. It really is very fast and will traverse your 5GiB maildir in less than a second.
I've not experienced this. Arch Linux has a good guide on setting up mbsync. However, the best documentation is really mbsync's manual... Although tedious, really understanding it makes things a lot easier and I believe would resolve your issues.
That's a reasonable hypothesis. My experience was mbsync would hang for many minutes, and eventually when I revisited the terminal it was in it had failed with a nondescript error.
I don't quite get the concept of local mail in the 21st century. Long gone are the times where we had exactly one computer. What good does the e-mail do me if it is local on (one of) my desktop(s), when I need it on my laptop/phone/pad?
Are there any tools that people know of to do email automation on receiving emails?
I'd love something easily configurable that could help me tackle all the email I get with some simple rules, but I'm bound to an Outlook inbox for work.
Mu has a concept of refiling which does this. I've got a load of refiling regexes set up so that I can just hold down a keypress over my inbox and it'll dynamically archive, delete messages according to my spec https://www.djcbsoftware.nl/code/mu/mu4e/Refiling-messages.h...
Notmuch lends itself well to this. It can auto-tag new email with something like "new" and then you can write simple shell scripts to re-tag and take action based on contents.
I’ve been a happy notmuch user for several years. I wonder if there’s a use case for it outside of email, like as part of searching through discussions between users in a web application.
This is why it switched to KMail. Thunderbird search is really, really slow, and I had to use notmuch whenever I had to search for keywords. KMail is on par with notmuch in terms of search performance.
ooh this looks interesting. im so dependent on gmail its a little scary. whats the best way to host ones own email nowadays? (not moving off gmail anytime soon, but maybe for some less important accounts)
Guess I'm plugging Migadu again! (https://www.migadu.com/) (not related to them, just a satisfied user)
From a previous comment of mine:
> Migadu is another awesome email solution. For my family and myself, we're on the "Micro" plan which works out to be 1.5 USD per month (but paid yearly). For smaller organizations and projects, we're on the "Mini" plan which is 9 USD per month.
Interesting, but my quick search of the Migadu site turned up nothing about support for "tags", formally "keywords" as stored in the Flags Message Attribute of IMAP:
Any email provider would be short of useless without supporting flags from IMAP, as that's what email clients use to see if an email has been read or not, if I'm not mistaken.
AFAIK, Migadu supports most if not everything from IMAP. I'm using tags via Thunderbird and have no issues syncing it between multiple computers and Migadu.
Consider creating a server that gmail forwards mail to. If your server goes down, it goes down. If gmail locks you out of your account, you should be able to continue to receive your important emails.
There are docker solutions for running a full stack that can receive and send.
“just a dash of” css would help the user not have to stretch-zoom the website, and then have to pan left and right because the text doesn’t dynamically wrap?
When I was choosing between the two, there was one big difference between the two: notmuch was built around an idea that you mark your messages with tags for organization, while mu assumed you organize stuff into IMAP folders. The notmuch tag database is not a standard IMAP concept, so syncing your IMAP directories wouldn't sync your tags, and moving from one machine to another required extra work. mu by contrast just does the normal IMAP thing, so you sync the IMAP on one machine, and all your other machines can read the IMAP data, and that's it.
I've been using mu for years, and it's fantastic. From personal experience, the tags/folders distinction is mostly immaterial: the vast majority of searches are for text or sender or subject, or something.
If I'm misrepresenting notmuch here, somebody please correct me!