Быстрый старт TEGU Enterprise¶
Choose a language: RU | EN | ZH
Table of contentsTable of contents
Данная статья призвана помочь вам быстро установить почтовый сервер TEGU Enterprise в минимальной конфигурации, однако она не исключает необходимость прочтения всей документациивсей документации
1. Подготовка к установке¶
Архитектура TEGU EnterpriseАрхитектура TEGU Enterprise
TEGU Enterprise представляет собой один скомпилированный файл, который умеет работать и запускаться абсолютно на всех современных операционных системах Linux основанных на systemd, а так же нет каких-либо зависимостей от системных библиотек.
Все данные TEGU (конфигурация, временные данные, письма, адресные книги и события календарей) Enterprise хранит в СУБД.
По умолчанию должно быть создано три базы:
- Хранения конфигурации.
- Хранения очередей SMTP.
- Хранения данных (почтовых сообщений, календарей, адресных книг и пр.).
TEGU Enterprise нигде не хранит (и не синхронизирует) учетные данные пользователей, а ретранслирует запросы к службе каталогов (а значит не позволяет скомпрометировать пароли). В качестве серверов каталогов может выступать Microsoft Active Directory, ALD Pro, FreeIPA, OpenLDAP в неограниченном кол-ве. Как следствие, TEGU Enterprise не вносит изменения в LDAP, в том числе, не меняет пароли учётных записей.
TEGU Enterprise может быть интегрирован с любым антивирусным/антиспамовым ПО по протоколу Milter или SMTP-relay.
Необходимые компонентыНеобходимые компоненты
- Операционная система Linux Debian 12 (в целом ОС может быть любая по вашему выбору, но мы даем для хрестоматийной Debian 12).
- База данных Postgres 13 и выше (в числе Postgres-ов могут быть PostgreSQL, Jatoba, Tantor, Postgres Pro - в зависимости от вашего предпочтения).
- Сертификаты (любые несамоподписанные сертификаты, к примеру Letsencrypt).
- Сервер каталогов (Wondows AD, ALT Домен, Astra ALD, РЕД АДМ и др. Подразумевается что он у вас есть установлен и настроен).
- Необходимо иметь административный доступ для редактирования зоны DNS.
- Необходима помощь вашего оператора связи для настройки обратной зоны DNS (PTR-запись).
- Доступность из интернет TCP-портов 25,80,465,993,8809,9999 на маршрутизаторе.
- Сетевая доступность серверов каталогов LDAP и СУБД.
Получение TEGU EnterpriseПолучение TEGU Enterprise
2. Первичная настройка зоны DNS¶
Часть параметров (известных вам) необходимо настроить перед установкой сервера.
В процессе настройки вы получите дополнительные параметры (сертификат DKIM, ресурсные записи для автонастройки клиентов etc), которые необходимо будет настроить в финале.
Запись SOA (Start of Authority)Запись SOA (Start of Authority)
Запись SOA (Start of Authority) - Описывает основные/начальные настройки зоны.
Для каждой зоны должна существовать только одна запись SOA, и она должна быть первая.
Записи NS (name server)Записи NS (name server)
Записи NS (name server) - Указывают сервера, на которые делегирован данный домен.
(как правило, они уже присутствуют когда вы заказываете интернет домен у хостера)
Проверка записей NS:
$ host -t ns tegu.online
tegu.online name server ns4-cloud.nic.ru.
tegu.online name server ns4-l2.nic.ru.
tegu.online name server ns8-cloud.nic.ru.
tegu.online name server ns3-l2.nic.ru.
tegu.online name server ns8-l2.nic.ru.
Запись A (address record)Запись A (address record)
Запись A (address record) - Отображает имя хоста (доменное имя) на адрес IPv4.
Для каждого сетевого интерфейса машины должна быть сделана одна A-запись.
Проверка записей CNAME:
$ host mail.tegu.online
mail.tegu.online has address 79.137.210.127
Записи MX (mail exchange)Записи MX (mail exchange)
Записи MX (mail exchange) - Указывают хосты для доставки почты, адресованной домену.
(пожалуй самая главная запись, без которой работа почтовой системы невозможна)
Проверка записей MX:
$ host -t mx tegu.online
tegu.online mail is handled by 10 mail.tegu.online.
Запись TXT для DKIMЗапись TXT для DKIM
Запись TXT для DKIM - механизм, позволяющий проверить является ли отправитель достоверным или нет.
Проверка осуществляется с помощью цифровой подписи, публичная часть которой находится в DNS соответствующей зоны.
DKIM защищает от отправки сообщения с подменой адреса отправителя.
Проверка записи TXT для DKIM:
$ host -t txt mail._domainkey.tegu.online
mail._domainkey.tegu.online descriptive text "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRKjngoDbWD3Cj1NHc/GB9YB4i3bjmJV2R0HfVpph2Hze1e6u1a9p8PiTkZQOA/Meuusb9YwrnxD27L+boZways1CQvWWvK3aySEWMy5VcauJw3BBNRJK4cMwlXv1DC9hzrFLqjynVQfqEWtKGk3Dgm6K+nH1IBu6ZVUwCC35nQQIDAQAB"
Запись TXT для DMARCЗапись TXT для DMARC
Запись TXT для DMARC - механизм снижения количества спамовых и фишинговых писем.
DMARC описывает действие, которое должен совершить сервер для писем, которые не прошли проверку DKIM и SPF.
А также описывает адрес, на который раз в сутки будет отправляться отчет об этих действиях.
Проверка записи TXT для DMARC:
$ host -t txt _dmarc.tegu.online
_dmarc.tegu.online descriptive text "v=DMARC1; p=quarantine; rua=mailto:abuse@tegu.online"
Обратная зона DNSОбратная зона DNS
Обратная зона DNS - это особая доменная зона, которая позволяет совершить обратное разрешение доменных имен относительно IP-адресов.
Для обратной зоны фактически разрешена только запись одного типа А, называемая PTR.
Важно — перед тем как настраивать почтовый сервер, необходимо запросить у своего провайдера прописать PTR запись,
в противном случае вы рискуете скомпрометировать и доменное имя, и свой IP-адрес во время начального общения с другими почтовыми серверами.
Восстановление может занять весьма значительное время.
Пример правильно настроенной зоны DNSПример правильно настроенной зоны DNS
tegu.online. IN MX 10 mail.tegu.online.
tegu.online. IN TXT "v=spf1 mx -all"
_dmarc.tegu.online. IN TXT "v=DMARC1; p=quarantine; rua=mailto:abuse@tegu.online"
mail._domainkey.tegu.online. IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4Lbl9UVcH/vu0LVp66sWUn8BMwB7Ec5D3uVgopu/1R2yEAWdJURQa1xfScgkfBJX/+N7i/hLOaT1tgeF52tI029R0T4hx4Uswwqgi9/5ZuIcLyTaGAVXtsGooc8n/Z5pYjaXNXjmnsyaJjuLp6IEtM49d95c3jFjJcp1vgluJIwIDAQAB"
imap.tegu.online. IN CNAME mail.tegu.online.
smtp.tegu.online. IN CNAME mail.tegu.online.
_smtp._tcp.tegu.online. IN SRV 10 0 25 mail.tegu.online.
_smtps._tcp.tegu.online. IN SRV 0 0 465 mail.tegu.online.
_imaps._tcp.tegu.online. IN SRV 0 0 993 mail.tegu.online.
_carddavs._tcp.tegu.online. IN SRV 0 0 8809 mail.tegu.online.
_caldavs._tcp.tegu.online. IN SRV 0 0 8809 mail.tegu.online.
_carddavs._tcp.tegu.online. IN TXT "path=/carddav"
_caldavs._tcp.tegu.online. IN TXT "path=/caldav"
Подробнее о DNS читайте в статье Настройка DNS-зоны
3. Настройка маршрутизатора¶
Проброс портов наружу для корректной работы сервера.
TEGU использует следующие TCP порты:
25,80,465,993,8809,9999
Пример настройки проброса портовПример настройки проброса портов
На маршрутизаторах с прошивкой OpenWRT (OpenWRT здесь приводится лишь как хрестоматийный пример) все порты пробрасываются в разделе "Port Forwards"
Также важно на виртуальной машине с почтовым сервером указать в качестве DNS: Yandex DNS

и NAT Rules.

Пример проброса портов на маршрутизаторе под управлением Debian и nftables.
Расшифровка:
vmbr1 - мост с внешним адресом 8.150.200.45
10.50.50.18 - ip адрес ноды с Tegu
25,80,465,993,8809,9999 - открытые порты для Tegu
#!/usr/sbin/nft -f
flush ruleset
table ip nat {
chain prerouting {
type nat hook prerouting priority -150; policy accept;
iifname vmbr1 ip daddr 8.150.200.45 meta l4proto tcp tcp dport { 25,80,465,993,8809,9999 } counter dnat to 10.50.50.18
}
chain postrouting {
type nat hook postrouting priority 100; policy accept;
oifname vmbr1 ip saddr 10.50.50.18 counter snat to 8.150.200.45
}
}
table inet filter {
chain input {
type filter hook input priority 0;
ct state related,established counter accept
meta l4proto icmp icmp type echo-request counter accept
iifname vmbr1 counter drop
}
chain forward {
type filter hook forward priority 0;
ct state related,established counter accept
iifname vmbr1 ip daddr 10.50.50.18 meta l4proto tcp tcp dport { 25,80,465,993,8809,9999 } counter accept
iifname vmbr1 counter drop
}
}
# IPv6
table ip6 filter {
chain input {
type filter hook input priority 0; policy accept;
ct state related,established counter accept
meta l4proto ipv6-icmp icmpv6 type echo-request counter accept
iifname vmbr1 counter drop
}
}
4. Установка и настройка Postgres¶
Требования:
- Postgres не ниже версии 13.
- Крайне не рекомендуется использование утилиты PgBouncer.
- В силу специфики работы Postgres (PG активно забирает, но самостоятельно не возвращает ресурсы операционной системе) установка СУБД и TEGU Enterprise на одной вычислительной ноде не рекомендуется и не поддерживается.
- Обязательно необходим пакет postgresql-contrib (как правило в таких системах как REDOS, AltLinux его приходится устанавливать дополнительно). Что делать если забыли установитьЧто делать если забыли установить
Если не установлен пакет postgresql-contrib, то в логе почтового сервера будет ошибка:
[DEBUG] Dirty database version 5. Fix and force version.
Для исправления необходимо установить postgresql-contrib, удалить базу tegu_settings и создать ее заново.
4.1. Установите СУБД Postgres¶
Соблюдая описанные выше требования, на отдельной ноде установите выбранный вами СУБД Postgres удобным для вас способом, способом,
рекомендованным вендором вашей ОС, вендором вашей Postgres или воспользуйтесь нашими инструкциями для установка PostgreSQL для следующих ОС:
для Debianдля Debian
Настройте и установите системную локаль по умолчанию
dpkg-reconfigure locales
выбираем
ru_RU.UTF-8
Установите, настройте часовой пояс
timedatectl set-timezone Europe/Moscow
Установка Postgres
apt update && apt install postgresql postgresql-contrib -y
Проверьте статус службы
systemctl status postgresql
Проверьте слушает ли сервер порт 5432 и на каком адресе
ss -lnpt | grep 5432
Убедитесь что у вас такой же такой вывод в консоли
LISTEN 0 244 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=26097,fd=6))
LISTEN 0 244 [::1]:5432 [::]:* users:(("postgres",pid=26097,fd=5))
Настройте автоматический запуск Postgresql.
systemctl enable postgresql
для AstraLinux 1.8.3для AstraLinux 1.8.3
При установке OS выберете самую низкую защиту
и откажитесь от установки графической оболочки
На момент написания статьи устанавливается Postgres 15
Переключитесь на пользователя root
sudo su -
Настройте и установите системную локаль по умолчанию
dpkg-reconfigure locales
выбирете
ru_RU.UTF-8
Настройте часовой пояс
timedatectl set-timezone Europe/Moscow
Отредактируйте файл /etc/apt/sources.list
Пример файла /etc/apt/sources.list для ОС Astra Linux Special Edition 1.8
deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-main/ 1.8_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-extended/ 1.8_x86-64 main contrib non-free
Отредактируйте файл /etc/resolv.conf
Пример файла resolv.conf cтрока namesever
nameserver 77.88.8.8
Запустите установку
apt update && apt install postgresql postgresql-contrib -y
Проверьте статус службы.
systemctl status postgresql
Убедитесь, слушает ли сервер порт 5432 и на каком адресе
ss -lnpt | grep 5432
Убедитесь что у вас такой же такой вывод в консоли
LISTEN 0 244 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=26097,fd=6))
LISTEN 0 244 [::1]:5432 [::]:* users:(("postgres",pid=26097,fd=5))
Настройте автоматический запуск Postgresql
systemctl enable postgresql
для AltLinux Server 11для AltLinux Server 11
При установке OS откажитесь от установки графической оболочки
На момент написания статьи в репозитории присутствуют следующие версии:
postgresql17-server
postgresql16-server
postgresql15-server
postgresql14-server
postgresql13-server
Ставьте актуальную версию: 17
Переключитесь на пользователя root
su -
Запустите установку
apt-get update && apt-get install postgresql17 postgresql17-contrib -y
Внимание! Перед запуском службы необходимо создать системные базы данных
/etc/init.d/postgresql initdb
(через systemctl postgresql initdb не работает)
Заведите пароль суперпользователя
Запустите Postgres
service postgresql start
Проверьте статус службы
systemctl status postgresql
Убедитесь, слушает ли сервер порт 5432 и на каком адресе
ss -lnpt | grep 5432
Убедитесь что у вас такой же такой вывод в консоли
LISTEN 0 244 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=26097,fd=6))
LISTEN 0 244 [::1]:5432 [::]:* users:(("postgres",pid=26097,fd=5))
Настройте автоматический запуск Postgresql
systemctl enable postgresql
для RED OS 8для RED OS 8При установке OS откажитесь от установки графической оболочки
На момент написания статьи в репозитории присутствуют следующие версии:
postgresql16-server
postgresql15-server
postgresql14-server
postgresql13-server
postgresql12-server
Ставьте актуальную версию: 16
Запустите установку
dnf update && dnf install postgresql16 postgresql16-contrib -y
Внимание! Перед запуском службы необходимо создать системные базы данных
postgresql-16-setup initdb
После успешной инициализации запустите службу postgresql и добавьте ее в автозагрузку
systemctl enable postgresql-16.service --now
Убедитесь, что служба запущена
systemctl status postgresql-16.service
Убедитесь, слушает ли сервер порт 5432 и на каком адресе
ss -lnpt | grep 5432
Убедитесь что у вас такой же такой вывод в консоли
LISTEN 0 244 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=26097,fd=6))
LISTEN 0 244 [::1]:5432 [::]:* users:(("postgres",pid=26097,fd=5))
4.2. Создайте пользователя tegu¶
Переходим в postrges
su - postgres -s /bin/bash
Создаем пользователя:
createuser -d -S -E -P tegu
4.3. Создайте базы данных¶
Создаем 3 базы данных.
tegu_queue - база данных очередей
tegu_mailboxes - база данных почтового хранилища
tegu_settings - база данных настроек почтового сервера
tegu_users - база данных локальных пльзоватей
createdb -E UTF-8 -O tegu tegu_queue
createdb -E UTF-8 -O tegu tegu_mailboxes
createdb -E UTF-8 -O tegu tegu_settings
createdb -E UTF-8 -O tegu tegu_users
4.4. Настройка доступа из подсетей¶
nano /var/lib/pgsql/data/pg_hba.conf
или так (где номер это версия postgres)
nano /etc/postgresql/15/main/pg_hba.conf
Если версия Pro то путь может быть такой
nano /var/lib/pgpro/std-14/data/pg_hba.conf
Пример файла pg_hba.confПример файла pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
host all all 10.199.199.0/24 md5
host all all 10.44.44.0/24 md5
host all all 10.0.0.0/8 md5
Раскомментируйте в конфигурационном файле postgresql.conf port 5432 и ip адрес с которого можно подключиться к базе данных.
Пример файла postgresql.confПример файла postgresql.conf
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
для ванильной версии postgres
nano /var/lib/pgsql/data/postgresql.conf
или так
nano /etc/postgresql/15/main/postgresql.conf
для версии pro
nano /var/lib/pgpro/std-14/data/postgresql.conf
После правок в конфигурационных файлах, перезапустите СУБД.
Полезные команды при работе с PostgresПолезные команды при работе с Postgres
Перезапуск Postgres
pg_ctlcluster 15 main restart
Посмотреть какие базы данных есть на сервере
psql -U postgres -c "\l+"
Как удалить базы данных
psql
DROP DATABASE tegu_mailboxes;
Чтение списка всех пользователей
SELECT usename
FROM pg_user;
Посмотреть пользователей Postgres c дополнительнй информацией
SELECT *
FROM pg_user;
Проверить привилегии и роли для конкретного пользователя
SELECT *
FROM information_schema.role_table_grants
WHERE grantee = 'имя_пользователя';
Просмотр списка всех ролей, к которым принадлежит пользователь
SELECT r.rolname
FROM pg_roles r
JOIN pg_auth_members m ON r.oid = m.roleid
JOIN pg_roles r2 ON r2.oid = m.member
WHERE r2.rolname = 'имя_пользователя';
Просмотр списка баз данных, к которым имеет доступ пользователь
SELECT datname
FROM pg_database
WHERE has_database_privilege('имя_пользователя', datname, 'CONNECT');
Проверка привилегий для конкретного пользователя
SELECT grantee, table_name, privilege_type
FROM information_schema.table_privileges
WHERE grantee = 'имя_пользователя';
Удалить пользователей Postgres
DROP USER имя_пользователя;
Как проверить подключение к серверу баз данных
psql -U tegu -d tegu_settings -h 172.16.10.2 -p 5432 -W
-U (имя пользователя
-d (имя базы данных)
-h (хост сервера базы данных)
-p (порт)
-W (пароль)
5. Установка сервера TEGU (консоль)¶
Требования:
- Любая 64-битная ОС Linux с системным менеджером systemd (в т.ч. любая отечественная ОС).
- Отсутствие в ОС предустановленных почтовых серверов, а также каких либо иных дополнительных компонентов.
- Последний дистрибутив TEGU ENTERPRISE, полученный с официального репозитория https://mbk-lab.ru/download/
- Коммерческая или тестовая лицензия TEGU ENTERPRISE (лицензионный ключ).
Перед началом установки TEGU убедитесь, что на вашей ОС правильно настроена локаль, часовой пояс, а также не установлен сервер Postfix. Как это сделатьКак это сделать
Postfix или какой-либо другой почтовый сервер необходимо удалить т.к. он будет занимать требуемые порты.
В Debian это можно сделать так:
Проверить
systemctl status postfix
Удалить
apt purge postfix
Настройка и установка системной локали по умолчанию.
dpkg-reconfigure locales
Для настройки локали выбирете
ru_RU.UTF-8
Установка, настройка и изменение часового пояса выбирете
timedatectl set-timezone Europe/Moscow
Перед установкой обратите внимание, что все работы необходимо выполнять от имени root.
Получите дистрибутив для вашей аппаратной платформы
Выполните:
wget https://downloads.mbk-lab.ru/stable/tegu-ent-latest-x86_64.tar.gz
wget https://downloads.mbk-lab.ru/stable/tegu-ent-latest-aarch64.tar.gz
Распакуйте полученный архив
$ tar -xvf tegu-ent-v1.xx.yy-x86_64.tar.gz
tegu-ent-v1.xx.yy-x86_64/
tegu-ent-v1.xx.yy-x86_64/sbin/
tegu-ent-v1.xx.yy-x86_64/sbin/tegu
Создайте структуру каталогов для сервера
$ mkdir /opt/tegu
$ mkdir /opt/tegu/{bin,sbin,data,certs}
Скопируйте исполняемый файл в рабочий каталог
$ cp tegu-ent-v1.xx.yy-x86_64/sbin/* /opt/tegu/sbin/
$ cp tegu-ent-v1.xx.yy-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
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
Для запуска и управления сервером создайте файл /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 со следующим содержанием
[global]
dataDir = /opt/tegu/data
[Log]
debug = true
crushReportsCount = 10
[WEB]
adminPassword = admin
httpPort = 8888
httpsPort = 9999
ctlPort = 8899
Установите права на файл /etc/tegu.conf
$ chown root.mail /etc/tegu.conf
$ chmod 640 /etc/tegu.conf
Стартуйте сервер
$ systemctl start tegu.service
Полезные команды при работе с TeguПолезные команды при работе с Tegu
Во время первого запуска сервер будет искать свой файл конфигурации в следующем порядке:
• /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.
Если все предыдущие шаги выполнены правильно, то вам становится доступной веб-панель администрирования сервером, в которой производятся все остальные настройки.
На этом установка сервера завершена.
6. Настройка сервера TEGU (GUI интерфейс)¶
6.1. Подключение базы данных конфигурации¶
Управление сервером TEGU осуществляется с помощью веб-интерфейса, доступного на порту 8888.
Откройте браузером сслыку: http://<адрес вашего сервера>:8888
Сервер TEGU хранит свои настройки не в конфигурационных файлах, а в СУБД. Следовательно, сначала необходимо указать базу данных для хранения конфигурации. В первоначально установленном сервере этот диалог открывается автоматически.
В диалоге /Настройки/База параметров/Настройки заполните вашими данными следующие поля:
- Тип БД параметров: PostgreSQL
- Адрес сервера: <адрес сервера СУБД>
- Порт сервера: 5432
- Имя базы данных: tegu_settings
- Имя пользователя: tegu
- Пароль: <пароль пользователя tegu на СУБД>
- Максимальное количество одновременных подключений: 220
После сохранения почтовый сервер перезапустится и вы попадете в полнофункциональный веб-интерфейс.
В диалоге /Настройки/Лицензия загрузите лицензионный ключ. Как получить тестовую лицензиюКак получить тестовую лицензию
NFR (тестовая) лицензия предназначена для ознакомления с программным продуктом TEGU Enterprise на собственном оборудовании (on-premise). Тестовая лицензия предоставляется бесплатно, однократно и имеет 30-дневный период действия. Для получения заполните форму
6.2. Базовые настройки¶
Базовые настройки задаются в диалоге /Настройки/Основные
Смысл указанных опций интуитивно понятен. Более подробно читайте в статье Администрирование сервера
Часто встречающаяся ошибка на данном этапе - использование в поле "Имя сервера" имени ноды на которой установлен сервер. Необходимо указывать имя, используемое в DNS. К примеру: mail.tegu.online
6.3. Подключение базы данных хранилища¶
TEGU хранит данные в СУБД. С этой целью для каждого интернет-домена необходимо указать параметры соответствующей базы данных СУБД.
Для создания хранилища в диалоге /Настройки/Домены выберите "Добавить домен".
Выберите:
- Новый домен: <имя интернет-домена>
- Тип хранилища: PostgreSQL
Нажмите "Добавить домен".
Продолжите заполнение полей:
- Адрес сервера: <адрес сервера СУБД>
- Порт сервера: 5432
- Имя базы данных: tegu_mailboxes
- Имя пользователя: tegu
- Пароль: <пароль пользователя tegu на СУБД>
- Максимальное количество одновременных подключений: 40
- Паттерн распределения ящиков: *
Используйте кнопку "Проверить соединение".
Сохраните правильные настройки.
6.4. Подключение базы данных очереди сообщений¶
TEGU хранит временную информацию (очереди, кеши etc) в СУБД. Следовательно, необходимо настроить базу данных очередей. Более того, без настройки очередей 25-й порт сервера не будет активным.
Подключите базу данных очередей в диалоге /Настройки/Очередь SMTP/Настройки
Заполните следующие поля:
- Тип очереди: PostgreSQL
- Адрес сервера: <адрес сервера СУБД>
- Порт сервера: 5432
- Имя базы данных: tegu_queue
- Имя пользователя: tegu
- Пароль: <пароль пользователя tegu на СУБД>
- Максимальное количество одновременных подключений: 5
- Количество обрабатываемых писем за проход: 20
Используйте кнопку "Проверить соединение".
Сохраните правильные настройки.
6.5. Подключение сервера каталогов¶
Для выполнения аутентификации TEGU должен быть интегрирован с сервером каталогов. TEGU поддерживает любой из LDAP-каталогов не ниже версии 3.
В связи с тем, что разные типы серверов каталогов реализуют различные схемы, для уверенных действий желательно проанализировать структуру сервера каталогов. Подробнее об анализе серверов каталоговПодробнее об анализе серверов каталогов
Анализ структуры сервера каталога
Утилита ldapsearch позволит нам правильно найти и прописать все настройки.
Перейдем в консоль почтового сервера и в командной строке проверим правильность будущего подключения.
Если у вас нет утилиты ldapsearch, то установите пакет ldap-utils примерно такой командой:
apt install ldap-utils
Синопсис команды:
ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W
В моем случае для подключения к LDAP получается следующая команда:
ldapsearch -x -b "DC=tegu,DC=online" -H ldap://10.44.44.16:389
Вывод команды весьма интересен и многое говорит сам за себя.
Но мы с вами запросим информацию о конкретном пользователей uid=ikurennov :
$ ldapsearch -x -b "uid=ikurennov,ou=People,DC=tegu,DC=online" -H ldap://10.44.44.16:389
# extended LDIF
#
# LDAPv3
# base <uid=ikurennov,ou=People,DC=tegu,DC=online> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# iurennov, People, tegu.online
dn: uid=ikurennov,ou=People,dc=tegu,dc=online
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
homeDirectory: /home/ikurennov
loginShell: /bin/bash
uid: ikurennov
uidNumber: 10001
gidNumber: 10000
title:: 0JjQvdC20LXQvdC10YA=
o:: 0JzQkdCaLdCb0LDQsQ==
mail: ikurennov@tegu.online
sn:: 0JrQsNC70YzQvNC10YLQvtCy
givenName:: 0JjQs9C+0YDRjA==
cn:: 0JrQsNC70YzQvNC10YLQvtCyINCY0LPQvtGA0Yw=
jpegPhoto:: /9j/4AAQSkZJRgABAQAASABIAAD/7QByUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAD
ocAVoAAxslRxwCAAACAAIcAigAFm0zTXV6VDhMVHNHQ0JLWCUwc0t4MEEcAhkAC1Bob3RvIEJvb3R
Bh479yI1rrF7bn/9k=
facsimileTelephoneNumber: 10000
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Как трактовать данный вывод?
• Почтовый сервер может обратиться к LDAP серверу ldap://10.44.44.16:389 с логином BindDN: cn=admin,dc=tegu,dc=online и вашим паролем;
• Определена область поиска BaseDN dc=tegu,dc=online ;
• Определено поле Attr for mailbox e-mail = mail ;
• Определено поле Attr for mailbox quota (value in MB) = facsimileTelephoneNumber.
6.6. Настройка провайдера БД пользователей¶
В диалоге /Настройка/<ваш домен>/Провайдеры БД пользователей выберите "Добавить провайдера".
Заполните предложенные поля:
- Поле Provider Name - любой текст, означающий имя подключения;
- Local Domain Name - имя домена (а не сервера т.е. то, что в email-адресе следует после @);
- LDAP server connection URI - найденный и проверенный выше пусть к серверу;
- BindDN - логин;
- Password - пароль;
- BaseDN - найденный выше фильтр поиска.;
- Atr for mailbox e-mail - название поля, которое в LDAP заполнено email-адресом пользователя (важно! с доменным суффиксом);
- Atr for mailbox quota - название поля, которое в LDAP используется для определения квоты.
Сейчас поле BindDN прописано в формате UPN - user@realm.com так как мы используем OpenLDAP.
Такой вариант работает и с Microsoft AD, но если вы в качестве сервера каталогов используете FreeIPA или ALD Pro, то BindDN должен быть полным DN (uid=user,ou=org_unit,dc=domain,dc=com)
Примеры подключений:
6.7. Установка и генерация сертификатов¶
- Для работы сервера вам понадобятся сертификаты на имя почтового сертификата (а не домена!).
- Ваш сертификат может быть получен любым валидным способом. Самоподписанные сертификаты не поддерживаются.
- В документации приводится методика получения для хрестоматийного источника Let’s Encrypt. Подробнее о Let’s EncryptПодробнее о Let’s Encrypt
- Центр сертификации Let’s Encrypt предоставляет бесплатные криптографические сертификаты X.509 для шифрования передаваемых через интернет данных HTTPS и других протоколов.
- Процесс выдачи сертификатов полностью автоматизирован.
- Центр сертификации Let’s Encrypt выдаёт сертификаты со сроком действия 90 дней.
- Для получения сертификата должны быть проброшены порты: 80, 443
- Начиная с 4 июня 2025 года Let's Encrypt больше не будет уведомлять своих подписчиков о том, что их сертификация скоро истечет и ее необходимо обновить.
- Если вы будете получать сертификат на кириллический домен (к примеру mail.тегу.рф), то Letsencrypt выдаст вам соответствующее предупреждение: Non-ASCII domain names not supported. To issue for an Internationalized Domain Name, use Punycode. Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /tmp/certbot-log-skn94fy8/log or re-run Certbot with -v for more details. Для решения данной проблемы необходимо воспользоваться Punycode конвертером: https://www.punycoder.com/ или https://www.reg.ru/web-tools/punycode , где на выходе вы получите следующий результат:

Установить сертификат Let’s Encrypt
Установка в Debian и Alt ServerУстановка в Debian и Alt Server
Установите пакет certbot
apt-get update
apt-get install certbot
Получите сертификат на свой почтовый домен
certbot certonly --standalone -m ваша_почта@yandex.ru -d mail.вашдомен.рф
- ваша_почта@yandex.ru - Здесь вы указываете действующий рабочий почтовый ящик, куда будут приходить письма от Letsencrypt
Проверьте что сертификаты получены
cd /etc/letsencrypt/live/mail.вашдомен.рф/
ls
Убедитесь что следующие файлы присутствуют в папке
cert.pem chain.pem fullchain.pem privkey.pem README
Нас интересуют fullchain.pem privkey.pem
Установка в RED OSУстановка в RED OS
Необходимо установить пакет certbot, но в репозитории РЕД ОС данного пакета нет, поэтому установите его с помощью python.
Если Python уже установлен, установите certbot так:
dnf install python-virtualenv
Создайте каталог
mkdir -p /web/install/python/
Перейдите в этот каталог
cd /web/install/python/
Создайте виртуальную среду для приложения. Назовите ее python-red
python3 -m venv python-red
Активируйте среду приложения python-red
source python-red/bin/activate
Если всё сделано правильно, вы увидите что перешли в среду разработки python
Далее, нам необходимо обновить
pip install --upgrade pip
Установите пакет certbot
pip install certbot
Запустите процедуру получения ssl сертификатов
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
Установка в AstraLinux 1.8.3 SEУстановка в AstraLinux 1.8.3 SE
Для астры нет репозитория установки certbot, но есть рабочее решение.
Установите компоненты
apt update && apt install python3-acme python3-configargparse python3-configobj python3-distro python3-parsedatetime -y
Загрузите пакеты certbot с репозитория Debian
wget http://ftp.de.debian.org/debian/pool/main/p/python-certbot/certbot_2.1.0-4_all.deb
wget http://ftp.de.debian.org/debian/pool/main/p/python-certbot/python3-certbot_2.1.0-4_all.deb
Установите
dpkg -i *.deb
Получите сертификат на свой почтовый домен
certbot certonly --standalone -m ваша_почта@yandex.ru -d mail.вашдомен.рф
- ваша_почта@yandex.ru - Здесь вы указываете действующий рабочий почтовый ящик, куда будут приходить письма от Letsencrypt
Проверьте что сертификаты получены
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/fullchain.pem
cat /etc/letsencrypt/live/mail.вашдомен.рф/privkey.pem > /opt/tegu/certs/privkey.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/fullchain.pem
/opt/tegu/certs/privkey.pem
Должно получиться так

После того как сертификаты сгенерированы и прописаны на почтовом сервере, в основных настройках необходимо включить опцию "Требовать шифрования TLS/SSL для авторизации"

Перезапустите почтовый сервер
systemctl restart tegu
Важно помнить что для успешной автоматической генерации сертификатов, порты 80 и 443 должны быть проброшены наружу.
После настройки сертификатов проверьте порты, которые слушает почтовый сервер утилитой net-tool. Как установить net-toolКак установить net-tool
Для установки net-tools выполните
sudo apt install net-tools
Порты, которые слушает сервер TEGU:
root@tegu:~# netstat -tulpn | grep tegu
tcp 0 0 127.0.0.1:8899 0.0.0.0:* LISTEN 81/tegu
tcp6 0 0 :::8888 :::* LISTEN 81/tegu
tcp6 0 0 :::9999 :::* LISTEN 81/tegu
tcp6 0 0 :::25 :::* LISTEN 81/tegu
tcp6 0 0 :::143 :::* LISTEN 81/tegu
tcp6 0 0 :::465 :::* LISTEN 81/tegu
tcp6 0 0 :::993 :::* LISTEN 81/tegu
6.8. Генерация DKIM¶
В диалоге /Настройка/<ваш домен>/DKIM нажмите кнопку "Добавить ключ DKIM".
В результате сервер самостоятельно сгенерирует ключ DKIM, приватную часть часть он сохранит у себя, а публичную часть вернет в виде, в котором вы должны разместить ее в DNS-зоне.
Пример: mail._domainkey.tegu.online. IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4Lbl9UVcH/vu0LVp66sWUn8BMwB7Ec5D3uVgopu/1R2yEAWdJURQa1xfScgkfBJX/+N7i/hLOaT1tgeF52tI029R0T4hx4Uswwqgi9/5ZuIcLyTaGAVXtsGooc8n/Z5pYjaXNXjmnsyaJjuLp6IEtM49d95c3jFjJcp1vgluJIwIDAQAB"
Вы можете удалить ключ и сгенерировать новый. При этом каждый раз необходимо соответственно обновлять DNS-зону.
7. Финальная настройка зоны DNS¶
В диалоге /Дашборд вы найдете "Рекомендации для зоны DNS" для каждого из интернет-доменов.
Рекомендация содержит все необходимые записи, включая DMAC, DKIM, ресурсные записи (необходимые для автонастройки почтовых программ).
Перенесите их на ваш сервер DNS в требуемом формате.

8. Управление почтовыми ящиками¶
8.1. Создание почтового ящика¶
- В TEGU почтовые ящики создаются автоматически в момент первой авторизации. Подробнее...Подробнее...
Ранее мы уже писали, что сервер не синхронизирует данные серверов каталогов, он обращается к серверу каталога всякий раз, когда необходимо выполнить авторизацию пользователя. При этом сервер не сохраняет полученную информацию, а лишь кеширует на время.
Кеширование необходимо, чтобы в случае DDOS-а почтовый сервер не завалил запросами сервер каталогов.
По умолчанию время кеширования составляет 10 секунд и вы можете самостоятельно изменить его с помощью параметра "Провайдеры БД пользователей/<выбранный провайдер>/Cache TTL (seconds)".
Это обстоятельство означает, что сервер не знает от существовании вашего пользователя, созданного на сервере каталогов до тех пор, пока не возникнет необходимость его авторизации.
Необходимость авторизации возникает когда:
- Сервер получил письмо в адрес этого пользователя;
- Сервер получил письмо от этого пользователя;
- Пользователь настраивает клиентское ПО или регистрируется на сайте веб-мэйла.
Если таких ситуаций не было, но сервер не знает о существовании и, как следствие, не создает почтовый ящик. Более того, этот пользователь не участвует в подсчете использованных лицензий.
Однако, при первой попытке успешно авторизации почтовый ящик создается автоматически.
- Для создания почтового ящика в учетной доменной записи необходимо и достаточно указать:
- Логин (в формате email. Пример: test@tegu.online)
- Пароль
- Поле Email (должно содержать email-адрес пользователя. test@tegu.online)
- Остальные поля являются необязательными, но рекомендованными. (К примеру квота etc)
8.2. Удаление почтового ящика¶
Для удаления ящика используйте диалог "Хранилища почты/Панель управления <соответствующего домена>/Почтовые ящики". Подробнее...Подробнее...
Рассмотрим обратную ситуация. Вы удалили пользователя в домене и пользовательский аккаунт больше не существует. Это означает только то, что сервер не получает запросов на авторизацию, но это не означает, что ящик должен быть удален. Он останется на почтовом сервере.
Таким образом, это означает, что удалять ставшие ненужными ящики вы должны самостоятельно (вручную).