Назад | Перейти на главную страницу

Выполните точное совпадение адреса электронной почты в заголовке From: с помощью procmail

Я нашел много примеров для procmail для сопоставления заголовка From: с помощью wilcards, но я хотел бы сделать точное сопоставление, чтобы предотвратить сопоставление From:. * Jgordon@example.com как jgordon@example.com и bjgordon@example.com

Возможно ли это, и если да, то как?

Обычная процедура - добавить якоря границы слова с обеих сторон от целевого адреса.

:0
* ^From:(.*\<)?jgordon@example\.com\>
...

Если вы хотите сопоставить ровно два адреса электронной почты и никаких других, создайте регулярное выражение, которое будет соответствовать только этим двум. В вашем конкретном примере b?jgordon@example\.com будет соответствовать обоим bjgordon и jgordon. Распространенный аналогичный шаблон - желание сопоставить оба firstname.lastname и flastnam; образец для этого был бы (firstname\.lastname|flastnam)@example\.com.

В .* это то, что соответствует дополнительным символам. Вам нужно только сопоставить пробелы после имени заголовка, поэтому вы можете изменить это на *.

* ^From: *jgordon@example.com

Я подозреваю, что можно также закрепить конец заголовка, чтобы избежать совпадения дополнительных символов в конце, но я сам этого не тестировал.

* ^From: *jgordon@example.com$

Я немного запутался. У вас должен быть procmail для каждого пользователя. Если вы сложили их в одну, вот в чем проблема. Конечно, Unix справится с этим! Просто скажи, как с этим справиться. Учтите, что он стекает вниз. Таким образом, вы можете раздавливать вещи по мере их поступления. Сначала зацепите bjgordon.

:0
* To: bjgordon@example.com
bjgordon_file


:0
* To: jgordon@example.com
jgordon_file

Если вы хотите, чтобы он пережил правило, используйте правило копии:

:0 c:
* From: root <root@foo.bar.com>
root_foo_mail.`date +%y%m%d`