我想設定 postfix 僅中繼來自某些寄件者地址的郵件。 Postfix 應根據寄件者位址(「MAIL FROM:」)將郵件轉寄到不同的中繼主機(/smarthosts)(Gmail、AOL...)。
到目前為止,我目前的配置工作如下:
使用者通常在 postfix 上進行身份驗證以進行郵件中繼。如果他們無法進行身份驗證,則無法進行中繼。請注意,此身份驗證與中繼主機的身份驗證不同。
根據寄件者位址(“MAIL FROM:”),選擇某個中繼主機(
smtp_sender_dependent_authentication
、sender_dependent_relayhost_maps
、smtp_sasl_password_maps
)。這也很好用。但是,如果使用者可以進行身份驗證,且寄件者位址未包含在 中
sender_dependent_relayhost_maps
,則 postfix 會嘗試直接中繼郵件 - 由於 IP 位址限制(黑名單),這通常不起作用。
我現在的問題是:如何拒絕直接轉寄的郵件(沒有智慧主機),即寄件者地址未在中列出的郵件sender_dependent_relayhost_maps
?有任何提示如何實現這一目標嗎?
答案1
你需要一些限制測試前 permit_sasl_authenticated
。這樣做的先決條件是在連接埠上分離25
用於傳入郵件的 smtpd 和另一個用於接收郵件的 smtpd。提交在港口587
。否則,此限制將導致傳入郵件因無法通過測試而被拒絕。然後,permit_sasl_authenticated
從連接埠中完全刪除25
,並將測試新增至 中的提交配置master.cf
。
從字面上回答你的問題,
check_sender_access
將是一個合適的測試,將列出的所有網域列入白名單sender_dependent_relayhost_maps
並拒絕其餘網域的郵件。check_sender_access type:table
搜尋指定的訪問(5)資料庫中尋找
MAIL FROM
地址、網域、父域或localpart@
,並執行對應的操作。這可以添加到任一
smtpd_sender_restrictions
或者smtpd_recipient_restrictions
。可以做同樣的事情,但進一步阻止用戶使用彼此的地址是使用
reject_sender_login_mismatch
。這需要額外的smtpd_sender_login_maps
表,但如果您的virtual_alias_maps
條目已形成為[email protected] username
,則可以使用相同的文件,並且每當您使用 更新虛擬別名資料庫時,允許的寄件者地址都會自動更新postmap
。此類提交配置的範例master.cf
:submission inet n - - - - smtpd # Other parameters -o smtpd_sender_login_maps=hash:/etc/postfix/virtual -o smtpd_sender_restrictions=reject_sender_login_mismatch -o smtpd_client_restrictions=permit_sasl_authenticated,reject # Other parameters