Postfix is a free open source mail transfer agent (MTA). It is easy to administer, fast and as well as secure MTA. Its a alternative to Sendmail which is the default MTA for RHEL.
Prerequisites
1. Remove default MTA sendmail first:
[root@server ~]# yum remove sendmail
2. 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.
3. Add hostname entries in /etc/hosts file as shown below:
[root@server ~]# [root@server ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.200 server.unixmen.com server
4. I disabled SELinux to reduce complexity in postfix configuration.
5. Install EPEL Repository:
[root@server ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
6. Allow the Apache default port 80 through your firewall/router:
[root@server ~]# vi /etc/sysconfig/iptables -A INPUT -p udp -m state --state NEW --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
Install Postfix
In this how-to, my testbox hostname and password are server.unixmen.com and 192.168.1.250 respectively. Change these values as per your scenario:
[root@server ~]# yum install postfix -y
Configuring Postfix
Open Postfix config file /etc/postfix/main.cf and find and edit the following lines:
## Line no 75 - Uncomment and set your mail server FQDN ## myhostname = server.unixmen.com ## Line 83 - Uncomment and Set domain name ## mydomain = unixmen.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 Postfix service now:
[root@server ~]# /etc/init.d/postfix start [root@server ~]# /etc/init.d/postfix status master (pid 1290) is running... [root@server ~]# chkconfig postfix on
Testing Postfix mail server
Access the server via telnet and enter the commands shown in red colored text.
First create a testing user called “sk”:
[root@server ~]# useradd sk [root@server ~]# passwd sk
[root@server ~]# telnet localhost smtp Trying ::1... Connected to localhost. Escape character is '^]'. 220 server.unixmen.com ESMTP Postfix ehlo localhost 250-server.unixmen.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from:<sk> 250 2.1.0 Ok rcpt to:<sk> 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> welcome to unixmen mail system . 250 2.0.0 Ok: queued as 3E68E284C quit 221 2.0.0 Bye Connection closed by foreign host.
Now navigate to the user “sk” mail directory and check for the new mail:
[root@server ~]# ls /home/sk/Maildir/new/ 1369816264.Vfd00I41ec0M251771.server.unixmen.com
A new mail is received to the user “sk”. To read the mail enter the following command:
[root@server ~]# cat /home/sk/Maildir/new/1369816264.Vfd00I41ec0M251771.server.unixmen.com Return-Path: <sk@unixmen.com> X-Original-To: sk Delivered-To: sk@unixmen.com Received: from localhost (localhost [IPv6:::1]) by server.unixmen.com (Postfix) with ESMTP id 3E68E284C for <sk>; Wed, 29 May 2013 14:00:36 +0530 (IST) Message-Id: <20130529083047.3E68E284C@server.unixmen.com> Date: Wed, 29 May 2013 14:00:36 +0530 (IST) From: sk@unixmen.com To: undisclosed-recipients:; welcome to unixmen mail system
Installing Dovecot
Dovecote is an open source IMAP and POP3 mail server for Unix/Linux systems. To install:
[root@server ~]# yum install dovecot
Configuring Dovecot
Open the file /etc/dovecot/dovecot.conf file and edit as follows:
## Line 20 - umcomment ## protocols = imap pop3 lmtp
Open /etc/dovecot/conf.d/10-mail.conf file and make the changes as shown below:
[root@server ~]# vi /etc/dovecot/conf.d/10-mail.conf ## Line 24 - uncomment ## mail_location = maildir:~/Maildir
Open /etc/dovecot/conf.d/10-auth.conf and make the changes as shown below:
[root@server ~]# vi /etc/dovecot/conf.d/10-auth.conf ## line 9 - uncomment## disable_plaintext_auth = yes ## Line 99- Add a letter "login" ## auth_mechanisms = plain login
Open the file /etc/dovecot/conf.d/10-master.conf and make changes as shown below:
[root@server ~]# vi /etc/dovecot/conf.d/10-master.conf ## Line 83, 84 - Uncomment and add "postfix" #mode = 0600 user = postfix group = postfix
Start Dovecot service:
[root@server ~]# service dovecot start Starting Dovecot Imap: [ OK ] [root@server ~]# chkconfig dovecot on
Testing Dovecot
It’s time to test Dovecot configuration.
Enter the commands manually marked in red color:
[root@server ~]# telnet localhost pop3 Trying ::1... Connected to localhost. Escape character is '^]'. +OK Dovecot ready. user sk +OK pass centos ## Here centos is password of user "sk" ## +OK Logged in. list +OK 1 messages: 1 427 . retr 1 +OK 427 octets Return-Path: <sk@unixmen.com> X-Original-To: sk Delivered-To: sk@unixmen.com Received: from localhost (localhost [IPv6:::1]) by server.unixmen.com (Postfix) with ESMTP id 3E68E284C for <sk>; Wed, 29 May 2013 14:00:36 +0530 (IST) Message-Id: <20130529083047.3E68E284C@server.unixmen.com> Date: Wed, 29 May 2013 14:00:36 +0530 (IST) From: sk@unixmen.com To: undisclosed-recipients:; welcome to unixmen mail system . quit +OK Logging out. Connection closed by foreign host.
Now Dovecot is working.
Working with mail in command modes little bit difficult to us. So we will install a webmail client called Squirrelmail to send/receive emails via web browser.
Installing Squirrelmail
Make sure that you installed EPEL repository. Now install Squirrelmail using the following command:
[root@server ~]# yum install squirrelmail -y
Configuring Squirrelmail
Navigate to /usr/share/squirrelmail/config/ directory and run the command conf.pl:
[root@server ~]# cd /usr/share/squirrelmail/config/ [root@server 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:
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
Again enter choice 1 to set your Organization name and enter all the details:
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]: unixmen mail
After setup all the details in the above wizard 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 : unixmen mail 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 >> s
Now enter R 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 and set your mail domain name:
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]: unixmen
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 : unixmen 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
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. SMTP Your choice [1/2] [1]: 2
Now enter S and Q to save and exit Squirrelmail configuration.
Create a squirrelmail vhost in apache config file:
[root@server config]# vi /etc/httpd/conf/httpd.conf ## Add the lines at the end of this file ##
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 Apache service:
[root@server config]# service httpd restart
Create users
Create some users for testing. In my case i create two users called “senthil” and “kumar” respectively.
[root@server ~]# useradd senthil [root@server ~]# useradd kumar [root@server ~]# passwd senthil [root@server ~]# passwd kumar
Webmail
Now navigate to http://ip-address/webmail or http://domain-name/webmail from your browser. The following should appear. Enter the username and password of the user.
Let us compose a test mail from user “senthil” to user “kumar”.
Now login to user “kumar” mail and check for any new mail.
There it is. We have got ourselves a new email
source: http://www.unixmen.com/install-postfix-mail-server-with-dovecot-and-squirrelmail-on-centos-6-4/
注: 这是一篇比较有分量的文章, 建议大家好好参考.