I used to have lieer’s gmi (read: mbsync with gmail tag syncing) paired with notmuch. It’s good when it works, but it’s annoying to need a service in the background.
I used to use Gnus, but Gnus is sometimes weirds out if your tag filters are too complex for it