Почтовый сервер 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:
Откройте файл
Закомментируйте строку №73
#DatabaseMirror %%zimbraClamAVDatabaseMirror%%
После неё добавьте адрес выбранного вами зеркала, заменив ссылку clamav.mirror.ru на доверенное зеркало
DatabaseMirror clamav.mirror.ru
Перезапустите сервисы 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 Для смены пароля введите команду:
carbonio prov 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.