все что связано с моей работой
Главная » Unix » Обновление dovecot и проблемы managesieve

Обновление dovecot и проблемы managesieve

Обновил dovecot, все нормально но перестал работать managesieve при этом сам sieve работал на ура. Полез разбираться, оказалось, что теперь в качестве sieve используется Pigeonhole и managesieve теперь немного по другому настраивается. Там как оказалось ничего сложного — все по инструкции с сайта dovecot, прямо дефолтные установки, но после добавления в список протоколов sieve, dovecot перестал запускаться выдавая это сообщение:

service(managesieve-login): listen(::, 4190) failed: Protocol not supported

Лечится очень просто, хотя и немного не очевидно, добавлением строки:

listen = *

Как оказалось, это отключает использование IPv6 (!!!). По умолчанию dovecot пытается открывать сокеты и на IPv4 и на IPv6. А с этой строкой он будет использовать только IPv4, для того чтоб принудительно добавить и тот и тот надо прописать так:

listen = *, ::

Теперь dovecot запускается, почта забирается, но при подключении к managesieve очень долго висит и не показывает правила. За то, в логах появиласть такая ошибка:

managesieve-login error auth connect(login) in directory / failed permission denied

Выглядит так, как будто я не к своим правилам пытаюсь добраться, а к корневому каталогу. Оказалось тоже не совсем очевидно, imap-login и pop3-login работают от имени другого пользователя, а managesieve-login от другого. Выход убрать указание от от кого запускать imap-login и pop3-login. То есть убрать строку user из блоков:

service imap-login {
  chroot = login
  service_count = 1
  user = dovecot
}

service pop3-login {
  chroot = login
  service_count = 1
  user = dovecot
}

После этого все заработало как надо.  Осталось только настроить фильтр, то собственно с чего все и началось.

В плагине sieve для Roundcube, к сожалению реализована возможность составление только простых фильтров: по теме, отправителю и т.д. А мне нужно было отбирать по дате сообщения, вернее по году. Это правила для архивного ящика куда падают копии всех писем приходящих в отдел, чтобы письма сразу раскладывались по папкам соответствующих году.  Потом просто всю папку архивируем и удаляем для экономии места на сервере.

Раз нельзя сделать правило через интерфейс значит придется руками. В sieve есть модуль date для работы с датами, в файл содержащий правила надо добавить следующее:

require ["fileinto","date"];
# rule:[Archive.2013]
if date :is "date" "year" "2013"
{
  fileinto "Archives.2013";
  stop;
}

Естественно папка Archives.2013 должна существовать в ящике.

Почитать про модули и правила можно в RFC5228 или на страничке со списком поддерживаемых модулей в Pigeonhole

На этом вроде все.

Комментариев нет

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.