Scott Cotton 和 Joshua Marcus写了一段可以在postfix中添加mysql映射类型的代码,从而我们可以将postfix查询的别名数据库等数据存储在mysql数据库中,让postfix进行mysql查询来得到结果。这样做将有助于提供postfix的运行效率, 有其对需要不断对映射数据的站点特别有用。
1.为postfix添加识别mysql数据库映射的功能
a. 由于这段代码使用了mysql客户端库,所以我们必须安装mysql的开包。
可以到www.redhat.com等linux相关站点下载mysql开发包,也可以从某些linux的资源光盘中取得mysql的开发包,如MySQL-client-3.22.30-1.i386.rpm。
b. 安装该开发包:
rpm -ivh MySQL-client-3.22.30-1.i386.rpm
c. 下载postfix的源代码包,根据本章“3.1源代码包的安装”的提示进行
安装,但是注意在执行make命令之前先执行以下命令:
make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I /usr/include/mysql'
'AUXLIBS=/usr/lib/mysql/libmysqlclient.a -lm'
5. 配置postfix使用mysql数据库映射
我们以alias_maps进行说明。在main.cf中指定:
alias_maps = mysql:/etc/postfix/mysql-aliases.cf
6. 编辑mysql-aliases.cf
#首先指定登录到mysql服务器的用户名和密码
user = your_user_name
password = your_password
#连接的数据库名称
dbname = your_database_name
#查询的表名
table = mytable
#添加表的字段名称
#forward_addr为转发地址
#alias为别名数据
select_field=forward_addr
where_field=alias
#添加附加的查询条件
additional_conditions=and status='paid'
#指定要连接的MySQL服务器
hosts=your.mysql.server
这样,当发生一个查询的时候,postfix是以这样的SQL语句进行查询的:
select forward_addr from mytable where alias='$lookup' and status='paid'
以上只是一个例子。在实际的运用中您可以指定多个mysql数据库,使用多个数据表格。
【编辑推荐】