Фильтрация писем

Диалог создания правил фильтрации

Диалог создания правил фильтрации

 

Спустя некоторое время с начала использования KMail пользователь может заметить, что ему уже трудно сортировать новые письма. Фильтры позволяют автоматически производить некоторые действия над входящими письмами и вручную производить действия над выбранными письмами.

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

Примечание

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

Обычно фильтры применяются к входящим письмам, но их также возможно применить и к отправленным или к любому письму или группе писем. Чтобы выборочно отфильтровать письма, выберите их списке и нажмите комбинацию клавиш Ctrl+J или воспользуйтесь пунктом меню ПисьмоПрименить фильтр. Это применит к письмам все фильтры, отмеченные для использования в ручной фильтрации в диалоге «Правила фильтрации».

Быстрое создание правил фильтрации

Существует два способа создания правил фильтрации. Быстрый способ — это выбрать пункт меню ПисьмоСоздать фильтр и выбрать критерий фильтрации во вложенном меню. Откроется диалог фильтрации с уже заданной строкой поиска и действием Переместить в папку. В большинстве случаев всё, что нужно сделать, это выбрать папку, в которую должно быть перемещено письмо. Также возможно отредактировать фильтр на своё усмотрение.

При создании фильтра для писем списка рассылки этот метод попытается найти критерий, по которому однозначно будут идентифицироваться письма из списка. Если название списка рассылки удастся определить, оно будет отображаться в пункте меню ПисьмоСоздать фильтрФильтровать по списку рассылки....

Второй способ заключается в создании правила фильтрации с нуля вручную, вызвав диалог НастройкаНастроить фильтры.... Он подробно описан в следующем подразделе.

 

Диалог создания правил фильтрации

Этот диалог позволяет управлять правилами фильтрации.

Его возможно открыть с помощью меню Письмо Создать фильтр... или Настройка Настроить фильтры....

Диалог разделён на три основных секции на вкладках Общее и Дополнительно.

Доступные фильтры

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

Условия отбора

Эта группа позволяет редактировать строку, которую должны содержать письма, чтобы к ним был применён фильтр. Здесь возможно выбрать, должны ли подходить все условия или достаточно лишь одного совпадения. Более подробная информация содержится в разделе «Условия поиска».

Нажмите на кнопку  +  для создания нового пустого условия, если требуется задать более сложные условия поиска, либо на кнопку  − , чтобы удалить выбранное правило. Кнопка Очистить очищает список и оставляет только одно пустое правило.

Действия фильтра

Здесь возможно редактировать список действий, производящихся над письмами, которые удовлетворяют условиям поиска. Более подробное описание каждого типа действий содержится в разделе «Действия фильтра».

Чтобы добавить новое пустое действие (если требуется добавить несколько действий), нажмите на  + , а чтобы удалить выбранное действие, нажмите на  − . Кнопка Очистить очищает список и оставляет только одно пустое действие.

Дополнительные параметры

Здесь возможно настроить несколько дополнительных параметров, позволяющих повысить точность отбора писем.

Первый ряд флажков позволит выбрать, когда будет применён соответствующий фильтр: флажок Применить этот фильтр к входящим сообщениям: означает, что фильтр будет применён ко всем входящим письмам (то есть, при нажатии кнопки Проверить почту). Фильтр возможно применить ко всем письмам, ко всем офлайн учётным записям IMAP или к определённым учётным записям входящих писем.

Флажок Применять фильтр к отправленным сообщениям: означает, что фильтр будет применён ко всем исходящим письмам, а флажок Применить этот фильтр на ручной фильтрации определяет, стоит ли применять этот фильтр, если выбрана специальная фильтрация (то есть, использован пункт меню ПисьмоПрименить фильтр).

Если установлен флажок Применить этот фильтр к отправленным сообщениям:, фильтр будет срабатывать после отправки письма, и он будет работать только с локальной копией. Если копию получателя тоже требуется изменить, воспользуйтесь функцией Применять фильтр перед отправкой сообщений.

Флажок Если этот фильтр подходит, то остановите выполнение здесь позволяет указать, будут ли обрабатываться фильтры после текущего фильтра при совпадении с ним.

Если установлен флажок Добавить этот фильтр в меню «Применить фильтр», этот фильтр будет добавлен во вложенное меню ПисьмоПрименить фильтр. Затем этот фильтр можно будет применить к письму или нескольким письмам. При выборе этого параметра возможно дополнительно выбрать комбинацию клавиш и вставить специальный значок для вызова этого фильтра на панели инструментов.

Также фильтры возможно применить с помощью функции меню ПисьмоПрименить фильтры, которая применяет все фильтры один за другим, пока фильтры не закончатся или пока не будет применён фильтр с функцией При совпадении этого фильтра остановить выполнение здесь.

Примечание

Имена фильтров генерируются автоматически. Чтобы переименовать фильтр, нажмите кнопку Переименовать.... При вводе названия, начинающегося с символа «<» будет использовано автоматически сгенерированное имя.

При сохранении параметров с помощью кнопок OK или Применить будут сохраняться только правильно составленные правила фильтрации.

Пустые условия и действия автоматически удаляются соответственно из списка условий и действий перед сохранением.

 

Условия поиска

Наиболее часто фильтры используются для фильтрования писем по отправителю. Для фильтрации такого типа следует выбрать из списка условий отбора вариант Отправитель. Хорошим решением для фильтрования писем из списка рассылки будет выбор условия Все получатели, однако существуют также другие условия поиска (чувствительные к регистру символов).

Всё письмо

Поиск производится во всём письме (то есть в заголовках, теле письма и во вложениях, если они есть).

Текст письма

Поиск производится по телу письма (по всему письму кроме заголовков).

Все поля заголовка

Поиск производится во всех заголовках письма.

Все получатели

Поиск производится в заголовках «Кому» и «Копия».

Размер в байтах

Устанавливает верхний и нижний пределы размера письма.

Возраст в днях

Устанавливает верхний и нижний пределы срока давности письма.

Статус письма

Устанавливает ограничения на статус письма (Важное / Прочитанное / Непрочитанное и так далее. Подробнее: ПисьмоОтметить письмо >).

Метка письма

Ищет отмеченные письма. Относится к пункту меню ПисьмоОтметить >.

Зашифровано

Проверяет наличие зашифрованных писем.

Любое другое значение (Отправитель, Кому, Дата и так далее)

Поиск производится в поле заголовка с этим именем.

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

ПравилоДоступно дляОписание
содержит/не содержитвсех текстовых единицПоиск писем, элементы которых содержат (или не содержат) заданный текст.
равно/не равнобольшинства текстовых единицПоиск писем, элементы которых равны (или не равны) заданному тексту.
начинается с/не начинается сбольшинства текстовых единицСовпадает, если искомый элемент начинается (или не начинается) с заданного текста.
заканчивается на/не заканчивается набольшинства текстовых единицСовпадает, если искомый элемент заканчивается (или не заканчивается) заданным текстом.
совпадает c рег. выражением/не совпадает c рег. выражениемвсех текстовых единицЧасть текста (не) должна совпадать с регулярным выражением. Для составления регулярного выражения возможно воспользоваться кнопкой Изменить....
с вложениями/без вложенийВсё письмоПисьмо (не) должно содержать вложения.
равно/не равнополей с числовым значениемЧисловое значение (не) должно совпадать точно.
меньше чемполей с числовым значениемЧисловое значение должно быть меньше.
больше чемполей с числовым значениемЧисловое значение должно быть больше.
меньше или равнополей с числовым значениемЧисловое значение должно быть меньше или равно.
больше или равнополей с числовым значениемЧисловое значение должно быть больше или равно.
есть/нетСтатус письмаПисьмо (не) должно иметь указанный статус.
позже/раньше или равноЗаголовок ДатаСовпадает, если письмо было отправлено после (до) указанной даты.
раньше/позже или равноЗаголовок ДатаСовпадает, если письмо было отправлено до (после) указанной даты.

 

Действия фильтра

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

Переместить в папку

Перемещает письмо в другую папку, удаляя его из текущей.

Копировать в папку

Копирует письмо в другую папку, оставляя оригинал в текущей.

Задать профиль

Задаёт профиль для ответа на данное письмо.

Отметить как

Позволяет пометить сообщение как прочитанное, важное, перенаправленное, отвеченное и т.д.

Добавить метку

Эта функция позволяет добавить метку к письму. Возможно выбрать метку и списка всех меток, которые были созданы.

Отправить поддельное уведомление о доставке письма

Отправляет поддельное уведомление об обработке, то есть, возможно выбрать действие, которое было якобы совершено по отношению к письму.

Задать метод отправки

Задаёт метод отправки (например, SMTP) для ответа на письмо. Возможно выбрать один вариант из списка всех учётных записей электронной почты для отправки.

Задать адрес для ответа

Изменяет заголовок Адрес для ответа. Может быть полезно для письма из списка рассылки, автоматически устанавливающего нежелательный заголовок «Адрес для ответа».

Переслать по адресу

Пересылает письмо в тексте (например, как при использовании функции ПисьмоПереслатьВ тексте нового письма...) на другой адрес. Возможно выбрать свой шаблон для пересылки письма, если такой есть. Если установлен KAddressBook, во всплывающем окне возможно выбрать функцию «Переслать по адресу...».

Перенаправить по адресу

Перенаправляет письмо на другой электронный адрес. Если установлен KAddressBook, во всплывающем окне возможно выбрать функцию «Перенаправить по адресу».

Подтвердить доставку

Отправит отправителю письма подтверждение отправки письма, если отправитель запросил такое уведомление.

Это действие позволяет выбрать, кто будет получать подтверждение получения писем. Хотя их отправка может быть включена для всех отправителей в окне Настроить KMail... (на странице Безопасность), рекомендуется не отправлять их всем подряд, так как отправитель сможет легко отследить, например, доставку рекламных сообщений (спама).

Выполнить команду (только для продвинутых пользователей)

Это приведёт к выполнению программы, но не изменит письмо. Укажите полный путь к программе, которую требуется выполнить. KMail не будет откликаться до завершения программы. Чтобы продолжить нормальное выполнение KMail, добавьте «&» в конец команды. Передавать программе части письма возможно через командную строку: %0, %1 и так далее заменяются файлами, содержащими части письма. В большинстве писем %0 представляет собой текст письма, %1 — первое вложение и так далее. Кроме того, всё письмо передаётся на стандартный ввод программы (stdin). Каждый аргумент вида %{foo} заменяется значением поля заголовка foo. Чтобы идентифицировать письмо по месту его хранения в базе данных Akonadi, используйте заполнитель %{itemid} или %{itemurl} соответственно.

Предупреждение

На данный момент это работает только тогда, когда сообщение содержит по меньшей мере одно вложение. Если же нет, обычно не будет работать даже %0.

Подсказка

Возможно можете вводить сколь угодно сложные команды, так как KMail использует оболочку для выполнения команд. Поэтому в KMail будет работать даже такая команда: uudecode -o $(mktemp kmail-uudecoded.XXXXXX) && echo $'\a'

Пропустить через конвейер

Письмо передаётся по конвейеру заданной программе. Если программа что-нибудь выводит, всё письмо (включая заголовки) будет заменено выводом программы. Если программа ничего не выводит или завершается с кодом возврата, не равным нулю, письмо не будет изменено. Требуется указать полный путь к программе. В командной строке производятся те же замены (%n, %{foo}), что и при действии Выполнить команду.

И мастер антиспама, и мастер антивируса используют действие «Пропустить через конвейер» для проверки письма на наличие спама или вируса. Общедоступные программы защиты от нежелательной почты и антивирусные программы возвращают письмо и вставляют дополнительную запись заголовка, если обнаружен спам (или вирус).

Предупреждение

Используйте это действие с осторожностью, так как письма могут быть повреждены, если программа возвратит мусор или дополнительные строки.

Удалить заголовок

Удаляет из сообщения все заголовки с указанным именем. Полезно для удаления поддельных заголовков «Reply-To:».

Добавить заголовок

Добавляет новый заголовок с указанным именем и значением, если он не существует. Если же заголовок с таким именем уже существует, он заменяется указанным значением. Если существует несколько заголовков с таким именем (например, «Received:»), заменяется лишь один из них, выбранный случайным образом, остальные остаются без изменений — это известное ограничение. Возможно, потребуется использовать это действие вместе с действием Удалить заголовок для того, чтобы убедиться в отсутствии в письме других заголовков с тем же именем.

Переписать заголовок

Ищет заданный заголовок сообщения и изменяет его значение. Строка поиска интерпретируется как чувствительное к регистру символов регулярное выражение. Заменяющая строка вставляется в точности, как было указано, исключая выражения \n, $n и ${nn}, где n – неотрицательное число (одна цифра, кроме третьего выражения). Эти конструкции интерпретируются как ссылки на подстроки, заключенные в строке поиска в скобки.

Ограничение, связанное с несколькими одноимёнными заголовками в действии Добавить заголовок, также действительно и здесь.

Проиграть звук

Проигрывает указанный звук. Кнопка «Обзор» позволяет выбрать звуковой файл (например, .wav).

Добавить в адресную книгу

Если установлен KAddressBook, эта функция позволит указать, какой заголовок следует проверить (From, To, CC или BCC), какую метку назначить и в какую адресную книгу сохранить адреса.

Удалить письмо

Удаляет выбранные письма. Пользуйтесь этой функцией с осторожностью: удалённые письма нельзя будет вернуть.

Сбросить статус

Эта функция, обратная функции Пометить как. Вместо того, чтобы пометить письмо как важное или прочитанное, это действие уберёт все метки.

Шифрование

Зашифрует выбранные письма указанным открытым ключом. Возможно выбрать любую пару используемых отрытых/закрытых ключей.

Расшифровать

Расшифрует выбранные письма. Используйте эту функцию с осторожностью. KMail автоматически расшифровывает письма при их открытии для просмотра, так что, вероятно, эту функцию даже не придётся использовать самостоятельно.

 

Примеры фильтров

На данный момент KMail не выделяет и не отмечает письма, содержащие дополнительный заголовок Priority:. Чтобы отметить «срочные» письма как важные, возможно использовать фильтр:

Процедура 3.1. Пометка срочных писем как важные

  1. Откройте диалог НастройкаНастроить фильтры... и нажмите кнопку Создать под списком Доступные фильтры.

  2. В области Критерии фильтра в раскрывающихся списках выберите вариант Все поля заголовка и содержит и в текстовом поле введите Priority. Выберите тот же критерий в следующей строке и введите срочно в текстовом поле второго раскрывающегося списка.

    Фильтр будет применён ко всем письмам с заголовком «Priority: urgent».

  3. Следующая область для настройки — Действия фильтра. В первом раскрывающемся списке выберите вариант Отметить как, а во втором — Важное.

  4. Так как этот фильтр не подразумевает пропуск остальных фильтров, снимите флажок Если этот фильтр подходит, то остановите выполнение здесь на вкладке «Дополнительно».

  5. Нажмите OK.

    Перемещайте фильтр «Priority: urgent» в начало списка Доступные фильтры после добавления новых фильтров, чтобы этот фильтр всегда применялся в первую очередь.

При подписке на, например, главный список рассылки KDE, создайте папку (допустим, KDE-General) и фильтр автоматического перемещения новых писем из папки «Входящие» в папку KDE-General, если они из списка рассылки KDE. Ниже приводится объяснение, как это сделать.

Процедура 3.2. Фильтрация писем из списка рассылки

  1. Убедитесь, что функция ПисьмоСоздать фильтрФильтровать по списку рассылки... может распознать список рассылки (если может, в этом пункте меню появится название списка рассылки). Если название списка рассылки определилось, будет создан фильтр с уже установленными параметрами «List-Id содержит <kde.kde.org>». В области Действия фильтра выберите папку назначения, и на этом настройка фильтра закончится.

    Если в пункте меню не указан конкретный список рассылки, найдите признак, по которому возможно определить письма, которые требуется отфильтровать. Свойство, отличающее списки рассылки KDE — это наличие в них строки «kde@kde.org» в поле Получатель: или Копия:. Этот критерий не работает для писем, отправляемых сразу в несколько списков рассылки.

  2. Выберите Настройка Настроить Фильтры....

  3. Чтобы создать пустой фильтр, нажмите кнопку . Он будет назван <неизвестный>.

  4. В области Критерии фильтра в первом раскрывающемся списке выберите вариант Все получатели, во втором — содержит, а в текстовом поле введите kde@kde.org.

  5. Далее следует настроить раздел Действия фильтра. В первом раскрывающемся списке выберите вариант Переместить папку. Нажмите на значок папки, и откроется список, содержащий все папки. Выберите нужную папку, в демонстрируемом примере это KDE-General.

Возможно, потребуется применить более сложные условия фильтрования писем. Например, возможно отфильтровывать только сообщения из списка рассылки KDE, написанные пользователем Иваном Ивановым <ivan@anywhere.com>. Здесь будет задействована оставшаяся часть группы Условия отбора:

Процедура 3.3. Расширение фильтра

  1. Откройте окно Настроить фильтры... и выберите только что созданный фильтр.

  2. Так как нужно отсеивать письма, содержащие kde@kde.org в поле Tо: или СС: и письма от Ивана, выберите опцию Совпадает со всеми условиями.

  3. Перейдите ко второму условию отбора и выберите из раскрывающихся списков From, содержит. Введите ivan@anywhere.com в текстовое поле.

В итоге был создан фильтр, который определяет все письма от ivan@anywhere.com из списка рассылки KDE.

 

Оптимизация использования фильтров

Важно понимать, что порядок расположения фильтров влияет на скорость процесса фильтрации. Далее представлено несколько идей, которые могут помочь улучшить производительность фильтрации.

Прерывать фильтрование как можно быстрее:

Если известно, что фильтр окончательно обрабатывает определённый класс писем, а другие фильтры его никогда не обрабатывают, установите флажок При соответствии условиям фильтра прервать проверку. Это позволит после обработки письма такого класса не тратить время на его проверку другими фильтрами (подробнее: параметры диалога фильтров).

Примером служит фильтрование писем списков рассылки по заголовку List-Id для распределения по разным папкам. Если письмо принадлежит списку рассылки A, оно не может принадлежать списку B, следовательно незачем проверять так ли это.

Учитывать время работы каждого из правил:

Например, поиск строки по правилу содержит работает намного быстрее, чем сравнение с регулярным выражением.

Далее, принимайте во внимание, что проверка поля выполняется быстрее, чем проверка всего письма, так как последнее обычно большего объёма.

Попытайтесь создавать как можно более простые правила.

Проверять порядок фильтров:

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

Примером может служить фильтрация писем из списка рассылки и обнаружение нежелательной почты. Для обнаружения нежелательной почты обычно используется внешний инструмент через опцию Пропустить через конвейер. Фильтрация писем из списка рассылки будет осуществляться по заголовку List-Id. Чтобы не проверять письма из списка рассылки на наличие спама, рекомендуется использовать фильтр для писем из списка рассылки перед использованием фильтра для обнаружения нежелательной почты. Таким образом удастся избежать медленной проверки на спам всех писем, относящихся к списку рассылки.

Ведение журнала фильтрования

Чтобы проверить, работают ли фильтры так, как требуется, воспользуйтесь пунктом менюНастройкаЖурнал фильтра....

В окне просмотра возможно настроить журналирование процесса фильтрации. Возможно настроить детальность журналирования, очистить журнал, ограничить размер журнала или сохранить журнал в файл. Журнал предоставляет ценную информацию для улучшения правил фильтрации.