На этот раз мы рассмотрим настройку почтового веб-клиента 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;О настройках:
- default_host - имя узла, выбираемое при входе в веб интерфейс. Можно указать список узлов, который будет отображаться в виде выпадающего меню. Можно использовать шаблоны: %n - использовать доменное имя из URL, %d - использовать доменное имя из URL без первой части, %s - использовать доменное имя, указанное после символа @ в логине пользователя. Можно указать префикс ssl:// или tls:// для использования защищённого соединения,
- username_domain - автоматически добавлять домен к логинам пользователей. Можно задать ассоциативный массив для отображения доменного имени из URL в почтовый домен, можно использовать шаблоны: %h - имя IMAP-узла пользователя (что бы это ни значило), %n - доменное имя из URL, %d - доменное имя из URL без первой части, %z - доменное имя IMAP-узла без первой части,
- mail_domain - доменное имя для формирования адресов новых пользователей. Правила такие же, как и для username_domain,
- smtp_server - имя узла, выбираемое для отправки почты. Можно использовать шаблоны: %h - имя SMTP-узла пользователя (что бы это ни значило), %n - доменное имя из URL, %d - доменное имя из URL без первой части, %z - доменное имя SMTP-узла без первой части. Можно указать префикс ssl:// или tls:// для использования защищённого соединения,
- smtp_user - если для отправки почты требуется аутентификация, то здесь можно указать имя пользователя или шаблон %u, чтобы имя пользователя бралось из веб-интерфейса,
- smtp_pass - аналогично, если для отправки почты требуется аутентификация, то здесь можно указать пароль пользователя или шаблон %p, чтобы пароль пользователя брался из веб-интерфейса,
- smtp_helo_host - подставлять в команду HELO/EHLO указанное имя узла. Если оставить строку пустой, то имя узла будет браться из переменной SERVER_NAME веб-сервера или же будет использоваться имя localhost,
- force_https - настройка, предписывающая RoundCube переадресовывать пользователя на защищённую версию протокола HTTP - HTTPS.
Теперь можно подключать оба файла к использованию:
# 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:
5. Настройка плагинов
Из всех плагинов меня в первую очередь заинтересовали три:
- Плагин password для смены пароля на почтовый ящик (находится в пакете roundcube-plugins),
- Плагин acl для настройки IMAP ACL (находится в пакете roundcube-plugins),
- Плагин dkimstatus для проверки DKIM-подписей полученных сообщений (находится в пакете roundcube-plugins-extra),
- Плагин sieverules для управления правилами фильтрации Sieve на IMAP-сервере по протоколу ManageSieve (находится в пакете roundcube-plugins-extra).
Для настройки плагина 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 появится дополнительная вкладка для смены пароля:
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:
5.3. Настройка плагина dkimstatus
Плагин не требует настройки и для его включения нужно добавить его в настройку plugins в файле /etc/roundcube/main.inc.php:
$rcmail_config['plugins'] = array('password', 'acl', 'dkimstatus');После его включения у каждого письма с правильной DKIM-подписью появится значок в виде галочки в зелёном кружке (пример письма, полученного от отправителя в Yandex-почте):
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;Краткое описание изменённых настроек:
- sieverules_host - задаёт сервер ManageSieve. Поддерживаются шаблоны: %h - имя IMAP-сервера, %n - имя сервера из URL, %d - доменное имя из URL без первой части.
- sieverules_port - задаёт номер порта сервера ManageSieve. Ранее использовался TCP-порт с номером 2000, однако позже он был объявлен устаревшим и теперь используется TCP-порт с номером 4190.
- sieverules_usetls - настройка задаёт использование защищённого соединения для связи с сервером ManageSieve.
$rcmail_config['plugins'] = array('password', 'acl', 'dkimstatus', 'sieverules');После добавления плагина в настройках появляется вкладка "Фильтры":
По умолчанию имеется только один набор правил, а доступ к прямому редактированию правил отключен - редактирование осуществляется при помощи веб-интерфейса плагина.
Настройка sieverules_multiplerules позволяет создавать несколько наборов правил, из которых активным может быть только одни набор.
При помощи настройки sieverules_adveditor можно включить прямой доступ к редактированию скриптов фильтрации Sieve. При этом появляется возможность писать более сложные правила, однако и увеличивается вероятность ошибок в синтаксисе или непонимания семантики фильтра.
Это была заключительная статья из серии статей о настройке почтовой системы.
6 комментариев:
Уважаемый автор не подскажет что означает в roundcube флажок "подписан" у папки (в разделе "настройки" - "папки")?
Есть еще замечательный плагин markasjunk2, который добавляет две кнопки "Пометить как спам" и "не спам", если письмо попало в спам. При этом он обучает фильтр спаму.
У меня есть вопрос по DKIMstatus. Почему-то локальные письма (от root и т.п.) не проходят проверку этим плагином, хотя письмо отправленное на yandex или gmail проходит проверку как подписанное. Письмо пришедшее с внешнего адреса тоже проходит проверку нормально, в чем может быть причина?
DKIM-подпись имеет смысл добавлять при отправке на другой почтовый сервер, чтобы тот мог проверить подпись. Своей собственной почте сервер доверяет и так.
Собственно, подпись и добавляется сервером при отправке на внешний адрес, а внешний сервер точно так же присылает на наш сервер подписанные письма.
DKIMstauts отображает подпись, когда она есть.
Здравствуйте. Не могли бы уточнить какое "другое" приложение использует post_max_size. Ни как не могу добиться увеличения загружаемого файла.
поправил в /etc/php5/mods-available/roubdcube.ini (объем увеличился с 5М до 8М) где-то еще нужно поправить?
Попробуйте так посмотреть:
cd /etc/php5/mods-available/
grep post_max_size
А вообще, может быть всё верно? У меня в статье написано, что править нужно ещё и значение опции upload_max_filesize
Здравствуйте.
А можете вы подсказать почему roundcube добавляет заголовок Sender: Apache@domen.tld, вместо реального домена, с которого (при авторизации пользователя по емайл) отправляется письмо?
Сервер на VPS, сайтов много (около 10) но из конфигов нашел только эти файлы:
config.inc.php
config.inc.php.sample
db.inc.php.rpmsave
defaults.inc.php
main.inc.php.rpmsave
mimetypes.php
никакого файла main.inc.php нету.
Если можете поднастроить сервер - сочтемся (для связи alexk79[at]gmail.com).
Отправить комментарий