Проект

Общее

Профиль

Действия

Инструкция по установке и эксплуатации
почтовых серверов Tegu, Tegu Professional, Tegu Advanced, Tegu Enterprise версии 1.15.0

1. Введение, функциональные возможности и выбор редакции Tegu

1.1. Что такое Tegu

Tegu – это линейка полностью отечественных современных почтовых серверов, масштабируемых от начального уровня до уровня кластеров для построения корпоративных и облачных почтовых систем.

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

Базовая версия разрабатывается и распространяется согласно лицензии GPL, остальные редакции поставляются по собственным коммерческим лицензиям.

Tegu в состоянии работать как автономно (standalone), так и в интеграции со множеством контроллеров LDAP/MS Active Directory, а также в виде мультисерверного кластера, что делает решение отказоустойчивым и масштабируемым.

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

Весь процесс мониторинга и управления сервером осуществляется через веб-панель администрирования и не требует знания Linux.

1.2. Какие почтовые клиенты работают с Tegu

Tegu реализует только открытые (стандартные) почтовые протоколы (IMAP, SMTP, CakDAV, CardDAV, WebDAV) и принципиально не поддерживает проприетарные протоколы (к примеру MAPI).

Таким образом, с Tegu совместимы все почтовые программы, поддерживающие стандартные протоколы на всех операционных системах для десктопов и мобильных устройств. Таковыми могут быть:

  • Mozilla Thunderbird
  • Apple Mail
  • Evolution
  • Spark
  • Mailspring
  • Postbox
  • eM Client
  • Pronto Pro!
  • Почтовый клиент 1С
  • THE BAT!
  • MS Outlook
    и многие другие...

Клиентам все еще популярного клиента MS Outlook следует обратить внимание, что в базовой поставке клиент способен работать с почтой по протоколам IMAP и SMTP, но не поддерживает адресные книги и календарь. Для реализации этой возможности необходимо дополнительно использовать бесплатный плагин Outlook CalDav Synchronizer

1.3. Как выбрать ОС, аппаратную платформу и рассчитать аппаратные ресурсы

Tegu поставляется для всех версий Linux и в том числе для отечественных ОС.
Соответствующими сертификатами подтверждена совместимость с:

Tegu поставляется для нескольких аппаратных платформ. В т.ч.:

  • x86_64
  • aarch64

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

1.4. Как выбрать редакцию Tegu

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

1.4.1. Сравнительная таблица редакций Tegu

Редакция Tegu Tegu Professional Tegu Advanced Tegu Enterprise
Лицензия GPL Коммерческая Коммерческая Коммерческая
Исходный код +
Регистрация в Росреестре Запись в реестре №9811 от 18.03.2021 Запись в реестре №10882 от 23.06.2021 Запись в реестре №11045 от 12.07.2021 Запись в реестре №10820 от 25.06.2021
Подтвержденная совместимость с отечественными ОС ALT Linux, РЕД ОС
Стоимость Для запроса стоимости заполните форму
Электронная почта
Служба приёма/отправки сообщений SMTP + + + +
Служба доступа к почтовым ящикам пользователей IMAP/SMTP + + + +
Система обработки входящих писем в соответствии с правилами + + + +
Централизованное хранилище + +
Хранение почты в maildir + + + +
Хранение почты в БД PostgresSQL + +
Отказоустойчивый мультисерверный кластер +
Квотирование почтовых ящиков + + + +
Поиск сообщений + + + +
Мастер-пользователь + + + +
Администрирование
Полный графический интерфейс управления + + + +
Журнал активности сервера Log + + + +
Защита
Серый список отправителей + + + +
Чёрные списки адресов серверов + + + +
Система проверки политики домена для отправителя + + + +
Возможность интеграции
Аутентификация через LDAP/MS Active Directory + + +
Поддержка нескольких интернет-доменов + + +
Средства для миграции imapsync + + + +
Поддержка БД PostgresSQL + +
Backup and Restore в реальном времени + + + +
Антиврус/Спамфильтр Kaspersky + + + +
Антиврус/Спамфильтр Dr.Web + + + +
Веб-клиент адресных книг NextCLoud + + +
Веб-клиент календарей NextCLoud + + +
Веб-клиент электронной почты RoundeCube + + +
Веб-клиент электронной почты RainLoop + + +
Корпоративный месенджер XMPP + + +
Сопровождение
Сообщества и форум + + + +
Сопровождение по email и телефону
Премиум-сопровождение 24х7
Услуги интеграции

1.4.2. Описание редакций Tegu

1.4.2.1. Tegu (GPL)

Tegu - это полностью отечественный современный почтовый сервер начального уровня, работающий в среде ОС Linux, распространяемый под лицензией GPL. Сервер позволяет организовать обмен с любыми почтовыми серверами по протоколу SMTP, а также поддерживает почтовых клиентов по протоколу IMAP/SMTP.
Сервер отличает простота установки и удобство администрирования через веб-интерфейс.

Базовые функции редакции

  • Регистрация в реестре отечественного ПО Минцифры России
  • Подтверждена совместимость с отечественными ОС Альт Линукс и РЕД ОС
  • Поддержка протоколов IMAP/SMTP
  • Система проверки политики домена для отправителя (SPF)
  • Подпись DKIM для исходящих писем
  • Поддержка нескольких интернет-доменов
  • Поддержка локальной БД пользователей в формате JSON в иерархии групп
  • Система обработки входящих писем в соответствии с правилами
  • Хранение почты в maildir
  • Квотирование почтовых ящиков
  • Мастер-пользователи
  • Полный графический интерфейс управления
  • Журнал активности сервера Log
  • Серый список отправителей
  • Чёрные списки адресов серверов
  • Система проверки политики домена для отправителя
  • Возможность интеграции с антивирусными системами Kaspersky и Dr.Web
  • Возможность интеграции с веб-клиентами адресных книг, календарей и электронной почтой NextCLoud, RoundeCube и RainLoop

Функции старших редакций

  • Tegu Professional
    • Аутентификация через LDAP/MS Active Directory с неограниченным количество доменных контроллеров различного типа
  • Tegu Advanced
    • Централизованное хранилище
    • Хранение почты в БД PostgresSQL
  • Tegu Enterprise
    • Отказоустойчивый мультисерверный кластер

1.4.2.2. Tegu Professional

Tegu Professional - это полностью отечественный современный почтовый сервер корпоративного уровня, работающий в среде ОС Linux, распространяемый под собственной лицензией. Сервер позволяет организовать обмен с любыми почтовыми серверами по протоколу SMTP, а также поддерживает почтовых клиентов по протоколу IMAP/SMTP. Авторизация почтовых клиентов осуществляется с помощью неограниченного количества контроллеров домена. Сервер отличает простота установки и удобство администрирования через веб-интерфейс.

Отличия данной редакции

  • Аутентификация через LDAP/MS Active Directory с неограниченным количество доменных контроллеров различного типа

Базовые функции

  • Регистрация в реестре отечественного ПО Минцифры России
  • Подтверждена совместимость с отечественными ОС Альт Линукс и РЕД ОС
  • Поддержка протоколов IMAP/SMTP
  • Система проверки политики домена для отправителя (SPF)
  • Подпись DKIM для исходящих писем
  • Поддержка локальной БД пользователей в формате JSON в иерархии групп
  • Поддержка нескольких интернет-доменов
  • Система обработки входящих писем в соответствии с правилами
  • Хранение почты в maildir
  • Квотирование почтовых ящиков
  • Мастер-пользователи
  • Полный графический интерфейс управления
  • Журнал активности сервера Log
  • Серый список отправителей
  • Чёрные списки адресов серверов
  • Система проверки политики домена для отправителя
  • Возможность интеграции с антивирусными системами Kaspersky и Dr.Web
  • Возможность интеграции с веб-клиентами адресных книг, календарей и электронной почтой NextCLoud, RoundeCube и RainLoop

Функции старших редакций

  • Tegu Advanced
    • Централизованное хранилище
    • Хранение почты в БД PostgresSQL
  • Tegu Enterprise
    • Отказоустойчивый мультисерверный кластер

Топология

1.4.2.3. Tegu Advanced

Tegu Advanced - это полностью отечественный современный почтовый сервер корпоративного уровня, работающий в среде ОС Linux, распространяемый под собственной лицензией. Сервер позволяет организовать обмен с любыми почтовыми серверами по протоколу SMTP, а также поддерживает почтовых клиентов по протоколу IMAP/SMTP. Авторизация почтовых клиентов осуществляется с помощью неограниченного количества контроллеров домена. Хранение почты может осуществляться в централизованной БД. Сервер отличает простота установки и удобство администрирования через веб-интерфейс.

Отличия данной редакции

  • Централизованное хранилище
  • Хранение почты в БД PostgresSQL

Базовые функции

  • Регистрация в реестре отечественного ПО Минцифры России
  • Подтверждена совместимость с отечественными ОС Альт Линукс и РЕД ОС
  • Поддержка протоколов IMAP/SMTP
  • Система проверки политики домена для отправителя (SPF)
  • Подпись DKIM для исходящих писем
  • Аутентификация через LDAP/MS Active Directory с неограниченным количество доменных контроллеров различного типа
  • Поддержка локальной БД пользователей в формате JSON в иерархии групп
  • Поддержка нескольких интернет-доменов
  • Система обработки входящих писем в соответствии с правилами
  • Хранение почты в maildir
  • Квотирование почтовых ящиков
  • Мастер-пользователи
  • Полный графический интерфейс управления
  • Журнал активности сервера Log
  • Серый список отправителей
  • Чёрные списки адресов серверов
  • Система проверки политики домена для отправителя
  • Возможность интеграции с антивирусными системами Kaspersky и Dr.Web
  • Возможность интеграции с веб-клиентами адресных книг, календарей и электронной почтой NextCLoud, RoundeCube и RainLoop

Функции старших редакций

  • Tegu Enterprise
    • Отказоустойчивый мультисерверный кластер

Топология

1.4.2.4. Tegu Enterprise

Tegu Enterprise - это полностью отечественный современный отказоустойчивый мультисерверный почтовый сервер, работающий в среде ОС Linux, распространяемый под собственной лицензией. Сервер позволяет организовать обмен с любыми почтовыми серверами по протоколу SMTP, а также поддерживает почтовых клиентов по протоколу IMAP/SMTP. Сервер отличает простота установки и удобство администрирования через веб-интерфейс.

Отличия данной редакции

  • Отказоустойчивый мультисерверный кластер

Базовые функции

  • Регистрация в реестре отечественного ПО Минцифры России
  • Подтверждена совместимость с отечественными ОС Альт Линукс и РЕД ОС
  • Поддержка протоколов IMAP/SMTP
  • Система проверки политики домена для отправителя (SPF)
  • Подпись DKIM для исходящих писем
  • Аутентификация через LDAP/MS Active Directory с неограниченным количество доменных контроллеров различного типа
  • Поддержка локальной БД пользователей в формате JSON в иерархии групп
  • Поддержка нескольких интернет-доменов
  • Централизованное хранилище
  • Система обработки входящих писем в соответствии с правилами
  • Хранение почты в maildir
  • Хранение почты в БД PostgresSQL
  • Квотирование почтовых ящиков
  • Мастер-пользователи
  • Полный графический интерфейс управления
  • Журнал активности сервера Log
  • Серый список отправителей
  • Чёрные списки адресов серверов
  • Система проверки политики домена для отправителя
  • Backup and Restore в реальном времени
  • Возможность интеграции с антивирусными системами Kaspersky и Dr.Web
  • Возможность интеграции с веб-клиентами адресных книг, календарей и электронной почтой NextCLoud, RoundeCube и RainLoop

Топология

1.4.3. Простейший алгоритм выбора редации Tegu

Ответьте на вопрос Tegu (GPL) Tegu Professional Tegu Advanced Tegu Enterprise
Количество моих пользователей не превышает 1000 и доменная авторизация не нужна (standalone server) +
Мне нужна доменная авторизация либо количество пользователей более 1000 +
Мне необходимо централизованное хранилище почты в СУБД либо количество пользователей более 3000 +
Мне необходимо отказоустойчивое решение на базе симметричного кластера либо количество пользователей более 10000 +

1.5. Как получить дистрибутив

1.6. Лицензионное соглашение

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

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

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

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. Установка

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

Скачанный архив распаковываем в любую папку (например в /opt/).
О том, как скачать дистрибутив, читайте в п. 1.5.
Папку с версией (tegu-x.x.x) переименовывем в tegu.

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

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

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

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

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

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

[global]
dataDir = /opt/tegu/data
pluginDir = /opt/tegu/plugins

[Log]
debug = false

[WEB]
adminPassword = admin

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

Для запуска через systemd необходимо добавить файл /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

В User и Group указываем системные пользователя и группу, от которых планируется запуск сервера. Устанавливаем права на каталоги:

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

mail - пользователь, от которого запускаем сервер.

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

systemctl enable tegu.service
systemctl start tegu.service

Вы можете проконтролировать правильно запуска сервисов:

systemctl status tegu.service

2.3. Настройка

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

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

Для работы серверу минимально необходимы следующие параметры:

  • База данных параметров сервера. Сервер может хранить параметры в локальном хранилище, либо в СУБД (для редакций Advanced и Enterprise). Обратите внимание, что хранение параметров в СУБД централизовано и при настройке нод мультисерверного кластера (в редакции Enterprise) вам не придется повторять их для каждой ноды, достаточно лишь указать путь к существующей базе данных и ноды настроятся автоматически. Для указания типа хранилища параметров выберите соответствующий тип БД параметров
  • База данных пользователей также может находиться в нескольких местах. В редакции Tegu (GPL) доступно только локальное хранилище БД пользователей в формате JSON, для коммерческих редакций вы можете выбрать Провайдера БД пользователей типа LDAP.
  • В разделе Хранилища почты необходимо добавить тип и расположение хранилища почты. Вы можете добавлять любое количество хранилищ почты.
  • В разделе Очередь SMTP необходимо настроить обработчик очереди SMTP.
  • Порты SSL станут доступны, если файлы сертификата и ключа существуют и доступны для чтения по указанным в настройках путям.

2.3.1. Tegu Professional

  • В разделе Система открываем Панель управления модуля License manager, принимаем лицензионное соглашение, перехоим в раздел Загрузить файл лицензии и загружаем полученный файл лицензии.
  • В разделе Провайдеры БД пользователей добавляем настройки источника LDAP (LDAP User DB).

2.3.2. Tegu Advanced

  • В разделе Система открываем Панель управления модуля License manager, принимаем лицензионное соглашение, перехоим в раздел Загрузить файл лицензии и загружаем полученный файл лицензии.
  • В разделе Провайдеры БД пользователей добавляем настройки источника LDAP (LDAP User DB).
  • В разделе Хранилища почты добавлем подключение к PostgreSQL (PostgreSQL mail storage).

2.3.3. Tegu Enterprise

  • После первого входа будет предложено выбрать тип и настроить БД параметров. Выбираем PostgreSQL settings database и указываем параметры подключения.
  • В разделе Система открываем Панель управления модуля License manager, принимаем лицензионное соглашение, перехоим в раздел Загрузить файл лицензии и загружаем полученный файл лицензии.
  • В разделе Провайдеры БД пользователей добавляем настройки источника LDAP (LDAP User DB).
  • В разделе Хранилища почты добавлем подключение к PostgreSQL (PostgreSQL mail storage).
  • В разделе Очередь SMTP выбираем тип PostgreSQL smtp queue и указываем параметры подключения.

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

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

3. Инструкция по установке почтового Web-интерфейса

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

  • Реализовать веб-интерфейс для работы с почтой
  • Установить сервер календарей
  • Установить сервер адресных книг
  • Установить сервер WebDAV для хранения файлов

Веб-интерфейс предоставляется на базе открытого ПО NextCloud. Получить дистрибутив мы можете с нашего репозитория https://git.mbk-lab.ru/MBK-Lab/nextcloud

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

  • Nginx
  • PHP modules
  • certbot
  • PostgreSQL
  • unzip

Устанавливаем Nginx.

sudo apt install nginx

Устанавливаем модули PHP.

sudo apt install php7.4 php7.4-fpm php7.4-common php7.4-pgsql php7.4-cli php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp php-imagick php7.4-opcache php7.4-readline


Устанавливаем certbot
sudo apt install certbot python3-certbot-nginx


Устанавливаем PostgreSQL
sudo apt install postgresql postgresql-contrib

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

sudo apt install unzip

Скачиваем архив с стабильной версией Nexcloud с репозитория МБК Лаб https://git.mbk-lab.ru

wget https://cloud.mbk-lab.ru/index.php/s/TinYxyHsq3zLL64/download/nextcloud-22.1.1.zip

3.2. Конфигурируем компоненты

Конфигурируем PostgreSQL

Подключаемся к PostgreSQL

sudo -u postgres psql

Создаем пользователя и базу для NextCloud


CREATE USER nextcloud WITH PASSWORD 'your_password';
CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE nextcloud OWNER TO nextcloud;
GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud;
\q

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


sudo unzip nextcloud-20.0.5.zip -d /usr/share/nginx/

Меняем владельца для каталога NextCLoud

sudo chown www-data:www-data /usr/share/nginx/nextcloud/ -R

Создаем папку для NextCloud data

sudo mkdir /usr/share/nginx/nextcloud-data

Меняем владельца на папку nextcloud-data

sudo chown www-data:www-data /usr/share/nginx/nextcloud-data -R

Удаляем дефолтный сайт Nginx по умолчанию.

sudo mv /etc/nginx/sites-enabled/default /home/$USER

Создаем новый конфиг Nginx для Nextcloud

sudo nano /etc/nginx/conf.d/nextcloud.conf

Добавляем конфиг со следующим содержанием:

# You need to change domain and PHP version
server {
    listen 80;
    listen [::]:80;
    server_name nextcloud.your-domain.com;

    # Add headers to serve security related headers
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;

    add_header X-Frame-Options "SAMEORIGIN";

    # Path to the root of Nextcloud installation
    root /usr/share/nginx/nextcloud/;

    access_log /var/log/nginx/nextcloud.access;
    error_log /var/log/nginx/nextcloud.error;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
    # last;

    location = /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
       return 301 $scheme://$host/remote.php/dav;
    }

    location ~ /.well-known/acme-challenge {
      allow all;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Disable gzip to avoid the removal of the ETag header
    gzip off;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
       rewrite ^ /index.php;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
       deny all;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
       deny all;
     }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
       include fastcgi_params;
       fastcgi_split_path_info ^(.+\.php)(/.*)$;
       try_files $fastcgi_script_name =404;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php7.4-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
       try_files $uri/ =404;
       index index.php;
    }

    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;
        # Optional: Don't log access to assets
        access_log off;
   }

   location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log off;
   }
}

Проверяем конфигурацию Nginx на наличие ошибок.

sudo nginx -t

Включаем и запускаем Nginx

sudo systemctl enable --now nginx

Включаем и запускаем php-fpm

sudo systemctl enable --now php7.4-fpm

Генерируем для сайта сертификат SSL

sudo certbot --nginx --agree-tos --redirect --staple-ocsp --email your-email-address -d nextcloud.your-domain.com

Добавляем в конфиг /etc/nginx/conf.d/nextcloud.conf следующие параметры:

add_header Strict-Transport-Security "max-age=31536000" always;
listen 443 ssl http2; # managed by Certbot

Завершаем настройку непосредственно перейдя на nextcloud.your-domain.com

3.3. Расширенные настройки

Увеличение лимита памяти для PHP /etc/php/7.4/fpm/php.ini

memory_limit = 512M

Увеличение время выполнения

max execution time 256

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


sudo systemctl reload php7.4-fpm

Конфигурирование PHP для правильных запросов переменных /etc/php/7.4/fpm/pool.d/www.conf

clear_env = no

Увеличение ограничения размера загружаемых файлов /etc/nginx/conf.d/nextcloud.conf

client_max_body_size 1024M;

Изменение параметра upload_max_filesize до 1024M /etc/php/7.4/fpm/php.ini

Перезапуск Nginx и php-fpm:

sudo systemctl reload nginx
sudo systemctl reload php7.4-fpm

Конфигурирование Redis.

sudo apt install redis-server php-redis

Необходимо добавить код указанный ниже в конфиг /usr/share/nginx/nextcloud/config/config.php перед строкой );

'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
     ),

Перезапуск Nginx and php-fpm

sudo systemctl restart nginx php7.4-fpm

Использование Cron вместо ajax

Открыть crontab файл


sudo crontab -u www-data -e

Добавить задание и сохранить файл.

*/5 * * * * php -f /usr/share/nginx/nextcloud/cron.php

Не отображать использованную версию Nginx с вледующем конфиге: /etc/nginx/nginx.conf

server_tokens off;

Скрыть “отображение получения свободного аккаунта в Nextcloud”

'simpleSignUpLink.shown' => false,

3.4. Интеграция с LDAP / AD

Для настройки необходимо перейти в: Настройки -> параметры сервера -> Интеграция LDAP / AD

3.5. Настройка почтового сервера в Nexcloud

Для настройки необходимо перейти в: Настройки -> параметры сервера -> основные настройки.

Переходим на вкладку “пользователи” и вписываем запрос LDAP

(&(objectclass=user)(mail=*))

На вкладке “Учетные данные” вписать следующий запрос LDAP:

(mail=%uid)

На вкладке “Группы” вписываем запрос:

(objectclass=group)

Настройка почтового сервера в Nexcloud.

Для настройки необходимо перейти в: Настройки -> параметры сервера -> основные настройки.

Настройка Rainloop – веб-интерфейс для работы с почтой.

Необходимо в дополнительных параметрах выбрать автоматический вход пользователей.

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

Go to RainLoop Webmail admin panel

Добавить домен и прописать соответствующие настройки почтового сервера:

Настройка завершена.

4. Установка по установке кластера СУБД высокой доступности Master-Slave

Вы уже знаете, что редакции Tegu Advanced и Tegu Enterprise могут хранить базу данных параметров и почту в СУБД Postgres.
Мультисерверная редакция Tegu Enterprise позволяет собрать кластер вычислительных нод Tegu, состоящий из любого количества нод, что позволяет обеспечить отказоустойчивость, а также горизонтально масштабировать мощность сервера. Все они работают симметрично и хранят информацию в СУБД. Однако и сама СУБД может быть собрана по отказоустойчивой схеме. Как это сделать описано в данном разделе.

Обратите внимание, что сборка кластера Postgres не имеет прямого отношения в дистрибутиву Tegu. Тем не менее, данная статья может оказаться полезной в практической реализации решения и потому предлагается вашему вниманию.

4.1. Архитектура

  • Три ноды:
    • сервер СУБД - pgc1 (10.1.1.21)
    • сервер СУБД - pgc2 (10.1.1.22)
    • участник кворума pgc3 (10.1.1.23)
  • виртуальный IP - pgc-vip (10.1.1.20)

4.2. Установка пакетов

На серверы СУБД необходимо установить сервер PostgreSQL версии не ниже 12.
На все серверы надо установить pcs, необходимый агент fence (fence_pve, fence_virsh, fence_vmware или др.).
Если в репозитории resource-agents-paf версии ниже 2.3.0, то надо скачать отсюда последнюю стабильную версию.

4.3. Предварительная подготовка

На всех серверах в файле /etc/hosts должны быть сопоставления имён всех нод с их адресами IP.
Также в этом файле должно быть сопоставление имени для виртуального IP.

10.1.1.20 pgc-vip
10.1.1.21 pgc1.lan pgc1
10.1.1.22 pgc2.lan pgc2
10.1.1.23 pgc3.lan pgc3

Отключаем автозапуск PostgreSQL на серверах СУБД:

systemctl stop postgresql-13.service
systemctl disable postgresql-13.service

Также не забываем убедиться, что в SysV тоже выключено (update-rc.d, chkconfig,...)

4.4. Настраиваем репликацию

4.4.1. На сервере pgc1

Если менеджер пакетов не создал системную БД, то надо её создать:

/usr/pgsql-13/bin/postgresql-13-setup initdb

В конец postgresql.conf добавляем параметры:

listen_addresses = '*'
hba_file = '/var/lib/postgresql/13/pg_hba.conf'
include = '../standby.conf'

Файл postgresql.conf может быть либо в /etc/postgresql, либо в в PGDATA (/var/lib/postgresql/13/data).

В файле /var/lib/postgresql/13/standby.conf указываем параметры подключения к мастеру для репликации (это нужно на случай, если она перестанет быть мастером):

primary_conninfo = 'user=repuser host=10.1.1.20 application_name=pgc1'

Переносим pg_hba.conf в папку /var/lib/postgresql/13. Этот файл изначально может быть либо в /etc/postgresql, либо в PGDATA.
В файл pg_hba.conf добавляем запреты и разрешения доступа на репликацию:

host  replication repuser    10.1.1.20/32    reject
local replication all                reject
host  replication all        pgc1        reject
host  replication all        127.0.0.0/8    reject
host  replication all        ::1/128        reject
host  replication all        10.1.1.21/32    reject
host  replication repuser    10.1.1.22/32    trust

Временно назначаем виртуальный IP:
ifconfig eth0:1 10.1.1.20/24

Временно запускаем PostgreSQL:
systemctl start postgresql-13.service

Переходим под системного пользоваеля postgres и создаём роль для репликации:
su - postgres
psql
CREATE USER repuser REPLICATION;

Выходим из psql (Ctrl+D) и из пользователя postgres (Ctrl+D).

4.4.2. На сервере pgc2

Чистим PGDATA:

rm -rf /var/lib/postgresql/13/data/*

Переходим под пользователя postgres и скачиваем реплику с мастера:
su - postgres
pg_basebackup -h pgc-vip -U repuser -D /var/lib/postgresql/13/data -X stream -P

В файле /var/lib/postgresql/13/standby.conf указываем параметры подключения к мастеру для репликации:

primary_conninfo = 'user=repuser host=10.1.1.20 application_name=pgc2'

Создаём файл /var/lib/postgresql/13/pg_hba.conf с таким же содержимым, как и на pgc1, но меняем следующие строки:

host  replication all        pgc1            reject

меняем на
host  replication all        pgc2            reject

host  replication all        10.1.1.21/32    reject

меняем на
host  replication all        10.1.1.22/32    reject

host  replication repuser    10.1.1.22/32    trust

меняем на
host  replication repuser    10.1.1.21/32    trust

Указываем, что это подчинённый сервер:

touch /var/lib/postgresql/13/data/standby.signal

Выходим из пользователя postgres (Ctrl+D).

4.4.3. На сервере pgc1

Останавливаем PostgreSQL:

systemctl stop postgresql-13.service

Убираем виртуальный IP:
ifconfig eth0:1 0.0.0.0

4.5. Настройка кластера

Для начала на всех серверах надо задать один и тот же пароль для пользователя hacluster:

passwd hacluster

Включаем и запускаем демон pcsd на всех нодах:
systemctl enable --now pcsd

На каждой ноде запускаем авторизацию с остальными:

pcs host auth -u hacluster pgc1 pgc2 pgc3

Создаём кластер, выполнив следующее на первой ноде (pgc1):

pcs cluster setup pgsql_cluster pgc1 pgc2 pgc3

Чтобы не было никаких неожиданных спец.эффектов после перезапуска нод, отключаем автозапуск pacemaker-а. На каждой ноде:

pcs cluster disable --all

4.5.1. На сервере pgc1

Включаем кластер:

pcs cluster start --all

Задаём параметры по умолчанию

pcs resource defaults migration-threshold=5
pcs resource defaults resource-stickiness=10
Создаём устройства ограждения (fencing). Здесь приводятся устройства для Proxmox, но в других конфигурациях могут быть другие. Для конкретного типа надо смотреть доку по параметрам.
pcs cluster cib fencing.xml
pcs -f fencing.xml stonith create fence_vm_pgc1 fence_pve pcmk_host_list="pgc1" pcmk_host_check="static-list" ipaddr="10.1.1.199" node_name="vrt1" login="fenceuser@pve" passwd="Qwe123Poi" port="101" power_wait="10" vmtype="lxc" 
pcs -f fencing.xml stonith create fence_vm_pgc2 fence_pve pcmk_host_list="pgc2" pcmk_host_check="static-list" ipaddr="10.1.1.199" node_name="vrt1" login="fenceuser@pve" passwd="Qwe123Poi" port="102" power_wait="10" vmtype="lxc" 
pcs -f fencing.xml stonith create fence_vm_pgc3 fence_pve pcmk_host_list="pgc3" pcmk_host_check="static-list" ipaddr="10.1.1.199" node_name="vrt1" login="fenceuser@pve" passwd="Qwe123Poi" port="103" power_wait="10" vmtype="lxc" 

здесь
  • 10.1.1.199 - адрес любой достуной ноды Proxmox
  • node_name="vrt1" - имя ноды (точно, как указано в самом Proxmox)
  • fenceuser@pve - пользователь Proxmox, который имеет право перезапускать, запускать и останавливать данные ВМ
  • port="101" - vmid виртуалки, для которой создаётся устройство (берётся в Proxmox)
  • vmtype="lxc" - тип виртуалки (в данном случае - контейнер LXC)

Указываем для каждой ноды, что её устройство ограждения на ней же самой сработать не может (сами в себя не стреляем):

pcs -f fencing.xml constraint location fence_vm_pgc1 avoids pgc1=INFINITY
pcs -f fencing.xml constraint location fence_vm_pgc2 avoids pgc2=INFINITY
pcs -f fencing.xml constraint location fence_vm_pgc3 avoids pgc3=INFINITY

И применяем конфигурацию:
pcs cluster cib-push scope=configuration fencing.xml

Создаём ресурс PostgreSQL:

pcs cluster cib cluster1.xml
pcs -f cluster1.xml resource create pgsqld ocf:heartbeat:pgsqlms \
 bindir=/usr/lib/postgresql/13/bin \
 pgdata=/var/lib/postgresql/13/data \
 pghost=/var/run/postgresql \
 op start timeout=60s \
 op stop timeout=60s \
 op promote timeout=30s \
 op demote timeout=120s \
 op monitor interval=15s timeout=10s role="Master" \
 op monitor interval=16s timeout=10s role="Slave" \
 op notify timeout=60s \
 promotable notify=true

здесь

  • bindir - папка с бинарниками PostgreSQL (нужен pg_ctl)
  • pgdata - PGDATA
  • pghost - папка, где PostgreSQL создаёт unix-сокет (файл с именем .s.PGSQL.5432)

Запрещаем этому ресурсу запускаться на сервере участнике кворума (pgc3):

pcs -f cluster1.xml constraint location pgsqld-clone rule resource-discovery=never score=-INFINITY \#uname eq pgc3

Создаём ресурс виртуального IP:

pcs -f cluster1.xml resource create pgsql-pri-ip ocf:heartbeat:IPaddr2 ip=10.1.1.20 cidr_netmask=24 op monitor interval=10s

Привязываем этот ресурс к предыдущему и задаём порядок запуска ресурсов и их остановки:

pcs -f cluster1.xml constraint colocation add pgsql-pri-ip with master pgsqld-clone INFINITY
pcs -f cluster1.xml constraint order promote pgsqld-clone then start pgsql-pri-ip symmetrical=false kind=Mandatory
pcs -f cluster1.xml constraint order demote pgsqld-clone then stop pgsql-pri-ip symmetrical=false kind=Mandatory

Применяем конфигурацию:

pcs cluster cib-push scope=configuration cluster1.xml

Через несколько секунд будут запущены все ресурсы.

Мониторим командой crm_mon на любой ноде.

5. Организация балансировки вычислительных нод Tegu

Организация балансировки вычислительных нод Tegu потребуется вам в случае использования редакции Tegu Enterprise в мультисерверном (кластерном) исполнении. Такая балансировка не имеет прямого отношения к дистрибутиву Tegu т.к. выполняется сетевым оборудованием пользователя.

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

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

#!/usr/bin/env python3
import signal
import socket
import nftables
import time
from systemd.journal import JournalHandler
import logging

log = logging.getLogger('nft_lb')
log.addHandler(JournalHandler())
log.setLevel(logging.INFO)

class ServiceDestination:
    def __init__(self, name, dip):
        self.name = name
        self.dip = dip
        self.online = True

class LbService:
    def __init__(self, name, vip, vport):
        self.name = name
        self.vip = vip
        self.vport = vport
        self.dest = {}

class Event:
    def __init__(self):
        self.shutdown = False

ev = Event()

lb_map = {}

def create_rules():
    nft = nftables.Nftables()
    code, _, __ = nft.cmd('flush table ip lb')
    if code != 0:
        code, _, __ = nft.cmd('create table ip lb')
    nft.cmd('add chain ip lb prerouting { type nat hook prerouting priority 0 ; }')
    nft.cmd('add chain ip lb forward { type filter hook forward priority -10 ; }')
    for svc_name in lb_map.keys():
        nft.cmd(f'add chain ip lb dnat_{svc_name}')
        nft.cmd(f'add rule ip lb prerouting ip daddr {lb_map[svc_name].vip} tcp dport {lb_map[svc_name].vport} counter jump dnat_{svc_name}')
        dest_count = len(lb_map[svc_name].dest)
        dest_list = []
        for dest_num, dest_name in enumerate(lb_map[svc_name].dest.keys()):
            dest_list.append(f'{dest_num} : {lb_map[svc_name].dest[dest_name].dip}')
            nft.cmd(f'add rule ip lb forward ip daddr {lb_map[svc_name].dest[dest_name].dip} tcp dport {lb_map[svc_name].vport} counter mark set 333444555 accept comment "[{svc_name}] -> {dest_name}"')
        nft.cmd(f'add rule ip lb dnat_{svc_name} counter dnat to numgen inc mod {dest_count} map {{ {", ".join(dest_list)} }}')

def recreate_service(svc_name):
    nft = nftables.Nftables()
    dest_list = []
    online_exists = False
    for dest_name in lb_map[svc_name].dest.keys():
        if lb_map[svc_name].dest[dest_name].online:
            dest_list.append(lb_map[svc_name].dest[dest_name].dip)
            online_exists = True
    dest_count = len(dest_list)
    dest_map_list = []
    for num, dest in enumerate(dest_list):
      dest_map_list.append(f'{num} : {dest}')
    nft.cmd(f'flush chain ip lb dnat_{svc_name}')
    if online_exists:
        nft.cmd(f'add rule ip lb dnat_{svc_name} counter dnat to numgen inc mod {dest_count} map {{ {", ".join(dest_map_list)} }}')

def shutdown_lb(sig_num, frame):
    nft = nftables.Nftables()
    nft.cmd('flush table ip lb')
    nft.cmd('delete table ip lb')
    ev.shutdown = True

def check_backends():
    for svc_name in lb_map.keys():
        need_recreate = False
        for dest_name in lb_map[svc_name].dest.keys():
            a_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            a_socket.settimeout(1)
            host = lb_map[svc_name].dest[dest_name].dip
            port = lb_map[svc_name].vport
            if a_socket.connect_ex((host, port)) != 0:
                if lb_map[svc_name].dest[dest_name].online:
                    log.info(f'[{svc_name}] Node "{dest_name}" offline')
                    lb_map[svc_name].dest[dest_name].online = False
                    need_recreate = True
            else:
                if not lb_map[svc_name].dest[dest_name].online:
                    log.info(f'[{svc_name}] Node "{dest_name}" online')
                    lb_map[svc_name].dest[dest_name].online = True
                    need_recreate = True
            a_socket.close()
        if need_recreate:
            recreate_service(svc_name)

def process_config():
    with open('/opt/nft_lb_rules', 'r') as f:
        rules_str = f.read()
    for rule_line in rules_str.split('\n'):
        if rule_line.strip() == '': continue
        svc_name, vip, vport, dest_name, dip = rule_line.split('|')
        if svc_name not in lb_map:
            lb_map[svc_name] = LbService(svc_name, vip, int(vport))
        lb_map[svc_name].dest[dest_name] = ServiceDestination(dest_name, dip)
        create_rules()
if __name__ == '__main__':
    signal.signal(signal.SIGINT, shutdown_lb)
    signal.signal(signal.SIGTERM, shutdown_lb)
    signal.signal(signal.SIGHUP, shutdown_lb)
    process_config()
    tik_count = 0
    while not ev.shutdown:
        if tik_count >= 20:
            check_backends()
            tik_count = 0
            continue
        time.sleep(1)
        tik_count += 1

Данный скрипт использует список правил из файла /opt/nft_lb_rules в следующем формате:

smtp|1.2.3.4|25|node1|10.1.1.11
smtp|1.2.3.4|25|node2|10.1.1.12
smtp|1.2.3.4|25|node3|10.1.1.13
imap|1.2.3.4|993|node1|10.1.1.11
imap|1.2.3.4|993|node2|10.1.1.12
imap|1.2.3.4|993|node3|10.1.1.13
smtps|1.2.3.4|465|node1|10.1.1.11
smtps|1.2.3.4|465|node2|10.1.1.12
smtps|1.2.3.4|465|node3|10.1.1.13
webadm|1.2.3.4|9999|node1|10.1.1.11
webadm|1.2.3.4|9999|node2|10.1.1.12
webadm|1.2.3.4|9999|node3|10.1.1.13

Если в nftables в основной цепоче forward последним правилом настроено отбрасывание всех внешних пакетов, то необходимо исключить из этого правила пакеты с меткой 333444555:
iifname "eth1" mark != 333444555 counter drop

Для настройки автозапуска скрипта балансировщика, надо создать, включить и запустить сервис systemd:

/etc/systemd/system/nft_lb.service

[Unit]
Description=Nftables python balancer
After=multi-user.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/python3 /opt/nft_lb.py

[Install]
WantedBy=multi-user.target

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

6.1. Введение

После того, как Сервер Tegu запущен и работает, можно приступать к настройке, а его работа может полностью контролироваться через любой Веб браузер.

По умолчанию, модуль HTTPS предоставляет доступ к страницам Администрирования Сервера Tegu через TCP порт номер 9999.

6.2. Управление с помощью административного веб-интерфейса

Все страницы Интерфейса управления разделены на восемь разделов.

  1. Настройки
  2. Белый и чёрный списки SMTP
  3. Заблокированные IP
  4. Провайдеры БД пользователей
  5. Хранилища почты
  6. Очередь SMTP
  7. БД параметров
  8. Система

Доступ к ним имеет только пользователь admin, пароль которого можно считать в файле конфигурации сервера (~/tegu.conf, либо /etc/tegu.conf), который создается автоматически во время процедуры установки.
В секции [WEB] вы найдете параметр adminPassword, значение которого равно первоначальному паролю пользователя admin.

6.2.1. Настройки

6.2.1.1. Server name (used in banner and HELO/EHLO)

Поле определяет Имя сервера для сессий SMTP.
Пример: mail.test.tegu.online

6.2.1.2. Full allowed IPs (one per line)

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

6.2.1.3. Allow empty sender email for full-allowed IPs

Параметр определяет Разрешение/Запрещение отправки почты клиентом без заполнения поля MAIL FROM (как правило используется оборудованием).
По умолчанию: Отключено

6.2.1.4. IP SMTP server listen on

Поле определяет Адреса интерфейсов, на которых работает сервер (либо 0.0.0.0 для работы на всех интерфейсах).

6.2.1.5. Port SMTP server listen on

Поле определяет Порт сессий SMTP.
По умолчанию: 25

6.2.1.6. Port SMTPS (SSL) server listen on

Порт сессий SMTP c SSL (SSL станет доступным если файлы сертификата и ключа существуют и доступны для чтения. См Path to SSL certificate. Обратите внимание, что по умолчанию установлен непривилегированный номер для того, чтобы исключить попытку взлома несконфигурированного сервера).
По умолчанию: 465

6.2.1.7. Max number of simultaneous SMTP connections

Параметр определяет Максимальное количество SMTP подключений.
По умолчанию: 100

6.2.1.8. Enable LMTP delivery (IMAP server starts otherwise. Restart required)

Параметр позволяет Включить/Отключить доставку почты на LMTP (к примеру, дополнительный Dovecot).
По умолчанию: Отключено

6.2.1.9. LMTP host connect to

Параметр определяет Хост LMTP.

6.2.1.10. LMTP port connect to

Параметр определяет Порт LMTP хоста.

6.2.1.11. IP IMAP server listen on

Параметр определяет Адрес, который слушает сервер IMAP.
Если введено 0.0.0.0, то слушает на всех адресах.

6.2.1.12. Port IMAP server listen on

Параметр определяет Порт, который слушает сервер IMAP.
По умолчанию: 143

6.2.1.13. Port IMAPS (SSL) server listen on

Параметр определяет Порт, который слушает сервер IMAPS.
По умолчанию: 993

6.2.1.14. Max number of simultaneous IMAP connections

Параметр определяет Максимальное количество соединений IMAP.
По умолчанию: 1000

6.2.1.15. Canonical name for INBOX (show in WEB panel)

Параметр определяет Имя паки по умолчанию для Входящих.
По умолчанию: Входящие

6.2.1.16. Message size in MB

Параметр определяет Максимальный разрешенный размер почтового сообщения в Mb.
По умолчанию: 30Mb.

6.2.1.17. Directory for work data

Параметр определяет Путь к рабочему каталогу (сервер хранит там оперативные глобальные настройки, а также очереди).
По умолчанию: /opt/tegu/data

6.2.1.18. Directory for DKIM keys

Параметр определяет Путь к приватному ключу DKIM (Напомню, что публичный ключ опубликован в зоне DNS).
По умолчанию: /opt/tegu/dkim

6.2.1.19. DKIM selector

Параметр определяет Селектор DKIM (кодовое слово для подписи, должно соответствовать тому, которое указано в зоне DNS).
По умолчанию: mail

6.2.1.20. Path to SSL certificate

Параметр определяет Пусть к публичному ключу SSL.
По умолчанию: /opt/tegu/certs/fullchain.pem

6.2.1.21. Path to SSL private key

Параметр определяет Путь к приватному ключу SSL.
По умолчанию: Path to SSL private key

6.2.1.22. Master-user login separator

Параметр определяет Разделитель, используемый при вводе мастер-логина.
По умолчанию: *

6.2.1.23. Sender domains greylist ignore (one per line)

Параметр определяет Список доменов, для которых отключена технология GreyList.

6.2.1.24. Server/sender greylist record lifetime (hours)

Параметр определяет Время жизни email-адреса в списке GreyList.
По умолчанию: 24

6.2.1.15. Server/sender whitelist record lifetime (hours)

Параметр определяет Время жизни email-адреса в списке WhiteList.
По умолчанию: 720

6.2.1.16. Clean expired greylist records interval (seconds)

Параметр определяет Период обновления базы GreyList.
По умолчанию: 300

6.2.1.17. DNSBL "listed at" threshold

Параметр определяет Порог срабатывания блокировки по количеству черных списков, в которых найдет адрес отправителя.
Если адрес был замечен в черных списках, но порог не превышен, письмо доставляется, но в тему добавляется x-blacklisted с указанием всех списков, где он был найден.
По умолчанию: 3

6.2.1.18. Enable authentication security

Включение/Отключение функции бан для ошибок авторизации пользователей (на все службы SMTP, IMAP и HTTP).
По умолчанию: Включено

6.2.1.19. Failed auth record lifetime (minutes)

По умолчанию: 60

6.2.1.20. Ban time (minutes)

По умолчанию: 60

6.2.1.21. Max failed authentication attempts

Максимальное количество допустимых ошибок авторизации.
По умолчанию: 3

6.2.1.22. Block senders with SPF fail result

Включение возможности обслуживания клиентов, даже не прошедших SPF проверку (как правило используется оборудованием).
По умолчанию: Включено

6.2.1.23. Enable Greylist

Параметр определяет Включение функции GreyList.
По умолчанию: Включено

6.2.1.24. Enable SMTP ip/sender whitelist/blacklist

Параметр определяет Включение функции whitelist/blacklist.
По умолчанию: Включено

6.2.1.25. Enable DNSBL checks

Параметр определяет Включение DNSBL проверки.
По умолчанию: Включено

6.2.1.26. Log session (IMAP/SMTP) start and finish

По умолчанию: Отключено

6.2.2. Белый и чёрный списки SMTP

6.2.2.1. Белый список адресов IP серверов отправителей

С помощью данного инструмента можно добавлять, просматривать и удалять IP-адреса в белый список сервера.

6.2.2.2. Белый список email отправителей

С помощью данного инструмента можно добавлять, просматривать и удалять email-адреса в белый список сервера.

6.2.2.3. Чёрный список адресов IP серверов отправителей

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

6.2.2.4. Чёрный список email отправителей

С помощью данного инструмента можно добавлять, просматривать и удалять email-адреса в черный список сервера.

6.2.3. Заблокированные IP

При включенной функции 2.1.18. Enable authentication security сервер считает количество ошибок авторизации и, в случае превышения порога 2.1.21. Max failed authentication attempts помещает соответствующий IP-адрес в список Ban.

Заблокированный IP-адрес будет находится в Ban-е в течение времени, указанного в параметре 2.1.20. Ban time (minutes).

Отредактировать данный список вручную можно в разделе 2.3. Заблокированные IP.

6.2.4. Провайдеры БД пользователей

Сервер Tegu в состоянии работать как автономно (standalone), так и в интеграции с множеством контроллеров LDAP/MS Active Directory. При этом количество локальных баз данных пользователей и контроллеров домена не ограничено.

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

Это мероприятие осуществляется в разделе "Провайдеры БД пользователей" нажатием на кнопку "Добавить провайдера БД пользователей".

В соответствующем диалоге необходимо выбрать:

  • JSON File User DB - локальная база пользователей в формате JSON
  • LDAP User DB - подключение к удаленному контроллеру домена

Рассмотрим работу каждого провайдера подробнее:

6.2.4.1. JSON File User DB

6.2.4.1.1. Provider Name

Имя соединения (произвольное).
Пример: TEST

6.2.4.1.2. Local domain name

Домен, к которому относится данное соединение.
Пример: test.tegu.online

6.2.4.1.3. Directory path of user/group databases

Параметр определяет путь в JSON-файлу БД пользователей.

6.2.4.1.4. Group name of master users

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

6.2.4.2. LDAP User DB

6.2.4.2.1. Provider Name

Имя соединения (произвольное).
Пример: TEST LDAP

6.2.4.2.2. Local domain name

Домен, к которому относится данное соединение.
Пример: test.tegu.online

6.2.4.2.3. LDAP connection URIs (one per line)

Пример: ldaps://tegu-ds.mbk.lan:636

6.2.4.2.4. BindDN

Пример:

6.2.4.2.5. Password

Пароль для поля BindDN

6.2.4.2.6. Base DN

Пример: dc=test,dc=tegu,dc=online

6.2.4.2.7. objectClass for user

Пример: user

6.2.4.2.8. Attr for mailbox e-mail

Произвольное имя поля, которое сервер будет искать в LDAP для того, чтобы трактовать его как email.
Пример: mail

6.2.4.2.9. Attr for mailbox quota (value in MB)

Произвольное имя поле, которое сервер будет искать в LDAP для того, чтобы трактовать его как максимальный размер ящика.
Пример: facsimileTelephoneNumber

6.2.4.2.10. User memberOf attr

Если отношения групп и пользователей указываются в объекте пользователей, то здесь указываем имя поля, содержащего группы, к которым принадлежит пользователь.
Пример: memberOf

6.2.4.2.11. Use groups

Если группы могут иметь email, то этот параметр включает механизм доставки писем всем членам этих групп.

  • objectClass for group
  • Attr for group name - имя поля, содержащего имя группы.
  • Attr for group email - имя поля, содержащего email группы.
  • Attr for group members - имя поля, указывающего на членов групп.
  • Group member attr contains DN - в поле, указывающем на членов групп, могут быть DN членов или только имена этих членов.
    • Attr for user RDN - если в поле, указывающем на членов групп, содержатся имена, то здесь указываем имя поля (например, uid или cn) для поиска этих членов по их именам.
6.2.4.2.12. Use mailbox alias (redirect list)

Параметр определяет использовать ли списки перенаправления.

  • objectClass for alias
  • Attr for alias email - имя поля, содержащего email списка
  • Attr for email redirect to - имя поля, содержащего адреса email, на которые необходимо перенаправить письма (email могут быть локальными или внешними)
6.2.4.2.13. Use mailbox alternative email

Параметр определяет использовать ли дополнительные email для ящиков.

  • Attr for mailbox alternative email - имя поля объекта пользователя, содержащего альтернативные email.
6.2.4.2.14. Attr for group name of master-users

Параметр определяет имя поля, содержащего имя группы мастер-пользователей (может совпадать с "Attr for group name").

6.2.4.2.15. Group name of master-users - имя группы мастер-пользователей

6.2.5. Хранилища почты

6.2.5.1. Maildir mail storage

Параметры хранилища почты (Maildir mail storage)

6.2.5.1.1. Local mail domain name

Домен, к которому относится данное соединение.
Пример: test.tegu.online

6.2.5.1.2. Root directory path of mail

Путь к каталогу maildir

6.2.5.1.3. Archive folder

Имя папки по умолчанию для Архива.

6.2.5.1.4. Drafts folder

Имя папки по умолчанию для Черновика.

6.2.5.1.5. Junk folder

Имя папки по умолчанию для Спама.

6.2.5.1.6. Sent folder

Имя папки по умолчанию для Отправленных.

6.2.5.1.7. Trash folder

Имя папки по умолчанию для Корзины.

6.2.5.1.8. Smarthost (formats: user:pass@host:port or host:port)

Параметр, определяющий доступ к смарт-хосту.

6.2.5.1.9. Default user quota in MB

Параметр, определяющий максимальный размер ящика в Mb.

6.2.5.1.10. Additional Trash quota in MB

Параметр, определяющий дополнительное место (плюс к 2.5.2.13. Default user quota in MB) для корзины. Место может быть использовано для сообщений в корзине, когда квота ящика выбрана.

6.2.5.2. PostgreSQL mail storage

Параметры хранилища почты (PostgreSQL mail storage) домена test.tegu.online

6.2.5.2.1. Адрес сервера

IP-адрес или каноническое имя сервера БД PostgreSQL.

6.2.5.2.2. Порт сервера

Порт, который слушает сервер БД PostgreSQL.

6.2.5.2.3. Имя основной базы данных

Имя основной базы данных сервера PostgreSQL.

6.2.5.2.4. Имя пользователя с правом создавать базы данных

Имя пользователя, для которого определена основная база данных сервера PostgreSQL.

6.2.5.2.5. Пароль
6.2.5.2.6. Максимальное количество одновременных подключений

Параметр определяет количество одновременный сессий с базой данных сервера PostgreSQL.

6.2.5.2.7. Archive folder

Имя папки по умолчанию для Архива.

6.2.5.2.8. Drafts folder

Имя папки по умолчанию для Черновика.

6.2.5.2.9. Junk folder

Имя папки по умолчанию для Спама.

6.2.5.2.10. Sent folder

Имя папки по умолчанию для Отправленных.

6.2.5.2.11. Trash folder

Имя папки по умолчанию для Корзины.

6.2.5.2.12. Smarthost (formats: user:pass@host:port or host:port)

Параметр, определяющий доступ к смарт-хосту.

6.2.5.2.13. Default user quota in MB

Параметр, определяющий максимальный размер ящика в Mb.

6.2.5.2.14. Additional Trash quota in MB

Параметр, определяющий дополнительное место (плюс к 2.5.2.13. Default user quota in MB) для корзины. Место может быть использовано для сообщений в корзине когда квота ящика выбрана.

6.2.6. Очередь SMTP

6.2.6.1. Параметры обработчика очереди сообщений SMTP (PostgreSQL smtp queue)

6.2.6.1.1. Адрес сервера

IP-адрес или каноническое имя сервера БД PostgreSQL.

6.2.6.1.2. Порт сервера

Порт, который слушает сервер БД PostgreSQL.

6.2.6.1.3. Имя базы данных

Имя основной базы данных сервера PostgreSQL.

6.2.6.1.4. Имя пользователя

Имя пользователя, для которого определена основная база данных сервера PostgreSQL.

6.2.6.1.5. Пароль
6.2.6.1.6. Максимальное количество одновременных подключений

Параметр определяет количество одновременный сессий с базой данных сервера PostgreSQL.

6.2.6.1.7. Количество обрабатываемых писем за проход

Количество сообщений, которое вычислительная нода берет из очереди сообщений для обработки, за одно обращение к базе.

6.2.6.2. Панель управления очередью SMTP

6.2.6.2.1. Состояние очереди и управление ею

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

  • Всего
  • Новые
  • Ожидающие повторную отправку

Вы можете выполнить следующее:

  • Очистить всю очередь
  • Удалить ожидающие повтора
  • Обработать ожидающие повтора
6.2.6.2.2. Список писем в очереди SMTP

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

  • Отправитель
  • Получатель
  • Добавлено в очередь
  • Будет обработано
  • Действие

6.2.7. БД параметров

6.2.7.1. Настройки БД параметров (PostgreSQL settings database)

6.2.7.1.1. Адрес сервера

IP-адрес или каноническое имя сервера БД PostgreSQL.

6.2.7.1.2. Порт сервера

Порт, который слушает сервер БД PostgreSQL.

6.2.7.1.3. Имя базы данных

Имя основной базы данных сервера PostgreSQL.

6.2.7.1.4. Имя пользователя

Имя пользователя, для которого определена основная база данных сервера PostgreSQL.

6.2.7.1.5. Пароль
6.2.7.1.6. Максимальное количество одновременных подключений

Параметр определяет количество одновременный сессий с базой данных сервера PostgreSQL.

6.2.8. Система

6.2.8.1. Панель управления лицензией

6.2.8.1.1. Информация о лицензии
Идентификатор лицензии: eae4b43e4b4a324c4e4b48e1c4f

Редакция Tegu: Enterprise

Дата окончания действия лицензии: 01.05.2021

Максимальное количество почтовых ящиков: 100

Наименование покупателя: Стенд Лаборатории МБК

Тип покупателя: Юр. лицо

Данные покупателя:

Тип лицензии: Тестовая
6.2.8.1.2. Загрузка ключа лицензии

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

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

6.3. Управление с помощью командной строки

Сервер Tegu хранит параметры конфигурации в различных форматах и средах, в зависимости от заданной конфигурации. Это могут быть локальные файлы или записи централизованной базы данных PostgreSQL. Таким образом, основная часть его конфигурирования выполняется через административный веб-интерфейс.

С командной строки выполняется запуск, перезапуск и останов сервера.

6.3.1. Подготовка к запуску

Чтобы разрешить серверу, запущенному от непривилегированного пользователя, слушать на привилегированных портах, необходимо выполнить:

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

Для запуска через systemd необходимо добавить файл /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

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

/etc/tegu.conf
~/tegu.conf

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

[global]
dataDir = /opt/tegu/data

[WEB]
adminPassword = <пароль администратора>

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

6.3.2. Запуск сервера

Запускаем сервис:

# systemctl enable tegu.service

Created symlink /etc/systemd/system/multi-user.target.wants/tegu.service → /etc/systemd/system/tegu.service.

# systemctl start tegu.service

Читаем лог сервера:

# journalctl -f -u tegu -n 100

окт 05 15:38:26 localhost systemd[1]: Started Tegu. MBK-Lab Mail Server.

6.3.3. Останов сервера

Остановить сервер можно командой

systemctl start tegu.service

Рестарт сервера выполняется командой

systemctl restart tegu.service

6.4. Глобальные правила обработки почтовых сообщений

Глобальные правила обработки почтовых сообщений имеют приоритет и выполняются в первую очередь (перед пользовательскими фильтрами)

Условие 1

  • Тема
  • От
  • Кому
  • Тело
  • Дата
  • Размер

Условие 2

  • Содержит
  • Не содержит
  • Совпадает
  • Не совпадает
  • Начинается

Действие

  • Переместить
  • Скопировать
  • Отметить как прочитано
  • Отметить флагом
  • Отметить меткой
  • Отклонить сообщение

Операторы совпадает , не совпадает , начинается реализованы для всех полей кроме Тело, Дата, Размер.

6.5. Системные журналы

Журналы - это один из самых важных источников информации при возникновении любых ошибок в операционной системе Linux.

6.5.1. Утилита journalctl

Раньше в Linux для сохранения журналов использовался отдельный демон под названием syslogd.
Но с приходом системы инициализации systemd (а именно ее мы настоятельно рекомендуем использовать) большинство функций, касающихся управления сервисами, перешли под её управление. В том числе и управление логами.

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

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

6.5.2. Опции journalctl

--full, -l - отображать все доступные поля;
--all, -a - отображать все поля в выводе full, даже если они содержат непечатаемые символы или слишком длинные;
--pager-end, -e - отобразить только последние сообщения из журнала;
--lines, -n - количество строк, которые нужно отображать на одном экране, по умолчанию 10;
--no-tail - отображать все строки доступные строки;
--reverse, -r - отображать новые события в начале списка;
--output, -o - настраивает формат вывода лога;
--output-fields - поля, которые нужно выводить;
--catalog, -x - добавить к информации об ошибках пояснения, ссылки на документацию или форумы там, где это возможно;
--quiet, -q - не показывать все информационные сообщения;
--merge, -m - показывать сообщения из всех доступных журналов;
--boot, -b - показать сообщения с момента определенной загрузки системы. По умолчанию используется последняя загрузка;
--list-boots - показать список сохраненных загрузок системы;
--dmesg, -k - показывает сообщения только от ядра. Аналог вызова команды dmesg;
--identifier, -t - показать сообщения с выбранным идентификатором;
--unit, -u - показать сообщения от выбранного сервиса;
--user-unit - фильтровать сообщения от выбранной сессии;
--priority, -p - фильтровать сообщения по их приоритету. Есть восемь уровней приоритета, от 0 до 7;
--grep, -g - фильтрация по тексту сообщения;
--cursor, -c - начать просмотр сообщений с указанного места;
--since, -S, --until, -U - фильтрация по дате и времени;
--field, -F - вывести все данные из выбранного поля;
--fields, -N - вывести все доступные поля;
--system - выводить только системные сообщения;
--user - выводить только сообщения пользователя;
--machine, -M - выводить сообщения от определенного контейнера;
--header - выводить заголовки полей при выводе журнала;
--disk-usage - вывести общий размер лог файлов на диске;
--list-catalog - вывести все доступные подсказки для ошибок;
--sync - синхронизировать все не сохраненные журналы с файловой системой;
--flush - перенести все данные из каталога /run/log/journal в /var/log/journal;
--rotate - запустить ротацию логов;
--no-pager - выводить информацию из журнала без возможности листать страницы;
-f - выводить новые сообщения в реальном времени, как в команде tail;
--vacuum-time - очистить логи, давностью больше указанного периода;
--vacuum-size - очистить логи, чтобы размер хранилища соответствовал указанному.

Пример:

journalctl -f -u tegu -n 100

окт 05 15:38:26 localhost systemd[1]: Started Tegu. MBK-Lab Mail Server.

6.6. Резервное копирование и восстановление

Сервер хранит свои настройки и массив сообщений в двух форматах:

  • maildir на локальном томе
  • В базе данных PostgreSQL

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

6.7. Защита

6.7.1. Запрет Открытого релея

По умолчанию на сервере выполнены все настройки для того, чтобы запретить Открытый Релей.
Обрати внимание, что с помощью параметра 2.1.2. Full allowed IPs (one per line) вы можете настроить его использование, но делать это необходимо осознанно и осторожно.

6.7.2. Проверка обратного адреса

Сервер позволяет настроить и использовать технологии SPF, DKIM и DMARC.
Используйте для этого опции

  • 2.1.18. Directory for DKIM keys
  • 2.1.19. DKIM selector
  • 2.1.22. Block senders with SPF fail result

6.7.3. Блокирование на основе DNS (RBL)

Сервер выполняет блокирование сообщений на основании DNS (RBL).
Используйте для этого 2.1.25. Enable DNSBL checks и 2.1.17. DNSBL "listed at" threshold.

6.7.4. Блокирование по IP-адресу

Используйте инструмент 2.2.3. Чёрный список адресов IP серверов отправителей для блокировки сообщений по IP-адресу.

Используйте также инструмент 2.3. Заблокированные IP для работы с адресами, который заблокированы автоматически.

6.7.5. Блокирование по email-адресу

Используйте инструмент 2.2.4. Чёрный список email отправителей для блокировки сообщений по email-адресу.

6.7.6. Гибкие настройки фильтров и блокировок

Используйте 4. Глобальные правила обработки почтовых сообщений для формирования любых правил для настройки глобальных маршрутов сообщений.

7. Настройка клиентского ПО

7.1. Веб-интерфейс

Правильно настроенный администратором веб-интерфейс не требует никаких действий по настройке со стороны пользователя.
Однако необходимо запомнить одну особенность - т.к. почтовый сервер Tegu может обслуживать любое количество интернет-доменов и серверов каталогов, то в поле login необходимо вводить полный логин пользователя (с доменной частью) как показано на рисунке.

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

  • Файловое хранилище
  • Адресные книги
  • Календари
  • Почта

7.2. Десктопный клиент

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

7.2.1. Настройка почты

  • Чтение почты:
    • Тип сервера: IMAP
    • Порт: 993
    • Сервер: mail.mbk-lab.ru
    • Имя пользователя:
    • Требуется аутентификация: Да
    • Безопасность: SSL
    • Проверка подлинности: Пароль
  • Отправка почты:
    • Тип сервера: SMTP
    • Порт: 465
    • Сервер: mail.mbk-lab.ru
    • Имя пользователя:
    • Требуется аутентификация: Да
    • Безопасность: SSL
    • Проверка подлинности: Пароль

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

7.2.2. Настройка календарей

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

Проприетарные протоколы не используются. В этой связи еще раз напоминаем, что пользователям все еще популярного клиента MS Outlook следует обратить внимание, что в базовой поставке клиент способен работать с почтой по протоколам IMAP и SMTP, но не поддерживает адресные книги и календарь. Для реализации этой возможности необходимо дополнительно использовать бесплатный плагин Outlook CalDav Synchronizer После установки плагина настройка MS Outlook проводится по аналогии с остальными.

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

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

В левом фрейме видим список всех календарей данного пользователя. Клик мышкой по элементу управления ... (три точки) открывает меню управления календарем (с помощью которого можно изменить параметры, удалить календарь или Скопировать закрытую ссылку ).
В нашем случае ссылка на календарь выглядит так:

https://cloud.test.tegu.online/remote.php/dav/calendars/ikalmetov@test.tegu.online/-/

Теперь переходим в почтовую программу.

7.2.2.1. Настройка календаря в программе

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

Остается только установить цвет отображения событий и период синхронизации.

Обратите внимание, что различные программы, ведут себя по разному при работе с CalDAV. Для некоторых необходимо подключать каждый календарь отдельно, некоторые с состоянии самостоятельно прочесть весь список пользовательских календарей и предоставить пользователю выбор какие включить (например Evolution, который вы видите на скрине). Если ваша программа так не умеет, то процедуру необходимо повторить для каждого вашего календаря.

7.2.3. Настройка адресных книг

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

Проприетарные протоколы не используются. И опять напоминаем, что пользователям MS Outlook для реализации CardDAV необходимо дополнительно использовать бесплатный плагин Outlook CalDav Synchronizer

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

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

7.2.2.1. Настройка адресной книги в программе

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

Готово.

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

7.3. Мобильный клиент

Настройки клиентского ПО на смартфоне производится абсолютно так же, как и для десктопного клиента.

Однако, если CalDAV и CardDAV в iOs поддерживается "из коробки", то на платформе Android это зависит от версии и поставщика. Если ваш Android не поддерживает DAV, то рекомендуем две надежные и бесплатные утилиты:

В итоге у вас должно получиться так

8. Миграция почтовых серверов

Для переноса почты с одного IMAP сервера на другой используйте утилиту IMAPSync.
Скачать утилиту можно с GitHub

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

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

9. Тестирование настроек сервера

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

Одна из таких сервисов:

10. Нагрузочное тестирование почтового сервера

Нагрузочное и стресс тестирование позволит вам рассчитать номинальную и максимальную нагрузку на систему, которую она выдерживает.
Это бывает полезно при проектировании аппаратных ресурсов, настройки сетевого оборудования, оборудования балансировки, расчете количества вычислительных нод. Линейная интерполяция полученных результатов поможет вам при масштабировании или оптимизации вашей инфраструктуры.
Знание возможностей системы позволяет защитить ее и сохранить целостность при пиковых нагрузках или DDOS-атаках.

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

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

11. Сопровождение Tegu

Если вам необходима помощь, используйте:

11.1. Регламент техподдержки

Тарифы технической поддержки
Перечень услуг, входящих в техподдержку Базовый Стандартный Расширенный
Объем часов технической поддержки [часов] Безлимитно 20 Безлимитно
Обновления безопасности + + +
Доступ к "Справочному центру" + + +
Доступ к системе отслеживания ошибок (Bug tracker) + + +
Доступ к "Личному кабинету" + + +
Предоставление рецептов HowTo по отдельным сценариям использования + + +
Доступ к минорным версиям и обновлениям + + +
Консультации по установке и настройке + +
Анализ совместимости оборудования, при наличии технической возможности + +
Решение вопросов, связанных с совместимостью оборудования, при наличии технической возможности + +
Моделирование проблемных ситуаций на тестовом стенде, при наличии технической возможности + +
Удаленное подключение к системе пользователя для решения запроса +
Каналы приема запросов Web-портал Web-портал Web-портал, телефон
Выделенный менеджер +
Время обработки запросов Рабочие дни с 09:00 до 18:00 (МСК) Круглосуточно
Дополнительная опция
Техническая поддержка клиентского ПО, взаимодействующего с почтовым сервером Tegu 5 000 ₽/час 5 000 ₽/час 5 000 ₽/час
Время реакции
Уровень 1 Критическая ошибка 8 часов 4 часов
Уровень 2 Значительная ошибка 24 часа 12 часов
Уровень 3 Незначительная ошибка 5 дней 3 дней
Уровень 4 Консультации 8 часов 8 часов
Уровень 5 Пожелание (доработка) Разумные сроки Разумные сроки
Уровень критичности Описание
Уровень 1 Критическая ошибка Ошибка, при которой программный продукт не работоспособен.
Уровень 2 Значительная ошибка Ошибка, при которой поддерживаемый программный продукт в целом работоспособен. Но при этом одна (или несколько) из функций продукта не выполняется или выполняются с ограничениями, которые не позволяют использовать её по назначению.
Уровень 3 Незначительная ошибка Ошибка, при которой поддерживаемый программный продукт в целом работоспособен. Но при этом одна (или несколько) из его функций полностью не выполняется или выполняются с ограничениями, при этом для такой функции существует путь получения аналогичного результата другим способом.
Уровень 4 Консультации Ситуация, при которой поддерживаемый программный продукт выполняет свои документированные функции, но у пользователя есть вопросы по эксплуатации программного обеспечения.
Уровень 5 Пожелание (доработка) Пользователь высказывает разумные предложения по улучшению потребительских качеств поддерживаемого программного обеспечения или описывает отклонения от общепринятых стандартов.

Приложения

Приложение А. Технологии защиты на примере Greylisting

Greylisting — способ автоматической блокировки спама, основанный на том, что поведение спамерского сервера, оптимизированного на рассылки, отличается от поведения обычных серверов электронной почты.

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

Вот как это выглядит в логе почтового сервера Tegu.

Разберемся:

  • 18:25:20 - Входящее письмо с адреса . Tegu отказывается принять письмо и помещает адрес отправителя в серый список.
  • 18:31:37 - Повторная попытка отправки письма с адреса . Tegu нашел пару IP адрес и email отправителя в серых списках, поэтому перемещает адрес в белые списки и принимает письмо.
  • 18:31:51 - Обработка принятого письма завершена. Письмо доставлено получателю

Выводы:

  • На сколько же затормозится доставка почты? Очевидно, что точный ответ на данный вопрос дать невозможно т.к. это зависит не от Tegu, а от настроек отправляющего сервера. Обычно это несколько минут.
  • Обратите также внимание, что сессия в 18:25:20 была инициирована с вычислительной нодой tegu-node1, а в 18:31:37 балансировщик отправил трафик на ноду tegu-node2. Однако т.к. все сессии почтового кластера хранятся в единой БД, то вторая нода корректно отработала сессию, начатую первой нодой.
  • Как показывает практика, долю нежелательной почты, которую удаётся отсечь с помощью Greylisting, достаточно велика. При этом ощутимо снизится и почтовый трафик, т.к. в отличие от анализаторов спама приём спамерского сообщения не производится.
  • Greylisting исключает ложные срабатывания, когда добропорядочное письмо блокируется фильтром и не попадает к адресату.
  • Greylisting юридически чист. Блокирование почты на основании DNSBL, или прочтение почты анализаторами может вступить в определенное противоречие, но не Greylisting.

Приложение Б. Алгоритм обработки сессий IMAP/SMTP

Tegu обладает максимально гибкой архитектурой.

Информация о всех объектах (их типах и размещении) хранится в базе данных конфигурации.
Выполняя свою работу, модули запрашивают в БД конфигурации необходимые параметры.
Коннекторы обеспечивают доступ к объектам в необходимом формате.

Благодаря такой архитектуре, Tegu поддерживает авторизацию по любому протоколу любого типа (количество неограничено), включая локальный (автономный) в формате JSON. А любой почтовый яшик может хранится в любом формате на любом хранилище.

Приложение В. Административный интерфейс управления

В процессе установки при первом запуске сервер будет создан файл /etc/tegu.conf следующего содержания

[global]
dataDir = /opt/tegu/data
pluginDir = /opt/tegu/plugins

[WEB]
adminPassword = admin

Файл необходим для того, чтобы прочесть пароль администратора, сгенерированный автоматически. Это пароль используется для дальнейшего администрирования сервера с помощью веб-интерфейса, доступного по адресу https://mail.mbk-lab.ru:9999/

Меню "Настройка"

Меню "Провайдеры БД пользователей"

Сервер может содержать неограниченное количество провайдеров баз данных пользователей любого типа.

Провайдер базы данных пользователей LDAP

Провайдер базы данных пользователей JSON

Меню "Хранилище почты"

Хранилище почты может быть двух типов:

  • maildir
  • PostgreSQL

Меню "Очередь SMTP"

Приложение Г. Пример настройки провайдера подключения к серверу каталогов

Обновлено Кальметов Игорь 1 день назад · 20 изменени(я, ий)