Roundcube Webmail: установка и настройка веб-почты

Roundcube Webmail: обзор и возможности

Roundcube — наиболее популярный open-source веб-клиент электронной почты. Он предоставляет современный AJAX-интерфейс для работы с почтой через браузер, поддерживает IMAP, SMTP, адресную книгу, фильтры Sieve, и расширяется плагинами. Roundcube используется хостинг-провайдерами (cPanel, Plesk), корпорациями и самостоятельно администрируемыми серверами.

Ключевые возможности: многоязычный интерфейс (включая русский), drag-and-drop управление письмами и папками, полнотекстовый поиск, HTML-редактор писем, управление фильтрами Sieve, импорт/экспорт контактов (vCard, CSV), поддержка нескольких идентичностей отправителя, темы оформления, система плагинов.

Roundcube написан на PHP и требует: веб-сервер (Apache или Nginx), PHP 7.4+ с модулями, СУБД (MySQL/PostgreSQL/SQLite), доступ к IMAP- и SMTP-серверу (Dovecot + Postfix — типичная связка).

Установка Roundcube на Ubuntu/Debian

Установка из пакетов или из исходников. Рекомендуется установка из tarball — пакеты дистрибутива часто устаревшие:

# Зависимости
apt install -y apache2 php php-{mbstring,xml,intl,zip,gd,pdo,mysql,pgsql,curl,ldap,imagick} \
  mariadb-server unzip composer

# Скачивание Roundcube 1.6.x
cd /var/www
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.6/roundcubemail-1.6.6-complete.tar.gz
tar xzf roundcubemail-1.6.6-complete.tar.gz
mv roundcubemail-1.6.6 roundcube
chown -R www-data:www-data /var/www/roundcube
chmod -R 750 /var/www/roundcube/temp /var/www/roundcube/logs

Создание базы данных:

mysql -u root << 'SQL'
CREATE DATABASE roundcube CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'RcDBPass2026';
GRANT ALL ON roundcube.* TO 'roundcube'@'localhost';
FLUSH PRIVILEGES;
SQL

# Импорт схемы
mysql -u roundcube -pRcDBPass2026 roundcube < /var/www/roundcube/SQL/mysql.initial.sql

Настройка Apache Virtual Host

Создайте виртуальный хост с HTTPS (Let's Encrypt):

# /etc/apache2/sites-available/roundcube.conf
<VirtualHost *:443>
    ServerName mail.company.ru
    DocumentRoot /var/www/roundcube/public_html
    
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/mail.company.ru/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mail.company.ru/privkey.pem
    
    <Directory /var/www/roundcube/public_html>
        AllowOverride All
        Require all granted
    </Directory>
    
    # Запрет доступа к конфигурации
    <Directory /var/www/roundcube/config>
        Require all denied
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log
    CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined
</VirtualHost>

# Редирект HTTP → HTTPS
<VirtualHost *:80>
    ServerName mail.company.ru
    Redirect permanent / https://mail.company.ru/
</VirtualHost>
a2ensite roundcube
a2enmod ssl rewrite
systemctl restart apache2

Конфигурация Roundcube

Основной файл конфигурации — /var/www/roundcube/config/config.inc.php:

<?php
// Подключение к БД
$config['db_dsnw'] = 'mysql://roundcube:RcDBPass2026@localhost/roundcube';

// IMAP-сервер (Dovecot)
$config['imap_host'] = 'ssl://localhost:993';
$config['imap_auth_type'] = 'LOGIN';
$config['imap_conn_options'] = [
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false,
    ],
];

// SMTP-сервер (Postfix)
$config['smtp_host'] = 'tls://localhost:587';
$config['smtp_auth_type'] = 'LOGIN';
$config['smtp_user'] = '%u';  // Логин пользователя
$config['smtp_pass'] = '%p';  // Пароль пользователя

// Общие настройки
$config['product_name'] = 'Корпоративная почта';
$config['support_url'] = 'mailto:it@company.ru';
$config['des_key'] = 'генерируйте_случайную_24_символа';  // openssl rand -hex 12
$config['default_host'] = 'ssl://localhost';
$config['default_port'] = 993;
$config['language'] = 'ru_RU';
$config['date_format'] = 'd.m.Y';
$config['time_format'] = 'H:i';
$config['skin'] = 'elastic';  // Современная тема
$config['plugins'] = [
    'archive',
    'zipdownload',
    'managesieve',
    'password',
    'markasjunk',
];

Настройка Sieve-фильтров

Плагин ManageSieve позволяет пользователям управлять правилами фильтрации через веб-интерфейс:

// /var/www/roundcube/plugins/managesieve/config.inc.php
$config['managesieve_host'] = 'localhost';
$config['managesieve_port'] = 4190;
$config['managesieve_auth_type'] = null;  // Автоопределение
$config['managesieve_usetls'] = true;
$config['managesieve_default'] = '/var/www/roundcube/plugins/managesieve/default.sieve';

// На стороне Dovecot: убедитесь что sieve включён
// /etc/dovecot/conf.d/20-managesieve.conf
// protocols = $protocols sieve
// service managesieve-login { inet_listener sieve { port = 4190 } }

Плагин смены пароля

Плагин password позволяет пользователям менять пароль почтового ящика через Roundcube:

// /var/www/roundcube/plugins/password/config.inc.php

$config['password_driver'] = 'sql';
$config['password_minimum_length'] = 8;
$config['password_require_nonalpha'] = true;
$config['password_force_new_user'] = false;

// Для SQL-драйвера (пароли в БД Postfix/Dovecot)
$config['password_db_dsn'] = 'mysql://postfix:PostfixDBPass@localhost/postfix';
$config['password_query'] = "UPDATE mailbox SET password=%C WHERE username=%u";
$config['password_hash_algorithm'] = 'blowfish-crypt';  // bcrypt
$config['password_blowfish_cost'] = 12;

// Для LDAP/Active Directory:
// $config['password_driver'] = 'ldap';
// $config['password_ldap_host'] = 'ldap://dc.company.local';
// $config['password_ldap_port'] = 389;
// $config['password_ldap_starttls'] = true;
// $config['password_ldap_basedn'] = 'ou=Users,dc=company,dc=local';
// $config['password_ldap_method'] = 'user';

Интеграция с Postfix и Dovecot

Roundcube работает как клиент к существующим IMAP/SMTP серверам. Типичная связка: Postfix (SMTP) + Dovecot (IMAP) + виртуальные домены в MySQL.

На стороне Dovecot обеспечьте поддержку IMAP и Sieve:

# /etc/dovecot/dovecot.conf
protocols = imap lmtp sieve

# /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain login

# /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.company.ru/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.company.ru/privkey.pem
ssl_min_protocol = TLSv1.2

# /etc/dovecot/conf.d/15-mailboxes.conf
namespace inbox {
  mailbox Drafts { auto = subscribe; special_use = \Drafts }
  mailbox Sent   { auto = subscribe; special_use = \Sent }
  mailbox Trash  { auto = subscribe; special_use = \Trash }
  mailbox Junk   { auto = subscribe; special_use = \Junk }
  mailbox Archive { auto = subscribe; special_use = \Archive }
}

На стороне Postfix — submission-порт для отправки:

# /etc/postfix/master.cf
submission inet n - y - - smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

Оптимизация производительности

При 100+ пользователях Roundcube может потреблять значительные ресурсы. Оптимизации:

// config.inc.php — кэширование
$config['imap_cache'] = 'db';        // Кэш IMAP-структуры в БД
$config['messages_cache'] = 'db';     // Кэш заголовков писем
$config['session_lifetime'] = 30;     // Минут до таймаута
$config['min_refresh_interval'] = 60; // Секунд между автообновлениями
$config['mail_pagesize'] = 50;        // Писем на страницу
$config['addressbook_pagesize'] = 50;

// Ускорение PHP: OPcache должен быть включён
// /etc/php/8.1/apache2/conf.d/10-opcache.ini
// opcache.enable=1
// opcache.memory_consumption=128
// opcache.max_accelerated_files=10000
// opcache.revalidate_freq=60

Redis для сессий и кэша

Перенос сессий в Redis значительно ускоряет работу при множестве одновременных пользователей:

# Установка Redis
apt install -y redis-server php-redis

# config.inc.php
$config['session_storage'] = 'redis';
$config['redis_hosts'] = ['localhost:6379'];

// Memcached — альтернатива:
// $config['session_storage'] = 'memcache';
// $config['memcache_hosts'] = ['localhost:11211'];

systemctl restart apache2

Безопасность Roundcube

Веб-почта — критичный сервис, требующий тщательной защиты:

// config.inc.php — безопасность
$config['login_rate_limit'] = 3;       // Максимум попыток входа в минуту
$config['ip_check'] = true;            // Привязка сессии к IP
$config['use_https'] = true;           // Принудительный HTTPS
$config['login_lc'] = 2;               // Приводить логин к нижнему регистру
$config['sendmail_delay'] = 5;         // Задержка между письмами (антиспам)
$config['max_message_size'] = '25M';   // Максимальный размер письма

// Безопасные заголовки (Apache)
// .htaccess или VirtualHost:
// Header set X-Content-Type-Options "nosniff"
// Header set X-Frame-Options "SAMEORIGIN"
// Header set X-XSS-Protection "1; mode=block"
// Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'"
// Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Дополнительные меры: fail2ban для защиты от брутфорса (парсить /var/www/roundcube/logs/errors.log), ограничение доступа по IP через Apache/Nginx, двухфакторная аутентификация через плагин two_factor_totp.

Fail2Ban для Roundcube

Настройка fail2ban для блокировки неудачных попыток входа:

# /etc/fail2ban/filter.d/roundcube.conf
[Definition]
failregex = IMAP Error: Login failed for .* from <HOST>
            Login failed for .* from <HOST>
ignoreregex =

# /etc/fail2ban/jail.d/roundcube.conf
[roundcube]
enabled = true
port = http,https
filter = roundcube
logpath = /var/www/roundcube/logs/errors.log
maxretry = 5
findtime = 600
bantime = 3600

systemctl restart fail2ban

Часто задаваемые вопросы

Да, Roundcube — это IMAP-клиент и может подключаться к любому IMAP-серверу. Для Gmail: IMAP host ssl://imap.gmail.com:993, SMTP tls://smtp.gmail.com:587. Для Yandex: ssl://imap.yandex.ru:993 и tls://smtp.yandex.ru:587. Однако Gmail требует App Password при включённой 2FA. Roundcube чаще используется с собственным почтовым сервером (Postfix + Dovecot).

Скачайте новую версию, распакуйте рядом с текущей, скопируйте config/config.inc.php и каталог plugins/ (кастомные). Запустите скрипт миграции: bin/installto.sh /var/www/roundcube — он обновит файлы и мигрирует БД. Перед обновлением обязательно сделайте бэкап БД и каталога. После обновления очистите кэш: bin/cleandb.sh.

Roundcube — чистый веб-клиент почты, лёгкий и быстрый, с богатой экосистемой плагинов. SOGo — groupware-решение (почта + календарь + контакты + ActiveSync), но тяжелее и сложнее в настройке. Если нужна только веб-почта — Roundcube. Если нужна синхронизация календарей, задач и совместная работа — SOGo. Roundcube можно расширить плагинами CalDAV/CardDAV, но это не его сильная сторона.

В Roundcube нет встроенного централизованного управления подписями. Варианты: 1) Плагин identity_select с predefined identities через БД; 2) Настройка подписи через LDAP-атрибуты при авторизации (плагин new_user_identity); 3) Добавление подписи на уровне Postfix через milter (altermime) — подпись добавляется ко всем исходящим письмам независимо от клиента. Третий вариант надёжнее, так как работает и для мобильных клиентов.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#Roundcube установка#веб-почта Linux#Roundcube настройка#webmail сервер#Roundcube Postfix#Roundcube Dovecot#почтовый клиент web#Roundcube плагины
Комментарии 0

Оставить комментарий

загрузка...