Это команда claws-mail-perl-filter, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
cm_perl — плагин Perl для Claws Mail
ОПИСАНИЕ
Этот плагин предоставляет расширенный механизм фильтрации для почтового клиента Claws Mail. Это
позволяет использовать все возможности Perl в фильтрах электронной почты.
БЫСТРО Начать игру
Для начала вы можете использовать matcherrc2perlfilter.pl сценарий в инструменты-каталог для
переведите свои старые правила фильтрации на Perl. Просто запустите скрипт и следуйте инструкциям
инструкции. (обратите внимание, что в последних версиях Claws Mail этот скрипт может не работать
из-за изменений синтаксиса восходящего потока. Это будет обновлено в будущем. Отправьте мне письмо, если
у вас проблемы с началом работы).
Тем не менее, вы можете рассмотреть возможность прочитать остальную часть этого руководства и переписать
правила, если вы решите использовать плагин, поскольку код Perl, созданный этим скриптом, не является
точно красиво.
Не говорите на Perl? Нет проблем, "perldoc perlintro" должен дать вам достаточно информации для действий.
Модные вещи.
ИСПОЛЬЗОВАНИЕ
Плагин Perl ожидает файл сценария Perl с именем perl_filter в конфигурации Claws Mail'
каталог (обычно $HOME/.claws-mail — попробуйте `claws-mail --config-dir', если вы не уверены).
Если этот файл не существует при запуске плагина, создается пустой файл. Этот файл, который
не обязательно начинать с ша-банга (!#/bin/perl), содержит инструкции Perl для вашего
фильтры электронной почты. Чтобы поощрить хорошие манеры, код выполняется с использованием строгого режима;
окружающей среды.
Фильтрация почты обеих когтей Условия и действия сопоставляются с функциями Perl с помощью
соответствующие имена, где это возможно.
Функция СПИСОК
Подробное описание функций см. в разделе «ОПИСАНИЕ ФУНКЦИЙ» ниже.
Стандартные условия фильтрации
все, отмеченные, непрочитанные, удаленные, новые, ответили,
перенаправлено, заблокировано, ignore_thread, цветовая метка,
совпадение, регистр совпадений, регулярное выражение, S
размер_больше, размер_меньше, размер_равен,
оценка_больше, оценка_ниже, оценка_равна, возраст_больше,
age_lower, частичный, с тегами
Стандартные действия фильтрации
отметить, снять отметку, удалить, пометить_как_непрочитанным, пометить_как_прочитанным,
заблокировать, разблокировать, переместить, скопировать, раскрасить, выполнить,
скрыть, set_score, изменить_score, остановить, вперед,
перенаправление_as_attachment, перенаправление, set_tag, unset_tag,
Clear_tags
Забавные вещи
заголовок, тело, путь к файлу, Extract_addresses,
move_to_trash, прервать, addr_in_addressbook,
from_in_addressbook, get_attribute_value, SA_is_spam,
выход, руководство, make_sure_folder_exists,
filter_log, filter_log_verbosity,
make_sure_tag_exists
Функция ОПИСАНИЯ
Обычно после фильтрации, вызываемой Perl-скриптом, почта передается
Внутренний механизм фильтрации Claws, если не a окончательный правило было нарушено. Окончательные правила останавливают не только
сценарий фильтрации Perl в момент их возникновения, но также предотвращает обработку
это письмо внутренней системой фильтрации Claws (это может показаться запутанным, но вы
уже знаком с этой концепцией по стандартным фильтрам: например, после того, как электронное письмо было двигатьсяd,
следующие правила больше не применяются).
Кроме того, будьте осторожны с тем, как вы цитируете. В частности, помните, что знак @ имеет
имеет особое значение в Perl и интерполируется внутри двойных кавычек. См. «Цитата и цитата-
типа «Операторы» в Perlop, чтобы узнать больше о цитировании и интерполяции.
Стандарт фильтрация Conditions
all Возвращает истинное значение. Доступно только для полноты.
помечено Возвращает значение true, если установлен отмеченный флаг, в противном случае — значение false.
unread Возвращает истинное значение, если установлен флаг непрочитанного, в противном случае — false.
delete Возвращает истинное значение, если установлен флаг удаления, в противном случае — false.
new Возвращает истинное значение, если установлен новый флаг, и ложное в противном случае.
Answered Возвращает истинное значение, если установлен флаг ответа, в противном случае — false.
пересылаются
Возвращает истинное значение, если установлен флаг пересылки, и ложное в противном случае.
locked Возвращает истинное значение, если установлен флаг блокировки, в противном случае — false.
ignore_thread
Возвращает значение true, если установлен флаг «Игнорировать поток», в противном случае — значение false.
цветовая метка ЦВЕТ
цветовая метка
Возвращает истинное значение, если сообщение имеет цвет COLOR. ЦВЕТ может быть числовым
значение от 0 до 7 (цвета соответствуют внутренней фильтрации).
engine) или название цвета на английском языке, как оно представлено в диалоговом окне фильтрации.
(то есть одно из: нет, оранжевый, красный, розовый, небесно-голубой, синий, зеленый или коричневый, а
буквы верхнего и нижнего регистра не имеют значения). Если COLOR опущен, 0 (нет)
предполагается.
size_greater РАЗМЕР
Возвращает истинное значение, если размер сообщения больше SIZE, в противном случае — false.
size_smaller РАЗМЕР
Возвращает истинное значение, если размер сообщения меньше SIZE, в противном случае — false.
size_equal РАЗМЕР
Возвращает истинное значение, если размер сообщения равен SIZE, в противном случае — false.
счет_больший балл
Возвращает истинное значение, если оценка сообщения превышает SCORE, в противном случае — false.
Score_lower SCORE
Возвращает истинное значение, если оценка сообщения ниже SCORE, в противном случае — false.
Score_equal ОЦЕНКА
Возвращает истинное значение, если оценка сообщения равна SCORE, в противном случае — false.
age_greater ВОЗРАСТ
Возвращает истинное значение, если возраст сообщения больше AGE, в противном случае — false.
age_нижний ВОЗРАСТ
Возвращает истинное значение, если возраст сообщения меньше AGE, в противном случае — false.
частичный Возвращает истинное значение, если сообщение было загружено только частично, ложь
в противном случае.
tagged Возвращает истинное значение, если сообщение имеет один или несколько тегов.
test Соответствует внутреннему правилу фильтрации «test». В частности, он принимает то же самое
символы, а именно:
%%%
%s Тема
%f от
%t Кому
%c копия
%d Дата
%i идентификатор сообщения
%n групп новостей
%r ссылок
%F Имя файла — не следует изменять
совпадение ГДЕ ЧТО
спичечный коробок ГДЕ ЧТО
регулярное выражение ГДЕ ЧТО
регулярное выражение ГДЕ ЧТО
Функции сопоставления имеют специальный синтаксис. Первый аргумент — любой из
to_or_cc, body_part, headers_part, headers_cont, сообщение, кому, от, тема, копия,
группы новостей, inreplyto, ссылки или теги (эти строки могут быть или не быть
цитируется), сопоставление с образцом работает в этой области. Если это любая другая строка (которая
затем необходимо заключить в кавычки), эта строка считается именем поля заголовка.
Второй аргумент — это строка, которую нужно найти. Для совпадений, совпадений, регулярных выражений и
регулярное выражение у нас есть нормальное сопоставление с учетом регистра, нормальное соответствие без учета регистра
сопоставление, регулярное выражение с учетом регистра и регулярное выражение без учета регистра
сопоставление шаблонов выражений соответственно.
Функции возвращают true, если шаблон был найден, и false в противном случае.
Как и при использовании встроенного механизма фильтрации, выполняется поиск по телу сообщения и
предоставляется как есть - анализ набора символов не проводится. Аналогично, никакие HTML-теги не
раздет. Для этого должна быть возможность использовать внешние модули или программы.
задачи однако. Если вы это делаете, напишите мне сообщение о своем опыте.
Поскольку Perl обладает сильными сторонами в сопоставлении с образцом, использование встроенных операторов Perl
обычно являются лучшим вариантом, чем использование этих функций.
Стандарт фильтрация Действия
Действия возвращают истинное значение в случае успеха и «undef» в случае возникновения ошибки. Завершение
указаны правила сообщений. (См. выше эскиз того, что такое окончательное правило)
mark Отметить сообщение.
снять отметку Снять отметку с сообщения.
удалить Удалить сообщение. Обратите внимание на изменение названия Claws Mail с «delete» на «dele». Этот
потому что «удалить» — это одна из встроенных команд Perl, которую нельзя переопределить.
(если можно, подскажите как).
Это окончательный править.
пометить, как прочитанное
Отметить сообщение как прочитанное
пометить_as_unread
Отметить сообщение как непрочитанное
заблокировать Заблокировать сообщение
разблокировать снять блокировку сообщений
переместить НАЗНАЧЕНИЕ
Переместите сообщение в папку НАЗНАЧЕНИЕ. Обозначение папки такое же, как у Claws.
Почтой пользуется. Вы можете скопировать и вставить из диалогового окна перемещения обычной фильтрации,
пока не почувствуете обозначение.
Это окончательный править.
скопировать НАЗНАЧЕНИЕ
Скопируйте сообщение в папку DESTINATION. Обозначение папки такое же, как у Claws.
Почтой пользуется. Вы можете скопировать и вставить из диалогового окна перемещения обычной фильтрации,
пока не почувствуете обозначение.
выполнить КОМАНДУ
Это то же самое, что и тест-правило из раздела «Стандартные условия фильтрации».
за исключением того, что он всегда возвращает истинное значение.
скрыть Скрыть сообщение
set_score ОЦЕНКА
Установить оценку сообщения на SCORE
Change_score ОЦЕНКА
Изменить оценку сообщения по SCORE
остановите сценарий Stop Perl на этом этапе. Обратите внимание, что это последнее правило, означающее, что
электронная почта передается во внутреннюю систему фильтрации. См. «прерывание» ниже, если
ты этого не хочешь.
переслать АККАУНТ, ЭЛЕКТРОННУЮ ПОЧТУ
Переслать сообщение на адрес электронной почты EMAIL, используя идентификатор учетной записи ACCOUNT в качестве отправителя.
счет. Пока что вам нужно создать правило в обычном механизме фильтрации, чтобы найти
из этого числа.
переслать_as_attachment, ЭЛЕКТРОННАЯ ПОЧТА АККАУНТА
Переслать сообщение на адрес электронной почты EMAIL во вложении, используя идентификатор учетной записи.
ACCOUNT в качестве учетной записи отправителя. Пока что вам нужно создать правило в обычном режиме.
фильтрующий механизм, чтобы узнать это число.
перенаправить АККАУНТ, ЭЛЕКТРОННУЮ ПОЧТУ
Перенаправьте сообщение на адрес EMAIL, используя идентификатор учетной записи ACCOUNT в качестве учетной записи отправителя. Так
далеко, вам нужно создать правило в обычном механизме фильтрации, чтобы узнать, что
номер.
set_tag ТЕГ
Примените тег TAG. ТАГ должен существовать.
unset_tag ТЕГ
Удалить тег TAG.
Clear_tags
Очистить все теги.
Fun материал
функции
заголовок ARG
заголовок Если ARG не указан, возвращает список всех имен полей заголовка письма.
Если задан ARG, возвращает «undef», если поле заголовка ARG не существует в
электронная почта. В противном случае он возвращает
в скалярном контексте
Значение поля заголовка ARG.
в контексте списка
Список всех доступных значений полей заголовка. Это полезно, если поле заголовка
встречается в электронном письме более одного раза (например, заголовок «Получено»).
Поле заголовка «Ссылки» представляет собой особый случай. В скалярном контексте это
возвращает первую ссылку. В контексте списка он возвращает список всех
Рекомендации.
body Возвращает тело электронного письма в скалярном виде.
Путь файла
Возвращает файл и путь к электронному письму, которое в данный момент фильтруется (соответствует
аргумент %F в правиле «тест»).
экстракт_адреса
Извлекает адреса электронной почты из строки и возвращает список найденных адресов.
В настоящее время адрес электронной почты находится с помощью регулярного выражения
'[-.+\w]+\@[-.+\w]+'. При этом не будут найдены все действительные адреса электронной почты. Не стесняйся
пришлите мне лучшее регулярное выражение.
Переместить в корзину
Переместите сообщение электронной почты в папку корзины по умолчанию.
Это окончательный править.
прервать сценарий Stop Perl на этом этапе.
В отличие от слова «стоп», это окончательный править.
addr_in_addressbook ЭЛЕКТРОННАЯ ПОЧТА, АДРЕСНАЯ КНИГА
addr_in_addressbook ЭЛЕКТРОННАЯ ПОЧТА
Возвращает истинное значение, если адрес электронной почты EMAIL находится в адресной книге с
имя АДРЕСНАЯ КНИГА. Если ADDRESSBOOK не указан, возвращается true, если адрес электронной почты
есть в любой адресной книге.
from_in_addressbook АДРЕСНАЯ КНИГА
from_in_addressbook
Проверяет, находится ли адрес электронной почты, найденный в заголовке From, в адресной книге ADDRESSBOOK.
(или любой, если опущен). Он реализован как
my ($from) = extract_addresses(header("from"));
вернуть 0, если только $from;
вернуть addr_in_addressbook($from,@_);
поэтому применяются те же ограничения, что и для Extract_addresses.
get_attribute_value EMAIL, АТРИБУТ, АДРЕСНАЯ КНИГА
get_attribute_value ЭЛЕКТРОННАЯ ПОЧТА, АТРИБУТ
Просматривает адресную книгу ADDRESSBOOK (или все адресные книги, если они опущены) на предмет
свяжитесь с адресом электронной почты EMAIL. Если найдено, функция проверяет, является ли это
контакт имеет атрибут пользователя с именем ATTRIBUTE. Он возвращает значение этого
атрибут или пустую строку, если она не найдена. Как обычно, возвращается «undef».
если произошла ошибка.
SA_is_spam
Является псевдонимом
не проверять 'spamc -c <%F > /dev/null'
выход Был переопределен как псевдоним для «остановки». Вам не следует использовать собственный «выход» Perl.
команда, так как она выйдет из Claws Mail.
manual Возвращает истинное значение, если сценарий фильтра был вызван вручную, то есть через
Меню инструментов.
make_sure_folder_exists ИДЕНТИФИКАТОР
Возвращает истинное значение, если папка с идентификатором IDENTIFIER (например, #mh/Mail/foo/bar)
существует или может быть создан.
make_sure_tag_exists ТЕГ
Возвращает истинное значение, если тег TAG существует или может быть создан.
filter_log РАЗДЕЛ, ТЕКСТ
filter_log ТЕКСТ
Записывает ТЕКСТ в файл журнала фильтра. РАЗДЕЛ может быть любым из
· "LOG_MANUAL"
· "LOG_MATCH"
· "LOG_ACTION"
Если SECTION опущен, предполагается «LOG_MANUAL».
filter_log_verbosity ПОДРОБНОСТЬ
filter_log_verbosity
Изменяет уровень детализации журнала фильтра для текущей почты. VERBOSITY должно быть любым из
0 Молчи
1 Тип журнала РУЧНОЙ
2 Тип действия журнала
3 Тип журнала ПОИСКПОЗ
Чтобы узнать значение этих цифр, прочтите раздел «РЕГИСТРАЦИЯ». Если VERBOSITY опущено,
уровень детализации файла журнала фильтра не изменяется.
Эта функция возвращает номер filter_log_verbosity до изменения (если таковое имеется).
Переменные
$постоянный
Этот скаляр сохраняет свое значение между отфильтрованными почтовыми сообщениями. При запуске плагина это
инициализируется пустой строкой.
ВЕДЕНИЕ ЖУРНАЛА
Чтобы отслеживать, что было сделано с письмами во время фильтрации, плагин поддерживает
Ведение журнала. Распознаются три уровня детализации:
0 ведение журнала отключено
1 регистрировать только ручные сообщения, то есть сообщения, введенные командой «filter_log» в
фильтровать сценарии
2 журнала ручных сообщений и фильтрация действий
3 зарегистрированных вручную сообщения, фильтрация действий и совпадений фильтров.
Сообщения регистрируются в окне журнала Claws Mail. Уровень журнала по умолчанию — 2. Уровень журнала.
3 не рекомендуется, поскольку функции сопоставления регистрируют сообщение в случае успеха, и
таким образом, если у вас отрицательные чеки, вы получите запутанные записи. Если вы хотите отслеживать
сопоставления, сделайте это вручную, используя «filter_log», или сделайте это, временно включив сопоставитель
ведение журнала с использованием «filter_log_verbosity».
Когда вы впервые выгрузите этот плагин (или закроете Claws Mail), появится раздел под названием
[ПерлПлагин] будет создан в файле конфигурации Claws Mail. когтиrc, содержащий один
переменная:
* filter_log_verbosity
Если вы хотите изменить поведение по умолчанию, вы можете отредактировать эту строку. Убедитесь, что Claws Mail
не работает, пока вы это делаете.
Доступ к этим настройкам можно будет получить через графический интерфейс, как только я найду время для этого.
напишите соответствующий плагин GTK, или кто-то еще заинтересован в этом.
ПРИМЕР
В этом разделе приведен небольшой пример файла сценария Perl. Я уверен, что вы поняли идею..
#-8<---------------------------------------------- ------
# -*- перл --*-
# локальные функции
# Изучите сообщения радиолюбителей и переместите их в указанную папку. Это
# полезно, чтобы убедиться, что байесовский фильтр также видит ветчину.
субlearn_and_move {
выполнить('поместите сюда команду для изучения радиолюбителя');
двигаться(@_);
}
# Двухступенчатый спам-фильтр. Каждое электронное письмо, получившее оценку выше 15.
# на SpamAssassin перемещается в папку мусора по умолчанию.
# Все письма ниже этого значения, но выше, чем у SpamAssassin
# 'required_hits' перейдите в #mh/mail/Spam.
дополнительная проверка на спам {
мой $surely_spam = 15;
мой $filepath = путь к файлу;
мой $spamc = `spamc -c <$filepath`;
my ($value,$threshold) = ($spamc =~ m|([-.,0-9]+)/([-.,0-9]+)|);
if($value >= $surely_spam) {
пометить, как прочитанное;
Переместить в корзину;
}
if($value >= $threshold) {mark_as_read; переместите '#mh/mail/Spam';}
}
# Здесь начинается выполнение Perl-скрипта.
# Некоторая специфическая сортировка
Learn_and_move '#mh/mail/MailLists/Claws Mail/user'
if matchcase('отправитель','[электронная почта защищена]«);
Learn_and_move '#mh/mail/MailLists/Sylpheed'
if matchcase('list-id','sylpheed.good-day.net');
# Реализовать импорт папок с помощью адресной книги
# атрибуты. Целевые папки для определенных адресов электронной почты
# хранится непосредственно в адресной книге. Таким образом, если электронное письмо
# изменения адреса, нам нужно только обновить адресную книгу, а не
# правила фильтра! Кроме того, мы можем значительно упростить
# скрипт фильтра.
# получаем адрес электронной почты из заголовка from
мой $fromheader = заголовок «от»;
мой ($from) = Extract_addresses $fromheader;
# проверьте, имеет ли этот адрес электронной почты связанный атрибут
# называется "входящая_папка". Если if имеет, значение этого
Атрибут # должен быть целевой папкой.
мое $value = get_attribute_value $from, "incomming_folder";
Learn_and_move($value), если $value;
# Пример белого списка: если адрес отправителя находится в моем
# Адресная книга "office", переместите почту в папку #mh/mail/office
Learn_and_move '#mh/mail/office' if from_in_addressbook("office");
# Если адрес отправителя находится в любой другой адресной книге, переместите
# почта в папку #mh/mail/inbox/known
Learn_and_move '#mh/mail/inbox/known' if from_in_addressbook;
# Пропустите оставшиеся письма через SpamAssassin.
спам-проверка;
# письма, дошедшие до конца сценария, передаются
# механизм внутренней фильтрации. Если во внутренних правилах не указано
# в противном случае письма попадают в папку «Входящие» по умолчанию.
#-8<---------------------------------------------- ------
Используйте claws-mail-perl-filter онлайн с помощью сервисов onworks.net.