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

Thank you for reading this post, don't forget to subscribe!

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

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

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

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

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

Zimbra име­ет две основ­ные вер­сии — плат­ную Network Edition и бес­плат­ную Open Source Edition (OSE). Срав­не­ние дан­ных вер­сий мож­но най­ти на офи­ци­аль­ном сай­те. В цен­тре загруз­ки 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 -A INPUT -p tcp --match multiport --dports 25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443,7143,7993,7110,7995 -j ACCEPT

netfilter-persistent save

в) Если исполь­зу­ем 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.test.ru

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

vi /etc/hosts

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

192.168.1.15      zimbra.test.ru zimbra

* где 192.168.1.15 — IP-адрес наше­го сер­ве­ра; zimbra — имя сер­ве­ра; test.ru — наш домен.

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

а) для CentOS (Red Hat):

yum install hostname

б) если Ubuntu (Debian):

apt-get install hostname

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

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

myhostname=zimbra.test.ru

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

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

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

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Настройка DNS

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

1. Запись MX.

Поз­во­ля­ет опре­де­лить поч­то­вый сер­вер для домена.

2. Запись A.

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

3. PTR.

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

4. SPF.

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

5. DKIM.

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

6. DMARC.

Опре­де­ля­ет для доме­на поли­ти­ку про­вер­ки писем. П

Настройка DKIM

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

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

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

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

 

 

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

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

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

* где test.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 test.ru"

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

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

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

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

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

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

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

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

Пере­хо­дим в ката­лог /opt:

cd /opt

Загру­жа­ем ути­ли­ту для полу­че­ния сертификата:

git clone https://github.com/letsencrypt/letsencrypt

Запус­ка­ем настрой­ку неболь­шо­го веб-сер­ве­ра для про­вер­ки под­лин­но­сти домена:

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

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

 

 

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

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

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


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

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

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

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

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

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

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

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

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

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

wget http://apps.identrust.com/roots/dstrootcax3.p7c

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

openssl pkcs7 -inform der -in dstrootcax3.p7c -print_certs -out /opt/zimbra/ssl/zimbra/commercial/dstrootcax3.pem

Смот­рим:

cat /opt/zimbra/ssl/zimbra/commercial/dstrootcax3.pem

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

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

 

 

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

Теперь зай­дем в систе­му под поль­зо­ва­те­лем 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.test.ru/* /opt/zimbra/ssl/zimbra/commercial/

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

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

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

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

cd /opt/zimbra/ssl/zimbra/commercial

Добав­ля­ем к цепоч­ке сер­ти­фи­ка­тов корневой:

echo '-----BEGIN CERTIFICATE-----' >> chain.pem

sed '1,/^-----BEGIN CERTIFICATE-----$/d' dstrootcax3.pem >> 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 — прин­цип настрой­ки дру­гих кли­ен­тов аналогичен.

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

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

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.test.ru zimbraMtaMyNetworks "127.0.0.0/8 192.168.1.15/32"'

Пере­за­пус­ка­ем 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)

}

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

   …
'test.ru'                           =>  -10.0,
'sender@test2.ru'                   =>  -10.0,
}

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

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

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

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

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

su - zimbra -c 'zmprov modifyConfig zimbraMtaMaxMessageSize 31457280'

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

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

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