當向該使用者發送已停用時,為什麼 postfix 會向本機假脫機檔案發送退回通知?

當向該使用者發送已停用時,為什麼 postfix 會向本機假脫機檔案發送退回通知?

我的後綴配置允許透過多個 local_recipient_maps 發送郵件。但是,傳到「proxy:unix:passwd.byname」是專門的殘障人士。這通常會阻止傳遞給本機 UNIX 使用者:

$ getent passwd | grep www-data
www-data:x:33:33:www-data:/var/www:/bin/sh
$ nc localhost 25
220 my.mail.host ESMTP Postfix
helo localhost
250 my.mail.host
mail from:[email protected]
250 2.1.0 Ok
rcpt to:[email protected]
550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table
rcpt to:www-data
550 5.1.1 <www-data>: Recipient address rejected: User unknown in local recipient table

然而今天早上我注意到一封電子郵件被發送到本地 www-data 郵件假脫機文件。向內看,我發現:

  • 這是一則訊息 [電子郵件受保護],由我們網路內的不同主機發送,使用 my.mail.host 作為智慧主機
  • 在嘗試重試時,它在 my.mail.host 佇列中保留了幾天
  • 然後就反彈了
  • 退回郵件被傳送到 my.mail.host 上的「www-data」郵件假脫機文件

所以我的問題是:為什麼會發生這種情況?

答案1

假設

你說

專門停用向「proxy:unix:passwd.byname」的傳遞。這通常會阻止交付給本地 UNIX 用戶。

因此,我可能假設您從 中刪除了 proxy:unix:passwd.byname 部分local_recipient_maps。預設情況下該參數的值為

# postconf -d local_recipient_maps
local_recipient_maps = proxy:unix:passwd.byname $alias_maps

然後你把它改成

# postconf local_recipient_maps
local_recipient_maps = $alias_maps

分析

那麼為什麼它會拒絕正常郵件,但退回郵件仍然會通過呢?

要回答這個問題,我們需要看到大局Postfix 架構概述,尤其是當 postfix 收到電子郵件時

                            trivial-
                           rewrite(8)
Network ->  smtpd(8)           |  ^    
                       \       v  |
Network ->  qmqpd(8)    ->  cleanup(8)  ->  incoming
                       /
            pickup(8)   <-  maildrop
                                ^
                                |
Local   ->  sendmail(1) ->  postdrop(1)

Postfix 僅local_recipient_maps在檢查透過 收到的電子郵件時進行諮詢smtpd。為什麼?因為當參數smtpd_reject_unlisted_recipient值為「yes」或您在 smtpd_*_restrictions 中設定時執行檢查reject_unlisted_recipient(請注意兩個參數名稱中的單字 smtpd)。看男子會議後了解參數的詳細資訊。預設情況下啟用此檢查。這解釋了為什麼您的測試電子郵件被 postfix 拒絕。

彈跳是postfix架構中的特殊電子郵件。它由 postfix 內部生成,用於向寄件者通知(非)傳遞狀態報告。它流動透過postfix直接進行cleanup, 透過傳遞smtpd。這就是為什麼www-data仍然收到退回電子郵件的原因。

解決方案

您可以將其發送到黑洞,而不是拒絕它郵箱_傳輸_映射丟棄服務。

為此,請設定mailbox_transport_maps

#main.cf
mailbox_transport_maps = hash:/etc/postfix/wwwdata-blackhole

#/etc/postfix/wwwdata-blackhole
www-data   discard:silently

現在,每當 www-data 收到電子郵件時,它都會默默地丟棄。

相關內容