Читаем Сетевые средства Linux полностью

После флагов можно указать двоеточие и имя файла блокировки. Файл блокировки — это специальный файл, который сообщает о том, что в данный момент происходит работа с другим файлом. При наличии файла Procmail откладывает обработку сообщения до тех пор, пока этот файл не будет удален. Файл блокировки удобно использовать в тех случаях, когда в очереди содержится много сообщений; ,без него может возникнуть ситуация, когда сообщения, принятые одно за другим, будут записаны в неверном порядке. По умолчанию имя файла блокировки строится на основе имени файла, в который помещается почта (этот файл указывается в строке действия). Если в строке действия задается обработка сообщения другой программой, вы можете указать имя файла блокировки после двоеточия.

Условия

Условия в составе рецепта состоят из любого (возможно, нулевого) числа строк, обычно начинающихся с символа *. Как правило, в составе условий задаются регулярные выражения — строки символов, с которыми Procmail сравнивает входные данные (заголовок и тело сообщения). Большинство символов используется литерально, но некоторые символы имеют специальные значения. Специальные символы и выполняемые ими действия описаны ниже.

• ^. Указывает на начало строки. Этот символ указывается во многих условиях Procmail после символа *.

• $. Данный символ указывает на конец строки.

• .. Точке соответствует любой символ, кроме символа новой строки. Например, выражению удовлетворяют dog, dig, dug и любая другая трехсимвольная последовательность, которая начинается с d и заканчивается g.

• а*. Данному выражению соответствует любое (в том числе нулевое) число символов, указанных перед звездочкой, следующих друг за другом. Очевидно, что вместо а вы можете подставить любой символ. Например, если вам надо найти последовательность, начинающуюся с цифр 802, за которыми следует произвольное количество неизвестных символов, а затем 1618, то сделать это поможет выражение 802.*1618.

• a+. Это выражение выполняет те же действия, что и a*, но количество символов в последовательности не может быть нулевым.

• a?. Данное выражение означает, что указанный символ может отсутствовать.

• последовательность1|последовательность2. Чтобы указать на то, что в строке может присутствовать одна из двух последовательностей символов, надо разделить эти последовательности символом |. При необходимости вы можете задать выбор более чем из двух альтернативных вариантов, использовав несколько символов |.

• (последовательность)*. Это выражение похоже на a*, но оно означает многократное повторение не одного символа, а целой последовательности.

• [символы]. Набор символов, помещенных в квадратные скобки, означает, что в строке должен присутствовать любой из них. Например, выражению [aeiou] соответствуют символы а, е, i, о или u. Если два символа разделены дефисом (-), они задают диапазон символов. Например, выражению [m-q] соответствуют символы m, n, о, p или q.

• \. Обратная косая черта отменяет специальное значение символа. Например, выражение \. соответствует обычной точке.

Дополнительную информацию о регулярных выражениях вы найдете на страницах справочной системы, посвященных Procmail. Объединяя обычный текст и специальные символы, вы можете создавать достаточно сложные выражения. Как было сказано ранее, условия в составе рецепта могут занимать одну или несколько строк. В большинстве случаев используются условия, состоящие из одной строки. Если условия занимают несколько строк, письмо соответствует рецепту в том случае, если оно соответствует каждому из условий. Если условия отсутствуют, рецепту соответствует любое сообщение.

В составе условий могут быть использованы дополнительные символы, указывающие на то, что рецепт должен быть интерпретирован специальным образом. Некоторые из них описаны ниже.

• !. Данный символ инвертирует результат сравнения. Если условие начинается с символа !, то, для того, чтобы письмо соответствовало рецепту, оно не должно соответствовать данному условию. Например, вы можете создать рецепт, которому соответствуют все сообщения, кроме адресованных пользователю postmaster.

• <. Условие применяется в том случае, если длина сообщения меньше указанного числа байтов.

• >. Условие применяется в том случае, если длина сообщения больше указанного числа байтов.

Действие
Перейти на страницу:

Похожие книги