web-dev-qa-db-ja.com

sendmailはDNSをキャッシュしていますか、それともHost / Dig / nslookupとは異なる方法で取得していますか?

プライマリメールサーバーを介してメールを中継するsendmailを実行しているLinuxサーバーがありますが、先週の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.tld、またはnslookup mailserver.domain.tldを実行すると、すべて正しいIPアドレスが返されます。 sendmailが間違ったIPアドレスを取得/キャッシュしている可能性があり、その問題を解決するにはどうすればよいですか?

4
morgant
  • sendmailを再起動します。
  • nscdを再起動します(システムで使用されている場合)。

また、正しい MXレコードエントリ があることを確認してください。 SendmailはMXルックアップに依存しています。

Dig mx domain.tldを試して、正しいホストになるかどうかを確認してください。そうでない場合は、通常/ etc/mail /にあるmailertableファイルを使用して、sendmailに特定のドメイン宛てのメールを強制的に配信できます。

典型的なメーラーテーブルエントリは次のようになります。

xxx.com esmtp:[192.168.1.2]

ここで、「xxx.com」はドメインであり、配信用のIPが明示されています。

2
ewwhite

sendmail does DNSを再確認する前に、ホストのステータスに関する情報をキャッシュします。 Timeout.hoststatusを微調整するとこれを変更できますが、特定のケースでsendmailを再起動するのが(タイムアウトの期限が切れるのを待つのではなく)進む方法です。

5
adamo

Sendmailはそれ自体をキャッシュすることはなく、ローカルネームサーバーに依存します。

確認する価値のあることがいくつかありますが、おそらくすでにそれらを実行しているでしょう。

  • / etc/hostsにリレーサーバーのエントリがないことを確認します。これはDNSよりも優先されます
  • Sendmailリゾルバーオプションをチェックして、実際に DNSを使用 に設定されているかどうかを確認します
  • /etc/resolv.confが更新されたDNSサーバーのみを指していること、およびそれらの1つがまだ古い値を返さないことを確認します。 nslookupを実行し、DNSサーバーごとに「server1.2.3.4」と入力して手動でこれを行います。エントリが重複するように設定されている場合、繰り返しクエリで2つの異なるIPが返される可能性があることに注意してください。私はこれを何度も見てきました。

それらはすべてかなり基本的なものであることは知っていますが、非常に急いでいる管理者がこれらのような単純な間違いを犯すのは簡単です。

1
Ewan Leith