Использование сервера TEGU с интерфейсом Roundcube¶
- Содержание
- Использование сервера TEGU с интерфейсом Roundcube
- Подготовка к установке
- Настройка Roundcube Webmail
- Установка плагинов
Roundcube - клиент для работы с электронной почтой с веб-интерфейсом, написанный на PHP с использованием JavaScript, CSS, HTML и технологией AJAX.
Roundcube является открытым ПО, распространяемым по лицензии GNU GPL v3 и состоит из множества компонентов.
Разработка СПО компонентов устроена так, что не все компоненты в разные периоды времени бывают совместимы друг с другом.
Поэтому необходимо либо проверить их совместимость самостоятельно, либо воспользоваться протестированными нами версиями.
Во втором случае просим вас использовать описанные в этой статье версии и методику установки.
Подготовка к установке¶
Системные требования:
Debian 11
Postgres
RoundCube 1.5.3
PHP 7.4
Composer 2.4.2
Roundcube — клиент для работы с электронной почтой с веб-интерфейсом, написанный на PHP с использованием JavaScript, CSS, HTML и технологии AJAX.
Устанавливается практически на любой сервер с поддержкой PHP версии 7.4 в качестве базы данных может использовать MySQL, PostgreSQL, SQLite,
MSSQL или Oracle Database, предоставляет возможность работы с почтовыми ящиками по протоколам IMAP и SMTP.
По мере развития приложение стало более мощным, в настоящее время оно сравнимо по функциональным возможностям с настольными почтовыми клиентами,
такими как Outlook Express или Mozilla Thunderbird: в современных версиях поддерживается многоязычность, обеспечена полная поддержка MIME- и HTML-сообщений,
вложений, реализована собственная адресная книга и система подсказки имени адресата при вводе, поддерживаются персональные папки сообщений, встроена проверка правописания.
Поддерживает внешние SMTP-серверы. Реализовано кэширование для ускорения доступа к письмам. Внешний вид программы изменяется при помощи персонализируемых скинов.
Обновление ОС¶
apt update && full-upgrade
Системная локаль¶
Настройка и установка системной локали по умолчанию.
dpkg-reconfigure locales
выбираем ru_RU.UTF-8
Часовой пояс¶
Установка, настройка и изменение часового пояса
timedatectl set-timezone Europe/Moscow
Посмотреть список всех timezоne, доступных для установки на сервере, можно командой:
timedatectl list-timezones
Перед настройкой или изменением часового пояса, рекомендуется обновить список timezone на сервере. Они периодически меняются.
apt update && apt upgrade tzdata
Синхронизация времени¶
Настроим синхронизацию времени через интернет, смотрим что у нас настроено в качестве службы обновления времени.
timedatectl
Установка Roundcube Webmail¶
Загрузка Roundcube Webmail.
wget https://github.com/roundcube/roundcubemail/releases/download/1.5.3/roundcubemail-1.5.3-complete.tar.gz
Распаковываем архив.
tar xvf roundcubemail-1.5.3-complete.tar.gz
создаем папку
mkdir -p /var/www/
перемещаем /var/www/roundcube
mv roundcubemail-1.5.3 /var/www/roundcube
Задаем права.
chown -R www-data:www-data /var/www/roundcube/ chmod -R 775 /var/www/roundcube/
cd /var/www/roundcube chown www-data:www-data temp/ logs/ -R
Установка PHP¶
Устанавливаем компоненты PHP.
apt install software-properties-common
apt-get install ca-certificates apt-transport-https software-properties-common curl lsb-release -y
curl -sSL https://packages.sury.org/php/README.txt | bash -x
apt update
apt install php-net-ldap2 php-net-ldap3 php-imagick php7.4-common php7.4-pgsql php7.4-gd php7.4-imap php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-gmp php7.4-redis libapache2-mod-php7.4 php7.4-ldap php7.4-imagick
Если установились совместно компоненты php 8.0, 8,1 8,1 - удаляем.
Удаляем компоненты php8.*
apt purge php8.0* apt purge php8.1* apt purge php8.2*
Установка Postgres¶
apt install postgresql postgresql-contrib
Проверяем статус службы.
systemctl status postgresql
Сразу после установки проверяем слушает ли сервер порт 5432 и на каком адресе.
ss -lnpt | grep 5432
Должны увидеть примерно такой вывод.
LISTEN 0 244 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=26097,fd=6)) LISTEN 0 244 [::1]:5432 [::]:* users:(("postgres",pid=26097,fd=5))
Размешаем автоматический запуск Postgresql.
systemctl enable postgresql
После этого откроем файл конфигурации postgresql.conf в директории /etc/postgresql/13/main/
nano /etc/postgresql/13/main/postgresql.conf
и в нём раскомментируем и исправим параметр listen_addresses:
listen_addresses = '*'
Затем откроем конфигурационный файл pg_hba.conf в той же директории.
nano /etc/postgresql/13/main/pg_hba.conf
Переходим на пользователя postgres и создадим пользователя zabbix и базу данных.
su - postgres -s /bin/bash
psql
Создаем базу данных.
CREATE DATABASE roundcubemail;
Создаем пользователя.
CREATE USER roundcube WITH PASSWORD 'roundcube_password';
Мы создали пользователя со следующим логином и паролем:
CREATE USER roundcube WITH PASSWORD 'Qwe123Poi';
Зададим права на пользователя и базу данных.
ALTER DATABASE roundcubemail OWNER TO roundcube; GRANT ALL PRIVILEGES ON DATABASE roundcubemail TO roundcube;
Выйдем из консоли Postgres и выполним инициализацию таблиц.
Для этого нажмите.
Ctrl+D
psql -h 127.0.0.1 -d roundcubemail -U roundcube -W -f /var/www/roundcube/SQL/postgres.initial.sql
Введите заданный пароль пользователя roundcube.
Должны увидеть следующее:
Пароль: CREATE SEQUENCE CREATE TABLE CREATE TABLE CREATE INDEX CREATE SEQUENCE CREATE TABLE CREATE INDEX CREATE INDEX CREATE SEQUENCE CREATE TABLE CREATE INDEX CREATE SEQUENCE CREATE TABLE CREATE INDEX CREATE SEQUENCE CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE TABLE CREATE SEQUENCE CREATE TABLE CREATE SEQUENCE CREATE TABLE CREATE TABLE INSERT 0 1
Настройка Apache¶
Устанавливаем Apache.
apt install apache2 apache2-utils
Перед началом настройки убедитесь, что в вашей системе запущены службы Apache.
Выполните следующую команду, чтобы проверить статус служб apache:
systemctl status apache2 systemctl start apache2 systemctl enable apache2
Подготовка Apache.
Затем нам необходимо создать виртуальный хост Apache, на котором и будет доступен наш почтовый клиент.
Для этого создайте файл /etc/apache2/sites-available/roundcube.conf со следующим содержимым:
nano /etc/apache2/sites-available/roundcube.conf
<VirtualHost *:80> ServerName roundcube.local ServerAdmin webmaster@localhost DocumentRoot /var/www/roundcube/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
В строке ServerName нужно указать поддомен, на котором будет доступен Roundcube,
а в строке DocumentRoot мы указываем путь к папке программы.
Если вы устанавливаете программу на локальный компьютер, то нужно добавить такую строчку в файл /etc/hosts, чтобы выбранное доменное имя указывало на локальный компьютер:
nano /etc/hosts
127.0.0.1 roundcube.local
Затем надо настроить временную зону php для этого откройте файл
nano /etc/php/8.1/apache2/php.ini, найдите такую строчку и пропишите в ней свою временную зону:
date.timezone = Asia/Yekaterinburg
Затем активируйте только что созданный виртуальный хост, модуль rewrite и перезапустите веб-сервер:
a2ensite roundcube.conf a2enmod rewrite systemctl restart apache2
Настройка Roundcube Webmail¶
Теперь давайте разберемся как настроить roundcube.
Запустить установщик можно открыв в браузере адрес http://ваш_ip_address/installer .
Здесь все пункты, кроме Checking available databases (неиспользуемых баз данных) должны иметь значение OK.
Если это не так, надо выполнить действия, которые предлагает программа чтобы значение изменилось на OK.
Только после этого переходите к следующему шагу.
Database setup¶
Здесь нужно будет указать:
- Тип базы данных;
- Имя пользователя базы данных;
- Название базы данных;
- Пароль.
Настройки IMAP¶
Настройки SMTP¶
В следующем разделе указываете¶
- Язык: ru_RU — для русского языка;
- skin: тему оформления веб-интерфейса (можно изменить после установки);
- mime_param_folding: Full RFC 2231.
Остальное по-умолчанию.
Создаем конфигурацию.
Правка конфигурационного файла.¶
Конфигурационный файл находится по следующему пути:
nano /var/www/roundcube/config/config.inc.php
Ниже представлен примерный конфиг который должен получится.
<?php $config['db_dsnw'] = 'pgsql://roundcube:Qwe123Poi@localhost/roundcubemail'; $config['default_host'] = 'ssl://mail.tegu.online'; $config['default_port'] = 993; $config['imap_auth_type'] = 'IMAP'; $config['imap_conn_options'] = array ( 'ssl' => array ( 'verify_peer' => false, 'verfify_peer_name' => false, ), ); $config['smtp_server'] = 'ssl://mail.tegu.online'; $config['smtp_port'] = 465; $config['support_url'] = ''; $config['ip_check'] = true; //Этот параметр генерируется автоматически его не трогать! $config['des_key'] = 'Lvo4fm17QVxFbkmiPi9SlCiS'; // PLUGINS // ---------------------------------- // List of active plugins (in plugins/ directory) $config['plugins'] = [ 'example_addressbook', ]; $config['enable_spellcheck'] = true; $config['enable_installer'] = false; $prefs['_GLOBAL']['pwstore_scheme'] = 'des_key';
Установка плагинов¶
Важно: Перед установкой плагинов сделайте резервную копию чтоб можно было откатиться назад, исправить ошибки и вернуться к установке.
Установка плагина Calendar с поддержкой Caldav¶
Для работы данного плагина необходим Composer оперделеной версии: 2.4.2
Composer — это пакетный менеджер уровня приложений для языка программирования PHP,
который предоставляет средства по управлению зависимостями в PHP-приложении.
Устанавливаем Composer глобально для всей системы.
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --version=2.4.2
Проверяем установленную версию:
composer --version
Затем проверьте установку Composer с помощью следующей команды:
Устанавливаем сам плагин.
Переходим в по следующему пути:
cd /var/www/roundcube
Выполняем следующие команды и утвердительно со всем соглашаемся.
composer config repositories.calendar vcs https://github.com/JodliDev/calendar composer config repositories.libcalendaring vcs https://github.com/JodliDev/libcalendaring composer config minimum-stability dev composer require kolab/calendar bin/initdb.sh --dir=plugins/calendar/drivers/caldav/SQL
Настраиваем конфиг календаря:
nano /var/www/roundcube/plugins/calendar/config.inc.php
Находим секцию с адресом caldav сервера и приводим к следующему виду:
$config['calendar_caldav_preinstalled_sources'] = array( 'name' => array( 'caldav_user' => '%u', 'caldav_pass' => '%p', 'caldav_url' => 'https://mail.tegu.online:8809/caldav/', 'showAlarms' => 1 ) );
Авторизуемся в веб интерфейсе и видим все наши календари:
Установка плагина Addressbook с поддержкой Carddav¶
Переходим по следующему пути:
cd /var/www/roundcube/plugins
Скачиваем плагин:
wget wget https://github.com/mstilkerich/rcmcarddav/releases/download/v4.4.6/carddav-v4.4.6.tar.gz
Распаковываем:
tar -xzvf carddav-v4.4.6.tar.gz
Переходим в каталог с плагином:
cd carddav
Выполняем необходимые команды с Composer:
curl -sS https://getcomposer.org/installer | php php composer.phar update && php composer.phar install
Копируем конфигурационный файл:
cp config.inc.php.dist config.inc.php
Инициализируем таблицы в базу данных Postgres
Переходим в каталог
/var/www/roundcube/plugins/carddav
Запускаем процедуру инициализации:
cat dbmigrations/INIT-currentschema/postgres.sql | sed -r -e 's/TABLE_PREFIX//g' | psql -U roundcube -h 127.0.0.1 -W roundcubemail
Заводим пароль от базы данных roundcubemail
И видим процесс инициализации базы данных:
CREATE SEQUENCE CREATE TABLE CREATE INDEX CREATE SEQUENCE CREATE TABLE CREATE INDEX CREATE SEQUENCE CREATE TABLE CREATE INDEX CREATE SEQUENCE CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE INDEX CREATE SEQUENCE CREATE TABLE
Включаем плагин:
nano /var/www/roundcube/config/config.inc.php
Приводим конфиг к следующему виду:
$config['plugins'] = [ 'libkolab', 'libcalendaring', 'calendar', 'carddav', ];
Смотрим какие плагины у нас установлены:
Настройка ограничения вложений:¶
Редактируем файл php.ini
/etc/php/7.4/apache2/php.ini
Меняем значения в следующих строках:
post_max_size = 20M upload_max_filesize = 20M
меняем кол-во вложенных файлов:
max_file_uploads = 20
Перезапускаем Apache:
systemctl restart apache2
Смотрим результат: