Проект

Общее

Профиль

2. Инструкция по установке почтового сервера Tegu

Мы написали для вас качественный код, а также написали эту инструкцию чтобы облегчить вам работу.
Пожалуйста прочтите эту документацию перед началом работ с Tegu.

Преамбула

Сервер написан на языке Golang и представляет собой один единственный исполняемый файл, который вы скачиваете для выбранной аппаратной архитектуры. Лицензия не ограничивает вас в выборе или смене аппаратной архитуктуры.

Допускается использование Tegu на любом Линукс дистрибутиве, версия библиотеки GLIBC которого не ниже 2.28. В сложившейся ситуации приоритет разуемеется отдается использованию отечественных ОС.

  1. Перед началом работ обратите внимание на настройку DNS-зоны. Правильно настроенная зона - это важнейшая половина работы. При этом настроить надо не только MX-запись, но и записи SPF и DKIM. Мы рекомендуем проводить тестирование каждого выполненного этапа работ. На страницах нашего сайта и в интернете вы можете найти массу сервисов и утилит для проверки настройки DNS-зон. Тестирование зон сэкономит ваше время на следующих этапах.
  2. Второе, что необходимо выполнить предварительно, подготовить сертификат будущего сервера, который используется для шифрования протоколов. Использование самоподписанных сертификатов вызовет ошибку.
  3. Установка Tegu представляет собой по сути простое копирование исполняемого файла в заданную вами директорию. Чтобы программа могла выполняться и слушать заданные порты необходимо выполнять команду setcap (setcap необходимо также выполнять при обновлении дистрибутива).
    Этого достаточно чтобы выполнить запуск сервера системой systemd.
  4. При первом запуске сервер сформирует конфигурационный файл tegu.conf, в котором вы найдете сгенерированный административный пароль, с помощью которого сможете войти в веб-интерфейс настройки сервера. Все дальнейшие настройки можно выполнить в удобном GUI-интерфейсе.
  5. Контролируйте работу сервера с помощью команды journalctl -f -u tegu -n 100
  6. Итак, вы выполнили подготовительные этапы и запустили сервер (команда systemctl status tegu.service возвращает вам успешный статус). Самое время перейти к настройке. Ваш сервер может обслуживать любое количество интернет-доменов, но при этом надо соблюдать правило. Для каждого интернет домена необходимо создать хранилище почты (одно для каждого интернет-домена). Количество хранилищ не ограничено, каждое из них может быть двух типов: локальное в формате maildir, централизованное в СУБД Postgress. Источник Postgress роли не играет (ванильная, либо отечественная PosgresPro), версия - не ниже 13.
  7. Создав хранилище, необходимо выполнить создание провайдеров базы данных пользователей. Сервер может использовать любое количество собственных баз пользователей, а также подключения к любому количеству серверов каталогов любого типа (Windows AD, Samba4, FreeIPA etc). Другими словами, пользователи одного интернет-домена могут находиться на разных серверах каталогов, а также в локальной базе данных Tegu.
  8. Финальным этапом является подключение интивирусных/антиспамовых систем, либо DLP-систем, для чего Tegu оборудован протоколом Milter.

Более подробно о каждом этапе читайте в ниже следующей документации.

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

2.1. Настройка доменной зоны

Для корректной работы сервера необходимо правильно сконфигурить доменую зону.
Пожалуйста обратите внимание, что правильная настройка включает в себя не только создание записи типа MX, но и настройку SPF, DMARC и DKIM, а также обратной зоны, для чего вам придется обратиться к провайдеру канала интернет, на котором установлен сервер.

Рассмотрим эти записи не примере:

Хост

mail.test.tegu.online.          A     95.163.87.32
test.tegu.online.            MX     10    mail.test.tegu.online.

Sender Policy Framework (SPF)

test.tegu.online.            TXT     v=spf1 mx -all

Технология DomainKeys Identified Mail (DKIM)

Ключ DKIM создаётся в Панели управления почтовым сервером после его установки и запуска сервиса (tegu.service).
Запись для зоны DNS будет отображена после создания ключа.

Технология Domain-based Message Authentication, Reporting and Conformance (DMARC)

_dmarc.test.tegu.online.        TXT     v=DMARC1; p=quarantine; rua=mailto:abuse@test.tegu.online

Сразу же отправляем запрос владельцам внешнего адреса IP для настройки обратной записи DNS:

MAIL FROM: Кальметов Игорь <ikalmetov@mbk-lab.ru>
RCPT TO: <адрес владельца>

Прошу прописать следующую запись PTR в системе DNS:

95.163.87.32 -> mail.test.tegu.online.

Спасибо.

2.2. Установка сервера

Мы компилируем все редакции почтового сервера для двух аппаратных платформ x86_64 и AArch64 (ARM64) под управлением всех типов Linux, включая отечественные операционные системы ALT Linux, RedOS, AstraLinux, Rosa Linux и Calculate Linux.

При выборе дистрибутива критическим является не тип операционной системы, а версия GLIBC, которая в ней установлена. GLIBC — это библиотека GNU C (т.е. реализация стандартной библотеки C от GNU, которая является критичным компонентом инструментария GNU, используемым вместе с binutils и компилятором для сборки бинарных файлов). Очевидно, что разные версии одной и той же ОС имеют разные версии библиотеки GLIBC.

Принимая во внимание специфику сборки и сертификации отчественных ОС Linux, нужно понимать, что их версии GLIBC не всегда являются самыми свежими. Для обеспечения совместимости мы специально используем несколько более старую версию библиотеки при компиляции.

Таким образом, при выборе дистрибутива вам необходимо проверить, чтобы версия библиотеки вашей ОС была новее, чем версия, с которой скомпилирован Tegu.

Вы можете узнать версию вашей GLIBC с помощью команды:

$ldd --version

ldd (Ubuntu GLIBC 2.31-0ubuntu9.7) 2.31

Перед установкой обратите внимание, что все работы необходимо выполнять от имени root.
Для того, чтобы вы это не забыли мы выполним все команды с опцией sudo.

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

$ tar -xvf tegu-free-v1.17.20-x86_64.tar.gz 

tegu-free-v1.17.20-x86_64/
tegu-free-v1.17.20-x86_64/sbin/
tegu-free-v1.17.20-x86_64/sbin/tegu

Создаем структуру каталогов для сервера:

$ sudo mkdir /opt/tegu
$ sudo mkdir /opt/tegu/{sbin,data,certs,dkim}

Копируем исполняемый файл в рабочий каталог:

$ sudo cp tegu-free-v1.17.20-x86_64/sbin/tegu /opt/tegu/sbin/

Назначаем пользователя и права:

$ sudo chown -R mail. /opt/tegu/{sbin,data,certs,dkim}
$ sudo chmod 750 /opt/tegu/{data,certs,dkim}
$ sudo chmod -R 550 /opt/tegu/sbin

Проверяем правильность создания каталогов и файлов, а также их прав:

$ sudo ls -lR /opt/

Должно быть примерно так:

$ sudo ls -lR /opt/
/opt/:
итого 4
drwxr-xr-x 6 root root 4096 апр 11 14:32 tegu

/opt/tegu:
итого 16
drwxr-x--- 2 mail mail 4096 апр 11 14:32 certs
drwxr-x--- 2 mail mail 4096 апр 11 14:32 data
drwxr-x--- 2 mail mail 4096 апр 11 14:32 dkim
dr-xr-x--- 2 mail mail 4096 апр 11 14:33 sbin

/opt/tegu/certs:
итого 0

/opt/tegu/data:
итого 0

/opt/tegu/dkim:
итого 0

/opt/tegu/sbin:
итого 17612
-r-xr-x--- 1 mail mail 18032927 апр 11 14:33 tegu

Настраиваем механизм запуска и управления:

$ sudo vi /etc/systemd/system/tegu.service

Содержимое файла /etc/systemd/system/tegu.service должно быть таким:


[Unit]
Description=Tegu. MBK-Lab Mail Server

[Service]
ExecStart=/opt/tegu/sbin/tegu
User=mail
Group=mail
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Разрешаем запуск сервера от имени непривелегированного пользователя

$ sudo setcap CAP_NET_BIND_SERVICE=+eip /opt/tegu/sbin/tegu

Разрешаем автозапуск сервера во время загрузки ОС

$ systemctl enable tegu.service

Эта команда создает символическую ссылку на копию файла сервиса в /etc/systemd/system/tegu.service в точке на диске, где systemd ищет файлы для автозапуска, а также обновляет конфигурацию systemd. Помните, что вы должны обновлять конфигурацию systemd всякий раз, когда меняете конфигурацию в файле /etc/systemd/system/tegu.service. Обновление выполняется командой sudo systemctl reload tegu.service

Запускаем сервер (вручную)

$ systemctl start tegu.service

Контролируем запуск сервиса (статус сервиса):

$ systemctl status tegu.service

Правильно работающий сервер возвращает примерно такое:

● tegu.service - Tegu. MBK-Lab Mail Server
     Loaded: loaded (/etc/systemd/system/tegu.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-04-11 13:58:09 MSK; 50min ago
   Main PID: 88519 (tegu)
      Tasks: 9 (limit: 9357)
     Memory: 3.3M
     CGroup: /system.slice/tegu.service
             └─88519 /opt/tegu/sbin/tegu

апр 11 13:58:09 systemd[1]: Started Tegu. MBK-Lab Mail Server.

Контролируем с помощью лога:

journalctl -f -u tegu -n 100

Если вы захотите остановить сервер используйте команду:

$ systemctl stop tegu.service

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

  • /var/spool/mail/tegu.conf
  • ~/tegu.conf

Если файл не был найден, то он будет создан по пути ~/tegu.conf со следующим содержанием:

$ sudo cat /var/spool/mail/tegu.conf 

[global]
dataDir = /opt/tegu/data

[Log]
debug = false

[WEB]
adminPassword = admin

Для подробного логирования работы сервера измените значение параметра

debug = true

Значение параметра adminPassword используйте для регистрации в административном веб-интерфейсе (с логином admin). Читайте об этом подробнее в разделе "Настройка"

2.3. Настройка параметров сервера

Если все предыдущие шаги выполнены правильно, то вам становится доступной веб-панель администрирования сервером, в которой производятся все остальные настройки.

С помощью браузера зайдите на порт 8888 сервера (например, http://127.0.0.1:8888) и авторизуйтесь под администратором (логин admin) с паролем, указанным в конфиге в параметре adminPassword.

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

  • Вы можете выбрать SQLite setings database для версии FreeWare или Professional (локальная база);
  • Либо PosgresSQL для версии Enterprise.

или

Сохраните введенные данные и сохраните параметры.

Сервер создаст файл конфигурации по указанному вами пути. Отредактируйте эти настройки или нажмите Назад для выхода в корневое меню.

Вы вошли в корневое меню управления сервером.

Взаимосвязь объектов сервера и последовательность настройки вам поможет понять следующая условная диаграмма.

2.3.1. Создание почтового хранилища Maildir

Приступаем к созданию хранилищ почты. Для этого выбираем пункт меню Хранилища почты

На данном этапе необходимо выбрать тип хранилища

или

Выбрав "Maildir storage" вы можете создать локальное хранилище.

Обратите внимание, что при создании хранилища maildir соответствующий каталог должен быть предварительно создан с правами RW для пользователя mail.
Выполним это с помощью команд:

$ sudo mkdir /var/mail/test2
$ sudo chmod 660 /var/mail/test2/

Для создания хранилища укажите:

  • Local mail domain name - интернет-домен, для которого создается хранилище
  • Root directory path of mail - каталог для хранения почты выбранного домена.

Завершив настройку, нажмите кнопку Добавить

Хранилище будет создано и вы попадете в диалог добавления нового хранилища.

2.3.2. Создание почтового хранилища СУБД

Как было сказано выше, если вы используете редакцию Tegu Enterprise, то вы можете создать хранилище почты в СУБД. С Tegu совместима любая версия от отечественного вендора PosgresPro , либо свободная версия от PostgeSQL .
Для создания хранилища в корневом меню выбираем Хранилища почты

Очевидно, что целесообразно разместить почтовый сервер Tegu и СУБД на различных вычислительных нодах (виртуальных или физических).
Установка сервера БД производится согласно официальной документации Postgre . По окончание установки вам необходимо создать пользователя с правами создания баз, которым будет пользоваться сервер Tegu, а также необходимо создать две базы
  1. для хранения почты
  2. для хранения конфигурации.

Оптимизация БД, а также сборка отказоустойчивого решения БД, выходит за рамки установки почтового сервера и рассматривается в каждом конкретном случае по запросу. Интерес также представляет создание отказоустойчивой конфигурации базы данных, рассмотренное в данной статье .

2.3.3. Создание/подключение баз данных пользователей

Итак, для понимания структуры давайте еще раз взглянем на картинку архитектуры объектов сервера

Как видно, каждый интернет-домен обслуживается одним хранилищем почты (которое может быть любого из двух типов: maildir или СУБД). Количество интернет-доменов не ограничено.

При этом каждый интернет-домен может обслуживать пользователей из различных баз данных. Базы данных могут быть локальными, либо LDAP3 (куда входит в т.ч. и Windows Active Directory).
Можно предположить, что найдутся более одной базы, которые будут содержать данные одного и того же пользователя. Эту коллизию, необходимо разрешить организационными мероприятиями, но сервер разрешит ее следующим образом: обслужен будет пользователь, описанный в конфигурации первым, все остальные будут проигнорированы.

Для создания базы пользователей в корневом меню выберем пункт Провайдеры БД пользователей
Добавим базу данных кнопкой Добавить провайдер БД пользователей

В данном диалоге мы можем выбрать локальную базу пользователей пунктом JSON File User DB, либо подключиться к одному из серверов каталогов LDAP User DB

или

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

Либо вводим параметры LDAP-сервера для подключения к серверу каталогов.

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

2.3.4. Загрузка лицензии

Для работы коммерческой редакции сервера вам потребуется загрузить файл лицензии. Это выполняется в пункте меню Система
Выберите кнопку Панель управления

Прочтите лицензионное соглашение

И нажмите кнопку Принять. Если вы не принимаете соглашение, загрузка лицензии невозможно и работа сервера будет остановлена.
В любой момент вы также можете прочесть Лицензионное соглашение к конечным пользователем на сайте компании.

Выберите опцию Загрузить файл лицензии

Выберите файл лицензии и нажмите Загрузить файл

Загрузка лицензии завершена.

2.4. Обновление почтового сервера

Скачиваем новый дистрибутив Tegu и распаковываем его

tar xvzf tegu-enterprise-1.13.0-altlinux-x86_64.tar.gz

Останавливаем на всех нодах почтовый сервис

systemctl stop tegu.service

Заменяем новым дистрибутивом содержимое sbin

cp tegu /opt/tegu/sbin/

Обязательно дать права запуска от непривилегированного пользователя

setcap CAP_NET_BIND_SERVICE=+eip /opt/tegu/sbin/tegu

/opt/tegu/sbin/tegu – путь до исполняемого файла.

Запускаем почтовый сервер

systemctl start tegu.service

Проверяем статус запущенной службы.

systemctl status tegu.service
● tegu.service - Tegu. MBK-Lab Mail Server
   Loaded: loaded (/etc/systemd/system/tegu.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-07-08 14:13:28 +07; 20s ago
 Main PID: 16047 (tegu)
    Tasks: 8 (limit: 2362)
   Memory: 23.7M
   CGroup: /system.slice/tegu.service
           └─16047 /opt/tegu/sbin/tegu

Обновление завершено

2.5. Более точные настройки сервера

Более точные настройки сервера смотрите в п. 6. Инструкция по эксплуатации