Ваши требования довольно неясны. Procmail может найти любую строку, но действительно ли вы хотите искать строку в любом месте сообщения? И вы действительно хотите игнорировать сообщения без домен.com
в них для целей этого правила?
:0 ХБ
* ! ()\<bob@домен\.com\>
* @домен\.com\>
{
:0fhw
* ^Тема:\/.+
| formail -I"Тема: [спам]$MATCH"
}
\<
и \>
границы слов предотвращают сопоставление подстрок, таких как гробница
или же subdomain.complete.org
, а пустые скобки — это хак, потому что Procmail странно относится к регулярным выражениям, начинающимся с обратной косой черты.
Если вы имеете в виду, что хотите смотреть только в заголовках, отпустите НВ
с первой строки двоеточия (можно оставить ЧАС
но это по умолчанию, если вы не ставите никаких флагов). Если вы хотите сопоставить определенный заголовок, напишите его по буквам. Если вы хотите проверить получателя конкретно, ^TO_
макрос позволяет вам сделать это в нескольких разных заголовках (К:
, Копия:
и т. д.) легко.
:0fhw
* ! ^TO_bob@домен\.com\>
* ^TO_[^<>@ ]+@домен\.com\>
* ^Тема:\/.+
| formail -I"Тема: [спам]$MATCH"
Потому что мы бросили НВ
флаги, мы можем комбинировать то, что раньше было двумя рецептами с разными флагами. Второй ^TO_
проверяет любой адрес, включая боб
, которое, однако, уже было исключено предыдущим отрицательным условием.
У этого все еще есть некоторые краеугольные случаи, которые, возможно, потребуется изучить дополнительно; если вы можете отредактировать свой вопрос, чтобы уточнить его, возможно, я смогу обновить его, чтобы охватить не только основы.
Однако SMTP не требует указания получателя в заголовках. Классический случай СК:
который также по сути является механизмом, используемым многими списками рассылки. Возможно, ваш MTA укажет получателя в Доставлен в:
но, собственно говоря, этот тип фильтра лучше реализован в АПС.