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

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: ZimbraLinux, SMTPPOP3, IMAP.

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

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

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

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

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

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

Принцип установки аналогичный для любого дистрибутива 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 выполняем следующие действия для подготовки сервера к корректной работы почтового сервера.

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 -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 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=$(hostname)

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

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

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

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

Кликаем по START FREE TRIAL

Проходим процедуру регистрации. На указанный адрес электронной почты мы получим файл с лицензией (на 60 дней). Переносим данный файл на сервер Zimbra, например, при помощи программы WinSCP.

Возвращаемся на страницу загрузки zimbra и копируем ссылку на дистрибутив:

Копируем ссылку для скачивания дистрибутива Zimbra под Linux Ubuntu

Используя скопированную ссылку, загружаем дистрибутив 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? [N] Y

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

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

Use Zimbra's package repository [Y] Y

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

Install zimbra-ldap [Y] Y

Install zimbra-logger [Y] Y

Install zimbra-mta [Y] Y

Install zimbra-dnscache [Y] Y

Install zimbra-snmp [Y] Y

Install zimbra-store [Y] Y

Install zimbra-apache [Y] Y

Install zimbra-spell [Y] Y

Install zimbra-convertd [Y] Y

Install zimbra-memcached [Y] Y

Install zimbra-proxy [Y] Y

Install zimbra-archiving [N] Y

Install zimbra-drive [Y] Y

Install zimbra-imapd (BETA - for evaluation only) [N] N

Install zimbra-network-modules-ng [Y] Y

Install zimbra-talk [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:

Main menu

   1) Common Configuration:                                                  
   2) zimbra-ldap:                             Enabled                       
   3) zimbra-logger:                           Enabled                       
   4) zimbra-mta:                              Enabled                       
   5) zimbra-dnscache:                         Enabled                       
   6) zimbra-snmp:                             Enabled                       
   7) zimbra-store:                            Enabled                       
        +Create Admin User:                    yes                           
        +Admin user to create:                 admin@zimbra.dmosk.ru      
******* +Admin Password                        UNSET                         
        +Anti-virus quarantine user:           virus-quarantine.k3uvuwts2@zimbra.dmosk.ru
        +Enable automated spam training:       yes                           
        +Spam training user:                   spam.lonovprz@zimbra.dmosk.ru
        +Non-spam(Ham) training user:          ham.xqt7qrca@zimbra.dmosk.ru
        +SMTP host:                            zimbra.dmosk.ru            
        +Web server HTTP port:                 8080                          
        +Web server HTTPS port:                8443                          
        +Web server mode:                      https                         
        +IMAP server port:                     7143                          
        +IMAP server SSL port:                 7993                          
        +POP server port:                      7110                          
        +POP server SSL port:                  7995                          
        +Use spell check server:               yes                           
        +Spell server URL:                     http://zimbra.dmosk.ru:7780/aspell.php
        +Enable version update checks:         TRUE                          
        +Enable version update notifications:  TRUE                          
        +Version update notification email:    admin@zimbra.dmosk.ru      
        +Version update source email:          admin@zimbra.dmosk.ru      
        +Install mailstore (service webapp):   yes                           
        +Install UI (zimbra,zimbraAdmin webapps): yes                           
******* +License filename:                     UNSET                         

   8) zimbra-spell:                            Enabled                       
   9) zimbra-convertd:                         Enabled                       
  10) zimbra-proxy:                            Enabled                       
  11) Default Class of Service Configuration:                                
  12) Enable default backup schedule:          yes                           
   s) Save config to file                                                    
   x) Expand menu                                                            
   q) Quit

В данном случае мы можем поменять любую из настроек. Настройки, которые необходимо сделать для продолжения установки показаны звездочками — в данном примере необходимо задать пароль администратора (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 (в данной конфигурации, zimbra.dmosk.ru).

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

zimbraDNSMasterIP: 127.0.0.53

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

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

И добавить свои рабочие серверы 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://<IP-адрес сервера>:7071 — должна открыться страница с ошибкой, разрешаем открытие страницы и мы увидим форму для входа в панель администрирования Zimbra. Вводим логин admin и пароль, который задавали при установке.

Добавление домена

Если мы не меняли рабочий домен в настройках во время установки сервера, то основной домен будет таким же, как имя сервера. Как правило, это не то, что нам нужно. И так, заходим в Настройка - Домены. В правой части окна кликаем по значку шестеренки и Создать:

Переходим к созданию нового почтового домена

Задаем название для нового домена:

Задаем название для домена

... и кликаем Далее.

В следующем окне выбираем сервер:

Выбор сервер для домена

... можно нажать Готово.

Теперь поменяем домен по умолчанию. Переходим в Настройка - Глобальные настройки. Меняем значение для поля «Домен по умолчанию»:

Меняем домен по умолчанию

... и нажимаем Сохранить.

Создание почтового ящика

Переходим с главного меню панели администрирования в Управление - Учетные записи. Справа кликаем по шестеренке - Создать:

Переходим к созданию нового почтового ящика

Задаем имя учетной записи, а также фамилию пользователя:

Указываем email и фамилию пользователя

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

Задаем пароль нового пользователя

При необходимости создания административной учетной записи ставим галочку Глобальный администратор:

Выдаем права глобального администратора

Нажимаем Готово.

Настройка DNS

Для корректной работы почты необходимо настроить DNS для нашего домена.

1. Запись MX.

Позволяет определить почтовый сервер для домена. Подробнее о том, что это и как ее правильно прописать в статье Что такое MX-запись.

2. Запись A.

Для нашего сервера, который определен как MX запись нужна запись А, которая указывает на его IP-адрес. В моем примере это сервер zimbra.dmosk.ru, который из сети Интернет должен разрешаться во внешний IP-адрес.

3. PTR.

Данная запись представляет из себя обратное разрешение IP-адреса в домен. С ее помощью подтверждается легитимность отправителя. Подробнее в статье Что такое PTR-запись.

4. SPF.

Это запись TXT, которая определяет список серверов для домена, с которых разрешена отправка почты. Подробнее — Что такое SPF.

5. DKIM.

Подтверждение владельца домена. Письмо отправляется с зашифрованным заголовком и расшифровать его можно с помощью последовательности, хранящейся в TXT-записи на DNS. Соответственно, если владелец домена разместил такую последовательность, то он и является его владельцем. Подробнее — Что такое DKIM. Также в данной инструкции ниже мы разберем настройку DKIM на Zimbra.

6. DMARC.

Определяет для домена политику проверки писем. Подробнее — Что такое DMARC.

Проброс портов

Если наш сервер находится во внутренней сети, необходимо настроить проброс портов. В двух словах, это настройка на сетевом устройстве, которое смотрит в Интернет, которая позволит запросы на определенный порт передать на наш почтовый сервер.

Пример настройки для Mikrotik приведен в инструкции Перенаправление запросов (проброс портов) на Mikrotik.

Настройка DKIM

Отдельно рассмотрим процесс настройки подписи DKIM на почтовом сервере Zimbra. Формирование ключей выполняется для каждого из доменов из командной строки. Подключаемся к серверу по SSH и вводим команду:

su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -a -d dmosk.ru"

* данная команда создаст последовательности ключей для домена dmosk.ru.

Мы должны получить ответ на подобие:

Public signature to enter into DNS:
5D8C3E02-4EFA-11EA-872A-D9A5B4628C49._domainkey IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5iLy58AJ1fdB15BZgh/VtGfZsi+TrDyvqqZaL5pJ+MQaQrpqHW8AF5kyxW2QzAMjyKzySMZX0PoHUuV93Yxf2t52IFihvb7ivqmRwlqFV3gU7j8zqbAGWHfZo4Ydw0kUmU6pm+Z85aWt4k7rQ7vWXludQGf8yIaSMMmodxze9E5VUOtUA18dIEEPcbwSgOO6YhQLuC78T4FiF5"
          "8epQnsX0voSfg9tMW+r+P1b5fTy5Guyqh1plWYseKxPzHKHbc4Lokcgo1AZzKG5Mvo5OCXsKUE1fSoc366AFSoUnWr23P7oUbf+NjXzPMS8ESGA9TfpDA6eRJT4QEpi72AdIy4rQIDAQAB" )  ; ----- DKIM key 5D8C3E02-4EFA-11EA-872A-D9A5B4628C49 for dmosk.ru

В данном ответе нас интересуют записи 5D8C3E02-4EFA-11EA-872A-D9A5B4628C49._domainkey — это имя для TXT в домене dmosk.ru"v=DKIM1; k=rsa; " "p=M...AB" — содержимое записи.

В настройках домена необходимо добавить данную запись, после чего подождать, минут 15. После выполняем проверку:

opendkim-testkey -d dmosk.ru -s 5D8C3E02-4EFA-11EA-872A-D9A5B4628C49 -x /opt/zimbra/conf/opendkim.conf

* где dmosk.ru — наш домен; 5D8C3E02-4EFA-11EA-872A-D9A5B4628C49 — селектор, который мы видели в записи 5D8C3E02-4EFA-11EA-872A-D9A5B4628C49._domainkey.
* если при вводе команды мы получим ошибку «Command 'opendkim-testkey' not found», необходимо установить opendkim-tools командой apt-get install opendkim-tools (deb) или yum install opendkim-tools (RPM).

Для просмотра имеющихся записей DKIM можно воспользоваться командой:

su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -q -d dmosk.ru"

Отправка тестового письма

Открываем браузер и переходим по ссылке https://<IP-адрес сервера>:8443/ — откроется веб-клиент для чтения и отправки почты. В качестве логина используем созданный email и его пароль.

Теперь заходим на сайт https://www.mail-tester.com/ и копируем email-адрес для отправки тестового сообщения:

Копируем email для отправки тестового письма

Создаем новое сообщение и отправляем его на тестовый адрес. Возвращаемся на сайт для проверки и кликаем по Затем проверьте оценку:

Выполняем проверку тестового сообщения

Если наше письмо не получило 10 баллов, анализируем проблемы и исправляем их.

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

При заходе на веб-интерфейс мы будем получать ошибку, так как по умолчанию, создается самоподписный сертификат. Рассмотрим процесс установки бесплатного сертификата от Let;s Encrypt.

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

Создаем каталог:

mkdir /opt/letsencrypt

Загружаем в него утилиту letsencrypt-auto:

wget https://raw.githubusercontent.com/certbot/certbot/7f0fa18c570942238a7de73ed99945c3710408b4/letsencrypt-auto-source/letsencrypt-auto -O /opt/letsencrypt/letsencrypt-auto

Разрешаем ее запускать на выполнение: 

chmod +x /opt/letsencrypt/letsencrypt-auto

После чего:

/opt/letsencrypt/letsencrypt-auto certonly --standalone

Будет установлено несколько пакетов, после необходимо ввести адрес почты, принять лицензионное соглашение и, в принципе, можно подписаться на рассылки от Let's Encrypt:

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): admin@dmosk.ru

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

После утилита предложит ввести адрес, для которого необходимо получить сертификат — вводим адрес нашего сервера, например:

Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): zimbra.dmosk.ru

Мы должны получить что-то на подобие:

...
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/zimbra.dmosk.ru/fullchain.pem
   Your key file has been saved at:
   ...

Сертификат получен и все его файлы находятся в каталоге /etc/letsencrypt/live/zimbra.dmosk.ru/.

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

Процесс установки сертификата для зимбры, несколько, отличается от многих других сервисов — он требует дополнительных телодвижений.

И так, сначала скопируем полученные сертификаты в каталог зимбры — в моем случае, команды такие:

cp /etc/letsencrypt/live/zimbra.dmosk.ru/* /opt/zimbra/ssl/zimbra/commercial/

* где zimbra.dmosk.ru — домен, для которого мы получали сертификат.

Меняем владельца для скопированных файлов:

chown zimbra /opt/zimbra/ssl/zimbra/commercial/*

Теперь нюанс — zimbra не примет цепочку сертификатов, если в ней не будет корневых от Let's Encrypt. Получить их можно по ссылкам:

1. https://letsencrypt.org/certs/isrgrootx1.pem.txt.
2. https://letsencrypt.org/certs/letsencryptauthorityx3.pem.txt.

Полученную последовательность добавляем к файлу chain.pem:

vi /opt/zimbra/ssl/zimbra/commercial/chain.pem 

-----BEGIN CERTIFICATE-----
<первую последовательность оставляем>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<вторую последовательность, если есть, удаляем>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFjTCCA3WgAwIBAgIRANOxciY0IzLc9AUoUSrsnGowDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTYxMDA2MTU0MzU1
WhcNMjExMDA2MTU0MzU1WjBKMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDEjMCEGA1UEAxMaTGV0J3MgRW5jcnlwdCBBdXRob3JpdHkgWDMwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCc0wzwWuUuR7dyXTeDs2hjMOrX
NSYZJeG9vjXxcJIvt7hLQQWrqZ41CFjssSrEaIcLo+N15Obzp2JxunmBYB/XkZqf
89B4Z3HIaQ6Vkc/+5pnpYDxIzH7KTXcSJJ1HG1rrueweNwAcnKx7pwXqzkrrvUHl
Npi5y/1tPJZo3yMqQpAMhnRnyH+lmrhSYRQTP2XpgofL2/oOVvaGifOFP5eGr7Dc
Gu9rDZUWfcQroGWymQQ2dYBrrErzG5BJeC+ilk8qICUpBMZ0wNAxzY8xOJUWuqgz
uEPxsR/DMH+ieTETPS02+OP88jNquTkxxa/EjQ0dZBYzqvqEKbbUC8DYfcOTAgMB
AAGjggFnMIIBYzAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADBU
BgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEBATAwMC4GCCsGAQUFBwIB
FiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQub3JnMB0GA1UdDgQWBBSo
SmpjBH3duubRObemRWXv86jsoTAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js
LnJvb3QteDEubGV0c2VuY3J5cHQub3JnMHIGCCsGAQUFBwEBBGYwZDAwBggrBgEF
BQcwAYYkaHR0cDovL29jc3Aucm9vdC14MS5sZXRzZW5jcnlwdC5vcmcvMDAGCCsG
AQUFBzAChiRodHRwOi8vY2VydC5yb290LXgxLmxldHNlbmNyeXB0Lm9yZy8wHwYD
VR0jBBgwFoAUebRZ5nu25eQBc4AIiMgaWPbpm24wDQYJKoZIhvcNAQELBQADggIB
ABnPdSA0LTqmRf/Q1eaM2jLonG4bQdEnqOJQ8nCqxOeTRrToEKtwT++36gTSlBGx
A/5dut82jJQ2jxN8RI8L9QFXrWi4xXnA2EqA10yjHiR6H9cj6MFiOnb5In1eWsRM
UM2v3e9tNsCAgBukPHAg1lQh07rvFKm/Bz9BCjaxorALINUfZ9DD64j2igLIxle2
DPxW8dI/F2loHMjXZjqG8RkqZUdoxtID5+90FgsGIfkMpqgRS05f4zPbCEHqCXl1
eO5HyELTgcVlLXXQDgAWnRzut1hFJeczY1tjQQno6f6s+nMydLN26WuU4s3UYvOu
OsUxRlJu7TSRHqDC3lSE5XggVkzdaPkuKGQbGpny+01/47hfXXNB7HntWNZ6N2Vw
p7G6OfY+YQrZwIaQmhrIqJZuigsrbe3W+gdn5ykE9+Ky0VgVUsfxo52mwFYs1JKY
2PGDuWx8M6DlS6qQkvHaRUo0FMd8TsSlbF0/v965qGFKhSDeQoMpYnwcmQilRh/0
ayLThlHLN81gSkJjVrPI0Y8xCVPB4twb1PFUd2fPM3sA1tJ83sZ5v8vgFv2yofKR
PB0t6JzUA81mSqM3kxl5e+IZwhYAyO0OTg3/fs8HqGTNKd9BqoUwSRBzp06JMg5b
rUCGwbCUDI0mxadJ3Bz4WxR6fyNpBK2yAinWEsikxqEt
-----END CERTIFICATE-----

* где мы добавили к файлу две последовательности.

Теперь зайдем в систему под пользователем zimbra:

su - zimbra

... и перейдем в каталог:

$ cd /opt/zimbra/ssl/zimbra/commercial

Проверяем, правильно ли сформированы сертификаты для Zimbra:

$ zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem

Мы должны получить ответ:

** Verifying 'cert.pem' against 'privkey.key'
Certificate 'cert.pem' and private key 'privkey.key' match.
** Verifying 'cert.pem' against 'chain.pem'
Valid certificate chain: cert.pem: OK

Переименовываем закрытый ключ:

$ mv -f privkey.pem commercial.key

Можно устанавливать сертификаты:

$ zmcertmgr deploycrt comm cert.pem chain.pem

Чтобы настройка применилась, перезапускаем zimbra:

$ zmcontrol restart

Можно выйти из окружения пользователя zimbra:

$ exit

Продление сертификата

Обновление сертификата не потребует больших усилий. Для начала, обновляем сертификат Let's Encrypt:

/opt/letsencrypt/letsencrypt-auto renew

Скопируем обновленные сертификаты в каталог зимбры:

cp /etc/letsencrypt/live/zimbra.dmosk.ru/* /opt/zimbra/ssl/zimbra/commercial/

* где zimbra.dmosk.ru — домен, для которого мы получали сертификат.

Меняем владельца для файлов:

chown zimbra /opt/zimbra/ssl/zimbra/commercial/*

Переходим в каталог с сертификатами:

cd /opt/zimbra/ssl/zimbra/commercial

Загружаем корневые сертификаты Let's Encrypt: 

wget https://letsencrypt.org/certs/isrgrootx1.pem.txt

wget https://letsencrypt.org/certs/letsencryptauthorityx3.pem.txt

Создаем файл с полной цепочкой сертификатов:

echo "-----BEGIN CERTIFICATE-----" > new_chain.pem

openssl x509 -in chain.pem -outform der | base64 -w 64 >> new_chain.pem

echo "-----END CERTIFICATE-----" >> new_chain.pem

mv new_chain.pem chain.pem

cat isrgrootx1.pem.txt >> chain.pem

cat letsencryptauthorityx3.pem.txt >> chain.pem

Проверяем корректность сертификатов:

su - zimbra -c "zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/privkey.pem /opt/zimbra/ssl/zimbra/commercial/cert.pem /opt/zimbra/ssl/zimbra/commercial/chain.pem"

Переименовываем закрытый ключ:

mv privkey.pem commercial.key

Можно устанавливать сертификаты:

su - zimbra -c "zmcertmgr deploycrt comm /opt/zimbra/ssl/zimbra/commercial/cert.pem /opt/zimbra/ssl/zimbra/commercial/chain.pem"

Чтобы настройка применилась, перезапускаем zimbra:

su - zimbra -c "zmcontrol restart"

Готово.

Настройка почтового клиента

Приведем пример настройки почтового клиента. Подключимся к нашему серверу по IMAP и отправим почту по SMTP. В качестве почтового клиента я буду использовать Mozilla Thunderbird — принцип настройки других клиентов аналогичен.

Для настройки используем следующие параметры:

Настройка IMAP POP3 SMTP
Адрес сервера IP-адрес сервера или его имя
Порт 143 110 587
SSL STARTTLS
Имя пользователя Почтовый адрес, к которому выполняем подключение
Пароль Пароль для почтового ящика

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

Пример настройки почтового клиента

Защита от СПАМа

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"'

* где 192.168.1.15 — IP-адрес нашего почтового сервера.

Перезапускаем postfix:

su - zimbra -c 'postfix reload'

Проверить текущую настройку можно командой:

su - zimbra -c 'postconf mynetworks'

Дополнительные настройки

Добавление отправителей в белый список

Может возникнуть ситуация, при которой нам нужно изменить назначение СПАМ-балов для некоторых отправителей. Для этого открываем файл:

vi /opt/zimbra/conf/amavisd.conf.in

Находим строку:

   { # a hash-type lookup table (associative array)
   ...
   }

... и внутри фигурных скобок {} добавим нужный нам домен или конкретного отправителя:

   ...
   'dmosk.ru'                           =>  -10.0,
   'sender@dmosk2.ru'                   =>  -10.0,
}

* таким образом мы сказали, что для писем с домена dmosk.ru и отправителя sender@dmosk2.ru отнимать 10 баллов за СПАМ. Такие письма начнут приходить без блокировки (при условии, что не будет отправлен явный СПАМ, который наберет очень много баллов).

После настройки перезапускаем amavis:

su - zimbra -c "zmamavisdctl stop && zmamavisdctl start"

Размер отправляемого сообщения

Задать максимальный размер сообщений можно командой:

su - zimbra -c 'zmprov modifyConfig zimbraMtaMaxMessageSize 31457280'

* в данном примере мы задаем максимальный размер сообщения 30 мб.

После перезапускаем postfix:

su - zimbra -c "postfix reload"

Транспортные правила

Предположим, что нам нужно перенаправлять письма на определенный домен через другой почтовый релей. В Postfix это делается с помощью правил transport_maps.

Смотрим текущие настройки zimbraMtaTransportMaps:

su - zimbra -c "zmprov gs zimbra.dmosk.ru zimbraMtaTransportMaps"

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

zimbraMtaTransportMaps: hash:/opt/zimbra/conf/transport_maps proxy:ldap:/opt/zimbra/conf/ldap-transport.cf

Если команда вернула пустой ответ, то значит настройка не назначена. Сделаем это командой:

su - zimbra -c "zmprov ms zimbra.dmosk.ru zimbraMtaTransportMaps 'lmdb:/opt/zimbra/conf/transport_maps proxy:ldap:/opt/zimbra/conf/ldap-transport.cf'"

* мы указали, что транспортные правила необходимо искать в lmdb-хэше файла /opt/zimbra/conf/transport_maps.

Нам интересен файл /opt/zimbra/conf/transport_maps — в нем хранятся правила пересылки. Откроем его на редактирование:

vi /opt/zimbra/conf/transport_maps

Добавим нужное нам правило, например:

dmosk3.local   smtp:[10.10.10.10]:25

* в данном примере мы указываем zimbra пересылать все письма на домен dmosk3.local через почтовый MTA 10.10.10.10.

Создаем карту transport_maps:

su - zimbra -c "postmap /opt/zimbra/conf/transport_maps"

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

su - zimbra -c "postfix reload"

Возможные проблемы

Рассмотрим некоторые проблемы, с которыми мы можем столкнуться при работе с Zimbra.

Служба zmconfigd не стартует

В консоли управления почтовым сервером мы можем увидеть ошибку запуска службы zmconfigd. При попытке запустить ее:

$ zmconfigdctl start

... мы получаем ошибку:

Starting zmconfigd...failed

Решение:

Устанавливаем пакет с nc-командами.

а) если на систему RPM (Red Hat / CentOS):

yum -y install nmap-ncat

б) если на систему deb (Debian / Ubuntu):

apt-get install netcat-openbsd

После пробуем запустить сервис (от пользователя zimbra):

$ zmconfigdctl start

Ошибка при просмотре очередей в веб-консоли

При переходе на страницу просмотра очередей система отображает ошибку:

system failure: exception occurred searching mail queue
Код ошибки: service.FAILURE Method: [unknown] Детали:soap:Receiver

Решение:

Есть два варианта решения проблемы.

1. Если для подключения к нашему серверу по SSH используется нестандартный порт (не 22), необходимо ввести команду:

su - zimbra -c "zmprov mcf zimbraRemoteManagementPort 2222"

* где 2222 — порт SSH, который используется для нашего сервера.

2. Переходим в каталог:

cd /opt/zimbra/data/tmp

Находим каталог <цифры>-active и удаляем его.

Файл zmstat.out большого размера

Файл /opt/zimbra/zmstat/zmstat.out становится очень большим. Если открыть его, то мы увидим много строк:

Use of uninitialized value $line in pattern match (m//) at /opt/zimbra/libexec/zmstat-io line 76.

Причина:

Ошибка в скрипте /opt/zimbra/libexec/zmstat-io.

Решение:

Открываем скрипт, в котором есть ошибка:

vi /opt/zimbra/libexec/zmstat-io

Переходим на неправильную строку - 1 (в нашем примере, 75). Мы должны увидеть:

while ($line !~ /^avg-cpu/ && $line !~ /^Device:/) {

Меняем на:

while ($line !~ /^avg-cpu/ && $line !~ /^Device/) {

* то есть, убираем : после Device.

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

su - zimbra -c "zmcontrol restart"

Не запускается служба Antivirus

В состоянии сервера мы видим, что служба Antivirus находится в незапущенном состоянии, а команда:

zmantivirusctl status

... показывает:

... not running

Причина: как правило, из-за необновленных баз антивирусной системы clam. Последний может не обновляться из-за блокировки российских IP-адресов.

Решение: нам нужно изменить настройку freshclam, чтобы обновления устанавливались из альтернативного источника.

Открываем файл:

vi /opt/zimbra/conf/freshclam.conf.in

Находим и комментируем все, что начинается с DatabaseMirror:

##DatabaseMirror ...
...
##DatabaseMirror ...

А также добавим:

PrivateMirror https://packages.microsoft.com/clamav/

Удаляем старую базу обновлений:

rm -f /opt/zimbra/data/clamav/db/freshclam.dat

Перезапускаем службу антивируса:

su - zimbra -c "zmantivirusctl restart"

Проверяем:

su - zimbra -c "zmantivirusctl status"

# Linux # Почта # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет