How To Install Mailu Mail Server On Ubuntu 20.04

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:

  1. Standard email server, IMAP and IMAP+, SMTP and Submission
  2. Advanced email features, aliases, domain aliases, custom routing
  3. Web access, multiple Webmails and administration interface
  4. User features, aliases, auto-reply, auto-forward, fetched account
  5. Admin features, global admins, announcements, per-domain delegation, quotas
  6. Security, enforced TLS, Letsencrypt!, outgoing DKIM, anti-virus scanner
  7. Antispam, auto-learn, greylisting, DMARC and SPF
  8. Freedom, all FOSS components, no tracker included

DNS Setup

You need to create few records for domain to get started. They are as follows.

TypeHostValue
AmailYour IP address
MX@mail.yourdomain.com 10

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
62.15.116.167 mail.example.com

Once set, reboot your system

sudo reboot

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

Ubuntu 22.04:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Ubuntu 20.04|18.04:

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

Install Docker-Compose

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

vim docker-compose.yml

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

Install Mailu

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.

  • https://setup.mailu.io/

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.

mkdir /mailu
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 admin@yourdomain.com 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.

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply Cancel reply