Configuring a cloud-based secure multi-domain web and e-mail server


Install Virtualmin

See Zwiegnet Blog 2014’s Installing Virtualmin on CentOS guide for reference.

Virtualmin is a web-portal that allows complete access to server administration tasks via easy-to-navigate web pages. A nice side-effect of installing Virtualmin is the installation of MySQL and the easy configuration of multiple domains.

Let’s start by changing to our user’s home folder:

[newuser@mail ~]$ cd ~/tmp

This will help ensure we don’t pollute our file system with downloaded files. We’ll use the “wget” command to obtain the Virtualmin installation script:

[newuser@mail ~]$ wget

Next, make the installation script executable:

[newuser@mail ~]$ chmod +x ./

And finally, run the Virtualmin installation script:

[newuser@mail ~]$ sudo ./

Note the “./” leading the command. Because your home directory is not part of the environment PATH variable, linux won’t find the file – even though it’s in the current directory. Instead, we’ll tell linux the file can be found in the current directory by appending “./” to the beginning of the file.

You’ll be presented with a large disclaimer, and a request to continue. Press the “Y” key. You’ll be asked to enter a fully-qualified domain name for this server. I used the combined hostname and domain we added to our hosts file at the beginning of this article. In my example, I used

The installation process takes a long, long time. Upwards of 90 minutes, depending on your Linode plan. When the installation is complete, the last line of text you’ll see is “INFO – Rule updates done”. Once the installation of Virtualmin is complete, you can point your browser to https://serverIPAddress:10000 (or if you’ve already configured a DNS A record to point to your hostname.domain, point your browser to https://hostname.domain:10000. In my example, I’d browse to Use the root credentials to log in to Virtualmin.

Once logged in to Virtualmin, complete the post-installation wizard. Choose what you like at this point, but I’ll list the choices I made during this wizard. You can always rerun the wizard at a later time.

  • Preload Virtualmin libraries? No (default)
  • Run e-mail domain lookup server? No (default)
  • Run ClamAV server scanner? No (default)
  • Run SpamAssassin server filter? No (default)
  • Run MySQL database server? Yes (default)
  • Run PostgreSQL database server? No (default)
  • Assign MySQL password
  • MySQL configuration size? Medium system (512M) with regular MySQL use
  • Password storage mode: Store plain-text passwords (default)

Next step: Adding your first domain

2 thoughts on “Configuring a cloud-based secure multi-domain web and e-mail server

    • Awesome! To be perfectly honest, i went with postfix because it’s been the default I’ve seen installed with Virtualmin. Why did you choose to go with exim?

Leave a Reply

Your email address will not be published. Required fields are marked *