第一步:配置DNS

vim /etc/resolv.conf 做nameserver指向本机器
vim /etc/sysconfig/network   标示本区域的名字
vim /etc/hosts     查看主机名字是否是自己设置的
挂载光盘
vim /etc/yum.repos.d/rhel-debuginfo.repo 编辑yum安装环境
yum install bind 安装bind
yum install bind-chroot   安装bind-chroot
yum install caching-nameserver   安装caching-nameserver
cd /var/named/chroot/etc进入dns目录cp -p named.caching-nameserver.conf named.conf生成配置脚本
编辑配置脚本
vim named.rfc1912.zones 指明dns解析文件位置
cd ../var/named/ 切换目录并生成编译文件cp -p localhost.zone A.org.zone
vim A.org.zone 编译文件

基于虚拟账号的邮件系统_虚拟账号 

service named start启动dns        chkconfig named on设为开机启动
因为要使用postfix搭建邮件服务器所以要关闭Linux系统中的sendmail
安装本次试验所需软件包
yum install httpd php php-mysql mysql mysql-server mysql-devel openssl-devel dovecot perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect
共计相关的 软件包16个
需要确定系统中开发环境的正确用yum grouplist来查看开发环境
service mysqld start启动mysql          chkconfig mysqld on设为开机启动
mysqladmin -u root password 'your_password'可以用此方法给mysql创建管理账号
也可以进入mysql中用
SET PASSWORD FOR root@'localhost'=PASSWORD('redhat');
SET PASSWORD FOR root@'127.0.0.1'=PASSWORD('redhat'); 两种方法创建管理账号
FLUSH PRIVILEGES;刷新用户权限
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'redhat';远程创建管理员账号,同样要刷新权限
第二部:用源代码安装postfix,上传所需软件包压缩文件
tar -zxvf postfix-2.8.2.tar.gz -C /usr/local/src/ 解压文件到指定目录
cd /usr/local/src/postfix-2.8.2/ 切换到新生成目录
groupadd -g 2525 postfix创建一个值为2525的组postfix
useradd -g postfix -u 2525 -s /sbin/nologin -M postfix 给组添加一个账号postfix
groupadd -g 2526 postdrop  再创建一个值为2526的组postdrop
useradd -g postdrop -u 2526 -s /bin/false -M postdrop 给组一个账号
因为解压文件没有生成./configure所以要自己生成makefile文件
make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2   -lssl -lcrypto'
然后执行make和make install。在执行make install是会有相关文件安装位置的选择,(【】内部的值为默认,要是不改动直接回车,改动就写出路径)
        install_root: [/] /
  tempdir: [/usr/local/src/ postfix-2.6.5] /tmp
  config_directory: [/etc/postfix] /etc/postfix
  daemon_directory: [/usr/libexec/postfix]
  command_directory: [/usr/sbin]
  queue_directory: [/var/spool/postfix]
  sendmail_path: [/usr/sbin/sendmail]
  newaliases_path: [/usr/bin/newaliases]
  mailq_path: [/usr/bin/mailq]
  mail_owner: [postfix]
  setgid_group: [postdrop]  
       html_directory: [no] /var/www/postfix_html
       manpages: [/usr/local/man]
       readme_directory: [no]
这样postfix安装就完成了。
执行newaliases  生成别名文件,这样能提高postfix的效率
postfix start 启动postfix
postconf -m 执行此命令查看postfix是否支持mysql
mkdir /tmp/abc           cd /tmp/abc/
cp /mnt/cdrom/Server/postfix-2.3.3-2.1.el5_2.i386.rpm ./ 拷贝文件到当前目录
rpm2cpio postfix-2.3.3-2.1.el5_2.i386.rpm |cpio -id 展开此rpm包
cd /tmp/abc/etc/rc.d/init.d/        cp postfix /etc/init.d/ 把文件拷贝到指定目录
这样就可以用service启用postfix了。此时系统能进行邮件发送,可以测试一下。
vim /etc/postfix/main.cf 编辑配置文件

基于虚拟账号的邮件系统_postfix_02 基于虚拟账号的邮件系统_postfix_03 基于虚拟账号的邮件系统_邮件系统_04 基于虚拟账号的邮件系统_虚拟账号_05

service postfix restart 重启
postfix设置身份验证
vim /etc/postfix/main.cf

基于虚拟账号的邮件系统_邮件系统_06

cd /usr/lib/sasl2/     cp -p Sendmail.conf smtpd.confpostfix生成一个.conf文件
vim smtpd.conf 编辑文件添加mech_list: PLAIN LOGIN认证机制也可不添加
service saslauthd start    chkconfig saslauthd on 启动ssl并设为开机启动
第三部:安装与mysql相关的Courier authentication library:
tar -jxvf courier-authlib-0.63.0.tar.bz2 -C /usr/local/src/ 解压安装包到指定目录
cd /usr/local/src/courier-authlib-0.63.0/     切换到生成目录
./configure --prefix=/usr/local/courier-authlib --sysconfdir=/etc --with-authmysql --with-mysql-libs=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql --with-redhat --with-authmysqlrc=/etc/authmysqlrc --with-authdaemonrc=/etc/authdaemonrc --with-ltdl-lib=/usr/lib --with-ltdl-include=/usr/include
执行命令并指定安装路径
执行make和make install
chmod 755 /usr/local/courier-authlib/var/spool/authdaemon 修改权限
cp /etc/authdaemonrc.dist /etc/authdaemonrc
cp /etc/authmysqlrc.dist /etc/authmysqlrc
生成两个脚本文件
vim /etc/authdaemonrc

基于虚拟账号的邮件系统_虚拟账号_07 

vim /etc/authmysqlrc编辑此文件按下面要求更改
MYSQL_SERVER localhost
MYSQL_PORT 3306                   (指定你的mysql监听的端口,这里使用默认的3306)
MYSQL_USERNAME extmail      (这时为后文要用的数据库的所有者的用户名)
MYSQL_PASSWORD extmail        (密码)
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD '2525'
MYSQL_GID_FIELD '2525'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD concat('/var/mailbox/',homedir)
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)
cp courier-authlib.sysvinit /etc/init.d/courier-authlib生成一个文件
chmod 755 /etc/init.d/courier-authlib  更改文件权限
service courier-authlib start 启动服务
chkconfig --add courier-authlib 把服务加入chkconfig组,可以设置为开机启动
chkconfig courier-authlib on
echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf  把启动文件放到系统默认的位置
mkdir -pv /var/mailbox 创建虚拟账号目录
chown -R postfix /var/mailbox 修改目录权限拥有者
vim /usr/lib/sasl2/smtpd.conf编辑验证文件保证内容是下面内容
pwcheck_method: authdaemond
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
 
修改完成后service saslauthd restart重启验证服务
service courier-authlib restart 重启cour服务
编辑文件vim /etc/postfix/main.cf使postfix支持虚拟账号和虚拟域

基于虚拟账号的邮件系统_postfix_08

第四部:安装extmail
tar -zxvf extmail-1.2.tar.gz拆解安装包,但不需要安装,只需要导入mysql
tar -zxvf extman-1.1.tar.gz拆解相关安装包
cd /root/extman-1.1/docs切换到目录
mysql -u root -p <extmail.sql 向mysql中导入文件
mysql -u root -p <init.sql
cp mysql_virtual_* /etc/postfix/ 拷贝mysql文件到指定文件
进入mysql设置extmail管理用户
GRANT all privileges on extmail.* TO extmail@localhost IDENTIFIED BY 'extmail';
GRANT all privileges on extmail.* TO extmail@127.0.0.1 IDENTIFIED BY 'extmail';
FLUSH PRIVILEGES;刷新生效
第五步:安装dovecot
vim /etc/dovecot.conf编辑文件

基于虚拟账号的邮件系统_postfix_09 

禁用其中795行的passdb pam { }      896行的userdb passwd { }
启用930行的userdb sql { args = /etc/dovecot-mysql.conf }
启用869行的passdb sql { args = /etc/dovecot-mysql.conf }
vim /etc/dovecot-mysql.conf创建新的文件
内容为
driver = mysql
connect = host=localhost dbname=extmail user=extmail password=extmail
default_pass_scheme = CRYPT
password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = '%u'                           
user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = '%u'
编辑文件vim /etc/postfix/main.cf 的415行的home_mailbox = Maildir/
service dovecot start启用dovecot    chkconfig dovecot on
service postfix restart重启postfix
第六步:安装web下管理邮箱的extmail
mkdir -pv /var/www/extsuite 创建安装目录
mv extmail-1.2 /var/www/extsuite/extmail把上面解压的目录移动到指定目录
mv extman-1.1 /var/www/extsuite/extman
cd /var/www/extsuite/extmail切换到目录
cp webmail.cf.default webmail.cf拷贝生成所需文件
更改文件vim webmail.cf中的某些项目
SYS_MESSAGE_SIZE_LIMIT = 5242880用户可以发送的最大邮件
SYS_USER_LANG = en_US语言选项,可改作:SYS_USER_LANG = zh_CN
SYS_MAILDIR_BASE = /home/domains此处即为您在前文所设置的用户邮件的存放目录,可改作:SYS_MAILDIR_BASE = /var/mailbox
SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
 
SYS_MYSQL_HOST = localhost
指明数据库服务器主机名,这里默认即可
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
以上用来指定验正用户登录里所用到的表,以及用户名、域名和用户密码分别对应的表中列的名称;这里默认即可
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
此句用来指明authdaemo socket文件的位置,这里修改为:
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket
 
第七步:配置apache
service httpd start启用apache          chkconfig httpd on
vim /etc/httpd/conf/httpd.conf编辑配置文件

基于虚拟账号的邮件系统_postfix_10 

修改231和232行
User postfix
Group postfix
修改完成后
chown -R postfix.postfix /var/www/extsuite/extmail/cgi/ 修改apache的运行身份
service httpd restart重启apache
此时能访问但不能注册,因为还未安extman
第八部:Extman的安装
cd /var/www/extsuite/extman切换到extman的目录
cp webman.cf.default webman.cf生成所需配置文件
vim webman.cf编辑文件
SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox
修改SYS_CAPTCHA_ON = 1 为   SYS_CAPTCHA_ON = 0
chown -R postfix.postfix /var/www/extsuite/extman/cgi/ 修改所有权限
mkdir -pv /tmp/extman创建运行的临时目录
chown postfix.postfix /tmp/extman更改所有者和组
当运行有问题时安装补丁
tar -zxvf Unix-Syslog-0.100.tar.gz 解压补丁包
cd Unix-Syslog-0.100切换到生成目录
perl Makefile.PL编译文件
make和make install
service httpd restart安装完成后重启apache
重新从网页登陆选择管理即可登入extman进行后台管理了。默认管理帐号为:root@extmail.org 密码为:extmail*123*

基于虚拟账号的邮件系统_虚拟账号_11 

在页面上可以创建账号,设置域的大小,进行邮件管理等。

注册一个新用户来收发邮件,测试配置的正确性。