Installing WordPress on cloud hosting is no simple task. Before you install WordPress you need to install several software packages like apache or nginx, database, PHP, etc. Unless you are experienced it’s very easy to get lost on command line interface. And that’s not all, if any issue pops up ever, you might have to spend countless hours to fix that.

Luckily, we have a great solution to this problem. Easyengine team has made the installation of WordPress super easy. All you need is to just execute few lines of command and all the necessary package needed will get installed.

Requirement

  • A domain name from Namecheap or Namesilo
  • A cloud hosting from any of the service provider. You must install Ubuntu 18.04 on the server.

I will be using Contabo, Google Cloud, Oracle Cloud, and DigitalOcean for the installation.

Adding DNS Records

After above step go to your domain registrar and create these two DNS records.

HostTypeValue
@A1.2.3.4
wwwA1.2.3.4

Initial Setup

First of all, you need to install Ubuntu 18.04 on your Linux server. Then connect to your server. If you are on Windows you will need a special SSH client called Putty, but Mac and Linux users can connect to the server from the terminal.

putty-connect-to-the-server

Switch to root user

sudo -i

Next, update the server with following command

apt update && apt upgrade -y

Setting up hostname (optional)

hostnamectl set-hostname node.example.com

Installing WordPress on Cloud

After you have completed above steps execute the following command to install necessary packages and dependencies on your server.

wget -qO ee https://rt.cx/ee4 && sudo bash ee

Before you execute the next line of command which will install WordPress, check if DNS records propagated or not, otherwise you will get SSL error.

ping example.com

The output of above command must show the IP address of your server.

Now, it’s time to install WordPress.

ee site create example.com --type=wp --cache --ssl=le

Above command will install WordPress on your cloud with cache and let’s encrypt SSL, all in one command. But just in case if you don’t want to install Let’s encrypt SSL or Cache then just get rid of that part in the command.

ee site create example.com --type=wp

You can also create multisite WordPress in subdirectory using following command.

ee site create example.com --type=wp --mu=wpsubdir --cache

Once WordPress installation finishes you will receive all the credentials to login and manage WordPress. Also, if you like to explore more feel free to check easyengine. There you will find different commands for different purpose.

Now, login to WordPress and start working on your dream.

If you want to migrate your WordPress from shared hosting to Cloud hosting, then you can make use of plugins like UpdraftPlus.

Conclusion

Installing and Managing WordPress on cloud hosting is super easy with Easyengine.

In the article Install Postal SMTP server on Ubuntu 18.04, I already have discussed steps to install Postal Successfully. Now in this article, I will tell you the commands and steps required to configure Postal, create organizations, add domains, create SMTP etc. Apart from that, I will also discuss the steps required to install SSL certificate. Now, here note that SSL for click tracking is handled by Postal and therefore you don’t have to do anything for that. It’s only the SSL for web ui and SMTP that we are going to install and configure.

Creating First SMTP on postal

First of all login to your Postal and then create your first organization.

postal-dashboard

Next create your First SMTP server

build-smtp-server-postal

On next screen fill the details

build-smtp-server-postal

After you have successfully built the server, it’s time to add a domain.

postal-add-domain

Next, you will be given set of DNS records to create. So, just create them.

Creating DNS records for Postal

Their is very nice article already written by developers of Postal to create DNS records. But if you follow along, you might get lost and miss mail-tester 10/10 score.

Create the following records

NameTypeValue
mailA1.2.3.4
rp.mailA1.2.3.4
track.mailA1.2.3.4
psrpCNAMErp.mail.inguide.in
@MX10; mail.inguide.in
routes.mailMX10; mail.inguide.in
rp.mailMX10; mail.inguide.in
@TXTv=spf1 a mx include:spf.mail.example.com ~all
rp.mailTXTv=spf1 a mx include:spf.mail.example.com ~all
spf.mailTXTv=spf1 ip4:1.2.3.4 ~all
postal-a1b2c3._domainkeyTXTv=DKIM1; t=s; h=sha256; p=MIGfMA0GC…;
_dmarcTXTv=DMARC1; p=reject; sp=reject; rua=mailto:[email protected]

Creating SMTP server

Go to credentials tab and add credentials

postal-create-credentials

After you have created credentials, key will automatically appear which is none other then your SMTP password in case you have selected SMTP from drop down list. Otherwise, it can be used as API key.

Now you can do the testing with several email marketing tools available.

Installing Free SSL on Postal

To get the SSL certificate execute the following command.

certbot certonly --webroot --webroot-path /opt/postal/app/public --domains mail.yourdomain.com

This will procure SSL certificate and store it on your server. Also, Certbot will tell you where the certificate is located. Subsequently, you have to specify the certificate location inside the nginx configuration and postal.yml

Open nginx config file

nano /etc/nginx/sites-available/default

Next edit the already present private certificate to add the following lines to it.

ssl_certificate     /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem;

After that open the Postal config file postal.yml

nano /opt/postal/config/postal.yml

Then add the following line to it

smtp_server:
  tls_enabled: true
  tls_certificate_path: /etc/letsencrypt/live/postal.yourorganisation.com/fullchain.pem
  tls_private_key_path: /etc/letsencrypt/live/postal.yourorganisation.com/privkey.pem

Next restart the Nginx to reload the new certificate into the browser.

sudo systemctl reload nginx

Now go to the browser and reload the webpage.

How to Renew SSL Certificate?

As long as you got the certificate from Lets encrypt, Certbot will automatically renew the certificates so you don’t have to worry about replacing them yourself.

Video

Conclusion

Installing and configuring Postal for beginners could be daunting task. But with the help of this and previous article along with video guide, I hope you would be able to install successfully.

Building Postal SMTP server to send bulk emails is a good choice for email marketers. Postal is very powerful and backed by a large community of developers. It is an open-source mail server script written in JavaScript and Ruby. It can be used to build in-house SMTP server just like Mailgun, Sendgrid, Mailchimp, etc.

Postal installation is not very straight forward. The process is fairly complex. It’s because Postal needs several packages to be installed before hand, it can be used. I have tried to make it as simple as possible.

Requirement for Postal SMTP server

  • A domain name from Namecheap or Namesilo
  • A VPS or cloud with Ubuntu 18.04 & 8 GB of RAM

I am using Contabo for the purpose of demonstration.

Initial Setup

In order to start with installation, you will need to connect to the server. If you are on you have to get SSH client for this purpose. One such SSH client is Putty. But if you are on Linux or Mac, just open the terminal and type [email protected] where xx.x.x.xxx is your server IP address.

After that update and upgrade your Ubuntu

apt update && apt upgrade -y

Next setup hostname

hostnamectl set-hostname mail.yourdomain.com

Updating DNS records

Login to domain registrar and create A record for mail.yourdomain.com

Now let’s begin with installation

Installation and Configuration of MariaDB

First of all, install MariaDB database on your server.

apt-get install mariadb-server libmysqlclient-dev -y

After installing MariaDB, it’s time to do some configuration to MariaDB

mysql_secure_installation

Answer all the questions as shown below:

    Enter current password for root (enter for none):
    Set root password? [Y/n]: N
    Remove anonymous users? [Y/n]: Y
    Disallow root login remotely? [Y/n]: Y
    Remove test database and access to it? [Y/n]:  Y
    Reload privilege tables now? [Y/n]:  Y

Next login to MariaDB to create mysql database

mysql -u root -p

Enter your root password, then create a database and user for Postal. Here I am creating database name “postal” and database user “postaluser”. Also, replace postaluser password “your_password” with a password of your choice.

CREATE DATABASE postal CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'postaluser'@'localhost' IDENTIFIED BY 'your_password';

Next, grant all the privileges to the postal database:

GRANT ALL ON postal.* TO 'postaluser'@'localhost';
GRANT ALL PRIVILEGES ON `postal-%`.* to `postaluser`@`localhost` IDENTIFIED BY "password";

After that save and exit from the MariaDB shell

FLUSH PRIVILEGES;
QUIT;

Installing Ruby and RabbitMQ

It’s time to install Ruby on the server. By default, Ruby is not available in the Ubuntu 18.04 default repository. Therefore, we need to add Ruby repository first.

apt-get install software-properties-common -y
apt-add-repository ppa:brightbox/ruby-ng

Next, update the repository and install the Ruby.

apt-get update -y
apt-get install ruby2.3 ruby2.3-dev build-essential -y

Now we need to install RabbitMQ for message queueing. For that, we need to add Erlang repository. Let’s download and add Erlang GPG key.

wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | apt-key add -

Next, add the Erlang repository with the following command:

echo "deb https://packages.erlang-solutions.com/ubuntu bionic contrib" | tee /etc/apt/sources.list.d/erlang.list

At last step, update the repository and install Erlang.

apt-get update -y
apt-get install erlang -y

Now Erlang is installed let’s download RabbitMQ with GPG key.

wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | apt-key add -
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | apt-key add -

Next, add the RabbitMQ repository with the following command:

echo "deb https://dl.bintray.com/rabbitmq/debian $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/rabbitmq.list

At last update the repository and install RabbitMQ

apt-get update -y
apt-get install rabbitmq-server -y

Now we have RabbitMQ installed, let’s check the status of RabbitMQ

systemctl status  rabbitmq-server

After that we need to create RabbitMQ vhost and user for postal. Simply run the following command:

rabbitmqctl add_vhost /postal
rabbitmqctl add_user postal password
rabbitmqctl set_permissions -p /postal postal ".*" ".*" ".*"

Installing Nodejs

By default, the latest version of Nodejs is not available in the Ubuntu 18.04 default repository. Therefore, add the repository for that first.

curl -sL https://deb.nodesource.com/setup_10.x | bash

Next install it.

apt-get install nodejs -y

Installing Postal

Before installing Postal, you will need to create a user for postal mail server on Ubuntu.

useradd -r -m -d /opt/postal -s /bin/bash postal

Now, enable ruby to listen on web ports.

setcap 'cap_net_bind_service=+ep' /usr/bin/ruby2.3

After that, install all the required gems with the following command:

gem install bundler

Next, install procodile with gem:

gem install procodile

Finally, install nokogiri with gem:

gem install nokogiri -v '1.7.2'

Install git with the following command

apt install git -y

Now, create a directory structure for Postal. Here all the files will be kept related to Postal

mkdir -p /opt/postal/app

It’s time to download the latest version of Postal.

wget https://postal.atech.media/packages/stable/latest.tgz

Once the download is completed, extract the downloaded file with the following command:

tar zpxvf latest.tgz -C /opt/postal/app

Next, change ownership of postal directory.

chown -R postal:postal /opt/postal

Now, create a symlink for Postal binary

ln -s /opt/postal/app/bin/postal /usr/bin/postal

After that, install all the required dependencies with the following command:

postal bundle /opt/postal/vendor/bundle

If above steps fails and you get the error, then execute the following command. This error is because mimemagic got updated.

cd /opt/postal/app
bundle update mimemagic
bundle install
cd ~

Next, generate Postal Configuration files with the following command:

postal initialize-config

Now, open Postal configuration file and edit it to reflect correct information:

nano /opt/postal/config/postal.yml

Make the following changes as per your environment:

web:
  host: postal.example.com
  # The protocol that requests to the management interface should happen on
  protocol: https

main_db:
  # Specify the connection details for your MySQL database
  host: localhost
  username: postal
  password: password
  database: postal

message_db:
  # Specify the connection details for your MySQL server that will be house the
  # message databases for mail servers.
  host: localhost
  username: postal
  password: password
  prefix: postal

rabbitmq:
  # Specify the connection details for your RabbitMQ server.
  host: 127.0.0.1
  username: postal
  password: password
  vhost: /postal
  
dns:
  # Specifies the DNS record that you have configured. Refer to the documentation at
  # https://github.com/atech/postal/wiki/Domains-&-DNS-Configuration for further
  # information about these.
  mx_records:
    - mx.postal.example.com
  smtp_server_hostname: postal.example.com
  spf_include: spf.postal.example.com
  return_path: rp.postal.example.com
  route_domain: routes.postal.example.com
  track_domain: track.postal.example.com

smtp:
  # Specify an SMTP server that can be used to send messages from the Postal management
  # system to users. You can configure this to use a Postal mail server once the
  # your installation has been set up.
  host: 127.0.0.1
  port: 2525
  username: # Complete when Postal is running and you can
  password: # generate the credentials within the interface.
  from_name: Postal
  from_address: [email protected]

Save and close the file with CTRL + X. Then, initialize database with the following command:

postal initialize

Next, you will need to create a admin user for Postal.

postal make-user

Answer all the questions as shown below:

Postal User Creator
Enter the information required to create a new Postal user.
This tool is usually only used to create your initial admin user.

E-Mail Address      : [email protected]
First Name          : Admin
Last Name           : Postal
Initial Password:   : *********

User has been created with e-mail address [email protected]

Finally, start the Postal application.

postal start

Now, check the status of Postal

postal status

Just in case, if you like to stop postal service, you can do so by

postal stop

Create Systemd Service file for Postal

Next, you will need to create a systemd service file to manage Postal service. This can be done with the following command:

nano /etc/systemd/system/postal.service

Add the following lines:

[Unit]
Description=Postal Mail Platform
After=mysql.service rabbitmq-server.service
Wants=mysql.service rabbitmq-server.service

[Service]
ExecStart=/usr/bin/postal start
ExecStop=/usr/bin/postal stop
ExecReload=/usr/bin/postal restart
User=postal
Restart=on-failure
Type=forking

[Install]
WantedBy=mysql.service rabbitmq-server.service

Save and close the file. Then, reload the systemd with the following command:

systemctl daemon-reload

Next, start Postal service and enable it to start on boot with the following command:

systemctl start postal 
systemctl enable postal 

You can check the status of Postal service with the following command:

systemctl status postal

Install and Configure Nginx

Next, you will need to install Nginx to access Postal mail server. First, install Nginx with the following command:

apt-get install nginx openssl -y

Next, copy Nginx configuration file with the following command:

cp /opt/postal/app/resource/nginx.cfg /etc/nginx/sites-available/default

Next, create a self-signed SSL certificate with the following command:

mkdir /etc/nginx/ssl/
openssl req -x509 -newkey rsa:4096 -keyout /etc/nginx/ssl/postal.key -out /etc/nginx/ssl/postal.cert -days 365 -nodes

Answer all the questions as shown below:

Generating a 4096 bit RSA private key
...............................++
.................++
writing new private key to '/etc/nginx/ssl/postal.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:Bihar
Locality Name (eg, city) []:Patna
Organization Name (eg, company) [Internet Widgits Pty Ltd]:IT
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:Dhiraj
Email Address []:[email protected]

Next, open the Nginx default virtual host file and define your domain:

nano /etc/nginx/sites-available/default

Here, you need to make the following changes:

server_name postal.example.com;

Save and close the file. After that, restart Nginx service with the following command:

systemctl restart nginx

Access Postal Web Interface

Now, open your web browser and type the URL https://mail.yourdomain.com. You will be redirected to the admin page. Login with email id and password.

Postal-login-screen

After that, you will postal dashboard.

postal-dashboard

In, next article we will learn to create organization, domain management and SMTP creation, etc.

Video Lesson

Conclusion

Installing Postal is somewhat complex procedure. Nonetheless, it’s worth to give it a try considering the Postal features.

Installing SSL certificate on iReadMail, especially Let’s encrypt is not so straight forward. Therefore, I had to write an article for it. If you have been following the installation of iRedMail, then already know I user iRedMail installer. So the steps to install SSL certificate are as follows.

Requesting a free cert from Let’s Encrypt

First of all we need to install certbot to get certificate from Let’s encrypt.

apt install certbot

Next verify the request process with dry run. This will not install the certificate rather verify the DNS records.

certbot certonly --webroot --dry-run -w /var/www/html -d mail.inguide.in

Next you will be asked for email address and to accept tos. Answer that.

Now if everything went smoothly and you didn’t get any error then run the following command to get the certificate.

certbot certonly --webroot -w /var/www/html -d mail.inguide.in

After successful execution of this command SSL certificate were store in the directory /etc/letsencrypt/live/mail.inguide.in/

Now we need to change the premission of this directory.

chmod 0644 /etc/letsencrypt/{live,archive}

Using the SSL certificate

Now we have SSL certificate ready to put in use. Run the following command to backup existing private keys

mv /etc/ssl/certs/iRedMail.crt{,.bak}   
mv /etc/ssl/private/iRedMail.key{,.bak}

It’s time to create symbolic link to the Let’s Encrypt files, or in simple words to install the certificate

ln -s /etc/letsencrypt/live/mail.inguide.in/fullchain.pem /etc/ssl/certs/iRedMail.crt
ln -s /etc/letsencrypt/live/mail.inguide.in/privkey.pem /etc/ssl/private/iRedMail.key

Restart the services with following command

systemctl restart dovecot
systemctl restart postfix
systemctl restart nginx
systemctl restart slapd

Now, go refresh the page to load new certificate.

Automatically renewing the certificate

Install new crontab with command:

crontab -e

In order type anything inside crontab press A on your keyboard. And then copy the following line

1   3   *   *   *   certbot renew --post-hook '/usr/sbin/service postfix restart; /usr/sbin/service nginx restart; /usr/sbin/service dovecot restart'

After the close the editor with esc + :wq

Conclusion

The brand new Let’s Encrypt SSL is ready on your iRedMail server. You can check it by visiting iRedMail admin, Webmail etc. Also, you will not receive any warning while submitting emails via SMTP or connecting from popular Email client like Outlook, Thunderbird, etc.

Building SMTP server with iReadMail could be a little tricky for beginners. But it’s still easy compared to building SMTP with mailcow or Postal. If you are looking for the easiest way to build your own SMTP server then perhaps you should check building SMTP server with Mailinabox.

About iRedMail

iRedMail is an open-source mail server script with a very good number of developers contributing to its development on GitHub. It is free of cost but if you want an advanced admin panel to manage users then you have to pay for it, though the basic admin panel is free.

Features of iRedmail

iRedMail comes with inbuilt Webmail, Calendar, Contacts, ActiveSync, Antispam, Antivirus, greylisting, whitelisting, blacklisting, etc. It also supports MariaDB, PostgreSQL, OpenLDAP backends. This means you have complete freedom to choose database type.

Perhaps iRedMail is the only mail server solution that can be installed on all version of Linux. So, here also you have flexibility to deploy iRedMail on your favorite Linux distribution.

Requirement

Like every mail server you will need

  • a domain from Namecheap
  • A VPS or Cloud

I will be using Contabo for demonstration but you are absolutely free to make your choices. I already have demonstrated steps to get domain name and VPS in the following video.

Updating DNS records

First thing first make changes to DNS records. Login to your domain registrar and create A record for mail.inguide.guru.

After that create or update MX record pointing to mail.inguide.guru with priority 10.

Then create TXT record for SPF entry and all following in value

v=spf1 mx ~all

Initial Setup

First of all we need a way to connect to the server. Though it’s simple on Linux or MacOS, for Windows you will need a SSH client like putty or Bitvise. Download it and connect to your server

Set the hostname or Fully Qualified Domain Name (FQDN) with following command on Ubuntu

hostnamectl set-hostname mail.inguide.in

Don’t forget to replace inguide.in with your domain name.

Then open hosts with following command

apt install vim -y
vim /etc/hosts

Now add following lines and don’t forget to replace domain name and IP

45.354.212.212 mail.inguide.in mail

Let’s update the OS.

apt update && upgrade -y

Next install gzip package

apt install gzip

Our initial setup is complete now.

Installing iRedMail

Here first step would be to get the iRedMail. Go to iRedMail website and download installer.

download-iredmail

Now connect to your server with any FTP client, let’s say WinSCP or FileZilla and upload the iRedMail installer. Or, alternatively download with following command

https://github.com/iredmail/iRedMail/archive/1.3.2.tar.gz

Next extract it and begin the installation with following command

cd /root/
tar zxf iRedMail-x.y.z.tar.gz
cd /root/iRedMail-x.y.z/
bash iRedMail.sh

Answer the series of questions appearing on your screen to finalize iRedMail installation.

Select email directory location

iredmail-select-email-directory-location

Select webserver type, if you don’t want to run any applications on this server you can skip it.

select-webserver

Select database type. If you want to run mail only server use OpenLDAP but if you are planning to host application as well then select MariaDB or PostgreSQL.

The following screen pops up only if you select OpenLDAP.

Specify LDAP suffix

Now type the MySQL administrator password

Finally enter the domain name here

enter-the-domain-name

Now you will be asked to enter postmaster password

Here on this final screen, you have option to install Webmail, Calendar, Address book & Activesync. Make your selection then hit next.

Finally the summary of all your choices. If you want to make any modification press CTRL+C to stop the installation and start once again. Otherwise type y and continue.

At the end of installation you will be asked to change SSH port (port 22) or continue

Now installation has been finished. Reboot the system to enable all mail service.

Also, copy the different URLs generated for your application.

To open webmail go to https://mx.inguide.guru/mail

To open admin panel go to https://mx.inguide.guru/iredadmin

Login with you username and password

Now here you can add domain, create users etc.

Copying DKIM record to the DNS

To get the DKIM record go to the terminal and run the following command.

amavisd-new showkeys

Output would be something like this

dkim._domainkey.mydomain.com.   3600 TXT (
  "v=DKIM1; p="
  "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYArsr2BKbdhv9efugByf7LhaK"
  "txFUt0ec5+1dWmcDv0WH0qZLFK711sibNN5LutvnaiuH+w3Kr8Ylbw8gq2j0UBok"
  "FcMycUvOBd7nsYn/TUrOua3Nns+qKSJBy88IWSh2zHaGbjRYujyWSTjlPELJ0H+5"
  "EV711qseo/omquskkwIDAQAB")

Copy the output of command inside ( ) in one line and remove all quotes.

 v=DKIM1; p= MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYArsr2...................

After these steps secure your iRedMail server to deal with SSL warning.

Conclusion

Installing iRedMail is easy and quick. It is loaded with several features and you have options to make selection of features you like to install. It is very robust system and it can easily handle good amount of traffic.

There are many ways to create SMTP and send unlimited emails and Mailinabox is just one of them. Basically, as long as it’s your SMTP server you can send unlimited emails, no restriction at all from your side unless you want to put one. But wait!! There’s a catch. The catch is that ISP doesn’t accept unlimited emails from New SMTP. Anyway, I will discuss more in ISP another article. Here’s I am going to demonstrate, how you can install Mailinabox and create SMTP.

Requirement

I am using Contabo in this demo. But of course, you are free to select any VPS hosting. Select Ubuntu 18.04 during placing an order. Just in case you ordered VPS with some other OS, follow the screenshot to reinstall Ubuntu 18.04.

contabo-OS-reinstall

Update Nameservers

Before you begin, you need to create custom name servers with domain registrar. Go to custom nameserver and create it.

namecheap-custom-nameservers

Then update the nameservers to

ns1.box.inguide.in

ns2.box.inguide.in

With this our work at domain registrar finishes off.

Connect to the server

If you are on windows machine, you will need an special SSH client to connect to Linux server. I am using Putty here. It’s open source and light weight. 

putty-connecting-to-server

Now the first step would be test whether port 25 is open or not

apt install telnet -y
telnet smtp.gmail.com 25

You would see Connected status. €if you didn’t this means port 25 is blocked and you must ask hosting provider to open it.

Next, set the hostname with the following command,

hostnamectl set-hostname box.inguide.in

Replace inguide.in with your domain name. But don’t replace box with anything else. After that, update the server with following command

apt update && apt upgrade -y

Now run the following command

curl -s https://mailinabox.email/setup.sh | sudo bash

Answer questions which will appear on your screen. If asked for email id type

[email protected]

not [email protected]

At the end of installation you will asked for user name and password. Enter it.

Finalizing the installation

Now go to URL https://box.inguide.in/admin and login. If any thing is not in green address that issue. After that provision SSL certificate.

You can add users and find SMTP details in relevant tabs.

Testing the SMTP server

Go to Mail tester to and get email id from there and then send a test email to it. You will get 10/10 score without any issue. You can do further testing with these tools.

Summary

Installing Mailinabox is absolutely simple and no brain storming in that. Just one command and you are good to go. Nameserver configuration could be little tricky for beginners, but I have made that simple as well.

Virtualmin is very robust open source control panel. It can be installed on CentOS, Debian, Ubuntu, etc. It runs as module to webmin which is written in perl and provides almost everything required for managing control panel. Once installed you might never need to see command line again even for updating packages. It notifies you as soon as update is available and you can update them with just one click.

Requirement

You need following things to be ready in order to install virtualmin

  • a domain from NameCheap
  • a VPS or cloud with a minimum of 1 GB RAM. I am using Contabo here.

Now, an immediate question could pop up in your mind. How to decide VPS or cloud specification? Well, it completely depends on the amount of traffic your website could generate. Virtualmin is going to consume roughly 512 MB of RAM. Therefore even at the beginning, I would say go with 2 GB RAM and 1 vCPU at least. In this demonstration, I will be using Contabo VPS with 8 GB RAM, enough for Virtualmin and most applications.

I have my domain registered with namecheap. Check out for deals on domain name registration and hosting.

Updating DNS records

After you receive the IP address from VPS seller login to the domain registrar and create custom nameserver also called hostnames/ child nameservers. For example if inguide.in is your domain name, then you will have to create ns1.inguide.in & ns2.inguide.in and in next field pass on the IP address received.

Next, update the nameserver to newly created custom nameservers that is ns1.inguide.in & ns2.inguide.in

Installation

Before you begin the installation you need to connect to the server, with the details provided by the VPS company. It’s super easy to connect to the server from a Linux machine. But fortunately, we have several open-source application which makes the task easier even for Windows user. One such application is putty. After you have downloaded the putty first step is to connect to VPS from your Windows.

connecting-to-linux-putty

Enter the IP address of your server in the box highlighted in red in above box. A command window will open where you have to enter user name root and password provided by the VPS seller. Sometimes username could be different from root , therefore cross check with VPS seller. If it’s not root then you have to switch to root user with following command.

sudo -i

Next step is to update the server. On CentOS 8 run the following command.

dnf update -y

After that set the hostname

hostnamectl set-hostname server1.inguide.in

Replace inguide.in with your domain name. Now comes the most awaited part. Go to Virtualmin and copy the command. I also have listed it here for convenience.

wget http://software.virtualmin.com/gpl/scripts/install.sh
sudo /bin/sh install.sh

Above command will begin the installation. When asked for confirmation answer yes.

At the end of installation, you will be given an IP address something like this https://192.168.1.1:10000. Open that URL in browser. You will receive warning, click in advanced and proceed.

virtualmin-certificate-warning

Configuration

Go to the IP address provided at the end of installation and login with server credentials, that is server username and password.

You will be asked several questions during the initial setup.

virtualmin-post-installation-wizard

On, next screen make selection according to your server memory, if it’s 1 GB then don’t enable the following features.

virtualmin-post-installation-wizard-memory-settings

Now, here on following screen it’s up to you to enable ClamAV or not. I like to keep using on demand scanner.

virtualmin-post-installation-wizard

After that, you have enable or disable spam assassin feature.

virtualmin-post-installation-wizard-spam-assassin

Next, you have option to select among MySQL and PostgreSQL database server. Make your choice and hit next.

virtualmin-post-installation-wizard-mysql-postgresql

Thereafter, you will have to enter password for MySQL user. Keep this password safe, otherwise you will have to generate it. This will become handy later when you need to create and use a database.

virtualmin-post-installation-wizard-mysql-password-5

Sometimes, you will receive error like this on next screen

If that is the case with you go to previous page an enter MySQL password once again and check the override box.

Now, on next screen make wise choice because database connection error depends on this.

Next, in primary nameservers enter ns1.yourdoman.com and in next field ns2.yourdomain.com. Also check skip for resolvability.

After that, it will ask regarding password storage mode. Make your selection.

Finally, create default virtual server. It could be your domain or FQDN or even subdomain. Also, you have to option to install SSL certificate right now, though you can always install later.

After you finish going through initial configuration wizard, next you refresh the configuration. Now, create ” Virtual Server ” with main domain to finish the configuration.

After that you can install favorite apps on Virtualmin.

Conclusion

Installing virtualmin though seems to be difficult task, is not that hard. With 2 line install command it’s not only easy to install but also serve well the need of a user.AA

Generating and Validating DKIM could be a difficult task sometimes. Therefore, in order to make this task easier there are several tools available online. If you are email marketer then needless to say DKIM plays very important role in email delivery. Whether you are using postfix or powerMTA, you must have valid DKIM entries in DNS records.

About DKIM

DKIM stands for Domain Key Identified Mail. It helps ISP to establish identity of sender. It could be 1024 bits or 2048 bits. Now a days 2048 bits is more preferable. DKIM composed of 3 parts.

  • Private Key
  • Public Key
  • Selector

Private key is kept safe on server and used to sign email before sending out. Public key is entered into DNS records, which is used by ISP to validate private key sent along email. Sometimes, you might need more than one DKIM key or you might want to sign transactional emails and promotional emails to be signed with different key. In simple words, selector ensures different DKIM doesn’t mix up and they could be authenticated by ISP.

Let’s discuss some of the tools available online first, then we will discuss steps to troubleshoot DKIM issues.

1. Sparkpost DKIM Generator

Sparkpost as we know, developer of powerMTA, has create very user friendly interface to generate DKIM. Just fill in the details and it will generate DKIM with instructions.

generate-dkim-key

Copy the DKIM private key to your server and public key to DNS records.

validate-dkim-key

You can also validate DKIM key, after configuration, by sending them to their one of the email address.

sparkpost-dkim-key

2. DKIMCORE

DKIMCORE is another popular tool for DKIM generation. It just asks you for domain name.

In DKIMCORE you will not be able to enter DKIM selector of your own choice. It will automatically generate for you.

generate-DKIM-Key-in-dkimcore

3. Command line

If you don’t like going to online tools, there’s simple way to generate DKIM key on Linux using opendkim command.

Just execute the following commands

openssl genrsa -out private.key 2048
openssl rsa -in private.key -pubout -out public.key
opendkim

Now you can list generated keys using ls command and cat command to display the key public key, so that you can copy it to the DNS.

ls
cat public.key
generating-dkim-key-opendkim

If you like to know the location of private key, you can use pwd which stands for the present working directory. In the above screenshot, my working directory is /root and therefore private key location is /root/private.key

Note here, I haven’t used any selector. Therefore, I can create any name form selector.

Creating the DNS record

Creating DNS records is simple. Login to your domain registrar and look for Advanced DNS in namecheap and manage DNS in Godaddy. Similar, option would be available in other domain registrars. There you would find option to create TXT record. Create one and fill the details as follows:

creating-dkim-record-in-namecheap

In above screenshot in place of Host type

selector._domainkey

Replace selector with your choice.

Then in the Value enter the public key like

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwyLHWXYdMiSdg83MmBPA
lXjdMxVmPWb5qWetxu7RqzP59saNXRtL/3I6K1zFZY85bljAB7Xa1fjZ42hWESCN
VK99o9R5RBFV6R62LLOHpwxxaD6rsskWqI7PgD99OuS5VHHaaMrxn8anx110FIhX
vs4T7ghcu7NVkDSawJ2dZUTfo8vRj7igc3/ySGrB1SNstTEghv0RazSnq9l9q+qV
jp9NzTh4FnxjAijMsG7AoIY6XRWbS3BC87sk6880bPosrRkw1ubQt4bpfp2rfgSw
DbzTlPuDDrNArZ9p7pS8OURP4CEDNe2dkwMhoVrKGDJ9VM/gAHgCyfe317igFEaJ
wwIDAQAB

At some places, you might to put double quotes in Value field, so be careful about that.

Validation of DKIM keys

After you have completed above steps, it’s time to validate the DKIM keys. There are several email marketing tools which are available online to validate keys.

1. MXToolBox DKIM Validator

MXTOOLBOX is favorite tool of email marketer. It provides several tools like DKIM validator, SPF checker, IP blacklist checker and so on. Go to MXTOOLBOX and fill the domain name and selector.

mxtoolbox-dkim-checker

After you run DKIM Lookup, you will get nice green ribbon if DKIM passes or red ribbon indicating DKIM issues.

mxtoolbox-validation-result

2. DKIMCORE

DKIMCORE is also let you validate your DKIM keys in simple steps. Just fill in the details and you are good to go.

dkimcore-validator

Conclusion

These simple tools could easily generate and validate and DKIM keys without any hassle. DKIM key is very important to ensure inbox delivery, therefore it’s sender duty is to use right DKIM key and format.

Read: How to install Mailwizz

Before, I discuss the list of bulk email verifier and validation software and website, let’s discuss why you should verify the list.

  • To get better inbox delivery
  • Verification minimizes hard bounce
  • Low bounce rate means boost IP and domain reputation
  • It prevents getting blacklisted by ISP
  • To get better return on investment

Now the question arises, how often one should verify emails? Well, if you are sending newsletter weekly or at least monthly to all your subscribers then you won’t have to verify the list at all, provided automatic bounce removal is in place on your SMTP server. However, if you are not sending the newsletter to all subscribers at once or you send it once in a while, then I would say cleaning up the list every 6 months.

What is the difference between Software and Services?

The major difference between email verification software and services is in terms of functioning. While services usage their huge database build over years to quickly run customers’ email lists, software checks all email ids one by one. Several requests to ISP, without actually sending emails, irks ISP which could lead to IP blacklisting. ISP’s doesn’t like email verification tools or services.

Having said that it’s time to look at the list.

Software

1. Atomic Mail Verifier

Atomic Mail Verifier is quite old email verifier. It verifies top ISP like Gmail, Yahoo mail, etc., and cost-effective. They also offer free trial on their software. It also checks for syntax errors in email ids and domain existence. Though it is loaded with many good features, it does have downside. It fails to verify the email addresses of many ISP.

Services/Websites

There is a number of services available nowadays. And, all of them claim to be better than others. I have listed few services along with a comparison table to help you get started.

Comparison Table

Bulk Email VerifiersPriceAccuracyRatingsDisposable & Catch AllIntegrationsFree TrialTime Taken for 100kCustomer Support
Debounce500K: $300
1M: $500
97.50%4.7/5.0 Capterra
4.5/5.0 G2
YesMailChimp
+8 More
One Time 1002 HourTicket Support
Live Chat
Zerobounce500K: $1100
1M: $1590
98.80%4.7/5.0 Capterra
4.7/5.0 TrustPilot
YesCloudflare
+45 More
Monthly 1001 HourTicket Support
LiveChat & Phone
myEmailVerifier500K: $199
1M: $299
99.00%4.8/5.0 G2
4.4/5.0 LCA
YesGetResponse
+5 More
One Time 2003 HourTicket Support
MillionVerifier500K: $199
1M: $299
99.00%5.0/5.0 AWH
4.5/5.0 TrustPilot
YesAny Application
Softwares
One Time 2001 HourTicket Support
Live Chat
EmailVerifyList500K: $547
1M: $947
99.00%5.0/5.0 AWHYesAny Application
Softwares
Every Day 501 HourTicket Support
Live Chat
Snov500K: €900
1M: €1400
98.00%5.0/5.0 G2
3.8/5.0 TrustPilot
YesIcontact
+10 More
One Time 1001 HourTicket Support

1. Zerobounce

Zerobounce is well known and quite popular but not cheaper. It’s probably the most expensive service. But nonetheless, they have billions of email ids in their databases that get your job done in minutes. It also claims to use Artificial Intelligence.

2. Debounce

Debounce is another well-known service. With simple, clean UI and faster service, they have earned the top position in the industry. Many of my students were satisfied with the services. They also offer free email extractor and free disposable detector API. You can integrate this API with your service to stay away from spammers.

3. myEmailVerifier

myEmailVerifier is easy to integrate with popular services like mailchimp, GetResponse, AWeber, SendGrid, etc. It pricing is competitive and par to other counterparts.

4. MillionVerifier

MillionVerifier is one of the cheapest email verification and validation service. It also has accuracy of 99% for verification.

5. EmailListVerify

EmailListVerify with 4.7/5 Capterra rating, user satisfaction is all time high this service.

Conclusion

To sum up all software have limited capability and slow but cheapest to run, while services are fast but expensive. Among various services all claims to be better than another. At this point, it would be wise to begin with cheapest service.