Руководство по зимбре

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

Используемые термины: Zimbra, Linux, SMTP, POP3, IMAP.

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

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

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

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

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

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

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

Какие выбрать дистрибутив для Linux и версию Zimbra
Подготовка сервера
    Время
    Безопасность
    Hosts
    Системная переменная для имени сервера
Установка Zimbra
Правильная настройка DNSCache
Базовая настройка zimbra
    Как добавить домен
    Как создать почтовый ящик
Описание записей, которые нужно создать в DNS
Проброс портов для запросов из Интернет
Настройка подписи DKIM
Тестовое письмо
Установка SSL-сертификата
    Получение
    Установка
    Продление
Настройки почтового клиента
Защита от СПАМа
Дополнительные настройки
    Работа с белым списком
    Максимальный размер сообщений
    Транспортные правила
Возможные ошибки

Выбор дистрибутива 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 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»

Skip to content

Page load link

Списком рассылки называется специальный адрес электронной почты. Вся почта, поступающая на него, перенаправляется на участников этого списка.

  • Для того, чтобы завести новый список рассылки напишите письмо на support@knc.ru или создайте заявку в подсистеме Техподдержка — Вам заведут список рассылки @knc.ru и проконсультируют по вопросам его использования.
  • После того, как список рассылки был создан и Вы стали владельцем этого списка, Вы можете добавить в него участников, которые будут получать почту, поступающую на этот почтовый адрес. Чтобы перейти к списку рассылки, просмотреть его участников и отредактировать его, войдите в «Контакты» в главном верхнем меню Zimbra и нажмите на пункт «Списки рассылки»:
  • Справа Вы увидите списки рассылки, владельцем или участником которых Вы уже являетесь, и их участников:
  • Для того, чтобы добавить новых участников в список рассылки, владельцем которого Вы являетесь, нажмите на кнопку «Редактировать»:
  • В появившемся окне Вы увидите участников данного списка рассылки. Чтобы удалить участника, кликните по красному крестику напротив него:
  • В этом же окне справа Вы можете добавить новых участников в список рассылки:
  • Для того, чтобы добавить внешнего пользователя, не имеющего корпоративный адрес @knc.ru, введите его адрес в окне, которое находится ниже и нажмите «Добавить»:
  • Список рассылки можно настроить. Для этого перейдите во вкладку «Свойства списка рассылки». После окончания редактирования списка рассылки не забудьте нажать на кнопку «Сохранить»:

Портфель — это внутреннее хранилище файлов в Zimbra. Портфелем удобно пользоваться тем, кто часто добавляет одни и те же файлы в свои письма. В своем портфеле можно создать несколько тематических папок (например, «Заявления», «Договоры»). Файлы можно добавлять в письмо непосредственно из портфеля, а не путём загрузки с компьютера. Кроме того, в портфеле можно создавать папки, доступные для просмотра или загрузки файлов другими пользователями.

Не рекомендуется хранить в портфеле файлы, нежелательные для просмотра третьими лицами.

  • Для того, чтобы создать новую папку в Портфеле нажмите на значок  и, в появившемся меню, выберите пункт «Новая папка»:

    В появившемся окне нужно ввести Имя папки и можно выбрать ее цвет:
  • Для того, чтобы загрузить файл в папку можно просто перетащить его с рабочего стола или нажать кнопку «Загрузить файл»:

    Размер загружаемых файлов не должен превышать 36 Мб.
  • Чтобы добавить файл из Портфеля в письмо, во время редактирования письма нажмите на значок  в пункте «Вложить» и выберите «Портфель»:

    В появившемся окне можно выбрать и прикрепить к письму нужный файл:
  • Для того, чтобы сделать папку общедоступной, нажмите на значок  справа от имени папки и выберите пункт «Общий доступ к папке»:

    В появившемся окне можно настроить доступ к этой папке, добавить электронные адреса тех, кому будет разрешен доступ, а также определить их роль. При вводе в поле «Электронный адрес» осуществляется глобальный поиск в Общей адресной книге ФИЦ КазНЦ РАН по имени, фамилии и т.п.:

    Каждому приглашенному пользователю будет отправлено уведомление:

    Если пользователь согласен принять профиль общего доступа — нужно нажать кнопку «Принять профиль общего доступа». При этом можно изменить Имя папки и ее цвет:

    В Портфеле пользователя появится новая папка:

Общая адресная книга ФИЦ КазНЦ РАН — это справочник по сотрудникам, подключенным к корпоративной почтовой системе ФИЦ КазНЦ РАН. В справочнике указаны ФИО, должность, подразделение, электронный адрес сотрудника. Чтобы всегда иметь доступ к Общей адресной книге ФИЦ КазНЦ РАН, рекомендуется добавить её в списки Контактов в Zimbra.

Для этого:

Оглавление

  1. Настройка Zimbra desktop клиента
  2. Настройка клиента The Bat!
  3. Настройка клиента Mozilla Thunderbird
  4. Настройка клиента Microsoft Outlook

Параметры учетной записи для любого почтового клиента корпоративной почты ФИЦ КазНЦ РАН:

  • Сервер Входящей/Исходящей почты: mail3.knc.ru
  • Протокол входящей почты: IMAP
  • Протокол исходящей почты: SMTP с проверкой подлинности
  • Тип шифрованного подключения: SSL
  • Порт IMAP-сервера: 993
  • Порт SMTP-сервера: 465

1. Настройка Zimbra desktop клиента

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

2. Настройка клиента The Bat!

3. Настройка клиента Mozilla Thunderbird

4. Настройка клиента Microsoft Outlook


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

Zimbra — это один из самых известных в мире почтовых серверов с открытым исходным кодом от компании VMware. Данный продукт, включающий в себя множество функций и возможностей, отлично подойдет как для крупных компаний, так и для небольших коммерческих фирм. В предлагаемой статье мы рассмотрим алгоритм установки и настройки почтового сервера Zimbra, используя бесплатную лицензию продукта (Open

Настраиваем CentOS

Прежде чем устанавливать Zimbra, настроим сам сервер под управлением CentOS. Подготовка включает в себя следующие этапы:

  1. Отключаем Selinux. Selinux в активном режиме не позволит корректно произвести установку Zimbra, поэтому его следует отключить. Для этого воспользуемся следующей командой:
    # sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

    После этого перезагружаем сервер командой:

  2. Настраиваем порты. Zimbra – это почтовый сервер поэтому для его корректной работы необходимо открыть ряд стандартных портов, используемых для отправки, загрузки, защиты и т.д. Помимо этого Zimbra, как панели управления требуется открыть ряд других, специфических портов для работы через веб-интерфейс.
    # firewall-cmd --permanent --add-port={25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443,7143,7993,7110,7995}/tcp
  3. Указываем имя сервера. Во избежание ошибки, которая может возникнуть в процессе установки Zimbra, очень важным пунктом становится внесение записи о сервере в локальный файл hosts. Для этого выполним следующее:
    1. Зададим FQDN-имя сервера:

    # hostnamectl set-hostname zimbra.mydomain.ru

    2. Пропишем ip-адрес а файле hosts:

    После подготовки сервера можем перейти к следующим этапам установки и настройки почтового сервера Zimbra.

Настраиваем DNS

Важной частью при настройке домена является указание DNS записей. Без их внесения корректный обмен почтой невозможен. Для Zimbra требуются следующие типы записей:

  1. MX. Данный тип записи, используя протокол SMTP, позволяет маршрутизацию электронной почты, определяет почтовый сервер для домена.
  2. A. Указывает на соответствие ip-адреса сервера и доменного имени. В нашем примере это сервер zimbra.mydomain.ru, который доступен по внешнему ip-адресу в сеть интернет.
    @ A (ip-адрес) 3600
    mail A (ip-адрес) 3600
    www A (ip-адрес) 3600
    
  3. PTR. Данная запись разрешает обратное преобразование ip-адреса в доменное имя. Она необходима для подтверждения отправителя почты.
    (ip-адрес) PTR zimbra.mydomain.ru
  4. SPF. Запись содержит в себе список доверенных серверов, которым разрешена отправка почты с данного доменного имени. Также здесь хранятся сведения о механизме обработки писем, которые отправляются с других серверов. Корректно настроенная SPF запись гарантирует снижение риска отправки спама третьими лицами от вашего домена.
    @ TXT v=spf1 ip4:(ip-адрес) -all
  5. DKIM. Еще один стандарт записи для защиты электронной почты, используемый для подтверждения владельца доменного имени. Сущность метода заключается в расшифровке кода письма специальной последовательностью, которая хранится в TXT-записи на DNS.
  6. DMARC. Запись формата TXT в зоне доменного имени, которая определяет политику обработки исходящих писем. Запись необходима для сохранности репутации домена.
  1. На странице загрузки официального сайта Zimbra копируем ссылку дистрибутива. Скопированной ссылкой загружаем дистрибутив:
    # wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-NETWORK-8.8.15_GA_3869.UBUNTU18_64.20190918004220.tgz
  2. После загрузки распаковываем архив с файлами для установки:
  3. Далее перейдем в директорию куда распаковали наш архив:
  4. Следующей командой запускаем процесс установки:
  5. Принимаем отображенное лицензионное соглашение:
    Do you agree with the terms of the software license agreement? [N] Y
    
  6. Подтверждаем использование репозитория от Zimbra:
    Use Zimbra's package repository [Y] Y
  7. Отмечаем необходимые компоненты:
    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
    
  8. Подтверждаем модификацию:
    The system will be modified.  Continue? [N] Y
  9. Ждем окончания процесса. В случае отсутствия записи MX для домена, появится предупреждение:
    It is suggested that the domain name have an MX record configured in DNS
  10. Даем отрицательный ответ на требование установщика изменить домен:
    Change domain name? [Yes] No
  11. Далее на экране отобразится меню с настройкой 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:                 [email protected]
    ******* +Admin Password                        UNSET                         
            +Anti-virus quarantine user:           [email protected]
            +Enable automated spam training:       yes                           
            +Spam training user:                   [email protected]
            +Non-spam(Ham) training user:          [email protected]
            +SMTP host:                            zimbra.mydomain.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.mydomain.ru:7780/aspell.php
            +Enable version update checks:         TRUE                          
            +Enable version update notifications:  TRUE                          
            +Version update notification email:    [email protected]
            +Version update source email:          [email protected]
            +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
    
  12. Теперь настроим обязательные настройки, отмеченные звездочками в пункте «7». В нашем случае это только задать пароль администратора, так как собираемся использовать бесплатную версию продукта. Вводим номер пункта для настройки – «7».
    Address unconfigured (**) items  (? - help) 7
  13. Задаем пароль. Затем покидаем меню:
    Select, or 'r' for previous menu [r] 4
    Select, or 'r' for previous menu [r] r
  14. Подтверждаем применение настроек:
    Select from menu, or press 'a' to apply config (? - help) a
  15. Даем согласие на сохранение конфигурационного файла:
    Save configuration data to a file? [Yes] Y
  16. Подтверждаем процесс модификации:
    The system will be modified - continue? [No] Y
  17. В течение некоторого времени установка будет завершена. Система направит запрос на отправку уведомлений. В данном случае можно отказаться:
    Notify Zimbra of your installation? [Yes] N
  18. Готово! Сервер установлен, но есть нюанс, необходимо заново задать пароль для пользователя root, так как установщик почтового сервера Zimbra изменит его в процессе выполнения установки. Задаем пароль:

Настраиваем Zimbra

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

  • Переходим в Настройки – Домены. Кликаем по значку шестеренки и выбираем пункт Создать.
  • В поле указываем имя домена.
  • Нажимаем Далее. Выбираем почтовый сервер. Готово.
  • Для изменения домена по умолчанию, перейдем по следующему пути: Настройка – Глобальные настройки. В поле «Домен по умолчанию» прописываем нужный нам домен. Сохраняем.
  • Создадим почтовый ящик. В панели администрирования переходим в Управление – Учетные записи. Кликаем по шестеренки – Создать.
  • Вводим данные: имя и фамилию пользователя.
  • Вводим данные: имя и фамилию пользователя. Вводим пароль пользователя. Если необходимо создать административную учетную запись, отмечаем это проставив галочку Глобальный администратор. Готово.

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

В данном разделе рассмотрим пример установки бесплатного SSL сертификата от Let`s Encrypt. Процедура установки разбита на несколько этапов:

Этап 1 – получаем сертификат.

  1. Сперва перейдем в каталог /opt:
  2. Для получения сертификата загрузим утилиту, введя следующую команду:
    git clone https://github.com/letsencrypt/letsencrypt
  3. Запускаем проверку подлинности домена:
    # /opt/letsencrypt/letsencrypt-auto certonly --standalone

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

    Enter email address (used for urgent renewal and security notices) (Enter 'c' to
    cancel): [email protected]
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    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
    
  4. Далее утилита запросит ввести имя сервера для получения сертификата. Вводим имя нашего сервера:
    Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
    to cancel): zimbra.mydomain.ru
  5. После проверки – получаем подобный ответ:
    ...
     - Congratulations! Your certificate and chain have been saved at:
       /etc/letsencrypt/live/zimbra.mydomain.ru/fullchain.pem
       Your key file has been saved at:
       ...
    

    Таким образом мы получили сертификат, все файлы которого теперь находятся в каталоге: /etc/letsencrypt/live/zimbra.mydomain.ru/.

Этап 2 — устанавливаем сертификат

  1. Полученный сертификат копируем в каталог Zimbra:
    # cp /etc/letsencrypt/live/zimbra.mydomain.ru/* /opt/zimbra/ssl/zimbra/commercial/
  2. Для скопированных файлов назначим нового владельца:
    # chown zimbra /opt/zimbra/ssl/zimbra/commercial/*
  3. Особенностью установки SSL для Zimbra является то, цепочка сертификатов не будет применена, если отсутствуют корневые от Let`s Encrypt, которые можно получить по следующим ссылкам:
    https://letsencrypt.org/certs/isrgrootx1.pem.txt
    https://letsencrypt.org/certs/letsencryptauthorityx3.pem.txt

    Теперь полученную последовательность необходимо прописать в файл chain.pem:

    # vi /opt/zimbra/ssl/zimbra/commercial/chain.pem 
  4. Далее логинемся в системе под пользователем Zimbra и перейдем в следующий каталог:
    # su - zimbra
    $ cd /opt/zimbra/ssl/zimbra/commercial
    
  5. Осуществляем проверку:
    $ zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem
  6. Получаем ответ:
    ** 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
  7. Меняем имя ключа и установим сертификат:
    $ mv privkey.pem commercial.key
    $ zmcertmgr deploycrt comm cert.pem chain.pem
    
  8. Для применения параметров перезагружаем Zimbra:
  9. Завершаем работу пользователя Zimbra, выходим:

Проверка

Для проверки работоспособности почтового сервера воспользуемся сервисом MXtoolbox. В разделе MX введем адрес нашего почтового сервера. В результате, если указаны все необходимые записи, система выдаст результат проверки.

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

В данной статье мы рассмотрели установку и настройку почтового сервера Zimbra. Рассмотрели подготовку сервера под управлением CentOS 7, пошагово продемонстрировали этапы загрузки, установки и настройки Zimbra. Также в статье привели пример установки бесплатного сертификата от Let`s Encrypt и осуществили проверку DNS записей. Есть вопросы? Задавайте!

Не нашли ответа на свой вопрос?

Zimbra Collaboration Suite (ZCS) — программный продукт для автоматизации совместной деятельности рабочих групп, аналог MS Exchange, включает в себя ряд бесплатных и открытых продуктов (Apache, MySQL, Postfix и др.), предоставляя сервисы почты, обмена быстрыми сообщениями (jabber), общие документы и календари и т.д.
Есть как платные так и бесплатные версии ZCS, мы будем устанавливать последнюю.

Содержание

  • 1 Подготовка ОС
    • 1.1 Удаление других почтовых программ
    • 1.2 Установка необходимых пакетов
    • 1.3 Настройка МХ записи и имени домена
  • 2 Установка Zimbra
  • 3 Настройка Zimbra
    • 3.1 Настройка почтового домена
    • 3.2 Перенос учётных записей
    • 3.3 Автоматизация переноса учёток
    • 3.4 Перенос писем
    • 3.5 Настройка алиасов домена
    • 3.6 Борьба со спамом
    • 3.7 Ограничение размера ящика и письма
    • 3.8 Маршрутизация почты (mail routing)
  • 4 Полезные команды
  • 5 Решение проблем (troubleshooting)
    • 5.1 Не отображается «Статистика сервера»
    • 5.2 Unable to commit database transaction
    • 5.3 Перенос сервера с 32 разрядной системы на 64 разрядную
  • 6 Полезные ссылки

Подготовка ОС

Так как Zimbrа несёт с собой много ПО, то её лучше устанавливать на отдельный сервер, или по крайней мере перед остальными приложениями.

Удаление других почтовых программ

на Debian удаляем все пакеты почтового сервера exim4

# apt-get remove exim4-base exim4-config

Установка необходимых пакетов

Устанавливаем необходимые дополнительные пакеты (удовлетворяем зависимости).

# apt-get install libstdc++5 sysstat

Настройка МХ записи и имени домена

— Убедимся, что настроен правильно MX на hostname сервера, куда устанавливается Zimbra

# dig mx mail.domain.ru

;; ANSWER SECTION:
mail.domain.ru.            3600    IN      MX      10 domain.ru.

;; ADDITIONAL SECTION:
domain.ru.                 1882    IN      A       94.94.94.94

— Добавляем в /etc/hosts соответствующую запись вида:

94.94.94.94 mail.domain.ru mail

Установка Zimbra

Распаковываем дистрибутив Zimbra и запускаем install.sh. Если каких-то пакетов не хватает, то установщик скажет об этом и их нужно будет доустановить.

Настройка Zimbra

Настройка почтового домена

После установки зайдём на web интерфейс сервера пользователем admin и перейдём по ссылке «Администратор домена», где настроим:

Конфигурация — Класс обслуживания — default

Конфигурация — Домены — mail.domain.ru

Перенос учётных записей

Перенесём (импортируем) учётные записи из предыдущей почтовой системы. У меня использовался Postfix под управлением PostfixAdmin.

Для такого случая есть специальный скрипт.

#!/usr/bin/php

// Postfixadmin (http://postfixadmin.sourceforge.net/) to Zimbra
// (www.zimbra.com) migration script
//
// History:
// Based on work from: Jaros Baw Czarniak
// Enhanced by NERvOus (www.nervous.it) on 1-12-2009

<?php
/////////////////////////////////////////////////////////

$user="postfix";
$pass="postfixadmin";
$db="postfix";
$table_mbox="mailbox";
$table_alias="alias";
$file="import.sh";

/////////////////////////////////////////////////////////
echo "This script generates a bash script called: $file
The script contains the commands to re-create the mboxes and
aliases on zimbra server.nn
";

$mydb = mysql_connect('localhost',$user, $pass) or die ('Error connecting to server');
mysql_select_db($db);
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");

$query = "SELECT username,password,name,maildir,quota,domain
                FROM $table_mbox";
$dane = mysql_query($query) or die ('Error during query for '.mysql_error());

echo "Writing to $file ...n";
$fh = fopen($file, "w");

fwrite($fh, "#!/bin/sh -xnn");

while ($row = mysql_fetch_array($dane, MYSQL_NUM))
{
    $data_mbox = "zmprov ca ".$row[0]." dsfs123hsdyfgbsdgfbsd displayName '".$row[2]."'n";
    $data_mbox .= "zmprov ma ".$row[0]." userPassword '{crypt}".$row[1]."'"."n";
    fwrite($fh, $data_mbox);
}
// skip domain aliases, aliases that forward to themselves and aliases
// for which a mbox exists
$query = "SELECT address, trim(trailing ',' from goto) AS dest
                FROM ".$table_alias."
                WHERE address NOT LIKE '@%'
                        AND address NOT IN (SELECT username FROM $table_mbox)
                HAVING address != dest";
$dane = mysql_query($query) or die ('Error during query for '.mysql_error());
while ($row = mysql_fetch_array($dane, MYSQL_NUM)) {
        // multiple dests
        unset($rawdest_r);
        unset($dest_r);
        $rawdest_r = preg_split('/,/', $row[1]);
        foreach ($rawdest_r as $dest) {
                if ($dest != $row[0]) {
                // don't forward to itself
                        $dest_r[] = $dest;
                }
        }
        if (count($dest_r) > 1) {
                // distribution list
                $data_list .= "zmprov cdl $row[0]n";
                foreach ($dest_r as $dest) {
                        $data_list .= "zmprov adlm $row[0] $destn";
                }
        }
        if (count($dest_r) == 1) {
                preg_match('/@(.*)$/', $row[0], $matches);
                $acct_domain = $matches[0];
                preg_match('/@(.*)$/', $dest_r[0], $matches);
                $alias_domain = $matches[0];
                if ($acct_domain == $alias_domain) {
                        // we are adding an alias, not a forward
                        // try to create alias both for a normal
                        // account and for a distribution list. One of the
                        // commands will fail, pity.
                        $data_alias .= "zmprov aaa $dest_r[0] $row[0]n";
                        $data_alias .= "zmprov adla $dest_r[0] $row[0]n";
                } else {
                        // we are adding a forward
                        $data_alias .= "zmprov ca $row[0] " . rand_str(11) . "n";
                        $data_alias .= "zmprov ma $row[0] zimbraprefmailforwardingaddress $dest_r[0]n";
                }
        }
}

// first create all distribution lists, last all aliases
// We cannot create aliases for distribution lists that do not
// exist yet
fwrite($fh, $data_list . $data_alias);
fclose($fh);


echo "Done.

Now copy $file to zimbra server and run:
# su - zimbra
$ sh ./$file
";


function rand_str($length = 32, $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890')
{
    // Length of character list
    $chars_length = (strlen($chars) - 1);

    // Start our string
    $string = $chars{rand(0, $chars_length)};

    // Generate random string
    for ($i = 1; $i < $length; $i = strlen($string))
    {
        // Grab a random character from our list
        $r = $chars{rand(0, $chars_length)};

        // Make sure the same two characters don't appear next to each
        // other
        if ($r != $string{$i - 1}) $string .=  $r;
    }

    // Return the string
    return $string;
}

Полученный с помощью этого скрипта файл import.sh выполняем на сервере Zimbra.

Скрипт я взял из вики справочника Zimbra. Он полезен, если мы не знаем пароли пользователей, если же мы их знаем, то можно подготовить файл и сделать импорт в Административной консоли управления: Адреса — Учётные записи — Групповая подготовка.

Автоматизация переноса учёток

Почтовая учётная запись создаётся двумя командами:

/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

Перенос писем

Перенесём все письма со старого сервера с помощью программы imapsync, способной синхронизировать почтовые ящики по протоколу IMAP. Эта задача довольно хорошо описана на вики, на основе неё я и написал весь этот пункт.
Для выполнения переноса нужно знать пароль старой учётной записи и новой, что не очень удобно для автоматизации процесса. Мы обойдём это требование, воспользовавшись своими администраторскими привилегиями.
Для определённсти решим, что у нас почтовый домен mydomain.ru (хотя можно синхронизировать ящики из разных доменов), старый сервер имеет ip адрес 10.0.0.211, а новый — 10.0.0.254 (можно использовать и DNS имена)
Краткий алгоритм такой (дальше будет подробней, так что, если не понятно, то не смущайтесь):

  1. Выберем любой почтовый ящик из переносимого домена, пароль которого мы знаем, скажем, user@mydomain.ru и создадим в его каталоге ссылки на все почтовые ящики (каталоги) домена.
  2. На новых ящиках придётся временно установить у всех один пароль.
  3. Синхронизировать ящики на новом сервере будем всегда с одним этим выбранным пользователем, но не весь его каталог, а лишь с тем подкаталогом, который является ссылкой на реальный ящик.
  4. После синхронизации всех ящиков восстановим пароли.
  • Сначала синхронизируем только тот ящик, пароль которого мы знаем и выбрали как основной для последующей синхронизации всех. Это нам заодно поможет выясненить точные настройки подключения к обоим IMAP серверам. создаём скрипт imap_sync_alone.sh:
#!/bin/bash
imapsync --nosyncacls --syncinternaldates 
--host1 10.0.0.211 --port1 143 --authmech1 PLAIN --user1 user@mydomain.ru --passfile1 /tmp/zimbra/user 
--host2 10.0.0.254 --ssl2 --port2 993 --authmech2 PLAIN --user2 user@mydomain.ru --passfile2 /tmp/zimbra/user INBOX/ 2> /tmp/zimbra/error.log > /tmp/zimbra/user.log

Этот скрипт можно запустить на любом из серверов. Проверяем журнал, проверяем, что письма перенесены. Теперь займёмся автоманизацией переноса остальных записей.

  • На старом сервере создаём ссылки с помощью скрипта create_links.sh:

create_links.sh

#!/bin/bash
#
# Script to create symlinks to all mail dirs
#
DATE=`date +%Y.%m.%d_%H:%M`
LOGFILE="create_links.log"
MAILDIR="/var/spool/vmail"
ADMINDIR="user@mydomain.ru"

echo "$DATE Start to create links" > $LOGFILE

# Begin 'for' loop, calling the list of user names
for USER in `ls $MAILDIR`
do
    ln -s $MAILDIR/$USER $MAILDIR/$ADMINDIR/.$USER
    echo Link created for $USER >> $LOGFILE
done

echo "" >> $LOGFILE
echo "Remove admin recursive link: $MAILDIR/$ADMINDIR/.$ADMINDIR" >> $LOGFILE
rm -f $MAILDIR/$ADMINDIR/.$ADMINDIR

echo "$DATE All done" >> $LOGFILE
  • Подготовим скрипт update_pass.sh для восстановления паролей. Для этого используем скрипт import.sh подготовленный во время переноса пользователей:
# cat ./import.sh | grep userPassword > update_pass.sh

проверьте, что в нём остались только записи вида:

zmprov ma user_name@mydomain.ru userPassword '{crypt}$1$18445fb2$8ZPUW9tFPzmT3v4j9SF5Y.'
  • Создадим временных каталог и сделаем его общедоступным:
# mkdir /tmp/zimbra
# chmod 777 /tmp/zimbra

В нём будем вести журнал выполнения синхронизации, сюда же положим дополнительные файлы

  • update_pass.sh — скрипт восстановления паролей
  • pass_adm — пароль пользователя user@mydomain.ru
  • pass_tmp — единый временный пароль для всех пользователей, я указал 1234567
  • userlist — список всех пользователей кому нужно синхронизировать ящик. Этот список можно получить из update_pass.sh, если знать как вытащить из строки подстроку между вторым и третим пробелом. С perl’ом я связываться не хотел, как сделать шелом не знаю, поэтому мне быстрее было вывести этот файл на экран командой cat затем скопировать в OpenOffice Calc разбив столбцы по пробелам и, взяв 3-й столбец, вставить его в редакторе mc в открытый файл userlist. На это ушла минута-две.
  • Создадим скрипт для синхронизации всех почтовых ящиков imap_sync_all.sh:

imap_sync_all.sh

#!/bin/bash
#
# Script to migrate all imap mailboxes using the single account
# 
DATE=`date +%Y.%m.%d_%H:%M`
TMPDIR="/tmp/zimbra"
LOGFILE=$TMPDIR/"imap_sync_all.log"
LOGERRORS=$TMPDIR/"imap_sync_errors.log"
PASSADM=$TMPDIR/pass_adm
PASSTMP=$TMPDIR/pass_tmp
PASS=`cat $PASSTMP`
echo "$DATE IMAPSync starting" > $LOGFILE
echo "$DATE IMAPSync starting" > $LOGERRORS

# Begin 'for' loop, calling the list of user names already collected
for USER in `cat $TMPDIR/userlist`
do
# Reset the Zimbra password temporarily:
zmprov setPassword $USER $PASS

# Then migrate:

echo "" >> $LOGFILE
echo "-------------------------------------------------" >> $LOGFILE
echo "--- syncronize account: $USER -------" >> $LOGFILE
echo "-------------------------------------------------" >> $LOGFILE
/usr/bin/imapsync --nosyncacls --syncinternaldates 
--host1 10.0.0.211 --port1 143 --authmech1 PLAIN --user1 user@mydomain.ru --passfile1 $PASSADM 
--host2 10.0.0.254 --ssl2 --port2 993 --authmech2 PLAIN --user2 $USER --passfile2 $PASSTMP 
--folderrec INBOX.$USER --regextrans2 's/(.*)/INBOX/' 2>> $LOGERRORS >> $LOGFILE

done

echo "" >> $LOGFILE
echo "$DATE Change the passwords back to the encrypted ones" >> $LOGFILE
$TMPDIR/update_pass.sh

echo "" >> $LOGFILE
echo "$DATE All done" >> $LOGFILE
echo "$DATE All done" >> $LOGERRORS

Учтите, что синхронизация идёт довольно долго. После завершения, загляните в журнал, всё ли прошло успешно, если да, то можно удалять каталог /tmp/zimbra

Подробней про миграцию на Zimbra можно узнать на официальной странице

Настройка алиасов домена

Настроим (если есть) алиасы домена. Если хотим сделать для существущего домена domain.com ссылку (alias) example.com, то выполняем:

$ zmprov createAliasDomain example.com domain.com zimbraMailCatchAllForwardingAddress @domain.com

Подробней можно узнать на официальной страничке

Борьба со спамом

Этому посвящена специальная статья на вики Zimbra (на англ.).

Чтобы добавить правило, редактируем файл /opt/zimbra/conf/salocal.cf.in, добавляя две строки:

body LOCAL_RULE    /порно/
score LOCAL_RULE   10.0

Проверено на кирилице в кодировке utf8. По-умолчанию файл доступен только для чтения, что можно исправить:

chmod u+w ./salocal.cf.in

После этого нужно перезагрузить zimbra:

$ zmcontrol restart

но может быть будет достаточно перезагрузить только модуль антиспама:

$ zmantispamctl restart

Ограничение размера ящика и письма

Zimbra в качестве MTA использует Postfix, где эти ограничения задаются переменными:

# устанавливаем ограничение на ящик в 100Мб и на письмо в 10Мб
mailbox_size_limit = 102400000
message_size_limit = 10240000

Конфигурационный файл /opt/zimbra/postfix/conf/main.cf генерируется при каждом запуске зимбры, поэтому исправлять его нет смысла. Редактируем файл /opt/zimbra/conf/zmmta.cf, но так как он доступен только для чтения, то сначала придётся сменить права:

$ chmod u+w ./zmmta.cf

Находим вышеуказанные переменные, присваиваем нужные значения, перезагружаем зимбру:

$ zmcontrol restart

Маршрутизация почты (mail routing)

Так как Zimbra использует Postfix как МТА, то маршрутизацию (перенаправление) почты настраиваем в нём. Создаём файл с описанием маршрутов /opt/zimbra/postfix/conf/transport-table:

mydomain.com     :[mail.otherdomain.com]
mydomain.ru      :[192.168.0.10]

В этой таблице мы перенаправляем всю почту для домена mydomain.com на другой адрес в Интернете mail.otherdomain.com, а почту для домена mydomain.ru передаём почтовому серверу 192.168.0.10 в локальной сети. При этом имя пользователя (адресата) не изменяется.

! Маршрутизация почты не затрагивает правила IP маршрутизации и меняет лишь домен назначения. Таким образом, после того как эти правила были применены дальнейшее разрешение DNS имён и отправка IP пакетов идут своим обычным чередом.
  • Подробнее про маршрутизацию почты в Zimbra см в официальной документации:
    • Настройка таблицы маршрутизации (mail routing) см. аналог в Postfix
    • ещё один вариант настройки таблицы маршрутизации, через управление доменами

Полезные команды

Все команды запускаются от имени пользователя 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

На оффициальной вики можно узнать подробней про команду Zmprov и примеры с ней.

Решение проблем (troubleshooting)

Не отображается «Статистика сервера»

Не отображается «Статистика сервера», при попытке обновить, выдаёт ошибку:

Message: system failure: Unable to read logger stats Error code: service.FAILURE Method: GetLoggerStatsRequest Details:soap:Receiver

Решение:нужно доустановить rsyslog и выполнить его настройку от рута:

# apt-get install rsyslog
# /opt/zimbra/bin/zmsyslogsetup

переключиться на пользователя zimbra и перезапустить:

# su - zimbra
$ zmcontrol stop
$ zmcontrol start

Unable to commit database transaction

Полное сообщение об ошибке в /opt/zimbra/log/mailbox.log может выглядить так (ip случайный):

FATAL [LmtpServer-21] [ip=193.192.191.190;] system - Unable to commit database transaction.  Forcing server to abort.

или так:

FATAL [LmtpServer-7] [name=user@domain.ru;mid=40;ip=193.192.191.190;] system - Unable to commit database transaction.  Forcing server to abort.

более подробное описание можно почитать в журнале mysql_error.log поискав по ключевому слову «error».

Решение: перезагрузить сервер. Ошибка исчезнет если была проблема в кэше. Если ошибка не исчезла, то нужно восстанавливать таблицу(ы), см. Forcing InnoDB Recovery

Перенос сервера с 32 разрядной системы на 64 разрядную

Подробный мануал есть на официальном сайте: http://wiki.zimbra.com/index.php?title=64_bit

Полезные ссылки

  • http://www.zimbra.com/products/product_editions.html — Сравнение возможностей разных редакций Zimbra.
  • http://www.zimbra.com/forums/ — официальный форум
  • http://wiki.zimbra.com/wiki/ — официальное вики
  • http://hidx.wordpress.com/2010/05/14/чёрные-и-белые-списки-в-zimbra/

Zimbra и Active Directory

  • скрипт для синхронизации учёток AD и почтовых ящиков Zimbra
  • how-to по настройке авторизации учёток Zimbra в AD
  • скрипты по созданию/удалению учёток в Zimbra в зависимости от изменений в AD

Понравилась статья? Поделить с друзьями:
  • Руководство по ремонту актроса
  • Строби фунгицид инструкция по применению для винограда срок ожидания
  • Инструкция по охране труда для санитарки мойщицы
  • Мастерсепт кожный антисептик инструкция по применению
  • Зарядное устройство charger для аккумуляторов инструкция по применению