My Email Setup
Core
My e-mail setup is pretty basic so far. The core part of it is hosted in a FreeBSD VPS donated by
RootBSD. It consists of Postfix, fdm and Dovecot. I use TLS-enabled ESMTP and IMAP to send and receive mail. For premium security at no cost, I use CAcert certificates.
Accounts
Over the years, I've accumulated a growing list of e-mail accounts, both free and paid, both personal and work-related. Retrieving mail from them is mostly easy. Either you configure an account to forward mail to your core system, or you fetch mail periodically via POP3 or IMAP. If you forward mail, it tends to get into your inbox more quickly (you don't have to wait until next time your retriever runs). But some accounts I have, especially those based on proprietary servers, like Exchange or CommuniGate, cannot be configured to forward. That's not to say that the software lacks a forwarding function, but rather that the function is most probably not enabled by default and not trivial to enable, so e-mail administrators just don't bother about it.
Some freemail accounts can be configured to forward messages, but they expire if you don't access them via POP3 regularly. I could use POP3 to fetch mail from Gmail, but its POP3 implementation is so broken, that it's much more hassle-free to enable forwarding. I still use POP3 to fetch messages marked as spam from Gmail, after I've moved them from spam folder to inbox.
fdm
fdm is a small, but powerful tool to Fetch and Deliver Mail. It does the jobs of fetchmail/getmail, procmail and maildrop all at once. You could say it's contrary to the Unix way of doing one thing and doing it well, but if you give it a thought, these operations are so closely knit and even overlapping that it's only logical to perform them with one tool.
Postfix
I didn't have to tune Postfix in any way, really. It just worked out of the box. All I had to do is put one line in ~/.forward and turn TLS on.
Dovecot
Same with Dovecot. With just 40 short lines of configuration (most of them copied from the default one) it just works and it works great. Months ago, I tried opening a mailbox with 10K+ messages hosted on Dreamhost via Courier. I had to wait a few minutes before the headers got cached. And even then it was slow as hell just to check if new mail has arrived. With Dovecot - it all works like a snap. Just a few seconds to load the same 10K messages and only a split second to open an e-mail (provided you're not downloading some fat attachments along with it). One thing I was very unhappy about with Gmail was dead-slow message retrieving. You could wait 30-40 seconds before a message comes up. When you have to process hundreds of short messages it amasses to hours of wasted time. I no longer have this problem.
Bogofilter
Never did I think that spam filtering would be so easy to configure. I use bogofilter and I teach it by errors. That is, before I make it learn a message as spam or ham, I check if it already recognizes it correctly. If it does, I skip the message. If it makes an error, I teach it. In just a short week of this process, it already surpassed the precision of Gmail's filters and I have yet to see a false positive.
Mutt
On the client side I use Mutt. Being a long time console user (due to the system administration tint of my occupation) I can't understand two things: how I lived without a good text-based e-mail client and how I lived with Gmail. I'm not really saying that Mutt is perfect, not at all. It has a long way to go to match half of my wish list, but it's by far the closest app to it of all I have seen yet.
My biggest problem with Mutt is IMAP support. It works, but it's still very young and quite slow. Luckily, a number of solutions has been around for years now to synchronize remote IMAP folders with local Maildirs. A couple of the more popular ones are called imap-sync and OfflineIMAP. I may try them out later.
Another Mutt's issue is single-threaded design which have a tendency to block. Every time Mutt checks for new mail, everything stops for a few seconds. Every time connection interrupts I can have to wait for over a minute for it to become responsive. I have to kill and restart it once every other day.
I had a quick glance at Pine's successor named Alpine. It's IMAP support could be called reference quality. I think it lacks persistent header caching a la Mutt, and it has a hard time fetching thousands of messages at once, but it follows IMAP implementation recommendations (by IETF) and fetches messages in small bunches. So it takes a couple of seconds to switch from folder to folder in Alpine - and 10-20 seconds to do the same thing in Mutt. To be fair, the 20 seconds it takes Mutt to open a folder with 8K messages (header cache ready) would probably grow to several minutes for Alpine.
Conversations and tagging
This is still unsolved for me. Conversations and tagging are two nifty features of Gmail. I can implement primitive threading using message id's, subjects and hardlinks, but there are too many details. Like when you read a conversation, all the hardlinks should be marked as read.
It's also quite difficult to solve the problem of duplicate messages in a secure and reliable fashion. It looks like Gmail (and many other solutions) take the dumb approach of keeping a cache of message id's and dropping any new message if its id matches on of existing ones. First of all, it's obviously insecure. Secondly, different paths the same message takes embed different information in it, like List-id's. Loosing it is certainly not desirable. What I would like is functionality to "bundle" duplicate messages together, so that it matches a search if any of the messages would match it, and so that I could see the diff between the messages easily.
Tagging could be done using X-Label, but I still have to learn a thing or two before I can decide if messing with headers is a thing I want to do. I kind of enjoy leaving headers intact for later inspection.
Where to go from here
There are still plenty of unsolved issues. I still have to set up MIME attachments handling properly. I still have to get used to a text-based address book (like abook). I still have to find a good way to use crypto, whether through PGP, S/MIME or any other standardized way. I still have to find a good (and, preferably, free) IMAP client that runs on Symbian S60 (I could always use webmail though).
The thing I like is that Open Source is an adventure without dead ends. It grows with me, whatever I want. Gmail has been in my way for years. Hopefully, I'll learn this lesson and try to stay away from a product when the sole purpose of its features seems to be to lock customers in.
-- Main.AndrewPantyukhin - 18 Sep 2007