Почтовая система RuPost. Установка и настройка

Кому и зачем это читать

Статья адресована администраторам почтовых систем, задумывающимся о замене существующей или внедрении новой почтовой системы. Почему именно RuPost? Потому, что про CommuniGate Pro я уже писал, а другие почтовые системы ещё ждут своего часа. В этой статье опишу решение RuPost в целом, расскажу про установку и настройку Enterprise редакции, как наиболее интересной и функциональной.

С вашей стороны потребуется знание и понимание базовых основ работы сети, почтовых протоколов, DNS, служб каталогов и Linux систем. Не пугайтесь, глубокое погружение не потребуется, я постараюсь объяснять доступно. Статья описывает RuPost версии 2.5.0, актуальной на момент написания.

Поехали.

Устройство RuPost

Версии

RuPost существует в двух вариантах: Standard и Enterprise. В стандартной редакции, как несложно предположить, некоторые функции урезаны. Если кратко, в стандартной редакции система устанавливается на одном сервере, данные почтовых ящиков хранятся на этом же сервере, как и конфигурация самого сервера, кластерная реализация не поддерживается, можно использовать только одну службу каталогов и нет настраиваемых шаблонов конфигураций. Все эти ограничения отсутствуют в Enterpise редакции и ещё раз напомню, что я рассказываю именно про Enterprise редакцию RuPost.

Внешние службы

В отличие от многих других отечественных почтовых решений, RuPost не ведёт свою базу пользователей, не отвечает за их аутентификацию и хранение атрибутов и потому зависит от внешней службы каталогов. В таковой может выступать Microsoft Active Directory, ALD Pro и FreeIPA, а также их смесь в произвольных пропорциях. Также RuPost, как и прочие почтовые системы, полагается на внешний DNS. Устанавливается RuPost на Astra Linux Special Edition (ALSE) 1.7 как на физическом хосте, так и на виртуальной машине.

Архитектура

Общая архитектура представлена на рис. 1, который я позволил себе вырезать из более подробного рисунка в документации к RuPost, доступной на сайте вендора.

Основные компоненты системы:

  1. Кластер из нескольких узлов RuPost, который отвечает за управление и администрирование системы, клиентские подключения, транспортные функции. Это ядро системы, связывающее всё воедино;

  2. Внешняя служба каталогов;

  3. База данных PostgreSQL;

  4. Хранилище NFS;

  5. Служба кеширования Memcached.

Узлы кластера RuPost принимают почту от других почтовых систем и отправляют её как к ним же, так и ко внутренним получателям. Внешняя служба каталогов используется для хранения свойств пользователей и их аутентификации. База данных PostgreSQL хранит настроенные конфигурации серверов кластера, адресные книги, списки рассылки и прочую служебную информацию. В неё же складывается часть журналов работы. Непосредственно папки и письма почтовых ящиков укладываются на внешнее NFS, на нём же хранятся почтовые очереди, индексы, архивы и удалённые данные пользователей, доступные для восстановления администратором. Memcached служит для увеличения быстродействия доступа к календарям, контактам и веб-клиенту.

Далее опишу установку и настройку RuPost Enterprise на тестовом стенде. Вы можете просто это прочитать, а можете повторить и модифицировать в своей инфраструктуре. Впрочем, можете и не читать, и не повторять.

Ограничения

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

  • Работа почтовой системы в рассматриваемом примере настраивается в закрытом контуре, без возможности отправки и получения почты в интернет. Это связано с особенностями настройки нашего тестового стенда.

Инфраструктура тестового стенда

Компонент

FQDN

IP

Почтовый домен

doh4.site

Имя почтового сервиса

mail.doh4.site

CNAME на rpcomm.doh4.site

Узел кластера RuPost

rp2501.doh4.site

rpcomm.doh4.site

10.10.111.33

Узел кластера RuPost

rp2502.doh4.site

rpcomm.doh4.site

10.10.111.34

Хост PostgreSQL совмещённый с Memcached и NFS

rp25sql.doh4.site

10.10.111.35

Контроллер домена ALD Pro

dc01.astra.lan

10.10.120.10

Контроллер домена AD, DNS

dc01.laex.local

10.10.111.10

Установка

Начнём с подготовки вспомогательных систем, а затем перейдём к самому почтовому сервису. В целях упрощения стенда совместим компоненты PostgreSQL, Memcached и NFS на одном сервере с операционной системой Astra 1.7.4 Orel. В реальной эксплуатации для каждого из этих компонентов рекомендую выделить свой физический или виртуальный сервер.

Установка и настройка вспомогательных систем

DNS

Нюансы зависят от реализации DNS сервиса, я использовал существующий Microsoft DNS.

  • Создать A-записи узлов кластера;

  • Создать A-записи общего имени, например mail.doh4.site, указывающую на каждый из узлов кластера;

  • Создать MX запись, указывающую на общее имя;

  • CNAME autoconfig и autodiscover, указывающие на общее имя;

  • Записи SRV, указывающие на общее имя;

  • Создать SPF запись, но внутри стенда нам это не обязательно.

Например, у меня для DNS зоны doh4.site это выглядит так:

Add-DnsServerResourceRecordA -Name "rp2501" -IPv4Address "10.10.111.33" -ZoneName "doh4.site"

Add-DnsServerResourceRecordA -Name "rp2502" -IPv4Address "10.10.111.34" -ZoneName "doh4.site"

Add-DnsServerResourceRecordA -Name "mail" -IPv4Address "10.10.111.33" -ZoneName "doh4.site"

Add-DnsServerResourceRecordA -Name "mail" -IPv4Address "10.10.111.34" -ZoneName "doh4.site"

Add-DnsServerResourceRecordMX -Name "." -MailExchange "mail.doh4.site" -ZoneName "doh4.site" -Preference 10

Add-DnsServerResourceRecordCName -Name "autoconfig" -HostNameAlias "mail.doh4.site" -ZoneName "doh4.site"

Add-DnsServerResourceRecordCName -Name "autodiscover" -HostNameAlias "mail.doh4.site" -ZoneName "doh4.site"

Add-DnsServerResourceRecord -Srv -Name "_caldavs._tcp" -DomainName "mail.doh4.site" -ZoneName "doh4.site" -Priority 1 -Weight 0 -Port 443

Add-DnsServerResourceRecord -Srv -Name "_carddavs._tcp" -DomainName "mail.doh4.site" -ZoneName "doh4.site" -Priority 1 -Weight 0 -Port 443

Add-DnsServerResourceRecordA -Name "rp25sql" -IPv4Address "10.10.111.35" -ZoneName "doh4.site"

Служба каталогов

Раз уж мы переходим к отечественной почте, то и службу каталогов используем отечественной разработки — ALD Pro. Для работы с RuPost в ALD Pro нужно создать служебную учётную запись, например ldapbind. Для этого нам нужно воспользоваться командной строкой на контроллере домена ALD Pro с правами доменного администратора.

Посмотрим, есть ли учётные записи RuPost в службе каталогов:

python3 /opt/rbta/ad/mgmtportal/api/core/manage.py rupostadmin find

Если не найдено ни одной УЗ администратора RuPost, создадим новую с именем ldapbind и паролем 12345678:

python3 /opt/rbta/ad/mgmtportal/api/core/manage.py rupostadmin add --uid ldapbind --password 12345678

PostgreSQL, Memcached и NFS

Все три компонента устанавливаем на одной ВМ rp25sql.doh4.site

1.       Установим PostgreSQL

sudo apt-get install -y postgresql-11 postgresql-client-11

2.       Создадим базы для работы RuPost

a.       Перейдём в контекст пользователя postgres

sudo su - postgres

b.       Запустим командный режим PostgreSQL

psql

c.       Создадим роль и базы для rupost

CREATE ROLE rupost WITH NOSUPERUSER CREATEDB NOCREATEROLE LOGIN ENCRYPTED PASSWORD '12345678';

CREATE DATABASE rupost WITH ENCODING 'UTF8' OWNER rupost;

CREATE DATABASE rupost_data WITH ENCODING 'UTF8' OWNER rupost;

CREATE DATABASE rupost_logs WITH ENCODING 'UTF8' OWNER rupost;

где rupost — имя роли, пароль для неё »12345678»

3.       Выйдем из командного режима PostgreSQL и контекста пользователя postgres

4.       Установим Memcached

sudo apt-get install -y Memcached

Добавим в конфиг службы локальный интерфейс для прослушивания службой и перезапустим службу Memcached. Как это сделать — придумайте сами, иначе совсем неинтересно будет.

5.       Установим NFS

sudo apt-get install -y nfs-kernel-server nfs-common

6.       Создадим каталоги NFS

sudo mkdir /srv/nfs

sudo mkdir /srv/nfs/MailArchive

sudo mkdir /srv/nfs/IndexFiles

sudo mkdir /srv/nfs/MailQueues

sudo mkdir /srv/nfs/MailRecord

sudo mkdir /srv/nfs/MailStorage

7.       Назначим владельцев созданных каталогов

sudo chown 420:420 -R /srv/nfs/MailArchive/

sudo chown 420:420 -R /srv/nfs/IndexFiles

sudo chown 420:420 -R /srv/nfs/MailQueues/

sudo chown 420:420 -R /srv/nfs/MailRecord/

sudo chown 420:420 -R /srv/nfs/MailStorage/

8.       Назначим каталоги NFS для доступа RuPost

sudo bash -c 'cat >> /etc/exports << EOF

/srv/nfs/MailArchive 10.10.111.0/24(rw,sync,no_subtree_check,no_root_squash)

/srv/nfs/IndexFiles 10.10.111.0/24(rw,sync,no_subtree_check,no_root_squash)

/srv/nfs/MailQueues 10.10.111.0/24(rw,sync,no_subtree_check,no_root_squash)

/srv/nfs/MailRecord 10.10.111.0/24(rw,sync,no_subtree_check,no_root_squash)

/srv/nfs/MailStorage 10.10.111.0/24(rw,sync,no_subtree_check,no_root_squash)

EOF'

9.       Опубликуем NFS

sudo systemctl restart nfs-kernel-server

sudo systemctl restart nfs-server

sudo exportfs -ra

Наша инфраструктура готова к установке RuPost на узлы кластера.

Установка RuPost

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

Установим на первый узел кластера Astra Linux 1.7.4 в конфигурации «Орёл», в том числе:

  • ядро linux-5.15-generic или выше;

  • консольные утилиты;

  • средства удалённого доступа SSH;

  • отключим запрос пароля root.

Сконфигурируем сеть: назначим статический IP, имя сервера, DNS сервер, домен и пр.

Установка почтового сервиса

Установим RuPost (вы же не забыли получить дистрибутив и лицензии у вендора?)

sh ./rupost-2.5.0-amd64.run

В процессе установки будет выполнено и базовое конфигурирование RuPost. Не торопитесь нажимать кнопки! Некоторые операции занимают много времени.

В запустившемся установщике нажмите кнопку «Далее»

669d83de1f41d550655f34bc77fa4f94.png

Подтвердите вывод из эксплуатации всех предыдущих экземпляров RuPost.

e4431ac6844a25bd57f5efb102ba5d09.png

Установщик начнёт работу. После завершения конфигурирования и установки зависимостей нажмите «Далее».

c11f959807b9a59101e209f0f2a486e0.png

Настройте подключение к базе данных. Нужно ткнуть мышкой в нужное поле и начать писать. Курсор мне было не видно, что сбивает с толку, надеюсь, у вас будет лучше.

Укажите имя или IP PostgreSQL сервера, порт 5432.

Имя пользователя «rupost», пароль тот, что был задан при создании роли «rupost» на PostgreSQL сервере.

c727400695f7d0c38cb1a1c2ac7388ef.png

Нажмите «Далее». Конфигурация запишется и будут настроены базы данных.

257dc4d17acfc8cc499ee6e2ea18437d.png

После сообщения о выполнении установки нажмите «Готово».

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

Шаблоны конфигурации

Шаблоны описывают проверенные типовые конфигурации RuPost, необходимые для его работы и взаимодействия с другими системами. Например, кластер RuPost, взаимодействующий с антивирусом Касперского по Milter протоколу.

Шаблоны делятся на два типа — встроенные и специализированные. Первые поставляются в составе RuPost, вторые доступны только в Enterprise редакции и могут быть описаны и загружены самостоятельно.

После выбора нужного шаблона и указания его параметров выполняется «разворачивание» этого шаблона, что означает применение его настроек ко всем узлам почтовой системы. Изменение многих настроек требует повторного «переразворачивания» шаблона, о чём вас известит панель администратора, с которой мы вскоре познакомимся.

Итак, у нас сейчас есть настроенная инфраструктура для работы почтового сервиса и один установленный, но не настроенный узел кластера.

Настройка RuPost

Панель администратора

Настало время воспользоваться веб-панелью администрирования почтовой системы, которая доступна в браузере по FQDN имени почтового сервиса и порту 5000, в моём случае https://mail.doh4.site:5000

Конечно же, браузер будет ругаться на ненадёжный сертификат сервера. Чтобы это исправить, проделаем несколько операций в командной строке почтового сервера. Считаем, что нужные сертификаты, в виде цепочки сертификата сервера и промежуточных ЦС, и закрытый ключ для них у нас есть и находятся в файлах fullchain.pem и privkey.pem соответственно.

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

sudo rupost cert add "mail_cert" --login mailadmin --cert-type mail --cert-path fullchain.pem --key-path privkey.pem

Добавление сертификата для «Панели управления» аналогично:

sudo rupost cert add "control_panel_cert" --login mailadmin --cert-type control_panel  --cert-path fullchain.pem --key-path privkey.pem

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

sudo systemctl restart rupost

Вуаля, браузер больше не ругается. Переходим к настройке RuPost. Снова открываем веб-панель администрирования и указываем логин «mailadmin» и пароль «rupost». Всё красное, ничего не работает, но это не страшно. Сейчас мы постепенно приведём систему к рабочему состоянию.

32eebd8665b19577f2c961cd841cb70c.png

В веб-панели администрирования слева находится столбец с разделами, а в основном поле параметры выбранного раздела.

Лицензии

Первое, что нужно сделать — добавить лицензию. Перейдите в раздел «Лицензии» и загрузите файл лицензий.

Общие настройки

Далее нужно указать общие настройки почтовой системы. Перейдите в раздел «Настройки / Общие настройки».

Обязательно нужно заполнить:

a531107fada1f4e233d6825c649146a7.png673bcf221317b2baf60d094440b90371.png

  • На вкладке «Почта» укажите хранение на NFS почтовых ящиков, индексных файлов и почтовых очередей. В качестве сервера удалённой файловой системы используйте тот, что мы настраивали ранее — rp25sql.doh4.site. Опционально также можете включить сохранение на NFS архивов и удалённых элементов;

84c3f925bdf291424620c08e08cbca6b.png

Сохраните настройки.

Почтовые домены

В разделе «Настройки / Почтовые домены» нажмите кнопку «Добавить», укажите имя почтового домена и другие параметры, которые считаете нужным изменить.

0266e8d63c20872fc5af7632bfb66d39.png

По нажатию кнопки «Проверка домена» будут проверены DNS записи, которые мы создавали на этапе настройки инфраструктуры. Если проверка не позеленела, возвращайтесь к настройкам DNS. Хотя можно продолжить и с некорректными настройками, делать это настоятельно не рекомендую.

Домены LDAP

В этом разделе выполняется подключение к LDAP источникам. Нажмите «Добавить», укажите требуемые параметры. Имя учётной записи, которую мы создали в ALD Pro, указывается в формате DN.

ab24deb1609f2e3f9cdcee3a046ce959.png

По нажатию кнопки «Проверить соединение» будет выполнена попытка получить требуемые привилегии в ALD Pro. Если всё хорошо, жмите «Сохранить».

Чтобы все настроенное взлетело, нужно применить какую-то конфигурацию.

Конфигурация

Для начала в разделе «Настройки / Конфигурации» нажмите «Выбрать шаблон конфигурации», выберите «Базовый шаблон конфигурации» из библиотеки и примените его. 

af67ce97fb73777a582941a392ef8113.png186c51c3e51e7d3525e13c98424ec6e6.png

У базового шаблона конфигурации нет параметров, поэтому просто жмём «Далее»

d61d87a639bbe90928b40db84d21b752.png

Для применения конфигурации обязательно укажите её название, на ваш выбор. До этого кнопка «Применить конфигурацию» неактивна.

75d02b971dcf6d1729eac8a4a734a075.png

В страшном жёлтом окне подтвердите развёртывание конфигурации.

Теперь мы готовы создать почтовые ящики. Для этого идём в раздел «Получатели / Почтовые ящики», что прямо напрашивается, не так ли?

Почтовые ящики

Сами собой почтовые ящики не создаются, нам их нужно импортировать из службы каталогов, затем они будут автоматически поддерживаться в актуальном состоянии. Жмём кнопку «Добавить из LDAP». Указываем почтовый домен и домен LDAP, пока у нас их по одному, так что выбор разнообразием не блещет. Для поиска нужных пользователей можно использовать LDAP фильтр или, что проще, признаки или атрибуты пользователей. Например, умный фильтр «ds» найдёт пользователей, у которых где-то в атрибутах встречается подстрока «ds». Попробуйте, это занимательно. Отметьте нужных пользователей галочкой и нажмите «Далее».

05323b408c58891486d149305f302ecb.png

Теперь нужно определиться, как будет сформирован почтовый адрес пользователей. Его можно забрать из LDAP, если он там есть, и назначить почтовым ящикам. Второй вариант — сформировать email по шаблону. Сформированные по шаблону адреса будут не только назначены создаваемым почтовым ящикам, но и записаны в LDAP, мы же дали соответствующие права служебной учётной записи. Определились? Жмите «Добавить» для создания почтовых ящиков.

Готово, у нас есть рабочий почтовый сервер RuPost в кластерной конфигурации, но с одним хостом в ней. Можно писать письма внутри почтовой системы.

Кластер

Добавление узла

Для добавления узла кластера нужно создать для него необходимые записи в DNS и выполнить установку RuPost на этот узел, как описано в разделе «Установка RuPost». После этого можно перейти в веб-панель администрирования, раздел «Мониторинг». Там мы увидим вновь установленный узел. Для его запуска достаточно нажать кнопку «Ввод в эксплуатацию».

bc91c846995db710aef0a8296e9fb136.png

Узел запустится, службы позеленеют, настроение у нас улучшится. Мы пришли к цели — установили RuPost в кластерной отказоустойчивой конфигурации.

В следующей части статьи бегло глянем на веб-клиент для пользователей, рассмотрим возможные встроенные конфигурации, в том числе работу с антивирусом Касперского и взаимодействие с Microsoft Exchange. Попробуем управлять почтовыми ящиками, группами рассылки, ресурсными ящиками и автоматизировать это управление, а также посмотрим на инструмент миграции из Microsoft Exchange.

© Habrahabr.ru