I currently use two mail clients: Betterbird (Thunderbird with additional bugfixes) on Linux [PikaOS] & FairEmail on Android. I have numerous folders because of server-side sieve filtering, which mostly creates structures like /<domain>/<localpart>. While it works, FairEmail is a battery drain when fetching all folders (I assume because there is no FetchAll in IMAP) and both are rather slow. Thunderbird especially also kind of sucks at picking up newly created folders.
So now my line of thought was to have a self-hosted email client/web app, which would eliminate these two main issues. Instead of an FairEmail/Betterbird, I would like to use a PWA. I would appreciate it if it had some offline caching, though. A must is push notifications on my android device (ideally through some proxy or UnifiedPush, so I don’t have to expose the client to the WWW). I would run it on a local server & access it via VPN. PGP client support would be neat as well, though I currently do not use it.
To clarify: I am not looking to host a mail server & I am not looking to host a desktop app. I am looking for something like Rainloop, but it needs to download the mails from multiple providers, automatically pick up new folders & send notifications (via browser, ntfy, gotify, etc) when something arrives and obviously the UI needs to work on Desktop and Android.
Does anyone have any recommendations in this regard? 🙂
If I understand correctly, you want a two component setup. A PWA client for you to read the mail, and a server acts as IMAP client, fetches mails from all you mailboxes. The server will expose an API for tge PWA to access mail content. When new mail arrives, the server push a beacon via the Push API. The PWA would fetch the sender and title, and display a notification. If you clicks it, only then the PWA will fetch the body.
After a quick glance of the demo, I think SnappyMail fit the bill? It seems can be installed as PWA, and my browser does ask me if I want to give it push notification permission. However, I’m not too sure if the fetch logic happens as I laid out.