Установка и настройка Roundcube

Заключительная статья из серии статей о настройке почтовой системы. В прошлых заметках была рассмотрена настройка серверной части почтовой системы, настройка SSL/TLS и настройка почтового клиента Thunderbird/Icedove: Установка и настройка Postfixadmin, Установка и настройка Dovecot, Установка и настройка Postfix, OpenDKIM, ClamAV-Milter, Milter-Greylist и Настройка SSL/TLS в Postfix, Dovecot, Lighttpd, Дополнения Thunderbird/Icedove.

На этот раз мы рассмотрим настройку почтового веб-клиента Roundcube.

Для работы Roundcube понадобится веб-сервер с поддержкой PHP и одна из СУБД: MySQL, PostgreSQL (в настройках самого Roundcube была ещё замечена возможность работы с SQLite, однако в пакетах никаких признаков поддержки SQLite обнаружено не было).

1. Установка пакетов и создание базы данных

Установим необходимые пакеты, если они ещё не установлены:

# apt-get install mysql-server mysql-client lighttpd php5-cgi

Установим Roundcube и пакеты с дополнительными плагинами:

# apt-get install roundcube php-auth-sasl roundcube-plugins roundcube-plugins-extra

В процессе установки пакета roundcube-core будет предложено настроить базу данных для Roundcube:

Запрос автоматической настройки базы данных Запрос пароля администратора СУБД

2. Настройка веб-сервера

Подготовим файл /etc/lighttpd/conf-available/50-roundcube.conf, используя для его составления информацию из файлов /etc/roundcube/lighttpd.conf и /usr/share/roundcube/.htaccess:

$HTTP["host"] == "mail.domain.tld" {

  server.document-root = "/var/lib/roundcube"

  alias.url += ( "program/js/tiny_mce" => "/usr/share/tinymce/www",
                 "favicon.ico" => "/usr/share/roundcube/skins/default/images/favicon.ico" )

  $HTTP["url"] =~ "^/config|/temp|/logs" {
    url.access-deny = ( "" )
  }
}

Создадим файл /etc/php5/mods-available/roundcube.ini, используя при его составлении информацию из файла /usr/share/roundcube/.htaccess:

upload_max_filesize=5M
;post_max_size=6M
;session.gc_maxlifetime=21600
;session.gc_divisor=500
;session.gc_probability=1
;mbstring.func_overload=0

В этот файл я вписал лишь те настройки, которые отличаются от дистрибутивных. Настройки сессии я не считаю столь важными, чтобы заменять ими стандартные, поэтому их я закомментировал. Также я закомментировал настройку post_max_size, потому что другое приложение использует большее значение. Из всех настроек я оставил только upload_max_filesize, зато закомментировал её в другом приложении, т.к. там её значение было меньше.

3. Настройка приложения

Настроим roundcube, прописав настройки в файл /etc/roundcube/main.inc.php:

$rcmail_config['default_host'] = 'tls://%n';
$rcmail_config['username_domain'] = '%d';
$rcmail_config['mail_domain'] = '%d';
$rcmail_config['smtp_server'] = 'tls://%n';
$rcmail_config['smtp_user'] = '%u';
$rcmail_config['smtp_pass'] = '%p';
$rcmail_config['smtp_helo_host'] = '';
$rcmail_config['force_https'] = true;

О настройках:

4. Проверка работы

Теперь можно подключать оба файла к использованию:

# ln -s ../mods-available/roundcube.ini conf.d/30-roundcube.ini
# lighty-enable-mod roundcube
# /etc/init.d/lighttpd restart

И войти в веб-интерфейс Roundcube по ссылке http://mail.domain.tld:

Страница входа в Roundcube

5. Настройка плагинов

Из всех плагинов меня в первую очередь заинтересовали три:

5.1. Настройка плагина password

Для настройки плагина password впишем в файл /etc/roundcube/plugins/password/config.inc.php следующие настройки:

<?php
// Empty configuration for password
// See /usr/share/roundcube/plugins/password/config.inc.php.dist for instructions

$rcmail_config['password_driver'] = 'sql';
$rcmail_config['password_confirm_current'] = true;
$rcmail_config['password_minimum_length'] = 7;
$rcmail_config['password_db_dsn'] = 'mysql://roundcube:roundcube_password@localhost/postfixadmin';
$rcmail_config['password_query'] = 'UPDATE mailbox SET password=%c, modified=NOW() WHERE username=%u';
?>

И дадим пользователю roundcube права на изменение пароля:

INSERT INTO tables_priv(host, db, user, table_name, table_priv, column_priv) VALUES
('localhost', 'postfixadmin', 'roundcube', 'mailbox', '', 'Select,Update');

INSERT INTO columns_priv(host, db, user, table_name, column_name, column_priv) VALUES
('localhost', 'postfixadmin', 'roundcube', 'mailbox', 'username', 'Select'),
('localhost', 'postfixadmin', 'roundcube', 'mailbox', 'password', 'Update'),
('localhost', 'postfixadmin', 'roundcube', 'mailbox', 'modified', 'Update');

FLUSH PRIVILEGES;

Теперь включим использование плагина password, добавив его в настройку plugins в файле /etc/roundcube/main.inc.php:

$rcmail_config['plugins'] = array('password');

После этого в веб-интерфейсе Roundcube появится дополнительная вкладка для смены пароля:

Плагин password в Roundcube

5.2. Настройка плагина acl

У этого плагина, на мой взгляд, есть лишь одна настройка, заслуживающая внимания - acl_advanced_mode, с помощью которой можно включить более тонкую настройку IMAP ACL. Для её включения нужно вписать в файл /etc/roundcube/plugins/acl/config.inc.php следующую строку:

$rcmail_config['acl_advanced_mode'] = true;

Для включения самого плагина acl нужно добавить его в настройку plugins в файле /etc/roundcube/main.inc.php:

$rcmail_config['plugins'] = array('password', 'acl');

После добавления плагина в настройках папок появится новая вкладка Sharing:

Плагин acl в Roundcube

5.3. Настройка плагина dkimstatus

Плагин не требует настройки и для его включения нужно добавить его в настройку plugins в файле /etc/roundcube/main.inc.php:

$rcmail_config['plugins'] = array('password', 'acl', 'dkimstatus');

После его включения у каждого письма с правильной DKIM-подписью появится значок в виде галочки в зелёном кружке (пример письма, полученного от отправителя в Yandex-почте):

Плагин dkimstatus в Roundcube

5.4. Настройка плагина sieverules

В пакетах roundcube-pugins и roundcube-plugins-extra были найдены два плагина для настройки правил фильтрации почты на IMAP-сервере через протокол ManageSieve: managesieve и sieverules. Как оказалось, второй плагин был написан на основе первого и по сути заменяет его собой. Поэтому я решил настроить именно плагин sieverules.

Для настройки плагина sieverules скопируем файл /usr/share/roundcube/plugins/sieverules/config.inc.php.dist в файл /etc/roundcube/plugins/sieverules/config.inc.php. Нужно именно скопировать файл, т.к. при добавлении настроек в имеющийся пустой файл, плагин работает неправильно - выпадающий список действий оказывается пустым. Изменим в нём значения следующих настроек:

$rcmail_config['sieverules_host'] = '%n';
$rcmail_config['sieverules_port'] = 4190;
$rcmail_config['sieverules_usetls'] = TRUE;

Краткое описание изменённых настроек:

Осталось включить использование плагина в настройках RoundCube, добавив имя плагина в настройку plugins в файле /etc/roundcube/main.inc.php:

$rcmail_config['plugins'] = array('password', 'acl', 'dkimstatus', 'sieverules');

После добавления плагина в настройках появляется вкладка "Фильтры":

Плагин sieverules в Roundcube

По умолчанию имеется только один набор правил, а доступ к прямому редактированию правил отключен - редактирование осуществляется при помощи веб-интерфейса плагина.

Настройка sieverules_multiplerules позволяет создавать несколько наборов правил, из которых активным может быть только одни набор.

При помощи настройки sieverules_adveditor можно включить прямой доступ к редактированию скриптов фильтрации Sieve. При этом появляется возможность писать более сложные правила, однако и увеличивается вероятность ошибок в синтаксисе или непонимания семантики фильтра.

Это была заключительная статья из серии статей о настройке почтовой системы.

Написать автору