В основном вам нужен доступ к оболочке на почтовом сервере, чтобы запустить там Procmail. Если у вас есть необходимые привилегии, выполнить то, что вы просите, просто, хотя ваши требования немного неясны.
Я предполагаю, что вы хотите добавить [groupname]
в сообщения от, groupname-list@example.net
если он еще не присутствует.
:0fhw * ^From: groupname-list@example\.net\> * ! ^Subject:( Re:)? *\[groupname] * ^Subject:\/.+ | formail -I "Subject: [groupname]$MATCH"
f
Флаг говорит, чтобы изменить заголовок с помощью фильтрации через трубопровод в действии; h
означает действие применяется к заголовку только (для уменьшения количества данных, чтобы скопировать немодифицированные назад и вперед); и w
говорит, чтобы проверить, что действие успешно.
\/
Специальный маркер регулярное выражение вызывает матч после того, как он будет захвачен в специальной переменной MATCH
.
Поскольку точка и левая квадратная скобка являются метасимволами регулярных выражений, нам нужен обратный слеш, чтобы буквально соответствовать им. \>
Граничное слово гарантирует, что net
это не частичное совпадение в более адрес (скажем ...@example.netcom.whatever
), хотя это не совсем несложный (он будет по- прежнему соответствовать на ...@example.net.uk
, например).
В любом случае, вам нужно заменить первое условие чем-то, что точно соответствует заголовку в сообщениях, на которые вы ориентируетесь. Например, здесь не совпадает From: List Name <groupname-list@example.net>
(потому что регулярное выражение не содержит выражения для пропуска текста через <
символ).
Остальное должно быть тривиально, чтобы понять, я надеюсь.