Перейти к основному содержимому

Установка ONLYOFFICE Mail на локальном сервере с помощью Docker

Введение​

ONLYOFFICE Mail — это полноценный почтовый сервер на базе пакета iRedMail. Это решение включает в себя следующие компоненты: Postfix, Dovecot, SpamAssassin, ClamAV, OpenDKIM, Fail2ban.

Интегрировав ONLYOFFICE Mail с ONLYOFFICE Workspace, вы сможете:

  • подключать собственное доменное имя;
  • создавать почтовые ящики;
  • добавлять псевдонимы для каждого почтового ящика;
  • создавать почтовые группы.

В данной инструкции объясняется, как установить на сервер версию ONLYOFFICE Mail для Docker.

Системные требования​

  • CPU: двухъядерный с тактовой частотой 2 ГГц или лучше
  • RAM: 4 ГБ или больше
  • HDD: не менее 20 ГБ свободного места
  • SWAP: не менее 4 ГБ, но зависит от ОС хоста. Чем больше, тем лучше
  • ОС: дистрибутив Linux для amd64 с версией ядра 3.10 или выше
  • Дополнительные требования:
    • Docker: любая версия, поддерживаемая командой Docker
примечание

На Ubuntu 20.04 необходимо отключить используемый по умолчанию брандмауэр ufw при установке ONLYOFFICE Mail.

Перед началом установки​

Перед началом установки ONLYOFFICE Mail необходимо связать сервер, на котором вы собираетесь установить ONLYOFFICE Mail, с доменом, выбранным для почтового сервера. Рекомендуем выбрать для A-записи компьютера с почтовым сервером имя типа mx.yourdomain.com. Это означает, что A-запись в системе доменных имен (DNS) должна указывать на IP-адрес компьютера, где будет установлен ONLYOFFICE Mail, а PTR-запись для этого компьютера должна преобразовывать IP-адрес компьютера в полное доменное имя (FQDN) — в противоположность тому, что делает A-запись.

Чтобы проверить правильность настроек для A-записи, используется следующая команда:

dig -t A mx.yourdomain.com

Если все правильно, вы должны увидеть результат, содержащий в том числе строки следующего вида:

...
;; ANSWER SECTION:
mx.yourdomain.com. IN A {your IP address}
...

Вместо {your IP address} будет показан реальный IP-адрес сервера.

PTR-запись проверяется с помощью другой команды:

dig -x {your IP address}

Должен вернуться результат, содержащий в том числе строки следующего вида:

...
;; ANSWER SECTION:
{your IP address} IN PTR mx.yourdomain.com.
...

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

примечание

После установки ONLYOFFICE Mail также потребуется добавить MX-запись к домену yourdomain.com, чтобы она указывала на mx.yourdomain.com. Это необходимо, чтобы почта приходила на адреса @yourdomain.com.

Установка ONLYOFFICE Mail с помощью автоматического скрипта​

Чтобы установить ONLYOFFICE Mail автоматически, используйте скрипт для Docker, который можно скачать со страницы загрузок нашего сайта. Можно также воспользоваться прямой ссылкой на скачивание:

wget https://download.onlyoffice.com/install/workspace-install.sh

Когда загрузка завершится, выполните следующую команду для установки ONLYOFFICE Mail:

bash workspace-install.sh -ics false -ids false -icp false -ims true -md yourdomain.com -es true

Установка ONLYOFFICE Mail вручную​

Если вы предпочитаете полностью контролировать то, что и как устанавливается, выполните установку в ручном режиме. Для этого выполните шаги ниже.

Установка необходимых компонентов​

Необходимо установить последнюю версию Docker. Если Docker не установлен, обратитесь к разделу Installation на сайте Docker, чтобы узнать, как его получить.

примечание

В Docker по умолчанию указаны DNS-серверы Google. Если ваш ONLYOFFICE Workspace не будет иметь доступа в Интернет, рекомендуется изменить заданный в Docker по умолчанию адрес DNS-сервера на адрес вашего локального DNS-сервера. Для этого откройте файл /etc/default/docker и замените IP-адрес в следующей строке на IP-адрес DNS-сервера в вашей локальной сети:

docker_OPTS="--dns 8.8.8.8"

Для операционных систем на основе RPM, например, CentOS:

  1. Создайте файл конфигурации /etc/docker/daemon.json со следующим содержанием:

    { "dns" : [ "8.8.8.8" ] }
  2. Перезапустите сервис Docker:

    sudo systemctl restart docker.service

Перед началом установки необходимо создать следующие папки:

  1. Для сервера MySQL

    sudo mkdir -p "/app/onlyoffice/mysql/conf.d";
    sudo mkdir -p "/app/onlyoffice/mysql/data";
    sudo mkdir -p "/app/onlyoffice/mysql/initdb";
  2. И для данных и логов ONLYOFFICE Mail

    sudo mkdir -p "/app/onlyoffice/MailServer/data/certs";
    sudo mkdir -p "/app/onlyoffice/MailServer/logs";

Затем создайте сеть onlyoffice:

sudo docker network create --driver bridge onlyoffice

Установка MySQL​

Затем создайте Docker-контейнер сервера MySQL. Создайте файл конфигурации:

echo "[mysqld]
sql_mode = 'NO_ENGINE_SUBSTITUTION'
max_connections = 1000
max_allowed_packet = 1048576000
group_concat_max_len = 2048" > /app/onlyoffice/mysql/conf.d/onlyoffice.cnf

Создайте SQL-скрипт, который создаст пользователей и выдаст им права. Пользователь onlyoffice_user необходим для ONLYOFFICE Community Server, а mail_admin — для ONLYOFFICE Mail, если он будет устанавливаться:

echo "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw';
CREATE USER IF NOT EXISTS 'onlyoffice_user'@'%' IDENTIFIED WITH mysql_native_password BY 'onlyoffice_pass';
CREATE USER IF NOT EXISTS 'mail_admin'@'%' IDENTIFIED WITH mysql_native_password BY 'Isadmin123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'onlyoffice_user'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'mail_admin'@'%';
FLUSH PRIVILEGES;" > /app/onlyoffice/mysql/initdb/setup.sql
примечание

Обратите внимание, что приведенный выше скрипт задает права доступа к серверу SQL с любых доменов (%). Если вы хотите ограничить доступ, можно указать хосты, которым будет разрешен доступ к серверу SQL.

Создайте контейнер MySQL версии 8.0.29:

sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-mysql-server \
-v /app/onlyoffice/mysql/conf.d:/etc/mysql/conf.d \
-v /app/onlyoffice/mysql/data:/var/lib/mysql \
-v /app/onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=onlyoffice \
mysql:8.0.29
примечание

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

CREATE USER 'mail_admin'@'localhost' IDENTIFIED BY 'Isadmin123';
GRANT ALL PRIVILEGES ON * . * TO 'mail_admin'@'%' IDENTIFIED BY 'Isadmin123';
FLUSH PRIVILEGES;

Установка ONLYOFFICE Mail​

После того как будет завершена подготовка, выполните следующую команду:

sudo docker run --init --net onlyoffice --privileged -i -t -d --restart=always --name onlyoffice-mail-server -p 25:25 -p 143:143 -p 587:587 -p 8081:8081 \
-e MYSQL_SERVER=onlyoffice-mysql-server \
-e MYSQL_SERVER_PORT=3306 \
-e MYSQL_ROOT_USER=root \
-e MYSQL_ROOT_PASSWD=my-secret-pw \
-e MYSQL_SERVER_DB_NAME=onlyoffice_mailserver \
-v /app/onlyoffice/MailServer/data:/var/vmail \
-v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver \
-v /app/onlyoffice/MailServer/logs:/var/log \
-h yourdomain.com \
onlyoffice/mailserver

Где yourdomain.com — это имя хоста почтового сервера.

примечание

Домен, который будет использоваться для ведения переписки, должен быть действительным, и он должен быть настроен на эту машину (то есть должен иметь соответствующую A-запись в настройках DNS, связывающую доменное имя с IP-адресом машины, на которой установлен ONLYOFFICE Mail).

В приведенной выше команде под параметром "yourdomain.com" следует понимать служебный домен почтового сервера. Обычно его указывают в MX-записи домена, который будет использоваться для ведения переписки. Как правило, "yourdomain.com" имеет вид mx1.onlyoffice.com

В этом случае почтовый сервер будет обеспечивать доставку почты на внутренние адреса, размещенные на этом сервере.

Сохранение данных вне контейнеров​

Все данные хранятся в специально отведенных для этого каталогах, томах данных, которые находятся по следующему адресу:

  • /var/log для лог-файлов ONLYOFFICE Mail
  • /var/lib/mysql для данных из базы данных MySQL
  • /var/vmail для хранилища почты
  • /etc/pki/tls/mailserver для сертификатов
Рекомендуем

Сохранение данных вне контейнеров Docker на хост-компьютере позволяет обновлять ONLYOFFICE Mail до новых версий без потери данных.

Для получения доступа к данным извне контейнера надо монтировать тома. Это можно сделать, указав параметр -v в команде docker run.

sudo docker run --privileged -i -t -d -p 25:25 -p 143:143 -p 587:587 -p 8081:8081 \
-v /app/onlyoffice/MailServer/logs:/var/log \
-v /app/onlyoffice/MailServer/mysql:/var/lib/mysql \
-v /app/onlyoffice/MailServer/data:/var/vmail \
-v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver -h yourdomain.com onlyoffice/mailserver
примечание

Обратите внимание, что, если вы пытаетесь монтировать еще не созданные папки, эти папки будут созданы, но доступ к ним будет ограничен. Вам понадобится изменить права доступа к ним вручную.

Сохранение данных на хост-компьютере позволяет при выходе новой версии легко обновлять ONLYOFFICE Mail без потери данных.

Настройка Docker-образа​

Чтобы обеспечить доставку почты как на внутренние адреса, так и на адреса внешних серверов, вам необходимо получить собственное доменное имя и настроить DNS-сервер.

Требуются следующие записи DNS:

  • Запись типа A (связывает доменное имя с IP-адресом хоста, на котором развернут Docker-образ).
  • Запись указателя (PTR) или запись обратного поиска в DNS (устанавливает соответствие между сетевым интерфейсом (IP-адресом) и именем хоста).
sudo docker run --privileged -i -t -d -p 25:25 -p 143:143 -p 587:587 \
-v /app/onlyoffice/MailServer/data/certs:/etc/pki/tls/mailserver -h yourdomain.com onlyoffice/mailserver

Где yourdomain.com — это имя хоста почтового сервера.

Установка SSL-сертификатов​

Самоподписанные сертификаты для вашего домена будут созданы по умолчанию при запуске Docker-контейнера. Если вы хотите использовать сертификаты, заверенные центром сертификации, вам потребуется переименовать их и скопировать в каталог /app/onlyoffice/MailServer/data/certs до запуска образа. Требуются следующие файлы:

  • /app/onlyoffice/MailServer/data/certs/mail.onlyoffice.key
  • /app/onlyoffice/MailServer/data/certs/mail.onlyoffice.crt
  • /app/onlyoffice/MailServer/data/certs/mail.onlyoffice.ca-bundle

Вы можете скопировать SSL-сертификаты в каталог /app/onlyoffice/MailServer/data/certs после запуска образа. Но в таком случае придется перезапустить Docker-контейнер.

Доступные параметры настройки​

примечание

Флаг --env-file в параметрах команды docker run позволяет задать все необходимые переменные среды в одном файле. Так можно избежать написания потенциально длинной команды docker run.

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

  • STORAGE_BASE_DIR: путь к хранилищу почты. По умолчанию задано значение /var/vmail.
  • FIRST_DOMAIN: первый виртуальный домен, на котором будет размещен адрес администратора почты. Этот домен не должен совпадать с основным доменом почтового сервера. По умолчанию задано значение mailserver.onlyoffice.com.
  • DOMAIN_ADMIN_PASSWD: пароль администратора почты. Адрес администратора почты, заданный по умолчанию, — postmaster@mailserver.onlyoffice.com.

Установка ONLYOFFICE Mail с интегрированным ONLYOFFICE Docs​

ONLYOFFICE Mail входит в состав ONLYOFFICE Workspace, который также включает в себя ONLYOFFICE Docs, ONLYOFFICE Control Panel и ONLYOFFICE Community Server. Если вы хотите установить их все и интегрировать друг с другом, обратитесь к этим инструкциям.

Альтернативные способы установки ONLYOFFICE Mail​

Вы также можете использовать скрипт автоматической установки, чтобы установить весь Workspace сразу. Для корректной работы почтового сервера необходимо указать имя хоста yourdomain.com.

ШАГ 1: Скачайте файл установочного скрипта

Выполните следующую команду:

wget https://download.onlyoffice.com/install/workspace-install.sh

ШАГ 2: Установите Workspace

Для этого выполните следующую команду:

bash workspace-install.sh -md yourdomain.com