Проект

Общее

Профиль

Введение

Choose a language: RU | EN | ZH

Table of contents

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

Рекомендации:

  1. Помните, что шесть часов отладки могут сэкономить вам пять минут чтения документации, но мы рекомендуем все же начать с ее прочтения.
  2. Устанавливая сервер в первый раз, научитесь это делать в простейшем варианте, а только затем приступайте к конструированию экзотических схем (поддержка экзотических схем в план тестирования не входит и технической поддержкой не обслуживается как минимум потому, что для этого требуется изучение вашей инфраструктуры, что невозможно без подписания NDA).
  3. Правильно прописать DNS зоны (по возможности лучшим вариантом будет если ресурсные записи будут сразу публичными, в противном случае опять же есть шанс потери времени на настройке и отладке внутренних DNS зон).
  4. Сделать необходимые настройки маршрутизации.
  5. Установить и настроить базы данных Postgres. Совместимы следующие базы данных:
    • PostgreSQL
    • Postgres Pro
    • Jatoba
    • Tantor SE
    • Pangolin DB
  6. Установить почтовый сервер Tegu.
  7. Провести первоначальные настройки почтового сервера.
  8. Добавить хранилище почты.
  9. Настроить очереди сообщений.
  10. Провести интеграцию с сервером каталогов (здесь необходимо педантично и весьма скурпулезно подойти к данному разделу, все настройки индивидуальны для каждого сервера каталогов, неправильно прописанные параметры не могут гарантировать верную работу, поэтому мы рекомендуем максимально заострить ваше внимание на данном этапе настройки)
  11. Установить и настроить сертификаты.
  12. Сгенерировать DKIM.
  13. Провести финальную настройку DNS зон.
  14. Установить лицензии.
  15. Начать тестирование продукта.

Правила обращения в тех.поддержку:

  • Помните, краткое описание — лишняя трата Вашего времени. Мы будем вести с Вами диалог до тех пор, пока не будет получена вся информация, необходимая для решения вопроса.
  • Поэтому Ваше обращение должно быть максимально информативно.
  • Описание проблемы должно быть пошаговым, без пропусков действий, без обобщений, без использования неоднозначного сленга, простыми словами, строго в терминах системы.
  • Предоставьте информацию о вашей системе. Для этого выполните команду /opt/tegu/bin/teguctl dump и верните нам ее вывод.
  • Включите и проанализируйте сообщения системного журнала. Для чего воспользуйтесь командой journalctl -f -u tegu -n 200 -a
  • Если вы не владеете английским языком для чтения журнала, воспользуйтесь переводчиком.
  • Обращаясь в тех.поддержку приведите часть журнала, относящуюся к описываемой проблеме.
  • По возможности сопровождайте описание скриншотами.
  • Описывая свои действия, пожалуйста обязательно приводите ссылки на документацию, согласно которой вы выполняли работу.

1. Архитектура TEGU Enterprise

TEGU Enterprise представляет собой один скомпилированный файл, который умеет работать и запускаться абсолютно на всех современных операционных системах Linux основанных на systemd, а так же нет каких-либо зависимостей от системных библиотек.

Все данные TEGU (конфигурация, временные данные, письма, адресные книги и события календарей) Enterprise хранит в СУБД.

По умолчанию должно быть создано три базы:
  1. Хранения конфигурации.
  2. Хранения очередей SMTP.
  3. Хранения данных (почтовых сообщений, календарей, адресных книг и пр.).

TEGU Enterprise нигде не хранит (и не синхронизирует) учетные данные пользователей, а ретранслирует запросы к службе каталогов (а значит не позволяет скомпрометировать пароли). В качестве серверов каталогов может выступать Microsoft Active Directory, ALD Pro, FreeIPA, OpenLDAP в неограниченном кол-ве. Как следствие, TEGU Enterprise не вносит изменения в LDAP, в том числе, не меняет пароли учётных записей.

Необходимые компоненты

  1. Операционная система Linux Debian 12 (в целом ОС может быть любая по вашему выбору, под вашу ответственность и поддержку соответствующего вендора ОС)
  2. База данных Postgres 13 и выше
  3. Сертификаты Letsencrypt
  4. Сервер каталогов (подразумевается что он у вас есть установлен и настроен)
  5. Проброс портов 25,80,465,993,8809,9999 на маршрутизаторе
  6. Сетевая доступность каталогов LDAP и СУБД

Получение TEGU Enterprise

2. Предварительная настройка зоны DNS

DNS (Domain Name System) - это глобальная распределенная база данных, хранящая записи для каждого домена интернет.

Для успешной работы почтового сервера, необходимо правильно и грамотно один раз прописать DNS зоны и забыть про них.
Как правило, на практике я встречаю много ошибочных и с одной стороны нелепых конфигураций в DNS зонах:
отсутствие DKIM, MX, SFP или присутствие более одной записи SFP, встречается и такое что некоторые записи прописаны неверно,
в результате чего почта не доходит до сервера просто потому, что DNS не знает о его существовании.

Вывод: DNS — это фундамент от которого зависит будущая работа вашего почтового сервера и игнорировать или пропускать данный раздел категорически не рекомендуется.
Какие необходимо сделать записи в DNS и за что они отвечают?

Запись SOA (Start of Authority) - Описывает основные/начальные настройки зоны.
Для каждой зоны должна существовать только одна запись SOA, и она должна быть первая.

Записи NS (name server) - Указывают сервера, на которые делегирован данный домен.
(как правило, они уже присутствуют когда вы заказываете интернет домен у хостера)

Запись A (address record) - Отображает имя хоста (доменное имя) на адрес IPv4.
Для каждого сетевого интерфейса машины должна быть сделана одна A-запись.

Записи MX (mail exchange) - Указывают хосты для доставки почты, адресованной домену.
(пожалуй самая главная запись, без которой работа почтовой системы невозможна)

Запись TXT для DKIM - механизм, позволяющий проверить является ли отправитель достоверным или нет.
Проверка осуществляется с помощью цифровой подписи, публичная часть которой находится в DNS соответствующей зоны.
DKIM защищает от отправки сообщения с подменой адреса отправителя.

Запись TXT для DMARC - механизм снижения количества спамовых и фишинговых писем.
DMARC описывает действие, которое должен совершить сервер для писем, которые не прошли проверку DKIM и SPF.
А также описывает адрес, на который раз в сутки будет отправляться отчет об этих действиях.

Обратная зона DNS - это особая доменная зона, которая позволяет совершить обратное разрешение доменных имен относительно IP-адресов.
Для обратной зоны фактически разрешена только запись одного типа А, называемая PTR.

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

При начальной настройке почтового сервера в основных настройках, сервер с недавних пор сам предлагает какие необходимо сделать записи в DNS зоне.
Но если вы по каким либо причинам не знаете или не понимаете что необходимо прописать, этот пункт можно перенести на тот момент, когда мы начнем настраивать почтовый сервер после всех настроек там появится подсказка со всеми параметрами.
А если вы уже сделали все необходимые записи, сейчас самое время проверить DNS зоны.

Проверка записей 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.

Проверка записей CNAME:

$ host mail.tegu.online
mail.tegu.online has address 79.137.210.127

Проверка записей MX:

$ host -t mx tegu.online
tegu.online mail is handled by 10 mail.tegu.online.

Проверка записи TXT для SPF:

$ host -t txt tegu.online
tegu.online descriptive text "v=spf1 mx -all" 

Проверка записи TXT для DMARC:

$ host -t txt _dmarc.tegu.online
_dmarc.tegu.online descriptive text "v=DMARC1; p=quarantine; rua=mailto:abuse@tegu.online" 

Проверка записи 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" 

3. Настройка маршрутизатора

Проброс портов наружу для корректной работы сервера.

Стандартные TCP порты для почтового сервера:

25,80,465,993,8809,9999

На маршрутизаторах с прошивкой 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

Обратите также внимание: мы крайне не рекомендуем использовать PgBouncer
В силу специфики работы Postgres установка СУБД и TEGU Enterprise на одной вычислительной ноде не рекомендуется и не поддерживается.

Подготовка к настройке

Настройка и установка системной локали по умолчанию

dpkg-reconfigure locales

выбираем
ru_RU.UTF-8

Установка, настройка и изменение часового пояса

timedatectl set-timezone Europe/Moscow

Установка Postgres

apt install postgresql postgresql-contrib

Проверяем статус службы.

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

Создание пользователя tegu

Переходим в postrges

su - postgres -s /bin/bash

Создаем пользователя:


createuser -d -S -E -P tegu

Создание баз данных

Создаем 3 базы данных.

tegu_queue - база данных очередей
tegu_mailboxes - база данных почтового хранилища
tegu_settings - база данных настроек почтового сервера

createdb -E UTF-8 -O tegu tegu_queue
createdb -E UTF-8 -O tegu tegu_mailboxes
createdb -E UTF-8 -O tegu tegu_settings

Настройка доступа из подсетей

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

# 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 адрес с которого можно подключиться к базе данных.

Для примера:

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

pg_ctlcluster 15 main restart

Посмотреть какие базы данных у есть на сервере

psql -U postgres -c "\l+" 

Как удалить базы данных

psql    
DROP DATABASE tegu_mailboxes;

Как проверить подключение к серверу баз данных

psql -U  tegu -d tegu_settings -h 172.16.10.2 -p 5432 -W
-U (имя пользователя
-d (имя базы данных)
-h (хост сервера базы данных)
-p (порт)
-W (пароль)

5. Установка почтового сервера TEGU Enterprise

ТАКЖЕ ОБРАТИТЕ ВНИМАНИЕ: на то, что утилита teguctl имеет полный доступ к параметрам сервера, следовательно, для обеспечения безопасности необходимо выставить ей нужные права на запуск.

Важно - перед установкой необходимо проверить установлен ли в системе Postfix
или какой-либо другой почтовый сервер, если да, то его необходимо удалить, в противном случае он будет нам мешаться и занимать порты.

В Debian это можно сделать так:

Проверить

  systemctl status postfix

Удалить

  apt purge postfix

Настройка и установка системной локали по умолчанию.

dpkg-reconfigure locales

выбираем
ru_RU.UTF-8

Установка, настройка и изменение часового пояса

timedatectl set-timezone Europe/Moscow

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

Переходим на страницу с дистрибутивами. https://downloads.mbk-lab.ru/
копируем ссылку, на момент написания статьи с версией tegu-ent-v1.42.18-x86_64.tar.gz
Не мало важно, не перепутайте архитектуру, дело в том что Tegu компилируется как под x86_64, так и под arm архитектуры.

Далее в консоли вставляем ссылку с командой wget

wget https://downloads.mbk-lab.ru/stable/enterprise/x86_64/1.42/tegu-ent-v1.42.18-x86_64.tar.gz

Распаковываем здесь же

$ tar -xvf tegu-ent-v1.42.18-x86_64.tar.gz
tegu-ent-v1.42.18-x86_64/
tegu-ent-v1.42.18-x86_64/sbin/
tegu-ent-v1.42.18-x86_64/sbin/tegu

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


$ mkdir /opt/tegu
$ mkdir /opt/tegu/{bin,sbin,data,certs}

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


$ cp tegu-ent-v1.42.18-x86_64/sbin/* /opt/tegu/sbin/
$ cp tegu-ent-v1.42.18-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 = false

[WEB]
adminPassword = admin
httpPort = 8888
httpsPort = 9999
ctlPort = 8899

Начиная с версии 1.46.12 конфиг изменен, добавлен новый параметр: crushreport.

crushReportsCount - количество последних отчётов, которые будут сохранены.
Ранее созданные будут вычищены.
Папка с отчётами {dataDir}/crash_reports создается автоматически.

[global]
dataDir = /opt/tegu/data

[Log]
debug = false
crushReportsCount = 10

[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.

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

6. Настройка сервера TEGU Enterprise

Подключение базы данных конфигурации

Заходим в web интерфейс по своему ip адресу.

http://10.46.46.10:8888

Первое, что мы увидим, выбор типа базы данных, мы выбираем postgreSQL.

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

Нажимаем сохранить параметры.

После сохранения почтовый сервер перезапустится и перед вами предстанет полноценный web интерфейс, который нам и нужно будет последовательно настроить.
Первое, что мы увидим — информационная панель, в которой нас сразу привлекает внимание отсутствие лицензии.
Лицензию можно будет установить либо потом, либо сразу, на настройки ее отсутствие никак не влияет.
Для установки лицензии необходимо открыть в панели раздел - настройки → лицензия → загрузить файл лицензии.

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

Подключение базы данных хранилища

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

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

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

1. Основные настройки:

В моем случаем здесь будет следующая настройка: mail.tegu.online

Если DNS зоны прописаны верно, то при пинге данного ресурса мы увидим что ресурс отвечаем внешним ip адресом.

Для настройки остальных параметров необходимо добавить почтовый домен:

Важно: Обратите внимание на параметр - Почтовый домен.
Здесь мы указываем интернет домен, в нашем случаем — tegu.online, но никак не mail.tegu.online

После нажатия кнопки добавить домен, мы попадаем в настройки хранилища почты: опять выбираем в качестве хранилища Postgres.


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

Здесь же можно установить квоту на все почтовые ящики, а также включить папку восстановления,
это новая функция которая позволит вам в будущем восстанавливать удаленные сообщения из корзины.

Подключение базы данных очереди сообщений

Внимание, если не настроить очередь, то 25 порт соответственно не поднимется.

При настройке очереди сообщений в качестве обработчика выбираем PostgreSQL

Заполняем все данные, должно получиться примерно так.

Проверяем доступность сервера SQL и сохраняем параметры.

Подключение сервера каталогов

Анализ структуры сервера каталога

Утилита 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.

Настройка провайдера БД пользователей в TEGU Enterprise

• Поле 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 - так как мы используем OpenLDAP,
такой вариант работает также и с Microsoft AD, но если вы в качестве сервера каталогов используете FreeIPA или ALD Pro,
то BindDN должен быть полным DN (uid=user,ou=org_unit,dc=domain,dc=com)

Пример подключения к MS Active Directory.

Установка и генерация сертификатов Letsencrypt

Центр сертификации, предоставляющий бесплатные криптографические сертификаты X.509
для шифрования передаваемых через интернет данных HTTPS и других протоколов,
используемых серверами в Интернете.
Процесс выдачи сертификатов полностью автоматизирован.

Центр сертификации Let’s Encrypt выдаёт сертификаты со сроком действия в 90 дней.
Для получения сертификата должны быть проброшены порты: 80, 443

Важно!

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

Let's Encrypt прекращает поддержку уведомлений по электронной почте об истечении срока действия?
Начиная с 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

где на выходе вы получите следующий результат:

Для Debian дистрибутивов.

Проверяем обновления пакетов

 
apt update 

Устанавливаем Letsencrypt

 
apt 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 7.3

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

 
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

Автообновление сертификатов

создаем папку 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 

Важно помнить что для успешной атоматической генерации сертификатов, порты 80 и 443 должны быть проброшены наружу.

После того как все настройки выполнены только теперь можно проверять какие порты слушает почтовый сервер.

Установка утилиты net-tool

sudo apt install net-tools
 
netstat -tulpn | grep 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

Генерация DKIM

Переходим в раздел DKIM, нажимаем кнопку

Добавить ключь DKIM.

7. Финальная настройка зоны DNS

Ваш сервер TEGU имеет подскажу по финальной настройке зоны DNS.
Вы найдете Рекомендации для зоны DNS на дашборде административного интерфейса.

Рекомендация содержит все необходимые записи, включая DMAC, DKIM, ресурсные записи (необходимые для автонастройки почтовых программ).
Перенесите их на ваш сервер DNS в требуемом формате.

8. Управление почтовыми ящиками

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

Логин;
Пароль;
Поле Email должно содержать email-адрес пользователя в полном формате. Пример: test@tegu.online

Условие для создания почтового ящика

Управление почтовыми ящиками пользователей осуществляется двумя способами:
  1. Созданием учетной записи на сервере каталогов (интегрированным с почтовым сервером). Этот способ является преимущественным для большей части информационных систем.
Для создания почтового ящика в учетной доменной записи необходимо задать:
  • Логин;
  • Пароль;
  • Поле Email должно содержать email-адрес пользователя в полном формате. Пример:

Остальные поля являются необязательными, но рекомендованными. К примеру квота и т.п.

Создание почтового ящика

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

Кеширование необходимо, чтобы в случае DDOS-а почтовый сервер не завалил запросами сервер каталогов.
По умолчанию время кеширования составляет 10 секунд и вы можете самостоятельно изменить его с помощью параметра "Провайдеры БД пользователей/<выбранный провайдер>/Cache TTL (seconds)".

Это обстоятельство означает, что сервер не знает от существовании вашего пользователя, созданного на сервере каталогов до тех пор, пока не возникнет необходимость его авторизации.

Необходимость авторизации возникает когда:

  • Сервер получил письмо в адрес этого пользователя;
  • Сервер получил письмо от этого пользователя;
  • Пользователь настраивает клиентское ПО или регистрируется на сайте веб-мэйла.

Если таких ситуаций не было, но сервер не знает о существовании и, как следствие, не создает почтовый ящик. Более того, этот пользователь не участвует в подсчете использованных лицензий.

Однако, при первой попытке успешно авторизации почтовый ящик создается автоматически.

Удаление почтового ящика

Рассмотрим обратную ситуация. Вы удалили пользователя в домене и пользовательский аккаунт больше не существует. Это означает только то, что сервер не получает запросов на авторизацию, но это не означает, что ящик должен быть удален. Он останется на почтовом сервере.
Таким образом, это означает, что удалять ставшие ненужными ящики вы должны самостоятельно (вручную).

Для удаления ящика используйте диалог "Хранилища почты/Панель управления <соответствующего домена>/Почтовые ящики".