postfix+extmail+extman实现虚拟用户邮件系统
如今主流的邮件服务器是基于web管理界面的,既简单又方便管理,下图大致描述了这种形式的邮件服务器的构成和工作原理:
用户通过邮件客户端编写邮件,通过邮件服务器(我们用postfix)把邮件发送出去,发送时需要进行身份验证,这样比较安全,同样,用户通过使用dovecot收件服务器来接收给自己的邮件,邮件未读取时都被放在自己的mailbox里,当用户收件时,需要进行身份验证。并不是说只有本机用户可以进行邮件的收发,邮件服务器通过courier-authlib组件来和mysql数据库连接,从而实现虚拟用户的登录,进行邮件收发,同时,为了方便用户们的发件和管理邮件,我们可以通过apache+extmail+extman实现对邮件的web界面管理,极大提高了邮寄服务器的便捷性。下面就让我们来共同学习一下通过web管理界面实现虚拟用户的邮件收发和注册。
环境:red hat 5.4
搭建步骤:
安装前确保搭建环境符合要求,要安装过一下四个开发工具
#yum grouplist
Development Libraries
Development Tools
Legacy Software Development
X Software Development
安装源码httpd
这里我使用的是httpd-2.4.4(在前面的博客里已经对httpd的源码安装已经有详细介绍,这里只做大概步骤的说明)
tar –jxvf httpd-2.4.4.tar.bz2 –C /usr/local/src/
编译安装需要依赖apr、apr-util、pcre-devel,这里apr、apr-util使用的源码安装,pcre-devel使用的系统光盘镜像
安装apr
tar -zxvf apr-1.4.6.tar.gz
./configure --prefix=/usr/local/apr
Make && make install
安装apr-util
tar -zxvf apr-util-1.4.1.tar.gz
./configure –with-apr=/usr/local/apr/bin/apr-1-config
Make && make install
安装pcre-devel
rpm -ivh /mnt/cdrom/Server/pcre-devel-6.6-2.el5_1.7.i386.rpm
安装httpd
执行make和make install命令,这样就安装完毕了
为了使httpd能够方便的完成启动、关闭、重启功能我们为它编写一个脚本
这样httpd就搭建完成了
Mysql源码搭建(为了方便我们直接用的mysql二进制软件包)
Mysql为二进制软件包,直接解压到/usr/local目录下
Tar –zxvf mysql-5.5.15-linux2.6-i686.tar.gz –C /usr/local/
进入解压后的目录为mysql目录建一个软连接方便打开
# ln -s mysql-5.5.15-linux2.6-i686 mysql
打开INSTALL-BINARY文件,并参考它的安装步骤进行安装
这样就可以使用service对mysql进行直接控制了
为了直接使用mysql进入数据库,去修改/etc/profile文件加入mysql环境配置路径
修改完毕更新profile
# . /etc/profile
为数据库root用户创建密码
# mysqladmin -u root -p password '123456'
接下来设置mysql的库文件和头文件来使其他应用能够找到它
在/etc/ld.so.conf.d目录下创建mysql.conf文件并编辑,写上库文件的路径,编辑完后进行更新
#ldconfig
给头文件建立软连接
# ln -s include /usr/include/mysql
给Root用户一个登录密码
#mysqladmin –u root –p password ‘123456’
启动mysql
Mysql的安装就结束了
配置dns(安装使用yum)
#yum install bind bind-chroot caching-nameserver
切换到/var/named/chroot/etc目录下
并编辑
声明a.com域
#vim /var/named/chroot/etc/named.rfc1912.zones
生成a.com.zone文件
# cd /var/named/chroot/var/named/
# cp -p localhost.zone a.com.zone
并编辑
修改dns指向、修改主机名
# vim /etc/sysconfig/network
# vim /etc/hosts
# vim /etc/resolv.conf(加入以下内容)
重启dns服务,并测试
Dns配置完毕
安装其他所需要的软件包
#yum install openssl-devel dovecot perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect
安装postfix
按照INSTALL文件的基本步骤来进行配置
# groupadd -g 2525 postfix
# useradd -g postfix -u 2525 -s /sbin/nologin -M postfix
# groupadd -g 2526 postdrop
# useradd -g postdrop -u 2526 -s /bin/false -M postdrop
# tar zxvf postfix-2.6.5.tar.gz
# cd postfix-2.6.5
# make
# make install
Make install之后的选项基本选为默认值
执行/usr/bin/newaliases(生成新的aliases文件来和postfix结合)
为了方便启动postfix,我们使用光盘镜像下的控制脚本,创建一个临时目录
# cp /mnt/cdrom/Server/postfix-2.3.3-2.1.el5_2.i386.rpm ./
拆解rpm包
# rpm2cpio postfix-2.3.3-2.1.el5_2.i386.rpm |cpio –id
在/tmp/abc/etc/rc.d/init.d目录下有一个postfix可执行文件,它就是postfix的控制文件,我们把它拷贝到/etc/init.d目录下即可
现在可以直接用service来控制postfix服务
Postfix正常工作需要我们去更改它的main.cf文件
# vim /etc/postfix/main.cf
更改完毕后重启服务即可,接下来验证
使用root用户给user1发邮件
可以看出user1已收到邮件,postfix没有问题
接下来我们对它做身份验证
# cd /usr/lib/sasl2/
# cp -p Sendmail.conf smtpd.conf
# vim smtpd.conf
开启认证服务
# service saslauthd start
# chkconfig saslauthd on
# vim /etc/postfix/main.cf(在最后一行加入以下认证内容)
重启postfix服务,进行验证
可以看到已经有验证的信息
为使虚拟用户能够登陆邮件服务器,我们需要把邮件服务器和数据库连接起来,cyrus-sasl不能提供这种服务,我们需要安装courier-authlib组件
之后make时会提示说mysql.h和errmsg.h文件找不到,我们需要在authmysqllib.c和authmysql.h文件里把它们的完整路径写在里面
# vim authmysqllib.c
# vim authmysql.h
更改完文件后再make&&make install
接下来
# cp authdaemonrc.dist authdaemonrc
# cp authmysqlrc.dist authmysqlrc
56 MYSQL_PORT 3306
68 MYSQL_DATABASE extmail
83 MYSQL_USER_TABLE mailbox
92 MYSQL_CRYPT_PWFIELD password
105 DEFAULT_DOMAIN a.com
113 MYSQL_UID_FIELD 2525
119 MYSQL_GID_FIELD 2525
128 MYSQL_LOGIN_FIELD username
133 MYSQL_HOME_FIELD concat('/var/mailbox/',homedir)
139 MYSQL_NAME_FIELD name
150 MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)
生成它的控制文件
建立库文件和头文件的链接
# vim /etc/ld.so.conf.d/courier-authlib.conf
加入以下内容
/usr/local/courier-authlib/lib/courier-authlib/
# ldconfig
# ln -s /usr/local/courier-authlib/include/ /usr/include/courier-authlib
让postfix支持虚拟域和虚拟用户
编辑/etc/postfix/main.cf,添加如下内容