使用postconf命令可以查询出你当前的postfix环境所支持的所有查询表类型:
postconf -m
在我的机器上执行命令,返回告知我支持一下查询表类型:
btree
cidr
environ
hash
ldap
mysql
nis
pcre
proxy
regexp
static
unix
postfix的默认查询表类型为参数
default_database_type指定,该参数默认为
hash,即postfix的默认查询表类型为hash。
根据版本不同该参数有可能不存在main.cf文件中,但参数确实存在,因为有默认值嘛。
若使用postmap建立查询表数据库时未指定类型,则会使用default_database_type指定的类型,当你将查询表赋值给某个参数时必须指定类型:
canonical_maps = hash:/etc/aliases
canonical_maps可改写邮件地址
若你的hash查询表内容为:
wagaga ouxmm
发信时收件人为wagaga@inshir.com,则实际收件人为ouxmm@inshir.com。
使用postmap重建查询表db文件:
postmap /etc/aliases
postmap还可以用于测试查询表,如hash查询表db文件/etc/testlookup.db内容为:
wagaga ouxmm
haha root
执行命令
postmap -q wagaga /etc/testlookup.db
返回ouxmm
查询haha会返回root。
main.cf里的alias_maps参数用来指示postfix的别名源文件位置(目的是知道索引文件位置,因为索引文件默认生成位置与源文件所在位置相同)。
alias_database用于只是newalias命令建立索引时的源文件位置。
newalias命令的出现是为了兼容sendmail,因为sendmail中newalias命令是不带任何参数的,所以设计了一个参数用于指示源文件位置,newalias在执行时会找到alias_database参数所指定的文件进行索引。
postalias命令执行时必须带上想要索引的源文件路径,所以不需要在main.cf中额外增加一个参数。
newalias是为了兼容sendmail而出现的,不建议使用,postalias就好。