CIDR_TABLE(5)                                                    CIDR_TABLE(5)

名称
       cidr_table - Postfix CIDR 表格式说明

概述
       postmap -q "字符串" cidr:/etc/postfix/文件名

       postmap -q - cidr:/etc/postfix/文件名 <输入文件

描述
       Postfix 邮件系统支持使用可选的查找表。这些表通常采用 dbmdb 格式存储。
       此外,查找表也可以使用 CIDR (无类域间路由) 格式。采用此格式时,系统会将每个输入
       与一系列模式进行比对。当找到匹配项时,返回相应的结果并终止搜索。

       要查询您的 Postfix 系统支持的查找表类型,请使用 "postconf -m" 命令。

       测试查找表时,请按照上文"概述"部分所述使用 "postmap -q" 命令。

表格式
       Postfix CIDR 表的基本格式如下:

       模式    结果
              当搜索字符串匹配指定的 模式 时,使用对应的 结果 值。模式 必须采用
              网络/前缀网络_地址 格式(详见下文"地址模式语法"部分)。

       !模式    结果
              当搜索字符串不匹配指定的 模式 时,使用对应的 结果 值。模式 必须采用
              网络/前缀网络_地址 格式(详见下文"地址模式语法"部分)。

              此功能在 Postfix 3.2 及更高版本中可用。

       if 模式

       endif
              当搜索字符串匹配指定的 模式 时,将该字符串与 ifendif 之间的
              模式进行匹配。模式 必须采用 网络/前缀网络_地址 格式(详见
              下文"地址模式语法"部分)。if..endif 结构支持嵌套。

              注意:if..endif 之间的文本不应包含前导空格。

              此功能在 Postfix 3.2 及更高版本中可用。

       if !模式

       endif
              当搜索字符串不匹配指定的 模式 时,将该字符串与 ifendif 之间的
              模式进行匹配。模式 必须采用 网络/前缀网络_地址 格式(详见
              下文"地址模式语法"部分)。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)