Sendmail

阻止 sendmail 在中繼之前進行 dns 查找

  • March 11, 2020

我的機器(CentOS,sendmail-8.14.7-5.el7)接受來自機器的電子郵件並將它們全部轉發到我的 smarthost 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 <sender@some-domain.com>
     8BITMIME   (host map: lookup (non-domain.com): deferred)
                    <john.doe@non-domain.com>

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

為什麼 sendmail 會嘗試 dns 查找郵件中的地址?我以為它只是將所有非本地的東西轉發給智能主機!

我試圖使用這個技巧來禁用 DNS 查找

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

依此類推,但有一個問題:這也禁用了智能主機的 MX 搜尋!所以我的智能主機的動態 MX 記錄不再被發現/使用!

任何想法如何阻止 sendmail 除了中繼到智能主機之外的任何操作?

考慮使用FEATURE(nocanonify)

nocanonify不要將地址傳遞給 $ [ … $ ] 預設情況下進行規範化,即主機/域名被認為是規範的,除了非限定名稱,不得在此模式下使用(違反標準)。

$$ … $$

它應該阻止 sendmail 向 DNS 詢問標頭地址中的域。

引用自:https://unix.stackexchange.com/questions/572208