Configure a Dedicated Server with Webmin
Part 10 - Email server
01-Introduction - 02-Installing Webmin - 03-Configure DNS - 04-Assign Nameservers - 05-Configure SFTP - 06-Setup Web server - 07-Let's Encrypt - 08-Setup Perl/CGI PHP - 09-Manage MySQL - [[ 10-Setup Email server ]] - 11-Setup SASL - 12-Setup Email accounts - 13-Email process - 14-Email antivirus - 15-Usermin - 16-ExtrasSetting up an email server for our website is the most complicated.
Make sure you really need a hosted email server by you before doing this step.
We will set up a configuration shown below :

The "email process" section will be covered in a later chapter of this ebook.
The core of the server is done by a so called Mail Transfer Agent (MTA).
We are going to use Postfix as MTA in our setup.
An older less secure MTA was sendmail but most modern systems use Postfix.
Postfix will listen to the Port 587.
This port is used for the so called: Simple Mail Transfer Protocol - Mail Submission Agent.
SMTP is a protocol for sending emails over the Internet.
MSA requires that clients are authorized and authenticated in order to sent mails.
In order to deliver emails you need a MDA (Mail Delivery Agent).
We are going to use Dovecot with IMAPS protocol.
Internet Message Access Protocol (over SSL) is a secure email protocol used for accessing emails on a remote mail server from a local client.
For retrieving messages, email client applications, also called Mail User Agents (MUA), usually use either POP3 or IMAP.
We will cover only the IMAP protocol since it is more powerful than the POP3.
IMAP stores all emails at the server instead POP3 downloads all emails to the client and after that deletes them from the server.
If you have more physical devices connected on the same email account, like nowadays, IMAP protocol is a better option since it allows you to synchronize all of your devices at once.
Using POP3 instead you have to synchronize your devices manually.
Notice that Dovecot also supports the POP3 communication protocol.
We will use Thunderbird as email client (MUA) .
Using the Port 993 (IMAPS) we can deliver our emails from Dovecot to our email client.
Before starting, if you followed this ebook, you should have already created a MX record like mail.website1.com for your zone website1.com. If not take a look again at the DNS section.
Installations
Log in to your dedicated server using PuTTY. Make sure you remove sendmail.
yum remove sendmail sendmail-cf sendmail-doc
Install Postfix:
yum install postfix
Install Dovecot:
yum install dovecot
If for some reason you want to un-install Postfix and / or Dovecot :
yum -C remove postfix
yum -C remove dovecot
yum -C remove dovecot
Notice that both of the modules can be also installed from Webmin Web interface under the Un-used Modules section.
From Webmin go to System > Bootup and Shutdown.
Check dovecot, postfix and press the Start on Boot button.

Firewall Configuration
From Webmin go to Networking > Linux Firewall.Under Incoming packets (INPUT) - Only applies to packets addressed to this host, find and click on the "Add Rule" button.

In the "Add Rule" page fill like this :
Set "Action to take" to Accept
As "Network protocol", select Equals and TCP
As "Destination TCP or UDP port", select Equals and set Port(s) to 587
As "Network protocol", select Equals and TCP
As "Destination TCP or UDP port", select Equals and set Port(s) to 587
Click the "Create" button on the bottom of the page.

Do the same for the port 993
Notice that the port 25 is not needed to be open since we are going to use only secure connections on our server.
So as final result you should have under "Incoming packets (INPUT) - Only applies to packets addressed to this host" something like the photo below

Click on the "Apply Configuration" button in order to apply your firewall rules.
After doing this go to Kimsufi manager and press the "Restart" button in order to do a hardware restart of your machine.
Postfix Configuration
Go to Servers > Postfix Mail Server and click over the "General Options" icon.
Set "What domain to use in outbound mail" to: Use domainname.
Set "What domains to receive mail for" to: Whole domain.
Set "Network interfaces for receiving mail" to All.
Set "Internet hostname of this mail system" to mail.website1.com
Notice that this hostname will be our base host name for all other email domains hosted in our server.
Set "Local internet domain name" to Default.
This sets the mail domain to the hostname without the first component. In our case, this would be website1.com
Make sure that "Mail queue directory" is set to : /var/spool/postfix.
Set "What domains to receive mail for" to: Whole domain.
Set "Network interfaces for receiving mail" to All.
Set "Internet hostname of this mail system" to mail.website1.com
Notice that this hostname will be our base host name for all other email domains hosted in our server.
Set "Local internet domain name" to Default.
This sets the mail domain to the hostname without the first component. In our case, this would be website1.com
Make sure that "Mail queue directory" is set to : /var/spool/postfix.

Click the "Save and Apply button".
Click the "Stop Postfix" and then the "Start Postfix" button to restart the mail system.
Test your Postfix mail server by logging at your server using PuTTY and writing the command :
echo "TestEmail" | mail -s yoursubject freemail@yahoo.com
Control your freemail@yahoo.com. Control also your spam folder if you can not find the mail. Postfix should have sent the email.
Configure Dovecot
Till now our web server is capable of sending messages using Postfix.Let's see now how we can receive emails with the help of dovecot.
Navigate to Servers > Dovecot IMAP/POP3 Server Now click over the Networking and Protocols icon.

Under "Dovecot networking and mail protocol options" at the "Networking and Protocols" page do like so:
In the Serve mail protocols, select IMAP.
Leave the rest at the defaults settings.
Leave the rest at the defaults settings.

Click the "Save" button.
Now hit over the "Return to module index" link
Click over the "Mail Files" icon.

At "Mail Files" page do like this :
Mail file location : Inbox and folders in ~/Maildir
Set UIDL format to Other, and enter : %08Xu%08Xv in the text field.
Left all other settings as is.
Set UIDL format to Other, and enter : %08Xu%08Xv in the text field.
Left all other settings as is.
Click the "Save" files.
Now hit over the "Return to module index" link

Click over the "SSL Configuration" icon.

At "SSL Configuration" page, under "IMAP and POP3 SSL mode options" do like this :
Copy at notepad the SSL certificate file, ex : /etc/pki/dovecot/certs/dovecot.pem
Copy at notepad the SSL private key file, ex: /etc/pki/dovecot/private/dovecot.pem
Set Disallow plaintext authentication in non-SSL mode? to Yes.
Copy at notepad the SSL private key file, ex: /etc/pki/dovecot/private/dovecot.pem
Set Disallow plaintext authentication in non-SSL mode? to Yes.
Click the "Save" button.
Now hit over the "Return to module index" link

Click the "Apply Configuration" button.
In the next section we will discuss how Postfix and dovecot will authenticate using SASL.
01-Introduction - 02-Installing Webmin - 03-Configure DNS - 04-Assign Nameservers - 05-Configure SFTP - 06-Setup Web server - 07-Let's Encrypt - 08-Setup Perl/CGI PHP - 09-Manage MySQL - [[ 10-Setup Email server ]] - 11-Setup SASL - 12-Setup Email accounts - 13-Email process - 14-Email antivirus - 15-Usermin - 16-Extras