在映射表中使用大量条目的站点应考虑将其映射表组织为具有若干配备通用通配符的条目,以便可以调用通用数据库进行特定查找。 针对特定查找,使用若干映射表条目调用通用数据库比直接在映射表中使用大量的条目效率要高得多。
一个特例是某些站点希望对谁可以发送和接收 Internet 电子邮件进行基于单个用户的控制。使用诸如 ORIG_SEND_ACCESS 的访问映射表可以很方便地实现此类控制。对于这种用法,通过将大量特定信息(例如特定地址)存储在通用数据库中,同时结构化映射表条目以对通用数据库进行适当调用,可以显著提高效率和性能。
例如,请考虑下面所示的 ORIG_SEND_ACCESS 映射表。
ORIG_SEND_ACCESS ! Users allowed to send to Internet ! *|adam@siroe.com|tcp_local|* $Y *|betty@siroe.com|tcp_local|* $Y ! ...etc... ! ! Users not allowed to send to Internet ! *|norman@siroe.com|tcp_local|* $NInternet$ access$ not$ permitted *|opal@siroe.com|tcp_local|* $NInternet$ access$ not$ permitted ! ...etc... ! ! Users allowed to receive from the Internet ! tcp_*|*|*|adam@siroe.com $Y tcp_*|*|*|betty@siroe.com $Y ! ...etc... ! ! Users not allowed to receive from the Internet ! tcp_*|*|*|norman@siroe.com $NInternet$ e-mail$ not$ accepted tcp_*|*|*|opal@siroe.com $NInternet$ e-mail$ not$ accepted ! ...etc... |
与通过每个用户单独输入表中的此类映射表相比,下面示例中显示了一种更有效的设置(如果包含成百上千个用户条目,则更为有效),它显示了常规数据库的示例源文本文件和示例 ORIG_SEND_ACCESS 映射表。要将此源文件编译成数据库格式,请运行 imsimta crdb 命令:
% imsimta crdb input-file-spec output-database-spec
有关 imsimta crdb 实用程序的详细信息,请参阅 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“imsimta crdb”。
DATABASE ENTRIES SEND|adam@domain.com $Y SEND|betty@domain.com $Y ! ...etc... SEND|norman@domain.com $NInternet$ access$ not$ permitted SEND|opal@domain.com $NInternet$ access$ not$ permitted ! ...etc... RECV|adam@domain.com $Y RECV|betty@domain.com $Y ! ...etc... RECV|norman@domain.com $NInternet$ e-mail$ not$ accepted RECV|opal@domain.com $NInternet$ e-mail$ not$ accepted MAPPING TABLE ORIG_SEND_ACCESS ! Check if may send to Internet ! *|*|*|tcp_local $C${SEND|$1}$E ! ! Check if may receive from Internet ! tcp_*|*|*|* $C${RECV|$3}$E |
此示例中,在通用数据库中左侧任意字符串 SEND| 和 RECV| 的使用(以及由此在映射表生成的通用数据库探测中)提供了一种区分所生成的两类探测的方法。如图所示,用 $C 和 $E 标志环绕通用数据库探测在映射表调用通用数据库中很典型。
以上示例显示了根据通用数据库条目检查简单映射表探测的情况。具有复杂得多的探测的映射表也可以从使用通用数据库中受益。