Roundcube — это почтовый клиент на базе браузера с открытым исходным кодом для протокола IMAP. Он завоевал популярность благодаря поддержке списков контроля доступа (ACL) и использованию AJAX (Asynchronous JavaScript and XML). Он обладает отличными функциями и сквозными возможностями, такими как управление электронной почтой, MIME поддержка и управление папками, и это лишь некоторые из них. Кроме того, Roundcube предлагает удобный поиск сообщений, проверку орфографии, календари и управление контактами. Прежде всего, он имеет надежный репозиторий плагинов и дополнительные возможности настройки по сравнению с другими популярными браузерными клиентами.
Roundcube — это MUA. В отличие от MTA, вам понадобится служба, которая управляет вашей электронной почтой, желательно с использованием вашего почтового сервера. Ознакомьтесь с нашим руководством по настройке почтового сервера, чтобы добавить почтовый сервер по вашему выбору.
Когда вы отправляете электронное письмо, MUA передает его на свой сервер MTA по протоколу SMTP. После нескольких переходов принимающий MTA получает письмо и передает его на свой MDA по протоколу IMAP. Наконец, получатель просматривает письмо с помощью MUA.
Давайте разберемся в этих терминах:
- MUA: почтовый клиент (mail user agent) — это интерфейс, который позволяет пользователю просматривать и отправлять электронные письма.
- MTA: агент передачи почты (mail transfer agent) передает электронную почту от отправителя к получателю.
- SMTP: простой протокол передачи почты (Simple Mail Transfer Protocol) — это протокол, который MUA использует для отправки электронных писем на MTA.
- MDA: все электронные письма, отправленные с MTA, принимаются и сохраняются у агента доставки почты (mail delivery agent).
- IMAP: протокол доступа к интернет-сообщениям (Internet Message Access Protocol) — это протокол, который MDA используют для доставки почты в MUA.
В этом руководстве мы подробно рассмотрим шаги по установке веб-клиента электронной почты с Roundcube на Ubuntu 20.04.
Давайте начнем!
Предварительные требования
Для выполнения этого руководства вам понадобится следующее:
- Последняя версия установленной Ubuntu в вашей системе.
- Пользователи системы должны иметь привилегии sudo и брандмауэр.
- Кроме того, вы можете использовать iptables для настройки брандмауэров в вашей системе.
- Стек LAMP.
- Настройте его, следуя руководству Как настроить стек LAMP
- Почтовый сервер на базе IMAP.
Шаг 1: Установка расширений и зависимостей
Прежде чем начать, давайте обновим репозитории, чтобы избежать конфликтов программного обеспечения:
|
1 |
sudo apt update |
Далее мы установим зависимости Roundcube и настроим PHP. Используйте следующую команду для установки расширений и библиотек PHP:
|
1 |
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. Откройте файл php.ini с помощью текстового редактора nano:
|
1 |
sudo nano /etc/php/7.0/apache2/php.ini |
В отличие от большинства распространенных вариантов комментирования, начинающихся со знака решетки ( #), мы используем точку с запятой ( ;) для комментирования и раскомментирования строк. Добавьте начальную точку с запятой, чтобы закомментировать строку. Аналогично, удалите точку с запятой, чтобы раскомментировать строку.
Давайте посмотрим на раздел, содержащий закомментированные строки, начинающиеся с extension=. Удалите точки с запятой, чтобы раскомментировать расширения php_mbstring.dll и php_xmlrpc.dll расширения:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
. . . ;extension=php_interbase.dll ;extension=php_ldap.dll extension=php_mbstring.dll ;extension=php_exif.dll ; Должно быть после mbstring так как оно зависит от него ;extension=php_mysqli.dll . . . ;extension=php_sqlite3.dll ;extension=php_tidy.dll extension=php_xmlrpc.dll ;extension=php_xsl.dll . . . |
Кроме того, добавьте extension=dom.so в конце блока расширений:
|
1 2 3 4 5 |
. . . extension=php_xmlrpc.dll ;расширение=php_xsl.dll расширение=dom.so . . . |
- Измените файлы:
- Измените date.timezone:
Перейдите в параметры настроек, найдите date.timezone, и раскомментируйте его. Затем добавьте свой часовой пояс в кавычках. Посетите страницу часовых поясов PHP, чтобы увидеть, как выглядит отформатированный часовой пояс в файле php.ini . Например, если вы из Европы, ваш файл будет выглядеть так:
|
1 2 3 4 5 6 |
. . . [Date] ; Определяет the по умолчанию часовой пояс, используемый by the функциями даты ; http://php.net/date.timezone date.timezone = "Europe/Moscow" . . . |
-
- Измените upload_max_filesize файла:
Затем перейдите к параметру upload_max_filesize . По умолчанию максимальный лимит установлен на уровне 2 МБ. В зависимости от ваших потребностей вы можете увеличить максимальный размер файла до любого значения. Однако большинство почтовых серверов ограничивают общий размер вложений до 10 МБ. В этом руководстве мы установим максимальный размер 13 МБ, чтобы несколько пользователей могли добавлять вложения одновременно:
|
1 2 3 4 5 |
. . . ; Максимальный разрешенный размер для загружаемых файлов. ; http://php.net/upload-max-filesize upload_max_filesize = 13M . . . |
-
- Измените post_max_size файла:
Теперь найдите параметр post_max_size. В отличие от параметра upload_max_filesize, который применяется к вложениям, post_max_size применяется к размеру всего электронного письма (включая вложения). Давайте установим для post_max_size более высокое значение, чтобы предотвратить взаимоблокировки:
|
1 2 3 4 5 6 7 |
. . . ; Максимальный размер of POST-данных, которые PHP будет принимать. ; Его значение может быть 0 для отключения the лимита. Оно is игнорируется, если чтение POST-данных ; is отключено через enable_post_data_reading. ; http://php.net/post-max-size post_max_size = 20M . . . |
-
- Установите значение func_overload :
Наконец, найдите mbstring.func_overload = 0 и раскомментируйте его. Также убедитесь, что его значение установлено в null, чтобы оно поддерживало функции многобайтовых строк:
|
1 2 3 4 |
. . . . . . mbstring.func_overload = 0 . . . |
Сохраните все изменения и закройте файл. Наш сервер настроен со стеком LAMP, зависимостями Roundcube и необходимой конфигурацией PHP. На следующем шаге мы загрузим программное обеспечение Roundcube, установим и настроим его.
Шаг 2. Загрузка Roundcube
Перейдите на страницу загрузки Roundcube, выберите раздел Стабильная версия и найдите Полный пакет. Затем щелкните правой кнопкой мыши по кнопке Скачать и выберите Копировать адрес ссылки. Используя этот адрес с командой wget, скачайте архив Roundcube на сервер:
|
1 |
wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz |
После этого вам нужно будет распаковать архив Roundcube:
|
1 |
wget tar -xvzf roundcubemail-1.5.2-complete.tar.gz |
Используемые аргументы могут показаться непонятными, особенно если вы новичок. Вот объяснение того, что означает каждый флаг:
- x: Означает извлечение (extract).
-
v: Означает подробный вывод (verbose).
- Указывает tar выводить пути и имена извлекаемых файлов.
-
z: Указывает tar снять
tar -обертку и распаковать архив с помощью gzip.
- Сжатый файл gzip будет иметь расширение .gz в конце.
- f: Означает файл (file).
Опустите косую черту в конце / в пути к каталогу, так как мы перемещаем и переименовываем весь каталог, а не только его содержимое. Теперь давайте переместим распакованный каталог в /var/www и переименуем его в roundcube:
|
1 |
sudo mv roundcubemail-1.5.2 /var/www/roundcube |
Установите права доступа для Apache на создание и редактирование файлов конфигурации и логов. Затем измените владельца и группу на www-data. Также обязательно разрешите права на чтение и запись для владельца и группы:
|
1 |
sudo chown -R www-data:www-data /var/www/roundcube/ |
|
1 |
sudo chmod 775 /var/www/roundcube/temp/ /var/www/roundcube/logs/ |
Хотя мы скачали код Roundcube и установили необходимые права доступа, наша установка все еще не завершена. Подключение Roundcube к нашей базе данных через графический интерфейс Roundcube еще предстоит выполнить. Прежде чем продолжить, нам нужно обновить Apache и его конфигурацию, чтобы указать базовое расположение Roundcube.
Шаг 3: Настройка и конфигурация Apache
На этом шаге мы отредактируем файл виртуального хоста для настройки Apache. Используя Apache virtual hosting, мы будем размещать несколько сайтов на одном сервере. Даже если Apache обслуживает только один сайт, использование конфигурационного файла виртуального хоста проще и создает меньше путаницы по сравнению с редактированием основной конфигурации Apache. Чтобы добавить дополнительный уровень безопасности, рассмотрите возможность securing Apache with Let’s Encrypt.
Каждый .conf файл в /etc/apache2/sites-available/ представляет собой отдельный сайт. Давайте создадим здесь файл виртуального хоста для Roundcube и укажем Apache сделать его доступным для браузера.
Сначала скопируйте файл конфигурации по умолчанию, чтобы использовать его в качестве отправной точки для нового файла:
|
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/roundcube.conf |
Откройте файл с помощью текстового редактора nano:
|
1 |
sudo nano /etc/apache2/sites-available/roundcube.conf |
Нам потребуется внесить несколько изменений. Давайте разберем каждое из них, а затем предоставим весь файл для копирования и вставки.
Сначала измените следующие директивы в существующем хосте VirtualBlock :
-
ServerName: указывает Apache выбрать домен.
- Если вы используете один сервер, то этот ServerName будет IP-адресом или доменным именем вашего сервера.
-
DocumentRoot: указывает, куда направлять входящий трафик.
- В нашем руководстве мы будем направлять трафик на Roundcube по адресу /var/www/roundcube.
- ServerAdmin: если возникает проблема с Apache, ServerAdmin указывает контактный адрес электронной почты.
-
ErrorLog и CustomLog: определяет, где сохранять логи успешных подключений и логи ошибок для этого сайта.
- Используйте конкретные имена для логов ошибок, чтобы при возникновении проблем, специфичных для сайта, их можно было легко обнаружить.
Затем вы добавите новый блок Directory, который сообщает Apache, что делать с каталогом Roundcube. Блок Directory состоит из строк, где первое слово в каждой строке — это имя конфигурации, за которым следуют сами параметры конфигурации.
- Options -Indexes: указывает Apache выводить предупреждение, если он обнаружит, что файл index.html или index.php отсутствует. По умолчанию он отображает содержимое каталога.
- AllowOverride All: сообщает Apache, что если обнаружен локальный файл .htaccess , он должен переопределить глобальные настройки.
- Order allow,deny: указывает Apache сопоставлять доступ клиента к сайту и отклонять несоответствующие запросы.
- allow from all: определяет тип разрешенных клиентов.
После внесения этих изменений файл будет выглядеть следующим образом:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<VirtualHost *:80> ServerName your_server_ip_or_domain DocumentRoot /var/www/roundcube ServerAdmin paul@demo.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> |
Сохраните все изменения и закройте файл. Теперь давайте попросим Apache прекратить хостинг сайта по умолчанию:
|
1 |
sudo a2dissite 000-default |
После этого мы дадим команду Apache начать хостинг сайта Roundcube вместо него. При включении сайта не указывайте .conf потому что a2ensite требует имя файла без расширения:
|
1 |
sudo a2ensite roundcube |
Затем включите ON модуль mod_rewrite Apache:
|
1 |
sudo a2enmod rewrite |
Наконец, перезапустите Apache, чтобы сделать установку Roundcube доступной:
|
1 |
sudo apache2ctl restart |
На последнем шаге нам нужно настроить базу данных, чтобы Roundcube мог хранить свои данные и управлять ими.
Шаг 4. Установка и настройка MySQL
Попробуйте получить доступ к вашему серверу, используя IP-адрес или доменное имя. Вы увидите ошибку конфигурации на странице. Здесь Roundcube проверяет наличие файла, созданного во время настройки конфигурации, но наша настройка конфигурации не завершена. Прежде чем настраивать конфигурацию, давайте подготовим нашу базу данных.
- Подключение к MySQL: Давайте подключимся к интерактивной оболочке MySQL, используя имя пользователя и пароль:
После ввода вышеуказанной команды вам будет предложено пройти аутентификацию с помощью пароля root, который вы создали при установке MySQL.1mysql -u root -p - Создание базы данных и пользователя: Теперь, когда вы успешно вошли в систему, давайте создадим базу данных и пользователя базы данных. После этого мы предоставим пользователю права на выполнение команд в нашей новой базе данных.
- Создание базы данных: Используйте следующую команду для создания базы данных с именем
roundcubemail. Далее укажите параметры базы данных, например используемую кодировку
utf8:
MySQL предлагает надежную систему безопасности. Она определяет пользователя по имени и источнику подключения. Приведенная выше команда создает пользователя с именем roundcube и определяет, что пользователь подключается с localhost.1mysql> CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; - Переименование базы данных: Давайте переименуем пользователя и изменим наш пароль:
1mysql> CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password'; - Настройка прав: Предоставьте пользователям roundcube все права на базу данных
roundcubemail и таблицы:
Сохраните изменения и выйдите из интерактивной оболочки MySQL:1mysql> GRANT ALL PRIVILEGES ON roundcubemail.* to 'roundcube'@'localhost';
12mysql> FLUSH PRIVILEGES;mysql> EXIT;
Наш следующий шаг — настроить структуру базы данных, которая поможет Roundcube сохранять всю информацию. Roundcube поставляется с файлом базы данных, который настраивает данные автоматически, что потребовало бы значительных усилий при ручной настройке.
Используя следующую команду, MySQL будет использовать нашего только что созданного пользователя для чтения файла /var/www/roundcube/SQL/mysql.initial.sql. Также она применит конфигурацию к базе данных roundcubemail:
|
1 |
mysql -u roundcube -p roundcubemail < /var/www/roundcube/SQL/mysql.initial.sql |
Теперь вам будет предложено ввести пароль пользователя roundcube. Наша настройка базы данных подготавливает Roundcube к использованию и позволяет нам проверить правильность прав доступа. Если все шаги были выполнены успешно, обратной связи не будет, и вы вернетесь в командную строку. На следующем шаге мы укажем Roundcube наши настройки электронной почты и завершим установку.
Шаг 5. Настройка и конфигурация Roundcube
Если вы попытаетесь получить доступ к установленной копии Roundcube сейчас, вы увидите страницу с ошибкой. Перейдите по адресу http://your_server_ip_or_domain/installer , чтобы завершить установку.
Если настройка выполнена правильно, вы увидите зеленый индикатор OK справа от каждого пункта. Однако вы можете не увидеть зеленый OK в необязательных настройках LDAP в MySQL. Если вы видите сообщение НЕ ДОСТУПНО рядом с любой другой строкой, вам необходимо установить эти недоступные зависимости. Если вы упустили возможность загрузить какую-либо из зависимостей, вы можете перейти по URL-адресу и скачать ее прямо сейчас.
После завершения настройки прокрутите вниз и нажмите кнопку ДАЛЕЕ. Давайте пройдемся по процессу генерации конфигурационного файла Roundcube. Ознакомьтесь с частями формы, которые нам нужно изменить.
- Общая конфигурация
В разделе общей конфигурации мы изменим несколько настроек и некоторые общие параметры:
- ip_check: это параметр конфигурации безопасности, который проверяет IP-адрес клиента при авторизации сессии.
- product_name: переименуйте продукт по своему усмотрению. Это имя заменяет текст «Roundcube».
- support_url: поддержка в установке Roundcube. Если у вас нет выделенного сайта службы поддержки, лучше использовать адрес электронной почты, например walker:paul@demo.com.
- skin_logo: Замените логотип Roundcube на skin_logo. Чтобы включить HTTPS, выберите URL-адрес изображения HTTPS (178px на 47px).
Оставьте остальные настройки со значениями по умолчанию.
- Логирование & отладка: давайте оставим параметры по умолчанию.
- Настройка базы данных: вместо прямого использования вашей почты Roundcube использует MySQL для хранения информации, необходимой для работы веб-клиента. Здесь нам нужно указать Roundcube доступ к базе данных, которую мы настроили на Шаге 4. Используйте учетные данные базы данных, которые мы создали ранее:
- База данных: MySQL
- Сервер: localhost
- Имя базы данных: roundcubemail
- Пользователь: roundcube
- Пароль:
demo12345@
- Используйте пароль, который вы определили при настройке на Шаге 4.
- Db_prefix: это необязательный параметр, если только вы не используете общую базу данных с другими приложениями.
- Изменение IMAP: давайте зададим настройки IMAP и SMTP для вашего почтового сервера. Поскольку в этом руководстве в качестве примера рассматривается Gmail, мы будем использовать настройки Gmail в наших настройках IMAP. Однако, если вы решите выбрать других поставщиков услуг, таких как Yahoo или Outlook, вам нужно использовать их соответствующие настройки. Многие почтовые провайдеры поддерживают соединения с шифрованием или без него. Рекомендуется использовать URL-адреса и порты SSL IMAP/SMTP, чтобы избежать использования небезопасных соединений.
- default_host: ssl://imap.gmail.com
- default_port: 993
- auto_create_user:
Да ☑
- Если этот флажок снят, Roundcube не создаст пользователя в собственной базе данных и вы не сможете войти в систему.
- Поля *_mbox: оставьте значения по умолчанию.
- Вы можете обновить это позже в интерфейсе Roundcube.
- Изменение SMTP: SMTP-сервер является неотъемлемой частью электронной почты, которая используется для отправки писем. Как и в разделе IMAP-сервера, мы будем использовать SSL URL-адрес и порт. Если у вас нет опыта работы с SMTP-серверами, следуйте лучшим практикам SMTP, чтобы узнать больше о таких серверах. Здесь мы используем Gmail в качестве примера:
- поле smtp_server: ssl://smtp.gmail.com
- поле smtp_port: 465
- SMTP и IMAP — это две разные службы, поэтому им обеим требуются имя пользователя и пароль. Однако Roundcube позволяет нам использовать учетные данные IMAP, поэтому нет необходимости создавать их заново. Оставьте поля в разделе smtp_user/smtp_pass пустыми и установите флажок рядом с «Использовать текущие имя пользователя и пароль IMAP для аутентификации SMTP».
- smtp_log: Да ☑
- Изменение настроек отображения & пользовательских настроек: давайте оставим настройки отображения и пользовательские настройки по умолчанию. Если вы хотите настроить установку Roundcube под себя, нажмите ссылку RFC1766 на странице конфигурации и обновите поле language вручную.
- Плагины: Roundcube предлагает поддержку плагинов, которые обеспечивают дополнительную безопасность. Плагины необязательны, однако вы можете использовать их, чтобы облегчить свою работу. Давайте рассмотрим список наиболее часто используемых плагинов:
- archive: этот плагин добавляет кнопку Архив, которая работает аналогично Gmail.
- emoticons: позволяет использовать смайлики в письмах.
- enigma: упрощает использование шифрования писем GPG.
- filesystem_attachments: Он позволяет временно сохранять вложения на сервере Roundcube при сохранении черновика письма.
- hide_blockquote: Этот плагин скрывает процитированную часть отвеченных писем, чтобы сохранить интерфейс чистым.
- identity_select: Он позволяет пользователю выбирать несколько адресов электронной почты при составлении письма.
- markasjunk: Этот плагин позволяет помечать письмо как спам и перемещать его в папку «Спам».
- newmail_notifier: Оповещает вас о новых письмах с помощью системы уведомлений браузера.
Нажмите кнопку UPDATE CONFIG, чтобы сохранить настройки. На последнем шаге мы протестируем конфигурацию Roundcube, чтобы убедиться, что все работает правильно.
Шаг 6. Тестирование настройки Roundcube
После обновления конфигурации страница обновится, и в верхней части страницы появится желтое информационное окно с сообщением о том, что Конфигурационный файл был успешно сохранен в RCMAIL_CONFIG_DIR директорию вашей установки Roundcube.
Затем нажмите на кнопку CONTINUE, чтобы протестировать конфигурацию. Как и на странице проверки зависимостей, вы увидите зеленый маркер OK напротив каждой строки, если нет ошибок. Если вы видите ошибки, вернитесь назад и перепроверьте введенные данные.
Введите имя пользователя и пароль для IMAP и SMTP в разделах Test SMTP config и Test IMAP config соответственно, чтобы протестировать остальную часть конфигурации. Также нажмите на Send test email и Check login. Если вы правильно выполнили все шаги, страница обновится, и вы увидите зеленый маркер OK под протестированным разделом.
После того как вы убедились, что подключения SMTP и IMAP работают нормально, следующим шагом будет удаление директории установщика с помощью SSH. Удаление директории установщика — это надежный способ предотвратить создание новой конфигурации другими пользователями и перезапись правильных настроек:
|
1 |
sudo rm -rf /var/www/roundcube/installer/ |
Наконец, вы можете перейти к вашему экземпляру Roundcube, используя IP-адрес вашего сервера, и проверить свою почту.
Заключение
В этом руководстве мы научились устанавливать веб-клиент электронной почты с помощью Roundcube на Ubuntu 20.04. В дополнение к шагам, описанным выше, существуют другие параметры безопасности, такие как поддержка HTTPS и шифрование GPG, которые вам необходимо рассмотреть для добавления. Возьмите на себя ответственность за защиту ваших серверов с помощью надежных мер безопасности.
Кроме того, на нашем сайте есть множество других обучающих материалов по Redis и PHP, к которым вы можете получить доступ в наших блогах:
- Как установить и защитить Redis на Ubuntu 18.04
- Установка phpBB на Ubuntu 20.04
- Установка и защита phpMyAdmin на Ubuntu 18.04
- Развертывание PHP-приложения в кластере Kubernetes с Ubuntu 18.04
Приятной работы!
Комментарии
Комментариев пока нет. Будьте первым.