Настройка Dovecot + Sieve + ManageSieve + Roundcube на Linux


Используемые термины: Dovecot, Roundcube, Ubuntu.
В данной инструкции мы рассмотрим процесс конфигурирования почтовых фильтров в Roundcube Webmail. Для этого мы настроим связку Dovecot + Sieve. Управление фильтрами будем осуществлять при помощи ManageSieve. Приведенная конфигурация подходит для различных систем Linux, но примеры будут приведены для Ubuntu или Debian.
Предполагается, что у нас уже настроен почтовый сервер. Все вспомогательные инструкции представлены ниже.
Установка необходимых пакетов
Настройка dovecot
Настройка Roundcube и тестового правила
Дополнительная информация
Установка компонентов
Установка выполняется немного по разному для RPM и DEB дистрибутивов Linux.
а) Для DEB
Перед установкой, обновим кэш пакетов:
apt update
Для нашей настройки мы установим следующие пакеты:
apt install dovecot-sieve dovecot-managesieved
* где:
- dovecot-sieve — плагин sieve для dovecot. Позволяет создавать правила, которые будет читать последний и перемещать почту в соответствии с данными правилами.
- dovecot-managesieved — плагин managesieved для dovecot. Позволяет запустить сервис, который будет принимать запросы на создание и управление правилами sieve.
б) Для RPM
Выполняем одну команду:
yum install dovecot-pigeonhole
Установка завершена. Переходим к настройке dovecot.
Настройка сервера dovecot
Открываем файл:
vi /etc/dovecot/conf.d/10-mail.conf
Добавляем директиву:
mail_home = /var/vmail/%d/%u/sieve
* мы задаем опцию mail_home с путем до каталогов с почтой. Обратите внимание, что на вашем сервере настройка может быть другая и необходимо указать правильное значение — можно ориентироваться по значению опции mail_location, которая указывает на путь до папки с почтой. Переменные %d и %u указывают, соответственно, на имя домена и учетной записи.
Теперь откроем файл:
vi /etc/dovecot/conf.d/15-lda.conf
Находим раздел protocol lda и в нем приводим опцию mail_plugins к виду:
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve
}
* в данном примере мы добавляем плагин sieve, который должен теперь использоваться локальным агентом доставки lda.
Открываем файл:
vi /etc/dovecot/conf.d/20-managesieve.conf
Приводим опцию protocols к следующему виду:
protocols = $protocols sieve
* по аналогии с protocol lda, мы указываем на необходимость использования sieve.
В этом же файле необходимо добавить/раскомментировать строки или убедиться, что они уже присутствуют в таком виде:
service managesieve-login {
inet_listener sieve {
address = 127.0.0.1
port = 4190
}
...
}
* мы указываем, что наш сервис будет работать на порту 4190 и слушать на локальном адресе. Если наши серверы dovecot и roundcube находятся на разных серверах, объединенных по сети, необходимо заменить адрес 127.0.0.1 на тот, по которому будет доступен dovecot для roundcube.
Открываем на редактирование файл:
vi /etc/dovecot/conf.d/90-sieve.conf
Приводим настройки к виду:
plugin {
sieve = /var/vmail/%d/%u/sieve/dovecot.sieve
sieve_global_path = /etc/dovecot/sieve/default.sieve
sieve_dir = /var/vmail/%d/%u/sieve
sieve_global_dir = /etc/dovecot/sieve/global/
...
}
* где:
- sieve — путь до файла с правилами. Указывается для каждого ящика с помощью переменных. Путь должен соответствовать тому пути, который мы указали в опции mail_home выше.
- sieve_global_path — путь до общего файла с правилами. Используется, если отсутствует файл по пути sieve.
- sieve_dir — путь до каталога с подключаемыми скриптами-правилами. Указывается для каждого почтового ящика. Также должен соответствовать пути опции mail_home.
- sieve_global_dir — путь до общего каталога с подключаемыми правилами. Используется, если отсутствует sieve_dir.
Создаем каталог, путь до которого мы указали в директиве sieve_global_dir:
mkdir -p /etc/dovecot/sieve/global
Выставляем в качестве владельца и группы пользователя dovecot:
chown dovecot:dovecot -R /etc/dovecot/sieve
Перезапускаем dovecot для применения настроек:
systemctl restart dovecot
При желании, можно проверить подключение к ManageSieve командой:
telnet localhost 4190
В ответ мы должны получить что-то на подобие:
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
"IMPLEMENTATION" "Dovecot (Debian) Pigeonhole"
"SIEVE" "fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext"
"NOTIFY" "mailto"
"SASL" "PLAIN"
"STARTTLS"
"VERSION" "1.0"
OK "Dovecot (Debian) ready."
Если система вернет ошибку, необходимо проинсталлировать утилиту telnet с помощью apt или yum:
apt install telnet
yum install telnet
Настройка Roundcube
Переходим к настройке самого веб-интерфейса.
Сначала необходимо указать, что он должен использовать плагин managesieve:
vi /var/www/html/webmail/config/config.inc.php
* в данном примере мы открываем конфигурационный файл Roundcube по пути /var/www/html/webmail/config/config.inc.php, однако, в вашей системе данный путь может быть по другому пути. Необходимо это учесть и указать правильный путь.
Нам необходимо добавить опцию managesieve_host и указать, что мы будем использовать плагин managesieve:
$config['managesieve_host'] = 'localhost';
$config['managesieve_mbox_encoding'] = 'UTF-8';
...
$config['plugins'] = [
...
'managesieve',
];
* отдельно скачивать плагин managesieve не требуется, так как он уже идет в стандартной поставке с Roundcube. Также обратите внимание на опцию managesieve_mbox_encoding — для корректной работы фильтров с русскоязычными каталогами нужно указать кодировку UTF-8.
Если наши серверы Roundcube и Dovecot находятся на разных серверах, переходим в каталог с плагином managesieve:
cd /var/www/html/webmail/plugins/managesieve/
Создаем конфигурационный файл из шаблона и открываем его:
cp config.inc.php.dist config.inc.php
vi config.inc.php
Меняем значение для managesieve_host:
$config['managesieve_host'] = '192.168.0.15';
* где 192.168.0.15 — IP-адрес нашего сервера с dovecot.
Теперь можно переходить в интерфейс webmail. Заходим под любой почтовой учетной записью, кликаем по Настройки и выбираем готовый набор фильтров roundcube:
Сверху кликаем по Создать и задаем критерии, по которым должно работать наше правило:
Кликаем по Сохранить.
Пробуем отправить тестовое письмо, чтобы оно попало под правило (в нашем примере, с темой Test). Проверяем, что правило отработало.
Читайте также
Другие инструкции по теме:
1. Полноценный почтовый сервер с iRedMail на Ubuntu или Debian.