С помощью Procmail могут создаваться фильтры для всей системы или для отдельных пользователей. Например, фильтры, действующие в пределах системы, могут использоваться для блокирования спама и борьбы с вирусами. Отдельные пользователи могут применять Procmail для распределения сообщений по папкам и выполнения других подобных действий. Конфигурация Procmail для использования в рамках системы задается с помощью файла /etc/procmailrc
. Для индивидуального применения Procmail настраивается посредством файлов .procmailrc
, расположенных в рабочих каталогах пользователей. Файлы, предназначенные для отдельных пользователей, имеют тот же формат, что и файлы, ориентированные на применение во всей системе.
Внимание
В большинстве версий Linux файл /etc/procmailrc
используется тогда, когда Procmail запускается по инициативе пользователя root. Поэтому надо внимательно следить за тем, чтобы команды, выполняемые Procmail, не нанесли вреда системе. Кроме того, перенаправляя почту, необходимо принимать меры для того, чтобы создаваемые файлы были доступны для чтения пользователям, которым они предназначены. При работе с файлами .procmailrc
, расположенными в пользовательских каталогах, подробные проблемы не возникают, так как в этом случае Procmail выполняется с привилегиями обычного пользователя.
В конфигурационном файле 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
отменяет это соглашение.
Читать дальше