一.系统配置
1. 使用Centos 6.4 最小安装包进行安装,下载链接:
http://mirrors.163.com/centos/6.4/isos/i386/CentOS-6.4-i386-minimal.iso
2. 修改/etc/hosts及/etc/sysconfig/network文件
3. 修改ifcfg-eth0,DNS必须指向能解析邮箱域名的IP,也可以自身集成DNS服务,然后DNS指向自己,用host -t mx kingmed.com确认MX记录生效。
4. 查看时区:cat /etc/sysconfig/clock,内容为:ZONE="Asia/Shanghai",如不是,手动修改即可,并用/usr/share/zoneinfo/Asia/Shanghai 替换 /etc/localtime
5. 查看时间:date,如果时间不对,也要修改:
date -s 21/07/2013 #修改日期; date -s 12:11:00 #修改时间 clock -w #同步BIOS时间
6. 更新系统:yum update -y, 完成后reboot
二.创建邮箱用户
建立用户模板下的邮箱目录,以便于建立新用户时,相应用户的邮箱目录自动被建立。
[root@mail ~]# mkdir /etc/skel/Maildir 在用户模板下建立用户邮箱目录
[root@mail ~]# chmod 700 /etc/skel/Maildir 设置用户邮箱目录属性为700
[root@mail ~]# useradd liuyuhui
[root@mail ~]# useradd jiangtao
[root@mail ~]# echo "123456" | passwd liuyuhui --stdin
[root@mail ~]# echo "123456" | passwd jiangtao --stdin
三.Postfix安装及配置
1. yum -y install postfix,提示已经安装并且是最新版
2. 检查默认的MTA
[root@mail ~]# /usr/sbin/alternatives --display mta
......
Current `best' version is /usr/sbin/sendmail.postfix.
最后一行说明默认的MTA已经是postfix,在老版本中可能为sendmail.sendmail,这时就要手工更改下,方法为:
[root@mail ~]# /usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix
3. Postfix配置文件主要是两个master.cf和main.cf,这里我们只需要配置main.cf
vi /etc/postfix/main.cf,在文件main.cf找到以下的几行并按照下面的更改好。
myhostname = mail.kingmed.com
mydomain = kingmed.com
myorigin = $mydomain
inet_interfaces = all
mydestiNation = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 10.6.0.0/16,192.168.0.0/16, 127.0.0.0/8
relay_domains = $mydestination
home_mailbox = Maildir/
在最后面添加SMTP认证:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unauth_destination
smtpd_client_restrictions = permit_sasl_authenticated
message_size_limit = 15728640 规定邮件最大尺寸为15MB
完成后,使用/usr/sbin/postconf -n来检查配置是否正确。
4. 配置SELinux
wget linuxmail.info/files/rhel6/postfixdovecotsasl.te
checkmodule -M -m -o postfixdovecotsasl.mod postfixdovecotsasl.te
semodule_package -o postfixdovecotsasl.pp -m postfixdovecotsasl.mod
semodule -i postfixdovecotsasl.pp
5. 安装 cyrus-sasl 软件包
[root@mail ~]# yum install cyrus-sasl*
(A)使用/etc/shadow文件验证
[root@mail ~]# vi /etc/sysconfig/saslauthd
MECH=shadow
FLAGS=
[root@mail ~]# vi /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
(B)使用/etc/sasldb文件验证
[root@mail ~]# vi /etc/sysconfig/saslauthd
#MECH=pam #注释掉原文此行
FLAGS=sasldb
[root@mail ~]# vi /etc/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login
[root@mail ~]# saslpasswd2 -c liuyuhui -u kingmed.com
[root@mail ~]# saslpasswd2 -c jiangtao -u kingmed.com
按提示输入两次密码(不要与系统密码相同),首次操作会生成/etc/sasldb2文件。
[root@mail ~]# chgrp postfix /etc/sasldb2
[root@mail ~]# chmod 640 /etc/sasldb2
启动saslauthd
[root@mail ~]#chkconfig saslauthd on
[root@mail ~]#service saslauthd start
[root@mail ~]# /usr/sbin/testsaslauthd -u liuyuhui -p '123456' #用系统密码测试
0: NO "authentication failed"
解决办法:
[root@mail ~]# setsebool -P allow_saslauthd_read_shadow 1
但不知为什么用sasldb密码测试通不过。
6. 开放相关端口
[root@mail ~]# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m multiport --dports 25,80,110,143 -j ACCEPT
[root@mail ~]# service iptables restart
7. 重启postfix
[root@mail ~]# chkconfig postfix on
[root@mail ~]# service postfix restart
8. 检查配置是否正确
postfix 提供了check命令,可以检查当前postfix 的配置是否有问题、文件和目录权限是否正确。
[root@mail ~]# postfix check
没有消息就是好消息。
9. Telnet登录验证
这里是用虚拟用户即/etc/sasldb帐号,先取得用户名和密码的BASE64编码:
[root@mail ~]# printf "liuyuhui@kingmed.com" | openssl base64
bGl1eXVodWlAa2luZ21lZC5jb20=
[root@mail ~]# printf "liuyuhui" | openssl base64
bGl1eXVodWk=
[root@mail ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.kingmed.com ESMTP Postfix
ehlo localhost
250-mail.kingmed.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH DIGEST-MD5 GSSAPI PLAIN CRAM-MD5 LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
bGl1eXVodWlAa2luZ21lZC5jb20= #liuyuhui@kingmed.com的BASE64编码
334 UGFzc3dvcmQ6
bGl1eXVodWk= #密码liuyuhui的BASE64编码
235 2.7.0 Authentication successful
mail from:liuyuhui@kingmed.com
250 2.1.0 Ok
rcpt to:jiangtao@kingmed.com
250 2.1.5 Ok
data
354 End data with . #回车后以点号(.)结束
hello,how are you?
.
250 2.0.0 Ok: queued as 934C83622
quit
221 2.0.0 Bye
Connection closed by foreign host.
来看下jiangtao用户家目录下是否有此邮件(注意queued as 934C83622):
[root@mail ~]# cat /home/jiangtao/Maildir/new/1375283408.Vfd00I3696M538506.mail.kingmed.com
Return-Path:
X-Original-To: jiangtao@kingmed.com
Delivered-To: jiangtao@kingmed.com
Received: from localhost (localhost [127.0.0.1])
(Authenticated sender: liuyuhui@kingmed.com)
by mail.kingmed.com (Postfix) with ESMTPA id 934C83622
for ; Wed, 31 Jul 2013 23:09:20 +0800 (CST)
Message-Id: <20130731150940.934C83622@mail.kingmed.com>
Date: Wed, 31 Jul 2013 23:09:20 +0800 (CST)
From: liuyuhui@kingmed.com
To: undisclosed-recipients:;
hello,how are you?
POP/ IMAP设置
为了让用户能在本地机器下载邮件,必须在服务器安装设置POP或IMAP。Dovecot是适用CentOS Linux邮件系统有名的imap/pop服务器之一,它支持maildir和mbox格式。
1. 安装
[root@mail ~]# yum -y install dovecot
[root@mail ~]# vi /etc/dovecot/dovecot.conf
protocols = imap pop3
listen = *
[root@mail ~]# vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
[root@mail ~]# vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
[root@mail ~]# vi /etc/dovecot/conf.d/10-master.conf
service auth {
unix_listener auth-userdb {
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
[root@mail ~]# vi /etc/dovecot/conf.d/10-ssl.conf
ssl = no
[root@mail ~]# vi /etc/dovecot/conf.d/20-pop3.conf
pop3_uidl_format = XuXv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
配置完后使用dovecot -n查看所有配置。
启动dovecot:
[root@mail ~]# chkconfig dovecot on
[root@mail ~]# service dovecot start
现在你可以使用邮件客户端代理软件和系统用户及密码来连接我们的Dovecot服务器了。
四.邮件别名设置
设置邮件别名可以使多个用户收到来自一个用户(如root)发送的邮件。
1. 配置邮件别名
邮件别名的配置文件在/etc/aliases里,格式如下:
[Format]
Receiving Account or other aliases : recipient A, recipient B, recipient C ..
例1:重新发送邮件到另一用户
root:root,james
上面的例子表示,root用户的邮件对于用户james和root都可以接收到。
例2:设置群邮件
class2011: james, ann, mark
上面的例子表示我们设置了群邮件名class2011.当tutor发送一封邮件到class2011@centos.bz时,一群用户(如james,ann,mark)都会收到邮件。
2. 使用“newaliases”命令激活邮件别名功能
当编辑/etc/aliases文件后,必须执行“newaliases”命令来更新别名数据库。