Ubuntu
如何在 postfix 中禁用“發件人未送達通知”?
我知道在 master.cf 中將以下行更改為“丟棄”而不是“退回”將阻止未送達通知,但我想知道是否有可能更進一步,只禁用源自未送達通知來自已通過發件人訪問列表列入黑名單的電子郵件,該發件人訪問列表通過 main.cf 中的 smtpd_recipient_restrictions 呼叫。
bounce unix - - n - 0 bounce
該解決方案可能來自如何將 Postfix 配置為從不發送 NDR 響應?. 它說:
強烈建議您不要在任何郵件伺服器上禁用 NDR 響應。但是,如果您願意,可以在 Postfix 中禁用 NDR 響應。
讓我解釋。您禁用未送達通知(NDN) 又名退回郵件的衝動可能源於避免發送backscatter的良好意圖。儘管如此,如果他們向有問題的電子郵件地址發送郵件,您仍需要能夠通知您自己的使用者。為此,您需要將 SMTP 伺服器使用者分為兩類並區別對待:
- 本地使用者應該收到 NDN。否則,即使他們輸入錯誤的地址、地址已更改、郵箱已滿等,他們也會認為他們的郵件已收到。本地使用者可能存在於同一台伺服器上,或者他們可能有權將此伺服器用作中繼。
- 嘗試向此伺服器上的使用者發送郵件的外部使用者不應收到 NDN 消息。相反,如果收件人不存在、發件人信封地址未通過防偽檢查(SPF、DKIM、DMARC)或發件人在阻止列表中(信封地址的域或郵件伺服器的 IP 地址)。通知使用者在 SMTP 連接期間給出的此錯誤程式碼和消息的責任在於發送 MTA,其行為應與 #1 中的說明完全相同。(垃圾郵件機器人不會關心這個。)
現在,Postfix 就是這樣工作的,只要你正確配置了它,即它不應該是一個開放的中繼。如果您沒有弄亂這些預設配置參數(來自Postfix Basic Configuration),它通常預設執行大部分操作:
- 預設情況下,Postfix 會將來自授權網路塊中客戶端的郵件轉發到任何目的地。授權網路是使用
mynetworks
配置參數定義的。- 預設情況下,Postfix 只會將來自陌生人(授權網路之外的客戶端)的郵件轉發到授權的遠端目的地。授權的遠端目標是使用
relay_domains
配置參數定義的。預設是授權使用mydestination
參數列出的所有域(和域的子域)。您需要手動配置的是對發件人訪問的進一步限制,因為預設
smtpd_sender_restrictions
值為空。就我個人而言,我喜歡將所有限制(包括發件人和smtpd_helo_restrictions
HELO 限制)結合起來成為smtpd_recipient_restrictions
. 從那裡它們仍然有效,但是在所有三個 ( 和 ) 命令完全交換後執行檢查HELO
,MAIL FROM
如果RCPT TO
出現問題,則更容易從日誌中調試。這是您可以執行的一些基本檢查的範例配置。(注意評論。)
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, reject_invalid_hostname, reject_unauth_pipelining, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_non_fqdn_recipient, reject_unknown_recipient_domain, # Personal tables, only use if you have added these files. check_recipient_access hash:/etc/postfix/access/denied_recipients, check_sender_access hash:/etc/postfix/access/sender_access, check_client_access cidr:/etc/postfix/access/client_access.cidr, # SPF anti-forgery checks. Requires external SPF service. check_policy_service unix:private/policy-spf, # To minimize unnecessary use, add DNSBLs AFTER basic checks, e.g. reject_rbl_client sbl-xbl.spamhaus.org, permit