私のマシン (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 に問い合わせることがなくなります。