Zimbra: развёртывание корпоративного почтового сервера — АйТи Фреш

Zimbra: развёртывание корпоративного почтового сервера

Zimbra Collaboration Suite: обзор возможностей

Zimbra — полнофункциональная платформа корпоративной почты с открытым исходным кодом. Внутри — всё, что нужно для работы: почтовый сервер на базе Postfix (MTA), веб-клиент, календарь, контакты, задачи, файловое хранилище и чат. Если ваша организация хочет держать почтовую инфраструктуру под своим контролем и не зависеть от Microsoft, Zimbra — один из немногих вариантов, которые реально работают в продакшене.

Из чего состоит Zimbra:

  • Zimbra MTA — связка Postfix + Amavis + SpamAssassin + ClamAV для приёма и фильтрации почты
  • Zimbra Store — хранение писем, календарей, контактов (на базе OpenLDAP)
  • Zimbra Proxy — nginx-based прокси для HTTP/HTTPS, IMAP, POP3
  • Zimbra Web Client — AJAX-интерфейс для работы с почтой прямо из браузера, без установки клиента
  • Zimbra Admin Console — веб-панель для администрирования всего этого хозяйства

По железу: для 50–100 пользователей хватит 4 CPU, 8 ГБ RAM и 100 ГБ SSD. Если пользователей 500 и больше — берите минимум 8 CPU, 16 ГБ RAM и сразу думайте о разнесении компонентов по нескольким серверам, иначе потом больно переезжать.

Подготовка сервера и DNS-записей

Zimbra очень болезненно реагирует на ошибки в DNS и имени хоста. Честно говоря, процентов 70 проблем при установке — именно отсюда. Настройте это правильно до того, как запускать инсталлятор.

Настройка имени хоста

Задайте FQDN — полное доменное имя сервера:

sudo hostnamectl set-hostname mail.example.com

# Проверьте
hostname -f
# Должно вернуть: mail.example.com

Отредактируйте /etc/hosts:

127.0.0.1       localhost
10.0.0.10       mail.example.com mail

Важно: в hosts должен стоять реальный IP сервера — никакого 127.0.0.1. Zimbra при установке проверяет разрешение имени, и если что-то не так, установка просто сломается на середине.

DNS-записи

Создайте DNS-записи для домена example.com:

# A-запись для почтового сервера
mail.example.com.    IN  A      10.0.0.10

# MX-запись
example.com.         IN  MX  10  mail.example.com.

# SPF
example.com.         IN  TXT    "v=spf1 mx ip4:10.0.0.10 ~all"

# DKIM (будет добавлен после установки)
# DMARC
_dmarc.example.com.  IN  TXT    "v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com"

# Autodiscover для Outlook
autodiscover.example.com.  IN  CNAME  mail.example.com.

# PTR-запись (настраивается у хостинг-провайдера)
10.0.0.10  IN  PTR  mail.example.com.

Проверьте записи до запуска установки — потом исправлять сложнее:

dig +short example.com MX
dig +short mail.example.com A
dig +short example.com TXT

Установка Zimbra на Ubuntu 22.04

Перед установкой Zimbra нужно убрать с дороги всё, что с ней конфликтует, и немного подготовить систему.

Подготовка системы

Остановите и отключите сервисы, которые будут мешать Zimbra:

# Остановить postfix, если установлен
sudo systemctl stop postfix 2>/dev/null
sudo systemctl disable postfix 2>/dev/null

# Отключить systemd-resolved (конфликт с dnsmasq Zimbra)
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo rm /etc/resolv.conf
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

# Установить зависимости
sudo apt update
sudo apt install -y dnsutils net-tools wget perl libperl5.34 libaio1 \
  unzip pax sysstat sqlite3 netcat-openbsd

Загрузка и запуск инсталлятора

Скачайте Zimbra Open Source Edition:

cd /tmp
wget https://files.zimbra.com/downloads/10.0.6/zcs-10.0.6_GA_4613.UBUNTU22_64.20240316100101.tgz
tar xzf zcs-10.0.6_GA_4613.UBUNTU22_64.20240316100101.tgz
cd zcs-10.0.6_GA_4613.UBUNTU22_64.20240316100101
sudo ./install.sh

Инсталлятор будет задавать вопросы о компонентах. Для single-server установки выбираем всё подряд:

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-memcached [Y]
Install zimbra-proxy [Y]

После того как пакеты встанут, инсталлятор перейдёт к настройке. Первым делом задайте пароль администратора — через меню, никак иначе:

Main menu:
   6) zimbra-store:   ......
      4) Admin Password:   UNSET

Нажмите 6, затем 4, введите пароль. Потом нажмите «a» — конфигурация применится и инсталлятор завершит работу.

Настройка SSL-сертификата

Из коробки Zimbra поднимает самоподписанный сертификат. Для продакшена это не вариант — ставим Let's Encrypt.

Получение сертификата через certbot

Установите certbot и получите сертификат в standalone-режиме:

# Временно остановите прокси Zimbra
sudo su - zimbra -c "zmproxyctl stop"

# Получите сертификат
sudo apt install certbot
sudo certbot certonly --standalone -d mail.example.com

# Подготовьте файлы для Zimbra
SERT_DIR="/etc/letsencrypt/live/mail.example.com"
ZIMBRA_DIR="/opt/zimbra/ssl/letsencrypt"

sudo mkdir -p $ZIMBRA_DIR
sudo cp $CERT_DIR/privkey.pem $ZIMBRA_DIR/privkey.pem
sudo cp $CERT_DIR/cert.pem $ZIMBRA_DIR/cert.pem
sudo cp $CERT_DIR/chain.pem $ZIMBRA_DIR/chain.pem

# Скачайте корневой сертификат
wget -O /tmp/isrg-root-x1.pem https://letsencrypt.org/certs/isrgrootx1.pem
cat $ZIMBRA_DIR/chain.pem /tmp/isrg-root-x1.pem > $ZIMBRA_DIR/fullchain.pem

sudo chown zimbra:zimbra $ZIMBRA_DIR/*

Установка сертификата в Zimbra

Установите сертификат через CLI Zimbra:

sudo su - zimbra

# Проверьте сертификат
/opt/zimbra/bin/zmcertmgr verifycrt comm \
  /opt/zimbra/ssl/letsencrypt/privkey.pem \
  /opt/zimbra/ssl/letsencrypt/cert.pem \
  /opt/zimbra/ssl/letsencrypt/fullchain.pem

# Скопируйте приватный ключ
cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key

# Установите сертификат
/opt/zimbra/bin/zmcertmgr deploycrt comm \
  /opt/zimbra/ssl/letsencrypt/cert.pem \
  /opt/zimbra/ssl/letsencrypt/fullchain.pem

# Перезапустите Zimbra
zmcontrol restart

Сертификат живёт 90 дней, поэтому сразу создайте скрипт автообновления:

#!/bin/bash
# /opt/zimbra/scripts/renew-cert.sh
certbot renew --standalone --pre-hook "su - zimbra -c 'zmproxyctl stop'" \
  --post-hook "/opt/zimbra/scripts/deploy-cert.sh"

Добавьте в cron: 0 3 1 */2 * /opt/zimbra/scripts/renew-cert.sh

Антиспам и DKIM

SpamAssassin и Amavis идут в комплекте и работают сразу. Но без DKIM исходящие письма будут попадать в спам у получателей — настройте подпись, это занимает 10 минут.

Настройка DKIM

Генерируем DKIM-ключ штатной утилитой Zimbra:

sudo su - zimbra
/opt/zimbra/libexec/zmdkimkeyutil -a -d example.com

Команда отдаст готовую DNS-запись — берите её и вставляйте в DNS:

# Пример вывода:
BF2B1234-5678._domainkey  IN  TXT  ( "v=DKIM1; k=rsa; p=MIIBIjAN..." )

Добавьте запись в DNS и проверьте, что она подтянулась:

dig +short BF2B1234-5678._domainkey.example.com TXT

Тонкая настройка SpamAssassin

Пороги срабатывания антиспама настраиваются через Zimbra CLI:

sudo su - zimbra

# Порог для пометки как спам (по умолчанию 6.6)
zmprov mcf zimbraSpamTagPercent 40
zmprov mcf zimbraSpamKillPercent 75

# Включить обучение SpamAssassin
zmprov mcf zimbraSpamIsSpamAccount spam.account@example.com
zmprov mcf zimbraSpamIsNotSpamAccount ham.account@example.com

# Настроить RBL-списки
zmprov mcf +zimbraMtaRestriction "reject_rbl_client zen.spamhaus.org"
zmprov mcf +zimbraMtaRestriction "reject_rbl_client bl.spamcop.net"

Проверьте, что антиспам вообще работает — отправьте тестовое письмо с EICAR или GTUBE:

# GTUBE-строка для теста SpamAssassin
echo "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X" | \
  mail -s "Spam Test" user@example.com

Интеграция с Active Directory

Zimbra умеет ходить в Active Directory за аутентификацией. На практике это значит, что пользователи заходят в почту с теми же логином и паролем, что и в Windows-домене. Очень удобно — не нужно вести отдельную базу учёток.

Настройка внешней аутентификации через LDAP

Настраиваем подключение к AD из командной строки Zimbra:

sudo su - zimbra

# Настроить внешнюю аутентификацию
zmprov md example.com zimbraAuthMech ldap
zmprov md example.com zimbraAuthLdapURL "ldaps://dc01.corp.local:636 ldaps://dc02.corp.local:636"
zmprov md example.com zimbraAuthLdapBindDn "CN=zimbra-ldap,OU=Service Accounts,DC=corp,DC=local"
zmprov md example.com zimbraAuthLdapSearchBase "OU=Users,DC=corp,DC=local"
zmprov md example.com zimbraAuthLdapSearchFilter "(&(objectClass=user)(sAMAccountName=%u))"
zmprov md example.com zimbraAuthLdapSearchBindDn "CN=zimbra-ldap,OU=Service Accounts,DC=corp,DC=local"
zmprov md example.com zimbraAuthLdapSearchBindPassword "SecurePassword123"

Чтобы аккаунты создавались автоматически при первом входе, настройте GAL через Admin Console: Configure → Domains → example.com → GAL Mode → External.

Синхронизация адресной книги (GAL)

Настройте GAL Sync Account — он будет подтягивать контакты из AD в фоне:

sudo su - zimbra

# Создание GAL sync аккаунта
zmprov cds example.com galsync galsync@example.com \
  zimbraGalType ldap \
  zimbraGalLdapURL "ldaps://dc01.corp.local:636" \
  zimbraGalLdapSearchBase "DC=corp,DC=local" \
  zimbraGalLdapFilter "(&(objectClass=user)(mail=*))" \
  zimbraGalLdapBindDn "CN=zimbra-ldap,OU=Service Accounts,DC=corp,DC=local" \
  zimbraGalLdapBindPassword "SecurePassword123" \
  zimbraGalSyncLdapPageSize 1000 \
  zimbraDataSourcePollingInterval 15m

Если не хотите ждать планового цикла — принудительная синхронизация:

zmgsautil forceSync -a galsync@example.com -n galsync

Резервное копирование и восстановление

В Open Source Edition встроенного модуля бэкапа нет — он есть только в Network Edition. Приходится обходиться скриптами и утилитами Zimbra CLI. Это не страшно, просто нужно один раз настроить.

Бэкап через zmmailbox

Экспорт почтовых ящиков в tar/tgz:

sudo su - zimbra

# Бэкап одного ящика
zmmailbox -z -m user@example.com getRestURL '//?fmt=tgz' > /backups/user-$(date +%Y%m%d).tgz

# Бэкап всех ящиков
for user in $(zmprov -l gaa example.com); do
  echo "Backing up $user..."
  zmmailbox -z -m "$user" getRestURL '//?fmt=tgz' > "/backups/${user}-$(date +%Y%m%d).tgz"
done

Восстановление из бэкапа:

zmmailbox -z -m user@example.com postRestURL '//?fmt=tgz&resolve=reset' \
  /backups/user-20260408.tgz

Полный бэкап LDAP и конфигурации

Не забудьте про LDAP-базу и конфигурацию Zimbra — без них бэкап почтовых ящиков бесполезен:

sudo su - zimbra

# Бэкап LDAP
/opt/zimbra/libexec/zmslapcat /backups/ldap

# Бэкап конфигурации
cp -r /opt/zimbra/conf /backups/zimbra-conf-$(date +%Y%m%d)

# Экспорт всех настроек домена
zmprov gd example.com > /backups/domain-settings-$(date +%Y%m%d).txt

# Экспорт настроек всех аккаунтов
for user in $(zmprov -l gaa example.com); do
  zmprov ga "$user" > "/backups/account-settings/${user}.txt"
done

Скрипт ежедневного бэкапа, который мы используем на практике:

#!/bin/bash
BACKUP_DIR="/backups/zimbra/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"/{mailboxes,ldap,conf}

# LDAP
su - zimbra -c "/opt/zimbra/libexec/zmslapcat $BACKUP_DIR/ldap"

# Config
cp -r /opt/zimbra/conf "$BACKUP_DIR/conf/"

# Mailboxes
for user in $(su - zimbra -c 'zmprov -l gaa'); do
  su - zimbra -c "zmmailbox -z -m $user getRestURL '//?fmt=tgz'" > \
    "$BACKUP_DIR/mailboxes/${user}.tgz" 2>/dev/null
done

# Ротация: удаляем бэкапы старше 14 дней
find /backups/zimbra -maxdepth 1 -type d -mtime +14 -exec rm -rf {} \;

echo "$(date): Backup complete" >> /var/log/zimbra-backup.log

Часто задаваемые вопросы

Для 500 пользователей минимальная планка — 8 CPU cores, 16 ГБ RAM, 500 ГБ SSD под хранилище. Zimbra активно ест Java-heap: только на zimbra-store (mailboxd) закладывайте минимум 8 ГБ. И сразу разносите компоненты: отдельный сервер для MTA/Proxy, отдельный для Store/LDAP. Если попытаетесь впихнуть всё на одну машину — при росте нагрузки пожалеете.

Да, миграция с Exchange возможна. Zimbra поставляет утилиту ZCS Migration Wizard для Windows — она переносит почту, контакты и календари. Можно также использовать IMAP-миграцию через imapsync: imapsync --host1 exchange.corp --user1 user --host2 mail.example.com --user2 user@example.com. По опыту — не тащите всех сразу. Начните с тестовой группы из 10–15 человек, обкатайте процесс, потом переводите остальных.

Zimbra OSE из коробки работает с IMAP/POP3 и CalDAV/CardDAV — мобильные клиенты подключаются без плясок с бубном. Если нужен ActiveSync с push-уведомлениями, придётся поставить Z-Push: мы обычно разворачиваем его в отдельном контейнере, чтобы не трогать основной сервер. В Network Edition ActiveSync уже встроен — это один из главных аргументов в пользу платной версии. Не забудьте настроить autodiscover: сэкономит кучу времени при подключении новых устройств.

На single-server установке даунтайм неизбежен — по нашему опыту, 15-30 минут, редко больше. Схема простая: сначала полный бэкап, потом скачиваете новую версию и запускаете ./install.sh. Инсталлятор сам увидит существующую установку и предложит обновление. С multi-server сложнее: компоненты обновляем строго по очереди — сначала LDAP, потом Store, и только затем MTA/Proxy. Перепутаете порядок — огребёте проблемы с репликацией.

Из встроенного — три команды, которыми пользуемся постоянно: zmcontrol status даёт общую картину по сервисам, zmdiaglog собирает диагностику в один пакет, zmmailboxdctl status показывает состояние mailbox-демона. Для Zabbix или Nagios давно прижился такой скрипт проверки: su - zimbra -c 'zmcontrol status' | grep -v Running — выводит только то, что упало, без лишнего шума. Очередь Postfix тоже мониторим отдельно: su - zimbra -c 'mailq | tail -1'. Если там внезапно тысячи писем — что-то пошло не так.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#zimbra установка#zimbra настройка#корпоративный почтовый сервер#zimbra ssl#zimbra антиспам#zimbra active directory#zimbra бэкап#zimbra linux
Комментарии 0

Оставить комментарий

загрузка...

Подпишитесь на рассылку ITfresh

Каждую неделю мы выпускаем практические гайды для руководителей IT и системных администраторов. Это не просто теория! Здесь вы найдёте всё: безопасность, 1С, миграции, резервные копии и проверенные лайфхаки из наших реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.