Mailu is a fully-featured mail server solution that runs under Docker Swarm or with Docker Compose. It automatically integrates all opensource software and includes Postfix, Dovecot, and RSpamd.

Project website is at


Installation is as simple as obtaining a docker-compose configuration file and starting the stack. Obtain a docker-compose config from:

Ensure that all domains used in the configuration are properly resolving to your server. The config also assumes that you do not have any custom reverse proxy set up (such as with Traefik) as it bundles its own 'front' proxy.

Bring up the containers, then create a new admin account:

# docker-compose up -d
# docker-compose exec admin flask mailu admin admin password

Once the containers have started, you should be able to navigate to the admin console under /admin.


Periodic 'Authentication Failed' Errors[edit]

Looking at the logs, you see:

front_1     | 2019/11/24 22:34:26 [info] 10#10: *216931 client login failed: "Authentication rate limit from one source exceeded" while in http auth state, client:, server:, login: ""

It looks like rainloop is causing a bunch of authentication requests for each HTTP request that is served. This then causes the authentication rate limit to hit.

The 'fix' is to just raise the limits. This however defeats the whole point of a rate limit (ie. to prevent brute force attacks).