操作系统(OS) CentOS 5.5 
邮件传输代理(MTA) Postfix  使用最新版本2.6.x 
数据库/目录服务 MySQL 5.0  可选openLDAP或NetScape LDAP,本文以MySQL为蓝本 
邮件投递代理(MDA) maildrop 2.0.x 支持过滤和强大功能 
Web帐户管理后台 ExtMan 0.2.5 支持无限域名、无限用户 
POP3 服务器 Courier-IMAP 对于大部分企业而言完全足够 
WebMail 系统 ExtMail 1.1 支持多语言、全部模板化,功能基本齐全 
SMTP认证库 Cyrus SASL  标准的SASL实现库,可以支持Courier authlib 
其他数据认证库 Courier Authlib 0.60 authlib是maildrop, courier-imap等服务的关键部件 
日志分析及显示 mailgraph_ext 在ExtMan中已经包含了 
Web 服务器 Apache 2.x OS 自带 
1. 安装postfix 
service sendmail stop 
yum install httpd-devel bind bind-chroot caching-nameserver 
卸载不支持mysql认证的postfix 
rpm -e postfix 
安装postfix 
yum install postfix-2.6.2-5hzq.i386.rpm 
查看是否支持mysql认证 
postconf -m 
修改postfix配置文件 
vim /etc/postfix/main.cf 
myhostname = mail.up.com 
mydomain = up.com 
inet_interfaces = all 
mydestination = $myhostname, $mydomain, localhost 
启动postfix 
service postfix restart 
2. 安装courier-authlib 
使用authlib登陆验证.这样可以不用管后台用户数据是用什么方式存储的.比方说MySQL/LDAP 
yum install courier-authlib 
yum install courier-authlib-mysql 
修改authdaemon socket目录权限 
如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证: 
chmod 755 /var/spool/authdaemon 
cd /etc/authlib/ 
vim authdaemonrc 
authmodulelist="authmysql" 
authmodulelistorig="authmysql" 
vim /etc/authlib/authmysqlrc 
MYSQL_SERVER        localhost 
MYSQL_USERNAME        extmail 
MYSQL_PASSWORD        extmail 
MYSQL_SOCKET        /var/lib/mysql/mysql.sock 
MYSQL_PORT        3306 
MYSQL_DATABASE        extmail 
MYSQL_USER_TABLE    mailbox 
MYSQL_CRYPT_PWFIELD    password 
MYSQL_UID_FIELD        uidnumber 
MYSQL_GID_FIELD        gidnumber 
MYSQL_LOGIN_FIELD    username 
MYSQL_HOME_FIELD    concat('/var/mailbox/',homedir) 
MYSQL_MAILDIR_FIELD    concat('/var/mailbox/',maildir) 
启动courier-authlib     
service courier-authlib start 
创建邮箱目录 
mkdir /var/mailbox 
3. 安装courier-imap 
yum install courier-imap 
ExtMail目前还没有正式支持IMAP目录,因此需要屏蔽IMAP,只提供pop3服务。而就目前的使用情况来看,IMAP使用的非常少,绝大部分OutLook/Foxmail用户都习惯使用POP3而非IMAP。 
vi /usr/lib/courier-imap/etc/imapd 
IMAPDSTART=NO 
vi /usr/lib/courier-imap/etc/imapd-ssl 
IMAPDSSLSTART=NO 
重新启动courier-imap 
service courier-imap start 
4. 安装maildrop 
maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一,我们在此将使用maildrop来代替postfix自带的MDA。 
yum install maildrop 
为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件: 
maildrop   unix        -       n        n        -        -        pipe 
  flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop} 
配置main.cf 由于maildrop不支持一次接收多个收件人,因此必须在main.cf里增加如下参数: 
maildrop_destination_recipient_limit = 1 
maildrop -v   测试 
  检查安装结果,请确保有"Courier Authentication Library extension enabled."一句出现: 
maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,专门用于邮件的存储,vuser:vgroup的uid/gid都是1000 
修改邮箱目录属性: 
chown vuser.vgroup /var/mailbox -R 
5. 安装cyrus-sasl 
yum install cyrus-sasl 
开启postfix的smtp认证 
vim /etc/postfix/main.cf 
smtpd_sasl_auth_enable = yes 
smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination 
让postfix支持虚拟用户 
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf 
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf 
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf 
virtual_transport = maildrop 
#local_recipient_maps = (注释去掉) 
编辑smtpd.conf文件,让虚拟用户到mysql数据库认证 
vi /usr/lib/sasl2/smtpd.conf 
pwcheck_method: authdaemond 
log_level: 3 
mech_list: PLAIN LOGIN 
authdaemond_path:/var/spool/authdaemon/socket 
chmod -R 777 /var/spool/authdaemon/ 
service saslauthd start 
