🐹 CentOS 7: Установка и настройка почтового сервера Zimbra.

Содержание:

1. Введение.

1.1. Клиент-серверная архитектура.
1.2. Основные возможности сервера.
1.3. Основные возможности web-клиента.
1.4. Модули в составе.
1.5. Архитектура почтового сервера.
1.6. Комплектация и способ установки.

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

2.1. Как временно или навсегда отключить SELinux.
2.2. Настройка часового пояса и синхронизации времени.
2.3. Настройка брандмауэра и проброс портов.
2.4. DNS и имя сервера.
2.5. Системная переменная для имени сервера.

3. Загрузка и установка дистрибутива.
4. Zimbra DNSCache.
5. Настройка Zimbra после установки.
6. Настройка DNS.

6.1. Записи MX и A.
6.2. Запись PTR.
6.3. Запись SPF.
6.4. Запись DMARC.
6.5. Запись DKIM.
6.6. Записи об подтверждении владения доменным именем.
6.7. Сервер готов.

7. Отправка тестового письма.
8. SSL-сертификат.

8.1. Получение SSL-сертификата.
8.2. Установка сертификата.
8.3. Продление сертификата.

9. Настройка почтового клиента.
10. Защита от СПАМа.
11. Дополнительны настройки.

11.1. Добавление отправителей в белый список.
11.2. Размер отправляемого сообщения.

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

12.1. Служба zmconfigd не стартует.
12.2. Служба компонента MTA не стартует.
12.3. Нет доступа по HTTP.

13. Оригиналы источников информации.


На чем было собрано:

  1. VM on Proxmox Virtual Environment 6.2.1.
  2. CentOS 7 Linux x86_64 release 7.8.2003.
  3. Zimbra 9.0.0.
  4. Почтовый сервер находится за NAT.
  5. Аренда доменного имени beget.com.
  6. Доменное имя hamsterden.ru
  7. Доменное имя почтового сервера mail.hamsterden.ru.
  8. Host-name имя почтового сервера mail.hamsterden.ru.

1. Введение.

Zimbra Server — это бесплатный почтовый сервер с открытым кодом. Применяется более чем в 5000 компаниях и провайдерах, таких как NTT Communications, Comcast, Dell, Cadbury, Rackspace, Red Hat, VMware, H&R Block и Vodafone, 100 миллионами пользователями в 140 странах мира.

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

1.1. Клиент-серверная архитектура.

Серверная часть Zimbra Server написана на Java, является POP3/IMAP сервером, и интегрирует несколько Open Source продуктов:

  • Почтовый сервер — Postfix.
  • Серверы баз данных — MariaDB, MySQL.
  • LDAP сервер — OpenLDAP.
  • Сервер приложений — Jetty.
  • Web-сервер Apache и Nginx в качестве прокси.
  • Поисковой движок — Lucene.
  • Антивирус и антиспам — ClamAV и SpamAssassin.
  • Amavisd —интерфейсы между MTA и одним или более средствами проверки содержимого.
  • James/Sieve фильтрация, используемая для создания фильтров для электронной почты. Он раскрывает SOAP-интерфейс программирования приложений во всей его функциональности.

1.2. Основные возможности сервера.

Сервер Zimbra имеет встроенные возможности для:

  • Интеграции системы аутентификации пользователей с Active Directory.
  • Управления Глобальной Адресной Книгой (GAL).
  • Блокирования определенных вложений по расширению файла.
  • Масштабирования серверной инфраструктуры.
  • Проверки входящих сообщений на спам и вирусы.
  • Поддержки протоколов POP, IMAP, SMTP, CardDAV, iCal и CalDAV.
  • Фильтрации входящей почты с помощью встроенных модулей Postscreen, Amavisd, ClamAV, SpamAssassin и cbpolicyd.

1.3. Основные возможности web-клиента.

Для работы с почтовым сервером Zimbra пользователь может использоваться как встроенный web-клиент, поддерживаемый современными браузерами Chrome, Firefox, Edge Chromium, а также мобильные или десктопные IMAP-клиенты.

В web-клиенте доступны:

  • Получение и отправка электронной почты.
  • Добавление адресов в список контактов, а также их редактирование.
  • Создание, удаление и изменение событий в календаре.
  • Назначение совещаний и отправка приглашений сотрудникам.
  • Создание задач в ежедневнике.
  • Доступ к корзине с удаленными элементами.
  • Предварительный просмотр вложений.
  • Смена языка интерфейса, доступна русская локализация.
  • Предоставление общего доступа к почтовым папкам.
  • Предоставление права на отправку писем от имени почтового ящика.
  • Настройка автоответа.
  • Настройка почтовых фильтров для сортировки писем.
  • Настройка получения уведомления о доставке и прочтении сообщения.
  • Также сервер Zimbra поддерживает установку плагинов, которые могут добавить ряд функций как в серверную часть, так и в web-клиент Zimbra. Например, можно установить плагин, добавляющий в Zimbra шифрование писем с помощью OpenPGP.

1.4. Модули в составе.

В состав Zimbra входят:

Zimbra Core — включает библиотеки, утилиты и базовые конфигурационные файлы.

Zimbra Store (Zimbra сервер) — устанавливает компоненты для почтового сервера, включая Jetty, который является контейнером сервлетов, запускающим внутри себя программное обеспечение Zimbra. В Zimbra Collaboration Suite этот контейнер сервлетов называется mailboxd. Почтовый сервер включает в себя компоненты:

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

Message store — место, где находятся все электронные письма, включая тексты сообщений и любые файловые вложения. Сообщения хранятся в формате MIME.

Index store — индексные файлы для каждого почтового ящика. Индекс и поисковая технология обеспечиваются посредством Apache Lucene. Каждое сообщение автоматически индексируется, а каждый почтовый ящик имеет индексный файл, связанный с ним.

Zimbra LDAP — Службы каталогов LDAP обеспечивают централизованный репозиторий для информации о пользователях и устройствах, которые разрешены использовать в вашей сети. Центральный репозиторий, используемый для данных Zimbra LDAP, является сервером каталогов OpenLDAP. Zimbra Collaboration Suite использует OpenLDAP в качестве open source сервера каталога LDAP. Аутентификация пользователей обеспечивается посредством OpenLDAP. Каждый аккаунт на сервере Zimbra имеет уникальный идентификатор почтового ящика, который является основной точкой идентификации аккаунта.

Zimbra также поддерживает интеграцию с Сервером Microsoft Active Directory.

Zimbra MTAPostfix-open source агент передачи почты (MTA), который получает почту по протоколу SMTP и доставляет каждое сообщение в нужный почтовый ящик Zimbra сервера с помощью протокола локальной доставки сообщений (LMTP). Zimbra MTA также включает в себя антивирусный и антиспам-компоненты.

Zimbra-SNMP —отслеживает системные журналы, использование процессора и диска, а также другую информацию, генерирует сообщение об ошибке при остановке или запуске службы

Zimbra Logger — устанавливает инструменты для syslog агрегации, создания отчетов. Если вы не установите Logger, раздел статистики сервера консоли администрирования не будет отображаться.

Zimbra SpellAspell — программа проверки правописания с открытым исходным кодом, используемая web-клиентом Zimbra.

Zimbra Proxy и Zimbra Memcached — пакеты zimbra-прокси.

Zimbra System Directory Tree — основные каталоги, создаваемые пакетами установки Zimbra.

1.5. Архитектура почтового сервера.

1.6. Комплектация и способ установки.

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

После установки мы получим полноценный почтовый сервер:

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

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

Zimbra имеет две основные версии: платную — Network Edition и бесплатную — Open Source Edition (OSE).

Сравнение данных версий можно найти на официальном сайте.

В центре загрузки Zimbra мы также можем выбрать и скачать дистрибутив для платной или бесплатной версий.

В данной инструкции мы скачем и установим бесплатную — Open Source Edition (OSE).

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

2.1. Как временно или навсегда отключить SELinux.

Когда вы устанавливаете CentOS 7, функция SELinux включена по умолчанию, из-за этого некоторые приложения в вашей системе могут фактически не поддерживать этот механизм безопасности. Чтобы такие приложения функционировали нормально, вам необходимо отключить SELinux.

Ссылка: «CentOS 7: Как временно или навсегда отключить SELinux».

Конечно в интернете имеется много способов настройки и эксплуатации этой системы, но в данной инструкции я, пока что, настраивать SELinux не буду.

2.2. Настройка часового пояса и синхронизации времени.

Очень важно иметь правильно настроенную систему учета времени на сервере, потому что сервер — существо электромеханическое и все процессы в нём ориентируются на точно время. Например, резервное копирование, мониторинг и синхронизация с другими системами в сети.

Чтобы время на сервере CentOS 7 соответствовало вашему часовому поясу, его можно изменить вручную.

Ссылка: «CentOS 7: Настройка часового пояса. Утилита tzdata».

Для корректной работы сервера требуется правильно настроить его синхронизацию времени по Network Time Protocol.

Внимание! В CentOS 7 данная утилита уже идет в комплекте даже при минимальной комплектации установщика. Устанавливать отдельно в CentOS 7 утилиту chrony не надо. В CentOS 8 данная утилита не идет в комплекте и потребуется её установка и настройка.

Ссылка: «CentOS 7: Настройка синхронизация времени по Network Time Protocol. Утилита ntp».

2.3. Настройка брандмауэра и проброс портов.

Для нормальной работы Zimbra нужно открыть и пробросить за NAT много портов:

  • 25 — основной порт для обмена почтой по протоколу SMTP.
  • 80 — web-интерфейс для чтения почты (http).
  • 110POP3 для загрузки почты.
  • 143IMAP для работы с почтовым ящиком с помощью клиента.
  • 443SSL web-интерфейс для чтения почты (https).
  • 465 — безопасный SMTP для отправки почты с почтового клиента.
  • 587SMTP для отправки почты с почтового клиента (submission).
  • 993SSL IMAP для работы с почтовым ящиком с помощью клиента.
  • 995SSL POP3 для загрузки почты.
  • 5222 — для подключения к Zimbra по протоколу XMPP.
  • 5223 — для защищенного подключения к Zimbra по протоколу XMPP.
  • 7071 — для защищенного доступа к администраторской консоли.
  • 7110POP3 для загрузки почты.
  • 7143IMAP для работы с почтовым ящиком с помощью клиента.
  • 7993SSL IMAP для работы с почтовым ящиком с помощью клиента.
  • 7995SSL POP3 для загрузки почты.
  • 8443 SSL web-интерфейс для чтения почты (https).
  • 9071 — для защищенного подключения к администраторской консоли.

В зависимости от утилиты управления фаерволом, команды будут следующие.

2.3.1. Если используем firewalld:

# firewall-cmd --permanent --add-port={25,80,110,143,443,465,587,993,995,5222,5223,7025,7071,7110,7143,7993,7995,8443,9071}/tcp

# firewall-cmd --reload

Так же проверьте, запущен ли у вас postfix на сервере.

# systemctl status postfix

Если это так, то остановите и отключите postfix.

# systemctl stop postfix
# systemctl disable postfix

2.3.2. Если используем iptables:

Данный раздел зарезервирован для инструкции по настройке iptables.

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

2.4.1. Для корректной работы почтового сервера необходимо создать MX-записи для домена и поддомена.

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

Так же создадим DNS-записи в пограничном шлюзе имя локального почтового сервера и его локальный IP-адрес.

2.4.2. Устанавливаем пакет hostname.

# yum -y install hostname

Задаем FQDN-имя для сервера.

# hostnamectl set-hostname mail.hamsterden.ru

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

# cp /etc/hosts /etc/hosts.original

# mcedit /etc/hosts

И приводим к виду:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.32 mail.hamsterden.ru mail

где

  • 192.168.0.32 — локальный IP-адрес почтового сервера;
  • mail — имя почтового сервера;
  • hamsterden.ru — домен.

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

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

myhostname=mail.hamsterden.ru

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

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

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

Ссылка: zimbra.com.

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

# cd ~

# wget https://download.zextras.com/zcs-9.0.0_OSE_RHEL7_latest-zextras.tgz

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

# tar zxpvf zcs-9.0.0_OSE_RHEL7_latest-zextras.tgz

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

# cd zimbra-installer

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

# ./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] Yes

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

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

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

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

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

Notify Zimbra of your installation? [Yes] No

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

Configuration complete - press return to exit

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

Меняем его обратно:

# passwd root

4. Zimbra DNSCache.

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

nameserver 127.0.0.1

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

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

# myhostname=mail.hamsterden.ru

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

Где $myhostname — имя сервера, на котором установлена Zimbra (в данной конфигурации, mail.hamsterden.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 — имя нашего почтового сервера.

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

# su - zimbra -c "zmmtactl restart"

5. Настройка Zimbra после установки.

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

Если мы не меняли рабочий домен mail.hamsterden.ru в настройках во время установки сервера, то основной домен будет таким же, как имя сервера: mail.hamsterden.ru.

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

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

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

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

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

6. Настройка DNS.

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

Обычно это делается в настройках вашего доменного имени, в личном кабинете.

6.1. Записи MX и A.

Специальная запись в DNS для регистрации почтовых серверов. С ее помощью почтовый агент (MTA) при отправке электронных писем на определенный домен «понимает» на какой сервер выполнять пересылку. Позволяет определить почтовый сервер для домена.

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

6.2. Запись PTR.

Данная запись представляет из себя обратное разрешение IP-адреса в домен. С ее помощью подтверждается легитимность отправителя. То есть запись в DNS, позволяющая получить имя узла по его IP-адресу. Так как это действие противоположно стандартному запросу в DNS, его называют обратным. PTR расшифровывается как «pointer».

Добавить такую запись сложнее любой другой, так как ее должен зарегистрировать и прописать у себя Интернет-провайдер, который предоставил сам IP-адрес.

То есть, чтобы прописать PTR, необходимо написать обращение к своему поставщику Интернета. Эта особенность используется для дополнительной проверки почтовых серверов, а именно, почтовый сервер считается правильно настроенным, если для его имени узла есть соответствующая обратная запись.

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

И внести записи на месте аренды доменного имени beget.com.

Для hamsterden.ru:

211.228.146.46.in-addr.arpa IN PTR hamsterden.ru

Для mail.hamsterden.ru:

211.228.146.46.in-addr.arpa IN PTR mail.hamsterden.ru

6.3. Запись SPF.

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

Для hamsterden.ru:

v=spf1 +a +mx +a:mail.hamsterden.ru -all

Для mail.hamsterden.ru:

v=spf1 +a +mx -all

Стоит обратить внимание на следующий момент, принципиальный для массовых рассылок — мы ставим жесткий запрет на отправку сообщений с других серверов (-all, а не ~all), так как необходимо гарантировать, что наш домен не будет скомпрометирован другим сервером. Однако, если для отправки с вашего домена используется несколько почтовых серверов, не забудьте указать их все. В противном случае перестанет ходить почта.

В ней указано с каких почтовых серверов может быть отправлена почта для домена. С ее помощью можно снизить общее количество СПАМа, уменьшить вероятность того, что домен будет скомпрометирован и защититься от СПАМа, который использует поле обратного адреса. Расшифровывается как Sender Policy Framework или инфраструктура политики отправителя.

6.4. Запись DMARC.

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

Получатель сообщает данные об инфраструктуре проверки подлинности почты. Отправитель — о том, что делать, если сообщение не прошло проверку.

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

6.5. Запись DKIM.

Подтверждение владельца домена. Используется для уменьшения общего объема СПАМа и почтового фишинга. Расшифровывается как DomainKeys Identified Mail. Про DKIM важно знать, что она не защищает вас от СПАМа — она делает так, что ваши письма меньше попадают в СПАМ.

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

# yum -y install opendkim

Формирование ключей выполняется для каждого из доменов из командной строки.

Подключаемся к серверу по SSH и вводим команды:

# mkdir /domainkey

# touch /domainkey/domainkey.txt

# su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -a -d mail.hamsterden.ru" >> /domainkey/domainkey.txt

# cat /domainkey/domainkey.txt

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

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

В данном ответе нас интересуют записи A20F02D6-1E8D-11EB-BA10-94549771E51A._domainkey — это имя для TXT в поддомене mail.hamsterden.ru; "v=DKIM1; k=rsa; " "p=MIIB...z6" "2boV...AB" — содержимое записи, которую из-за ограничений знакоместа разорвало кавычками.

Внимание! Следует считать, что запись такая v=DKIM1; k=rsa; p=MIIB...z62boV...AB и вносить ее без кавычек.

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

Пример внесения записи на месте аренды доменного имени beget.com.

Где:

  • mdmail — это идентификатор A20F02D6-1E8D-11EB-BA10-94549771E51A, который нужно вставить до точки, вместо слова mdmail.

После выполняем проверку:

# opendkim-testkey -d mail.hamsterden.ru -s A20F02D6-1E8D-11EB-BA10-94549771E51A -x /opt/zimbra/conf/opendkim.conf

Где

  • mail.hamsterden.ru — наш домен;
  • A20F02D6-1E8D-11EB-BA10-94549771E51A — селектор, который мы видели в записи A20F02D6-1E8D-11EB-BA10-94549771E51A._domainkey.

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

# su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -q -d mail.hamsterden.ru"

Выйдет длинный ответ с тестом ключей и селекторов.

6.6. Записи об подтверждении владения доменным именем.

  • google.com — страница для регистрации сайта в Google;
  • webmaster.yandex.ru — форма для регистрации сайта в Яндексе;
  • webmaster.mail.ru — страница для регистрации сайта в Mail.Ru;
  • bing.com — страница для регистрации сайта в MicrosoftBing.

Зарегистрирую права на свой домен в Google:

Далее будет сгенерирована секретная TXT-запись для DNS, её нужно будет вставить в анкету DNS, в личном кабинете, где вы арендуете доменное имя.

Подождать некоторое время и нажать клавишу Подтвердить, чтобы сервисы Google могли пройти по адресу вашего доменного имени и убедиться, что вы вставили эту секретную фразу DNS своего доменного имени. Возможно прийдется подождать минут 15 или больше, чтобы все записи DNS обновились с учетом новой, добавленной вами, информации.

Как всё будет подтверждено, то вы увидите следующий шаг:

6.7. Сервер готов.

Итоговая сводная таблица всех записей:

В целом, такой сервер полнофункционален и полностью готов к эксплуатации.

Есть все необходимое, в том числе общие папки, автоответы, подписи и так далее.

В общем, все что требуется от классического почтового сервера.

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

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

В качестве логина используем созданный email и его пароль.

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

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

Если устранить ошибки или сделать всё сразу хорошо, то будет добрая картинка:

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

8. SSL-сертификат.

8.1. Получение SSL-сертификата.

При заходе на web-интерфейс мы будем получать ошибку, так как по умолчанию, создается самоподписанный сертификат.

Рассмотрим процесс установки бесплатного сертификата от Let’s Encrypt.

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

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

# cd /opt

# yum -y install git

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

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

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

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

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

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

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

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

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

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

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

# cp /etc/letsencrypt/live/mail.hamsterden.ru/* /opt/zimbra/ssl/zimbra/commercial/

Где mail.hamsterden.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:

# mcedit /opt/zimbra/ssl/zimbra/commercial/chain.pem

-----BEGIN CERTIFICATE-----
<не меняем>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----

Где мы добавили к файлу последовательность 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

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

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

# /opt/letsencrypt/letsencrypt-auto renew

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

# cp /etc/letsencrypt/live/mail.hamsterden.ru/* /opt/zimbra/ssl/zimbra/commercial/

Где mail.hamsterden.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"

Готово.

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

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

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

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

Еще, вполне успешно, работает автоматическая настройка почты. Просто вводим логин и пароль и программа сама ищет наш почтовый сервер в интернете и подключается к нему. Требуется только добавить сертификат сервера в доверительные исключения.

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

Для улучшения защиты от СПАМ-сообщений мы включим автоматическое обновление правил для 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"

Чтобы усилить защиту, разрешим проверку отправителя в черных списках:

# su - zimbra -c 'zmprov mcf zimbraMtaRestriction "reject_rbl_client zen.spamhaus.org"'

В данном примере мы подключаем rbl-список от zen.spamhaus.org.

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

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

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

Для этого открываем файл:

# mcedit /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"

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

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

# su - zimbra -c 'zmprov modifyConfig zimbraMtaMaxMessageSize 31457280'

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

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

# su - zimbra -c "postfix reload"

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

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

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

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

При попытке запустить ее:

# zmconfigdctl start

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

Starting zmconfigd...failed

Решение:

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

# yum -y install nmap-ncat

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

# zmconfigdctl start

12.2. Служба компонента MTA не стартует.

Я перед установкой Zimbra забыл остановить и отключить postfix, поэтому после запуска системы, компонент MTA не был запущен, о чем свидетельствовала ошибка в статусе сервера. Исправляется это легко.

Во-первых, я отключил postfix, во-вторых, перезапустил сервис.

Делается это так.

Заходим под пользователем zimbra в консоль:

# su - zimbra

Проверяем статус сервисов.

# zmcontrol status

Ответ:

mta Stopped
postfix is not running

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

# zmcontrol start

Ответ:

Starting mta...Done.

После этого служба mta заработала.

12.3. Что делать, если почта не проходит на другие почтовые адреса .

Бывает так, что вы арендуете IP-адрес, а у него оказывается богатая история в интернете.

  1. Проверяем наличие IP-адреса в черных списках. Существуют специальные списки с IP-адресами почтовых серверов, которые принадлежат спамерам. Проверить, не попал ли наш IP в этот список можно на различных сервисах, например, на сайтах 2ip.ru, dnsbl.info и syslab.ru. Если адрес в черном списке, необходимо зайти на сайт сервиса и написать письмо администратору с просьбой исключить IP из данного списка.
  2. Информация о домене. Домен адреса отправителя должен принадлежать соответствующей организации и быть подтвержденным. Данную информацию можно получить на любом Whois-сервисе, например, RU center или REG.RU.
  3. Адекватное доменное имя. Не используйте непонятных сгенерированных доменных имен, на подобие, dn.mx1095.host.x-0012-m.dmosk.ru.

13. Оригиналы источников информации.

  1. dmosk.ru «Установка и настройка Zimbra на Linux». от 2020.11.01
  2. dmosk.ru «Настройка почтового сервера для массовой рассылки сообщений». от 2020.09.29
  3. serveradmin.ru «Почтовый сервер Zimbra + расширение Zextras». от 2020.04.22
  4. habr.com «Установка сборки Zimbra 9 OSE от Zextras на CentOS 8».
  5. habr.com «Почтовая кухня #1: DNS».
  6. habr.com «Настройка DKIM/SPF/DMARC записей или защищаемся от спуфинга».
  7. blog.notisend.ru «Внесение DNS записей в панели beget.com».
  8. blog.bissquit.com «SPF-запись для почтового сервера».
  9. interface31.ru «Почтовый сервер для начинающих. Настраиваем DNS зону».
  10. interface31.ru «Почтовый сервер для начинающих. PTR и SPF записи как средство борьбы со спамом».
  11. mdex-nn.ru «PTR записи на DNS сервере».
  12. beget.com «Настройка DKIM».
  13. zimbra.org «Zimbra List Unsubscribe».
  14. svzcloud.ru «Zimbra Server».
  15. unisender.com «Как прописать DMARC: путеводитель с примерами».

Читайте также: