Для управления письмами в Dovecot включена поддержка Sieve.
Sieve — язык описания правил фильтрации для почтовых сообщений. Создана компанией Cyrusoft International, Inc./ISAMET при работе над почтовым сервером Cyrus. С помощью написания скриптов с правилами обработки почты есть возможность:
- автоматически сортировать письма по почтовым папкам исходя из определенных признаков (адрес отправителя, тема и др.)
- автоматически удалять листы исходя из определенных признаков
- настроить автоматический ответ ( vacation ) на определенные письма
Обработка писем должна производиться перед тем, как письмо попадает в почтовый ящик пользователя. В этих настройках агентом локальной доставки (LDA – local delivery agent) выступает сам Postfix. Для подключения расширения Sieve этот функционал следует перевести на Dovecot.
Настройка Dovecot как LDA
Для работы Dovecot в качестве LDA нужно установить пакет поддержки lmtp командой:
apt install dovecot-lmtpd
В самом Dovecot настраивать ничего не нужно.
Далее настраиваем Postfix. Вносим изменения в конфиг Postfix.
В файл /etc/postfix/main.cf добавляем строчки:
# как локальный транспорт (для протокола lmtp) будем использовать фильтр под названием dovecot (имя фильтра выбираем произвольно)
virtual_transport = dovecot
dovecot_destination_recipient_limit=1 # доставляем письма по одному
Также в файле /etc/postfix/master.cf следует описать фильтр под названием dovecot (имя задано ранее в файле main .cf ). Для этого в конец файла добавляем строчки описания нашего фильтра:
# Dovecot LDA
dovecot unix - nn - - pipe
flags=DRhu user=virtual:virtual argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -a ${original_recipient} -d ${user}@${nexthop}}
# доставка писем будет производиться с правами virtual:virtual с помощью утилиты /usr/lib/dovecot/dovecot-lda
После этих настроек у нас появилась возможность подключить Sieve.
Подключение расширения Sieve к Dovecot
Устанавливаем для Dovecot расширение Sieve
apt install dovecot-sieve dovecot-managesieved
dovecot-sieve — этот пакет позволяет использовать функционал Sieve
dovecot-managesieved – этот пакет позволяет клиенту создавать правила фильтрации самостоятельно.
Файл конфигурации dovecot-managesieved оставляем без изменений, так как он нас устраивает и приступаем к настройке самого sieve.
Сначала в основном файле конфигурации Dovecot включим поддержку Sieve. Для этого в файле /etc/dovecot/dovecot.conf строку protocols приводим к виду:
protocols = imap sieve
В настройках LDA подключаем поддержку Sieve, для этого в файле /etc/dovecot/conf.d/ 15-lda.conf блок protocol lda приводим к виду:
protocol lda {
# Space separated list of plugins to load (необязательно is global mail_plugins).
mail_plugins = $mail_plugins sieve
}
Подключаем этот же плагин к протоколу LMTP . Для этого в файле /etc/dovecot/conf.d/20-lmtp.conf блок protocol lmtp приводим к виду:
protocol lmtp {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve
info_log_path = /var/log/dovecot-lmtp.log
}
Теперь настраиваем местоположение скриптов правил Sieve для пользователей. Для этого в файле /etc/dovecot/conf.d/90-sieve.conf меняем соответствующие строчки и приводим их к виду:
sieve = /var/mail/sieve/%Ld/%n/sieve/%u.sieve # Расположение активного скрипта
sieve_dir = /var/mail/sieve/%Ld/%n/sieve
# Папка для скриптов – это библиотека скриптов с правилами
Для корректной работы оба параметра должны быть уникальны для каждого пользователя. При указании пути можно использовать внутренние переменные Dovecot:
%Ld — это часть пользователя, соответствующая почтовому домену. %n — часть логина пользователя к собаке, то есть имя клиента %u — это полный логин пользователя
Также нужно создать соответствующую папку и определить ей права
mkdir /var/mail/sieve/
chown virtual:virtual /var/mail/sieve/
chmod 770 /var/mail/sieve/
После всех этих действий обработка и создание правил может быть выполнена только администратором почтового сервера путем правки скриптов. Еще удобнее дать юзерам возможность самим создавать собственные правила.
Подключение плагина managesieve в Round Cube
Сначала установим набор плагинов для RoundCube командой:
apt install roundcube-plugins
Далее идем в /etc/roundcube/plugins/managesieve и видим, что файл конфигурации пуст, но в нем есть указание, где взять его образец.
Выполняем команду
cp /usr/share/roundcube/plugins/managesieve/config.inc.php.dist /etc/roundcube/plugins/managesieve/config.inc.php
Этой командой создаем файл конфигурации из образца и начинаем настройки.
Находим соответствующие строки и изменяем их в соответствии с нашим сервером:
$config['managesieve_port'] = 4190; #указываем порт для сервера managesieve
$config['managesieve_host'] = 'localhost'; # указываем где находится сервер
# managesieve
$config['managesieve_auth_type'] = login; # указываем тип авторизации на сервере.
#Этот параметр берем из настроек Dovecot
$config['managesieve_usetls'] = false; #отключаем поддержку шифрования
Далее в файле / etc / roundcube / config .inc.php подключаем плагин managesieve.
Для этого находим строчку и приводим к виду:
$config['plugins'] = array('managesieve');
После этих настроек в Round Cube в пользовательском интерфейсе на странице настроек появляется закладка filters, где и создаются правила обработки почты