首页 > 代码库 > <postfix邮件服务下mysql的升级>

<postfix邮件服务下mysql的升级>

本片服务的环境的红帽的企业版6.5 的,6.3的测试可能会略有不一样,不过方法大致是一样的。

 

当前系统的postfix的版本为 postfix-2.6.6-2.2.el6_1.x86_64

 

我们要向使用最新的就要去网上dow下最新的。获取新的postfix的包 postfix-2.11.0.tar.gz

解压 后会生成一个目录,切换到此目录下。  cd postfix-2.11.0

 

我们之前的文章提到过要是有.spec的文件可以打装成安装包,直接安装就很方便了 find -name ‘*.spec‘,发现没有.spec这样的文件。

我们知道很多源码包的编译安装都是从INSTALL这个文件中获取帮助。

 

vim INSTALL //可以查看到安装升级的帮助,下面是文件里的关键行模板。

$ make -f Makefile.init makefiles

找到关键的行,生成编译文件,进行编译 make -f Makefile.init makefiles 缺少库文件,安装库文件。

 

6.3的版本mysql-devel这个包包。要是6.5的话,直接装 yum install db*-devel -y这样就ok了

 

然后重新编译 make -f Makefile.init makefiles,编译完成后会发现mysql这个插件消失了,显然这不是我们想要的结果。

可以查看到到mail服务所支持的服务和插件

postconf -a

postconf -A

postconf -m

make tidy //编译完成或失败都会产生很多临时文件,会造成我们日后其他服务的障碍,清除编译生成的临时文件

 

cd README_FILES/  //我们也知道很多源码包都一样,除了INSTALL可以获取帮助,下一个就是 README_FILES目录,里面写了很多关于mail其他插件的升级方案。

 

less MYSQL_README //查看mail下mysql的编译帮助

找到下面的行:他会提示说,如果你是其他linux版本使用上面这个,要是 Solaris就使用下面这个,当然下面的只是模板。

/*

In order to build Postfix with mysql map support, you will need to add - DHAS_MYSQL and -I for the directory containing the mysql headers, and the mysqlclient library (and libm) to AUXLIBS, for example:

    make -f Makefile.init makefiles \         ‘CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include‘ \         ‘AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm‘

On Solaris, use this instead:

    make -f Makefile.init makefiles \         ‘CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include‘ \         ‘AUXLIBS=-L/usr/local/mysql/lib -R/usr/local/mysql/lib \             -lmysqlclient -lz -lm‘

*/

 

 

下面的版本是6.5的,6.3的略有不一样,不过方法一样

rpm -ql mysql-devel  //查看mysql的编译/库 路径,为什么需要下面的路径,上面的编译会调用gcc和库文件,很多软件都是c写的,它需要找到c和库的头文件。.h开头的都是c文件。

这个是6.5 的,上面mysql编译,把这两个路径粘贴过去就ok了,

/usr/include/mysql/sslopt-case.h

/usr/lib64/mysql/libmysqlclient.so

6.3

/usr/include/mysql/typelib.h
/usr/lib/mysql/libmysqlclient.so
的是下面的样子:

 

mkae tidy  //清除上次上次编译失败的文件,

make -f Makefile.init makefiles

CCARGS表示宏。用于替换makefile中的默认值 ‘CCARGS=-DHAS_MYSQL -I/usr/include/mysql‘ //-I路径   表示在指定路径搜索头文件

-lz        表示搜索libz.so或者libz.a,这里用了缩写的形式,只写了一个z,同理lmysqlclient就表示libmysqlclient.so/libmysqlclient.a

‘AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lm‘

 make upgrade //编译完要升级

  postconf -m  //这次可以看到mysql插件了

下面的属于测试,发封邮件测试下ok不?

postconf -n //可以查看到mail的一些参数

postconf -e inet_interfaces=all //所有人可以使用mail服务 postfix reload //重新载入

postfix stop postfix start netstat -antple