Linux mini-HOWTO

       

Автоматическая сортировка почты по каталогам


Если ваша ситуация подобна моей, то вы получаете около 3,500 тысяч сообщений в день. Каждый раз после получения почты, вам придется просмотреть все сообщения, выбрав те, которые вас интересуют.

Эта проблема разрешима с помощью Procmail.

Procmail работает примерно так: Procmail проверяет каждое приходящее сообщение и выполняет над ними действия, основанные на некоторых, определенных вами правилах.

Скажем, например, что каждый день я получаю приблизительно 200 сообщений от некоторого списка рассылки (в этом примере я использую список рассылки под названием linux-foo). Все эти сообщения прямиком попадают в мою главную папку входящих сообщений (inbox), а я бы хотел, что они были автоматически отфильтровывались в папку под названием "foo-list".

На первом шаге должен обрабатываться заголовок письма.

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

Sender: owner-linux-foo@bar.foogers.com

Теперь я могу указать procmail перемещать каждое сообщение, содержащее эту строку, в некоторую папку. Это делается при помощи файла ".procmailrc".

Я буду использовать мой любимый текстовый редактор, чтобы создать текстовый файл под названием ".procmailrc" в моем домашнем каталоге.

Файл будет выглядеть примерно так:

LOGFILE=$HOME/.pmlog MAILDIR=$HOME/mail VERBOSE

# linux-foo list :0 Hw * ^.*[Ss]ender: owner-linux-foo@bar.foogers.edu foo-list

# if it got to this point, put it in my new mail folder :0 Hw newmail

Рассмотрим подробнее строку "[Ss]ender". Заметьте, что эта строка есть во всех сообщениях от нашего списка рассылки.

Эта строка указывает procmail перемещать все сообщения, содержащие эту строку, в каталог "foo-list".

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

Теперь предположим, что я получаю сообщение от моего хорошего друга, EJ, и я хочу, чтобы оно попало в папку по имени "EJ".

Я добавлю новый раздел в мой файл .procmailrc.


LOGFILE=$HOME/.pmlog MAILDIR=$HOME/mail VERBOSE

# список рассылки linux-foo :0 Hw * ^.*[Ss]ender: owner-linux-foo@bar.foogers.edu foo-list

# Сообщение от E.J.! :0 Hw * ^.*[Ff]rom: ej@mypal.com ej

# если добрались до этой точки, помещаем в каталог для новой почты :0 Hw newmail



Обратите внимание на новую секцию EJ. Когда приходит сообщение с его адресом в поле "From", оно автоматически помещается в каталог "ej".

Теперь, скажем, имеется некоторый ламер, который шлет мне письма. Я не хочу получать сообщения от него, но он постоянно шлет их. Еще раз спасает procmail.

Так, предположим, что я не хочу получать почту от Билла Гейтса. Я могу добавить в файл .procmailrc раздел, удаляющий любую почту, приходящую БГ:

LOGFILE=$HOME/.pmlog MAILDIR=$HOME/mail VERBOSE

# Это пришло от Билла Гейтса? Если да, то УДАЛИТЬ ЕГО!!! :0 Hw * ^.*[Ff]rom: bgates@microsoft.com /dev/null

# список рассылки linux-foo :0 Hw * ^.*[Ss]ender: owner-linux-foo@bar.foogers.edu foo-list

# Сообщение от E.J.! :0 Hw * ^.*[Ff]rom: ej@mypal.com ej

# если добрались до этой точки, помещаем в каталог для новой почты :0 Hw newmail



Теперь у меня есть хороший файл .procmailrc. Давайте посмотрим на то, что procmail будет делать с каждым приходящим сообщением

Во-первых, он проверит, пришло ли это письмо от "bgates@microsoft.com". Если это так, то procmail удалит его.

Если письмо прошло через первую проверку, то procmail будет искать в его заголовке строку "owner-linux-foo@bar.foogers.edu". Если она есть, то procmail поместит сообщение в папку "foo-list".

Если сообщение прошло через предыдущие проверки, procmail проверяет, пришло ли оно от EJ. Если так, то procmail помещает его в папку "ej".

Теперь, если сообщение прошло через все проверки, то оно просто помещается в мою папку новой почты newmail.

После того, как вы настроили этот файл, и procmail должным образом фильтрует почту, можно войти в TkRat, выбрать "Admin - New/Edit Folder" и создать папки для каждого файла. Они будут расположены в /home/username/mail/foldername.


Содержание раздела