У нас есть несколько внешних систем, которые читают наши электронные письма, и некоторые из них не работают над другими. В основном мне нужно заменить тему электронного письма, например:
[RT #179497] Internal: blah blah
с участием
[RT 179497] Internal: blah blah
Так что брось хеш. Кто-нибудь знает регулярное выражение для достижения этого с помощью postfix header_checks?
Видеть header_checks (5) для примеров и http://www.postfix.org/BUILTIN_FILTER_README.html#limitations для дополнительной информации.
Изменить пример на упомянутой странице руководства не так уж и сложно:
/etc/postfix/main.cf:
header_checks = pcre:/etc/postfix/header_checks.pcre
/etc/postfix/header_checks.pcre:
/^Subject: \[RT #(\d)\] Internal: (.+)$/ REPLACE Subject: [RT $1] Internal: $2
Возможно, его можно было бы сделать изящнее или короче, но теперь это ваша работа.
Добавление к ответу @joschi (и я знаю, что это поздно, но кто-то другой может найти эту информацию полезной): вы указали, что хотите переписать заголовки сообщений только для определенных адресов электронной почты. Это немного сложно:
Вам необходимо настроить отдельный транспорт, чтобы вы могли указать различные манипуляции с сообщениями, использующими этот транспорт:
расположение по умолчанию: /etc/postfix/transport
example1@test.com rewriter:
example2@test.com rewriter:
.anotherdomain.com rewriter:
Это указывает postfix обрабатывать почту, предназначенную для этих мест, используя rewriter
транспорт. Затем в /etc/postfix/master.cf
, можете добавить:
rewriter unix - - - - - smtp
-o smtp_header_checks=regexp:/etc/postfix/rewrite_headers
И, наконец, вы указываете, какой вид переписывания вы действительно хотите сделать в /etc/postfix/rewrite_headers
файл. Он имеет тот же синтаксис, что и по умолчанию header_checks
файл, это просто специальная версия, действующая только для писем, проходящих через rewriter
транспорт.
Обратите внимание: это, вероятно, не сработает, если у вас активен какой-либо фильтр содержимого (например, Amavis), хотя в моем случае я выполнял другие манипуляции.