本节介绍 sendmail 对名称服务强加的要求。
必须在名称服务中设置主机表或映射,才能支持三种类型的 gethostbyname() 查询。
mailhost-部分名称服务配置会自动满足此要求。
完整主机名(例如,smith.admin.acme.com)-许多名称服务配置都满足此要求。
短主机名(例如 smith)-sendmail 必须连接至邮件主机,才能转发外部邮件。要确定邮件地址是否位于当前邮件域内,可使用完整主机名调用 gethostbyname()。如果找到该项,则将地址视为内部地址。
NIS、NIS+ 和 DNS 都支持 gethostbyname() 以短主机名作为参数,因此会自动满足这一要求。
还需要遵循有关主机名服务的其他两条规则,才能在名称服务内建立有效的 sendmail 服务。
gethostbyname() 在使用完整主机名参数和短主机名参数时应产生一致的结果。例如,如果从邮件域 admin.acme.com 中调用 gethostbyname(smith.admin.acme.com) 和 gethostbyname(smith),则这两个函数应返回相同结果。
对于通用邮件域下的所有名称服务域,使用短主机名的 gethostbyname() 应产生相同结果。例如,如果给定邮件域 smith.admin.acme.com,则当调用来自 ebb.admin.acme.com 域或 esg.admin.acme.com 域时,gethostbyname(smith) 应返回相同结果。邮件域名通常比名称服务域名短,这样此要求针对各种名称服务可具有特殊含义。
有关 gethostbyname() 函数的更多信息,请参阅 gethostbyname(3NSL) 手册页。