Zimbra — средство для организации совместной работы. Имеет в себе общую почту, задачи и календари. Работает на OpenSource решениях и взаимодействует по открытым стандартным протоколам. Систему можно развернуть на одном сервере, но моей задачей стоит развернуть Zimbra на несколько серверов, каждый из которых играет свою роль. Кроме того, это позволит лучше понять общие принципы работы системы.
Описание
Zimbra можно разделить на несколько частей, а именно:
- LDAP сервер — хранит информацию обо всей системе в целом.
- SMTP — тут все понятно. В качестве SMTP выступает postfix.
- PROXY — обратный прокси, который обрабатывает http/https, imap/imaps, pop3/pop3s запросы и перенаправляет их к backend.
- Mailbox — здесь расположен веб интерфейс для пользователей, непосредственно сообщения пользователей.
Сразу обозначу, что команды вида # command
выполняются от root, а $ command
от пользователя zimbra. Это, конечно, не обязательное условие — можно все делать от root, но я решил разграничить, чтобы потом не разбираться с правами на файлы.
Подготовка
При установке Zimbra пытается проверить A и MX записи в DNS, поэтому стоит об этом позаботиться заранее.
Кроме этого, перед началом установки Zimbra устанавливаю необходимые пакеты:
# yum install perl nc unzip sysstat
В /etc/hosts
прописываю хост, в противном случае Zimbra при установке сообщит об этом.
Установка
Получить ссылку на Zimbra Collaboration Server Open Source Edition можно по адресу: Zimbra OSE
Внутри архива находится install.sh
. Именно его и запускаю для установки.
LDAP и SMTP
В моем случае я решил объеденить функционал LDAP и SMTP на одном сервере. Не могу сказать на сколько это удачное/неудачное решение, но думаю, что производительность SMTP не сильно будет проседать из-за наличия рядом OpenLdap.
При установке выбираю только ldap и mta:
Installing:
zimbra-core
zimbra-ldap
zimbra-mta
zimbra-dnscache
Устанавливаю домен, для которого выполняю установку (например, zimbra.local):
DNS ERROR resolving MX for smtp.zimbra.local
It is suggested that the domain name have an MX record configured in DNS
Change domain name? [Yes] Yes
Получаю меню конфигурации:
Main menu
1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-mta: Enabled
******* +MTA Auth host: UNSET
+Enable Spamassassin: yes
+Enable Clam AV: yes
+Enable OpenDKIM: yes
+Notification address for AV alerts:
+Bind password for postfix ldap user: set
+Bind password for amavis ldap user: set
4) zimbra-dnscache: Enabled
s) Save config to file
x) Expand menu
q) Quit
Прохожу по всем пунктам, изучаю. Обязательно запоминаю пароль для ldap.
Затем указываю в MTA Auth host: proxy.zimbra.local.
Указываю пока не установленный хост. После завершения настроек применяю их и подтверждаю изменения системы.
В процессе установки получаю следующее предупреждение:
WARNING
You are configuring this host as an MTA server, but the specified mailstore
used for authentication has not been configured to run the mailbox service yet.
This will cause smtp authentication to fail.
To correct this - after installing a mailstore server,
reset the zimbraMtaAuthHost attribute for this server:
/opt/zimbra/bin/zmprov -r -m -l ms smtp.zimbra.local zimbraMtaAuthHost proxy.zimbra.local
Once done, start the MTA:
zmmtactl start
Zimbra Proxy
При установке выбираю только proxy и memcache:
Installing:
zimbra-core
zimbra-memcached
zimbra-proxy
Получаю меню конфигурации, где устанавливаю Ldap master host и Ldap Admin password:
Main menu
1) Common Configuration:
+Hostname: proxy.zimbra.local
******* +Ldap master host: UNSET
+Ldap port: 389
******* +Ldap Admin password: UNSET
+LDAP Base DN: cn=zimbra
+Secure interprocess communications: yes
+TimeZone: Europe/Moscow
+IP Mode: ipv4
+Default SSL digest: sha256
2) zimbra-proxy: Enabled
s) Save config to file
x) Expand menu
q) Quit
Установливаю пароль для ldap nginx пользователя и заодно отключаю POP/IMAP Proxy, устанавливаю порты http и https, на которых будут висеть backend:
2) zimbra-proxy: Enabled
+Enable POP/IMAP Proxy: FALSE
******* +Bind password for nginx ldap user: Not Verified
+Enable HTTP[S] Proxy: TRUE
+Web server HTTP port: 8080
+Web server HTTPS port: 8443
+HTTP proxy port: 80
+HTTPS proxy port: 443
+Proxy server mode: https
В процессе установки получаю следующее предупреждение:
WARNING
You are configuring this host as a proxy server, but there is currently no
mailstore to proxy. This will cause proxy startup to fail.
Once you have installed a store server, start the proxy service:
zmproxyctl start
Zimbra Mailbox(es)
При установке выбираю только store,logger,spell:
Installing:
zimbra-core
zimbra-logger
zimbra-store
zimbra-apache
zimbra-spell
Меню в котором, что нужно будет настроить:
Main menu
1) Common Configuration:
+Hostname: mailbox1.zimbra.local
******* +Ldap master host: UNSET
+Ldap port: 389
******* +Ldap Admin password: UNSET
+LDAP Base DN: cn=zimbra
+Secure interprocess communications: yes
+TimeZone: Europe/Moscow
+IP Mode: ipv4
+Default SSL digest: sha256
2) zimbra-logger: Enabled
3) zimbra-store: Enabled
+Create Admin User: yes
+Admin user to create:
******* +Admin Password UNSET
+Anti-virus quarantine user:
+Enable automated spam training: yes
+Spam training user:
+Non-spam(Ham) training user:
******* +SMTP host: UNSET
+Web server HTTP port: 8080
+Web server HTTPS port: 8443
+Web server mode: https
+IMAP server port: 143
+IMAP server SSL port: 993
+POP server port: 110
+POP server SSL port: 995
+Use spell check server: yes
+Spell server URL: http://mailbox1.zimbra.local:7780/aspell.php
+Configure for use with mail proxy: FALSE
+Configure for use with web proxy: TRUE
+Enable version update checks: TRUE
+Enable version update notifications: TRUE
+Version update notification email:
+Version update source email:
+Install mailstore (service webapp): yes
+Install UI (zimbra,zimbraAdmin webapps): yes
4) zimbra-spell: Enabled
5) Default Class of Service Configuration:
s) Save config to file
x) Expand menu
q) Quit
Обращаю внимание на то, что я указывал при установке zimbra-proxy:
Web server HTTP port: 8080
Web server HTTPS port: 8443
Configure for use with web proxy: TRUE
Для остальных zimbra-mailbox процедуру повторить сразу или по мере необходимости. Данное решение не дает high available, но позволяет распределить
Запуск Zimbra Proxy
Вспоминаю о предупреждениях, которые выдавала zimbra-proxy.
Генерирую кофигурационные файлы:
$ zmproxyconfgen
Затем перезапускаю сервис Zimbra Proxy:
$ zmproxyctl restart
Post Installation
Установка ключей SSH
На каждом сервере
$ zmupdateauthkeys
Будут обновлены ключи в /opt/zimbra/.ssh/
Настройка syslog
На каждом узле:
# /opt/zimbra/libexec/zmsyslogsetup
На узлах, где установлен zimbra-logger исправить /etc/rsyslog.conf:
# Provides UDP syslog reception
- #$ModLoad imudp
- #$UDPServerRun 514
+ $ModLoad imudp
+ $UDPServerRun 514
# Provides TCP syslog reception
- #$ModLoad imtcp
- #$InputTCPServerRun 514
+ $ModLoad imtcp
+ $InputTCPServerRun 514
# service rsyslog restart
Затем перезапускаю каждый узел (для уверенности):
$ zmcontrol restart
Обращаю внимание, что данный пример подходит для CentOs
Все эти манипуляции необходимы для того, что бы в административной панели корректно отображались статусы все серверов системы.
После этого можно заходить в административную панель, которая расположена по адресу https://