4.7 KiB
Docker Compose setup
Prepare the environment
Mailu will store all of its persistent data in a path of your choice
(/mailu by default) simply create the directory and move there:
mkdir /mailu
cd /mailu
Download the initial configuration file
Docker Compose configuration is stored in a file named docker-compose.yml.
Additionally, Mailu relies on an environment file for various settings.
Download the proper template files from the git repository. For stable:
wget -O docker-compose.yml https://raw.githubusercontent.com/Mailu/Mailu/stable/docker-compose.yml.dist
wget -O .env https://raw.githubusercontent.com/Mailu/Mailu/stable/.env.dist
For the latest version (replace with version number otherwise):
wget -O docker-compose.yml https://raw.githubusercontent.com/Mailu/Mailu/master/docker-compose.yml.dist
wget -O .env https://raw.githubusercontent.com/Mailu/Mailu/master/.env.dist
Then open the .env file to setup the mail server. Modify the ROOT setting
to match your setup directory if different from /mailu.
Mdify the VERSION configuration in the .env file to reflect the version you picked..
Set the common configuration values
Open the .env file and set configuration settings after reading the configuration
documentation. Some settings are specific to the Docker Compose setup.
Modify BIND_ADDRESS4 to match the public IP address assigned to your server.
This address should be configured on one of the network interfaces of the server.
If the address is not configured directly (NAT) on any of the network interfaces or if
you would simply like the server to listen on all interfaces, use 0.0.0.0.
Modify BIND_ADDRESS6 to match the public IPv6 address assigned to your server.
The behavior is identical to BIND_ADDRESS4.
Set the TLS_FLAVOR to one of the following
values:
certis the default and requires certificates to be setup manually;letsencryptwill use the Letsencrypt! CA to generate automatic ceriticates;notlswill disable TLS, this is not recommended except for testing.
Enable optional features
Some of Mailu features are not used by every user and are thus not enabled in a default configuration.
A Webmail is a Web interface exposing an email client. Mailu webmails are
bound to the internal IMAP and SMTP server for users to access their mailbox through
the Web. By exposing a complex application such as a Webmail, you should be aware of
the security implications such an increase of attack surface. The WEBMAIL
configuration option must be one of the following:
noneis the default value, no Webmail service will be exposed;roundcubewill run the popular Roundcube Webmail ;rainloopwill run the popular Rainloop Webmail.
The administration interface is not exposed on the public address by default,
you will need to set the EXPOSE_ADMIN variable accordingly:
yeswill expose the admin interface in/admin;no(or any other value) will disable this behaviour.
A Webdav server exposes a Dav interface over HTTP so that clients can store
contacts or calendars using the mail account. This can be enabled using the WEBDAV
setting. The configuration option must be one of the following:
noneis the default value, no webdav service will be exposed;radicaleexposes the radicale Webdav service.
An antivirus server helps fighting large scale virus spreading campaigns
that leverage e-mail for initial infection. This can be setup using the ANTIVIRUS
setting. The configuration option must be one of the following:
nonedisables antivirus checks;clamavis the default values, the popular ClamAV antivirus is enabled.
Make sure that you have at least 1GB or memory for ClamAV to load its signature database.
Finish setting up TLS
Mailu relies heavily on TLS and must have a key pair and a certificate
available, at least for the hostname configured in the .env file.
If you set TLS_FLAVOR to cert or if then you must create a certs directory
in your root path and setup a key-certificate pair there:
cert.pemcontains the certificate,key.pemcontains the key pair.
Start Mailu
You may now start Mailu. Move the to the Mailu directory and run:
docker-compose up -d
Finally, you must create the initial admin user account:
docker-compose run --rm admin python manage.py admin root example.net password
This will create a user named root@example.net with password password and administration privileges. Connect to the Web admin interface and change the password to a strong one.