从收件头中删除用户标识

通过PHP邮件发送邮件时() – Postfix添加下列标题:

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

有没有办法删除用户名部分,但保持其余的? 所以结果变成(如果正确的话):

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

Postfix运行在本地主机上,仅用于通过mail()函数从PHP发送邮件。

关于删除整个标题的一个类似的问题已经被问到,但我不知道如何删除用户标识部分,但保留其余部分。

我想你可以尝试像这样:

/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} 

(我可能是错误的正则expression式,但它应该工作)

无论如何你都不能编辑收到的行。

它们主要是RFC 5321所要求的,不允许操作。 其次,他们是跟踪滥用的宝贵来源。

假设你只通过Apache发送邮件(userid 48),如果你看到来自userid 5000的消息,它会告诉你什么? 你是对的:恶意用户或脚本正在疯狂运行。 你能够跟踪用户名已被删除的这个问题吗?

现在你只能改变第一行。 我的解决scheme是与正则expression式

/etc/postfix/main.cf中

 header_checks = regexp:/etc/postfix/header_checks 

/等/后缀/ header_checks

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

你可以检查rezult( 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