postfix 僅限制某些寄件者位址(「MAIL FROM:」)的郵件轉寄

postfix 僅限制某些寄件者位址(「MAIL FROM:」)的郵件轉寄

我想設定 postfix 僅中繼來自某些寄件者地址的郵件。 Postfix 應根據寄件者位址(「MAIL FROM:」)將郵件轉寄到不同的中繼主機(/smarthosts)(Gmail、AOL...)。

到目前為止,我目前的配置工作如下:

  • 使用者通常在 postfix 上進行身份驗證以進行郵件中繼。如果他們無法進行身份驗證,則無法進行中繼。請注意,此身份驗證與中繼主機的身份驗證不同。

  • 根據寄件者位址(“MAIL FROM:”),選擇某個中繼主機(smtp_sender_dependent_authenticationsender_dependent_relayhost_mapssmtp_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
    

相關內容