Site icon 8HOST.COM

Почтовый веб-клиент на Roundcube в Ubuntu 16.04

Сегодня многие пользуются браузерными почтовыми клиентами типа Gmail. Но если вы хотите избавиться от рекламы в своем почтовом ящике или перейти с публичного почтового сервиса на собственный домен, вы можете запустить свой собственный почтовый клиент (также это называется пользовательским почтовым агентом).

Roundcube – это современный настраиваемый клиент электронной почты на основе IMAP, написанный на PHP. Он имеет большой набор функций для просмотра, организации и составления электронных писем, а также для поддержки контактов и управления календарями. Roundcube предлагает репозиторий плагинов, с помощью которого вы можете расширить функциональность клиента.

Чтобы понять, подходит ли Roundcube для организации вашей электронной почты, давайте рассмотрим компоненты, которые обслуживают электронную почту:

Когда вы отправляете электронное письмо, ваш пользовательский почтовый агент переносит его на MTA вашего почтового сервера, используя SMTP. После нескольких пересылок MTA адресата получит электронное письмо и передаст его в MDA с помощью IMAP. Затем ваш адресат сможет просмотреть электронную почту, используя свой MUA.

Примечание: Другими словами, Roundcube является MUA, а не MTA. Это означает, что для работы Roundcube вам все равно необходимо иметь сервис, который управляет электронной почтой. Вы можете использовать свой собственный почтовый сервер, но если вы не хотите, Roundcube можно использовать с публичными сервисами электронной почты типа Gmail.

Данный мануал поможет настроить Roundcube с бэкэндом Gmail.

Требования

1: Установка зависимостей

Сначала нужно установить зависимости и настроить PHP. После установки Roundcube вы сможете обратиться к его странице проверки зависимостей и убедиться, что все установлено правильно.

В комплект не входят такие зависимости:

Обновите индекс пакетов и установите все зависимости:

sudo apt-get update
sudo apt-get install php-xml php-mbstring php-intl php-zip php-pear zip unzip git composer

После этого нужно включить некоторые библиотеки PHP в файле php.ini (/etc/php/7.0/apache2/php.ini). Откройте его:

sudo nano /etc/php/7.0/apache2/php.ini

Здесь нужно раскомментировать некоторые опции. В файлах php.ini закомментированные строки начинаются с точки с запятой (вместо более распространенного символа #). Чтобы раскомментировать строку, удалите эту точку с запятой; чтобы закомментировать строку, добавьте точку с запятой в начало.

Найдите раздел, который содержит много закомментированных строк, начиная с extension=. Раскомментируйте строки расширений php_mbstring.dll и php_xmlrpc.dll.

. . .
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
;extension=php_mysqli.dll
. . .
;extension=php_sqlite3.dll
;extension=php_tidy.dll
extension=php_xmlrpc.dll
;extension=php_xsl.dll
. . .

Затем добавьте строку extension=dom.so в конец блока расширений.

. . .
extension=php_xmlrpc.dll
;extension=php_xsl.dll
extension=dom.so
. . .

Затем найдите параметр date.timezone. Раскомментируйте строку и добавьте часовой пояс в кавычки. Чтобы узнать, как отформатировать часовой пояс в файле php.ini, вы можете проконсультироваться с этой страницей. Например:

. . .
[Date] ; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "America/New_York"
. . .

Затем найдите параметр upload_max_filesize. Этот параметр в основном влияет на загрузку вложений. По умолчанию установлено значение 2 МБ. Вы можете установить любое значение, но большинство почтовых серверов ограничивают общий размер вложений до 10 МБ. Мы установим здесь 12 МБ, если несколько пользователей одновременно добавят вложения.

. . .
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 12M
. . .

Затем найдите post_max_size. Если параметр upload_max_filesize применяется только к вложениям, этот параметр применяется к размеру всей электронной почты (включая вложения). Чтобы предотвратить взаимоблокировку, установите здесь значение чуть выше.

. . .
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 18M
. . .

Найдите параметр mbstring.func_overload, раскомментируйте его и установите значение 0. Он позволяет поддерживать многобайтовые строковые функции.

. . .
mbstring.func_overload = 0
. . .

Сохраните и закройте файл.

Теперь на сервере есть стек LAMP, все зависимости Roundcube и необходимые параметры PHP.

2: Загрузка Roundcube

Есть два способа установить Roundcube: из пакета или из исходного кода. Для Roundcube есть архив PPA, но поскольку проект находится в активной разработке, PPA часто устаревает (на момент написания статьи PPA находится на версии 1.2.3, но сам проект – 1.3). Чтобы получить самую последнюю версию, лучше установить Roundcube из исходного кода.

Перейдите на страницу загрузки Roundcube. Просмотрите раздел Stable version и найдите пакет Complete. Щелкните правой кнопкой мыши кнопку Download и выберите Copy Link Address.

Используйте этот адрес в wget для загрузки архива Roundcube на сервере.

wget https://github.com/roundcube/roundcubemail/releases/download/1.3.0/roundcubemail-1.3.0-complete.tar.gz

Распакуйте архив:

tar -xvzf roundcubemail-1.3.0-complete.tar.gz

Команда tar использует такие аргументы:

Затем переместите распакованный каталог в /var/www и переименуйте его в roundcube. Обязательно опустите конечные / в именах каталогов, чтобы переместить и переименовать весь каталог, а не содержимое в каталоге.

sudo mv roundcubemail-1.3.0 /var/www/roundcube

Теперь дайте Apache право на создание и редактирование файлов (конфигов и логов). Передайте права на каталог пользователю и группе www-data. У владельцев должны быть права на чтение и запись, а у остальных пользователей – только на чтение.

sudo chown -R www-data:www-data /var/www/roundcube/
sudo chmod 775 /var/www/roundcube/temp/ /var/www/roundcube/logs/

Итак, вы загрузили код Roundcube и обновили его местоположение и права, но на данный момент он только частично установлен. Чтобы завершить установку, нужно подключить Roundcube к нашей базе данных через GUI. Прежде чем вы сможете это сделать, вам нужно сообщить Apache, где находится Roundcube, чтобы веб-сервер мог загрузить сайт.

3: Настройка Apache

Читайте также: Настройка виртуальных хостов Apache в Ubuntu 16.04

Теперь нужно отредактировать файл виртуального хоста Apache. Виртуальные хосты – это функция, позволяющая Apache размещать несколько сайтов на одном сервере. Даже если Apache обслуживает единственный сайт, проще и чище использовать файл конфигурации виртуального хоста, чем редактировать основную конфигурацию Apache.

Каждый файл .conf в каталоге /etc/apache2/sites-available/ представляет отдельный сайт. Создайте здесь файл для Roundcube.

Скопируйте стандартный файл виртуального хоста:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/roundcube.conf

Откройте новый файл:

sudo nano /etc/apache2/sites-available/roundcube.conf

Теперь нужно внести ряд изменений в этот файл. Ниже вы найдете описание всех важных директив, а затем – полный код файла.

В блоке VirtualHost нужно изменить следующие директивы:

Затем нужно добавить новый блок Directory, который сообщает Apache, что делать с каталогом Roundcube.

Вот так будет выглядеть файл после внесения всех изменений (комментарии опущены для краткости):

<VirtualHost *:80>
ServerName your_server_ip_or_domain
DocumentRoot /var/www/roundcube
ServerAdmin sammy@example.com
ErrorLog ${APACHE_LOG_DIR}/roundcube-error.log
CustomLog ${APACHE_LOG_DIR}/roundcube-access.log combined
<Directory /var/www/roundcube>
Options -Indexes
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Сохраните и закройте файл.

Отключите виртуальный хост по умолчанию:

sudo a2dissite 000-default

Затем включите файл сайта Roundcube. Не указывайте расширение .conf при включении сайта; a2ensite принимает имя файла конфигурации без расширения.

sudo a2ensite roundcube

Включите модуль mod_rewrite, который необходим Roundcube.

sudo a2enmod rewrite

Перезапустите Apache, чтобы обновить настройки.

sudo apache2ctl restart

Клиент электронной почты почти готов к использованию. Последним шагом установки является настройка базы данных, в которой Roundcube сможет хранить свои данные.

4: Настройка MySQL

Если на этом этапе вы откроете веб-браузер и попытаетесь получить доступ к своему серверу (по IP-адресу или доменному имени), вы увидите страницу ошибки. Это связано с тем, что Roundcube проверяет файл, созданный во время настройки, но мы еще не выполнили эту настройку. Прежде чем вы сможете это сделать, необходимо подготовить базу данных.

Подключитесь к интерактивной оболочке MySQL как пользователь root.

mysql -u root -p

После этого будет предложено ввести пароль root, который вы создали при установке MySQL.

В оболочке MySQL вы можете создать базу данных и пользователя, а затем предоставить этому пользователю права на новую БД.

Сначала создайте базу данных. Эта команда создает базу данных roundcubemail, а затем предоставляет параметры базы данных, такие как набор символов (utf8).

CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;

MySQL определяет пользователя по имени точке, с которой он может подключиться. Следующая команда создаст пользователя roundcube и привяжет его к localhost. Укажите в команде пароль этого пользователя.

CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password';

Передайте пользователю roundcube все права на БД roundcubemail.

GRANT ALL PRIVILEGES ON roundcubemail.* to 'roundcube'@'localhost';

Сохраните изменения и закройте оболочку MySQL.

FLUSH PRIVILEGES;
EXIT;

Теперь у вас есть пустая БД roundcubemail и пользователь roundcube@localhost. У пользователя есть все права на БД. Теперь нужно настроить структуру базы данных, чтобы Roundcube знал, где хранить информацию. Установка Roundcube настроит базу данных, поэтому вам не нужно делать это вручную.

Следующая команда скажет MySQL использовать нового пользователя для чтения файла /var/www/roundcube/SQL/mysql.initial.sql и применить конфигурацию к roundcubemail.

mysql -u roundcube -p roundcubemail < /var/www/roundcube/SQL/mysql.initial.sql

Введите пароль пользователя roundcube.

5: Настройка Roundcube

Если вы попробуете получить доступ к установке Roundcube, вы увидите ошибку. Чтобы завершить установку, нужно открыть страницу http://your_server_ip_or_domain/installer.

Если все настроено правильно, справа от каждой позиции на экране будет зеленый ОК, за исключением нескольких: это опциональный параметр LDAP и строки для других баз данных (кроме MySQL). Если в какой-либо другой строке вы видите NOT AVAILABLE, вам необходимо установить эти зависимости. Roundcube предоставляет ссылки на все недостающие зависимости, чтобы вы могли выяснить, что нужно установить.

Если все верно, перейдите в конец страницы и нажмите NEXT.

Форма, разбитая на семь разделов, помогает создать конфигурационный файл Roundcube. Ниже мы рассмотрим все разделы формы, которые нужно заполнить. Если ниже вы не найдете информации о какой-либо строке формы, вы можете пропустить эту строку и оставить ее со значением по умолчанию.

Общая конфигурация

Раздел General configuration предоставляет несколько общих опций. Здесь нужно изменить только одну опцию – ip_check. Выберите ее, чтобы повысить безопасность установки. Она проверяет IP клиента.

Вы также можете изменить здесь такие опции:

Все остальные параметры можно оставить по умолчанию.

Логирование и отладка

Все параметры в разделе Logging & Debugging можно оставить по умолчанию.

Настройка базы данных

Roundcube использует MySQL для хранения информации для запуска веб-клиента (а не ваших писем). В этом разделе нужно сообщить Roundcube, как получить доступ к базе данных, настроенной в разделе 4. Вам понадобится имя пользователя базы данных, пароль пользователя и имя базы данных, которые вы создали ранее.

Параметры IMAP

Для этого раздела вам понадобятся настройки IMAP и SMTP вашего почтового сервера. Поскольку этот мануал использует Gmail, ниже приведены параметры Gmail, но если у вас есть собственный сервис электронной почты, вы должны использовать его информацию. Большинство провайдеров электронной почты поддерживают соединения с шифрованием или без шифрования. Обязательно избегайте использования незащищенных соединений. Используйте URL-адреса и порты IMAP/SMTP.

Параметры SMTP

SMTP-сервер является частью электронной почты, которая отвечает за отправку электронных писем.

Настройки отображения и пользовательские префы

Оставьте в разделе Display settings & user prefs значения по умолчанию. Если вы хотите изменить язык установки Roundcube, сделайте это вручную: кликните по ссылке RFC1766 и обновите поле language.

Плагины

Плагины – это то, что делает Roundcube по-настоящему классным почтовым клиентом. Ниже приведен хороший набор настроек по умолчанию, которые вы можете установить. Конечно, все плагины являются опциональными, но приведенная ниже комбинация упростит работу и повысит безопасность установки.

Нажмите кнопку UPDATE CONFIG в нижней части страницы, чтобы сохранить настройки. Теперь давайте проверим, все ли работает.

После обновления конфигурации страница обновится, и в верхней части появится желтое информационное окно, в котором говорится «The config file was saved successfully into RCMAIL_CONFIG_DIR directory of your Roundcube installation» (это значит, что файл конфигурации был успешно сохранен в каталоге RCMAIL_CONFIG_DIR вашей установки Roundcube).

Нажмите кнопку CONTINUE, чтобы проверить конфигурацию. Как и на странице проверки зависимостей, в каждой строке вы увидите зеленый маркер OK, если ошибок нет.

Чтобы проверить работу установки, введите имя и пароль IMAP и SMTP в разделы Test IMAP config и Test SMTP config, а затем нажмите Send test email и Check login. Если тест прошел успешно, страница обновится и вы увидите зеленый маркер OK.

Примечание: Если у вас в Gmail включена двухфакторная аутентификация, вам нужно сгенерировать специальный пароль для приложения, потому что Roundcube не умеет запрашивать токены для такой аутентификации.

Проверив SMTP и IMAP, вы можете вернуться в сессию SSH и удалить каталог инсталлятора. Так никто больше не сможет сгенерировать новые конфигурации и переопределить текущие настройки.

sudo rm -rf /var/www/roundcube/installer/

Теперь можно открыть Roundcube в браузере.

Заключение

Теперь у вас есть полностью готовая установка Roundcube, но вы должны предпринять дополнительные меры, чтобы обеспечить безопасность (например, добавить поддержку HTTPS и использовать шифрования GPG для вашей электронной почты).

Кроме того, вы можете установить новые темы, чтобы улучшить внешний вид вашего клиента, и добавить плагины, чтобы расширить функциональность. У Roundcube нет специального сайта для тем, но вы можете посетить Roundcube Skins или Roundcube forums.