CIDR_TABLE(5) CIDR_TABLE(5)
名称
cidr_table - Postfix CIDR 表格式说明
概述
postmap -q "字符串" cidr:/etc/postfix/文件名
postmap -q - cidr:/etc/postfix/文件名 <输入文件
描述
Postfix 邮件系统支持使用可选的查找表。这些表通常采用 dbm 或 db 格式存储。
此外,查找表也可以使用 CIDR (无类域间路由) 格式。采用此格式时,系统会将每个输入
与一系列模式进行比对。当找到匹配项时,返回相应的结果并终止搜索。
要查询您的 Postfix 系统支持的查找表类型,请使用 "postconf -m" 命令。
测试查找表时,请按照上文"概述"部分所述使用 "postmap -q" 命令。
表格式
Postfix CIDR 表的基本格式如下:
模式 结果
当搜索字符串匹配指定的 模式 时,使用对应的 结果 值。模式 必须采用
网络/前缀 或 网络_地址 格式(详见下文"地址模式语法"部分)。
!模式 结果
当搜索字符串不匹配指定的 模式 时,使用对应的 结果 值。模式 必须采用
网络/前缀 或 网络_地址 格式(详见下文"地址模式语法"部分)。
此功能在 Postfix 3.2 及更高版本中可用。
if 模式
endif
当搜索字符串匹配指定的 模式 时,将该字符串与 if 和 endif 之间的
模式进行匹配。模式 必须采用 网络/前缀 或 网络_地址 格式(详见
下文"地址模式语法"部分)。if..endif 结构支持嵌套。
注意:if..endif 之间的文本不应包含前导空格。
此功能在 Postfix 3.2 及更高版本中可用。
if !模式
endif
当搜索字符串不匹配指定的 模式 时,将该字符串与 if 和 endif 之间的
模式进行匹配。模式 必须采用 网络/前缀 或 网络_地址 格式(详见
下文"地址模式语法"部分)。if..endif 结构支持嵌套。
注意:if..endif 之间的文本不应包含前导空格。
此功能在 Postfix 3.2 及更高版本中可用。
空行和注释:
空行和仅包含空白字符的行会被忽略,以"#"开头的行也会被忽略。
多行文本:
逻辑行以非空白字符开头。以空白字符开头的行视为上一行的延续。
表搜索顺序
系统会按照表中指定的顺序应用模式,直到找到与搜索字符串匹配的模式为止。
地址模式语法
Postfix CIDR 表采用基于模式的匹配机制。模式可以是需要精确匹配的 网络_地址,
也可以是 网络_地址/前缀长度 格式,其中 前缀长度 部分指定了需要匹配的
网络_地址 前缀长度(网络_地址 部分的其余位必须为零)。
IPv4 网络地址是由四个十进制八位组组成的序列,用"."分隔;IPv6 网络地址是由
三到八个十六进制八位组对组成的序列,用":"或"::"分隔,其中"::"是连续一个或多个
全零八位组对的简写。模式 0.0.0.0/0 匹配所有 IPv4 地址,::/0 匹配所有 IPv6 地址。
IPv6 支持从 Postfix 2.2 版本开始提供。
在进行比较前,查找键和表条目会从字符串转换为二进制格式。因此,IPv6 模式的匹配
不受前导零影响(IPv4 地址八位组中的前导零表示八进制记数法)。
注意:地址信息可以用"[]"括起来,但这不是必须的。
内联规范
从 Postfix 3.7 开始,表内容可以直接在表名中指定。基本语法如下:
main.cf:
参数 = .. cidr:{ { 规则1 }, { 规则2 } .. } ..
master.cf:
.. -o { 参数 = .. cidr:{ { 规则1 }, { 规则2 } .. } .. } ..
Postfix 会递归展开上述参数值中的所有 $参数名 实例,忽略"{"后和"}"前的空白字符,
并将每个 规则 作为一行文本写入内存文件:
内存文件:
规则1
规则2
..
Postfix 会像处理 /etc/postfix 中的文件一样解析这些内容。
注意:如果规则中包含"$"字符,请使用"$$"表示,以避免 Postfix 在评估参数值时
尝试进行 $名称 展开。
SMTPD 访问表示例
/etc/postfix/main.cf:
smtpd_client_restrictions = ... cidr:/etc/postfix/client.cidr ...
/etc/postfix/client.cidr:
# 规则顺序很重要。请将更具体的允许列表条目
# 放在更通用的拒绝列表条目之前。
192.168.1.1 允许
192.168.0.0/16 拒绝
2001:db8::1 允许
2001:db8::/32 拒绝
参见
postmap(1), Postfix 查找表管理器
regexp_table(5), 正则表达式表格式
pcre_table(5), PCRE 表格式
自述文件
DATABASE_README, Postfix 查找表概述
历史
CIDR 表支持从 Postfix 2.1 版本开始引入。
作者
CIDR 表查找代码最初由以下人员编写:
Jozsef Kadlecsik
KFKI 粒子与核物理研究所
邮政信箱 49
1525 布达佩斯, 匈牙利
由以下人员采纳并改编:
Wietse Venema
IBM T.J. Watson 研究中心
邮政信箱 704
约克镇高地, NY 10598, 美国
Wietse Venema
Google 公司
第8大道 111号
纽约, NY 10011, 美国
CIDR_TABLE(5)