:0 с
* From: . *david@pangaea\.edu
* Subject: . *rug
! amy@threeroomco.com
# Сообщения списков рассылки помещаются в отдельную папку
: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письма уже не могут быть восстановлены. Файл блокировки для этих рецептов не требуется, так как сообщения не сохраняются ни в одной папке.
• Копирование сообщений. Вместо того чтобы записывать сообщение в файл, второй рецепт, приведенный в рассматриваемом примере, передает его другому пользователю. На это указывают флаг си восклицательный знак в начале описания действия. Сообщение должно удовлетворять двум критериям: отправителем его должен быть пользователь david@pangaea.edu, и оно должно содержать слово rugв поле заголовка Subject:. Если хотя бы одно из условий не выполняется, сообщение не копируется.
• Сортировка сообщений. Последний рецепт распределяет сообщения по папкам. Письма, адресованные list@mailinglist.example.com, помещаются в отдельную папку, расположенную в подкаталоге рабочего каталога пользователя, предназначенного для работы с почтой. Во многих списках рассылки поле заголовка сообщения используется для идентификации самого списка, а информация о получателе сообщения включается в поле То:заголовка конверта. Для того чтобы выбрать наиболее удобный способ распределения писем по папкам, вам следует выяснить, какие данные содержатся в заголовках писем, распространяемых посредством списков рассылки.
Рецепты, приведенные в листинге 19.3, предельно просты, и их вряд ли можно использовать для решения конкретных задач, однако на их основе вы можете создать реальные рецепты. Кроме того, при необходимости вы можете внести изменения в фильтры, полученные из других источников.
Использование существующих наборов фильтров
Создание фильтров Procmail — достаточно сложная задача, отнимающая много сил и времени. Вместо того чтобы заниматься созданием фильтра с нуля, вы можете попытаться применить для своих целей готовые фильтры. Некоторые из источников фильтров Procmail описаны ниже.
• SpamBouncer. Этот пакет представляет собой набор фильтров Procmail, предназначенных для блокирования спама. Фильтры, входящие в состав SpamBouncer, достаточно сложны, но при необходимости вы можете адаптировать некоторые из них для решения собственных задач. Подробно эти фильтры описаны в документации, поставляемой в составе пакета. Чтобы скопировать SpamBouncer, надо обратиться на его Web-страницу, расположенную по адресу http://www.spambouncer.org.
• SmartList. Этот пакет, реализующий список рассылки, создан на основе Procmail. Дополнительную информацию о нем вы можете получить из документа SmartList FAQ, доступного по адресу http://www.hartzler.net/smartlist/SmartList-FAQ.html.
Читать дальше