從後綴中刪除/隱藏客戶端發件人IP?
我正在嘗試從 postfix 發送的電子郵件中隱藏客戶端 IP。
這是我的意思的一個例子:
Received: from mail.[removed].com (adsl-75-37-61-254.dsl.frs2ca.sbcglobal.net [75.37.61.254]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.[removed].com (Postfix) with ESMTP id D50C7BF185DD for <[removed]@gmail.com>; Thu, 2 Aug 2012 16:14:21 +0900 (JST) Date: Thu, 02 Aug 2012 07:14:08 +0000
注意這一行
(adsl-75-37-61-254.dsl.frs2ca.sbcglobal.net [75.37.61.254])
我想從電子郵件中刪除該行。
我試過這樣做:
/etc/postfix/main.cf :
smtp_header_checks = regexp:/etc/postfix/smtp_header_checks
smtp_header_checks:
/^((.*) [(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])])/ IGNORE
但是我的 IP 地址仍然在電子郵件的接收部分內。如果我在本地從 smtp 伺服器發送電子郵件,則 IP 地址變為
localhost.localdomain [127.0.0.1]
如何從標頭中刪除客戶端 IP?
在
main.cf
:smtp_header_checks = pcre:/etc/postfix/smtp_header_checks
在
dynamicmaps.cf
:# Use your real path to dict_pcre.so, below pcre /usr/lib/postfix/dict_pcre.so dict_pcre_open
你應該把它放在你的
/etc/postfix/smtp_header_checks
:/^Received: .*/ IGNORE /^X-Originating-IP:/ IGNORE
然後執行
# /etc/init.d/postfix reload
要從新郵件送出的 Received 標頭中刪除發件人 IP,請使用
header_checks
密鑰而不是smtp_header_checks
選項:header_checks = regexp:/etc/postfix/header_checks_submission
該
smtp_header_checks
選項僅適用於從 Postfix 發送到外部伺服器的郵件,而該header_checks
選項適用於從您的客戶端發送到 Postfix 的傳入郵件。另請參閱http://www.postfix.org/OVERVIEW.html上的Postfix 如何接收郵件以了解組件的概述,郵件來自 smtpd -> 清理 -> 傳入隊列。該程序接收郵件並在標頭中註入發件人 IP 地址。該選項由清理電子郵件標題的組件處理。
smtpd``Received
header_checks(5)
cleanup(8)
不建議在 main.cf 中全域設置這樣的選項,因為
header_checks
這會修改所有電子郵件中的 Received 標頭,即使是從外部伺服器接收的郵件。相反,您應該將您的客戶端配置為通過埠 587 上的專用送出服務發送電子郵件,並將 Postfix 配置為僅重寫這些經過身份驗證的送出的標頭。在中,在該行之後
/etc/postfix/master.cf
添加以下行:-o``submission
submission inet n - y - - smtpd # Require SASL authentication -o smtpd_sasl_auth_enable=yes # Require TLS transport security, do not leak your credentials in plaintext. -o smtpd_tls_security_level=encrypt` # Disallow unauthenticated users from sending mail through this port. -o smtpd_client_restrictions=permit_sasl_authenticated,reject # Use a different cleanup service (see below) -o cleanup_service_name=ascleanup
是時候為經過身份驗證的送出配置清理服務了。我選擇名稱以使其簡短且對齊,但是任何名稱都可以。為此,請在同一文件中複製cleanup service 行,但重命名第一個欄位並添加一個新選項來選擇過濾器文件:
ascleanup``master.cf
cleanup unix n - y - 0 cleanup ascleanup unix n - y - 0 cleanup -o header_checks=pcre:/etc/postfix/header_checks_submission
(使用該
pcre
表需要postfix-pcre
在 Debian 上安裝,它會自動更新 dynamicmaps.cf 文件。無需進一步更改。)最後一塊是實際的過濾器配置
/etc/postfix/header_checks_submission
。您可能會使用類似的東西:/^Received: .*/ IGNORE
這將刪除完整的 Received 標題行,但您也可以
from helo.host (reverse.host.name [192.0.2.1])
在保留其他資訊的同時刪除該部分:/^Received: from [^ ]+ \([^ ]+ \[[IPv0-9a-f:.]+\]\)\s+(.* \(Postfix\) with .+)$/ REPLACE Received: $1
如果您確實更改了
mail_name
選項,請更改Postfix
單詞以匹配您的配置。(此模式基於 Postfix 原始碼smtpd/smtpd.c是準確的。)我在 Debian buster 上使用 postfix 3.4.7-0+deb10u1 對此進行了測試。有關使用相同方法的另一個很好的描述,請參閱使用 Postfix 發送電子郵件時,如何在 Received 標頭中隱藏發件人的 IP 和使用者名?
通過上述修改,以下內容變為
Received: by ...
:Received: from debian (unknown [IPv6:fe80::b036:2ff:fe6e:73f4]) by mail.example.nl (Postfix) with ESMTPSA id 1571B910B for <some@example.com>; Sun, 12 Jan 2020 02:23:15 +0000 (UTC)