Внедрение zimbra collaboration open source, авторизация через ad и автоматическое создание почтовых ящиков
Содержание:
Загрузка дистрибутива и установка Zimbra
Переходим по одной из ссылок выше для загрузки платной или бесплатной версии.
Если мы планируем установить платную версию, сначала кликаем по START FREE TRIAL:
Проходим процедуру регистрации. На указанный адрес электронной почты мы получим файл с лицензией (на 60 дней). Переносим данный файл на сервер Zimbra, например, при помощи программы WinSCP.
Возвращаемся на страницу загрузки zimbra и копируем ссылку на дистрибутив:
Используя скопированную ссылку, загружаем дистрибутив Zimbra:
wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-NETWORK-8.8.15_GA_3869.UBUNTU18_64.20190918004220.tgz
Распаковываем скачанный архив:
tar -xzvf zcs-*.tgz
Переходим в распакованный каталог:
cd zcs-*/
Запускаем установку почтового сервера:
./install.sh
На экране отобразится лицензионное соглашение — принимаем его:
Do you agree with the terms of the software license agreement? Y
* в платной версии лицензионное соглашение нужно принять дважды.
Разрешаем использование репозитория от Zimbra:
Use Zimbra’s package repository Y
Устанавливаем необходимые модули (или все):
Install zimbra-ldap Y
Install zimbra-logger Y
Install zimbra-mta Y
Install zimbra-dnscache Y
Install zimbra-snmp Y
Install zimbra-store Y
Install zimbra-apache Y
Install zimbra-spell Y
Install zimbra-convertd Y
Install zimbra-memcached Y
Install zimbra-proxy Y
Install zimbra-archiving Y
Install zimbra-drive Y
Install zimbra-imapd (BETA — for evaluation only) N
Install zimbra-network-modules-ng Y
Install zimbra-talk Y
* в зависимости от ситуации, мы можем выбрать лишь несколько компонентов, например, для использования сервера в качестве агента передачи сообщений, мы можем оставить только zimbra-mta. Но в нашем примере мы будем настраивать Zimbra со всем компонентами.
Подтверждаем ранее введенные настройки:
The system will be modified. Continue? Y
Начнется процесс установки и конфигурирования Zimbra. Ждем окончания процесса.
Если для нашего домена еще нет записи MX, мы увидим сообщение:
It is suggested that the domain name have an MX record configured in DNS
Установщик предложит поменять домен — отвечаем отрицательно:
Change domain name? No
… установщик покажет меню с настройкой Zimbra:
В данном случае мы можем поменять любую из настроек. Настройки, которые необходимо сделать для продолжения установки показаны звездочками — в данном примере необходимо задать пароль администратора (Admin Password) и указать путь до файла с лицензией (License filename). И так, кликаем 7:
Address unconfigured (**) items (? — help) 7
Переходим к установке пароля:
Select, or ‘r’ for previous menu 4
… и задаем пароль.
Если мы устанавливаем платную версию, указываем путь до файла с лицензией:
Select, or ‘r’ for previous menu 25
… и указываем путь до файла с лицензией, например:
Enter the name of the file that contains the license: /opt/zimbra/ZCSLicense.xml
Теперь выходим из меню:
Select, or ‘r’ for previous menu r
Применяем настройки:
Select from menu, or press ‘a’ to apply config (? — help) a
Сохраняем конфигурационный файл:
Save configuration data to a file? Y
Соглашаемся с путем сохранения файла:
Save config in file: [/opt/zimbra/config.20863]
Продолжаем конфигурирование:
The system will be modified — continue? Y
Дожидаемся окончания установки, на запрос отправки уведомления можно ответить отказом:
Notify Zimbra of your installation? n
В конечном итоге, нажимаем Enter:
Configuration complete — press return to exit
Сервер установлен. Однако, установщик меняет пароль пользователя root. Меняем его обратно:
passwd root
Защита от СПАМа
1. Обновление правил в SpamAssassin
Для улучшения защиты от СПАМ-сообщений мы включим автоматическое обновление правил для SpamAssassin. Для этого вводим:
su — zimbra -c «zmlocalconfig -e antispam_enable_rule_updates=true»
su — zimbra -c «zmlocalconfig -e antispam_enable_restarts=true»
После перезапустим соответствующие службы:
su — zimbra -c «zmamavisdctl restart»
su — zimbra -c «zmmtactl restart»
2. Черные списки
Чтобы усилить защиту, разрешим проверку отправителя в черных списках:
su — zimbra -c ‘zmprov mcf zimbraMtaRestriction «reject_rbl_client zen.spamhaus.org»‘
* в данном примере мы подключаем rbl-список от zen.spamhaus.org.
3. Настройка mynetworks
После установки Zimbra в опции postfix mynetworks может оказаться подсеть, в которой находится наш сервер. На практике, это приводит к возможности отправки сообщений без пароля, что в свою очередь, позволяет любому вирусу в нашей сети делать нелегальную рассылку.
Задаем для mynetworks только адрес локальной петли и адрес сервера:
su — zimbra -c ‘zmprov ms zimbra.dmosk.ru zimbraMtaMyNetworks «127.0.0.0/8 192.168.1.15/32″‘
Перезапускаем postfix:
su — zimbra -c ‘postfix reload’
Проверить текущую настройку можно командой:
su — zimbra -c ‘postconf mynetworks’
Выбор дистрибутива Linux и версии Zimbra
Список дистрибутивов Linux, которые поддерживаются разработчиком Zimbra, описан на официальном сайте страницах загрузки. В данной инструкции мы рассмотрим процесс установки для Ubuntu 18.04 и CentOS 7, однако, процесс настройки для других систем, во многом, аналогичен.
Zimbra имеет две основные версии — платную Network Edition и бесплатную Open Source Edition (OSE). Сравнение данных версий можно найти на официальном сайте. В центре загрузки Zimbra мы также можем выбрать и скачать дистрибутив для платной или бесплатной версий. В данной инструкции мы скачем и установим платную demo-версию и лицензируем ее временным ключом, дающим право использовать программный продукт в течение 60 дней. По прошествии данного периода, программный продукт необходимо купить или прекратить использовать.
Маршрутизация почты (mail routing)
Так как Zimbra использует Postfix как МТА, то маршрутизацию (перенаправление) почты настраиваем в нём. Создаём файл с описанием маршрутов /opt/zimbra/postfix/conf/transport-table:
mydomain.com : mydomain.ru :
В этой таблице мы перенаправляем всю почту для домена mydomain.com на другой адрес в Интернете mail.otherdomain.com, а почту для домена mydomain.ru передаём почтовому серверу 192.168.0.10 в локальной сети. При этом имя пользователя (адресата) не изменяется.
! | Маршрутизация почты не затрагивает правила IP маршрутизации и меняет лишь домен назначения. Таким образом, после того как эти правила были применены дальнейшее разрешение DNS имён и отправка IP пакетов идут своим обычным чередом. |
- Подробнее про маршрутизацию почты в Zimbra см в официальной документации:
Полезные команды
Все команды запускаются от имени пользователя zimbra:
$ zmcontrol — управление всеми сервисам Zimbra сразу (status | stop | start | maintenance)
$ zmcontrol <имя_сервиса> команда — управление отдельным сервисом (status | stop | start | maintenance)
$ zmprov — работа с каталогом (LDAP). Запустив без параметров, зайдём в командный интерфейс и получим мощный инструмент для адмиинистрирования:
prov> help zmprov is used for provisioning. Try: zmprov help account help on account-related commands zmprov help calendar help on calendar resource-related commands zmprov help commands help on all commands zmprov help config help on config-related commands zmprov help cos help on COS-related commands zmprov help domain help on domain-related commands zmprov help freebusy help on free/busy-related commands zmprov help list help on distribution list-related commands zmprov help log help on logging commands zmprov help misc help on misc commands zmprov help mailbox help on mailbox-related commands zmprov help notebook help on notebook-related commands zmprov help right help on right-related commands zmprov help search help on search-related commands zmprov help server help on server-related commands zmprov help share help on share related commands
Overview
Command Format
The format of a Zimbra REST command is:
{protocol}://{host}:{port}/home/{user}/{object}?{params}
HTTP methods are for reading items. HTTP methods are for creating/modifying items. The following describes the components of the Zimbra REST command:
Component | Description |
The transport protocol, for example, . | |
The host name or IP address of the Zimbra Collaboration Suite server | |
The port number, for example, 7070. | |
The user. To load an explicit user account, specify the user in one of the following formats:
http://localhost:7070/home/john.doe@mydomain.com/inbox.rss You can also use «~» as a shortcut to the current authenticated user. For example: http://localhost:7070/home/~/inbox.rss |
|
Designates the object to perform the command against. This might be a folder (such as inbox or drafts) or omitted (to download a specific item). If omitted, the query parameters provide the information the command requires.
For example, to download the inbox folder as XML: http://localhost:7070/home/john.doe/inbox.rss For example, to download an item: http://localhost:7070/home/john.doe/?id=657 |
|
A list of command-specific URL parameters. See the specific command for a list of the required and optional parameters. |
Response Formats
The following describes the various response formats, designated using the parameter. Not all commands support all formats. See the specific command for a list of supported formats and command-specific details:
Format | Description |
Hyper Text Markup Language file format. Produced the output as a web page. | |
Data compression and archive format. | |
Data archive format («tar»). | |
Compressed file. | |
Common Separated Values file format. A specific CSV format can be designated using the parameter. Supported CSV formats include:
|
|
Requests that the server return additional meta-data in the response headers. When using this option, the headers are returned inline of the response, unless you specify .
For example, get a mail message by item id and return the meta-data in the response headers and inline. http://localhost:7070/home/john.doe/?id=288&fmt=sync For example, get a mail message by item id and return the meta-data in the response headers only. http://localhost:7070/home/john.doe/?id=288&fmt=sync&nohdr=1 The following is a list of the meta-data headers:
|
Authentication
There are multiple methods to authenticate as a user when accessing a mailbox. Using the parameter, you can designate how to authenticate and whether or not to set the authentication cookie.
Default is . Meaning: first, check for a cookie auth token; second, check for query parameter auth token; thrid, prompt for basic authentication.
The parameter supports a list of comma-separated values which include:
Value | Description |
The authentication token will be retrieved from the cookie.
For example: http://localhost:7070/home/john.doe/inbox.rss?auth=co |
|
The authentication token will be retrieved from request parameter .
For example: http://localhost:7070/home/john.doe/inbox.rss?auth=qp&zauthtoken=0_thisismyzauthtokenthisismyzauthtoken_thisismyzauthtoken |
|
These methods refer to Basic Authentication:
For example: http://localhost:7070/home/john.doe/inbox.rss?auth=ba |
Подготовка сервера
Независимо от выбранного дистрибутива Linux или редакции Zimbra выполняем следующие действия для подготовки сервера к корректной работы почтового сервера.
1. Настройка времени
Устанавливаем корректный часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере мы зададим московское время.
Теперь установим утилиту для синхронизации времени и запустим ее.
а) если используем систему на базе RPM (CentOS / Red Hat):
yum install chrony
systemctl enable chronyd —now
б) если используем систему на базе deb (Ubuntu):
apt-get install chrony
systemctl enable chrony —now
2. Безопасность
SELinux
Если на сервере используется SELinux (по умолчанию, на системах RPM), рекомендуется ее отключить. Для этого вводим 2 команды:
setenforce 0
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
* подробнее в статье Как отключить SELinux.
Брандмауэр
Для нормальной работы Zimbra нужно открыть много портов:
- 25 — основной порт для обмена почтой по протоколу SMTP.
- 80 — веб-интерфейс для чтения почты (http).
- 110 — POP3 для загрузки почты.
- 143 — IMAP для работы с почтовым ящиком с помощью клиента.
- 443 — SSL веб-интерфейс для чтения почты (https).
- 465 — безопасный SMTP для отправки почты с почтового клиента.
- 587 — SMTP для отправки почты с почтового клиента (submission).
- 993 — SSL IMAP для работы с почтовым ящиком с помощью клиента.
- 995 — SSL POP3 для загрузки почты.
- 5222 — для подключения к Zimbra по протоколу XMPP.
- 5223 — для защищенного подключения к Zimbra по протоколу XMPP.
- 7071 — для защищенного доступа к администраторской консоли.
- 8443 — SSL веб-интерфейс для чтения почты (https).
- 7143 — IMAP для работы с почтовым ящиком с помощью клиента.
- 7993 — SSL IMAP для работы с почтовым ящиком с помощью клиента.
- 7110 — POP3 для загрузки почты.
- 7995 — SSL POP3 для загрузки почты.
- 9071 — для защищенного подключения к администраторской консоли.
В зависимости от утилиты управления фаерволом, команды будут следующие.
а) Если используем firewalld (Red Hat, CentOS):
firewall-cmd —permanent —add-port={25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443,7143,7993,7110,7995}/tcp
firewall-cmd —reload
б) Если используем iptables (Ubuntu):
iptables -A INPUT -p tcp —match multiport —dports 25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443,7143,7993,7110,7995 -j ACCEPT
netfilter-persistent save
в) Если используем ufw (Ubuntu):
ufw allow 25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443,7143,7993,7110,7995/tcp
3. DNS и имя сервера
Для корректной работы почтового сервера необходимо создать mx-записи для домена (подробнее о ).
Но для установки Zimbra важнее, чтобы в локальном файле hosts была запись о нашем сервере, в противном случае, установка прервется с ошибкой. И так, задаем FQDN-имя для сервера:
hostnamectl set-hostname zimbra.dmosk.ru
Теперь открываем на редактирование файл:
vi /etc/hosts
… и добавляем:
192.168.1.15 zimbra.dmosk.ru zimbra
* где 192.168.1.15 — IP-адрес нашего сервера; zimbra — имя сервера; dmosk.ru — наш домен.
Не совсем очевидная проблема, но если в системе не будет пакета hostname, при попытке запустить установку зимбры, мы будем получать ошибку определения IP-адреса по имени. Устанавливаем пакет.
а) для CentOS (Red Hat):
yum install hostname
б) если Ubuntu (Debian):
apt-get install hostname
4. Системная переменная для имени сервера
Чтобы нам было удобнее вводить команды, где требуется указать имя сервера, создадим системную переменную:
myhostname=zimbra.dmosk.ru
Теперь мы можем в команде использовать переменную $myhostname.
Совместная работа с документами
В интерфейсе пользователя есть вкладка Drive. Здесь можно хранить свои файлы и делиться ими с другими пользователями системы. Есть возможность давать доступ на чтение или редактирование, а так же на редактирование и возможность так же назначать права для доступа других пользователей.
Отсюда можно запустить редактирование документа. Оно основано на онлайн версии популярного офисного пакета LibreOffice и поддерживает более 100 форматов документов, в т. ч. Microsoft Office. При работе над файлом каждое действие фиксируется, благодаря чему при желании можно будет не только вернуться к любому этапу создания документа, но и отследить порядок внесения правок в него, что помогает участвовать в процесс редактирования другим сотрудникам. Тут же можно будет быстро сохранить документ в виде pdf файла.
Я скажу честно, не протестировал этот функционал. Судя по тому, что все остальное у меня заработало, не думаю, что тут будут какие-то фатальные проблемы. Просто сервер для редактирования документов рекомендуется ставить на отдельную VPS, не на этот же сервер. В рамках тестирования у меня не было подходящей инфраструктуры под рукой, чтобы быстро связать все это дело. Судя по документации, там никаких сложностей нет. Так же качается пакет, ставится одной командой и потом связывается с основным сервером через ввод параметров для связи — адрес сервера и учетка для авторизации.
Думаю, что все это можно поставить и на один сервер, но не было времени проверить и разобраться.
Автоматизация переноса учёток
Почтовая учётная запись создаётся двумя командами:
/opt/zimbra/bin/zmprov ca user@domain.ru userpass displayName "Фамилия Имя Отчество" /opt/zimbra/bin/zmprov ma user@domain.ru userPassword 'userpass'
где userpass — пароль пользователя
Первая команда создаёт пользователя с открытым паролем, вторая — перезаписывает открытый пароль шифрованным (поэтому первый пароль может быть любым).
Если есть список пользоватей и их пароли, то скрипт можно составить, например, в OpenOffice Calc добавить необходимые поля (команды, кавычки), и затем сохранить в формате csv с разделителем «пробел».
Можно сначала создать все учётные записи, а зетем у всех поменять пароль.
Чтобы корректно отображались кирилические буквы, скрипт лучше выполнять от имени root или можно настроить локаль. Проверить настройки локали можно командной:
# echo $LANG ru_RU.UTF-8
а установить командами:
LANG=ru_RU.UTF-8 export $LANG
Zimbra Collaboration
Zimbra release notes are specific to each version of the server. Select your version from the list below to see the release notes for it.
Release | Codename | Patch Level | Third-Party Patch Level | General Availability | Download the Release Notes |
---|---|---|---|---|---|
9.0.0 GA Release | Kepler | Patch 14 | No released patches | 04/07/2020 | |
8.8.15 GA Release (LTS Release) | Joule | Patch 21 | No released patches | 07/22/2019 | |
8.8.12 GA Release | Isaac-Newton | Patch 6 | No released patches | End of General Support 12/31/2019 04/01/2019 | |
8.8.11 GA Release | Homi-Bhabha | Patch 5 | No released patches | End of Technical Guidance 12/17/2019 12/17/2018 | |
8.8.10 GA Release | Konrad-Zuse | Patch 8 | No released patches | End of Technical Guidance 10/01/2019 10/03/2018 | |
8.8.9 GA Release | Curie | Patch 10 | No released patches | End of Technical Guidance 07/09/2019 07/10/2018 | |
8.8.8 GA Release | Turing | Patch 10 | No released patches | End of Technical Guidance 03/29/2019 04/02/2018 | |
8.8.7 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 03/29/2019 03/08/2018 | |
8.8.6 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 03/29/2019 01/15/2018 | |
8.8 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 03/29/2019 12/12/2017 | |
8.7.11 GA Release | JudasPriest | Patch 14 | No released patches | End of General Support 12/31/2019 06/08/2017 | |
8.7.10 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 05/31/2017 | |
8.7.9 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 05/11/2017 | |
8.7.8 Early Developer Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 04/27/2017 | |
8.7.7 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 04/13/2017 | |
8.7.6 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 03/30/2017 | |
8.7.5 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 03/16/2017 | |
8.7.4 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 03/02/2017 | |
8.7.3 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 02/17/2017 | |
8.7.2 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 02/02/2017 | |
8.7.1 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 10/27/2016 | |
8.7.0 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2019 07/13/2016 | |
8.6.0 GA Release | JudasPriest | Patch 14 | No released patches | End of Technical Guidance 9/30/2019 12/15/2014 | |
8.5.1 GA Release | JudasPriest | No released patches | No released patches | End of Technical Guidance 9/30/2018 11/03/2014 | |
8.5.0 GA Release | JudasPriest | Patch 2 | No released patches | End of Technical Guidance 9/30/2018 08/28/2014 | |
8.0.9 GA Release | IronMaiden | No released patches | No released patches | End of Technical Guidance 9/10/2017 11/03/2014 | |
8.0.8 GA Release | IronMaiden | No released patches | No released patches | End of Technical Guidance 9/10/2017 09/25/2014 | |
8.0.7 GA Release | IronMaiden | Patch 2 | End of Technical Guidance 9/10/2017 04/08/2014 | ||
8.0.6 GA Release | IronMaiden | No released patches | End of Technical Guidance 9/10/2017 12/03/2013 | ||
8.0.5 GA Release | IronMaiden | Patch 1 | End of Technical Guidance 9/10/2017 09/10/2013 | ||
8.0.4 GA Release | IronMaiden | Patch 2 | End of Technical Guidance 9/10/2017 05/24/2013 | ||
8.0.3 GA Release | IronMaiden | Patch 3 | End of Technical Guidance 9/10/2017 03/05/2013 | ||
8.0.2 GA Release | IronMaiden | Patch 1 | No released patches | End of Technical Guidance 9/10/2017 12/10/2012 | |
8.0.1 GA Release | IronMaiden | No released patches | No released patches | End of Technical Guidance 9/10/2017 11/05/2012 | |
8.0.0 GA Release | IronMaiden | No released patches | No released patches | End of Technical Guidance 9/10/2017 09/07/2012 | |
7.2.7 GA Release | Helix | No released patches | No released patches | End of Technical Guidance 3/31/2015 03/14/2014 |
Try Zimbra
Want to get involved?
Other help Resources
Looking for a Video?
Что такое Zimbra
Для начала расскажу, из чего состоит Zimbra. Это известные open source продукты.
- Почтовый сервер — Postfix.
- Сервер баз данных — MariaDB.
- Ldap сервер — OpenLDAP.
- Сервер приложений — Jetty.
- Web сервер apache и nginx в качестве прокси к нему.
- Поисковой движок — Lucene.
- Антивирус и антиспам — ClamAV и SpamAssassin и Amavisd в виде интерфейса для взаимодействия этих инструментов с MTA.
- Предпросмотр документов на базе LibreOffice.
В общих чертах появляется понимание о том, что из себя представляет Zimbra. Открытый вопрос с imap сервером. Ожидаешь увидеть здесь dovecot, но на самом деле у зимбры свой imap сервер. Все перечисленные компоненты связаны через web приложения, написанные на Java, в том числе интерфейс пользователя. Это накладывает свои особенности в эксплуатации, которые характерны для всех java приложений. Ожидать небольшого потребления системных ресурсов не приходится.
Системные требования
Минимальные системные требования для Zimbra следующие:
Система | Centos 7 и прочие клоны RHEL либо Ubuntu 16 |
Процессор | Intel/AMD 2.0 GHZ+ 64-bit, 2-4 CPU |
Память | 8 Gb Ram |
Диск | 5 GB для компонентов сиcтемы + место под почту |
Я в своем примере буду использовать операционную систему Centos 7.
Функционал
Рассмотрим теперь, какой функционал предоставляет бесплатная версия Zimbra из коробки.
- Непосредственно почтовый сервер с web интерфейсом. Доступен следующий функционал — почта, задачи, календарь, адресная книга, автоответы, алиасы и др.
- Простой чат через web клиент.
- Хороший функциональный поиск по почтовой базе.
- Шифрование почтовых сообщений.
- Предпросмотр документов в web интерфейсе.
- Антиспам и антивирус.
- Web консоль управления сервером для администратора.
- Приложение для компьютера Zimbra Desktop. К сожалению, больше не поддерживается.
В целом, ничего особенного. Весь этот функционал можно настроить так или иначе самостоятельно. Но это под силу не только лишь всем 🙂 Объем работы будет очень большой. Нужно хорошее знание linux и понимание устройства и работы почтовых серверов.
Zimbra хороша тем, что дает готовое, единое, комплексное решение, которое ставится практически автоматически и не требует больших знаний linux для развертывания и управления. После установки доступен web интерфейс, через который все управляется. Лазить в консоль сервера практически не нужно. Только если траблшутить какие-то проблемы. Если у вас хороший бэкграунд на тему почтового сервера на базе postfix, но вам просто надоело все настраивать руками, то проблем быть не должно. Если его нет, то как повезет. Но в целом, продукт стабилен и надежен. При типовом использовании проблем быть не должно.