是sendmailcachingDNS或通过不同的方法比host / dig / nslookup吗?

我们有一台运行sendmaillinux服务器,它通过我们的主邮件服务器来传递邮件,但是自从上周DNS服务器发生变化以来,就连接到我们的邮件服务器。 经过进一步调查, /var/log/maillog显示如下所示的行, 邮件服务器的IP地址不正确

 Apr 4 15:37:32 yip sendmail[20583]: p34JVgLE020540: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:05:50, xdelay=00:02:00, mailer=esmtp, pri=258071, relay=mailserver.domain.tld. [xxx.xxx.xxx.xxx], dsn=4.0.0, stat=Deferred: Connection timed out with mailserver.domain.tld. 

现在,我们上周通过编辑/etc/resolv.conf更新了linux服务器的DNS服务器。 在linux服务器上运行dig mailserver.domain.tldhost mailserver.domain.tldnslookup mailserver.domain.tld ,都会导致返回正确的IP地址。 sendmail在哪里可以获取/caching不正确的IP地址,我该如何解决这个问题?

  • 重新启动sendmail
  • 重新启动nscd (如果它正在系统中使用)。

另外请确保您有正确的MXlogging条目 。 Sendmail依靠MX查找。

尝试dig mx domain.tld ,看看是否导致正确的主机。 如果没有,您可以强制sendmail使用通常在/ etc / mail /中find的mailertable文件来发送指定给特定域的邮件。

典型的mailertable条目如下所示:

xxx.com esmtp:[192.168.1.2]

其中“xxx.com”是域名,明确说明了交付的IP。

sendmail 在重新构buildDNS之前caching有关主机状态的信息。 调整Timeout.hoststatus可以改变这一点,但是,然后再次重新启动sendmail为您的特定情况是要走的路(而不是等待超时过期)。

Sendmail本身并不执行任何caching,它依赖于本地名称服务器。

有一些值得检查的事情,尽pipe你可能已经做过了:

  • 检查/ etc / hosts没有中继服务器的条目,这将优先于DNS
  • 检查Sendmailparsing器选项以查看它是否被设置为使用DNS
  • 确保/etc/resolv.conf只是指向已更新的DNS服务器,其中一个还没有返回旧值。 通过运行nslookup并为每个DNS服务器input“server 1.2.3.4”来手动执行此操作,记住如果它被设置为重复条目,则可以在重复查询中返回2个不同的IP。 我见过这么多次。

我知道他们都很基本,但是对于一个非常匆忙的pipe理员来说,做一个简单的错误就很容易。