Mailu is a free, open-source mail server.

Mailu Transactional Email Service

A Docker-based full-featured open-source mail server

Mailu is 100% free and open-source mail server software. It's a full-featured free email software with support to IMAP, IMAP+, SMTP, and Submission Protocols.


Mailu is a 100% free and open-source mail server. It’s a simple and easy setup free SMTP server. The free mail server is developed in the Python programming language, and source code is available on Github and you can extend the features by cloning the repository.

Mailu is a rich configurable open-source mail server, which offers a large set of advanced features and security. Comes with a Webmail and Administration Interface out of the box. It supports the most common email protocols like IMAP, SMTP, and POP3 as well as the Submission protocol. It also supports some of the advanced features like domain aliases, custom routing, global admins, per-domain delegations, and quotas.

Security is one of the most prominent features of the Mailu open-source mail server. It enforces TLS, uses Letsencrypt for SSL, DKIM support, and a built-in anti-virus scanner makes it the best choice as a free SMTP server.

Mailu open-source mail server provides all of the basic functionality any business needs to run its own free email software. If you are looking to set up your own free mail server, then you should definitely check Mailu open-source mail server.

System Requirements

You should make sure that your hardware (virtual or physical) is compatible with the latest Linux kernel. Also, you should have at least 2GB of total memory and 1GB of free memory when running Mailu.


Following are the key features of Mailu Open-Source 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 accounts
  • 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


To install the Mailu open-source mail server, you must first ensure that your system has a valid IP address and a fully qualified domain name. There should also be a valid MX record for the domain. To set server IP and hostname, run the below commands:

$ sudo hostnamectl set-hostname

Also add a server’s FQDN and IP address to /etc/hosts file.

$ sudo vi /etc/hosts

Once set, reboot the 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

Before we proceed since Mailu is installed using the Docker and Docker Compose, so I’ll assume that you already have both setup. If not you can follow the official documentation for the setup:

After installing Docker and Docker Compose, proceed to create a directory where mailu will store its data:

$ sudo mkdir /mailu

Mailu uses a docker-compose.yml file and also relies on mailu.env for various settings. You need to generate a Mailu configuration for your environment using the online mailu setup utility. The generator will give you both a docker-compose.yml and a mailu.env file. Once the configuration is generated, you will receive links to use for downloading the files. Ensure that you download the files in the mailu directory.

When done with the settings, run mailu with docker compose as below in mailu directory:

$ sudo docker-compose up -d
Recreating mailu_webdav_1    ... done 
Recreating mailu_fetchmail_1 ... done 
Recreating mailu_front_1     ... done 
Recreating mailu_antivirus_1 ... done 
Recreating mailu_admin_1     ... done 
Recreating mailu_antispam_1  ... done 
Recreating mailu_imap_1      ... done 
Recreating mailu_smtp_1      ... done 
Recreating mailu_webmail_1   ... done

Set admin user by running the below command:

$ docker-compose -p mailu exec admin flask mailu admin admin PASSWORD
Created admin user


You may find the following links relevant: