Просмотр SIEVE-правил пользователя в Cyrus
Продолжаю серию заметок по работе с Kolab GroupWare. Очень интересный продукт, плотно занимаюсь его изучением и настройкой уже в течении нескольких месяцев. Некоторые моменты работы с ним решил записывать, так как нужно не часто, но в целом пригодится. И чтобы потом не вспоминать что там и как - конспектировать. Все материалы можно найти по тегу kolab.
В качестве imap-сервера в Kolab используется Cyrus. Для обработки писем используется реализация системы фильтров, которая называется SIEVE и описана в RFC 3028. Очень странно, что по умолчанию для SIEVE не используется кодировка UTF-8. В связи с этим возникает проблема при использовании non-Latin символов, например, переместить письмо в директорию “Прочее”, а она не обрабатывается и не может быть создана. Для этого необходимо добавить в /etc/imapd.conf опцию sieve_utf8fileinto: 1
и все станет хорошо.
А для того, чтобы посмотреть/управлять SIEVE-правилами пользователя нужно воспользоваться утилитой sieveshell
. Но есть особенность - она работает только в plaintext
режиме. Для этого временно разрешаем использовать его в cyrus-imapd
исправив в /etc/imapd.conf
значение allowplaintext
с no
на yes
.
~ # sieveshell -a cyrus-admin -u [email protected] 127.0.0.1
connecting to 127.0.0.1
Please enter your password:
> list
roundcube
USER <- active script
> get USER
# USER Management Script
#
# This script includes the various active sieve scripts
# it is AUTOMATICALLY GENERATED. DO NOT EDIT MANUALLY!
#
# For more information, see http://wiki.kolab.org/KEP:14#USER
#
require ["include"];
include :personal "roundcube";
> get roundcube
require ["copy","fileinto","vacation"];
# EDITOR Roundcube (Managesieve)
# EDITOR_VERSION 8.4
# rule:[strangers]
if address :is "from" "[email protected]"
{
fileinto "От незнакомца";
}
# rule:[прочитано про sieve]
if header :contains "subject" "Managesieve"
{
vacation :addresses "[email protected]" :subject "Какой сиева?" "Задолбал фигню писать";
}
Всё что можно сделать с помощью sieveshell
читаем в man sieveshell
.
Главное после не забыть вернуть значение allowplaintext
в no
.