基本上我想做的是使用 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 規則。