PHP mail() を介してメールを送信する場合、Postfix は次のヘッダーを追加します。
Received: by myhost.mydomain.com (Postfix, from userid 48)
id XXXXXXXXXXX; Sun, 20 Nov 2011 21:22:13 +0100 (CET)
ユーザー ID 部分を削除し、残りを残す方法はありますか? 結果は次のようになります (正しい場合):
Received: by myhost.mydomain.com (Postfix)
id XXXXXXXXXXX; Sun, 20 Nov 2011 21:22:13 +0100 (CET)
Postfix はローカルホスト上で実行されており、PHP から mail() 関数を介してメールを送信するためにのみ使用されます。
ヘッダー全体の削除に関する同様の質問以前にも質問されましたが、ユーザーID部分を削除して残りを残す方法がわかりません。
答え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/ヘッダーチェック
/^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