Установка и настройка почтового сервера Zimbra 10.1.0 на RockyLinux 9.5

Материал из Шпаргалка знаний
Версия от 14:28, 13 января 2025; Admin (обсуждение | вклад) (Новая страница: «Zimbra — это продукт Synacor с открытым исходным кодом, используемый для совместной работы, чата по электронной почте, календаря, чата, а также видеоконференций. После установки на сервер RockyLinux 9.5 (Minimal) (x86_64) 6Gb RAM, 4 CPU, 50Gb SSD, приступаем к подготовке сервера. ('''''ht...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

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

После установки на сервер RockyLinux 9.5 (Minimal) (x86_64) 6Gb RAM, 4 CPU, 50Gb SSD, приступаем к подготовке сервера. (https://rockylinux.org/ru-RU/download)

Проверить какая у вас версия ОС можно командой:

cat /etc/*release

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

Обновляем RockyLinux 9.5:

dnf update -y

Устанавливаем репозиторий EPEL и дополнительные пакеты для загрузки и распаковки:

dnf install epel-release wget nano mc unzip open-vm-tools dnf-utils net-tools diffutils curl tar vim screen git perl -y

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

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

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* данной командой мы установим часовой пояс по московскому времени.

Теперь устанавливаем и запускаем службу для автоматической синхронизации времени:

dnf install chrony -y
systemctl enable chronyd
systemctl start chronyd

Безопасность

Если на сервере используется SELinux (по умолчанию, на системах RPM), рекомендуется ее отключить.

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
setenforce 0

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

В конце установки ZIMBRA почему-то отключается файрволл, так что нужно его запустить и сделать автозапуском!!!


Управление firewall (если нужно):

В некоторых системах CentOS может не оказаться firewalld. Для его установки вводим:

yum install firewalld -y

Для автоматического запуска вводим:

systemctl enable firewalld

И для остановки или запуска службы:

systemctl stop firewalld
systemctl start firewalld

Посмотреть созданные правила:

firewall-cmd --list-all

Добавление правило для открытия 80-о порта:

firewall-cmd --permanent --add-port=80/tcp

Удалим правило для открытия 80-о порта:

firewall-cmd --permanent --remove-port=80/tcp

DNS и имя сервера

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

hostnamectl set-hostname mail.putyato.ru

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

nano /etc/hosts

И добавляем в конец файла:

10.7.7.7      mail.putyato.ru mail
  • где 10.7.7.7 — IP-адрес нашего сервера; mail — имя сервера; putyato.ru — наш домен.

Проверяем настройку сетевой карты. Открываем файл конфигурации и убеждаемся, что DNS1 — это DNS приписанный в нашем роутере, у нас он 10.7.7.1.

Смотрим, какой сетевой интерфейс:

ip a 
cd /etc/NetworkManager/system-connections/
ls
nano ens18.nmconnection
cd ~

Содержание, как показано ниже. Обращаем внимание на DNS1. Если нужно то исправляем. Должно выглядеть как то так.

[connection]
id=ens18
uuid=735d3397-d619-3509-88a3-63e50844f268
type=ethernet
autoconnect-priority=-999
interface-name=ens18
timestamp=1735440234

[ethernet]

[ipv4]
address1=10.7.7.7/16,10.1.0.25
dns=10.7.7.1;8.8.8.8;8.8.4.4;
method=manual

[ipv6]
addr-gen-mode=eui64
method=auto

[proxy]

Затем введите следующую команду, чтобы перезапустить сетевую службу.

systemctl restart NetworkManager

После перезапуска сетевой службы проверьте /etc/resolv.conf файл, чтобы убедиться, что DNS1 всегда является вашим собственным почтовым сервером.

cat /etc/resolv.conf

Должны получить вот такой ответ, если не получили то поправляем этот файл:

 
# Generated by NetworkManager
search putyato.ru
nameserver 10.7.7.1
nameserver 8.8.8.8
nameserver 8.8.4.4

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

Установите репозиторий EPEL и необходимые пакеты.

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
yum -y install vim wget screen git perl

Сначала мы загрузим и используем приведенный ниже скрипт для автоматической настройки /etc/hosts, имени хоста и локального DNS с помощью BIND и установки зависимостей, необходимых Zimbra.

screen -S install-zimbra
cd ~/
git clone https://github.com/jmutai/scripts.git

Перейдите к файлу.

cd scripts/zimbra/

Запустите автоматическую настройку Zimbra, установив необходимые пакеты.

./zimbra_install_prereqs_rhel.sh

Действуйте, как показано ниже:

Complete!
[INFO] : Configuring Firewall
success
success
usage: see firewall-cmd man page
firewall-cmd: error: unrecognized arguments: -add-port 8443/tcp
success

Input Zimbra Base Domain. E.g example.com : putyato.ru
Input Zimbra Mail Server hostname (first part of FQDN). E.g mail : mail
Please insert your IP Address : 10.7.7.7
....
[INFO] : Disable mail services if active
Input your timezone value, example Africa/Nairobi: Europe/Moscow

Настройка DNS-сервера привязки

Теперь запустите приведенный ниже сценарий, чтобы настроить DNS-сервер привязки, если у вас нет активного DNS-сервера.

./zimbra_bind_setup_rhel.sh

Действуйте, как показано ниже.

Press key enter

[INFO] : Configuring Firewall & Selinux
Redirecting to /bin/systemctl stop firewalld.service
Redirecting to /bin/systemctl stop iptables.service
Failed to stop iptables.service: Unit iptables.service not loaded.
Redirecting to /bin/systemctl stop ip6tables.service
Failed to stop ip6tables.service: Unit ip6tables.service not loaded.
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Failed to disable unit: Unit file iptables.service does not exist.
Failed to disable unit: Unit file ip6tables.service does not exist.
......

Complete!

Input Zimbra Base Domain. E.g example.com : putyato.ru
Input Zimbra Mail Server hostname (first part of FQDN). E.g mail: mail
Input Zimbra Server IP Address  : 10.7.7.7
........

После завершения проверьте, разрешается ли IP:

dig A mail.putyato.ru

Получаем:

; <<>> DiG 9.16.23-RH <<>> A mail.putyato.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47120
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 059c2f02f0726bd7010000006772710315db7d1d8bc09e69 (good)
;; QUESTION SECTION:
;mail.putyato.ru.               IN      A

;; ANSWER SECTION:
mail.putyato.ru.        86400   IN      A       10.7.7.7

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Dec 30 13:08:03 MSK 2024
;; MSG SIZE  rcvd: 88

Также убедитесь, что записи MX разрешаются:

dig MX putyato.ru

Получаем:

; <<>> DiG 9.16.23-RH <<>> MX putyato.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32976
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: fbf4481fa993c711010000006772724d0482acc7c01b91af (good)
;; QUESTION SECTION:
;putyato.ru.                    IN      MX

;; ANSWER SECTION:
putyato.ru.             86400   IN      MX      0 mail.putyato.ru.

;; ADDITIONAL SECTION:
mail.putyato.ru.        86400   IN      A       10.7.7.7

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Dec 30 13:13:33 MSK 2024
;; MSG SIZE  rcvd: 104

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

Скачиваем лицензионный дистрибутив ZIMBRA 10.1.0 с официального сайта. Распаковываем архив. (Можно скачать с ломаный дистрибутив: https://techfiles.online/zimbra/)


Если мы установим дистрибутив с сайта https://techfiles.online/zimbra/, то копировать сертификаты, вводить ключ, ставить блокировку в HOST файле не нужно. Пропустить данные пункты.


cd ~
wget https://files.zimbra.com/downloads/10.1.0_GA/zcs-NETWORK-10.1.0_GA_4688.RHEL9_64.20240911074203.tgz
tar -xzvf zcs-*.tgz

или

cd ~
wget "https://cloud.putyato.pro/index.php/s/TkX47w2ggTcZLMT/download/zcs-NETWORK-10.1.0_GA_4688.RHEL9_64.20240911074203.tgz" --no-check-certificate -O zcs-NETWORK-10.1.0_GA_4688.RHEL9_64.20240911074203.tgz
tar -xzvf zcs-*.tgz

Далее с помощью программы WinSCP (https://winscp.net/eng/download.php) копируем следующие файлы: zimbra-license-tools.jar, app.jar в корневую папку root. или:

cd ~
wget "https://cloud.putyato.pro/index.php/s/CHQ2FfTdka2Zx4x/download/zimbra-license-tools.jar" --no-check-certificate -O zimbra-license-tools.jar
wget "https://cloud.putyato.pro/index.php/s/CHQ2FfTdka2Zx4x/download/app.jar" --no-check-certificate -O app.jar

Данные взяты с сайта: https://softoroom.org/topic60461s30.html


Начинаем установку самой ZIMBRA.

cd ~
cd zcs-*/
./install.sh --skip-activation-check

Процесс установки будет происходить, как показано ниже.

[root@mail zcs-NETWORK-10.1.0_GA_4688.RHEL9_64.20240911074203]# ./install.sh --skip-activation-check
 
Operations logged to /tmp/install.log.j5mRhLRW
Checking for existing installation...
    zimbra-drive...NOT FOUND
    zimbra-imapd...NOT FOUND
    zimbra-patch...NOT FOUND
    zimbra-mta-patch...NOT FOUND
    zimbra-proxy-patch...NOT FOUND
    zimbra-license-tools...NOT FOUND
    zimbra-license-extension...NOT FOUND
    zimbra-network-store...NOT FOUND
    zimbra-network-modules-ng...NOT FOUND
    zimbra-chat...NOT FOUND
    zimbra-talk...NOT FOUND
    zimbra-ldap...NOT FOUND
    zimbra-logger...NOT FOUND
    zimbra-mta...NOT FOUND
    zimbra-dnscache...NOT FOUND
    zimbra-snmp...NOT FOUND
    zimbra-store...NOT FOUND
    zimbra-apache...NOT FOUND
    zimbra-spell...NOT FOUND
    zimbra-convertd...NOT FOUND
    zimbra-memcached...NOT FOUND
    zimbra-proxy...NOT FOUND
    zimbra-archiving...NOT FOUND
    zimbra-core...NOT FOUND
 
 
----------------------------------------------------------------------
PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE.
SYNACOR, INC. ("SYNACOR") WILL ONLY LICENSE THIS SOFTWARE TO YOU IF YOU
FIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY DOWNLOADING OR INSTALLING
THE SOFTWARE, OR USING THE PRODUCT, YOU ARE CONSENTING TO BE BOUND BY
THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS
AGREEMENT, THEN DO NOT DOWNLOAD, INSTALL OR USE THE PRODUCT.
 
License Terms for this Zimbra Collaboration Suite Software:
https://www.zimbra.com/license/zimbra-public-eula-2-6.html
----------------------------------------------------------------------

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

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] n
Install zimbra-snmp [Y] Y
Install zimbra-license-daemon [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-onlyoffice [Y] Y
Install p7zip-plugins from epel-release repository (without p7zip-plugins, some decoders for Amavis may not be available). [Y] Y

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

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

Начнется процесс установки и конфигурирования Zimbra. Ждем окончания процесса. Если для нашего домена еще нет записи MX, мы увидим сообщение:

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

Установщик предложит поменять домен — отвечаем Yes и меняем домен mail.putyato.ru на putyato.ru:

Change domain name? [Yes] Yes
Create domain: [mail.putyato.ru] putyato.ru

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

Main menu
   1) Common Configuration:
   2) zimbra-ldap:                             Enabled
   3) zimbra-logger:                           Enabled
   4) zimbra-mta:                              Enabled
   5) zimbra-snmp:                             Enabled
   6) zimbra-store:                            Enabled
        +Create Admin User:                    yes
        +Admin user to create:                 admin@putyato.ru
******* +Admin Password                        UNSET
        +Anti-virus quarantine user:           virus-quarantine.alrrusyk@putyato.ru
        +Enable automated spam training:       yes
        +Spam training user:                   spam.cwrvvil_mv@putyato.ru
        +Non-spam(Ham) training user:          ham.bnmoebu3g@putyato.ru
        +SMTP host:                            mail.putyato.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://mail.putyato.ru:7780/aspell.php
        +Enable version update checks:         TRUE
        +Enable version update notifications:  TRUE
        +Version update notification email:    admin@putyato.ru
        +Version update source email:          admin@putyato.ru
        +Install mailstore (service webapp):   yes
        +Install UI (zimbra,zimbraAdmin webapps): yes

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

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

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

Store configuration

   1) Status:                                  Enabled
   2) Create Admin User:                       yes
   3) Admin user to create:                    admin@putyato.ru
** 4) Admin Password                           UNSET
   5) Anti-virus quarantine user:              virus-quarantine.alrrusyk@putyato.ru
   6) Enable automated spam training:          yes
   7) Spam training user:                      spam.cwrvvil_mv@putyato.ru
   8) Non-spam(Ham) training user:             ham.bnmoebu3g@putyato.ru
   9) SMTP host:                               mail.putyato.ru
  10) Web server HTTP port:                    8080
  11) Web server HTTPS port:                   8443
  12) Web server mode:                         https
  13) IMAP server port:                        7143
  14) IMAP server SSL port:                    7993
  15) POP server port:                         7110
  16) POP server SSL port:                     7995
  17) Use spell check server:                  yes
  18) Spell server URL:                        http://mail.putyato.ru:7780/aspell.php
  19) Enable version update checks:            TRUE
  20) Enable version update notifications:     TRUE
  21) Version update notification email:       admin@putyato.ru
  22) Version update source email:             admin@putyato.ru
  23) Install mailstore (service webapp):      yes
  24) Install UI (zimbra,zimbraAdmin webapps): yes

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

Password for admin@putyato.ru (min 6 characters): [hRGHRCaX] [ЗДЕСЬ ПИШЕМ ПАРОЛЬ ДЛЯ АДМИНА]

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

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] Yes

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

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

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

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

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

Configuration complete - press return to exit

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

passwd root

2. Остановить Zimbra:

su - zimbra -c "zmlicensectl --service stop" && su - zimbra -c "zmcontrol stop"

3. Скопировать jar-файлы из архива:

cd ~
mv /opt/zimbra/lib/ext-common/zimbra-license-tools.jar /opt/zimbra/lib/ext-common/zimbra-license-tools.jar.orig && cp ./zimbra-license-tools.jar /opt/zimbra/lib/ext-common
mv /opt/zimbra/license/lib/app.jar /opt/zimbra/license/lib/app.jar.orig && cp ./app.jar /opt/zimbra/license/lib

ПОПРАВИТЬ РАЗРЕШЕНИЕ и ВЛАДЕЛЬЦА

4. Добавить записи в файл /etc/hosts:

nano /etc/hosts
127.0.0.1 zextras.tools
127.0.0.1 analytics.zextras.tools
127.0.0.1 notifications.zextras.com
127.0.0.1 updates.zextras.com
127.0.0.1 zimbra.com
127.0.0.1 license.zimbra.com

5. Запустить Zimbra:

su - zimbra -c "zmcontrol start" && su - zimbra -c "zmlicensectl --service start"

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 с помощью этих команд:

su - zimbra -c "zmcontrol status"
su - zimbra -c "zmcontrol -v"

1) Заходим https://10.7.7.7:7071 чтобы активировать через web интерфейс.

2) Теперь перейдите в «Настройка -> Глобальные настройки -> Лицензия» и активировать онлайн ключом: 4BCC9A0584944C1C844E77309

Перезапускаем сервер

reboot

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

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

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

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

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

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

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

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

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

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

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

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

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

Готово

Конфигурации после установки:

Вам необходимо выполнить некоторые настройки после установки, хотя это и не обязательно. Когда мы устанавливаем Zimbra, он создает системного пользователя Zimbra с отключенным паролем. На самом деле, он использует ключи ssh для подключения. Поэтому нам нужно обновить ключи ssh следующим образом.

[root@mail ~]# sudo -u zimbra -i
[zimbra@mail ~]$ zmupdateauthkeys

Updating keys for mail.putyato.ru
Fetching key for mail.putyato.ru
Updating keys for mail.putyato.ru
Updating /opt/zimbra/.ssh/authorized_keys

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

Если вы работаете как выход пользователя Zimbra (выполните команду exit) , переключитесь на пользователя root и выполните следующую команду.

[root@mail ~]# /opt/zimbra/libexec/zmsyslogsetup
updateSyslog: Updating /etc/rsyslog.conf...done.

Желательно включить автоматическую проверку вложений электронной почты антивирусом ClamAV . Поэтому выполните следующую команду.

[root@mail ~]# su - zimbra
[zimbra@mail ~]$ zmprov mcf zimbraAttachmentsScanURL clam://localhost:3310/
[zimbra@mail ~]$ zmprov mcf zimbraAttachmentsScanEnabled TRUE

Почтовый сервер Zimbra и антивирус ClamAV (после блокировки из России)⁠⁠

Наверняка у многих сисадминов из РФ всплыла проблема с отказом антивируса ClamAV работающим в связке с почтовым сервером Zimbra. Набросал краткий мануал. Так как Clamav принадлежит по факту корпорации Cisco, то достучаться из Россия уже просто не получится (по состоянию на 16.03.2022) Будем использовать tor-прокси (в связке TOR+Privoxy) . В моем случае все крутится в отдельном крошечном lxc ( вы можете вынести на отдельный vds вне корп сети, как угодно. Но самом почтовике делать явно не стоит) Вносим изменения в:

nano /opt/zimbra/conf/freshclam.conf.in

Необходимо в раскомментировать и поправить : HTTPProxyServer **.**.**.** # Адрес прокси-сервера HTTPProxyPort 8446 # порт прокси-сервера (стандартный 8118)

Я Установил:

HTTPProxyServer 66.76.140.239
HTTPProxyPort 39593

Под zimbra делаем полный рестарт антивируса :

su zimbra
zmantivirusctl restart

Проверяем:

$ zmantivirusctl status

antivirus is running

Настройка DNS

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

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

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

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

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

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

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

Зона
Хост Тип Значение
* A 67.248.99.132
@ A 67.248.99.132
www A 67.248.99.132
@ MX 10 mail
mail A 67.248.99.132
@ TXT v=spf1 a mx -all
3EF6B3C0-2E8A-11CD-A4E2-B3DCE640B747._domainkey TXT v=DKIM1;k=rsa;

p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMI... 6Kcp7+JglnrttF5p6Pz8GUIApECGx2htTle...

_domainkey TXT 0=~

Проброс портов на роутере

Если наш сервер находится во внутренней сети, необходимо настроить проброс портов. В двух словах, это настройка на сетевом устройстве, которое смотрит в Интернет, которая позволит запросы на определенный порт передать на наш почтовый сервер. Требуется пробросить следующие порты: 80(HTTP), 443(HTTPS), 993(IMAP/S), 25(SMTP), 5222(XMPP), 7025(LMTP)

Настройка DKIM

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

su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -a -d putyato.ru"
  • данная команда создаст последовательности ключей для домена putyato.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 putyato.ru

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

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

opendkim-testkey -d putyato.ru -s 5D8C3E02-4EFA-11EA-872A-D9A5B4628C49 -x /opt/zimbra/conf/opendkim.conf
  • где putyato.ru — наш домен; 5D8C3E02-4EFA-11EA-872A-D9A5B4628C49 — селектор, который мы видели в записи 5D8C3E02-4EFA-11EA-872A-D9A5B4628C49._domainkey.
  • если при вводе команды мы получим ошибку «Command 'opendkim-testkey' not found», необходимо установить opendkim-tools командой yum install opendkim-tools.

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

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

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

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

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

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

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

Получение сертификата Let’s Encrypt.

Установка Certbot.

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

dnf install certbot python3-certbot-nginx

После установки клиента certbot проверьте установленную версию программного обеспечения Let's Encrypt, выполнив следующую команду:

certbot --version

Процесс получения бесплатного сертификата SSL/TLS для Nginx будет выполняться вручную с помощью автономного плагина Let's Encrypt.

Для этого метода требуется, чтобы порт 80 был свободен в то время, пока клиент Let's Encrypt проверяет личность сервера и генерирует сертификаты.

Итак, если Nginx уже запущен, остановите демон с помощью следующей команды и запустите утилиту ss , чтобы убедиться, что порт 80 больше не используется в сетевом стеке.


1. Теперь пришло время получить бесплатный сертификат SSL от Let's Encrypt , выполнив команду:

certbot certonly --standalone

После ввода команды мы должны получить вывод с просьбой указать e-mail, где указываем свой почтовый ящик и нажимаем Enter:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): admin@putyato.ru

2. После ввода e-mail нам предлагается ознакомиться и подтвердить лицензионное соглашение, нажав «Y»:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

3. Снова видим запрос на публикацию введенного e-mail, который отклоняем клавишей «N» и видимо сообщение «Аккаунт зарегистрирован»:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, 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: N
Account registered.

4. На этом шаге Certbot исследует конфигурационный файл и директорию веб-сервера и должен найти домен сайта. Если не найдет, то попросит ввести домен:

Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter 'c' to cancel): mail.putyato.ru

и получаем ответ, где говорится, что сертификат развернут и запросы на 80 порт (http) перенаправляются на 443 (https). Может открыть страницу сайта в браузере и убедиться, что адресная строка с https://.

Requesting a certificate for mail.putyato.ru

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mail.putyato.ru/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/mail.putyato.ru/privkey.pem
This certificate expires on 2025-04-02.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

5. Наконец, если все прошло как надо, на вашем bash-терминале отобразится поздравительное информационное сообщение. Сообщение также будет отображаться, когда срок действия сертификата истечет.

This certificate expires on 2025-04-02.

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

certbot renew --dry-run

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

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

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

cp /etc/letsencrypt/live/mail.putyato.ru/* /opt/zimbra/ssl/zimbra/commercial/
  • где mail.putyato.ru — домен, для которого мы получали сертификат.

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

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

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

1. https://letsencrypt.org/certs/isrgrootx1.pem.txt. или https://cloud.putyato.pro/index.php/s/Nq9RzgyCE593zsr/download/isrgrootx1.pem.txt

2. https://letsencrypt.org/certs/letsencryptauthorityx3.pem.txt. или https://cloud.putyato.pro/index.php/s/wnCdj6eFAwr9wTT/download/letsencryptauthorityx3.pem.txt

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

nano /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
$ exit

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

На роутере напрямую пробросить 80 и 443 порт на виртуальную машину с ZIMBRA, проброс через прокси не работает. Отключить проверку SSL сертификата:

su - zimbra -c "zmlocalconfig -e ldap_starttls_supported=0"
su - zimbra -c "zmcontrol restart"

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

certbot certonly --standalone

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

cp /etc/letsencrypt/live/mail.putyato.ru/* /opt/zimbra/ssl/zimbra/commercial/
  • где mail.putyato.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

или

wget "https://cloud.putyato.pro/index.php/s/Nq9RzgyCE593zsr/download/isrgrootx1.pem.txt" --no-check-certificate -O isrgrootx1.pem.txt
wget "https://cloud.putyato.pro/index.php/s/wnCdj6eFAwr9wTT/download/letsencryptauthorityx3.pem.txt" --no-check-certificate -O 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"

Включаем проверку SSL сертификата:

su - zimbra -c "zmlocalconfig -e ldap_starttls_supported=1"

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

su - zimbra -c "zmcontrol restart"

Готово.


Если почта организована через прокси, то нужно полученные два сертификата скопировать в папку на прокси виртуальной машины:

Почтовая виртуалка:

/opt/zimbra/ssl/zimbra/commercial

Берем два файла: fullchain.pem; commercial.key

И копируем их в папку (/etc/letsencrypt/live/mail.putyato.ru/) на прокси виртуальной машины.

Восстанавливаем проброс портов 443 и 80 на роутере, на прокси виртуалку.

И все готово!

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

Приведем пример настройки почтового клиента. Подключимся к нашему серверу по 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 mail.putyato.ru zimbraMtaMyNetworks "127.0.0.0/8 10.7.7.7/32"'
  • где 10.7.7.7 — IP-адрес нашего почтового сервера.

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

su - zimbra -c 'postfix reload'

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

su - zimbra -c 'postconf mynetworks'

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

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

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

nano /opt/zimbra/conf/amavisd.conf.in

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

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

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

   ...
   'putyato.ru'                           =>  -10.0,
   'sender@putyato2.ru'                   =>  -10.0,
}
  • таким образом мы сказали, что для писем с домена putyato.ru и отправителя sender@putyato2.ru отнимать 10 баллов за СПАМ. Такие письма начнут приходить без блокировки (при условии, что не будет отправлен явный СПАМ, который наберет очень много баллов).

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

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

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

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

su - zimbra -c 'zmprov modifyConfig zimbraMtaMaxMessageSize 31457280'
  • в данном примере мы задаем максимальный размер сообщения 30 мб.

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

su - zimbra -c "postfix reload"

Сделать пользователя админом

su zimbra
zmprov ma pavel@putyato.ru zimbraIsAdminAccount TRUE

Служебные сообщения

  • кому приходят все служебные сообщения
zmlocalconfig -e smtp_destination=admin@putyato.ru

Отключение redolog

zmprov mcf zimbraRedoLogEnabled FALSE

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

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

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

$ zmconfigdctl start

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

Starting zmconfigd...failed

Решение:

yum -y install nmap-ncat

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

$ zmconfigdctl start

Файл 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.

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

nano /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"

Отключение и включение проверки SSL сертификата.

Отключить проверку:

su - zimbra -c "zmlocalconfig -e ldap_starttls_supported=0"

Включить проверку:

su - zimbra -c "zmlocalconfig -e ldap_starttls_supported=1"


Получение писем с переполнением диска.

Когда у вас установлен Snap на экземпляре Zimbra (при установке Certbot), вы можете получать массу электронных писем от инструментов мониторинга Zimbra с предупреждениями, в которых говорится:

Feb 14 19:40:01 mail zimbramon[4751]: 4751:crit: Disk warning: mail.ttc-service.ru: /var/lib/snapd/snap/core/14447 on device /dev/loop0 at 100%

Это нормально, так как все /dev/loopX доступны только для чтения и автоматически создаются Snap. Вы можете увидеть их, выполнив df -h :

[root@mail ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                      1.9G     0  1.9G   0% /dev
tmpfs                         1.9G     0  1.9G   0% /dev/shm
tmpfs                         1.9G  215M  1.7G  12% /run
tmpfs                         1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos_mail-root   96G   22G   75G  23% /
/dev/sda1                    1014M  193M  822M  19% /boot
tmpfs                         379M     0  379M   0% /run/user/0
/dev/loop1                     62M   62M     0 100% /var/lib/snapd/snap/core20/904
/dev/loop5                     50M   50M     0 100% /var/lib/snapd/snap/certbot/952
/dev/loop2                     99M   99M     0 100% /var/lib/snapd/snap/core/10823
/dev/loop0                    100M  100M     0 100% /var/lib/snapd/snap/core/10859
/dev/loop4                     50M   50M     0 100% /var/lib/snapd/snap/certbot/1042

Вы можете исключить эти устройства из мониторинга Zimbra, выполнив zmlocalconfig -e zmstat_df_excludes='/dev/loop0:/dev/loop1:/dev/loop2:/dev/loop3:/dev/loop4:/dev/loop5:/dev /loopX' как пользователь Zimbra:

su - zimbra
zmlocalconfig -e zmstat_df_excludes=’/dev/loop0:/dev/loop1:/dev/loop2:/dev/loop3:/dev/loop4:/dev/loop5’
zmstatctl restart

That’s all, these devices won’t bother you no more.

Как удалить DNSCACHE из сервисов Zimbra.

su - zimbra
zmcontrol status
zmprov ms `zmhostname` -zimbraServiceEnabled dnscache
zmprov ms `zmhostname` -zimbraServiceInstalled dnscache
zmcontrol status
exit