Sieve

10.10.2007 14:21:51

С какого-то прекрасного момента (судя по всему с того самого как у меня где-то засвербило и я обновил KDE до 3.5.7 из sid) у меня в KMail перестала сортироваться IMAP-ная почта. Поскольку на IMAP у меня рабочий ящик, в который валится много всякого, получалось неудобно. Что интересно, запускаешь фильтры ручками (Ctrl-J), всё работает. Само — нет. А ну-ка, думаю, ознакомлюсь уже с чудесами серверной фильтрации корреспонденции aka Sieve.

KMail, оказывается, это дело поддерживает (Настройка -> Сценарии Sieve). Нужна, конечно, поддержка и на сервере, но в моём случае она была. Создать скрипт несложно, тут же можно и отредактировать. Но никаких подсказок нет. Поэтому, с помощью жужля выудил несколько полезных ссылок: раз, два, три, четыре. В принципе, первой парочки вполне достаточно, чтобы сваять простейший скрипт. Например, что-то в духе:

require "fileinto";

if header :contains "List-Id" "<linux-arm-kernel.lists.arm.linux.org.uk>" {
	fileinto "INBOX.linux-arm";
} elsif header :contains "List-Id" "<some_other_list.somewhere.com>" {
	fileinto "INBOX.list";
} else {
     keep;
}


Единственное, на что реально необходимо обратить внимание, так это на ‘require «fileinto»;’, его не всегда в примерах пишут, но оно бывает необходимо.

Всё бы ничего, отредактировать/сохранить на сервере скрипт из KMail (а даже и из Konqueror с помощью sieve://your-server.ru (собственно, KMail использует тот же «sieve://»)) можно. Проблема в том, что его необходимо активировать. Уж не знаю почему, но мой KMail упрямо отказывался активировать скрипт, сколько я не тыкал в кружок напротив названия скрипта. По идее, это можно было бы сделать из Konqueror (на старой странице kio_sieve есть об этом), через «sieve://» активный скрипт должен иметь права на исполнение. Но не получилось, не даёт.

`aptitude search sieve`? Их есть у нас. Вполне себе консольный клиент «sieve-connect». Ставим, получаем:

$ sieve-connect -s server.com -u user --noclearauth
STARTTLS promotion failed: SSL connect attempt failed with unknown errorerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Обидно, да? sieve-connect упрямо хочет, чтобы сертификат сервера был в норме и не имеет никаких параметров на тему отключения этой «фичи». Ну-ну, наивный, кто ж любит отваливать бабло VeriSign и компании?.. Но на деле sieve-connect это перловый скрипт, так что ничего трагичного, вооружаемся ломиком в стиле

$ $EDITOR /usr/bin/sieve-connect

И меняем строчку за номером 39:

SSL_verify_mode => 0x01,

на

SSL_verify_mode => 0x00,

Можно соединяться. Получим приятную консольку, которая позволяет управлять скриптами по-разному. Нам надо всего лишь активировать уже давно залитый скрипт:

> list
"script"
> activate script

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

Закомментировать

Вам бы, по-хорошему, зарегистрироваться сначала надобно, прежде чем комментарии оставлять. Но, в порядке исключения, можете попробовать с OpenID проскочить, вдруг.