Почтовый сервер Carbonio состоит из множества разных служб и приложений, которые тесно интегрированы друг с другом и позволяют пользователю эффективно работать с почтой, календарями, адресными книгами и файлами, а также совместно редактировать документы и общаться в текстовых и видеочатах. Все эти службы могут находиться на одном виртуальном или физическом сервере. Однако в случае, когда пользователей слишком много, качество сервиса при односерверной установке может существенно пострадать. Для того, чтобы этого не происходило, рекомендуется осуществлять мультисерверную установку Carbonio, при которой различные службы почтового сервера находятся на разных физических и виртуальных серверах. В данной статье мы приведем пример установки Carbonio в мультисерверном исполнении на пяти серверах c Ubuntu 20.04, объединенных локальной сетью. Данная установка позволит протестировать Carbonio в более производительной среде. Впоследствии ее можно будет из тестовой превратить в продуктивную, а по мере необходимости горизонтально и вертикально масштабировать.

В нашем случае установка будет производиться в локальной сети на 5 виртуальных машинах со статическими IP-адресами в диапазоне 10.0.1.10 до 10.0.1.14 и доступом в интернет. Особенностью установки является то, что все обращения к LDAP-серверу идут по не по IP-адресу, а по FQDN, в связи с чем для установки потребуется либо локальный DNS-сервер, либо соответствующие записи в /etc/hosts на каждом сервере. Из внешней сети сервер будет доступен по доменному имени https://mail.company.ru

У каждого сервера в инсталляции будет собственная роль, которую лучше всего отразить в доменном имени сервера. К примеру, в нашей инсталляции будут серверы c PostgreSQL, LDAP, MTA, Proxy и Mailboxd

10.0.1.10 psql.carbonio.ru psql

10.0.1.11 ldap.carbonio.ru ldap

10.0.1.12 mta.carbonio.ru mta

10.0.1.13 proxy.carbonio.ru proxy

10.0.1.14 mailbox.carbonio.ru mailbox

Вынос сервера PostgreSQL позволяет в будущем облегчить задачу по масштабированию и кластеризации всей инфраструктуры. Если перед вами не стоит такой задачи, можно объединить этот сервер с сервером LDAP.

Если вы не планируете расширять свою инсталляцию Carbonio и намерены использовать его только в локальной сети, то внесения этого списка в файл /etc/hosts на каждом сервере будет вполне достаточно. В случае, если вы планируете в будущем расширять свою установку, рекомендуется настроить DNS сервер, который можно разместить на сервере с PostgreSQL. В случае, если вы хотите, чтобы ваш почтовый сервер доступным из публичных сетей, следует настроить Split DNS.

В случае, если вы намерены иметь доступ к инсталляции Carbonio из публичных сетей, вам потребуются публичный IP-адрес и/или проброс портов к соответствующим серверам. Для тестирования почтового сервера достаточно доступа из локальной сети.

Рекомендуемые системные требования для каждой машины в инфраструктуре

  • 4 vCPU

  • 4 GB RAM

  • 100 GB SSD

  • Прописанный в /etc/hosts FQDN

  • Соответствующие хостам A- и MX-записи в DNS

1. Предварительные шаги

Первое, в чем следует убедиться перед началом установки, что все сервера в локальной сети пингуются и доступны друг для друга. Также требуется настроить SSH-доступ к каждому из серверов. Также необходимо задать имена хостов для участвующих в установке серверов. Делается это при помощи команды вида hostnamectl set-hostname mailbox. Выполните на каждом из узлов команду с соответствующим именем хоста. Обратите внимание, что имя хоста должно совпадать с записью в /etc/hosts.

Также на этапе подготовительного этапа добавим в списки репозиториев Ubuntu 20.04 на всех серверах официальный репозиторий Carbonio. Делается это при помощи команд, выполненных от имени root-пользователя.

echo 'deb *************** focal main' >> /etc/apt/sources.list.d/zextras.list

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 52FD40243E584A21

apt update -y

apt upgrade -y

Вместо *************** подставьте ссылку на официальный репозиторий, которую вам предоставит региональный представитель Zextras после вашего обращения по поводу тестирования Carbonio.

2. Настройка сервера PostgreSQL

На сервере PostgreSQL будут храниться базы данных, к которым обращается LDAP-сервер.

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

apt install postgresql-12

2.1. Настройка PostgreSQL:

su - postgres -c "psql --command=\"CREATE ROLE carbonio_adm WITH LOGIN SUPERUSER encrypted password 'DB_ADM_PWD';\""

su - postgres -c "psql --command=\"CREATE DATABASE carbonio_adm owner carbonio_adm;\""

su - postgres -c "psql --command=\"ALTER SYSTEM SET listen_addresses TO '*';\""

su - postgres -c "psql --command=\"ALTER SYSTEM SET port TO '5432';\""

echo "host    all             all             10.0.1.0/24            md5" >> /etc/postgresql/12/main/pg_hba.conf

Замените в первой команде DB_ADM_PWD на сложный пароль и запишите его, он пригодится в последующих шагах.

Также можно заменить подсеть 10.0.1.0/24 на ту, в которую устанавливается кластер, для предотвращения нежелательного доступа.

2.2. Перезагрузка PostgreSQL:

systemctl restart postgresql

3. Настройка сервера LDAP

На сервере LDAP будут храниться все настройки Carbonio, пользователей и пр. Также в LDAP хранится информация о других серверах инфраструктуры, что позволяет им соединяться и обмениваться информацией друг с другом.

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

apt install service-discover-server carbonio-directory-server carbonio-files-db carbonio-mailbox-db pgpool2

3.2. Настройте связь с сервером баз данных с помощью нижеприведенной команды. Замените имя хоста сервера PostgreSQL на то, которое используется в вашей инфраструктуре. Можно также использовать его IP-адрес.

echo "backend_clustering_mode = 'raw'

  port = 5432

  backend_hostname0 = 'psql.carbonio.ru’

  backend_port0 = 5432" > /etc/pgpool2/pgpool.conf

3.3. Перезапустите сервис PGPool:

systemctl restart pgpool2.service

3.4. Проведите первоначальную настройку Carbonio:

carbonio-bootstrap

3.5. Настройте Carbonio Mesh с помощью команд:

service-discover setup-wizard

pending-setups

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

3.6. Установите связь с базами данных на сервере баз данных:

PGPASSWORD='DB_ADM_PWD' carbonio-files-db-bootstrap carbonio_adm 127.0.0.1

PGPASSWORD='DB_ADM_PWD' carbonio-mailbox-db-bootstrap carbonio_adm 127.0.0.1

Замените в данных командах DB_ADM_PWD на пароль, который вы ввели в шаге 2.1.

3.7. Получите пароль администратора LDAP и запишите его. Он понадобится в будущих шагах.

zmlocalconfig -s | grep pass

4. Настройка сервера MTA

На сервере MTA находится Postfix, который принимает входящую почту и перенаправляет ее в почтовое хранилище, а также обеспечивает отправку электронной почты.

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

apt install service-discover-agent carbonio-mta

4.2. Выполните первоначальную настройку Carbonio, указав в процессе адрес LDAP-сервера и пароль администратора LDAP из пункта 3.7. Данный пароль также следует указать в качестве пароля для привязки к пользователю Postfix и Amavis:

carbonio-bootstrap

4.3. Скопируйте файл с ключом доступа к Carbonio Mesh с сервера LDAP и положите в ту же папку на текущем сервере:

scp root@ldap.carbonio.ru:/etc/zextras/service-discover/cluster-credentials.tar.gpg /etc/zextras/service-discover/cluster-credentials.tar.gpg

Выставьте соответствующие права на данный файл:

chown root:root /etc/zextras/service-discover/cluster-credentials.tar.gpg

4.4. Выполните настройку Carbonio Mesh при помощи команд:

service-discover setup-wizard

pending-setups

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

4.5. Настройка ClamAV.

В Carbonio для проверки входящих писем на вирусы используется антивирус ClamAV. В настоящее время пользователям из России закрыта возможность скачивания обновлений антивирусных баз для ClamAV, в связи с чем данный сервис впоследствии будет отображаться как неработающий.

Для того, чтобы антивирус в Carbonio корректно работал, необходимо использовать отличное от официального зеркало для скачивания обновлений баз. Чтобы указать такое зеркало, на сервере MTA:

  1. Откройте файл

  2. Закомментируйте строку №73

#DatabaseMirror %%zimbraClamAVDatabaseMirror%%

  1. После неё добавьте адрес выбранного вами зеркала, заменив ссылку clamav.mirror.ru на доверенное зеркало

DatabaseMirror clamav.mirror.ru

  1. Перезапустите сервисы Carbonio

su - zextras -c 'zmcontrol restart'

Обязательно используйте доверенные зеркала для обновления антивирусных баз, так как при использовании неофициальных зеркал есть шанс скачать скомпрометированные базы для ClamAV.

5. Настройка сервера Proxy

Узел Proxy выполняет сразу несколько функций. Именно на нем осуществляется проксирование входящих запросов к различным узлам инфраструктуры, а также вход в инфраструктуру для пользователей. Также на нем будут расположены сервисы Memcahed и Carbonio Files. В рамках данной установки сервер Proxy будет объединен с видеосервером, который требуется для корректной работы видеоконференций в Carbonio Chats.

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

apt install service-discover-agent carbonio-proxy carbonio-webui carbonio-files-ui carbonio-chats-ui

В ходе настройки укажите IP-адрес вашего почтового сервера. Запишите SERVLET_PORT и VIDEOSERVER PASSWORD, которые будут выведены на экран в ходе установки.

5.2. На данном сервере запустите процесс первоначальной настройки Carbonio, указав в процессе адрес LDAP-сервера и пароль администратора LDAP из пункта 3.7. Используйте этот же пароль для привязки к пользователю nginx.

carbonio-bootstrap

Установите режим работы Proxy-сервера в режим Redirect. Это позволит при соединении с сервером по зашифрованному каналу HTTP автоматически переключаться на HTTPS.

5.3. Скопируйте файл с ключом доступа к Carbonio Mesh с сервера LDAP и положите в ту же папку на текущем сервере:

scp root@ldap.carbonio.ru:/etc/zextras/service-discover/cluster-credentials.tar.gpg /etc/zextras/service-discover/cluster-credentials.tar.gpg

Выставьте соответствующие права на данный файл:

chown root:root /etc/zextras/service-discover/cluster-credentials.tar.gpg

5.4. Выполните настройку Carbonio Mesh при помощи команд:

service-discover setup-wizard

pending-setups

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

5.5. В качестве пользователя zextras настройте и перезапустите memcached-сервер:

su - zextras

carbonio prov ms $(zmhostname) zimbraMemcachedBindAddress $(hostname -i)

zmmemcachedctl restart

zmproxyctl restart

Поскольку сервер memcached не поддерживает аутентификацию, убедитесь, что порт 11211, по которому идут обращения к нему, доступен только из внутренней сети.

6. Настройка сервера Mailboxd

Сервер Mailboxd является узлом, на котором располагаются почтовые хранилища пользователей. Именно здесь хранятся письма, встречи и контакты, к которым обращается пользователь при входе в веб-клиент Carbonio. Также на данном сервере находится лог-сервер, который после настройки будет осуществлять мониторинг инфраструктуры, а также сервер Carbonio Docs для совместного редактирования документов

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

apt install service-discover-agent carbonio-appserver carbonio-user-management carbonio-preview carbonio-advanced carbonio-zal carbonio-logger carbonio-files carbonio-advanced carbonio-zal carbonio-docs-connector carbonio-docs-editor carbonio-videoserver carbonio-videoserver-recorder 

6.2. На данном сервере запустите процесс первоначальной настройки Carbonio, указав в процессе адрес LDAP-сервера и пароль администратора LDAP из пункта 2.7.

carbonio-bootstrap

6.3. Скопируйте файл с ключом доступа к Carbonio Mesh с сервера LDAP и положите в ту же папку на текущем сервере:

scp root@ldap.carbonio.ru:/etc/zextras/service-discover/cluster-credentials.tar.gpg /etc/zextras/service-discover/cluster-credentials.tar.gpg

Выставьте соответствующие права на данный файл:

chown root:root /etc/zextras/service-discover/cluster-credentials.tar.gpg

6.4. Выполните настройку Carbonio Mesh при помощи команд:

service-discover setup-wizard

pending-setups

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

6.5. Откройте файл /etc/carbonio/files/config.properties и измените в нем следующие строки:

# Nginx Lookup servers

nginxlookup.server.protocol=https

nginxlookup.server.urls=10.0.1.14

memcached.server.urls=10.0.1.13

Вместо 10.0.1.14 подставьте IP-адрес вашего почтового хранилища, а вместо 10.0.1.13 подставьте IP-адрес своего прокси-сервера.

6.6. Откройте файл /etc/carbonio/preview/config.ini и измените в нем следующие строки:

nginx_lookup_server_full_path_urls = https://10.0.1.14:7072

memcached_server_full_path_urls = 10.0.1.13:11211

Вместо 10.0.1.14 подставьте IP-адрес вашего почтового хранилища, а вместо 10.0.1.13 подставьте IP-адрес своего прокси-сервера.

6.6. Исправьте права доступа к токену почтового хранилища:

chmod a+r /etc/zextras/carbonio-mailbox/token

6.7. Перезапустите почтовое хранилище Carbonio:

su - zextras -c "zmmailboxdctl restart"

6.8. Запустите видеосервер:

systemctl enable videoserver.service

systemctl start  videoserver.service

7. Настройка интеграции почтового хранилища с видеосервером

7.1 На сервере mailboxd выполните команду, заменив SERVLET_PORT на номер порта из пункта 6.2, VS_PWD на пароль из пункта 6.2:

su - zextras

carbonio chats video-server add proxy.carbonio.ru port 8188 servlet_port SERVLET_PORT secret VS_PWD

7.2. Включите сервис Zextras Chats и функцию записи конференций выполнив команды от имени пользователя zextras:

su - zextras

carbonio config set global teamVideoServerRecordingEnabled true

carbonio config set cos default teamChatEnabled true

8. Настройка лог-сервера

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

8.1. Откройте /etc/rsyslog.conf и раскомментируйте в нем строки:

$ModLoad imudp

$UDPServerRun 514

$ModLoad imtcp

$TCPServerRun 514

8.2. Перезапустите rsyslog:

systemctl restart rsyslog

8.3. Запустите сервис логирования Carbonio

su - zextras "/opt/zextras/libexec/zmloggerinit"

8.4. На всех остальных узлах инфраструктуры настройте соединение с лог-сервером:

/opt/zextras/libexec/zmsyslogsetup  && service rsyslog restart

9. Активация лицензии

9.1. На сервере mailbox от имени пользователя zextras выполните команду:

carbonio core activate-license TOKEN

Замените TOKEN на токен, переданный вам региональным представителем Zextras:

10. Вход в консоль администратора

В ходе установки Carbonio на исходном домене автоматически создается учетная запись глобального администратора. В нашем случае это zextras@carbonio.ru. Для того, чтобы осуществить ход из нее, следует настроить пароль для нее. Делается это в командной строке Carbonio.

10.1 Для смены пароля введите команду: 

zmprov sp zextras@carbonio.ru P@$$w0rD

Замените в команде carbonio.ru на имя вашего домена, а P@$$w0rD на свой пароль.

10.2. Заходить на сервер можно по его публичному доменному имени. Вход на сервер осуществляется через обратный прокси https://mail.company.ru:6071/carbonioAdmin. Также допустим вход на сервер из локальной сети через сервер Proxy https://proxy.carbonio.ru:6071/carbonioAdmin.

В случае возникновения проблем с сервером Proxy, можно осуществить вход через сервер Mailboxd по адресу https://mailbox.carbonio.ru:6071/carbonioAdmin. Такой доступ можно считать резервным и лучше всего будет оградить обычных пользователей от его использования файрволом.

Из-за того, что при установке Carbonio использовался самоподписанный сертификат, браузер выдаст ошибку, связанную с тем, что использует сервер использует недоверенный SSL-сертификат. Решить данную ошибку можно установив коммерческий сертификат. О том как это сделать и какие нюансы следует учитывать при его установке, мы расскажем в одной из наших будущих статей.

По вопросам тестирования, приобретения, предоставления лицензии и консультаций обращаться на почту sales@svzcloud.ru к эксклюзивному партнеру Zextras.

Комментарии (4)


  1. M_AJ
    19.10.2022 14:27
    +1

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

    И еще вопрос, не планируете ли выпускать сборки в контейнерах?


    1. Zextras Автор
      19.10.2022 14:30

      Добрый день, мультисерверную установку можно запустить и на бесплатной версии Carbonio. Недавно обсуждали вопрос контейнеров с коллегами, но пока все на уровне тестирования. Планов разработки сборки в контейнерах пока нет.


  1. Darka
    19.10.2022 19:09

    Лучше расскажите/дайте инструмент для миграции с Zimbra


  1. Zextras Автор
    19.10.2022 19:14
    -2

    Миграция на коммерческую версию Carbonio осуществляется под ключ профессиональным сервисом. Самостоятельно миграцию вы можете осуществить при помощи Imapsync.