SendMail 是否缓存 DNS 记录?如果是,如何清除它以及它使用什么逻辑?

SendMail 是否缓存 DNS 记录?如果是,如何清除它以及它使用什么逻辑?

CentOS 5.x | SendMail

我有一台配置为智能托管到 FQDN 的 SendMail 服务器(为了便于讨论,我们将其称为 group.example.com)。group.example.com 最初有两个与之关联的 A 记录:1.1.1.1 和 2.2.2.2。在这种情况下,它通常会将电子邮件均匀地发送到两个服务器。

我最近向同一个 FQDN 添加了第三个 A 记录:3.3.3.3。奇怪的是,我没有看到任何流量流向 3.3.3.3

我的问题是:

1) SendMail 是否缓存 DNS 记录?如果是,如何清除?

2)sendmail(如果只是 CentOS,则是本机 dns 解析器)如何评估要使用 3 个 A 记录中的哪一个?

答案1

我没有权威的答案,但一般来说,如果某个东西正在缓存 DNS 记录,它可能会尊重TTL与记录相关的内容。本机解析器通常会按照从名称服务器返回的顺序返回 DNS 记录,并且大多数名称服务器会为单个资源轮换多个条目。例如:

$ host group.example.com
group.example.com has address 192.168.1.1
group.example.com has address 192.168.1.2
group.example.com has address 192.168.1.3

$ host group.example.com
group.example.com has address 192.168.1.3
group.example.com has address 192.168.1.1
group.example.com has address 192.168.1.2

应用程序通常会使用第一个结果(尽管这不是给定的;某些应用程序可能会从列表中选择一个随机结果)。

答案2

除了 larsks 提到的 TTL 之外,SMTP 连接缓存也加剧了这种现象。我从 bat 书中复制了以下内容:

当 sendmail 缓存连接时,它会像往常一样连接到主机并传输邮件消息。但它不会关闭连接,而是保持连接打开,以便可以传输其他邮件消息,而无需每次打开和关闭连接的额外开销。V8 sendmail 的 ConnectionCacheSize 选项指定应维护与其他主机的打开连接,并指定这些连接的最大数量。

相关内容