中継前にsendmailがDNSルックアップを行わないようにする

中継前にsendmailがDNSルックアップを行わないようにする

私のマシン (CentOS、sendmail-8.14.7-5.el7) は、複数のマシンから電子メールを受信し、それらすべてをスマートホストに転送します。スマートホストmy-smarthost.mydomain.comには、いくつかの動的 MX レコードがあります。ローカル メールはローカルに残ります (エイリアス ファイルを使用)。

sendmail.mc:
define(`SMART_HOST', `smtp:my-smarthost.mydomain.com')dnl

今日、私はある問題に気づきました:

# mailq
        /var/spool/mqueue (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
02AG1YBC023172     1239 Tue Mar 10 17:01 <[email protected]>
      8BITMIME   (host map: lookup (non-domain.com): deferred)
                     <[email protected]>

# sendmail -v -q
Running /var/spool/mqueue/02AG1YBC023172 (sequence 1 of 1)
non-domain.com: Name server timeout
<[email protected]>... Transient parse error -- message queued for future delivery

なぜ sendmail はメール内のアドレスを DNS 検索しようとするのでしょうか? ローカル以外のものはすべてスマートホストに転送するだけだと思っていました。

DNSルックアップを無効にするトリックを試してみました

define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl

などですが、これには問題があります。これにより、スマートホストの MX 検索も無効になります。そのため、スマートホストの動的 MX レコードは見つからず、使用されなくなります。

スマートホストへのリレー以外の動作を sendmail が行わないようにする方法はありますか?

答え1

使用を検討するFEATURE(nocanonify)

非正規化デフォルトでは、正規化のためにアドレスを $[ ... $] に渡さないでください。つまり、ホスト名/ドメイン名は、非修飾名を除いて正規であるとみなされます。非修飾名はこのモードで使用しないでください (標準違反)。 […]

これにより、sendmail がヘッダー アドレス内のドメインについて DNS に問い合わせることがなくなります。

関連情報