一、先卸载原有的postfix:

[root@fsy-Centos6 ~]# service postfix stop

[root@fsy-Centos6 ~]# chkconfig postfix off

[root@fsy-Centos6 ~]# rpm -e postfix --nodeps

二、为了基于Mysql实现虚拟用户认证,首先安装MySQL(我这里通过编译安装MySQL-5.6.33(通用二进制格式))

1.将下载好的压缩包解压至/usr/local,并进入此目录

[root@fsy-Centos6 ~]# tar xf mysql-5.6.33-linux-glibc2.5-i686.tar.gz -C /usr/local/

[root@fsy-Centos6 ~]# cd /usr/local/

2.为解压后的目录创建一个链接,并进入此目录

[root@fsy-Centos6 local]# ln -sv mysql-5.6.33-linux-glibc2.5-i686 mysql

[root@fsy-Centos6 local]# cd mysql

3.创建MySQL用户(使其成为系统用户)和MySQL

[root@fsy-Centos6 mysql]# groupadd -r -g 306 mysql

[root@fsy-Centos6 mysql]# useradd -g 306 -r -u 306 mysql

4.使mysql下的所有文件都属于mysql用户和mysql

[root@fsy-Centos6 mysql]# chown -R mysql.mysql /usr/local/mysql/*

5.提前准备一个分区用来创建逻辑卷(我这里用/dev/sda5),在此分区上创建逻辑卷并使其可以开机     自动挂载使用。

[root@fsy-Centos6 mysql]# pvcreate /dev/sda5

[root@fsy-Centos6 mysql]# vgcreate myvg /dev/sda5

[root@fsy-Centos6 mysql]# lvcreate -n mydata -L 512M myvg

[root@fsy-Centos6 mysql]# mke2fs -j /dev/myvg/mydata

#vim /etc/fstab,添加以下内容:

/dev/myvg/mydata    /mydata   ext3    defaults        0 0

[root@fsy-Centos6 mysql]# mkdir /mydata

[root@fsy-Centos6 mysql]# mount -a

6.创建数据目录,并使其属于mysql用户和mysql组,其他人无权限

[root@fsy-Centos6 mysql]# mkdir /mydata/data

[root@fsy-Centos6 mysql]# chown -R mysql:mysql /mydata/data/

[root@fsy-Centos6 mysql]# chmod o-rw /mydata/data/

7.准备安装所需的开发环境

[root@fsy-Centos6 mysql]# yum -y install gcc

8.准备就绪,开始安装

[root@fsy-Centos6 mysql]#scripts/mysql_install_db--user=mysql  --datadir=/mydata/data

9.安装完成后为了安全,更改/usr/local/mysql下所有文件的权限

[root@fsy-Centos6 mysql]# chown -R root  .

10.准备启动脚本,并使其开机自动启动

[root@fsy-Centos6 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

[root@fsy-Centos6 mysql]# chkconfig --add mysqld

[root@fsy-Centos6 mysql]# chkconfig --list mysqld

11.编辑数据库配置文件

[root@fsy-Centos6 mysql]# cp support-files/my-default.cnf /etc/my.cnf

#vim /etc/my.cnf,修改和添加以下内容:

datadir = /mydata/data

12.提供执行相关命令所需的环境变量

[root@fsy-Centos6 ~]# vim /etc/profile.d/mysql.sh

添加以下内容:

export PATH=$PATH:/usr/local/mysql/bin

13.至此,MySQL服务配置完成,可以启动测试

[root@fsy-Centos6 ~]# service mysqld start

三、编译安装postfix,(我这里用 postfix-2.10.10.tar.gz,相关软件包可以到postfix官网下载)

1.解压

[root@fsy-Centos6 ~]# tar xf postfix-2.10.10.tar.gz

[root@fsy-Centos6 ~]# cd postfix-2.10.10

2.建立postfixpostdrop组和用户

[root@fsy-Centos6 postfix-2.10.10]# groupadd -g 2525 postfix

[root@fsy-Centos6 postfix-2.10.10]# useradd -g postfix -u 2525 -s /sbin/nologin -M postfix

[root@fsy-Centos6 postfix-2.10.10]# groupadd -g 2526 postdrop

[root@fsy-Centos6 postfix-2.10.10]# useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop

3.安装所需软件包

[root@fsy-Centos6 postfix-2.10.10]# yum install cyrus-sasl-devel

[root@fsy-Centos6 postfix-2.10.10]# yum install db*-devel

[root@fsy-Centos6 postfix-2.10.10]# yum -y install openssl-devel

4.安装

[root@fsy-Centos6 postfix-2.10.10]# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ' 'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2  -lssl -lcrypto'

释义:

CCARGS:指明头文件位置,CCARGS=-DHAS_MYSQL 指明启用mysql的连接能

-I/usr/include/mysql 指明mysql的头文件位置

-DUSE_SASL_AUTH启用SASL认证

-I/usr/include/sasl指明SASL头文件位置

-DUSE_TLS使SMTP支持smtps协议

AUXLIBS:指明库文件位置,-L/usr/lib/mysql 指明MySQL库文件位置

-lmysqlclient指明MySQL客户端库文件

-lz压缩库文件

-lm模块库文件

-lsslssl的库文件

[root@fsy-Centos6 postfix-2.10.10]# make

[root@fsy-Centos6 postfix-2.10.10]# make install

按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值,省略的表示采用默认值)

 

install_root: [/] /

tempdir: [/root/postfix-2.10.10] /tmp/postfix

config_directory: [] /etc/postfix

command_directory: [] /usr/sbin

daemon_directory: [] /usr/libexec/postfix

data_directory: [] /var/lib/postfix

html_directory: [] no

mail_owner: [] postfix

mailq_path: [] /usr/bin/mailq

manpage_directory: [] /usr/local/man

newaliases_path: [] /usr/bin/newaliases

queue_directory: [] /var/spool/postfix

readme_directory: [] no

sendmail_path: [] /usr/sbin/sendmail

setgid_group: [] postdrop

 

在此过程中可能会遇到如下问题:

libmysqlclient.so.18: cannot open shared object file: No such file or directory

1).先确认/usr/local/mysql/lib/下是否有libmysqlclient.so.18这个文件.

ll /usr/local/mysql/lib/|grep libmysqlclient.so.18

2).修改ld.so.conf文件

echo "/usr/local/mysql/lib" >>/etc/ld.so.conf

然后执行ldconfig使其生效

5.现在就可以启动服务了

[root@fsy-Centos6 ~]# postfix start

完成!