Почтовый сервер Zimbra + расширение Zextras
Хочу поделиться с вами информацией по настройке и внедрению современной почтовой системы и некоторых дополнений к ней. Речь пойдет об установке и настройке Zimbra + пакета расширения функционала Zextras. Последний позволяет настроить совместную работу с документами, организовать чаты с видеоконференциями и многое другое. Я как обычно подробно расскажу на конкретном примере, как все это настроить и запустить в работу.
Сразу же сообщаю, чтобы потом не было лишних обвинений и придирок. Данная статья заказная, находится в соответствующем разделе. Ее написание заказано и оплачено компанией svzcloud. Всех, кому интересны современные инфраструктурные решения в области почтовых серверов и коммуникаций, приглашаю к прочтению.
Немного поясню, о чем дальше пойдет речь.
- Почтовый сервер Zimbra. Думаю, он не нуждается в отдельном представлении. Старый и известный продукт, про который много информации в интернете. В том числе о внедрении и эксплуатации. Скажу честно, что сам никогда не обслуживал этот сервер, но много о нем слышал и наводил справки. У меня были на собеседованиях люди, которые администрировали в том числе кластеры из этих серверов. Расспрашивал их о зимбре, так как сам достаточно много настраивал и поддерживал почтовых серверов. И сейчас это делаю. В целом, я слышал в основном положительную информацию об этом сервере. Из разряда быстро установил, настроил и забыл. Есть opensource и коммерческая редакция zimbra.
- Пакет расширений Zextras — отдельное коммерческое решение, которое работает на базе Zimbra OSE (open source edition). С его помощью расширяется интерфейс zimbra. Появляется новый функционал, где помимо почты есть совместное редактирование и обмен документами, видеочат, виртуальный диск и некоторые другие возможности, которые мы рассмотрим далее.
Я давно собирался написать обзор на Зимбру и вот представилась возможность. Далее немного подробнее разберем функционал представленных продуктов.
Что такое 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, но вам просто надоело все настраивать руками, то проблем быть не должно. Если его нет, то как повезет. Но в целом, продукт стабилен и надежен. При типовом использовании проблем быть не должно.
Что такое Zextras
Продукт Zextras состоит из двух компонентов — Zextras Suite и Team Pro. Рассмотрим функционал каждого из них. Начнем с Zextras Suite и его основных возможностей (не всех):
- Одноканальный (1:1) мессенджер с поддержкой аудио и видео звонков.
- Создание и редактирование документов, таблиц, презентаций в интегрированной LibreOffice с поддержкой форматов документов Microsoft Office, кроме бизнес аналитики, OLAP.
- Совместная работа с документами через web интерфейс. В том числе преобразование в pdf в один клик.
- Индивидуальный виртуальный диск Drive для хранения документов с возможностью делиться файлами.
- Поддержка различных Storage для хранения информации, в том числе объектные, типа S3 с приоритезацией хранения данных на хранилищах разных типов.
- Расширенная возможность бэкапа (компрессия, дедупликация) и восстановления данных, в том числе удаленных писем и т.д. Все это связано с поддержкой различных Storage из предыдущего пункта.
- Поддержка мобильных устройств, в том числе с помощью Active Sync. Есть мобильные приложения для iOS и Android.
- Поддержка клиента Microsoft Outlook с помощью того же Active Sync.
- Расширенные возможности администрирования. Делегирование нескольким администраторам ограниченных прав, логирование их действий и т.д.
Продукт Team Pro дает дополнительные возможности к перечисленным выше:
- Многоканальные видеозвонки для организации видеоконференций.
- Возможность общения с внешними пользователями, не зарегистрированными в системе.
- Демонстрация своего экрана для одного или нескольких зрителей, возможность делиться файлами.
Все перечисленные возможности интегрированы в стандартный интерфейс Zimbra и управляются через него. Расширения Zextras являются надстройкой, не изменяя код самого почтового сервера. Их можно без проблем удалить. Аудио и видеочаты реализованы на базе WebRTC, поэтому работают через браузер и не требуют установки дополнительного ПО.
Zextras полностью платный продукт. Open source версии нет. Можно воспользоваться 30-ти дневным триалом для тестирования функционала. Стоимость различных лицензий можно узнать у официального партнера Zextras в РФ — SVZcloud.
С теорией и описанием закончили. Переходим к установке и настройке. Начнем с установки Zimbra.
Установка Zimbra на Centos
Ставить Zimbra будем на операционную систему Centos 7. Я ее предварительно установил и подготовил на основе своей статьи по базовой настройке centos. Скачать зимбру можно с официального сайта, можно с svzcloud, но прямой ссылки на нем я не нашел, но тем не менее она есть. Загружаем на сервер и распаковываем.
# wget files.zimbra.com/downloads/8.8.12_GA/zcs-8.8.12_GA_3794.RHEL7_64.20190329045002.tgz # tar zxpvf zcs-8.8.12_GA_3794.RHEL7_64.20190329045002.tgz
Прежде чем начать установку, надо убедиться, что у нас соответствующим образом настроены DNS записи. Я не буду останавливаться на теории по подготовке DNS записей для почтового сервера. Информации на эту тему в интернете много. Если кратко, вам нужно добавить днс записи следующих типов — A, MX, PTR.
В качестве примера я буду использовать реальный домен kirushin-vladimir.ru. Почтовый сервер, на который я буду устанавливать Zimbra, имеет имя mail.kirushin-vladimir.ru и соответствующие A, MX и PTR записи для этого.
Файл hosts на сервере у меня приведен к следующему виду.
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 10.20.50.9 mail.vladimir-kirushin.ru mail
Формат последней строки важен. Должен быть ip адрес сервера, полное (FQDN) и сокращенное имя сервера. Если этого не сделать, то установка zimbra завершится ошибкой с указанием отредактировать файл. Мой сервер имеет серый ip адрес и стоит за NAT. Перед установкой я пробросил на него следующие tcp порты — 25, 80, 110, 143, 443, 465, 587, 993, 995, 5222, 5223, 9071, 7071. На самом сервере остался дефолтный firewalld, на котором я так же открыл эти порты.
# firewall-cmd --permanent --add-port={25,80,110,143,443,465,587,993,995,5222,5223,9071,7071}/tcp # firewall-cmd --reload
Так же проверьте, запущен ли у вас postfix на сервере. Если это так, то остановите и отключите его.
# systemctl stop postfix # systemctl disable postfix
Теперь приступаем непосредственно к установке zimbra. Переходим в ее директорию и запускаем скрипт.
# cd ~/zcs-8.8.12_GA_3794.RHEL7_64.20190329045002 # ./install.sh
Запускается обычный wizard. Я не хочу приводить его скриншоты, чтобы не загромождать статью. Там нет ничего особенного и сложного. В интернете полно инструкций с демонстрацией всех этапов. Я все оставляю по дефолту. Устанавливаю все компоненты, кроме бета версии imap.
Установка идет не быстро. Минут 10-15 занимает на достаточно шустром железе. В процессе я получил предупреждение о том, что мой домен резолвится во внешний ip адрес, а на самом сервере его нет.
Так и должно быть, потому что на самом сервере у меня серый, а не внешний ip адрес. Ничего исправлять не нужно.
Когда все закончится, вы увидите примерно следующее.
Чтобы установка завершилась успешно, необходимо задать пароль администратора. Это делается в разделе 7 — zimbra-store. Идите туда и выбирайте 4 — Admin Password. Задайте пароль администратора системы и возвращайтесь в главное меню. После этого у вас появится возможность принять установку, нажатием клавиши «a»
Делаем это и дожидаемся окончания процесса, которое будет ознаменовано следующей информацией.
На этом установка Zimbra на Centos закончена. Можно идти по ссылке https://mail.kirushin-vladimir.ru:7071/ и начинать настраивать систему.
Я перед установкой zimbra забыл остановить и отключить postfix, поэтому после запуска системы, компонент MTA не был запущен, о чем свидетельствовала ошибка в статусе сервера. Исправляется это легко. Во-первых, я отключил postfix, во-вторых, перезапустил сервис. Делается это так.
Заходим под пользователем zimbra в консоль:
# su - zimbra
Проверяем статус сервисов.
$ zmcontrol status mta Stopped postfix is not running
Перезапускаем все службы:
$ zmcontrol start Starting mta...Done.
После этого служба mta заработала. Настроек в бесплатной версии зимбры не так много. Рассказывать особо нечего. Можете сами все посмотреть. Система уже готова к работе. Можно создавать учетные записи в разделе Управление -> Учетные записи и тестировать веб интерфейс, который доступен по адресу http://mail.kirushin-vladimir.ru/.
Zimbra за nginx proxy_pass
Важный нюанс. Я настроил зимбру не только за натом, но и доступ к пользовательскому веб интерфейсу через nginx proxy. Причем tls сертификат настроен на nginx, а дальше запросы проксируются на почтовый сервер по http. Но у zimbra по умолчанию отключен http доступ. Работает только https. Чтобы разрешить оба способа соединения, необходимо выполнить в консоли пользователя zimbra несколько команд.
$ zmprov ms `zmhostname` zimbraReverseProxySSLToUpstreamEnabled FALSE $ /opt/zimbra/libexec/zmproxyconfig -e -w -o -a 8080:80:8443:443 -x both -H `zmhostname` $ zmtlsctl both $ zmprov ms `zmhostname` zimbraReverseProxyMailMode both $ zmprov ms `zmhostname` zimbraMailMode both $ zmcontrol restart
Если нужен только http или только https, команды соответственно будут zmtlsctl http и zmtlsctl https.
Zimbra за NAT
Еще одна проблема вас поджидает в том случае, если ваш почтовый сервер не имеет публичный IP адрес, а работает за NAT, как в моем примере. Вообще, я всегда все настраиваю за NAT. Это удобно и безопасно. Все входящие соединения принимает пограничный шлюз, а дальше уже распределяет их в зависимости от настроек. Это может быть проброс портов через NAT, возможно проксирование через nginx или haproxy.
Проблема Зимбры за натом в том, что при получении почты, она будет пытаться доставить ее в службу, принимающую почту на порту 7025 по внешнему ip адресу, несмотря на то, что в файле hosts явно указан локальный ip адрес для нашего домена. Подозреваю, что проверка идет по MX записи, из-за этого и ошибка. Решать ее можно разными способами:
- Если у вас есть локальный DNS сервер, настройте там отдельную зону для внутренних клиентов. В этой зоне MX и A записи для домена должны указывать на локальный ip адрес зимбры. Почтовый сервер должен использовать этот dns сервер с локальной зоной. Это самый правильный вариант.
- На пограничном шлюзе, который принимает внешние запросы, настройте форвард пакетов, пришедших на порт 7025 из локальной сети обратно на почтовый сервер. Этот вариант сложнее, так как настройка не очевидна и не везде ее можно сделать.
- Это вариант я опишу ниже. Я его не до конца понял, но он мне помог 🙂 Насколько я понял, изменили способ резолвинга.
Идем опять в консоль zimbra и выполняем команды:
$ zmprov ms `zmhostname` zimbraMtaLmtpHostLookup native $ zmprov mcf zimbraMtaLmtpHostLookup native $ zmmtactl restart
После этого письма нормально стали падать в ящик, так как подключения пошли на локальный адрес и порт 7025.
В целом, такой сервер полнофункционален и полностью готов к промышленной эксплуатации. Есть все необходимое, в том числе общие папки, автоответы, подписи и т.д. В общем, все что требуется от классического почтового сервера. Если вам нужно больше, то читайте дальше про расширения Zextras, которые добавляют новый функционал, превращающий почтовый сервер в полноценный портал для совместной работы.
Установка Zextras
Сейчас во всем мире тренд на удаленную работу. Кто-то оказался готов к этому, кто-то нет. Я сам уже несколько лет работаю полностью удаленно. Но так как я один, мне достаточно почты и популярных мессенджеров. Документы храню локально и в облаке. Делиться практически ни с кем ими не нужно, как и работать совместно. Хотя иногда потребность в этом возникает.
В качестве инструмента для совместной работы над документами я очень давно знаком и кое где использую Onlyoffice. В целом, продукт не плохой и на основные вопросы по созданию, редактированию и совместной работе отвечает. Но в серьезную эксплуатацию я его никогда не запускал, так как периодически сталкивался с глюками и ошибками, которые в бесплатной редакции просто не знал, как исправить. Поддержки нет, на форуме активность низкая. Решения ошибок я просто не находил, поэтому не готов серьезно завязывать работу коллектива на бесплатную версию. Больше бесплатных сервисов по совместной работе с документами, которые можно развернуть у себя, я не знаю.
Zextras Suite закрывает эту потребность, предоставляя поддержку LibreOffice онлайн, входящий в платный Zextras Suite. Так же реализует и другой функционал для совместной удаленной работы. В основном это чат с видеоконференциями. По большому счету, этого достаточно для удаленной работы коллектива. Основное, что нужно для удаленщиков:
- Почта.
- Общие файлы.
- Чат и видеозвонки.
- Все вышеперечисленное должно работать на смартфонах.
- CRM. Это за рамками данной статьи.
Посмотрим, как Zextras решает эти задачи. Ставим на сервер поверх Зимбры. Скачиваем дистрибутив.
# wget download.zextras.com/zextras_suite-latest.tgz
Распаковываем и запускаем установку.
# tar xfz zextras_suite-latest.tgz # cd zextras_suite/ # ./install.sh all
Установщик похож на зимбровский. Не буду на нем подробно останавливаться. Я все оставил по дефолту. Успешное окончание установки Zextras будет примерно таким.
После окончания установки, при входе в административный интерфейс Zimbra сразу же получите предупреждение о том, что не настроен путь для бэкапа. Рекомендую настроить его сразу же, а не откладывать на потом.
У нас появился новый раздел Zextras слева в стандартном меню. Тут сосредоточены все настройки дополнения.
Рекомендую сразу же прокрутить страницу чуть ниже и развернуть все зимлеты для включения дополнительного функционала.
Назначение администраторов
В разделе ZxAdmin вы можете добавить одного из пользователей системы в администраторы какого-то конкретного домена, если у вас мультидоменная структура. И выдать ему права на создание аккаунтов и назначение разрешенных сервисов — почта, мессенджер, документы и т.д. Действия всех администраторов логируются. Можно настроить регулярную отправку на почту логов глобальному администратору.
Таким образом можно организовать работу больших отделов либо филиальной структуры. Выдаются соответствующие права администраторам на местах и они сами управляют учетными записями своих подопечных. К примеру, можно сделать администратора, который сможет только создавать учетные записи, но не будет иметь доступа к просмотру почты сотрудников.
Подобный функционал задел на очень больше структуры, которые могут использовать данный почтовый сервер, либо предоставлять какие-то услуги на его базе.
Бэкап почтового сервера
В разделе ZxBackup можно настроить создание резервных копий. Сходу я не разобрался во всех нюансах работы системы архивации. Сам бэкап сделать не сложно, он прям тут же настраивается и создается. В самом простом случае я бы рекомендовал подмонтировать какой-то каталог по nfs и бэкапить в него. Второй вариант, с помощью rsync или чего-то подобного регулярно копировать каталог с бэкапами на удаленный сервер.
Тут система не просто копирования данных в архив. Работает онлайн сканер, фиксирующий все изменения в системе. Он сохраняет метаданные объектов, обновляет их, либо создает у себя в архиве новые объекты. Таким образом, можно откатывать обратно различные изменения в настройках, аккаунтах и т.д. Подробно механизм описан в официальной инструкции. Запросить русскую версию этого документа можно тут.
Управление томами с данными
В ZxPowerstore можно управлять томами для хранения данных почтового сервера. Можно добавить новый том и указать его тип. Вот список поддерживаемых типов томов.
Можно перемещать внутри системы домены или отдельные ящики между разными томами. Функционал работы с томами большой и основные возможности реализуются через командную строку. В web интерфейсе только самое основное.
Есть возможность назначить основной том с горячими или просто новыми данными. А все, что менее востребовано разместить на вторичном томе, который может быть более медленным и дешевым.
Опять же, подобный функционал — задел на очень большие системы.
Чат и видеозвонки
Возможности чата не слишком большие, но тем не менее, есть крутая штука, которая мало у кого реализована. Я имею ввиду не популярные мессенджеры, а закрытые чаты, которые можно развернуть на своем сервере. Есть индикация того, прочитано ли твое сообщение. Реализовано так же, как во всех популярных мессенджерах в виде галочки. Одна галочка — сообщение доставлено, но не прочитано. Две галочки — прочитано.
Тут же из разговора можно осуществить звонок, в том числе с видео. Я смог протестировать этот режим в формате видеозвонка даже с одного своего ноутбука позвонив самому себе в разные учетки, открытые в двух браузерах.
Входящий звонок в почтовом клиенте выглядит так.
При этом пиликает звук из динамиков компьютера. Поговорить самому с собой через один микрофон у меня получилось. Так выглядит интерфейс видеозвонка.
Тут же можно расшарить свой экран, но для этого надо установить отдельное расширение для Chrome.
Вообще, до этого момента я немного прохладно относился ко всей этой затее с Zimbra и Zextras. Вроде и функционально, но не везде удобно, да и денег стоит. Но когда увидел этот чат с видео, с демонстрацией экрана, который у меня сразу и без проблем заработал, я проникся. Ведь это реально очень удобно. Сидишь, работаешь, получил почту. Что-то не понял, тут же написал в чат, договорился о звонке. Созвонились, поговорили, показали друг другу экраны, все объяснили. Это реально круто и удобно.
Плюс, можно создавать отдельные комнаты и проводить конференции. Ведущий запускает у себя камеру, шарит экран и начинает объяснять или что-то рассказывать. Остальные либо просто слушают, либо с включенными веб камерами сидят. И при этом не нужен никакой дополнительный софт. Все работает через браузер. И ты можешь сюда запускать людей со стороны, просто давая им ссылки на чат комнаты.
Совместная работа с документами
В интерфейсе пользователя есть вкладка Drive. Здесь можно хранить свои файлы и делиться ими с другими пользователями системы. Есть возможность давать доступ на чтение или редактирование, а так же на редактирование и возможность так же назначать права для доступа других пользователей.
Отсюда можно запустить редактирование документа. Оно основано на онлайн версии популярного офисного пакета LibreOffice и поддерживает более 100 форматов документов, в т. ч. Microsoft Office. При работе над файлом каждое действие фиксируется, благодаря чему при желании можно будет не только вернуться к любому этапу создания документа, но и отследить порядок внесения правок в него, что помогает участвовать в процесс редактирования другим сотрудникам. Тут же можно будет быстро сохранить документ в виде pdf файла.
Я скажу честно, не протестировал этот функционал. Судя по тому, что все остальное у меня заработало, не думаю, что тут будут какие-то фатальные проблемы. Просто сервер для редактирования документов рекомендуется ставить на отдельную VPS, не на этот же сервер. В рамках тестирования у меня не было подходящей инфраструктуры под рукой, чтобы быстро связать все это дело. Судя по документации, там никаких сложностей нет. Так же качается пакет, ставится одной командой и потом связывается с основным сервером через ввод параметров для связи — адрес сервера и учетка для авторизации.
Думаю, что все это можно поставить и на один сервер, но не было времени проверить и разобраться.
Файловое хранилище
Если вам не нужен модуль для совместной работы с документами, можно воспользоваться другим хранилищем для этого. Называется он как-то странно и неочевидно — Портфель. Сначала подумал, что это неточность перевода. Переключился в английский интерфейс, но там это тоже портфель. Портфель, так портфель. При покупке zextras suite его рекомендуется отключить, т.к. он дублирует функции Drive, но его функциональность гораздо меньше. В портфель вы можете загружать любые свои файлы и хранить. С настроенным внешним сервером для документов, будет доступен предпросмотр содержимого и редактирование.
Мобильное приложение
Есть мобильное приложение Zextras Team. Оно доступно в магазинах приложений android и ios. С его помощью можно общаться в чатах, в том числе совершать аудио и видео звонки. Особо рассказывать про него нечего. Картинки и отзывы можно посмотреть в маркете. Вполне нормальное приложение, которым удобно пользоваться.
Для доступа к своим документам можно использовать приложение Zextras Drive. Оно так же доступно в магазинах. С его помощью можно скачивать, удалять, загружать новые, менять метаданные файлов.
Заключение
Инструментов Zimbra и Zextras достаточно, чтобы организовать коллективную работу с почтой и документами практически в любой организации. Продукт нормально масштабируется, так что подойдет как для среднего, так и для большого бизнеса. Примеры реализации для государственных учреждений и сервис-провайдеров можете посмотреть по ссылкам.
Мне довелось пообщаться с одним администратором, который работал в банке и занимался только тем, что управлял кластером Zimbra, который обеспечивал почтой работу всего банка. Банк не сильно большой и известный, тем не менее я все равно был удивлен увидеть этот продукт там.
Возможность гибко управлять пользователями, делегировать полномочия администраторов являются приятной особенностью описанного решения. Не так много продуктов могут этим похвастаться. С точки зрения управления системой реализовано все не плохо. Не скажу, что удобно, но тем не менее, функционал есть и можно настраивать. В комплекте хорошие бэкапы и работа с томами. Особенно это будет актуально для больших почтовых архивов в облачной инфраструктуре, когда старую почту можно будет выгрузить на дешевые s3 хранилища.
Если у вас есть реальный опыт использования Zimbra или Zextras прошу поделиться информацией. Так же было бы любопытно узнать, кто что использует в организациях для совместной работы. Первое, что приходит на ум, это продукты Microsoft, но они дорогие. Полностью Open Source решения костыльные и неудобные. Все потребности не закрывают. Приходится искать компромиссы.