A few months ago, I started a migration of an old Linux server to a MacMini, running Debian Jessie and all its services in Docker containers.
It was really easy for DNS or Web Server. But a mail server is really more complicated:
- it uses a bunch of daemons (imap, smtp)
- it also needs additional services (anti-spam, anti-virus...)
- configuration can be tricky
- security is very important
Why don't you go with Google?
I'm running my mail server at home since 2005, and it helped me a lot to understand how internet works :
- mail protocols (smtp, imap)
- security, open relay and firewalls
- dns, spf
The other reason is that I have 500+ aliases on my personal account, one for each web site I have an account, and I really want to keep this feature, which is currently limited to 30 aliases with Google Apps.
Do not reinvent the wheel
I had a look to some docker images, but most of them where more complicated than I expected, and also using *SQL databases.
I wanted something:
- simple to install
- versionable, only based on config files that can be pushed into my git repository
- easy to deploy using a single command line
Here comes docker-mailserver
I personally use this image every day on a multi-account/domain/user server.
How does it works?
To be simple, this image is based on convention over configuration concept. Of course, if you need something more specific, it's also possible.
The mains files are:
postfix/accounts.cfto manage users and passwords
postfix/virtualto manage aliases and forwards
And that's it.
Start you container using
docker-compose and you have a running mail server with:
- clamav with automatic updates
- ready for SSL and LetsEncrypt
- opendkim and opendmarc
One more thing?
Yep. You can also:
- add specific spamassassin rules into
- generate a self-signed certificate using a dedicated tool (which can be tricky...)
Please have a look to the detailed
README on Github.
You're also welcome if you want to improve this docker image. Just open an issue, we'll talk about your idea, I'll help you and merge.
And big thanks to @docker for this Tweet: