從已接收標頭中刪除使用者 ID

從已接收標頭中刪除使用者 ID

當透過 PHP mail() 發送郵件時 - Postfix 新增以下標頭:

Received: by myhost.mydomain.com (Postfix, from userid 48)
    id XXXXXXXXXXX; Sun, 20 Nov 2011 21:22:13 +0100 (CET)

有沒有辦法刪除 userid 部分,但保留其餘部分?所以結果就變成了(如果正確的話):

Received: by myhost.mydomain.com (Postfix)
    id XXXXXXXXXXX; Sun, 20 Nov 2011 21:22:13 +0100 (CET)

Postfix 運行在本機上,僅用於透過 mail() 函數從 PHP 發送郵件。

關於刪除整個標題的類似問題之前被問過,但我不知道如何刪除 userid 部分,但保留其餘部分。

答案1

我想你可以嘗試這樣的事情:

/etc/postfix/main.cf

header_checks = pcre:/etc/postfix/header_checks.pcre

/etc/postfix/header_checks.pcre

/^Received: by(.*) \(Postfix, from userid(.*)$/ REPLACE Received: by ${1}

答案2

在任何情況下您都不得編輯收到的行。

主要是 RFC 5321 要求它們並且不允許操縱。其次,它們是追蹤濫用行為的寶貴來源。

假設您僅透過 Apache(使用者 ID 48)使用 PHP 發送郵件,如果您看到來自使用者 ID 5000 的訊息,它會告訴您什麼?你是對的:惡意使用者或腳本正在瘋狂運行。您可以在刪除用戶 ID 的情況下追蹤此問題嗎?

答案3

現在您只能更改第一行。我的解決方案是使用正規表示式

/etc/postfix/main.cf

header_checks = regexp:/etc/postfix/header_checks

/etc/postfix/header_checks

/^Received: by (.*) .*Postfix, from userid [0-9]+\)\s*id ([A-F[:digit:]]+)(.*) (.*)/ REPLACE Received: by $1 (some text) id $2$3 (EEST)

您可以檢查結果(http://rubular.com/r/JH14xFTWL9

或者

postmap -q "Received: by mail.xxxx.lt (Postfix, from userid 48) id 5F7CD1E148A Thu, 23 Oct 2014 15:55:08 +0300 (EEST)" regexp:/etc/postfix/header_checks

相關內容