При отправке почты через 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 работает на локальном хосте и используется только для отправки почты из PHP через функцию mail().
Аналогичный вопрос относительно удаления всего заголовкауже спрашивали, но я не могу понять, как удалить часть идентификатора пользователя, но оставить остальное.
решение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 и не позволяют манипулировать. Во-вторых, они являются ценным источником для отслеживания злоупотреблений.
Предположим, что вы отправляете почту только с PHP через Apache (userid 48), что он вам говорит, если вы видите сообщения, приходящие от userid 5000? Вы правы: вредоносный пользователь или скрипт работает с сумасшедшей скоростью. Вы можете отследить эту проблему, удалив userid?
решение3
Теперь вы можете изменить только первую строку. Мое решение — с помощью regexp
/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