Postfix is a free open source mail transfer agent (MTA). It is easy to administer, fast and as well as the secure MTA. It’s an alternative to Sendmail, which is the default MTA for RHEL.
Well, let us see how to configure postfix dovecot and squirrelmail in centos 6., although it should work on RHEL 6 series.
For this tutorial, I use CentOS 6.5 minimal/basic installation, with SELinux disabled. My test box details are given below.
OS : CentOS 6.5 Minimal Installation/basic (fresh installation)
IP Address : 192.168.1.101/24Hostname: server.yourdomain.com
Prerequisites:
1. Setup DNS server and add the Mail server MX records in the forward and reverse zone files. To install and configure DNS server, navigate to this link. And you’ll need to contact your ISP to point your external static IP to your mail domain.
2. Add hostname entries in /etc/hosts file as shown below:
# vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.101 server.yourdomain.com server
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
3. I disabled SELinux to reduce complexity in postfix configuration.
4. Install EPEL Repository:
We will use Squirrelmail for webmail client. Squirrelmail will not be found on CentOS official repositories, so let us enable EPEL repository. Follow the below link to install and enable EPEL repository.
- Install EPEL Repository On CentOS / RHEL / Scientific Linux 6
6. Disable iptables
# /etc/init.d/iptables stop
# chkconfig iptables off
Install Postfix
Let us install postfix package using the command:
# yum install postfix -y
Configuring Postfix
# cp /etc/postfix/main.cf /etc/postfix/main.cfbak
Edit /etc/postfix/main.cf,
# vim /etc/postfix/main.cf
find and edit the following lines:
## Line no 75 - Uncomment and set your mail server FQDN ##
myhostname = server.yourdomain.com
## Line 83 - Uncomment and Set domain name ##
mydomain = yourdomain.com
## Line 99 - Uncomment ##
myorigin = $mydomain
## Line 116 - Set ipv4 ##
inet_interfaces = all
## Line 119 - Change to all ##
inet_protocols = all
## Line 164 - Comment ##
#mydestination = $myhostname, localhost.$mydomain, localhost,
## Line 165 - Uncomment ##\
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
## Line 264 - Uncomment and add IP range ##
mynetworks = 192.168.1.0/24, 127.0.0.0/8
## Line 419 - Uncomment ##
home_mailbox = Maildir/
Save and exit the file. Start/restart Postfix service now:
# service postfix restart
# chkconfig postfix on
Testing Postfix mail server
First, create a test user called “hayder“.
# useradd hayder
# passwd hayder
Access the server via Telnet and enter the commands manually shown in red colored text.
# telnet localhost smtp
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 server.yourdomain.com ESMTP Postfix
ehlo localhost ## type this command ##
250-server.yourdomain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Connection closed by foreign host.
Now navigate to the user “hayder“ mail directory and check for the new mail:
# ls /home/hayder/Maildir/new/
Sample output:
1390215275.Vfd00Ie04f8M357080.server.yourdomain.com
A new mail is received to the user “hayder“. To read the mail, enter the following command:
# cat /home/hayder/Maildir/new/1390215275.Vfd00Ie04f8M357080.server.yourdomain.com
Sample output:
Return-Path: <hayder@yourdomain.com>
X-Original-To: hayder
Delivered-To: hayder@yourdomain.com
Received: from localhost (localhost [IPv6:::1])
by server.yourdomain.com (Postfix) with ESMTP id B822221522
for <hayder>; Mon, 20 Jan 2014 16:23:54 +0530 (IST)
Message-Id: <20140120105404.B822221522@server.yourdomain.com>
Date: Mon, 20 Jan 2014 16:23:54 +0530 (IST)
From: hayder@yourdomain.com
To: undisclosed-recipients:;
welcome to youdomain mail server
Installing Dovecot
Dovecot is an open source IMAP and POP3 mail server for Unix/Linux systems. To install:
# yum install dovecot -y
Configuring Dovecot
Edit the file /etc/dovecot/dovecot.conf file,
# vim /etc/dovecot/dovecot.conf
Uncomment the following line:
## Line 20 - umcomment ##
protocols = imap pop3 lmtp
Edit file /etc/dovecot/conf.d/10-mail.conf file
# vim /etc/dovecot/conf.d/10-mail.conf
Make the changes as shown below:
## Line 24 - uncomment ##
mail_location = maildir:~/Maildir
Edit /etc/dovecot/conf.d/10-auth.conf
# vim /etc/dovecot/conf.d/10-auth.conf
And make the changes as shown below:
## line 9 - uncomment##
disable_plaintext_auth = yes
## Line 97 - Add a letter "login" ##
auth_mechanisms = plain login
Edit file /etc/dovecot/conf.d/10-master.conf,
# vim /etc/dovecot/conf.d/10-master.conf
Make changes as shown below:
## Line 83, 84 - Uncomment and add "postfix"
#mode = 0600
user = postfix
group = postfix
Start Dovecot service:
# service dovecot start
# chkconfig dovecot on
Testing Dovecot
It’s time to test Dovecot configuration. Enter the following command in Terminal:
# telnet localhost pop3
Enter the commands manually marked in red color:
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user hayder ## log in as user hayder ##
+OK
pass centos ## input user password ##
+OK Logged in.
retr 1
+OK 439 octets
Return-Path: <hayder@yourdomain.com>
X-Original-To: hayder
Delivered-To: hayder@yourdomain.com
Received: from localhost (localhost [IPv6:::1])
by server.yourdomain.com (Postfix) with ESMTP id B822221522
for <hayder>; Mon, 20 Jan 2014 16:23:54 +0530 (IST)
Message-Id: <20140120105404.B822221522@server.yourdomain.com>
Date: Mon, 20 Jan 2014 16:23:54 +0530 (IST)
From: hayder@yourdomain.com
To: undisclosed-recipients:;
welcome to yourdomain mail server
.
quit
+OK Logging out.
Connection closed by foreign host.
As you see in the above, Dovecot is working!
Working with mail in command modes little bit difficult for us. So we will install a webmail client called Squirrelmail to send/receive emails via a web browser.
Installing Squirrelmail
Make sure that you’ve installed and enabled EPEL repository. Now install Squirrelmail using the following command:
# yum install squirrelmail -y
Configuring Squirrelmail:
Navigate to /usr/share/squirrelmail/config/ directory and run the command conf.pl:
# /usr/share/squirrelmail/config/conf.pl
The following wizard will open. Enter choice “1” to set your organization details:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color off
S Save data
Q Quit
Command >> 1
The following wizard will open. Enter “1” again to modify your organization details:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Organization Preferences
1. Organization Name : SquirrelMail
2. Organization Logo : ../images/sm_logo.png
3. Org. Logo Width/Height : (308/111)
4. Organization Title : SquirrelMail $version
5. Signout Page :
6. Top Frame : _top
7. Provider link : http://squirrelmail.org/
8. Provider name : SquirrelMail
R Return to Main Menu
C Turn color off
S Save data
Q Quit
Command >> 1
Set your Organization name and press Enter:
We have tried to make the name SquirrelMail as transparent as
possible. If you set up an organization name, most places where
SquirrelMail would take credit will be credited to your organization.
If your Organization Name includes a '$', please precede it with a \.
Other '$' will be considered the beginning of a variable that
must be defined before the $org_name is printed.
$version, for example, is included by default, and will print the
string representing the current SquirrelMail version.
[SquirrelMail]: yourdomain.com
By this way, setup all the details such as organization title, logo, provider name in the above wizard. Once you done, press “S” to save changes and press “R” to return back to your main menu:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Organization Preferences
1. Organization Name : Yourdomain.com
2. Organization Logo : ../images/sm_logo.png
3. Org. Logo Width/Height : (308/111)
4. Organization Title : SquirrelMail $version
5. Signout Page :
6. Top Frame : _top
7. Provider link : http://squirrelmail.org/
8. Provider name : Domain Mail
R Return to Main Menu
C Turn color off
S Save data
Q Quit
Command >> s
Now enter “2” to setup mail Server settings such as domain name and mail agent etc.:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color off
S Save data
Q Quit
Command >> 2
Enter “1”, Enter your mail domain (ex. yourdomain.com) and press Enter key.
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Server Settings
General
-------
1. Domain : localhost
2. Invert Time : false
3. Sendmail or SMTP : Sendmail
A. Update IMAP Settings : localhost:143 (uw)
B. Change Sendmail Config : /usr/sbin/sendmail
R Return to Main Menu
C Turn color off
S Save data
Q Quit
Command >> 1
The domain name is the suffix at the end of all email addresses. If
for example, your email address is jdoe@example.com, then your domain
would be example.com.
[localhost]: yourdomain.com
Enter “3” and change from sendmail to Postfix MTA (i.e. SMTP):
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Server Settings
General
-------
1. Domain : yourdomain.com
2. Invert Time : false
3. Sendmail or SMTP : Sendmail
A. Update IMAP Settings : localhost:143 (uw)
B. Change Sendmail Config : /usr/sbin/sendmail
R Return to Main Menu
C Turn color off
S Save data
Q Quit
Command >> 3
Enter “2” to switch from sendmail MTA to postfix.
You now need to choose the method that you will use for sending
messages in SquirrelMail. You can either connect to an SMTP server
or use sendmail directly.
1. Sendmail 2. SMTPYour choice [1/2] [1]: 2
Now enter “S” followed by “Q” to save and exit Squirrelmail configuration.
Create a squirrelmail vhost in apache config file:
# vi /etc/httpd/conf/httpd.conf
Add the following lines at the end:
Alias /squirrelmail /usr/share/squirrelmail
<Directory /usr/share/squirrelmail>
Options Indexes FollowSymLinks
RewriteEngine On
AllowOverride All
DirectoryIndex index.php
Order allow,deny
Allow from all
</Directory>
Restart the Apache service:
# service httpd restart
Create users:
Create some users for testing. In my case i create two users called “jashim“ and “salam“ respectively.
# useradd jashim
# useradd salam
# passwd jashim
# passwd salam
Well, let us see how to configure postfix dovecot and squirrelmail in centos 6., although it should work on RHEL 6 series.
For this tutorial, I use CentOS 6.5 minimal/basic installation, with SELinux disabled. My test box details are given below.
OS : CentOS 6.5 Minimal Installation/basic (fresh installation)
IP Address : 192.168.1.101/24Hostname: server.yourdomain.com
Prerequisites:
1. Setup DNS server and add the Mail server MX records in the forward and reverse zone files. To install and configure DNS server, navigate to this link. And you’ll need to contact your ISP to point your external static IP to your mail domain.
2. Add hostname entries in /etc/hosts file as shown below:
# vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.101 server.yourdomain.com server
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
3. I disabled SELinux to reduce complexity in postfix configuration.
4. Install EPEL Repository:
We will use Squirrelmail for webmail client. Squirrelmail will not be found on CentOS official repositories, so let us enable EPEL repository. Follow the below link to install and enable EPEL repository.
- Install EPEL Repository On CentOS / RHEL / Scientific Linux 6
RHEL/CentOS 6 32-64 Bit
## RHEL/CentOS 6 32-Bit ## # wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm ## RHEL/CentOS 6 64-Bit ## # wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm
6. Disable iptables
# /etc/init.d/iptables stop
# chkconfig iptables off
Install Postfix
Let us install postfix package using the command:
# yum install postfix -y
Configuring Postfix
# cp /etc/postfix/main.cf /etc/postfix/main.cfbak
Edit /etc/postfix/main.cf,
# vim /etc/postfix/main.cf
find and edit the following lines:
## Line no 75 - Uncomment and set your mail server FQDN ##
myhostname = server.yourdomain.com
## Line 83 - Uncomment and Set domain name ##
mydomain = yourdomain.com
## Line 99 - Uncomment ##
myorigin = $mydomain
## Line 116 - Set ipv4 ##
inet_interfaces = all
## Line 119 - Change to all ##
inet_protocols = all
## Line 164 - Comment ##
#mydestination = $myhostname, localhost.$mydomain, localhost,
## Line 165 - Uncomment ##\
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
## Line 264 - Uncomment and add IP range ##
mynetworks = 192.168.1.0/24, 127.0.0.0/8
## Line 419 - Uncomment ##
home_mailbox = Maildir/
Save and exit the file. Start/restart Postfix service now:
# service postfix restart
# chkconfig postfix on
Testing Postfix mail server
First, create a test user called “hayder“.
# useradd hayder
# passwd hayder
Access the server via Telnet and enter the commands manually shown in red colored text.
# telnet localhost smtp
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 server.yourdomain.com ESMTP Postfix
ehlo localhost ## type this command ##
250-server.yourdomain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Connection closed by foreign host.
Now navigate to the user “hayder“ mail directory and check for the new mail:
# ls /home/hayder/Maildir/new/
Sample output:
1390215275.Vfd00Ie04f8M357080.server.yourdomain.com
A new mail is received to the user “hayder“. To read the mail, enter the following command:
# cat /home/hayder/Maildir/new/1390215275.Vfd00Ie04f8M357080.server.yourdomain.com
Sample output:
Return-Path: <hayder@yourdomain.com>
X-Original-To: hayder
Delivered-To: hayder@yourdomain.com
Received: from localhost (localhost [IPv6:::1])
by server.yourdomain.com (Postfix) with ESMTP id B822221522
for <hayder>; Mon, 20 Jan 2014 16:23:54 +0530 (IST)
Message-Id: <20140120105404.B822221522@server.yourdomain.com>
Date: Mon, 20 Jan 2014 16:23:54 +0530 (IST)
From: hayder@yourdomain.com
To: undisclosed-recipients:;
welcome to youdomain mail server
Installing Dovecot
Dovecot is an open source IMAP and POP3 mail server for Unix/Linux systems. To install:
# yum install dovecot -y
Configuring Dovecot
Edit the file /etc/dovecot/dovecot.conf file,
# vim /etc/dovecot/dovecot.conf
Uncomment the following line:
## Line 20 - umcomment ##
protocols = imap pop3 lmtp
Edit file /etc/dovecot/conf.d/10-mail.conf file
# vim /etc/dovecot/conf.d/10-mail.conf
Make the changes as shown below:
## Line 24 - uncomment ##
mail_location = maildir:~/Maildir
Edit /etc/dovecot/conf.d/10-auth.conf
# vim /etc/dovecot/conf.d/10-auth.conf
And make the changes as shown below:
## line 9 - uncomment##
disable_plaintext_auth = yes
## Line 97 - Add a letter "login" ##
auth_mechanisms = plain login
Edit file /etc/dovecot/conf.d/10-master.conf,
# vim /etc/dovecot/conf.d/10-master.conf
Make changes as shown below:
## Line 83, 84 - Uncomment and add "postfix"
#mode = 0600
user = postfix
group = postfix
Start Dovecot service:
# service dovecot start
# chkconfig dovecot on
Testing Dovecot
It’s time to test Dovecot configuration. Enter the following command in Terminal:
# telnet localhost pop3
Enter the commands manually marked in red color:
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user hayder ## log in as user hayder ##
+OK
pass centos ## input user password ##
+OK Logged in.
retr 1
+OK 439 octets
Return-Path: <hayder@yourdomain.com>
X-Original-To: hayder
Delivered-To: hayder@yourdomain.com
Received: from localhost (localhost [IPv6:::1])
by server.yourdomain.com (Postfix) with ESMTP id B822221522
for <hayder>; Mon, 20 Jan 2014 16:23:54 +0530 (IST)
Message-Id: <20140120105404.B822221522@server.yourdomain.com>
Date: Mon, 20 Jan 2014 16:23:54 +0530 (IST)
From: hayder@yourdomain.com
To: undisclosed-recipients:;
welcome to yourdomain mail server
.
quit
+OK Logging out.
Connection closed by foreign host.
As you see in the above, Dovecot is working!
Working with mail in command modes little bit difficult for us. So we will install a webmail client called Squirrelmail to send/receive emails via a web browser.
Installing Squirrelmail
Make sure that you’ve installed and enabled EPEL repository. Now install Squirrelmail using the following command:
# yum install squirrelmail -y
Configuring Squirrelmail:
Navigate to /usr/share/squirrelmail/config/ directory and run the command conf.pl:
# /usr/share/squirrelmail/config/conf.pl
The following wizard will open. Enter choice “1” to set your organization details:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color off
S Save data
Q Quit
Command >> 1
The following wizard will open. Enter “1” again to modify your organization details:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Organization Preferences
1. Organization Name : SquirrelMail
2. Organization Logo : ../images/sm_logo.png
3. Org. Logo Width/Height : (308/111)
4. Organization Title : SquirrelMail $version
5. Signout Page :
6. Top Frame : _top
7. Provider link : http://squirrelmail.org/
8. Provider name : SquirrelMail
R Return to Main Menu
C Turn color off
S Save data
Q Quit
Command >> 1
Set your Organization name and press Enter:
We have tried to make the name SquirrelMail as transparent as
possible. If you set up an organization name, most places where
SquirrelMail would take credit will be credited to your organization.
If your Organization Name includes a '$', please precede it with a \.
Other '$' will be considered the beginning of a variable that
must be defined before the $org_name is printed.
$version, for example, is included by default, and will print the
string representing the current SquirrelMail version.
[SquirrelMail]: yourdomain.com
By this way, setup all the details such as organization title, logo, provider name in the above wizard. Once you done, press “S” to save changes and press “R” to return back to your main menu:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Organization Preferences
1. Organization Name : Yourdomain.com
2. Organization Logo : ../images/sm_logo.png
3. Org. Logo Width/Height : (308/111)
4. Organization Title : SquirrelMail $version
5. Signout Page :
6. Top Frame : _top
7. Provider link : http://squirrelmail.org/
8. Provider name : Domain Mail
R Return to Main Menu
C Turn color off
S Save data
Q Quit
Command >> s
Now enter “2” to setup mail Server settings such as domain name and mail agent etc.:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color off
S Save data
Q Quit
Command >> 2
Enter “1”, Enter your mail domain (ex. yourdomain.com) and press Enter key.
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Server Settings
General
-------
1. Domain : localhost
2. Invert Time : false
3. Sendmail or SMTP : Sendmail
A. Update IMAP Settings : localhost:143 (uw)
B. Change Sendmail Config : /usr/sbin/sendmail
R Return to Main Menu
C Turn color off
S Save data
Q Quit
Command >> 1
The domain name is the suffix at the end of all email addresses. If
for example, your email address is jdoe@example.com, then your domain
would be example.com.
[localhost]: yourdomain.com
Enter “3” and change from sendmail to Postfix MTA (i.e. SMTP):
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Server Settings
General
-------
1. Domain : yourdomain.com
2. Invert Time : false
3. Sendmail or SMTP : Sendmail
A. Update IMAP Settings : localhost:143 (uw)
B. Change Sendmail Config : /usr/sbin/sendmail
R Return to Main Menu
C Turn color off
S Save data
Q Quit
Command >> 3
Enter “2” to switch from sendmail MTA to postfix.
You now need to choose the method that you will use for sending
messages in SquirrelMail. You can either connect to an SMTP server
or use sendmail directly.
1. Sendmail 2. SMTPYour choice [1/2] [1]: 2
Now enter “S” followed by “Q” to save and exit Squirrelmail configuration.
Create a squirrelmail vhost in apache config file:
# vi /etc/httpd/conf/httpd.conf
Add the following lines at the end:
Alias /squirrelmail /usr/share/squirrelmail
<Directory /usr/share/squirrelmail>
Options Indexes FollowSymLinks
RewriteEngine On
AllowOverride All
DirectoryIndex index.php
Order allow,deny
Allow from all
</Directory>
Restart the Apache service:
# service httpd restart
Create users:
Create some users for testing. In my case i create two users called “jashim“ and “salam“ respectively.
# useradd jashim
# useradd salam
# passwd jashim
# passwd salam
Every weekend i used to pay a quick visit this web page, because i wish for enjoyment, since this this site conations actually fastidious funny stuff too.
ReplyDeleteHi excellent blog! Does running a blog similar to this take a great deal of work? I have virtually no understanding of coding however I was hoping to start my own blog in the near future. Anyhow, should you have any ideas or techniques for new blog owners please share. I know this is off topic nevertheless I just needed to ask. Cheers!
ReplyDelete