Mailu is a simple but powerful mail server running on docker containers. It is a free software open to suggestions and contributions. It is meant to provide an easy email server set up. Mailu images should run on any cloud server running Docker (>= 1.11) and you can choose between Docker compose, Kubernetes and Rancher to run your Mailu mail server. In this guide we will help users install and configure Mailu mail server on Ubuntu 20.04 Linux system.
Features of Mailu Mail server
Just like any other mail server, mailu is expected to meet the requirements of sending and receiving emails. The following are some of the most important features of Mailu mail server:
- Standard email server, IMAP and IMAP+, SMTP and Submission
- Advanced email features, aliases, domain aliases, custom routing
- Web access, multiple Webmails and administration interface
- User features, aliases, auto-reply, auto-forward, fetched account
- Admin features, global admins, announcements, per-domain delegation, quotas
- Security, enforced TLS, Letsencrypt!, outgoing DKIM, anti-virus scanner
- Antispam, auto-learn, greylisting, DMARC and SPF
- Freedom, all FOSS components, no tracker included
You need to create few records for domain to get started. They are as follows.
|A||Your IP address|
Set up Mailu mail server on Ubuntu 20.04
Update your system packages before installations
sudo apt-get update sudo apt-get upgrade
We need to ensure that our system has a valid IP address and a fully qualified domain name. There should also be valid mx record for our domain. To set server IP and hostname, run the below commands:
sudo hostnamectl set-hostname mail.example.com
Also add a server’s FQDN and IP address to /etc/hosts file.
sudo vim /etc/hosts 188.8.131.52 mail.example.com
Once set, reboot your system
The following ports should be allowed through your system firewall as they are critical for emails. You can open the ports with ufw as shown below:
sudo ufw allow proto tcp from any to any port 25,80,443,110,143,465,587,993,995
Install Docker and Docker-Compose
Step 1:- Update System
sudo apt -y update
Step 2: Install basic dependencies
There are few dependencies we need to configure Docker repositories and do the actual package installation. Install them by firing the following commands in your terminal.
sudo apt -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
Step 3: Install Docker CE on Ubuntu 22.04|20.04|18.04
Import Docker repository GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
You can then add Docker CE repository to Ubuntu
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Finally install Docker CE on Ubuntu22.04|20.04|18.04:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io
Add your user account to docker group.
sudo usermod -aG docker $USER newgrp docker
Verify installation by checking Docker version:
$ docker version Client: Docker Engine - Community Version: 20.10.12 API version: 1.41 Go version: go1.16.12 Git commit: e91ed57 Built: Mon Dec 13 11:45:33 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.12 API version: 1.41 (minimum version 1.12) Go version: go1.16.12 Git commit: 459d0df Built: Mon Dec 13 11:43:42 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.12 GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d runc: Version: 1.0.2 GitCommit: v1.0.2-0-g52b36a2 docker-init: Version: 0.19.0 GitCommit: de40ad0
sudo apt update sudo apt install -y curl
download the latest Compose on your Linux machine
curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-linux-x86_64 | cut -d '"' -f 4 | wget -qi -
Make the binary file executable.
chmod +x docker-compose-linux-x86_64
Move the file to your PATH.
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
Add user to docker group:
sudo usermod -aG docker $USER newgrp docker
Configure Compose Command-line completion
sudo curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose source /etc/bash_completion.d/docker-compose curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose fpath=(~/.zsh/completion $fpath) autoload -Uz compinit && compinit -i exec $SHELL -l
Test Docker Compose installation
Add below data to the file.
version: '3' services: web: image: nginx:latest ports: - "8080:80" links: - php php: image: php:7-fpm
docker-compose up -d docker-compose ps docker-compose stop docker-compose rm -f
Now, docker and docker-compose installed, it’s time to install Mailu.
Mailu has made it super easy to generate bin file that you will need to install mail server. Simply go to following link and fill the details as follows.
On next screen, fill in the blanks circled in red to generate the configuration file
After that, you will be given with set of commands to run, which will install Mailu mailserver.
Now, let’s execute commands from above screenshot, but with some additional steps.
First command is to make directory.
cd /mailu wget http://setup.mailu.io/1.7/file/f9c808a6-ec48-4499-b4da-346deb0480f3/docker-compose.yml wget http://setup.mailu.io/1.7/file/f9c808a6-ec48-4499-b4da-346deb0480f3/mailu.env
Then, review the configuration files docker-compose.yml and mailu.env file.
apt install pwgen pwgen 16
Start the Compose project
export MAILU_VERSION=1.9 docker-compose -p mailu up -d
Set admin user by running the below command:
docker-compose -p mailu exec admin flask mailu admin admin example.com PASSWORD created admin user
Configure Mailu Mail Server on Ubuntu 20.04
Once done, access Mailu web portal using your hostname: https://mail.
yourdomain.com/admin You should get a page to login with you administrator password. Once you login, you should see a page as below. Ensure to update your password to a stronger one by clicking on ‘update password‘.
Login with username
firstname.lastname@example.org and PASSWORD
On next, screen change the admin password. Further, you can explore yourself.
Final DNS Setup
To wrap up Mailu Docker installation, you need to create 3 TXT DNS records.
Generate DKIM & DMARC Keys
To generate DKIM & DMARC keys go to Mail Domains and then Details of domain as shown below.
Now, you have all 3 records viz, DKIM, DMARC and SPF. Go to your domain registrar and make these entries.