
Диалог создания правил фильтрации
Спустя некоторое время с начала использования KMail пользователь может заметить, что ему уже трудно сортировать новые письма. Фильтры позволяют автоматически производить некоторые действия над входящими письмами и вручную производить действия над выбранными письмами в папке.
Фильтр состоит из условий отбора, по которым определяется, применять ли фильтр к письму, и списка действий, описывающих, что делать с письмом, если оно удовлетворяет условиям.
Примечание
Правила фильтрации перебираются один за другим, начиная с первого в списке. Применяется первое правило, условиям которого удовлетворяет письмо. Можно включить обработку и остальных фильтров, но по умолчанию обработка останавливается после первого подходящего правила фильтрации.
Обычно фильтры применяются к входящим письмам, но их также можно применить и к отправленным или к любому письму или группе писем. Чтобы выборочно отфильтровать письма, выделите их в списке писем и нажмите комбинацию клавиш Ctrl+J или воспользуйтесь пунктом меню → . Это применит к письмам все фильтры, отмеченные для использования в ручной фильтрации в диалоге дополнительных параметров фильтра.
Существует два способа создания правил фильтрации. Быстрый способ — это выбрать пункт меню → и выбрать критерий фильтрации во вложенном меню. Откроется диалог фильтрации с новым фильтром, у которого уже заданы первое условие и первое действие (Переместить в папку). В большинстве случаев всё, что нужно сделать, это выбрать папку, в которую должно быть перемещено письмо. Также можно отредактировать фильтр на своё усмотрение.
При создании фильтра для писем списка рассылки этот метод попытается найти критерий, по которому однозначно будут идентифицироваться письма из списка. Если название списка рассылки удастся определить, оно будет показываться в пункте меню → → .
Второй способ заключается в создании правила фильтрации с нуля вручную, вызвав диалог → . Он подробно описан в следующем подразделе.
Этот диалог позволяет управлять правилами фильтрации.
Его можно открыть с помощью меню → или → .
Диалог разделён на три основных раздела на вкладках Общие и Дополнительно.
- Доступные фильтры
Эта группа содержит список правил фильтрации и несколько кнопок для управления фильтрами: для создания новых фильтров, перемещения их вверх или вниз по списку, копирования, удаления или переименовывания. При выборе фильтра из списка его свойства будут показываться в правой половине диалога.
- Условия отбора
Эта группа позволяет изменить условия, которым должны удовлетворять письма, чтобы к ним был применён фильтр. Здесь можно выбрать, должны ли подходить все условия или достаточно лишь одного совпадения. Более подробная информация содержится в разделе «Условия поиска».
Нажмите на кнопку для создания нового пустого условия, если требуется задать более сложные условия поиска, либо на кнопку , чтобы удалить выбранное условие. Кнопка очищает список и оставляет только одно пустое условие.
- Действия фильтра
Здесь можно редактировать список действий, производящихся над письмами, которые удовлетворяют условиям поиска. Более подробное описание каждого типа действий содержится в разделе «Действия фильтра».
Чтобы добавить новое пустое действие (если требуется добавить несколько действий), нажмите на , а чтобы удалить выбранное действие, нажмите на . Кнопка очищает список и оставляет только одно пустое действие.
- Дополнительные параметры
Здесь можно настроить несколько дополнительных параметров, позволяющих повысить точность отбора писем.
Первый ряд флажков определяет, когда применяется фильтр: флажок Применять этот фильтр к входящим сообщениям: означает, что фильтр применяется к письмам при их получении (то есть при нажатии кнопки
Проверить почту). Фильтр можно применять ко всем письмам, ко всем, кроме учётных записей IMAP в сетевом режиме, или к определённым учётным записям входящей почты.Флажок Применять этот фильтр к отправленным сообщениям означает, что фильтр применяется к письмам при их отправке, а флажок Применять этот фильтр при ручной фильтрации определяет, применять ли этот фильтр при явном запуске фильтрации (то есть с помощью пункта меню → ).
Если установлен флажок Применять этот фильтр к отправленным сообщениям, фильтр будет срабатывать после отправки письма, и он будет работать только с локальной копией. Если копию получателя тоже требуется изменить, воспользуйтесь функцией Применять этот фильтр перед отправкой сообщений.
Флажок При совпадении этого фильтра прекращать обработку позволяет указать, будут ли обрабатываться фильтры после текущего фильтра при совпадении с ним.
Если установлен флажок Добавлять этот фильтр в меню «Применить фильтр», этот фильтр будет добавлен во вложенное меню → . Затем этот фильтр можно будет применить к письму или нескольким письмам. При выборе этого параметра возможно дополнительно выбрать комбинацию клавиш и вставить специальный значок для вызова этого фильтра на панели инструментов.
Также фильтры можно применить с помощью пункта меню → , которая применяет все фильтры один за другим, пока фильтры не закончатся или пока не будет применён фильтр с флажком При совпадении этого фильтра прекращать обработку.
Примечание
Имена фильтров создаются автоматически, пока фильтр не переименован явно с помощью кнопки . Автоматическое именование продолжается, пока имя фильтра начинается с «<».
При сохранении параметров с помощью кнопок или будут сохраняться только правильно составленные правила фильтрации.
Пустые условия и действия автоматически удаляются соответственно из списка условий и действий перед сохранением.
Наиболее часто фильтры используются для фильтрования писем по отправителю. Для фильтрации такого типа следует выбрать из списка условий отбора вариант Отправитель. Хорошим решением для фильтрования писем из списка рассылки будет выбор условия Все получатели, однако существуют также другие условия поиска (обратите внимание, что все условия не зависят от регистра символов).
- Всё письмо
Поиск производится во всём письме (то есть в заголовках, теле письма и во вложениях, если они есть).
- Текст письма
Поиск производится по телу письма (по всему письму кроме заголовков).
- Все поля заголовка
Поиск производится во всех заголовках письма.
- Все получатели
Поиск производится в заголовках «Кому» и «Копия».
- Размер в байтах
Устанавливает верхний или нижний пределы размера письма.
- Возраст в днях
Устанавливает верхний или нижний пределы срока давности письма.
- Статус письма
Устанавливает ограничения на статус письма (Важное / Прочитанное / Непрочитанное и так далее. Подробнее: → ).
- Метка письма
Ищет отмеченные письма. См. пункт меню → .
- Зашифровано
Проверяет наличие зашифрованных писем.
- Любое другое значение (Отправитель, Кому, Дата и так далее)
Поиск производится в поле заголовка с этим именем.
Список доступных правил зависит от того, что было выбрано в первом раскрывающемся списке:
| Правило | Доступно для | Описание |
|---|---|---|
| содержит/не содержит | всех текстовых единиц | Совпадает, если искомый элемент содержит (или не содержит) заданный текст. |
| равно/не равно | большинства текстовых единиц | Совпадает, если искомый элемент равен (или не равен) заданному тексту. |
| начинается с/не начинается с | большинства текстовых единиц | Совпадает, если искомый элемент начинается (или не начинается) с заданного текста. |
| заканчивается на/не заканчивается на | большинства текстовых единиц | Совпадает, если искомый элемент заканчивается (или не заканчивается) заданным текстом. |
| удовлетворяет рег. выр./не удовлетворяет рег. выр. | всех текстовых единиц | Совпадает, если часть искомого элемента соответствует (или не соответствует) заданному регулярному выражению. Если установлен редактор регулярных выражений, выражение можно изменить, нажав кнопку Изменить…. |
| с вложениями/без вложений | Всё письмо | Совпадает, если письмо содержит (или не содержит) вложения. |
| равен/не равен | полей с числовым значением | Совпадает, если значение искомого элемента равно (или не равно) заданному. |
| меньше чем | полей с числовым значением | Совпадает, если значение искомого элемента меньше заданного. |
| больше чем | полей с числовым значением | Совпадает, если значение искомого элемента больше заданного. |
| меньше или равен | полей с числовым значением | Совпадает, если значение искомого элемента меньше заданного или равно ему. |
| больше или равен | полей с числовым значением | Совпадает, если значение искомого элемента больше заданного или равно ему. |
| является/не является | Статус письма | Совпадает, если письмо имеет (или не имеет) указанный статус. |
| позже/раньше или равна | Заголовок Дата | Совпадает, если письмо было отправлено после указанной даты (или не после неё). |
| раньше/равна или позже | Заголовок Дата | Совпадает, если письмо было отправлено до указанной даты (или не до неё). |
Фильтры в основном применяются для сортировки входящих писем по разным папкам. Чтобы сделать это, выберите действие Переместить в папку. Возможны следующие действия:
- Переместить в папку
Перемещает письмо в другую папку, удаляя его из текущей.
- Копировать в папку
Копирует письмо в другую папку, оставляя оригинал в текущей.
- Задать профиль
Задаёт профиль для ответа на данное письмо.
- Отметить как
Позволяет отметить письмо как прочитанное или важное (с флажком), а также как пересланное, отвеченное и так далее.
- Добавить метку
Добавляет к письму метку. Её можно выбрать из списка всех созданных меток.
- Отправить поддельное уведомление об обработке письма
Отправляет отправителю письма поддельное уведомление об обработке (то есть квитанцию о прочтении).
- Задать метод отправки
Задаёт метод отправки (например, SMTP) для ответа на письмо. Можно выбрать один вариант из списка всех учётных записей электронной почты для отправки.
- Задать адрес для ответа
Изменяет заголовок Адрес для ответа. Это может быть полезно для списков рассылки, которые автоматически подставляют нежелательный адрес для ответа.
- Переслать по адресу
Пересылает письмо в тексте (то есть так же, как пункт меню → → ) на другой адрес. Если задан шаблон для пересылки, его можно выбрать. Если установлен KAddressBook, адрес «Переслать по адресу» можно выбрать во всплывающем окне.
- Перенаправить по адресу
Перенаправляет письмо как есть на другой адрес электронной почты. Если установлен KAddressBook, адрес «Перенаправить по адресу» можно выбрать во всплывающем окне.
- Подтвердить доставку
Отправляет отправителю подтверждение успешной доставки его письма, если отправитель его запросил.
Это действие позволяет выбрать, кто будет получать подтверждение получения писем. Хотя их отправка может быть включена для всех отправителей в окне Настроить KMail… (на странице Безопасность), рекомендуется не отправлять их всем подряд, так как это сильно облегчает рассылающим спам отслеживание писем.
- Выполнить команду (только для опытных пользователей)
Это приведёт к выполнению программы, но не изменит письмо. Укажите полный путь к программе, которую требуется выполнить. KMail не будет откликаться до завершения программы. Чтобы KMail не ждал, добавьте «&» в конец команды. Передавать программе части письма возможно через командную строку: %0, %1 и так далее заменяются файлами, содержащими части письма. В большинстве писем %0 представляет собой текст письма, %1 — первое вложение и так далее. Кроме того, всё письмо передаётся на стандартный ввод программы (stdin). Каждый аргумент вида %{foo} заменяется значением поля заголовка foo. Чтобы идентифицировать письмо по месту его хранения в базе данных Akonadi, используйте заполнитель %{itemid} или %{itemurl}.
Предупреждение
Сейчас это работает, только если письмо содержит хотя бы одно вложение. В общем случае не будет работать даже %0!
Подсказка
Здесь можно вводить сколь угодно сложные команды оболочки, так как KMail выполняет командную строку во вложенной оболочке; поэтому будет работать даже такая команда (в пределах её возможностей):
uudecode-o$(mktemp kmail-uudecoded.XXXXXX)&& echo$'\a'- Пропустить через конвейер
Письмо передаётся по конвейеру заданной программе. Если программа что-нибудь выводит, всё письмо (включая заголовки) будет заменено выводом программы. Если программа ничего не выводит или завершается с кодом возврата, не равным нулю, письмо не будет изменено. Требуется указать полный путь к программе. В командной строке производятся те же замены (%n, %{foo}), что и при действии Выполнить команду.
И мастер антиспама, и мастер антивируса используют действие «Пропустить через конвейер» для проверки письма на наличие спама или вируса. Общедоступные программы защиты от нежелательной почты и антивирусные программы возвращают письмо и вставляют дополнительную запись заголовка, если обнаружен спам (или вирус).
Предупреждение
Используйте это действие с осторожностью, так как письма могут быть повреждены, если программа возвратит мусор или дополнительные строки.
- Удалить заголовок
Удаляет из письма все заголовки с указанным именем. Полезно для удаления поддельных заголовков «Reply-To:».
- Добавить заголовок
Добавляет новый заголовок с указанным именем и значением, если он не существует. Если же заголовок с таким именем уже существует, он заменяется указанным значением. Если существует несколько заголовков с таким именем (например, «Received:»), заменяется лишь один из них, произвольный, остальные остаются без изменений — это известное ограничение. Возможно, потребуется использовать это действие вместе с действием Удалить заголовок для того, чтобы убедиться в отсутствии в письме других заголовков с тем же именем.
- Переписать заголовок
Ищет заданное поле заголовка письма, изменяет его значение и записывает обратно. Строка поиска интерпретируется как чувствительное к регистру символов регулярное выражение. Заменяющая строка вставляется в точности, как было указано, исключая выражения
\n,$nи${nn}, гдеn– положительное число (из одной цифры, кроме третьей формы) или0. Эти конструкции интерпретируются как ссылки на подстроки, заключённые в строке поиска в скобки.Ограничение, связанное с несколькими одноимёнными заголовками в действии Добавить заголовок, также действительно и здесь.
- Воспроизвести звук
Воспроизводит указанный звук. Кнопка «Обзор» позволяет выбрать звуковой файл (например, .wav).
- Добавить в адресную книгу
Если установлен KAddressBook, это действие позволяет указать, какой заголовок следует проверить (From, To, CC или BCC), какую метку назначить и в какую адресную книгу сохранить адреса.
- Удалить письмо
Удаляет выбранные письма. Пользуйтесь этой функцией с осторожностью: удалённые письма нельзя будет вернуть.
- Сбросить статус
Действие, обратное действию Отметить как (см. выше). Вместо того чтобы отмечать письмо как важное, прочитанное и так далее, это действие снимает указанную отметку.
- Зашифровать
Зашифрует выбранные письма указанным открытым ключом. Можно выбрать любую пару открытого и закрытого ключей из своей связки ключей.
- Расшифровать
Расшифрует выбранные письма. Используйте эту функцию с осторожностью. KMail автоматически расшифровывает письма при их открытии для просмотра, так что, вероятно, эту функцию даже не придётся использовать самостоятельно.
На данный момент KMail не выделяет и не отмечает письма, содержащие дополнительный заголовок Priority:. Чтобы отметить «срочные» письма как важные, можно использовать фильтр:
Процедура 3.1. Пометка срочных писем как важных
Откройте диалог → и нажмите кнопку
Создать под списком Доступные фильтры.В области Условия отбора в раскрывающихся списках выберите вариант Все поля заголовка и содержит и в текстовом поле введите
Priority. Выберите тот же критерий в следующей строке и введитеurgentв текстовом поле второго раскрывающегося списка.Фильтр будет применён ко всем письмам с заголовком «Priority: urgent».
Следующая область для настройки — Действия фильтра. В первом раскрывающемся списке выберите вариант Отметить как, а во втором — Важное.
Так как этот фильтр не подразумевает пропуск остальных фильтров, снимите флажок При совпадении этого фильтра прекращать обработку на вкладке «Дополнительно».
Нажмите — готово.
Перемещайте фильтр «Priority: urgent» в начало списка Доступные фильтры после добавления новых фильтров, чтобы этот фильтр всегда применялся в первую очередь.
Если вы подписаны на общий список рассылки KDE, можно создать папку (допустим, KDE-General) и фильтр автоматического перемещения новых писем из папки «Входящие» в папку KDE-General, если они из списка рассылки KDE. Ниже приводится объяснение, как это сделать.
Процедура 3.2. Фильтрация писем из списка рассылки
Убедитесь, что функция → → может распознать список рассылки (если может, в этом пункте меню появится название списка рассылки). Если название списка рассылки определилось, будет создан фильтр с уже установленными параметрами «List-Id содержит <kde.kde.org>». В области Действия фильтра выберите папку назначения, и на этом настройка фильтра закончится.
Если в пункте меню не указан конкретный список рассылки, найдите признак, по которому можно определить письма, которые требуется отфильтровать. (Почти) уникальное свойство писем из списка рассылки KDE — наличие в них строки «kde@kde.org» в поле Кому: или Копия:. Этот критерий не работает для писем, отправляемых сразу в несколько списков рассылки.
Выберите → .
Чтобы создать пустой фильтр, нажмите кнопку . Он будет назван <неизвестный>.
В области Условия отбора в первом раскрывающемся списке выберите вариант Все получатели, во втором — содержит, а в текстовом поле введите
kde@kde.org.Далее следует настроить раздел Действия фильтра. В первом раскрывающемся списке выберите вариант Переместить в папку. Нажмите на значок папки, и откроется список, содержащий все папки. Выберите нужную папку, в демонстрируемом примере это KDE-General.
Возможно, потребуется применить более сложные условия фильтрования писем. Например, может потребоваться отбирать только письма из списка рассылки KDE, написанные вашим другом Иваном Ивановым <ivan@anywhere.com>. Здесь будет задействована оставшаяся часть группы Условия отбора:
Процедура 3.3. Расширение фильтра
Откройте окно Настроить фильтры… и выберите только что созданный фильтр.
Так как нужно отбирать письма, содержащие
kde@kde.orgв поле Кому: или Копия: и отправленные Иваном, выберите переключатель .Перейдите ко второму условию отбора и выберите из раскрывающихся списков Отправитель, содержит. Введите
ivan@anywhere.comв текстовое поле.
В итоге был создан фильтр, который определяет все письма от ivan@anywhere.com из списка рассылки KDE.
Важно понимать, что порядок расположения фильтров влияет на скорость процесса фильтрации. Далее представлено несколько идей, которые могут помочь улучшить производительность фильтрации.
- Прерывать фильтрование как можно быстрее:
Если известно, что фильтр окончательно обрабатывает определённый класс писем, а другие фильтры его никогда не обрабатывают, установите флажок При совпадении этого фильтра прекращать обработку. Это позволит после обработки письма такого класса не тратить время на его проверку другими фильтрами (подробнее: параметры диалога фильтров).
Примером служит фильтрование писем списков рассылки по заголовку List-Id для распределения по разным папкам. Если письмо принадлежит списку рассылки A, оно не может принадлежать списку B, следовательно, проверять для него следующий фильтр (для списка B) не нужно.
- Учитывать время работы каждого из правил:
Время проверки правила зависит от того, как оно составлено. В частности, поиск подстроки с помощью операции содержит выполняется быстрее, чем сопоставление с шаблоном с помощью операции удовлетворяет рег. выр..
Время также зависит от объёма данных, используемых при проверке правила. Правило, основанное на заголовке письма, обычно проверяется гораздо быстрее, чем правило, основанное на всём письме.
Попытайтесь создавать как можно более простые правила.
- Проверять порядок фильтров:
Различные действия фильтра имеют разную степень сложности. Больше всего времени требуется на Пропустить через конвейер и Выполнить команду, потому что при этом происходит передача управления внешним программам. Полезно располагать фильтры с такими действиями после других фильтров, которые могут сократить число выполнений этих сложных действий, если логика фильтров это позволяет.
Примером может служить фильтрация писем из списка рассылки и обнаружение нежелательной почты. Для обнаружения нежелательной почты обычно используется внешний инструмент с помощью действия Пропустить через конвейер. Фильтрация писем из списка рассылки будет осуществляться по заголовку List-Id. Чтобы не проверять письма из списка рассылки на наличие спама, рекомендуется использовать фильтр для писем из списка рассылки перед использованием фильтра для обнаружения нежелательной почты. Таким образом удастся избежать медленной проверки на спам всех писем, относящихся к списку рассылки.
Чтобы проверить, работают ли фильтры так, как требуется, откройте окно просмотра журнала фильтрации с помощью пункта меню → .
В окне просмотра можно настроить журналирование процесса фильтрации. Можно настроить детальность журналирования, очистить журнал, ограничить размер журнала или сохранить журнал в файл. Журнал предоставляет ценную информацию для улучшения правил фильтрации.
