How to Install Simple NixOS Mailserver on Ubuntu Server

In this tutorial, we will walk you through the steps to install Simple NixOS Mailserver on Ubuntu server.

Prerequisites

Step 1: Install Git and Nix

Before we can install Simple NixOS Mailserver on the Ubuntu server, we need to install Git and Nix. Run the following command to install them:

sudo apt update
sudo apt install git curl
curl https://nixos.org/nix/install | sh

Once installed, verify that Nix is working by running:

nix-channel --list

The output should show the Nix channels.

Step 2: Clone Simple NixOS Mailserver

Next, clone the Simple NixOS Mailserver repository using the following command:

git clone https://gitlab.com/simple-nixos-mailserver/nixos-mailserver.git

Step 3: Configure Mailserver

Navigate to the nixos-mailserver directory and copy the config.example.nix to config.nix and edit it to match your domain, hostname and email address.

cd nixos-mailserver
cp config.example.nix config.nix
nano config.nix

Ensure that your domain and server's hostname are properly set in the config.nix like below:

mailserver = {
    domain = "example.com";
    hostname = "mail.example.com";

Also enter your email address in userList section like:

userList = [
        {
                email = "user@example.com";
                passwd = "password";
        }
 ];

Step 4: Build and Install Mailserver

Run the following command to build and install the mailserver:

sudo nixos-rebuild switch -I nixos-config=./config.nix -I nixpkgs=channel:nixos-unstable

Step 5: Run Mailserver

Once the installation is complete, start the mailserver with the following command:

sudo systemctl start mailserver

Use the following command to check the status of the mailserver:

sudo systemctl status mailserver

Conclusion

In this tutorial, you were able to install Simple NixOS Mailserver on Ubuntu Server, configure it and successfully run it. You can check your mail server at http://your-server's-IP-address:1080/users/login.

If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!

Alternatively, for the best virtual desktop, try Shells!