A few months ago I wrote about my mail setup. In summary, on the server side, the MTA delivers to a Maildir, which is then exposed to me via IMAP, which I mirror locally to a Maildir via offlineimap, and expose locally via a local IMAP server. It's a complicated solution, but on the other hand it is fairly robust, and provides me with distributed backups.

Since writing some minor things changed, and some remained undocumented, so now I write, as Quim says, "for your eyes and my memory".

reading mail

I switched from Courier IMAP to Dovecot, basically because Fedora doesn't have courier packages. (I built some, but found about about dovecot before getting to actually configure them.) I've found Dovecot to be much easier to configure. A simple yum install, and edits to the well-commented /etc/dovecot.conf, and I had imap working. Here are the three variables that I set:

protocols = imap
listen = 127.0.0.1
mail_location = maildir:~/.mail

The rest, I left as it came. I suppose I could have figured out some way to run the daemon as my own user, but that doesn't matter much. Dovecot's namespacing is different from Courier's, though -- it doesn't put all folders as subfolders of "INBOX" -- so I did have to tweak my mail filters.

Speaking of which, I now use Gnus for mail. Gnus is a mail reader that runs on Emacs, started using M-x gnus. The thing is, Emacs has really grown on me, like an infectious disease or something. (Fingernail clippings in a bowl of oatmeal, according to one L. Wall.) Gnus is really hard to configure, though, and I don't yet use it to its maximum efficacy. Perhaps some bits from my .gnus.el will make it to these (web) pages at some point.

sending mail

So that's how I read mail. I send mail using esmtp, a simple MTA that can relay to a remote host via secure SMTP, manage a queue, and run as a normal user. It doesn't do local delivery, which makes it quite simple.

Reportedly, esmtp works with gmail as well. I did edit the esmtp-wrapper script to not run the queue when invoked as sendmail, so that it would always return 0 instead of failing if network wasn't present (and thus confusing gnus). Messages are queued, of course.