수신 헤더에서 사용자 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는 localhost에서 실행되며 mail() 함수를 통해 PHP에서 메일을 보내는 데에만 사용됩니다.

전체 헤더 제거에 관한 유사한 질문이전에 요청을 받았지만 사용자 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/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

관련 정보