Email

從後綴中刪除/隱藏客戶端發件人IP?

  • January 2, 2022

我正在嘗試從 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``Receivedheader_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)

引用自:https://serverfault.com/questions/413533