Настройка почтового веб-интерфейса (RoundCube) в CentOS/RHEL 7
Установка веб-почты RoundCube
Первым делом установим сам RoundCube и драйвер для MySQL:
1
|
$ yum —y install php—pear—MDB2—Driver—mysqli roundcubemail
|
Теперь в SELinux разрешим сетевые подключения веб-серверу:
1
|
$ setsebool —P httpd_can_network_connect=on
|
Подготавливаем Apache и PHP для работы RoundCube:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
$ nano —w /etc/httpd/conf.d/roundcubemail.conf
<Directory /usr/share/roundcubemail/>
# php_flag error_reporting E_ALL & ~E_NOTICE
# php_flag memory_limit 256MB
php_flag file_uploads On
php_flag session.auto_start 0
php_flag zend.ze1_compatibility_mode 0
php_flag suhosin.session.encrypt 0
php_flag mbstring.func_overload 0
php_flag magic_quotes_runtime Off
php_flag magic_quotes_sybase Off
...
<IfModule mod_authz_core.c>
...
Require ip 192.168.255.0/24
</IfModule>
<IfModule !mod_authz_core.c>
...
Allow from 192.168.255.0/24
</IfModule>
...
</Directory>
<Directory /usr/share/roundcubemail/installer/>
...
<IfModule mod_authz_core.c>
...
Require ip 192.168.255.0/24
</IfModule>
...
Allow from 192.168.255.0/24
</IfModule>
...
</Directory>
$ systemctl reload httpd.service
|
Если планируется пользоваться сервисом не с определённых подсетей, а откуда угодно из Интернета, то в блоке вместо строки
Require ip 192.168.255.0/24
нужно написать Require all granted
, а вместо Allow from 192.168.255.0/24
– строку Allow from All
. Но в блоке лучше оставить только доверенные IP-адреса или подсети.
По умолчанию для RoundCube создаётся алиас /roundcubemail
, т.е. для доступа к RoundCube в браузере нужно ввести адрес http://domain.example.com/roundcubemail/
. Я же хочу сделать чтобы для доступа к RoundCube нужно было вводить адрес http://mail.example.com/
, для этого сделаем следующее:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
$ nano —w /etc/httpd/vhost.d/vhost—mail.example.com
# HTTP Virtual Host
<VirtualHost *:80>
ServerName mail.example.com
ServerAdmin admin@example.com
CustomLog «|/usr/sbin/cronolog logs/mail.example.com/access_log.%Y-%m» combined env=!dontlog
ErrorLog «|/usr/sbin/cronolog logs/mail.example.com/error_log.%Y-%m»
RewriteEngine On
RewriteCond %{HTTPS} Off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
# HTTPS Virtual Host
<VirtualHost *:443>
ServerName mail.example.com
ServerAdmin admin@example.com
DocumentRoot /usr/share/roundcubemail
CustomLog «|/usr/sbin/cronolog logs/mail.example.com/access_log.%Y-%m» combined env=!dontlog
ErrorLog «|/usr/sbin/cronolog logs/mail.example.com/error_log.%Y-%m»
RewriteEngine On
RewriteRule ^(.*)favicon\.ico /skins/larry/images/favicon.ico [L]
</VirtualHost>
$ systemctl reload httpd.service
|
Эта часть конфигурационного файла откроет доступ к RoundCube по адресу https://mail.example.com/
, а если кто-то введёт адрес не с https, а с http – веб-сервер сделает редирект на https.
PS. Для того чтобы в CentOS 7 работали виртуальные хосты с файлами вида /etc/httpd/vhost.d/vhost-mail.example.com
, Apache должен быть настроен как описано в этой статье.
Для работы RoundCube нужно создать базу данных и пользователя в MySQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
$ mysql —u root —p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2639
Server version: 5.5.40—MariaDB MariaDB Server
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE `RCMailDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> CREATE USER ‘RCMailUser’@‘localhost’ IDENTIFIED BY ‘RCMailPassWord’;
Query OK, 0 rows affected (0.10 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON `RCMailDB`.* TO ‘RCMailUser’@‘localhost’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> \q
Bye
|
Дальнейшая настройка Roundcube будет проводиться в браузере, так что открываем ссылку https://mail.acmenet.ru/installer/
.
Смотрим что в окне «Check environment» напротив всех пунктов прописано «OK» (кроме PostgreSQL и других неиспользуемых драйверов БД) и нажимаем на «Next».
В следующем окне «Create config» бОльшую часть пунктов можно оставить с настройками по умолчанию, необходимо отредактировать лишь три блока: «Database setup», «IMAP Settings» и «SMTP Settings». В блоке «Database Setup» указываем данные базы данных, пользователя и пароля, что мы создали чуть раньше. В блоке «IMAP Settings» в поле default_host указываем ssl://localhost, в поле default_port указываем 993. Так же обратите внимание на дефолтные названия системных папок. У меня, к примеру, папка со спамом называется Spam, а не Junk. В блоке «SMTP Settings» в поле smtp_server указываем ssl://%h, в поле smtp_port указываем порт 465, так же отмечаем галочкой поле «Use the current IMAP username and password for SMTP authentication», для того чтобы перед отправкой почты RoundCube авторизовывался на SMTP-сервере.
Можно ещё в блоке «Display settings & user prefs» отметить галочками поле preview_pane, а в поле htmleditor, можно выбрать пункт «on reply to HTML message only», или даже вовсе «always».
После первоначальной настройки RoundCube можно нажать на кнопку «Create Config».
Дальше нам покажут созданный конфигурационный файл, который мы должны скопировать в файл /etc/roundcubemail/config.inc.php
:
1
2
3
4
5
|
$ nano —w /etc/roundcubemail/config.inc.php
...
$ chcon —u system_u /etc/roundcubemail/config.inc.php
$ chown root:apache /etc/roundcubemail/config.inc.php
$ chmod 0640 /etc/roundcubemail/config.inc.php
|
После создания конфигурационного файла, возвращаемся в браузер и нажимаем на кнопку «Continue». Нам откроется последнее окно установщика – «Test config». Видим что везде прописано «OK», кроме «DB Schema». Это из-за того что в базе данных для RoundCube мы не создавали никаких таблиц. Для того чтобы были созданы эти таблицы – нажмите на кнопку «Initialize database». Теперь у нас везде написано «OK». Можно для успокоения совести ещё проверить отправку почты и соединение к IMAP-серверу.
Теперь запретим доступ к страницам RoundCube Installer и удалим его:
1
2
3
4
|
$ nano —w /etc/roundcubemail/config.inc.php
/* Local configuration for Roundcube Webmail */
$config[‘enable_installer’] = false;
$ rm —rf /usr/share/roundcubemail/installer/
|
Имейте в виду, папку installer нужно будет удалять вручную каждый раз после обновления RoundCube!
Теперь можно открыть в браузере https://mail.example.com/
и попробовать залогиниться.
Некоторые советы по тонкой настройке RoundCube:
- Если нужно добавить возможность логиниться из RoundCube к нескольким разным почтовым сервера, конфигурационный файл нужно отредактировать следующим образом:
12345678$ nano —w /etc/roundcubemail/config.inc.php$config[‘default_host’] = array(‘ssl://mail.example.com:993’ => ‘Company #01 (example.com)’,‘ssl://mail.example.org:993’ => ‘Company #02 (example.org)’);$config[‘smtp_server’] = ‘ssl://%h’;$config[‘username_domain’] = ‘%z’;$config[‘login_autocomplete’] = 1; - Так же, советую, добавить ещё несколько строчек в конфигурационный файл RoundCube:
12345$ nano —w /etc/roundcubemail/config.inc.php...$config[‘skip_deleted’] = true;$config[‘check_all_folders’] = true;$config[‘autoexpand_threads’] = 2;
Включение параметраskip_deleted
уберёт удалённые письма из инбокса и других папок, параметрcheck_all_folders
позволит проверять новые письма во всех папках, а изменение параметраautoexpand_threads
заставит RoundCube группировать письма в обсуждения. Вообще, лучше просмотреть все имеющиеся параметры в файле/etc/roundcubemail/defaults.inc.php
и, если, возникнет желание, добавить нужные параметры с нужными значениями в файл/etc/roundcubemail/config.inc.php
. - Включим парочку встроенных плагинов:
123$ nano —w /etc/roundcubemail/config.inc.php...$config[‘plugins’] = array( ’emoticons’, ‘markasjunk’, ‘new_user_dialog’ );
Плагинemoticons
отвечает за смайлики, а плагинmarkasjunk
добавляет на тулбар кнопку, которая переносит письмо в папкуSpam
. А благодаря плагинуnew_user_dialog
у пользователя, после первого логина появится окошко, где он сможет ввести своё полное ФИО и наименование организации, для того чтобы у отправляемых писем было вменяемое полеFrom
.
Oleg Retrov
29.01.2017 - 23:10
Здравствуйте! При написании письма приходится каждый раз вводить адрес, с которого происходит отправка почты. Как от этого избавиться по-умолчанию? Предложения внести адрес в профиль не катит. Скрин проблемы здесь: http://file.blanet.ru/screen.jpg
Wakko
29.01.2017 - 23:19
Без скрина с заполненным профилем вопрос не катит.