本节介绍应用于 sendmail 和名称服务的域名。此外,本节还介绍了有效使用名称服务的规则以及 sendmail 与名称服务的特定交互。有关详细信息,请参阅以下主题。
如果要查找相关的任务信息,请参阅第 13 章,邮件服务(任务)中的如何使用 DNS 和sendmail或管理邮件别名文件(任务列表)。
标准的 sendmail.cf 文件使用邮件域来确定是直接传送还是通过邮件主机传送邮件。域内邮件通过直接的 SMTP 连接传送,而域间邮件则会转发至邮件主机。
在安全网络中,仅会对少数选定的主机进行授权,允许其生成向外部目标发送的包。即使主机具有邮件域外部的远程主机的 IP 地址,也不能保证可以建立 SMTP 连接。标准的 sendmail.cf 假定以下情况成立。
未授权当前主机直接向邮件域外部的主机发送包。
邮件主机能够将邮件转发给授权主机,该主机可以直接将包传输给外部主机。实际上,邮件主机可以是授权主机。
通过这些假设,邮件主机将负责传送或转发域间邮件。
sendmail 可对名称服务强加各种要求。为增强您对这些要求的理解,本节将首先介绍邮件域与名称服务域之间的关系。然后,本节会介绍各种要求。请参阅以下主题。
邮件域名必须是名称服务域名的后缀。例如,如果名称服务的域名为 A.B.C.D,则邮件域名可能是以下各项之一。
A.B.C.D
B.C.D
C.D
D
最初建立时,邮件域名通常与名称服务域名相同。随着网络规模的变大,名称服务域可以划分为几个较小的部分,以使名称服务更易于管理。但是,为提供一致的别名,邮件域通常保持不划分状态。
本节介绍 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) 手册页。
以下列表介绍了 sendmail 与 NIS 的交互并提供了一些指导。
邮件域名-如果要将 NIS 设置为主名称服务,则 sendmail 会自动去除 NIS 域名的第一个组成部分并使用剩下的部分作为邮件域名。例如,ebs.admin.acme.com 将成为 admin.acme.com。
邮件主机名-必须在 NIS 主机映射中具有一个 mailhost 项。
完整主机名-标准的 NIS 设置不能“识别”完整主机名。此设置不会尝试使 NIS 识别完整主机名,而是通过编辑 sendmail.cf 文件并使用 %y 替换出现的所有 %l,从sendmail 端取消此要求。此更改将关闭 sendmail 的域间邮件检测。如果目标主机可以解析为一个 IP 地址,则会尝试直接进行 SMTP 传送。请确保 NIS 主机映射不包含在当前邮件域之外的任何主机项。否则,需要进一步自定义 sendmail.cf 文件。
匹配完整主机名和短主机名-请遵循前面有关如何为完整主机名禁用 gethostbyname() 的说明。
多个 NIS 域在一个邮件域中-一个通用邮件域下的所有 NIS 主机映射应具有同一组主机项。例如,ebs.admin.acme.com 域中的主机映射应该与 esg.admin.acme.com 中的主机映射相同。否则,一个地址可能可在一个 NIS 域中正常使用,但是无法用于其他 NIS 域。
有关任务信息,请参阅第 13 章,邮件服务(任务)中的管理邮件别名文件(任务列表)。
以下列表介绍了 sendmail 与 NIS 和 DNS 的交互并提供了一些指导。
邮件域名-如果要将 NIS 设置为主名称服务,则 sendmail 会自动去除 NIS 域名的第一个组成部分并使用剩下的部分作为邮件域名。例如,ebs.admin.acme.com 将成为 admin.acme.com。
邮件主机名-启用 DNS 转发功能时,对 NIS 无法解析的查询将转发至 DNS,因此在 NIS 主机映射中无需 mailhost 项。
完整主机名-尽管 NIS 不能“识别”完整主机名,但 DNS 可以识别。如果遵循设置 NIS 和 DNS 的常规过程,则会满足此要求。
匹配完整主机名和短主机名-对于 NIS 主机表中的每个主机项,必须在 DNS 中具有对应的主机项。
多个 NIS 域在一个邮件域中-一个通用邮件域下的所有 NIS 主机映射应具有同一组主机项。例如,ebs.admin.acme.com 域中的主机映射应该与 esg.admin.acme.com 域中的主机映射相同。否则,一个地址可能可在一个 NIS 域中正常使用,但是无法用于其他 NIS 域。
有关任务信息,请参阅第 13 章,邮件服务(任务)中的如何使用 DNS 和sendmail和管理邮件别名文件(任务列表)。
以下列表介绍了 sendmail 与 NIS+ 的交互并提供了一些指导。
邮件域名-如果要将 NIS+ 设置为主名称服务,则 sendmail 可检查 NIS+ sendmailvars 表中的邮件域。此 NIS+表包含一个关键字列和一个值列。要设置邮件域,必须向该表中添加一项。此项应将关键字列设置为字符串 maildomain,将值列设置为邮件域名。例如 admin.acme.com。尽管 NIS+ 允许 sendmailvars 表中包含任何字符串,但要使邮件系统正常工作,仍需应用后缀规则。可以使用 nistbladm 将 maildomain 项添加到 sendmailvars 表中。请注意,在以下示例中,邮件域是 NIS+ 域的后缀。
nistbladm -A key="maildomain" value=<mail domain> sendmailvars.org_dir.<NIS+ domain> |
Mailhost 主机名-必须在 NIS+ 主机表中具有一个 mailhost 项。
完整主机名-NIS+ 可以“识别”完整主机名。遵循常规的 NIS+ 设置过程即可满足此要求。
匹配完整主机名和短主机名-要满足此要求,可以复制主机表中的项。或者,也可以将用户名称服务域中的所有主机项都输入到邮件域级别的主主机表中。
多个 NIS 域在一个邮件域中-要满足此要求,可复制所有主机表中的项。或者,也可以将用户名称服务域中的所有主机项都输入到邮件域级别的主主机表中。比较有效的方法是,将多个逻辑或物理主机表合并为一个主机表。因此,在共享一个通用邮件域的多个名称服务域中,不能重用相同的主机名。
有关任务信息,请参阅第 13 章,邮件服务(任务)中的管理邮件别名文件(任务列表)。
以下列表介绍了 sendmail 与 NIS+ 和 DNS 的交互并提供了一些指导。
邮件域名-如果要将 NIS+ 设置为主名称服务,则 sendmail 可检查 NIS+ sendmailvars 表中的邮件域。此 NIS+ 表包含一个关键字列和一个值列。要设置邮件域,必须向该表中添加一项。此项应将关键字列设置为字符串 maildomain,将值列设置为邮件域名。例如 admin.acme.com。尽管 NIS+ 允许 sendmailvars 表中包含任何字符串,但要使邮件系统正常工作,仍需应用后缀规则。可以使用 nistbladm 将 maildomain 项添加到 sendmailvars 表中。请注意,在以下示例中,邮件域是 NIS+ 域的后缀。
nistbladm -A key="maildomain" value=<mail domain> sendmailvars.org_dir.<NIS+ domain> |
Mailhost 主机名-如果网络同时使用 NIS+ 和 DNS 作为主机数据库源,则可将 mailhost 项放入 NIS+ 或 DNS 主机表中。请确保用户在 /etc/nsswitch.conf 文件中同时包括 NIS+ 和 DNS 作为主机数据库源。
完整主机名-NIS+ 和 DNS 都可以“识别”完整主机名。遵循常规 NIS+ 和 DNS 设置过程即可满足此要求。
匹配完整主机名和短主机名-对于 NIS+ 主机表中的每个主机项,必须在 DNS 中具有对应的主机项。
多个 NIS 域在一个邮件域中-要满足此要求,可复制所有主机表中的项。或者,也可以将用户名称服务域中的所有主机项都输入到邮件域级别的主主机表中。
有关任务信息,请参阅第 13 章,邮件服务(任务)中的管理邮件别名文件(任务列表)和如何使用 DNS 和sendmail。