How to Setup SMTP Server and Send Unlimited Emails! (Step by Step Guide)

Setup SMTP Server

In this Step by Step Guide, I will show you how to setup an SMTP server and connect it to your email marketing applicaiton to send emails with no limits*.

There are several methods to build SMTP servers, in this guide I will build the SMTP server using a free WHM (web hosting manager) software called “Webmin”. It's Like “cPanel” but for free!

What is the SMTP Server?

I don't like robotic definitions like Wikipedia, I love to make things simple. So…

Simply, SMTP is that thing that allows you to send emails over the internet.

SMTP stands for “Simple Mail Transfer Protocol”. It's a Concept in Networking that you don't have to worry about.

Just Know that SMTP is the technical thing that is responsible for delivering emails over the internet.

Let's connect things, how this is related to email marketing?

I think it's clear, but just in case, and As I explained in my Techincal Email Marketing guide, any Email marketing system consists of two parts:

  • The sender: (SMTP service) this is the technical part. It allows you to send emails over the internet.
  • The Management Application, where you can configure and manage your Email Lists, Marketing Campaigns, monitor and analyze results, manage your sending servers, and so on.

So we connect both together to get an Email Marketing System.

So now I think It's SUPER clear, we are going to learn how to build the first part of any email marketing system which the SMTP server.

Need more details?

Maybe you are that person who loves to go deep in topics and understand everything in detail like me ???? if you are that person, you can watch the following 3 minutes video to learn more about SMTP servers and how it works:

You can find more videos on my YouTube Channel.

What do we mean by Sending Unlimited Emails?

When we say unlimited emails, this means that we can send unlimited emails from our server, there are no restrictions by companies or monthly plans to buy or so.

It's your own server, u can send as much your server can handle in terms of resources. so when you have more (CPU and RAM), you can send more emails and so on.

Setup the SMTP Server, Let's Start!

Ok, So Let's start the real work! but before, you need to know what is required.

Requirements to Setup SMTP Server.

In order to Build and Setup an SMTP Server, you will mainly need two things:

  1. A Domain name
  2. VPS Server with port 25 opened.

1. Domain name

When you send emails, you will be sending from an email address like this one:

So in my case, “” is the domain name that I use to send my emails. so simply it's required to have a domain name to use when you send emails from your SMTP server.

Usually, it's your website domain name, except if you are working with cold emails, then it's better to get and use another domain in case it got blacklisted, to keep your main business domain safe.

So if you don't have a domain yet, go and get one NOW! in order to continue the Setup.

How to get a domain? simply you buy one! and it costs around 10$ per year, so it's not that big deal!

We have a lot of DOMAIN REGISTRATION PROVIDERS where you can get a domain from like:

Here in the course, I will be using Godaddy to get my domain, but you can use any other service if you want, all work in the same way, and if you need any help,  I will be here 🙂

You can watch this 3 minutes video to see how to get and buy a domain from Godaddy Domain Registrar if you are a beginner.

This video is part of my Top Rated Course On Udemy:
Build Your Own SMTP and Send Unlimited Emails

Got a Domain? Great! ✔️ Let's continue.

2. VPS Server with Port 25 opened.

The second thing you will need is a VPS server. a public server to install & Setup SMTP on.

What is a VPS server?

If you don't know what is a VPS server, simply its a computer (a server) running in the cloud that you buy from a Web Hosting or Cloud Services company. And it's publicly accessible with a Public IP.

A VPS can be used to host your websites with higher performance, can be used to run a machine 24/7 in the cloud to do any task you want.

Note: If you are interested in learning how to host your own websites on a VPS server, you can

Anyway, In our case, we will be using the VPS Server for Building an SMTP server.

Port 25 open??

I mentioned that the VPS must have port 25 opened, what does this mean?

I don't want to bother your head within deal technical stuff but in short. Any network service or software uses a certain port to communicate over the internet or network. Examples:

  • Connecting remotely to another Windows Machine using RDP software works over port 3389.
  • SQL database systems like MYSQL on our computer works over port 3306.
  • Connecting to a Linux machine remotely to manage it with SSH, uses port 22.
  • When you surf the web and open websites, we use port 80. and so on.

By default, all servers and computers have a firewall running which blocks all ports except the ones you want. so In order to use a certain service, we need to open that port in the firewall.

What you have to know also, that ports can be blocked and opened in two ways, incoming and outgoing, the following diagram will make things clearer:

Setup SMTP Server - ports
Inbound and Outbound Ports

I recommend you to watch my free course “Amazon EC2 for Digital Marketers” you will understand all these concepts in less than an hour.

So, in our case, we are building an SMTP server, and the SMTP software or protocol communicates over port 25. so we need to have port 25 opened.

So when you get a VPS server, just make sure that the company allows Port 25 an don't block it, because some companies do this to protect from spammers.

Setup SMTP Server port 25
Port 25 is used to send emails

Here is a list of some companies that allows port 25 by default:

  1. Host wind.
  2. Contabo.
  3. Interserver.
  4. OVH.
  5. Digital Ocean*
  6. AWS (some accounts are blocked)

*Digital Ocean Sometimes block some accounts and restrict port 25, but in general they allow all ports.

Are there any other Companies?? yes, simply you can contact the support of any company you want and ask if they block any ports by default. if not, then perfect, you can go with it.

Feel free to use any VPS company you want, It's up to you!

You can also sign up on DigitalOcean through the coupon link below to get free 100$ to test everything free.

So Choose your VPS company and let's get one.

After you select your VPS company, just create a VPS Server with the following specifications:

  • Ubuntu 18 x64 as your operating system
  • You can start with 1 CPU/2 GB RAM (And resize later).

Got your VPS? Great! ✔️ Let's continue.

VPS Server basic configuration.

Now we have our new Ubuntu VPS server, Let’s prepare it for out Setup.

Connect to your server, using an SSH client like putty or bitvise.

First, check your hostname:

hostname -f

If you don’t see a form of ANYTING.YOURDOMAIN.COM, then you need to change the hostname using the following command:

 sudo hostname host.domain.tld 

Where the host is anything you want. so in my case, my sample domain for this tutorial is, the command will look like this:

sudo hostname

Map your domain name.

Now we have our VPS server and we set its name. Go to your Domain Provider and map your Domain to your VPS server. simply open DNS management zone and add a new A record like this:

host: server points: YOUR SERVER IP.

Setup SMTP Server - Godaddy A record
Godaddy A record

*server is in my case, you can choose whatever you want for your server name.

Done? ✔️ Let's continue.

Setup SMTP Server

The VPS is ready, and we can start the installation process. So in order to setup SMTP Server on our VPS, we need to install an SMTP software.

Install the WHM (Webmin) Software.

We have several SMTP Software like PowerMTA, Postal, Exim, Postfix…

In this guide, we will be using Postfix as our SMTP software (service). and to make things easy and automated I will install a Web Hosting Manager (Webmin) which installs and configures Postfix automatically (No need for manual configuration and hard stuff).

To Install Webmin, simply run this command on your server:


this command will download the installation script, now let's start the setup by running this command:

 sudo /bin/sh 

So Simple ????

Just wait for the installation to finish, it may take several minutes. Then you will see this success message:

smtp server smtp server virtual min setup
Virtualmin setup

Very Nice, Now Open your Web Browser and Navigate to your Server URL To Configure.

The URL will look like this: https://YOUR_SUB_DOMAIN:10000

Webmin uses Port 10000, so be sure to add “:10000” after your server address.

*Note: sometimes Port 10000 may be blocked by the firewall, so you need to open it.

When you open Webmin for the first time, you will see an SSL warning Message, just click continue anyway:

Setup SMTP Server - webmin ssl warning
Webmin SSL warning

Then the login screen will appear:

Setup SMTP Server - webmin login page
Webmin login page

Great! Just enter your root username and password, and log in!

From now on, everything will be managed through the Web interface, so Things will be simple. ✔️

Webmin Basic Configuration

When you log in for the first time, you will see the post-installation wizard.

webmin post installation wizard
Webmin post-installation wizard

Set the options as the following:

  • Preload Virtualmin Libraries: YES
  • Domain Lookup Server: YES
  • ClamAV Server Scanner: NO (It will use a lot of Resources, Turn On if you have a lot of CPU and RAM)
  • Spamassassin Filter: NO (It will use a lot of Resources, Turn On if you have a lot of CPU and RAM)
  • MariaDB/MySQL Server: YES
  • PostgreSQL: NO
  • MariaDB/MySQL Database Size: Medium
  • DNS Configuration: check the box “Skip check for resolvability“, and click next as in the image below:
webmin post wizard DNS
Webmin DNS configuration.
  • Password Storage mode: Choose Any, for Higher Security, Select Hashed.

Now, click on re-check and refresh configuration, and wait for the operation to finish. Then you will see this success message:

webmin post wizard success
Webmin post wizard success message

Great! ✔️

Create your Free Business Email

Now our server is ready for the real part, we can create the business email address that we will use as the sender address. to do so, we need to create a virtual server inside webmin using our Domain name.

Create Virtual Server

Click “Create Virtual Server” on the upper left corner of the screen as shown in the image below:

create virtual server
Create a virtual server

Now simply you need to fill your domain name, Description, and password for this virtual server.

virtualmin create server
Enter your Details

And Click Create Server ✔️

Create the User Account Email Address

Now we have a virtual server, simply click on Edit users to the left.

create user virtualmin
Create User

Then click “Add a User to this server“, the new user wizard will open:

virtualmin add user wizard

Enter any Email you want, like support, mail, admin, or whatever business email you want. Then Enter the name, and the password.

Then click Create.

You Have Now a Free Business Email! ✔️

We are done! your SMTP Server is now ready.

Before You Send!

Congratulations! You Setup your own SMTP Server using Webmin. but before you start sending emails, you have to understand some crucial concepts and follow up on the guidelines to get the best delivery rates and reach the inbox!

Warming Up your SMTP server

When you build a New SMTP Server with a new IP Address, and Before You can Start Sending Your Email Marketing Campaigns, you have to warm up your IP Address.

What is Warming Up IP?

When you have a new Brand IP Address for your SMTP, this IP will have no Reputation on the internet, and ISPs (internet service providers) don't know this IP.

So IP warmup is the practice of building Your Reputation on The Internet by gradually increasing the volume of mail sent with your IP address according to a predetermined schedule.

Example of warming up your server shown in the table below:

Warmup DayEmails To Send

This Table shows a scenario if you wanna reach 1K emails per day with a good reputation. Please refer to my Warming up SMTP Guide for more details.

Also, you can watch my full video about Warming up here:

Configure SPF, DKIM, rDNS, DMARC, and MX.

SPF (Sender Policy Framework):

An SPF record is a TXT record that is added to your Domain DNS Zone and allows you to set the mail servers that are allowed to send emails from your domain.

Messages sent from a server that isn’t included in the SPF record will be marked as spam or rejected.

As an example, you can’t send an email from your own server and set your sending email as “,” you can’t use google’s domain. It indicates that you are trying to spam.

In the same way, you can configure SPF and prevent anyone from using your domain to send emails,  So setting SPF is very important when it comes to making your domain trusted by other mailing providers.

To set up SPF. Open your DNS zone in and add the following record:

v=spf1 a mx ip4:XXX.XXX.XXX.XXX -all

*Replace with your VPS server IP.

Now only your server can send emails from your domain.

Dkim (DomainKeys Identified Mail) :

A Dkim record is also a text record in your DNS that holds a public authentication key. This key will be validated using a private key saved privately inside your server.

All emails will be signed, and this will avoid any alterations and protect your email originality, and this is very important for your server to archive high sending scores.

Watch this video for more info:

Setup Dkim For Webmin Postfix:

To Configure Dkim, we need to configure it on our Server First, then copy the public key to our DNS zone.

Then Click on “Domain Keys Identified Mail” under “Email Settings

webmin dkim
Dkim Settings

Then Click Install Now. After the installation finishes, go back again to ” Domain Keys Identified Mail” and you will the options to generate your keys.

webmin dkim
Generate Dkim Record

Keep the Defaults, and then click Save.

Now, Click on DNS records under Server Configuration.

Setup SMTP Server - webmin dkim key

Just Copy the Dkim record and create it in your DNS Zone of your Domain, in my case it's Godaddy.

Great! DKIM is Configured. ✔️

rDNS (Reverse DNS):

The reverse DNS is called a pointer record and is used to point your IP to your Domain, its the inverse of the regular DNS A record.

So when you call the IP, you will get the name. It is also an essential factor in setting up your mail server and increasing your sending score and reputation.

Learn more about rDNS here:

DMARC (Domain-based Message Authentication, Reporting & Conformance):

It is a Protocol that uses (SPF)  and (DKIM) to determine the authenticity of an email message. 

DMARC makes it easier for Internet Service Providers (ISPs) to prevent malicious email practices, such as domain spoofing in order to phish for recipients’ personal information. 

It allows email senders to specify how to handle emails that were not authenticated using SPF or DKIM. Senders can opt to send those emails to the junk folder or have them blocked them all together.

To understand the importance of DMARC for your Online Business and how to set up, please watch this video:

MX Record

Mail Exchange (MX) records are DNS records that are necessary for delivering email to your address.

In simple DNS terms, an MX record is used to tell the world which mail servers accept incoming mail for your domain and where emails sent to your domain should be routed to. If your MX records are not pointed to the correct location, you will not receive an email.

Set the MX

Go to your DNS Zone and Create a new MX record and point to your server domain like this:

Setup SMTP Server - Set MX record
Set MX record

Avoid Spam Factors

Mainly we have Four main factors the determines your spam score:

  • IP Reputation
  • SPF, DKIM, rDNS, and DMARC.
  • Message Body
  • Email List health.

The first two factors are explained above. we still have Message body and Email List Health.

Message body

Simply is the subject and the content of your email. does it look spammy? does it have any spammy keywords and triggers?? this what determines your message score.

Be sure to avoid any of these while creating your Subject lines and Message bodies.

Check this article on Hubspot, to learn more about spam keywords.

You Maybe Also Interested in this article “How To Land Your Emails In Inbox? The Ultimate Guide!”

Email List Health

Simply it's determined by two things:

  • Bounce Rate: How many emails are valid in your list.
  • Spam Traps: does your list contain any spam traps?

Learn more about spam traps and how to avoid in this video:

And always be sure to validate your email lists and clean it before sending any campaign. check my free online email validation service here.

I think you will be also interested in watching this video:

How to send 100K emails Daily to inbox.

Follow up My Youtube Channel For Daily Awesome new videos about Email Marketing, Digital Marketing, and Online business stuff to Grow Online.

Also, Join My Email Marketing Newsletter to Get exclusive Email Marketing Tips that I share only with my email subscribers.

[mpp_inline id=”416″]

Finally! Send a Test Email

Now we Setup our SMTP Server. We are ready to send our first email. How to test our server?

Simple, Go to SMTPER.NET and enter your server details as follows:

Test Your SMTP
  • SMTP Host: Your Server IP or Domain.
  • Port: 587
  • Login: The Email Account You created.
  • Password: Your Email Account Password.

So, these are the credentials that you can use in any Email Sender Application.

That's it! I hope everything was simple and clear. we setup the SMTP Server!

If you have any problems, you can open your questions on

And if you like to get the Full Udemy Course On How to Build SMTP Server and Send Unlimited Emails, you can enroll now with a 95% Special Limited Time Discount.

[hurrytimer id=”604″]

Check Also: PowerMTA Mail Server Full Setup Guide ????

Related Articles


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

  1. Hey Hassan, I get following error message on the console when installing postal on a digitalocean droplet
    The following packages have unmet dependencies:
    mariadb-server : Depends: mariadb-server-10.1 (>= 1:10.144-0ubuntu0.18.01.1) but it is not going to be installed

  2. HI Hassan,

    I followed all the steps of your video and this blog. I am able to send email with the server emails that i created.
    but i am not able to send emails to any gmail, hotmail or any other domain email account.
    and I am not able to configure this on my outlook as it is showing error on outlook.
    Can you guide me how i can send email outside my server ??

  3. Digital Ocean seem like it blocking port 25 now, I open 2 account, both are blocked. You guys need to message them to make sure. I can received email but can not send it out. All the tests I did, showed me that the port was still good. but it wasn’t.

    Thank you for contacting DigitalOcean support !

    Sorry to inform that your account has restrictions specifically on port 25. However, you should be able to use mail services using ports 587, 993, 995 and 465.

  4. Hi Hassan,

    I get this warning when checking on Mxtoolbox ” Reverse DNS does not match SMTP Banner ”

    Any idea on how to fix it?

    1. Nevermind, I found it in Webmin -> Servers -> Postfix Mail Server -> General Options, under “Internet hostname of this mail system”

    1. Yes sure you can, using telnet.
      install telnet on your server, then run the following command:
      telnet 25

  5. Hey Hasan Thank you all the info you provide is awesome…
    I followed your installation but wheni test the smtp server on
    it does not work.. im getting this error:SMTP send error
    Transaction failed. The server response was: 5.7.1 : Relay access denied
    Please help
    Thanks Angel

  6. I am having one problem. I completed my setup and built a smtp server using this guide but messages that are sent through smtp are added in the mail queue of the postfix mail server. I do not know How do I fix this. As I only sent 5-6 emails to test my smtp connection but these emails are ending up added in the mail queue of the postfix mail server. Sir, please help me resolve this issue..

  7. Hello,
    I have watched all your you tube’s on SMPT to setting up emails to send out batches. It gets confusing because I cant get the order of what needs to be done. IM sure SMPT along with my website is first. Can you tell me the order?

  8. Sir , i follow all the step same you guide but in Webmin post-installation wizard the option MariaDB/MySQL Server: YES then got error meria db not installed , how can i resolve this issue and install maria db ? thanks for advance

  9. Sir, i follow all the step but still getting error when i try this sudo /bin/sh
    my vps is 2 GB / 50 GB SSD / Amsterdam / Ubuntu 18.04 stil couldnt install what could be the problem pls

  10. Hassan.
    This blog is really helpful. I’m currently stucked at the following
    You have mentioned the following……….

    Webmin Basic Configuration
    When you log in for the first time, you will see the post-installation wizard.

    ***The post-installation wizard is not appearing, now where do i configure those things which you have asked for.

    If you are online currently do help me with this.

  11. Outstanding article! I have bookmarked this. I send out 1 million transactional emails per month and use Elastic Email and Amazon and my own smtp with WHM. The only system that works perfectly is Amazon but the charges add up. I will give this a shot. This is very clearly explained. Thank you!

  12. Hi Hasan, thanks for your article.
    Suppose I have 3 Gmail accounts, I want to warm up my SMTP server by sending emails to these accounts. For example the fourth day your Email Marketing Toolkit tells me should send 150 emails, so I will send 50 emails per Gmail account. Does Gmail block my SMTP server or mark my SMTP server as spam if I
    send this amount of emails in one day?

    1. I mean: Does Gmail block my SMTP server or mark my SMTP server as spam if I send this amount of emails to my Gmail account in one day? For example 50 mails/account/day.

        1. I understand but currently, I have 50 Gmail accounts used to receive and reply to my SMTP server for warm-up reasons.
          I’m generating a schedule for 10k emails/day in 14 days. But I have only 50 accounts to receive and reply to emails so I have to send duplicate emails to these accounts.
          Does my SMTP server be marked as SPAM or have any restrictions?
          Schedule for 14 days:

  13. when I try to test the smtp on I get the following error:
    SMTP send error
    Transaction failed. The server response was: 5.7.1 : Relay access denied
    Do you know what the problem may be?