I recently decided to setup my own email server.
After testing various email systems on virtual machines I decided on postfix + dovecot. I also decided to use MySQL/mariadb as the user/email database as it supports SHA-512 (bcrypt soon?).
I had previously worked on servers with exim + spamassassin + clamav but the memory usage always seemed quite high (especially with clamav scanning zip attachments). So I looked around and found dspam was an alternative, from what I had read it seemed as much a resource hog as spamassassin. Then I found postscreen.
Here is a graph of memory usage from 15th Feb:
Hardly any memory used, this was after the server had been running for a week.
Base packages: postfix, dovecot, mariadb
Antispam: postscreen, header checks
Protocols: IMAPS, SMTP (TLS, SASL)
Administration: Python CLI Tools*
Other: SPF + DKIM (signing and checking)
*I wrote my own Python CLI Tools for administration of domains, mailboxes and aliases (will hopefully be releasing these on github soon)