Postfix:如何僅對特定網域套用 header_checks?

Postfix:如何僅對特定網域套用 header_checks?

基本上我想做的是使用 header_checks 重寫 From: 標頭,但前提是郵件發送到某個網域。

header_check 的問題是,我無法檢查 To: 和 From: 標頭的組合。

現在我想知道是否可以將 header_checks 與 smtpd_restriction_classes 或類似的東西結合使用。

在網路上搜尋時,我發現了很多有關 header_checks 和多個標頭欄位的資訊。他們基本上都告訴我,不能組合兩個標頭來檢查。但我沒有找到任何資訊是否可以僅在滿足條件(例如郵件發送到 example.com)時進行標頭檢查。


編輯:

在進行更多研究時,我發現了以下內容文章建議在 postfix master.cf 中新增一個服務,使用傳輸映射將網域的郵件傳遞到該服務,並使用 -o 定義一個單獨的 header_check。

問題是我無法讓它工作......

到目前為止我所做的是將服務添加到 master.cf 中:

example      unix  -       -       n       -       -       smtpd
    -o header_checks=regexp:/etc/postfix/check_headers_example

將以下行新增至傳輸映射:

example.com                 example:

最後但並非最不重要的一點是,我有兩個用於標頭檢查的正則表達式文件,一個用於新添加的服務,另一個用於將答案重定向到重寫的域。

檢查標題範例:

/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2

顯然,如果有人回答,郵件就會涅槃,所以我在主後綴進程中定義了以下 check_headers :

/To:(.*)<(.*)@mydomain.example.com>(.*)/ REDIRECT [email protected]$2

不知怎的,傳輸被忽略了。任何幫助表示讚賞。


編輯2:

我仍然被困......我確實嘗試了以下方法:

smtpd_restriction_classes = header_rewrite 
header_rewrite = regexp:/etc/postfix/rewrite_headers_domain 
smtpd_recipient_restrictions = (some checks) check_recipient_access hash:/etc/postfix/rewrite_table, (more checks) 

存在rewrite_table以下條目:

/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2 

它給我的只是一個NOQUEUE: reject: 451 4.3.5 Server configuration error。我找不到任何關於如何做到這一點的資源,但有些人說這是不可能的。


編輯3:

我問這個問題的原因是,我們有一個客戶(比如說 customer.com),他使用一些別名將郵件轉發到一個網域,比如說 example.com。

example.com 上的郵件伺服器不接受來自寄件者 @example.com 的外部伺服器的任何郵件。

因此,從 example.com 發送至的所有郵件[電子郵件受保護]最終會被拒絕。

example.com 的郵件伺服器上不可能有例外。

我們並沒有真正解決這個問題,但會嘗試透過使用清單(mailman)而不是別名來解決它。但這並不是很好,也不是真正的解決方案。

我非常感謝所有關於如何以正確的方式完成此操作的建議。

答案1

我不確定你是否能夠實現你想要的。我正在測試類似的東西,需要在每個網域的基礎上進行關鍵字過濾等,並且能夠在每個網域上或我想要使用 postfix 的多實例功能的網域上使用 header_checks 。

您建立一個實例,只需變更該特定實例上的 smtp 連接埠即可。您可以在主實例上使用 Transport_maps 將特定網域的電子郵件路由到輔助實例的 smtp 連接埠。並在那裡進行所有 header_checks 並轉發電子郵件!

乾杯!

答案2

您可以設定新伺服器,使用傳輸檔案路由要處理的所有網域,然後在新伺服器上套用 header_checks 規則。

相關內容