Почтовый сервер Tegu
Пишу этот пост для сбора обратной связи. Случайно узнал про почтовый сервер Tegu. Удивился, что ни разу про него не слышал. Пошёл читать. Оказывается, это какая-то российская разработка, причём не на базе известного бесплатного ПО, типа postfix или dovecot. Судя по информации из их репозитория используется собственная реализация SMTP и IMAP на языке GO.
Из основных возможностей:
◽ Хранение почты - maildir или база в PostgreSQL.
◽ Построение HA кластера и способность обслуживать очень большие инфраструктуры.
◽ Web интерфейс на базе Nextcloud.
◽ Из коробки есть весь основной почтовый функционал, в том числе инструменты бэкапа, восстановления.
◽ Простая установка через веб инсталлер.
◽ Интеграция с LDAP/AD (только в платных версиях).
◽ Распространяется по свободной лицензии GPL, есть коммерческие редакции.
◽ Полностью российская разработка, есть в реестре отечественного ПО.
Я посмотрел репозиторий, почитал новости. Проект живой, постоянно обновляется. Ознакомился с документацией. Вроде всё просто, основные вещи описаны.
Хотелось бы понять, насколько это удачный проект и как он на практике? Тестировать почтовый сервер достаточно хлопотное занятие, поэтому не хочется впустую потратить время. На первый взгляд всё выглядит интересно.
Сайт - https://mbk-lab.ru/development/tegu/
Исходники - https://git.mbk-lab.ru/MBK-Lab/go-tegu/
Документация - https://project.mbk-lab.ru/projects/tegu_support/wiki
#mailserver #tegu #отечественное
Пишу этот пост для сбора обратной связи. Случайно узнал про почтовый сервер Tegu. Удивился, что ни разу про него не слышал. Пошёл читать. Оказывается, это какая-то российская разработка, причём не на базе известного бесплатного ПО, типа postfix или dovecot. Судя по информации из их репозитория используется собственная реализация SMTP и IMAP на языке GO.
Из основных возможностей:
◽ Хранение почты - maildir или база в PostgreSQL.
◽ Построение HA кластера и способность обслуживать очень большие инфраструктуры.
◽ Web интерфейс на базе Nextcloud.
◽ Из коробки есть весь основной почтовый функционал, в том числе инструменты бэкапа, восстановления.
◽ Простая установка через веб инсталлер.
◽ Интеграция с LDAP/AD (только в платных версиях).
◽ Распространяется по свободной лицензии GPL, есть коммерческие редакции.
◽ Полностью российская разработка, есть в реестре отечественного ПО.
Я посмотрел репозиторий, почитал новости. Проект живой, постоянно обновляется. Ознакомился с документацией. Вроде всё просто, основные вещи описаны.
Хотелось бы понять, насколько это удачный проект и как он на практике? Тестировать почтовый сервер достаточно хлопотное занятие, поэтому не хочется впустую потратить время. На первый взгляд всё выглядит интересно.
Сайт - https://mbk-lab.ru/development/tegu/
Исходники - https://git.mbk-lab.ru/MBK-Lab/go-tegu/
Документация - https://project.mbk-lab.ru/projects/tegu_support/wiki
#mailserver #tegu #отечественное
У меня наконец-то дошли руки установить и настроить почтовый сервер Tegu (бесплатную версию). Так что теперь могу поделиться своими впечатлениями и первым опытом работы. Я планирую написать по нему подробную статью, когда немного накопится опыт использования. Когда она выйдет неизвестно, поэтому решил сразу заметку сделать.
✅ Плюсы:
1️⃣ Простая и быстрая установка. Весь сервер это один скомпилированный бинарник, написанный на Go и один конфигурационный файл к нему. Никаких зависимостей от системных библиотек. Весь код реализован самостоятельно. Работает практически на любом линуксе. Скачиваем бинарник, рисуем конфиг, systemd юнит и всё, установка завершена. Обновление — это просто замена бинарника новой версией.
2️⃣ Сервер включает в себя службы smtp, imap и панель управления через веб интерфейс. Это очень удобно по сравнению с традиционными связками, когда надо отдельно ставить smtp, отдельно imap и отдельно какое-то управление. Установка и запуск базового сервера занимает буквально 10 минут, если вы делаете это не первый раз. И уже можно подключаться любым почтовым клиентом. Встроенного веб клиента нет.
3️⃣ В сервере реализована поддержка протокола milter, так что многие привычные службы, которые мы подключали через milter к postfix теоретически можно подключить и здесь. Как на деле это реализовано, надо смотреть и разбираться.
4️⃣ В сервер встроен функционал белых/чёрных спискв IP/email отправителей, технология Greylist, проверка по спискам DNSBL, проверка наличия SPF записи и блокировка в случае отсутствия таковых записей, глобальные правила сортировки и фильтрации, dkim. Также реализована защита от перебора паролей, типа fail2ban.
5️⃣ Сервер поддерживает хранение своего состояния в базе sqlite, а пользователей в json файле (пароли зашифрованы). По мне так это очень удобно для небольших серверов. Нет необходимости поднятия полноценной базы данных. Хранить там всё равно особо нечего и sqlite в этом плане отличное решение.
6️⃣ Для каждого домена можно указывать своё хранилище почты. Удобно для управления многодоменными серверами.
7️⃣ Есть возможность хранить почту в формате Maildir. Это позволяет легко бэкапить или переносить почту между серверами. К примеру, чтобы перенести почту с сервера postfix, достаточно просто скопировать почту из ящиков.
🔴 Минусы:
1️⃣ Малоинформативный лог. По умолчанию пишется в journald, настроек для него практически нет. Я много времени потратил на то, чтобы запустить защищённые соединения. Указал путь к сертификатам let's encrypt, но служба на портах 465 и 993 не запускалась. В логах пусто, ошибок нет. Уже в процессе разбирательства по чисто своей догадке я предположил, что возможно у сервера нет доступа к сертификатам. Tegu запускается от системного пользователя mail. И у него действительно нет доступа к стандартной директории /etc/letsencrypt/live. Когда исправил это, почтовый сервер запустился на указанных портах и шифрованные подключения заработали.
2️⃣ В документации указано, что сервер работает только с доверенными сертификатами, самоподписанные не поддерживаются: "Использование самоподписанных сертификатов вызовет ошибку".
3️⃣ Документация немного сумбурная. Не всё в ней отражено, что-то дублируется в разных статьях (например, установка и ещё одна установка и эксплуатация, где описана настройка кучи веб клиентов, которые к серверу не имеют отношения). Например, у меня не стартовала служба smtp на 25 порту. Оказалось, что надо было создать через веб интерфейс очередь smtp. Для меня это было неочевидно.
💡Впечатление от сервера и его концепции положительные. Мне кажется, разработчики заняли очень удачную нишу. Аналогов просто нет, где можно взять и быстро поднять почтовый сервер с базовым функционалом. Все бесплатные решения — это связки и обвес вокруг postfix + dovecot + БД + dkim + какой-то интерфейс управления. Несмотря на то, что сервер видел в первый раз, я его настроил за пару часов чтения доков. Взял VM: 1 CPU, 1GB памяти 💪🏻.
#mailserver #tegu #отечественное
✅ Плюсы:
1️⃣ Простая и быстрая установка. Весь сервер это один скомпилированный бинарник, написанный на Go и один конфигурационный файл к нему. Никаких зависимостей от системных библиотек. Весь код реализован самостоятельно. Работает практически на любом линуксе. Скачиваем бинарник, рисуем конфиг, systemd юнит и всё, установка завершена. Обновление — это просто замена бинарника новой версией.
2️⃣ Сервер включает в себя службы smtp, imap и панель управления через веб интерфейс. Это очень удобно по сравнению с традиционными связками, когда надо отдельно ставить smtp, отдельно imap и отдельно какое-то управление. Установка и запуск базового сервера занимает буквально 10 минут, если вы делаете это не первый раз. И уже можно подключаться любым почтовым клиентом. Встроенного веб клиента нет.
3️⃣ В сервере реализована поддержка протокола milter, так что многие привычные службы, которые мы подключали через milter к postfix теоретически можно подключить и здесь. Как на деле это реализовано, надо смотреть и разбираться.
4️⃣ В сервер встроен функционал белых/чёрных спискв IP/email отправителей, технология Greylist, проверка по спискам DNSBL, проверка наличия SPF записи и блокировка в случае отсутствия таковых записей, глобальные правила сортировки и фильтрации, dkim. Также реализована защита от перебора паролей, типа fail2ban.
5️⃣ Сервер поддерживает хранение своего состояния в базе sqlite, а пользователей в json файле (пароли зашифрованы). По мне так это очень удобно для небольших серверов. Нет необходимости поднятия полноценной базы данных. Хранить там всё равно особо нечего и sqlite в этом плане отличное решение.
6️⃣ Для каждого домена можно указывать своё хранилище почты. Удобно для управления многодоменными серверами.
7️⃣ Есть возможность хранить почту в формате Maildir. Это позволяет легко бэкапить или переносить почту между серверами. К примеру, чтобы перенести почту с сервера postfix, достаточно просто скопировать почту из ящиков.
🔴 Минусы:
1️⃣ Малоинформативный лог. По умолчанию пишется в journald, настроек для него практически нет. Я много времени потратил на то, чтобы запустить защищённые соединения. Указал путь к сертификатам let's encrypt, но служба на портах 465 и 993 не запускалась. В логах пусто, ошибок нет. Уже в процессе разбирательства по чисто своей догадке я предположил, что возможно у сервера нет доступа к сертификатам. Tegu запускается от системного пользователя mail. И у него действительно нет доступа к стандартной директории /etc/letsencrypt/live. Когда исправил это, почтовый сервер запустился на указанных портах и шифрованные подключения заработали.
2️⃣ В документации указано, что сервер работает только с доверенными сертификатами, самоподписанные не поддерживаются: "Использование самоподписанных сертификатов вызовет ошибку".
3️⃣ Документация немного сумбурная. Не всё в ней отражено, что-то дублируется в разных статьях (например, установка и ещё одна установка и эксплуатация, где описана настройка кучи веб клиентов, которые к серверу не имеют отношения). Например, у меня не стартовала служба smtp на 25 порту. Оказалось, что надо было создать через веб интерфейс очередь smtp. Для меня это было неочевидно.
💡Впечатление от сервера и его концепции положительные. Мне кажется, разработчики заняли очень удачную нишу. Аналогов просто нет, где можно взять и быстро поднять почтовый сервер с базовым функционалом. Все бесплатные решения — это связки и обвес вокруг postfix + dovecot + БД + dkim + какой-то интерфейс управления. Несмотря на то, что сервер видел в первый раз, я его настроил за пару часов чтения доков. Взял VM: 1 CPU, 1GB памяти 💪🏻.
#mailserver #tegu #отечественное
В выступлении с DevOpsConf, про которое выйдет заметка вечером, увидел упоминание очень любопытной программы nfpm, с помощью которой можно собирать свои deb или rpm пакеты. Я посмотрел и нашёл её современной, простой и полезной. Сразу же попробовал на реальном примере. Результатом делюсь с вами.
Я не стал ничего придумывать, а взял бинарники от Tegu и упаковал их в deb пакет, чтобы максимально упросить установку. Видел, что кто-то docker контейнер собирает для этого. Но как по мне докер тут вообще не нужен. Задача полностью решается обычным пакетным менеджером.
Итак, ставим nfpm:
Готовим для него конфиг nfpm.yaml:
Для простоты и демонстрации возможностей nfpm некоторые вещи упростил и поместил в скрипты. Те же права доступа и создание каталогов можно сделать сразу в конфигурации nfpm, а не в скриптах.
Файлы
preinstall.sh:
postinstall.sh:
Собираем пакет:
Пакет собран. Можно установить:
Подобная сборка легко автоматизируется. Было бы неплохо, если бы разработчики сразу собирали свои пакеты. Это гораздо удобнее и для пользователей, и для разработчиков, так как не надо писать подробную инструкцию.
⇨ Сайт / Исходники
#linux #debian #apt #tegu
Я не стал ничего придумывать, а взял бинарники от Tegu и упаковал их в deb пакет, чтобы максимально упросить установку. Видел, что кто-то docker контейнер собирает для этого. Но как по мне докер тут вообще не нужен. Задача полностью решается обычным пакетным менеджером.
Итак, ставим nfpm:
# echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' |
tee /etc/apt/sources.list.d/goreleaser.list
# apt update
# apt install nfpm
Готовим для него конфиг nfpm.yaml:
name: "tegu"
arch: "amd64"
platform: "linux"
version: "v1.27.0"
section: "default"
priority: "optional"
conflicts:
- exim4
- postfix
maintainer: "Kalmetov Igor <ik@mbk-lab.ru>"
description: |
Tegu is the free mailserver.
vendor: "mbk-lab.ru"
homepage: "https://project.mbk-lab.ru"
contents:
- src: ~/tegu/bin/teguctl
dst: /opt/tegu/bin/
- src: ~/tegu/sbin/tegu
dst: /opt/tegu/sbin/
- src: ~/tegu/tegu.conf
dst: /etc/tegu.conf
type: config
- src: ~/tegu/tegu.service
dst: /etc/systemd/system/tegu.service
type: config
overrides:
deb:
scripts:
preinstall: /root/tegu/preinstall.sh
postinstall: /root/tegu/postinstall.sh
Для простоты и демонстрации возможностей nfpm некоторые вещи упростил и поместил в скрипты. Те же права доступа и создание каталогов можно сделать сразу в конфигурации nfpm, а не в скриптах.
Файлы
tegu.service
и tegu.conf
взял из документации. Добавил свои скрипты для выполнения некоторых действий.preinstall.sh:
#!/bin/bash
mkdir /opt/tegu
mkdir /opt/tegu/{bin,sbin,data,certs}
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
postinstall.sh:
chown root.mail /etc/tegu.conf
chmod 640 /etc/tegu.conf
setcap CAP_NET_BIND_SERVICE=+eip /opt/tegu/sbin/tegu
systemctl enable tegu.service
systemctl start tegu.service
Собираем пакет:
# nfpm pkg --packager deb --target ~/
using deb packager...
created package: ~/tegu_1.27.0_amd64.deb
Пакет собран. Можно установить:
# dpkg -i ~/tegu_1.27.0_amd64.deb
Подобная сборка легко автоматизируется. Было бы неплохо, если бы разработчики сразу собирали свои пакеты. Это гораздо удобнее и для пользователей, и для разработчиков, так как не надо писать подробную инструкцию.
⇨ Сайт / Исходники
#linux #debian #apt #tegu