Решил расширить стандартные возможности почтового web-интерфейса Roundcube с помощью плагинов. Возможностями некоторых из них и воспользуемся... Список плагинов, рассмотреных в статье следующий (кликнув на ссылку, попадаем сразу к описанию процесса настройки):
- Additional_Message_Headers
- AntiBruteForce
- Archive
- Compose Addressbook
- Custom From
- Custom Logo
- Сustom Title
- Drag Upload
- Emoticons
- Language Selector
- Login Info
- Newmail_Notifier
- Persistent Login
- Rcguard
- ServerInfo
- Sticky Notes
- Userinfo
Значительное число плагинов Roundcube доступно из репозитория плагинов Roundcube [1]. Пока опробованы только некоторые из них. Если будете тестировать какие-либо новые плагины, не затронутые в этой статье - просьба описать процес установки и поделиться через форму обратной связи [2].
Additional_message_headers
Плагин Additional_message_headers позволяет добавить для писем, отправляемых через web-интерфейс Roundcube, дополнительные хэдеры, такие как:
- X-Remote-Browser
- X-Originating-IP
- X-RoundCube-Server
Конечно же, чем больше дополнительной информации, тем проще будет любому админинистратору при ковырянии "что, кому и откуда".
Установка плагина не составляет труда. Для активации плагина необходимо добавить его в список подключенных плагинов:
# cat /usr/local/www/roundcube/config/main.inc.php | grep additional_message_headers $rcmail_config['plugins'] = array('additional_message_headers'); |
Также необходимо создать конфигурационный файл модуля - config.inc.php и поместить его в каталог плагина additional_message_headers. Содержимое config.inc.php такое:
<?php $rcmail_config['additional_message_headers']['X-Remote-Browser'] = $_SERVER['HTTP_USER_AGENT']; ?> |
Теперь в письмах, при просмотре заголовков можно обнаружить такие записи:
X-Remote-Browser: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2 X-Originating-IP: 192.168.206.114 X-RoundCube-Server: 192.168.197.114 |
AntiBruteForce
Плагин AntiBruteForce, судя по описанию, предотвращает BruteForce перебором паролей методом автоматической блокировки (как именно я так и не понял из описания, но думаю, что разберемся по ходу настройки).
Загрузим архив с плагином в каталог /usr/local/www/roundcube/plugins, распакуем архив и удалим его, чтобы не засорять файловую систему:
# cd /usr/local/www/roundcube/plugins # fetch http://muff.kiev.ua/files/antiBruteForce.tar [3] antiBruteForce.tar 100% of 18 kB 40 MBps # tar -xzf antiBruteForce.tar # rm antiBruteForce.tar |
Как оказалось, права на созданный каталог выставлены в 777. Этот непорядок необходимо устранить. Выставим на каталог права 755:
# chmod -R 755 antiBruteForce |
Внутри каталога antiBruteForce лежит PHP-скрипт antiBruteForce.php. Советую отредактировать переменные, которые заданы в начале скрипта (для меня сюрпризом было то, что все комментарии на португальском... воспользовался переводчиком). В моем случаем переменные выставлены в такое значение:
private $registers="logs/userlogins"; // Куда писать логи попыток авторизации |
Потом необходимо активировать плагин, добавив его в массив плагинов в файле конфигурации main.inc.php:
# cat /usr/local/www/roundcube/config/main.inc.php | grep antiBruteForce $rcmail_config['plugins'] = array('antiBruteForce'); |
На этом настройку плагина antiBruteForce можно считать законченой. После указанного количества попыток (переменная $attempts) неверной авторизации можно будет наблюдать такое окошко:
Archive
Плагин Archive добавляет новую кнопку для перемещения сообщения в архивный каталог, который конфигурируется пользователем.
Для активации плагина необходимо добавить его в список подключенных плагинов:
# cat /usr/local/www/roundcube/config/main.inc.php | grep archive $rcmail_config['plugins'] = array('archive'); |
После активации плагина необходимо создать каталог, в который и будем перемещать письма для архивации:
- Войти в "Настройки"
- Выбрать закладку "Папки"
- Нажать на кнопку создания нового каталога
- Указать имя каталога. Например "Archive"
- Сохранить изменения
Следующий шаг - указываем каталог, в котором письма будут архивироваться:
- Войти в "Настройки"
- Выбрать закладку "Настройки"
- Выбрать раздел "Особые папки"
- Указать, для каталога "Archive" тип "Архив"
- Сохранить изменения
В результате на панели инструментов Roundcube появится новая кнопка "Переместить выбранное в архив".
Compose addressbook
Плагин Compose addressbook позволяет использовать адресную книгу во время компоновки нового письма.
Скачаем архив с плагином Compose addressbook и распакуем его в каталог плагинов Roundcube. После распаковки удаляем архив, чтобы не засорять файловую систему.
ВНИМАНИЕ! Даная версия плагина только для Roundcube 0.6 и выше.
# cd /usr/local/www/roundcube/plugins |
Создадим файл конфигурации плагина, копированием из предложенного примера:
# cp compose_addressbook/config.inc.php.dist compose_addressbook/config.inc.php |
Даный плагин зависит от плагина jqueryui, поэтому в main.inc.php активируем оба:
# cat /usr/local/www/roundcube/config/main.inc.php | grep compose_addressbook $rcmail_config['plugins'] = array('compose_addressbook', 'jqueryui'); |
На этом настройку плагина можно считать оконченной. При составлении нового письма на панели инструментов появится кнопка "Show Address Book" и, соответственно, можно будет сразу выбрать получателей из адресной книги прямо во время компоновки письма.
Custom From
Плагин Custom From добавляет в режиме создания письма кнопку, нажав на которую, выпадающий список "От кого:" заменяется полем ввода даных.
Скачаем архив с плагином Custom from и распакуем его в каталог плагинов Roundcube. После распаковки удаляем архив, чтобы не засорять файловую систему.
# cd /usr/local/www/roundcube/plugins |
Активируем плагин, добавив его в массив подключенных плагинов:
# cat /usr/local/www/roundcube/config/main.inc.php | grep custom_from $rcmail_config['plugins'] = array('custom_from'); |
Вот и все... Настройка плагина завершена.
Custom logo
Плагин Custom logo пригодится, когда почтовый сервер мультидоменный. Принцип его работы заключается в отображении разных логотипов, в зависимости от того, какое доменное имя содержится в почтовом адресе пользователя.
Скачаем архив с плагином Custom logo и распакуем его в каталог плагинов Roundcube. После распаковки удаляем архив, чтобы не засорять файловую систему.
# cd /usr/local/www/roundcube/plugins |
Создадим файл конфигурации, копированием из предложеного примера:
# cp custom_logo/config.inc.php.dist custom_logo/config.inc.php |
Если просмотреть файл конфигурации, то становится понятно, что логотипы необходимо хранить в каталоге /usr/local/www/roundcube/plugins/custom_logo/images с форматом имени файла %d_logo.png где %d - доменная часть e-mail пользователя.
Активируем плагин, добавив его в массив подключенных плагинов:
# cat /usr/local/www/roundcube/config/main.inc.php | grep custom_logo $rcmail_config['plugins'] = array('custom_logo'); |
В случае, если логотип для определенного домена не подгружен, отображается стандартный логотип Roundcube.
Custom title
Плагин сustom title позволяет изменять заголовок страницы, добавляя, например, имя текущего пользователя. Скачаем архив с плагином в каталог плагинов Roundcube и распакуем его. Также удалим архив, чтобы не засорять файловую систему:
# cd /usr/local/www/roundcube/plugins |
Активируем плагин, добавив его в список подключенных плагинов:
# cat /usr/local/www/roundcube/config/main.inc.php | grep custom_title $rcmail_config['plugins'] = array('custom_title'); |
На этом базовая настройка модуля завершена.
Drag upload
Плагин drag upload реализовывает возможность прикреплять файлы к письму простым перетаскиванием. Скачаем архив с плагином в каталог плагинов Roundcube и распакуем его. После этого удалим архив, чтобы не засорять файловую систему:
# cd /usr/local/www/roundcube/plugins |
Активируем плагин, добавив его в список подключенных плагинов:
# cat /usr/local/www/roundcube/config/main.inc.php | grep drag_upload $rcmail_config['plugins'] = array('drag_upload'); |
На этом базовая настройка модуля завершена.
Emoticons
Плагин emoticons выполняет автоматическую замену смайликов в текстовом виде на графические иконки. Плагин есть в стандартной инсталяции Roundcube. Для активации плагина необходимо всего лишь добавить его в список подключенных плагинов:
# cat /usr/local/www/roundcube/config/main.inc.php | grep emoticons $rcmail_config['plugins'] = array('emoticons'); |
После подключение плагина имеем такую таблицу преобразований:
Текстовое отображение | Графическое отображение |
:) | ![]() |
:-) | ![]() |
:D | ![]() |
:-D | ![]() |
:( | ![]() |
:-( | ![]() |
;) | ![]() |
;-) | ![]() |
8) | ![]() |
8-) | ![]() |
:O | ![]() |
:-O | ![]() |
:P | ![]() |
:-P | ![]() |
:@ | ![]() |
:-@ | ![]() |
O:) | ![]() |
O:-) | ![]() |
:$ | ![]() |
:-$ | ![]() |
:* | ![]() |
:-* | ![]() |
:S | ![]() |
:-S | ![]() |
Вот так-то... Однако, данный плагин имеет недостаток (особенно актуально для програмеров и системных администраторов). Если отправлять, например, какой-то кусок кода скрипта в письме, а не вложением - будет выполнена замена по всему скрипту, что не очень удобно.
Language Selector
Даний плагин добавляет возможность переключатель языка на странице авторизации.
Скачаем архив с плагином Language Selector и распакуем его в каталог плагинов Roundcube. После распаковки удалим архив, чтобы не засорять файловую систему.
# cd /usr/local/www/roundcube/plugins |
Создадим конфигурационный файл config.inc.php копированием из предложенного примера:
# cp lang_sel/config.inc.php.dist lang_sel/config.inc.php |
Активируем плагин, добавив запись в конфигурационный файл main.inc.php:
# cat /usr/local/www/roundcube/config/main.inc.php | grep lang_sel $rcmail_config['plugins'] = array('lang_sel'); |
Результат работы модуля:
Login info
Действие плагина Login info довольно простое - отображение дополнительной информации на странице авторизации. В ряде случаев эта возможность может оказаться довольно даже полезной.
Скачаем архив с плагином Login info и распакуем его в каталог плагинов Roundcube. После распаковки удаляем архив, чтобы не засорять файловую систему.
# cd /usr/local/www/roundcube/plugins |
Создадим конфигурационный файл config.inc.php примерно следующего содержания (не забываем о кодировке файла - по умолчанию Roundcube отображает страницы в UTF-8):
<?php
/* Login_info plugin */
/* Необходимо вставить сообщение между двумя EOT TAGS:
$rcmail_config['login_info'] = <<<EOT ТЕКСТ СООБЩЕНИЯ ЗДЕСЬ EOT; */ $rcmail_config['login_info'] = <<<EOT <br> <center><b>Пользовательское соглашение</b></center> <br> <table border="0" cellspacing="1" cellpadding="1" align="center" width="90%"> <tbody> <tr> <td> <p>1. Пользуясь возможностями почтового сервера Server_Hostname_Here пользователь автоматически принимает условия даного Пользовательского соглашения.</p> <p>2. Даный почтовый сервер Server_Hostname_Here развернут для предоставления услуг электронной почты исключительно сотрудникам Company_Name_Here.</p> <p>3. Использование сервера Server_Hostname_Here способом, не имеющим отношения к трудовому процессу, является нарушением правил использования сети Company_Name_Here и приравнивается к нарушению правил трудовой дисциплины. К нарушениям правил использования сервера Server_Hostname_Here в частности относятся отправка или получение информации следующего содержания:</p> <ul> <li>программное обеспечение, нарушающее авторские права или лицензионные соглашения субъектов или физических лиц;</li> <li>музыкальные или видеоматериалы, нарушающие авторские права исполнителей;</li> <li>материалы порнографического содержания;</li> <li>научные работы, статьи или другую информацию, которая может представлять коммерческую тайну, без предварительного согласования с руководством;</li> <li>сообщения, оскорбляющие других людей, их национальные или религиозные чувства;</li> <li>сообщения политического характера;</li> <li>сообщения с угрозами или элементами шантажа;</li> <li>информация, связанная с деятельностью террористических либо экстремистских группировок или лиц;</li> <li>любая информация, каким-либо образом нарушающая действующее законодательство Украины</li> </ul> <p>4. Категорически запрещается массовая рассылка нежелательных сообщений рекламного или непристойного содержания (спам).</p> <p>5. В случае нарушения правил пользования почтовым сервером Server_Hostname_Here пользователь может быть отключен от данного сервера.</p> <p>6. Запрещается использование сервера Server_Hostname_Here каким-либо способом, приводящим к технической неисправности или причинению вреда данному серверу, другим сетевым ресурсам сети Company_Name_Here или ресурсам сети Интернет. В случае нанесения пользователем сервера Server_Hostname_Here какого-либо ущерба Company_Name_Here, другим организациям или физическим лицам, пользователь несет персональную административную или уголовную ответственность согласно действующего законодавства. Администрация почтового сервера Server_Hostname_Here не несет ответственности за действия пользователя.</p> </td> </tr> </tbody> </table> <br> EOT; ?>
|
Что называется, "Остапа понесло..." - наваял "Правила пользования корпоративным почтовым сервером". Это так - основы, но возможно будет для кого-то базовыми правилами.
Активируем плагин, добавив запись в конфигурационный файл main.inc.php:
# cat /usr/local/www/roundcube/config/main.inc.php | grep login_info $rcmail_config['plugins'] = array('login_info'); |
Пример работы модуля:
Newmail notifier
Плагин newmail_notifier служит для уведомления пользователя о новом письме, фокусировкой либо же звуком. Для активации модуля необходимо добавить его поддержку в конфигурационный файл main.inc.php:
# cat /usr/local/www/roundcube/config/main.inc.php | grep antiBruteForce $rcmail_config['plugins'] = array('newmail_notifier'); |
Также необходимо создать конфигурационный файл плагина - config.inc.php в каталоге модуля. Содержание config.inc.php такое:
<?php
// Enables basic notification
$rcmail_config['newmail_notifier_basic'] = true; // Enables sound notification
$rcmail_config['newmail_notifier_sound'] = true; ?>
|
Теперь при поступлении нового письма, если окно Roundcube не активно, будет слышно звуковое уведомление.
Persistent login
Плагин Persistent login будет полезным для пользователей, которые не любят авторизовываться каждый раз при заходе в свой почтовый аккаунт. Плагин сохраняет cookie пользователя и автоматически выполняет вход в почтовый аккаунт при следующем посещении пользователем.
Загрузим плагин и поместим его в каталог /usr/local/www/roundcube/plugins:
# cd /usr/local/www/roundcube/plugins |
Активируем плагин, добавив его в массив подключенных плагинов Roundcube:
# cat /usr/local/www/roundcube/config/main.inc.php | grep persistent_login $rcmail_config['plugins'] = array('persistent_login'); |
В базовой поставке плагин готов к работе. Однако, плагин имеет возможность использовать два различных способа работы. Первый - это использование пользовательских cookies (UserData cookie). Второй способ более безопасен - AuthToken cookie.
UserData cookie
Способ не требует никакой дополнительной конфигурации и работает по умолчанию. Информация авторизации пользователя шифруется в cookie.
AuthToken cookie
Этот способ нуждается в активации в файле конфигурации. Активируем даный способ работы:
# cp persistent_login/config.inc.php.dist persistent_login/config.inc.php |
Обращаю внимание на то, что параметр ifpl_use_auth_tokens установлен в значение true. Также стоит обратить внимание на параметр ifpl_login_expire, который задает "время жизни" cookie.
Есть необходимость в создании таблицы в базе данных. Дамп таблицы идет в поставке. Просто "зальем" его в БД Roundcube:
# mysql -u root -p roundcube < persistent_login/sql/mysql.sql |
В результате на странице авторизации можно установить чекбокс "Запомнить меня".
Rcguard
Плагин Rcguard реализовывает вызов reCAPTCHA после определенного количества неудачных попыток авторизации. В идеале плагин Rcguard можно настроить на совмесную работу с antiBruteForce. После 3 неудачных попыток авторизации появляется reCAPTCHA, а после еще 3 неудачных попыток доступ блокируется на определенное время.
Итак, загрузим плагин и поместим его в каталог /usr/local/www/roundcube/plugins:
# cd /usr/local/www/roundcube/plugins |
Ознакамливаемся с README и создаем файл конфигурации, копированием из примера:
# cd rcguard && cp config.inc.php.dist config.inc.php |
Теперь пора разобраться с переменными, которые задаются в config.inc.php. После перевода комментариев имеем следующий результат (свои комменты добавлял):
<?php
/*
* rcguard configuration file */ // Количество ошибочных попыток авторизации перед тем, как будет отображена reCAPTCHA
$rcmail_config['failed_attempts'] = 3;
// Через сколько минут освободить IP (после последней неудачной попытки)
$rcmail_config['expire_time'] = 10;
// Задействовать HTTPS для reCAPTCHA
$rcmail_config['recaptcha_https'] = false;
// Ключи можно получить по адресу http://recaptcha.net/whyrecaptcha.html
// Публиный ключ для reCAPTCHA
$rcmail_config['recaptcha_publickey'] = '6LdtLMoS222222PzwVOwo646bD06ThbACLZI7SIGT'; // Приватный ключ для reCAPTCHA
$rcmail_config['recaptcha_privatekey'] = '6LdtLMoSAAAAAC2ABcoifRtILGnR_d-kTvMdbZdZ'; // Логирование
$rcmail_config['recaptcha_log'] = false; // События не будут логироваться, если задать NULL
// %r - Remote IP // %u - Username $rcmail_config['recaptcha_log_success'] = 'Verification succeeded for %u. [%r]'; $rcmail_config['recaptcha_log_failure'] = 'Error: Verification failed for %u. [%r]'; $rcmail_config['recaptcha_log_unknown'] = 'Error: Unknown log type.'; // Установить true, если используется плагин remember_me $rcmail_config['remember_me'] = false;
// Имя пользовательских cookie для remember_me
$rcmail_config['rememberme_user'] = 'rememberme_user'; // Имя пароля cookie для remember_me
$rcmail_config['rememberme_pass'] = 'rememberme_pass'; // Имя хоста cookie для remember_me
$rcmail_config['rememberme_host'] = 'rememberme_host'; ?>
|
Также не лишним будет изменить язык на русский. Сделать это можно в файле rcguard.js.
Следующий шаг - создание таблицы MySQL. Достаточно просто перенаправить предложенный дамп в БД, которую использует Roundcube:
# mysql -u root -p roundcube < SQL/mysql.initial.sql |
Активируем плагин, добавив его в массив плагинов в файле конфигурации main.inc.php:
# cat /usr/local/www/roundcube/config/main.inc.php | grep rcguard $rcmail_config['plugins'] = array('rcguard'); |
На этом настройка плагина заканчивается. После определенного количества ошибочных попыток авторизации, которое задается параметром failed_attempts, можно наблюдать результаты работы плагина:
ServerInfo
Плагин ServerInfo служит для отображения базовой информации о сервере. Также есть возможность добавлять свои поля и использовать переменые.
Скачиваем плагин ServerInfo в директорию плагинов Roundcube. Распаковываем загруженый архив и удаляем его, чтобы не засорять файловую систему:
# cd /usr/local/www/roundcube/plugins # fetch http://muff.kiev.ua/files/roundcube-serverinfo.tar.gz roundcube-serverinfo.tar.gz 100% of 16 kB 39 MBps # tar -xzf roundcube-serverinfo.tar.gz # rm roundcube-serverinfo.tar.gz |
Для включения плагина добавим его в список подключенных плагинов:
# cat /usr/local/www/roundcube/config/main.inc.php | grep serverinfo $rcmail_config['plugins'] = array('serverinfo'); |
Теперь, если зайти в секцию "Настройки", то можно обнаружить новую закладку "О сервере". Однако не вся информация корректна. Для "тюнинга" плагина, скопируем файл config.inc.php.dist в config.inc.php:
# cd /usr/local/www/roundcube/plugins/serverinfo |
Советую ознакомиться с комментариями в файле config.inc.php и отредактировать файл конфигурации под свои нужды. В результате имеем примерно следующий результат:
Sticky notes
Плагин sticky notes позволяет оставлять разнообразные заметки.
Скачиваем плагин sticky notes в директорию плагинов Roundcube. Распаковываем загруженый архив и удаляем его, чтобы не засорять файловую систему:
# cd /usr/local/www/roundcube/plugins # fetch http://muff.kiev.ua/files/roundcube-sticky_notes.tar.gz roundcube-sticky_notes.tar.gz 100% of 1625 kB 55 MBps # tar -xzf roundcube-sticky_notes.tar.gz # rm roundcube-sticky_notes.tar.gz |
Создадим файл конфигурации, копированием из предложеного примера:
# cp sticky_notes/config.inc.php.dist sticky_notes/config.inc.php |
Заметки будут храниться в БД. Для создания таблиц воспользуемся предложеным дампом:
# mysql -u root -p roundcube < sticky_notes/SQL/mysql.sql |
Активируем плагин, добавив его в масив подключенных плагинов в файле конфигурации main.inc.php:
# cat /usr/local/www/roundcube/config/main.inc.php | grep sticky_notes $rcmail_config['plugins'] = array('sticky_notes'); |
Результат примерно такой:
Userinfo
Плагин Userinfo служит для отображения некоторой информации о текущем пользователе, создавая новую вкладку в секции "Настройки". Для включения плагина необходимо добавить его в список подключенных плагинов:
# cat /usr/local/www/roundcube/config/main.inc.php | grep userinfo $rcmail_config['plugins'] = array('userinfo'); |
Больше никаких дополнительных настроек не нужно.
Пример работы плагина: