I use thunderbird, but the idea is the same. I have a folder for each product I sell. In each folder I have subfolders by customer name. Yes, that's a lot of subfolders sometimes, but since it's alphabetical, no big deal. This is my archive.
Once I'm done with an email, it gets dragged to the client's folder. If it's something that needs to be maintianed for a bit, I drag it to my a-todo list folder (so named because the 'a-' puts it right below my inbox). I check the a-todo list for emails frequently, and move them out to the appropriate client's subfolder once those emails are completely done.
I also maintain a secondary subfolder with other oddities like one for communication with my developer, one for graphics, one for emails from software licenses, etc.
Once a week or so I spend a few minutes and sort all the emails from my sent box the same way. Order by 'to' field makes this quick. Once a day I scan my junk mail folder for good stuff and delete the rest of it. Delete my trash folder about once a week or so.
Treating the junk mail like that means I grab any mistaken junk mail before it's too big for me to find stuff. Worse case I miss one and it ends up in trash. If it's in the trash for a week, then I guess it wasn't that important.
This system has allowed me to keep every non-spam email I've received since 1999 without any difficulty. Once it's completed, into the client's folder it goes. If I need to reference it, just check the client's folder. If I need to know what's outstanding, check my inbox or a-todo folder.