При отправке почты через PHP mail () - 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 работает на локальном хосте и используется только для отправки почты из PHP через функцию mail ().
Типичный вопрос об удалении всего заголовка спрашивали раньше, но я не могу понять, как удалить часть идентификатора пользователя, но оставьте остальное.
Ни в коем случае нельзя редактировать полученные строки.
В основном они требуются RFC 5321, и ими нельзя манипулировать. Во-вторых, они являются ценным источником для отслеживания злоупотреблений.
Предположим, вы отправляете почту с PHP только через Apache (идентификатор пользователя 48), что он сообщает вам, если вы видите сообщения, поступающие от идентификатора пользователя 5000? Вы правы: злоумышленник или скрипт сходит с ума. Можете ли вы отследить эту проблему с удаленным идентификатором пользователя?
Я думаю, вы можете попробовать что-то вроде:
/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}
Теперь вы можете изменить только первую строку. Мое решение с регулярным выражением
/etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
/ и т.д. / постфикс / 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