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

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

Жанры

Сетевые средства 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
. Чтобы указать на то, что в строке может присутствовать одна из двух последовательностей символов, надо разделить эти последовательности символом
|
. При необходимости вы можете задать выбор более чем из двух альтернативных вариантов, использовав несколько символов
|
.

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

Последний Паладин. Том 2

Саваровский Роман
2. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 2

Зубных дел мастер

Дроздов Анатолий Федорович
1. Зубных дел мастер
Фантастика:
научная фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Зубных дел мастер

Истребитель. Ас из будущего

Корчевский Юрий Григорьевич
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Истребитель. Ас из будущего

Честное пионерское! Часть 3

Федин Андрей Анатольевич
3. Честное пионерское!
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Честное пионерское! Часть 3

Обгоняя время

Иванов Дмитрий
13. Девяностые
Фантастика:
попаданцы
5.00
рейтинг книги
Обгоняя время

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

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

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

Девятый

Каменистый Артем
1. Девятый
Фантастика:
боевая фантастика
попаданцы
9.15
рейтинг книги
Девятый

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Отмороженный 8.0

Гарцевич Евгений Александрович
8. Отмороженный
Фантастика:
постапокалипсис
рпг
аниме
5.00
рейтинг книги
Отмороженный 8.0

Совершенный: охота

Vector
3. Совершенный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Совершенный: охота

Калибр Личности 1

Голд Джон
1. Калибр Личности
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Калибр Личности 1

Личник

Валериев Игорь
3. Ермак
Фантастика:
альтернативная история
6.33
рейтинг книги
Личник