外部数据库
——— 《postfix权威指南》学习笔记 lxq007
相较于平常的DB索引文件,外部数据库会降低Postfix的效率。一般而言,如果不是非得用数据库不可,最好还是使用Postfix的标准查询表。
postconf的"-m"选项,可查看Postfix支持哪些类型的查询表# postconf -m btree cidr environ hash mysql nis proxy regexp sdbm static tcp unix
|
一、MYSQL
MYSQL是一套"关系数据库管理系统"(Relational Database Management System,RDBMS),让用户能以“结构化查询语言”(Structured Query Language,SQL)来查询、管理数据。
MYSQL配置
任何可使用Postfix查询表的参数,都可以用MYsql数据库来达成相同效果,前提是你必须知道哪些字段含有你所需的信息。Mysql map的指定方式,如下:
virtual_mailbox_maps = mysql:/etc/postfix/-mailbox-maps.cf
Mysql 参数
举例,MYsql配置文件一般如下:
# nano /etc/postfix/-mailbox-maps.cf
user = maildatabse
password = mail12345
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM view_users WHERE email='%s'
图:SQL语句的结构 显示了各个MySQL参数与SQL语句结构的对应关系
hosts
Mysql所在的主机名称或IP地址。如果MYSQL与Postfix位于同一台机器,你可以使用Unix指
出Unix-domain socket的完整路径。如:
hosts = unix:/tmp/mysql.sock, db.example.com, 192.168.1.70
除非你有多台备用的mysql server,否则列出一个位置就够了。Postfix会依照你列出的顺序
逐一查询,直到查询成功。
user
用于登录 Mysql server的账户名称。此帐户必须是有效的Mysql server账户(不是mysql所在主机
的系统帐户),而且要有足够的权限来查询所需数据。
password
用于登录Mysql server的密码
dbname
要被查询的数据库的名称。
table
要被查询的数据表的名称。
select field
含有“对应值” 的字段的名称。
where field
含有“索引值” 的字段的名称。
additional_conditions
额外的筛选条件。
架设虚拟网域
代管许多虚拟网域的大型服务器系统,经常将网域名称、账户数据等信息记录在Mysql数据库。
为了支持虚拟网域,我们建了一个customer数据库,并将所有虚拟地址都记录在此数据库中的E-mail_address数据表中。构成此表的字段如下:
domain 虚拟网域名称。
mail address 用户的公关邮件地址。从外界寄到此地址的邮件,会被投递到虚拟邮箱。
mailbox 虚拟邮箱的相对路径(virtual_mailbox_base所指的路径)与文件名。
如果想使用maildir格式的邮箱,请在文件名末端加一个“/”符号。
二、LDAP
LDAP是用于访问目录(directory)信息的协议。LDAP目录是一种层次结构式的树状数据结构,通常用于存储人事信息。你必须了解LDAP的运作原理以及你的LDAP目录的组织结构,才能了解如何在Postfix使用LDAP。
具体配置请查阅《postfix权威指南》或在GOOGLE上找吧。
阅读(1325) | 评论(0) | 转发(0) |