2. Инструкция по установке почтового сервера Tegu¶
- Содержание
- 2. Инструкция по установке почтового сервера Tegu
- Преамбула
- 2.1. Настройка доменной зоны
- 2.2. Установка сервера
- 2.3. Настройка параметров сервера
- 2.4. Обновление почтового сервера
- 2.5. Более точные настройки сервера
- 2.6. Проверка настроек сервера
- 2.7. Установка и генерация сертификатов Letsencrypt.
- Автоматизируем обновление сертификатов скриптами:
- 2.8 Интеграция с Active Directory и OpenLDAP.
Мы написали для вас качественный код, а также написали эту инструкцию чтобы облегчить вам работу.
Пожалуйста прочтите эту документацию перед началом работ с Tegu.
Преамбула¶
Сервер написан на языке Golang и представляет собой один единственный исполняемый файл, который вы скачиваете для выбранной аппаратной архитектуры. Лицензия не ограничивает вас в выборе или смене аппаратной архитектуры.
Допускается использование Tegu на любом Линукс дистрибутиве, версия библиотеки GLIBC которого не ниже 2.28. В сложившейся ситуации приоритет разумеется отдается использованию отечественных ОС.
- Перед началом работ обратите внимание на настройку DNS-зоны. Правильно настроенная зона - это важнейшая половина работы. При этом настроить надо не только MX-запись, но и записи SPF и DKIM. Мы рекомендуем проводить тестирование каждого выполненного этапа работ. На страницах нашего сайта и в интернете вы можете найти массу сервисов и утилит для проверки настройки DNS-зон. Тестирование зон сэкономит ваше время на следующих этапах.
- Второе, что необходимо выполнить предварительно, подготовить сертификат будущего сервера, который используется для шифрования протоколов. Использование самоподписанных сертификатов вызовет ошибку.
- Некоторые дистрибутивы операционных систем содержат и по умолчанию запускают собственный почтовый сервер. К примеру на борту Alt Server уже установлен сервер postfix. Во избежание конфликта сетевых портов необходимо предварительно остановить или удалить ненужный сервер.
- Установка Tegu представляет собой по сути простое копирование исполняемого файла в заданную вами директорию. Чтобы программа могла выполняться и слушать заданные порты необходимо выполнять команду setcap (setcap необходимо также выполнять при обновлении дистрибутива).
Этого достаточно чтобы выполнить запуск сервера системой systemd. - При первом запуске сервер сформирует конфигурационный файл tegu.conf, в котором вы найдете сгенерированный административный пароль, с помощью которого сможете войти в веб-интерфейс настройки сервера. Все дальнейшие настройки можно выполнить в удобном GUI-интерфейсе.
- Контролируйте работу сервера с помощью команды journalctl -f -u tegu -n 100
- Итак, вы выполнили подготовительные этапы и запустили сервер (команда systemctl status tegu.service возвращает вам успешный статус). Самое время перейти к настройке. Ваш сервер может обслуживать любое количество интернет-доменов, но при этом надо соблюдать правило. Для каждого интернет домена необходимо создать хранилище почты (одно для каждого интернет-домена). Количество хранилищ не ограничено, каждое из них может быть двух типов: локальное в формате maildir, централизованное в СУБД Postgress. Источник Postgress роли не играет (ванильная, либо отечественная PosgresPro), версия - не ниже 13.
- Создав хранилище, необходимо выполнить создание провайдеров базы данных пользователей. Сервер может использовать любое количество собственных баз пользователей, а также подключения к любому количеству серверов каталогов любого типа (Windows AD, Samba4, FreeIPA etc). Другими словами, пользователи одного интернет-домена могут находиться на разных серверах каталогов, а также в локальной базе данных Tegu.
- Финальным этапом является подключение интивирусных/антиспамовых систем, либо 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
Создаем структуру каталогов для сервера:
$ mkdir /opt/tegu $ mkdir /opt/tegu/{bin,sbin,data,certs}
Копируем исполняемый файл в рабочий каталог:
$ cp tegu-free-v1.17.20-x86_64/sbin/* /opt/tegu/sbin/ $ cp tegu-free-v1.17.20-x86_64/bin/* /opt/tegu/bin/
Назначаем пользователя и права:
$ chown -R mail. /opt/tegu/{data,certs} $ chgrp -R mail /opt/tegu/{bin,sbin} $ chmod 750 /opt/tegu/{data,certs} $ chmod -R 750 /opt/tegu/sbin $ chmod -R 750 /opt/tegu/bin
Проверяем правильность создания каталогов и файлов, а также их прав:
$ ls -l /opt/tegu
Должно быть примерно так:
$ ls -l /opt/tegu /opt/tegu: итого 16 drwxr-x--- 2 root mail 4096 апр 11 14:32 bin drwxr-x--- 2 mail mail 4096 апр 11 14:32 certs drwxr-x--- 2 mail mail 4096 апр 11 14:32 data drwxr-x--- 2 root mail 4096 апр 11 14:33 sbin
Настраиваем механизм запуска и управления:
$ nano /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
Разрешаем запуск сервера от имени непривелегированного пользователя
$ setcap CAP_NET_BIND_SERVICE=+eip /opt/tegu/sbin/tegu
Необходимо создать конфигурационный файл в /etc/tegu.conf со следующим содержанием:
$ nano /etc/tegu.conf [global] dataDir = /opt/tegu/data [Log] debug = true [WEB] adminPassword = admin httpPort = 8888 httpsPort = 9999 ctlPort = 8899
И сменить права:
chown root.mail /etc/tegu.conf
chmod 640 /etc/tegu.conf
Во время первого запуска сервер будет искать свой файл конфигурации в следующем порядке:
- /etc/tegu.conf
- ~/tegu.conf (например, /var/mail/tegu.conf)
Если файл не был найден, то он будет создан по пути ~/tegu.conf
Для подробного логирования работы сервера измените значение параметра
debug = true
Значение параметра adminPassword используйте для регистрации в административном веб-интерфейсе (с логином admin). Читайте об этом подробнее в разделе "Настройка"
Разрешаем автозапуск сервера во время загрузки ОС
$ 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
Проверить занимаемые программой порты можно командой:
netstat -tulpn | grep tegu
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.
Права на катологи должны быть такими:
drwxr-x---
Выполним это с помощью команд:
$ mkdir /var/mail/test2 $ find /var/mail/test2 -type d -exec chmod 750 {} \;
Права на файлы должны быть такими:
-rw-r-----
которые устанавливаются командой
find /var/mail/test2 -type f -exec chmod 640 {} \;
Владелец и группа должны быть те, от которых запускается сервис tegu.
Например, mail.mail, которые устанавливаются командой
chown -R mail.mail /var/mail/test2
Для создания хранилища укажите:
- Local mail domain name - интернет-домен, для которого создается хранилище
- Root directory path of mail - каталог для хранения почты выбранного домена.
Завершив настройку, нажмите кнопку Добавить
Хранилище будет создано и вы попадете в диалог добавления нового хранилища.
2.3.2. Создание почтового хранилища СУБД¶
Как было сказано выше, если вы используете редакцию Tegu Enterprise, то вы можете создать хранилище почты в СУБД. С Tegu совместима любая версия от отечественного вендора PosgresPro , либо свободная версия от PostgeSQL . (версия - не ниже 13)
Создаем пользователя:
createuser -d -S -E -P postgres
Создаем 3 базы данных.¶
tegu_queue -база данных очередей
tegu_mailboxes - база данных почтового хранилища
tegu_settings - база данных настроек почтового сервера
createdb -E UTF-8 -O postgres tegu_queue
createdb -E UTF-8 -O postgres tegu_mailboxes
createdb -E UTF-8 -O postgres tegu_settings
Прописываем доступы с подсетей.¶
nano /var/lib/pgsql/data/pg_hba.conf
Смотрим какие базы данных у нас есть.¶
psql -U postgres -c "\l+"
Удалить базы данных.¶
psql DROP DATABASE tegu_mailboxes;
Для создания хранилища в корневом меню выбираем Хранилища почты
Установка сервера БД производится согласно официальной документации Postgre . По окончании установки вам необходимо создать пользователя с правами создания баз, которым будет пользоваться сервер Tegu, а также необходимо создать две базы
- для хранения почты
- для хранения конфигурации.
и, если необходимо
- для очереди сообщений SMTP
Для всех БД пользователь этих БД должен иметь в них право CREATE.
Оптимизация БД, а также сборка отказоустойчивого решения БД, выходит за рамки установки почтового сервера и рассматривается в каждом конкретном случае по запросу. Интерес также представляет создание отказоустойчивой конфигурации базы данных, рассмотренное в данной статье .
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. Обновление почтового сервера¶
Останавливаем на всех нодах почтовый сервис.¶
systemctl stop tegu.service
переходим в папку opt
cd /opt
Скачиваем дистрибутив tegu¶
Распаковываем.¶
tar xvzf tegu-ent-v1.19.44-x86_64.tar.gz
h3.Переходим в распакованную папку
cd /opt/tegu-ent-v1.19.44-x86_64
Копируем содержимое папки bin¶
cp bin/* /opt/tegu/bin/
Консоль спросит: перезаписать содержимое, отвечаем да (y)
Копируем содержимое sbin¶
cp sbin/* /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. Инструкция по эксплуатации
2.6. Проверка настроек сервера¶
Проверить все выполненные настройки сервера можно с помощью утилиты teguctl (идуще в комплекте дистрибутива)
Команда
# /opt/tegu/bin/teguctl dump
выведет всю конфигурацию сервера в тестовом формате.
Утилита teguctl поставляется с дистрибутивом (вы найдете ее в каталоге bin).
2.7. Установка и генерация сертификатов Letsencrypt.¶
Проверяем обновления пакетов
apt update
Устанавливаем Letsencrypt
apt install certbot
Получаем сертификат на свой почтовый домен
certbot certonly --standalone -m ваша_почта@yandex.ru -d mail.вашдомен.рф
Проверяем что сертификаты получены
cd /etc/letsencrypt/live/mail.вашдомен.рф/ ls
должны увидеть следующие файлы:
cert.pem chain.pem fullchain.pem privkey.pem README
Нас интересуют fullchain.pem privkey.pem
Автоматизируем обновление сертификатов скриптами:¶
создаем папку work в папке root она нам чуть позже пригодится
mkdir work
Создаем в папке Letsencrypt hook со следующим содержанием:
nano /etc/letsencrypt/renewal-hooks/deploy/hook01
#!/bin/sh do if [ "$domain" = mail.вашдомен.рф ] then /root/work/tegu_certs /bin/systemctl restart tegu fi done
Делаем его исполняемым
chmod +x /etc/letsencrypt/renewal-hooks/deploy/hook01
Далее создаем еще один скрипт
nano /root/work/tegu_certs
и прописываем в нем следующие строки
#!/bin/bash cat /etc/letsencrypt/live/mail.вашдомен.рф/fullchain.pem > /opt/tegu/certs/cert.pem cat /etc/letsencrypt/live/mail.вашдомен.рф/privkey.pem > /opt/tegu/certs/key.pem chgrp mail /opt/tegu/certs/* chmod 640 /opt/tegu/certs/*
Делаем скрипт исполняемым
chmod +x /root/work/tegu_certs
Меняем группу владельцев
chgrp root /etc/letsencrypt/archive/mail.вашдомен.рф/*
Запускаем скрипт
/root/work/tegu_certs
Проверяем результат отрабатывания скрипта
ls -lh /opt/tegu/certs/
В этой папке должны появится сертификаты
cert.pem key.pem
Соответственно в основных настройках почтового сервера мы указываем следующие пути к сертификатам.
/opt/tegu/certs/cert.pem /opt/tegu/certs/key.pem
Должно получиться так.
После того как сертификаты сгенерированы и прописаны на почтовом сервере, в основных настройках необходимо включить опцию "Требовать шифрования TLS/SSL для авторизации"
Перезапустим почтовый сервер:
systemctl restart tegu
После того как все настройки выполнены только теперь можно проверять какие порты слушает почтовый сервер.
netstat -lnp
2.8 Интеграция с Active Directory и OpenLDAP.¶
Пример настроек для подключения к Active Directory.¶
Пример настроек для подключения к OpenLDAP.¶