Проект

Общее

Профиль

Использование сервера TEGU с интерфейсом Roundcube

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

Смотрим результат: