Книга: Сетевые средства Linux

Пример использования рецептов

Пример использования рецептов

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

Листинг 19.3. Пример конфигурационного файла Procmail

MAILDIR = $HOME/Mail
# Поиск рекламных сообщений. Проверка не затрагивает письма,
# адресованные пользователю postmaster или отправленные им
:0
*! (From|To) : . *postmaster
{
 : 0 В
 * .*301.*S.*1618 /dev/null
 :0
 * From: .*badspammer.net
 /dev/null
 :0
 * Subject:.*$$$
 /dev/null
}
# Проверка по ключевым словам rug и david и
# перенаправление писем адресату
:0 с
* From: . *[email protected]
* Subject: . *rug
! [email protected]
# Сообщения списков рассылки помещаются в отдельную папку
:0:
* То: . *list@mailinglist .example .com
$MAILDIR/mailinglist

Листинг 19.3 иллюстрирует некоторые важные особенности рецептов Procmail.

• Вложенные рецепты. Рецепты, выполняющие блокировку спама, содержатся в со­ставе другого рецепта, в результате эти фильтры применяются только для тех сообщений, которые адресованы пользователям, отличным от postmaster. (Это достигается посредством оператора отрицания, указанного в условиях включающего рецепта.) Аналогичный результат можно получить, включив условие *! То: .*postmaster в состав каждого из фильтров, предназначенных для блокирования спама. В данном простом примере это может несколько сократить объем конфигурационного файла. В более сложных фильтрах при использовании вложенных рецептов объем файла уменьшается. Кроме того, применение вложенных фильтров уменьшает вероятность ошибки, так как некоторые условия при этом указываются однократно.

• Регулярные выражения. В листинге 19.3 содержатся три рецепта, предназначенные для фильтрации рекламных сообщений. Первый из них проверяет тело сообщения (на это указывает флаг В) на наличие строки, содержащей последовательности 301, S и 1618. Этот рецепт предназначен для перехвата писем, содержащих указание на раздел 301 и номер S.1618, которые часто используются спамерами для создания иллюзии официального сообщения. Второй из рецептов, предназначенных для фильтрации спама, блокирует все письма из домена badspammer.net, а третий фильтр блокирует сообщения, содержащие в поле Subject: последовательность $$$. Обратите внимание на использование обратной косой черты для отмены специального значения символов. Все три рассматриваемых здесь рецепта направляют сообщения в файл /dev/null, т.е. удаляют их. После копирования в файл /dev/null письма уже не могут быть восстановлены. Файл блокировки для этих рецептов не требуется, так как сообщения не сохраняются ни в одной папке.

• Копирование сообщений. Вместо того чтобы записывать сообщение в файл, второй рецепт, приведенный в рассматриваемом примере, передает его другому пользователю. На это указывают флаг с и восклицательный знак в начале описания действия. Сообщение должно удовлетворять двум критериям: отправителем его должен быть пользователь [email protected], и оно должно содержать слово rug в поле заголовка Subject:. Если хотя бы одно из условий не выполняется, сообщение не копируется.

• Сортировка сообщений. Последний рецепт распределяет сообщения по папкам. Письма, адресованные [email protected], помещаются в отдельную папку, расположенную в подкаталоге рабочего каталога пользователя, предназначенного для работы с почтой. Во многих списках рассылки поле заголовка сообщения используется для идентификации самого списка, а информация о получателе сообщения включается в поле То: заголовка конверта. Для того чтобы выбрать наиболее удобный способ распределения писем по папкам, вам следует выяснить, какие данные содержатся в заголовках писем, распространяемых посредством списков рассылки.

Рецепты, приведенные в листинге 19.3, предельно просты, и их вряд ли можно использовать для решения конкретных задач, однако на их основе вы можете создать реальные рецепты. Кроме того, при необходимости вы можете внести изменения в фильтры, полученные из других источников.

Оглавление книги


Генерация: 1.291. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз