Установка и настройка Zimbra на Linux

  • Михаил
  • 18 мин. на прочтение
  • 171
  • 21 Jan 2017
  • 29 Jan 2023

Почтовый сервер Zimbra устанавливается с помощью скрипта, который можно скачать с сайта разработчика. После установки мы получим полноценный почтовый сервер:

  • SMTP-сервер для отправки писем.
  • Чтение и работа с почтой по POP3/IMAP.
  • Работа с почтой по веб-интерфейсу.
  • Графическая панель управления почтовым сервером.

Прежде, чем начать, нам понадобится:

  1. Статический IP-адрес, который мы должны заказать у Интернет провайдера (не требуется, если мы арендуем сервер).
  2. Зарегистрированное доменное имя (заказывается у поставщика соответствующих услуг).

В процессе мы также должны будем настроить:

Записи в DNS для корректной отправки почты.
  1. Проброс портов (если наш сервер находится за NAT).
  2. Корректный сертификат для подключения к серверу без ошибок и предупреждений.

Принцип установки аналогичный для любого дистрибутива Linux. Важно, чтобы данный дистрибутив официально поддерживался Zimbra. 

Выбор дистрибутива Linux и версии Zimbra

Список дистрибутивов Linux, которые поддерживаются разработчиком Zimbra, описан на официальном сайте страницах загрузки. В данной инструкции мы рассмотрим процесс установки для Ubuntu 18.04 и CentOS 7, однако, процесс настройки для других систем, во многом, аналогичен.

Zimbra имеет две основные версии — платную Network Edition и бесплатную Open Source Edition (OSE). К сожалению, последняя больше не поддерживается — для загрузки доступна только версия 8.8.12, которая больше не обновляется. Сравнение данных версий можно найти на официальном сайте. В центре загрузки Zimbra мы также можем выбрать и скачать дистрибутив для платной или бесплатной версий. В данной инструкции мы скачем и установим платную demo-версию и лицензируем ее временным ключом, дающим право использовать программный продукт в течение 60 дней. По прошествии данного периода, программный продукт необходимо купить или прекратить использовать.

Подготовка сервера

Независимо от выбранного дистрибутива Linux или редакции Zimbra выполняем следующие действия для подготовки сервера к корректной работы почтового сервера.

Настройка сети

cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0

Приводим к виду:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
IPADDR=10.10.11.55
NETMASK=255.255.255.0
GATEWAY=10.10.11.1
DNS1=10.10.11.1
DNS2=77.88.8.8
NAME=eth0
UUID=1f6e63e7-5751-4c26-ae51-ef1d1556dd87
DEVICE=eth0
ONBOOT=yes

systemctl restart network

Выключить mail службу по-умолчанию

systemctl stop postfix 
systemctl disable postfix 
yum remove postfix -y

1. Настройка времени

Устанавливаем корректный часовой пояс:

timedatectl set-timezone Europe/Moscow

* в данном примере мы зададим московское время.

Теперь установим утилиту для синхронизации времени и запустим ее.

а) если используем систему на базе RPM (CentOS / Red Hat):

yum install chrony -y
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 или Настройка 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 -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT

Порты для почты:

iptables -I INPUT -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

Порты для Zimbra:

iptables -I INPUT -p tcp --match multiport --dports 5222,5223,9071,7071,8443,7143,7993,7110,7995 -j ACCEPT 

Сохраняем правила: 

netfilter-persistent save

* если команда вернет ошибку, то установим пакет: apt-get install iptables-persistent.

в) Если используем 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-записи для домена (подробнее о записях в DNS).

Но для установки Zimbra важнее, чтобы в локальном файле hosts была запись о нашем сервере, в противном случае, установка прервется с ошибкой. И так, задаем FQDN-имя для сервера:

hostnamectl set-hostname mail.subbnet.ru
systemctl restart systemd-hostnamed

Теперь открываем на редактирование файл:

vi /etc/hosts

... и добавляем:

10.10.11.55      mail.subbnet.ru mail

* где 10.10.10.55 — IP-адрес нашего сервера; mail — имя сервера; subbnet.ru — наш домен.

Не совсем очевидная проблема, но если в системе не будет пакета hostname, при попытке запустить установку зимбры, мы будем получать ошибку определения IP-адреса по имени. Устанавливаем пакет.

а) для CentOS (Red Hat):

yum install hostname
yum install wget -y

б) если Ubuntu (Debian):

apt-get install hostname
apt-get install wget

4. Системная переменная для имени сервера

Чтобы нам было удобнее вводить команды, где требуется указать имя сервера, создадим системную переменную:

myhostname=$(hostname)

Теперь мы можем в команде использовать переменную $myhostname.

Загрузка дистрибутива и установка Zimbra

Переходим по одной из ссылок выше для загрузки платной или бесплатной версии.

Если мы планируем установить платную версию, сначала кликаем по START FREE TRIAL:

Используя скопированную ссылку, загружаем дистрибутив Zimbra:

wget https://files.zimbra.com/downloads/8.8.12_GA/zcs-8.8.12_GA_3794.RHEL7_64.20190329045002.tgz

Распаковываем скачанный архив:

tar -xzvf zcs-*.tgz

Переходим в распакованный каталог:

cd zcs-*/

Запускаем установку почтового сервера:

./install.sh

На экране отобразится лицензионное соглашение — принимаем его:

Do you agree with the terms of the software license agreement? [N] Y

* в платной версии лицензионное соглашение нужно принять дважды.

Разрешаем использование репозитория от Zimbra:

Use Zimbra's package repository [Y] Y

Устанавливаем необходимые модули (или все):

 

* в зависимости от ситуации, мы можем выбрать лишь несколько компонентов, например, для использования сервера в качестве агента передачи сообщений, мы можем оставить только zimbra-mta. Но в нашем примере мы будем настраивать Zimbra со всем компонентами.

Подтверждаем ранее введенные настройки:

The system will be modified.  Continue? [N] Y

Начнется процесс установки и конфигурирования Zimbra. Ждем окончания процесса.

Если для нашего домена еще нет записи MX, мы увидим сообщение:

It is suggested that the domain name have an MX record configured in DNS

Установщик предложит поменять домен — отвечаем отрицательно:

Change domain name? [Yes] No

... установщик покажет меню с настройкой Zimbra:

 

В данном случае мы можем поменять любую из настроек. Настройки, которые необходимо сделать для продолжения установки показаны звездочками — в данном примере необходимо задать пароль администратора (Admin Password) и указать путь до файла с лицензией (License filename). И так, кликаем 7:

Address unconfigured (**) items  (? - help) 7

Переходим к установке пароля:

Select, or 'r' for previous menu [r] 4

... и задаем пароль.

Если мы устанавливаем платную версию, указываем путь до файла с лицензией:

Select, or 'r' for previous menu [r] 25

... и указываем путь до файла с лицензией, например:

Enter the name of the file that contains the license: /opt/zimbra/ZCSLicense.xml

Теперь выходим из меню:

Select, or 'r' for previous menu [r] r

Применяем настройки:

Select from menu, or press 'a' to apply config (? - help) a

Сохраняем конфигурационный файл:

Save configuration data to a file? [Yes] Y

Соглашаемся с путем сохранения файла:

Save config in file: [/opt/zimbra/config.20863]

Продолжаем конфигурирование:

The system will be modified - continue? [No] Y

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

Notify Zimbra of your installation? [Yes] n

В конечном итоге, нажимаем Enter:

Configuration complete - press return to exit

Сервер установлен. Однако, установщик меняет пароль пользователя root. Меняем его обратно:

passwd root

Zimbra DNSCache

Вместе с зимброй мы установили службу dnscache, которая позволяет увеличить производительность почтового сервера. Однако, принцип работы сети немного меняется, а именно, в файле /etc/resolv.conf появляется запись:

nameserver 127.0.0.1

... а разрешение DNS имени в IP-адреса перестает работать. Удаление или смена записи в файле resolv.conf ни к чему не приводит, так как, по прошествии некоторого времени, настройка принимает исходный вид.

Для корректной настройки службы dnscache необходимо сначала посмотреть Master DNS в настройках Zimbra:

su - zimbra -c "zmprov getServer '$myhostname' | grep DNSMasterIP"

* где $myhostname — имя сервера, на котором установлена Zimbra (в данной конфигурации, mail.subbnet.ru).

В моем случае было:

zimbraDNSMasterIP: 127.0.0.100

Удалить данную запись:

su - zimbra -c "zmprov ms '$myhostname' -zimbraDNSMasterIP 127.0.0.100"

И добавить свои рабочие серверы DNS, например:

su - zimbra -c "zmprov ms '$myhostname' +zimbraDNSMasterIP  192.168.1.1"
su - zimbra -c "zmprov ms '$myhostname' +zimbraDNSMasterIP  8.8.8.8"
su - zimbra -c "zmprov ms '$myhostname' +zimbraDNSMasterIP  77.88.8.8"

* где 192.168.1.1 — DNS сервер в моей сети; 8.8.8.8 — DNS сервер от Google; 77.88.8.8 — DNS сервер от Яндекс.

Теперь DNS-запросы на сервере будут работать.

zimbraMtaLmtpHostLookup

Если наш сервер находится за NAT и разрешение IP происходит не во внутренний адрес, а внешний (можно проверить командой nslookup <имя сервера>), после настройки наш сервер не сможет принимать почту, а в логах мы можем увидеть ошибку delivery temporarily suspended: connect to 7025: Connection refused). Это происходит из-за попытки Zimbra передать письмо в очереди по внутреннему порту локальной почты 7025 (LMTP) на внешний адрес, который недоступен из NAT. Для решения проблемы можно использовать внутренний DNS с другими А-записями (split dns) или собственный поиск IP-адресов для lmtp, а не для DNS. Рассмотрим второй вариант — вводим две команды:

su - zimbra -c "zmprov ms $myhostname zimbraMtaLmtpHostLookup native"
su - zimbra -c "zmprov mcf zimbraMtaLmtpHostLookup native"

* где $myhostname — имя нашего почтового сервера.

После перезапускаем службы зимбры:

su - zimbra -c "zmmtactl restart"

Настройка zimbra после установки

Чтобы начать пользоваться сервером, внесем основные настройки. Для этого открываем браузер и вводим адрес https://10.10.11.55:7071 — должна открыться страница с ошибкой, разрешаем открытие страницы и мы увидим форму для входа в панель администрирования Zimbra. Вводим логин admin и пароль, который задавали при установке.