I run a free mail server hMailServer for my web sites https://YetaWF.com, http://mikevdm.com and https://LinksWithPics.com. It has served well, and trouble free, for 1 1/2 years. Even though it has anti-SPAM (spamcop and spamhaus) and some anti-virus protections built in, after using the same email address for over 20 years, it was unable to stop the avalanche of daily spam.
Typically on my handful of email addresses I got over 1000 junk emails daily. That's a lot of SPAM.
I looked into gmail and other hosted email solutions, which all do a good job of spam prevention. But, in order to use your own domain names with them, they all charge small amounts monthly, some also based on the number of email addresses. While it didn't totally break the bank, I prefer to keep control of the mail server, and I like to archive emails locally.
So I searched around a bit and found a gem. While still using my own mail server, for both inbound and outbound emails, the MX Guarddog service will receive every single email for all my domains and email addresses and scan for spam and viruses. Then it forwards them to my mail server.
I have only been using it for a few days now, but results are downright spectacular. Even with quite conservative spam filter settings it has eliminated all spam emails so far. And each email address automatically gets a daily email with a list of quarantined emails so every user can review it for any false positives. Well, so far, there weren't any.
Setup is super-simple. If you have your own mail server, you're most likely familiar with DNS and how to modify your DNS entries. I happen to use GoDaddy for these sites, so DNS is managed there. To set up MX Guarddog, you remove your own MX entries and add the ones MX Guarddog provides. D-o-n-e. Done.
The only other thing you absolutely must do is prevent direct email submission to your server. This can occur when a spam site doesn't honor DNS MX records and simply sends emails directly to your domain. If it happens to run the mail server also, you still can get spam which bypasses MX Guarddog. You could prevent this by stopping TCP access to port 25 with your server's firewall. Unfortunately, that would mean you can't configure a POP3/SMTP application (like a mobile app or a web site) to submit emails though your mail server. Instead, I chose to use a different port, other than 25, for direct email submission. No, I'm not telling you which port. Of course, a spam site could still probe all the ports (there are a lot) which takes quite a long time. But so far I haven't seen anyone try that. As it turns out, half of all spam I received arrived directly at my mail server. So now I have eliminated this source of spam also.
So how much does all this cost? If you only have a few email addresses and domains, it can be completely FREE. All you need to do is add a simple text link, provided by MX Guarddog, to one page on your site. One link to their site gives you 15 email addresses, regardless of the number of domains used. The more domains and pages you use to link to MX Guarddog, the more free email addresses/domains you get. And if you don't want to provide a link to MX Guarddog, there is a low cost pay option, currently $0.25 per email address per month.