这篇文章适合于Centos 6和7两个版本。
» Postfix ( 发送邮件 )
» Dovecot ( 接收邮件)
» Cyrus-Sasl ( 认证)
» Squirrelmail ( web访问 )

如果需要界面友好,对中文完整支持的webmail,推荐使用Roundcube邮件系统。
Centos Webmail客户端Roundcube配置
http://www.eryige.com/forum.php?mod=viewthread&tid=23&fromuid=2

这次部署邮件服务器大致分为5个步骤
» 配置iptables
» 安装配置postfix
» 安装配置dovecot
» 建立用户和测试
» 安装配置squirrelmail(需要LAMP支持)

» 配置iptables
步骤 1 » 为服务器打开必要的端口。
第一条的lo是为了测试localhost。由于我们用到了SSL加密,所以443,465,995,993端口都需要打开。
[root@eryige ~]# iptables -A INPUT -i lo -j ACCEPT
[root@eryige ~]# iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
[root@eryige ~]# iptables -A INPUT -p tcp -m tcp –dport 443 -j ACCEPT
[root@eryige ~]# iptables -A INPUT -p tcp -m tcp –dport 25 -j ACCEPT
[root@eryige ~]# iptables -A INPUT -p tcp -m tcp –dport 465 -j ACCEPT
[root@eryige ~]# iptables -A INPUT -p tcp -m tcp –dport 110 -j ACCEPT
[root@eryige ~]# iptables -A INPUT -p tcp -m tcp –dport 995 -j ACCEPT
[root@eryige ~]# iptables -A INPUT -p tcp -m tcp –dport 143 -j ACCEPT
[root@eryige ~]# iptables -A INPUT -p tcp -m tcp –dport 993 -j ACCEPT

步骤 2 » 检查一下iptables是不是有遗漏的地方。
[root@eryige ~]# iptables -L -n

步骤 3 » 储存iptables。
[root@eryige ~]# service iptables save

步骤 4 » 重启iptables使之生效。
[root@eryige ~]# service iptables restart

» 安装配置postfix
步骤 1 » 在安装之前,在/etc/hosts给服务器设置一个域名和固定的IP。这里我用我们论坛eryige.com来举例。
118.193.133.159 eryige.com

步骤 2 » 安装postfix。
[root@eryige ~]# yum -y install postfix

步骤 3 » 安装SMTP的验证,即Cyrus和Sasl。
[root@eryige ~]# yum -y install cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain

至此,postfix安装结束。

步骤 4 » 制作SSL证书加密。
[root@eryige ~]# mkdir /etc/postfix/ssl
[root@eryige ~]# cd /etc/postfix/ssl/
[root@eryige ssl]# openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
[root@eryige ssl]# chmod 600 smtpd.key
[root@eryige ssl]# openssl req -new -key smtpd.key -out smtpd.csr
[root@eryige ssl]# openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
[root@eryige ssl]# openssl rsa -in smtpd.key -out smtpd.key.unencrypted
[root@eryige ssl]# mv -f smtpd.key.unencrypted smtpd.key
[root@eryige ssl]# openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 365

步骤 5 » 配置postfix。打开 /etc/postfix/main.cf。这里推荐注释掉以前的配置,然后在配置文件的末尾添加新的配置信息。

首先,注释掉下面两行。
#inet_interfaces = localhost #—> 第116行
#mydestination = $myhostname, localhost.$mydomain, localhost #–> 第164行

然后在文件末尾添加如下内容。
这里大概讲解一下需要注意的配置内容,主要是home_mailbox,我指定的是用户home下面的mail目录,可根据需求更改,不过改后的目录要和下一步dovecot的目录相同。其他的需要更改一下myhostname和mydomain。由于我是面向公网的邮件服务器,所以在mynetworks里只是信任了本机,如果各位在局域网内搭建邮件服务器,可以把mynetworks后面添加上自己的网段(比如127.0.0.0/8, 192.168.1.0/24)。
myhostname = mail.eryige.com
mydomain = eryige.com
myorigin = $mydomain
home_mailbox = mail/
mynetworks = 127.0.0.0/8
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt

#CAfile ke you ke wu
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

CentOS 7中,还需要加入下面3行,然后配置客户端时使用STARTTLS
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes

步骤 6 » 配置postfix的smtp认证。打开 /etc/postfix/master.cf
smtps     inet  n       –       n       –       –       smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_sender=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o broken_sasl_auth_clients=yes

步骤 7 » 启动postfix和saslauthd。
Centos 6
[root@eryige ~]# service postfix start
[root@eryige ~]# service saslauthd start

Centos 7
[root@eryige ~]# systemctl start postfix
[root@eryige ~]# systemctl start saslauthd

Centos 7    还可以查看状态
[root@eryige ~]# systemctl status postfix
[root@eryige ~]# systemctl status saslauthd

步骤 8 » 设置postfix和saslauthd开机自启。
Centos 6
[root@eryige ~]# chkconfig –level 235 postfix on
[root@eryige ~]# chkconfig –level 235 saslauthd on

Centos 7
[root@eryige ~]# systemctl enable postfix
[root@eryige ~]# systemctl enable saslauthd

步骤 9 » 测试SMTP。
首先安装telnet。
[root@eryige ~]# yum -y install telnet

然后telnet到localhost的25端口,输入命令ehlo localhost。
[root@eryige ~]# telnet localhost 25
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
220 mail.eryige.com ESMTP Postfix
ehlo localhost <—- type this command
250-mail.eryige.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

如果结果如上,则配置正确。

» 安装配置dovecot
步骤 1 » 安装dovecot。
[root@eryige ~]# yum -y install dovecot

步骤 2 » 配置dovecot。打开/etc/dovecot/dovecot.conf,然后在末尾加入下面的配置信息。这里的邮件目录必须和postfix的相同。我设置的是用户home下的mail文件夹。
protocols = imap pop3
mail_location = maildir:~/mail
pop3_uidl_format = %08Xu%08Xv

如果是申请来的证书,需要配置/etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem

步骤 3 » 启动dovecot。
Centos 6
[root@eryige ~]# service dovecot start

Centos 7
[root@eryige ~]# systemctl start dovecot

步骤 4 » 设置dovecot开机自启。
Centos 6
[root@eryige ~]# chkconfig –level 235 dovecot on

Centos 7
[root@eryige ~]# systemctl enable dovecot

步骤 5 » 测试POP3。使用telnet到localhost的110端口。
[root@eryige ~]# telnet localhost 110
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
+OK Dovecot ready.
quit
+OK Logging out
Connection closed by foreign host.

如果结果如上,则配置正确。

» 建立用户和测试

步骤 1 » 建立用户。
当然,邮件用户不需要登陆主机的权限。为了方便管理,也可把这些用户加到一个组里,比如-g mail。
[root@eryige ~]# useradd -m yzy9952 -s /sbin/nologin
[root@eryige ~]# passwd yzy9952

步骤 2 » 使用邮件客户端测试邮件。
配置如图所示
接收服务器:你的ip或域名
类型:POP3 端口995 需要加密连接(SSL)。

发送服务器:你的ip或域名
类型:SMTP 端口465 加密类型TSL,发送服务器需要验证,使用与接收邮件服务器相同的设置。

步骤 3 » 如果发生任何问题,可以查看log/var/log/maillog

» 安装配置squirrelmail
有两种安装的方法,
1. 他是一个开源的php程序,所以可以直接下载然后放到Apache之类的网页服务目录下。
步骤 1 » 下载squirrelmail安装(最新版在官网http://www.squirrelmail.org)。
[root@eryige ~]# cd /tmp
[root@eryige ~]# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fprdownloads.sourceforge.net%2Fsquirrelmail%2Fsquirrelmail-webmail-1.4.22.tar.gz
[root@eryige ~]# tar -zxvf squirrelmail-webmail-1.4.22.tar.gz
[root@eryige ~]# mv squirrelmail-webmail-1.4.22 /var/www/html/webmail
[root@eryige ~]# chown -R apache:apache /var/www/html/webmail

步骤 2 » 配置squirrelmail。
[root@eryige ~]# cd /var/www/html/webmail
[root@eryige ~]# ./configure

»»» D »»» dovecot ( type ) »»» 敲回车使用默认设置即可
»»» 1 »»» 1 »»» eryige (type Organization name ) »»» R ( return )
»»» 2 »»» 1 »»» ( eryige.com ) »»» R ( return )
»»» 2 »»» B »»» 7 »»» y ( Try to detect auth mechanisms? ) »»» 出现如下结果
Testing none:          SUPPORTED
Testing login:          SUPPORTED
Testing plain:          SUPPORTED
Testing CRAM-MD5:       NOT SUPPORTED
Testing DIGEST-MD5:     NOT SUPPORTED
在none, login, plain, cram-md5, or digest-md5 [none]:后面填SUPPROTED的方法(推荐login)。
Would you like to use other login and password for all SquirrelMail SMTP connections? [y/N]: 这里推荐选择N,每个人使用自己的登陆信息登陆网页邮件系统。»»» R ( return )
»»» s ( save and quit)

步骤 3 » 建立squirrelmail的目录。
[root@eryige ~]# mkdir -p /var/local/squirrelmail/data/
[root@eryige ~]# mkdir -p /var/local/squirrelmail/attach/
[root@eryige ~]# chown -R apache:apache /var/local/squirrelmail

步骤 4 » 测试squirrelmail。
打开网页http://你的ip或者域名/webmail

2. 通过yum安装。
步骤 1 » 导入新的EPEL repository。
[root@eryige ~]# rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm

步骤 2 » 通过yum安装squirrelmail。
[root@eryige ~]# yum -y install squirrelmail

步骤 3 » 配置squirrelmail。
[root@eryige ~]# perl /usr/share/squirrelmail/config/conf.pl

»»» D »»» dovecot ( type ) »»» 敲回车使用默认设置即可
»»» 1 »»» 1 »»» eryige (type Organization name ) »»» R ( return )
»»» 2 »»» 1 »»» ( eryige.com ) »»» R ( return )
»»» 2 »»» B »»» 7 »»» y ( Try to detect auth mechanisms? ) »»» 出现如下结果
Testing none:          SUPPORTED
Testing login:          SUPPORTED
Testing plain:          SUPPORTED
Testing CRAM-MD5:       NOT SUPPORTED
Testing DIGEST-MD5:     NOT SUPPORTED
在none, login, plain, cram-md5, or digest-md5 [none]:后面填SUPPROTED的方法(推荐login)。
Would you like to use other login and password for all SquirrelMail SMTP connections? [y/N]: 这里推荐选择N,每个人使用自己的登陆信息登陆网页邮件系统。»»» R ( return )
»»» s ( save and quit)

步骤 4 » 配置Apache。打开/etc/httpd/conf.d/squirrelmail.conf file,把下面2行注释掉。
# RewriteCond %{HTTPS} !=on
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

步骤 5 » 测试squirrelmail。
打开网页http://你的ip或者域名/webmail