I still have every email I’ve ever received, going back now more than 20 years. My solution isn’t terribly fancy, but it gets the job done.
I have a Synology here at home running a mail server. You don’t need a Synology specifically, just a simple mail server with access to a lot of disk space. The server isn’t on the Open web or anything and doesn’t support SMTP. It’s just running IMAP to serve the local mail around the house.
I connect to it from Thunderbird on my various machines. I also use Thunderbird to connect to my actual mail servers to do my day-to-day mail stuff.
Every six months or so, I move old mail messages from my actual mail servers over to the archival one. Generally, I keep the mail on the archival server in folders; one per year, that keeps the loading time to a minimum. For example, come January 1st 2024, I’ll be moving mail from January 2023 - June 2023 to the /2023 folder on the archive.
Searching is done via Thunderbird just like you search any mail account, and on my desktop machine, I let Thunderbird keep copies of the mail locally for quick searching. On my laptop though, I ask it to not keep copies to save disk space.