Чтение онлайн

на главную - закладки

Жанры

Сетевые средства Linux

Смит Родерик В.

Шрифт:

В конфигурационном файле Procmail содержатся записи трех типов.

• Комментарии. Как и во многих других конфигурационных файлах, строки, содержащие комментарии, начинаются с символа

#
.

• Записи, определяющие переменные окружения. В процессе работы Procmail использует значения переменных окружения, например

$HOME
(расположение рабочего каталога пользователя) и
$MAILDIR
(каталог, в котором содержатся пользовательские папки для хранения почтовых сообщений). Значения переменных окружения устанавливаются в конфигурационном файле так же, как и в оболочке. Например, запись
MAILDIR = $HOME/Mail
задает для переменной окружения
$MAILDIR
значение, указывающее на подкаталог
Mail
, находящийся в рабочем каталоге пользователя.

• Рецепты. Правила фильтрации Procmail называются рецептами (recipe). Основная работа по построению фильтра сводится к созданию рецепта. Каждый рецепт содержит правила, определяющие обработку сообщения, соответствующего некоторому регулярному выражению. Таким образом, полный набор правил состоит из многих рецептов. Рецепты разделяются на две категории: рецепты с доставкой (delivering) и рецепты без доставки (nondelivering). Рецепты с доставкой ориентированы на включение сообщения в состав почтового ящика, блокирование сообщения или обработку его с помощью другой программы. Рецепты без доставки определяют вложенные рецепты, т.е. приводят к повторной обработке сообщения с помощью Procmail.

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

$DEFAULT
. Обычно это почтовый ящик, используемый по умолчанию, например
/var/spool/mail/имя_пользователя
.

Создание рецепта

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

:0 [флаги] [:[файл_блокировки]]

[условия]

действие

Рецепт можно условно разбить на три части: идентификационную строку, условия и действие.

Идентификационная строка

Каждый рецепт начинается с символов

:0
. Цифра 0 не имеет специального значения, и рецептов, начинающихся с
:1
или больших номеров, не существует. После
:0
вы можете задать один или несколько флагов, которые изменяют поведение Procmail. Наиболее часто используются следующие флаги.

• 

H
. Данный флаг указывает на то, что сравнению с шаблоном должны подвергаться заголовки сообщения. Этот флаг используется по умолчанию.

• 

В
. Этот флаг задает сравнение тела сообщения с шаблоном.

• 

D
. По умолчанию при сравнении с шаблоном не учитывается регистр символов. Флаг
D
отменяет это соглашение.

• 

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

• 

w
. Этот флаг сообщает о том, что Procmail должен ожидать завершения действия, указанного в рецепте. Если действие не окончилось успешно, сообщение остается в очереди для обработки посредством других рецептов.

• 

W
. Данный флаг действует подобно
w
, но подавляет сообщения об ошибках.

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

Условия

Условия в составе рецепта состоят из любого (возможно, нулевого) числа строк, обычно начинающихся с символа

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

• 

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

• 

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

• 

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

• 

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

• 

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

• 

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

• 

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

Поделиться:
Популярные книги

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Ваантан

Кораблев Родион
10. Другая сторона
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Ваантан

Локки 10. Потомок бога

Решетов Евгений Валерьевич
10. Локки
Фантастика:
фэнтези
юмористическое фэнтези
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Локки 10. Потомок бога

Сфирот

Прокофьев Роман Юрьевич
8. Стеллар
Фантастика:
боевая фантастика
рпг
6.92
рейтинг книги
Сфирот

Шайтан Иван 2

Тен Эдуард
2. Шайтан Иван
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Шайтан Иван 2

Двойник Короля 4

Скабер Артемий
4. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Двойник Короля 4

На границе империй. Том 10. Часть 8

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 8

Треск штанов

Ланцов Михаил Алексеевич
6. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Треск штанов

Имя нам Легион. Том 8

Дорничев Дмитрий
8. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 8

Деревенщина в Пекине

Афанасьев Семён
1. Пекин
Фантастика:
попаданцы
дорама
фантастика: прочее
5.00
рейтинг книги
Деревенщина в Пекине

Старый, но крепкий 4

Крынов Макс
4. Культивация без насилия
Фантастика:
уся
фэнтези
5.00
рейтинг книги
Старый, но крепкий 4

Долг

Кораблев Родион
7. Другая сторона
Фантастика:
боевая фантастика
5.56
рейтинг книги
Долг

Сирийский рубеж

Дорин Михаил
5. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж

Твое сердце будет разбито. Книга 1

Джейн Анна
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Твое сердце будет разбито. Книга 1