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

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

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

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

  • Пользовательский почтовый агент (MUA) — это интерфейс, с которым взаимодействует пользователь, чтобы просматривать и отправлять электронную почту.
  • Агент передачи почты (mail transfer agent, MTA) передает сообщение от отправителя получателю.
  • Простой протокол передачи почты (SMTP) – это протокол MUA, используемый для отправки почты в MTA.
  • Агент по доставке почты (MDA) получает сообщения от MTA и сохраняет их.
  • Протокол доступа к сообщениям в сети Интернет (IMAP) – это протокол, который MDA используют для доставки почты в MUA.

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

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

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

Требования

  • Сервер Ubuntu 16.04, настроенный по этому мануалу.
  • Стек LAMP (его вам поможет установить этот мануал).
  • Почтовый сервер на основе IMAP. В этом мануале используется Gmail, но подойдет и любой другой почтовый сервер, основанный на IMAP. Убедитесь, что вы знаете параметры IMAP и SMTP своего почтового сервера.

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

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

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

  • Несколько библиотек PHP (в команде ниже это пакеты php- *, которые включают поддержку XML и многобайтовых строк).
  • Инструменты zip и unzip для обработки сжатых файлов.
  • Git для контроля версий.
  • Система управления плагинами PHP (composer).

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

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 использует такие аргументы:

  • х распаковывает архив.
  • v (verbose) отображает расширенный вывод.
  • z распаковывает архив с помощью gzip. Файл сжат с помощью gzip, потому что файл имеет расширение .gz.
  • f определяет файл. Этот флаг должен быть последним, поскольку 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 нужно изменить следующие директивы:

  • Директива ServerName определяет домен, который нужно прослушивать. Здесь нужно указать домен или IP-адрес сервера.
  • DocumentRoot определяет каталог, в котором хранится контент. В данном случае корневым каталогом Roundcube является /var/www/roundcube.
  • ServerAdmin позволяет указать контактный адрес электронной почты, куда Apache может сообщить о проблемах. В этом мануале эта функция не используется, но лучше включить ее.
  • Две строки, ErrorLog и CustomLog, определяют, куда регистрировать данные о подключениях и ошибках сайта. Имена логов ошибок должны быть описательными.

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

  • Options -Indexes отображает предупреждение, если Apache не может найти файл index.html или index.php. По умолчанию будет отображаться содержимое каталога.
  • AllowOverride All включает переопределение глобальных настроек файлом .htaccess.
  • Order allow,deny позволяет Apache сначала открывать доступ соответствующим клиентам, а затем блокировать клиентов, которые не прошли проверку.
  • allow from all – продолжение строки Order. Она определяет, какие клиенты имеют доступ (в данном случае доступ есть у всех).

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

<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 клиента.

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

  • product_name – все ссылки на Roundcube в тексте будут заменены этим значением.
  • support_url – это URL-адрес, по которому пользователи могут получить поддержку их установки Roundcube. Этот параметр не является строго необходимым, но может пригодиться, если Roundcube используется группой людей, которые могут нуждаться в помощи. Если у вас нет специального справочного сайта, вы можете использовать адрес электронной почты (mailto:8host@example.com).
  • skin_logo принимает URL на файл PNG (178px на 47px). Если вы включите HTTPS (настоятельно рекомендуется), убедитесь, что URL-адрес изображения использует HTTPS.

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

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

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

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

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

  • В Database type выберите MySQL (должно быть уже установлено).
  • В Database server выберите localhost.
  • В поле Database name введите имя БД (roundcubemail).
  • В поле Database user name укажите имя пользователя БД (roundcube).
  • В Database password введите пароль пользователя БД.
  • Опция db_prefix нужна, только  если вы совместно используете БД с другими приложениями. Если это так, укажите rc_.

Параметры IMAP

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

  • В поле default_host введите URL сервера IMAP. В SSL-соединениях используйте префикс ssl:// вместо https:// (например, ssl://imap.gmail.com).
  • Далее задается параметр default_port, который определяет порт сервера IMAP. SSL-соединения и другие соединения будут использовать разные порты, поэтому обязательно используйте порт SSL. SSL IMAP Gmail использует 993.
  • Поле username_domain – опция для провайдеров электронной почты, которые используют полный адрес электронной почты в качестве имени пользователя. Это поле является опциональным. Введя домен (не полный адрес электронной почты), вы сможете войти в Roundcube только по имени (то, что идет перед @). Например, если ввести gmail.com в это поле, пользователь user@gmail.com сможет регистрироваться в Roundcube как user.
  • Убедитесь, что флажок auto_create_user установлен. Если он не установлен, Roundcube не создаст пользователя в своей собственной базе данных, что помешает вам войти в систему.
  • Оставьте все поля *_mbox (например sent_mbox) по умолчанию. Их можно обновить позже в пользовательском интерфейсе Roundcube, и большинство почтовых клиентов все равно используют эти имена папок.

Параметры SMTP

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

  • Введите адрес SMTP-сервера в поле smtp_server. SMTP-сервер Gmail — ssl://smtp.gmail.com.
  • Введите порт SMTP-сервера SSL в поле smtp_port. Порт SSL для Gmail — 465.
  • Поскольку SMTP и IMAP являются двумя отдельными службами, им необходимы имя пользователя и пароль. Roundcube дает возможность использовать имя пользователя и пароль IMAP, установленные выше, поэтому вам не нужно его снова устанавливать. Можно оставить поля smtp_user/smtp_pass пустыми и установить флажок Use the current IMAP username and password for SMTP authentication.
  • Поставьте флажок smtp_log.

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

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

Плагины

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

  • archive: предоставляет кнопку Archive.
  • emoticons: упрощает использование смайликов в электронных письмах.
  • enigma: позволяет шифровать электронную почту GPG.
  • filesystem_attachments: плагин, позволяющий временно сохранять вложения на сервере Roundcube при составлении или сохранении черновика письма.
  • hide_blockquote: скрывает цитированную часть ответных писем, чтобы очистить пользовательский интерфейс.
  • identity_select: если у вас есть несколько адресов электронной почты, этот плагин позволяет легко выбрать один из них при составлении электронной почты.
  • markasjunk: позволяет отмечать электронную почту как спам и перемещать ее в папку «Спам».
  • newmail_notifier: использует систему уведомлений браузера, чтобы уведомить вас о новых письмах.

Нажмите кнопку 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.

Tags: , ,