Установка 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:
-
Создайте файл конфигурации
/etc/docker/daemon.jsonсо следующим содержанием:{ "dns" : [ "8.8.8.8" ] } -
Перезапустите сервис Docker:
sudo systemctl restart docker.service
Перед началом установки необходимо создать следующие папки:
-
Для сервера MySQL
sudo mkdir -p "/app/onlyoffice/mysql/conf.d";sudo mkdir -p "/app/onlyoffice/mysql/data";sudo mkdir -p "/app/onlyoffice/mysql/initdb"; -
И для данных и логов 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