contents
下一主题: 路径数据库 上一级: 启动和运行 smail 前一主题: 消息路由和投递

路由消息

当收到消息时,smail 首先检查目的地是本地主机还是远程站点。如果目标主机地址是 config 文件中配置的本地主机名之一,则消息将交给 director 模块处理。否则,smail 将目标地址交给多个路由器驱动程序,以找出要将消息转发到哪个主机。这些路由器可以在 routers 文件中描述;如果此文件不存在,则使用一组默认路由器。

目标主机被依次传递给所有路由器,并选择找到最具体路由的路由器。考虑一个发送给 joe@foo.bar.com 的消息。那么,一个路由器可能知道 bar.com 域中所有主机的默认路由,而另一个路由器则拥有 foo.bar.com 本身的信息。由于后者更具体,因此选择后者而不是前者。如果有两个路由器提供“最佳匹配”,则选择 routers 文件中首先出现的路由器。

此路由器现在指定要使用的传输方式,例如 UUCP,并生成一个新的目标地址。新地址连同要将消息转发到的主机一起传递给传输层。在上面的示例中,smail 可能会发现 foo.bar.com 应该通过 UUCP 使用路径 ernie!bert 到达。然后,它将生成一个新的目标 bert!foo.bar.com!user,并让 UUCP 传输层使用它作为要传递给 ernie 的信封地址。

当使用默认设置时,可以使用以下路由器

这些默认设置适用于许多简单的设置,但如果路由需求变得稍微复杂,则会失败。如果您遇到以下讨论的任何问题,则必须安装您自己的 routers 文件以覆盖默认设置。附录-gif 中给出了一个您可以开始使用的示例 routers 文件。一些发行版还附带一组配置 files,这些文件经过定制以解决这些难题。

当您的主机处于同时具有拨号 IP 和 UUCP 链接的双重环境中时,可能会出现最糟糕的问题。然后,您的 hosts 文件中将有一些主机名,您只是偶尔通过 SLIP 链接与它们通信,因此 smail 将尝试通过 SMTP 传递发送给这些主机的任何邮件。这通常不是您想要的,因为即使 SLIP 链接定期激活,SMTP 也比通过 UUCP 发送邮件慢得多。使用默认设置,无法避免 smail。

您可以通过让 smail 在查询解析器之前检查 paths 文件,并将您想要强制使用 UUCP 传递的所有主机放入 paths 文件中来避免此问题。如果您永远不想通过 SMTP 发送任何消息,您也可以完全注释掉基于解析器的路由器。

另一个问题是,默认设置不提供真正的 Internet 邮件路由,因为基于解析器的路由器不评估 MX 记录。要启用对 Internet 邮件路由的完整支持,请注释掉此路由器,并取消注释掉使用 BIND 的路由器。但是,某些发行版中包含的 smail 二进制文件没有编译 BIND 支持。如果您启用了 BIND,但在 paniclog 文件中收到消息“router inet_hosts: driver bind not found”,那么您必须获取源代码并重新编译 smail(请参阅上面的 section-gif)。

最后,通常不建议使用 uuname 驱动程序。首先,当您没有安装 UUCP 时,它会生成配置错误,因为找不到 uuname 命令。其次,当您的 UUCP Systems 文件中列出的站点多于您实际与之建立邮件链接的站点时,也会有问题。这些站点可能是您仅与之交换新闻的站点,或者您偶尔通过匿名 UUCP 从中下载文件的站点,但在其他方面没有流量往来。

为了解决第一个问题,您可以为 uuname 替换一个 shell 脚本,该脚本执行简单的 exit 0。然而,更通用的解决方案是编辑 routers 文件并完全删除此驱动程序。




contents
下一主题: 路径数据库 上一级: 启动和运行 smail 前一主题: 消息路由和投递

Andrew Anderson
1996 年 3 月 7 日星期四 23:22:06 EST