本片服务的环境的红帽的企业版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