Введение.¶
Данный раздел нацелен настроить Вас на быструю установку и настройку почтового сервера, а также минимизацию потерь во время процесса тестирования нашего продукта.
Для этого мы максимально подробно изложили весь материал, учитывая все тонкости и подводные камни которые могут вас ожидать в процессе данной работы.
Мы специально не стали заострять внимание на разные операционные системы, а сосредоточились только на Linux Debian как эталон.
Но это вовсе не означает, что нужно выбирать именно этот вариант дистрибутива, напротив, все зависит от вашего опыта и технической подготовки.
На что мы хотим в первую очередь обратить ваше внимание:
Необходимо внимательно изучить статью "быстрый старт", следовать каждому шагу четко в строгой последовательности не пропуская ни одного раздела, в противном случае вы рискуете потерять время.
Для контроля каждого этапа, лучше завести чекап лист и строго фиксировать каждый свой шаг в процессе выполнения задачи:
- Помните, что шесть часов отладки могут сэкономить вам пять минут чтения документации, но мы рекомендуем все же начать с ее прочтения.
- Устанавливая сервер в первый раз, научитесь это делать в простейшем варианте, а только затем приступайте к конструированию экзотических схем.
- Правильно прописать все DNS зоны. (по возможности лучшим вариантом будет если ресурсные записи будут сразу публичными, в противном случае опять же есть шанс потери времени на настройке и отладке внутренних DNS зон. )
- Сделать необходимые настройки маршрутизации.
- Установить почтовый сервер Tegu.
- Установить и настроить базы данных Postgres.
- Провести первоначальные настройки почтового сервера.
- Добавить хранилище почты.
- Настроить очереди сообщений.
- Провести интеграцию с сервером каталогов (здесь необходимо педантично и весьма скурпулезно подойти к данному разделу, все настройки индивидуальны для каждого сервера каталогов, неправильно прописанные параметры не могут гарантировать верную работу, поэтому мы рекомендуем максимально заострить ваше внимание на данном этапе настройки)
- Установить и настроить сертификаты.
- Сгенерировать DKIM.
- Провести финальную настройку DNS зон.
- Установить лицензии.
- Начать тестирование продукта.
Правила обращения в тех.поддержку:
- Помните, краткое описание — лишняя трата Вашего времени. Мы будем вести с Вами диалог до тех пор, пока не будет получена вся информация, необходимая для решения вопроса.
- Поэтому Ваше обращение должно быть максимально информативно.
- Описание проблемы должно быть пошаговым, без пропусков действий, без обобщений, без использования неоднозначного сленга, простыми словами, строго в терминах системы.
- Предоставьте информацию о вашей системе. Для этого выполните команду /opt/tegu/bin/teguctl dump и верните нам ее вывод.
- Включите и проанализируйте сообщения системного журнала. Для чего воспользуйтесь командой journalctl -f -u tegu -n 200 -a
- Если вы не владеете английским языком для чтения журнала, воспользуйтесь переводчиком.
- Обращаясь в тех.поддержку приведите часть журнала, относящуюся к описываемой проблеме.
- По возможности сопровождайте описание скриншотами.
- Описывая свои действия, пожалуйста обязательно приводите ссылки на документацию, согласно которой вы выполняли работу.
Быстрый старт TEGU Enterprise¶
- Содержание
- Введение.
- Быстрый старт TEGU Enterprise
- DNS зоны
- Настройка маршрутизатора
- Установка почтового сервера TEGU Enterprise
- Установка и настройка Postgres
- Первоначальная настройка
- Основные настройки Tegu
- Настройка очереди сообщений
- Прописываем настройки подключения к LDAP
- Установка и генерация сертификатов Letsencrypt
- Генерация DKIM
- Финальная тонкая настройка DNS
- Управление почтовыми ящиками
Данная статья позволяет быстро установить и запусить Почтовый сервер TEGU. Статья не рассматривает все возможные конфигурации, не описывает все возможности и поэтому не отменяет чтение остальных статей документации.
Пара слов о Tegu. В отличие от всех остальных подобных систем, данный продукт написан полностью с нуля, представляет собой один скомпилированный файл,
который умеет работать и запускаться абсолютно на всех современных операционных системах Linux основанных на systemd,
а так же нет каких-либо зависимостей от системных библиотек.
По итогу вы получаете полностью рабочий web интерфейс из коробки, отсутствие дополнительных компонентов в виде apache или nginx,
встроенную защиту от перебора паролей на почтовые ящики и сам web интерфейс.
Редакции почтового сервера:
Tegu существует в двух разных редакция:
Free — свободная для использования, рекомендованная производителем до 50 почтовых ящиков,
Tegu Enterprise - это коммерческий сервер, поддерживающий централизованное хранилище почты в базе данных Postgres, не ограниченная поддержка горизонтального масштабирования вычислительных нод, встроенный сервер общих индивидуальных и календарей, а также сервер адресных книг, как общих, так и индивидуальных.
Внешние службы:
Tegu в работе с серверами каталогов, нигде не ведёт и не синхронизирует базу пользователей, а значит не позволяет скомпрометировать пароли.
В качестве серверов каталогов может выступать Microsoft Active Directory, ALD Pro, FreeIPA, OpenLDAP в неограниченном кол-ве.
ВАЖНО: Тегу не вносит изменения в LDAP, в том числе, не меняет пароли учётных записей
Архитектура данных Tegu Enterprise:
Сервер TEGU в своей работе использует три хранилища для:
1. Хранения конфигурации.
2. Хранения очередей SMTP.
3. Хранения данных (почтовых сообщений, календарей, адресных книг и пр.).
Хранилища могут быть локальными или сетевыми.
• Для хранения конфигурации и очередей может быть использованы SQLite на локальном диске или Postgres на сетевом ресурсе.
• Для хранения данных сервер может использовать локальный диск в формате MailDir или Postgres на сетевом ресурсе.
Развертывание почтового севера:
Что нам потребуется для успешного развертывания почтовой системы:
Знание и понимание основ работы: сети, почтовых протоколов, DNS, служб каталогов и четкое последовательное выполнение действий в данной статье.
Необходимые компоненты для развертывания:
Операционная система Linux Debian 12, postgres, сертификат, сервер каталогов (подразумевается что он у вас есть установлен и настроен), проброс портов на маршрутизаторе.
Мы сегодня рассматриваем установку в однонодовой конфигурации вместе с базой данных postgres, (в рабочей системе в продакшн базу данных нужно всегда размещать отдельно от почтовой ноды).
Подготовительные работы.
DNS зоны¶
DNS (Domain Name System) - это глобальная распределенная база данных, хранящая записи для каждого домена интернет.
Для успешной работы почтового сервера, необходимо правильно и грамотно один раз прописать DNS зоны и забыть про них.
Как правило, на практике я встречаю много ошибочных и с одной стороны нелепых конфигураций в DNS зонах:
отсутствие DKIM, MX, SFP или присутствие более одной записи SFP, встречается и такое что некоторые записи прописаны неверно,
в результате чего почта не доходит до сервера просто потому, что DNS не знает о его существовании.
Вывод: DNS — это фундамент от которого зависит будущая работа вашего почтового сервера и игнорировать или пропускать данный раздел категорически не рекомендуется.
Какие необходимо сделать записи в DNS и за что они отвечают?
Запись SOA (Start of Authority) - Описывает основные/начальные настройки зоны.
Для каждой зоны должна существовать только одна запись SOA, и она должна быть первая.
Записи NS (name server) - Указывают сервера, на которые делегирован данный домен.
(как правило, они уже присутствуют когда вы заказываете интернет домен у хостера)
Запись A (address record) - Отображает имя хоста (доменное имя) на адрес IPv4.
Для каждого сетевого интерфейса машины должна быть сделана одна A-запись.
Записи MX (mail exchange) - Указывают хосты для доставки почты, адресованной домену.
(пожалуй самая главная запись, без которой работа почтовой системы невозможна)
Запись TXT для DKIM - механизм, позволяющий проверить является ли отправитель достоверным или нет.
Проверка осуществляется с помощью цифровой подписи, публичная часть которой находится в DNS соответствующей зоны.
DKIM защищает от отправки сообщения с подменой адреса отправителя.
Запись TXT для DMARC - механизм снижения количества спамовых и фишинговых писем.
DMARC описывает действие, которое должен совершить сервер для писем, которые не прошли проверку DKIM и SPF.
А также описывает адрес, на который раз в сутки будет отправляться отчет об этих действиях.
Обратная зона DNS - это особая доменная зона, которая позволяет совершить обратное разрешение доменных имен относительно IP-адресов.
Для обратной зоны фактически разрешена только запись одного типа А, называемая PTR.
Важно — перед тем как настраивать почтовый сервер, необходимо запросить у своего провайдера прописать PTR запись,
в противном случае вы рискуете скомпрометировать и доменное имя, и свой IP-адрес во время начального общения с другими почтовыми серверами.
Восстановление может занять весьма значительное время.
При начальной настройке почтового сервера в основных настройках, сервер с недавних пор сам предлагает какие необходимо сделать записи в DNS зоне.
Но если вы по каким либо причинам не знаете или не понимаете что необходимо прописать, этот пункт можно перенести на тот момент, когда мы начнем настраивать почтовый сервер после всех настроек там появится подсказка со всеми параметрами.
А если вы уже сделали все необходимые записи, сейчас самое время проверить DNS зоны.
Проверка записей NS:
$ host -t ns tegu.online
tegu.online name server ns4-cloud.nic.ru.
tegu.online name server ns4-l2.nic.ru.
tegu.online name server ns8-cloud.nic.ru.
tegu.online name server ns3-l2.nic.ru.
tegu.online name server ns8-l2.nic.ru.
Проверка записей CNAME:
$ host mail.tegu.online mail.tegu.online has address 79.137.210.127
Проверка записей MX:
$ host -t mx tegu.online tegu.online mail is handled by 10 mail.tegu.online.
Проверка записи TXT для SPF:
$ host -t txt tegu.online tegu.online descriptive text "v=spf1 mx -all"
Проверка записи TXT для DMARC:
$ host -t txt _dmarc.tegu.online _dmarc.tegu.online descriptive text "v=DMARC1; p=quarantine; rua=mailto:abuse@tegu.online"
Проверка записи TXT для DKIM:
$ host -t txt mail._domainkey.tegu.online mail._domainkey.tegu.online descriptive text "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRKjngoDbWD3Cj1NHc/GB9YB4i3bjmJV2R0HfVpph2Hze1e6u1a9p8PiTkZQOA/Meuusb9YwrnxD27L+boZways1CQvWWvK3aySEWMy5VcauJw3BBNRJK4cMwlXv1DC9hzrFLqjynVQfqEWtKGk3Dgm6K+nH1IBu6ZVUwCC35nQQIDAQAB"
Настройка маршрутизатора¶
Проброс портов наружу для корректной работы сервера.
Стандартные TCP порты для почтового сервера:
25, 80, 443, 465, 993 все остальное по желанию.
На маршрутизаторах с прошивкой OpenWRT все порты пробрасываются в разделе "Port Forwards"
Также важно на виртуальной машине с почтовым сервером указать в качестве DNS: Yandex DNS
и NAT Rules.
Установка почтового сервера TEGU Enterprise¶
Важно - перед установкой необходимо проверить установлен ли в системе Postfix
или какой-либо другой почтовый сервер, если да, то его необходимо удалить, в противном случае он будет нам мешаться и занимать порты.
ТАКЖЕ ОБРАТИТЕ ВНИМАНИЕ: на то, что утилита teguctl имеет полный доступ к параметрам сервера, следовательно, для обеспечения безопасности необходимо выставить ей нужные права на запуск
В Debian это можно сделать так:
Проверить
systemctl status postfix
Удалить
apt remove purge postfix
Перед установкой обратите внимание, что все работы необходимо выполнять от имени root.
Переходим на страницу с дистрибутивами. https://downloads.mbk-lab.ru/
копируем ссылку, на момент написания статьи с версией tegu-ent-v1.42.18-x86_64.tar.gz
Не мало важно, не перепутайте архитектуру, дело в том что Tegu компилируется как под x86_64, так и под arm архитектуры.
Далее в консоли вставляем ссылку с командой wget
wget https://downloads.mbk-lab.ru/stable/enterprise/x86_64/1.42/tegu-ent-v1.42.18-x86_64.tar.gz
Распаковываем здесь же
$ tar -xvf tegu-ent-v1.42.18-x86_64.tar.gz
tegu-ent-v1.42.18-x86_64/ tegu-ent-v1.42.18-x86_64/sbin/ tegu-ent-v1.42.18-x86_64/sbin/tegu
Создаем структуру каталогов для сервера:
$ mkdir /opt/tegu $ mkdir /opt/tegu/{bin,sbin,data,certs}
Копируем исполняемый файл в рабочий каталог:
$ cp tegu-ent-v1.42.18-x86_64/sbin/* /opt/tegu/sbin/ $ cp tegu-ent-v1.42.18-x86_64/bin/* /opt/tegu/bin/
Назначаем пользователя и права:
$ chown -R mail. /opt/tegu/{data,certs} $ chgrp -R mail /opt/tegu/{bin,sbin} $ chmod 750 /opt/tegu/{data,certs} $ chmod -R 750 /opt/tegu/sbin $ chmod -R 750 /opt/tegu/bin
Проверяем правильность создания каталогов и файлов, а также их прав:
$ ls -l /opt/tegu
Должно быть примерно так:
$ ls -l /opt/tegu /opt/tegu: итого 16 drwxr-x--- 2 root mail 4096 апр 11 14:32 bin drwxr-x--- 2 mail mail 4096 апр 11 14:32 certs drwxr-x--- 2 mail mail 4096 апр 11 14:32 data drwxr-x--- 2 root mail 4096 апр 11 14:33 sbin Настраиваем механизм запуска и управления: $ nano /etc/systemd/system/tegu.service
Содержимое файла /etc/systemd/system/tegu.service должно быть таким:
[Unit] Description=Tegu. MBK-Lab Mail Server [Service] ExecStart=/opt/tegu/sbin/tegu User=mail Group=mail UMask=0007 RestartSec=10 Restart=always [Install] WantedBy=multi-user.target
Разрешаем запуск сервера от имени непривелегированного пользователя:
$ setcap CAP_NET_BIND_SERVICE=+eip /opt/tegu/sbin/tegu
Необходимо создать конфигурационный файл в /etc/tegu.conf со следующим содержанием:
$ nano /etc/tegu.conf
[global] dataDir = /opt/tegu/data [Log] debug = false [WEB] adminPassword = admin httpPort = 8888 httpsPort = 9999 ctlPort = 8899 И сменить права: $ chown root.mail /etc/tegu.conf $ chmod 640 /etc/tegu.conf
Во время первого запуска сервер будет искать свой файл конфигурации в следующем порядке:
• /etc/tegu.conf
• ~/tegu.conf (например, /var/mail/tegu.conf)
Если файл не был найден, то он будет создан по пути ~/tegu.conf
Для подробного логирования работы сервера измените значение параметра
debug = true
Значение параметра adminPassword используйте для регистрации в административном веб-интерфейсе (с логином admin).
Важно - сразу сменить пароль администратора для обеспечения безопасности.
Разрешаем автозапуск сервера во время загрузки ОС:
$ systemctl enable tegu.service
Эта команда создает символическую ссылку на копию файла сервиса в /etc/systemd/system/tegu.service в точке на диске,
где systemd ищет файлы для автозапуска, а также обновляет конфигурацию systemd.
Помните, что вы должны обновлять конфигурацию systemd всякий раз, когда меняете конфигурацию в файле /etc/systemd/system/tegu.service.
Обновление выполняется командой sudo systemctl reload tegu.service.
Запускаем сервер (вручную):
$ systemctl start tegu.service
Контролируем запуск сервиса (статус сервиса):
$ systemctl status tegu.service
Правильно работающий сервер возвращает примерно такое:
● tegu.service - Tegu. MBK-Lab Mail Server Loaded: loaded (/etc/systemd/system/tegu.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-04-11 13:58:09 MSK; 50min ago Main PID: 88519 (tegu) Tasks: 9 (limit: 9357) Memory: 3.3M CGroup: /system.slice/tegu.service └─88519 /opt/tegu/sbin/tegu апр 11 13:58:09 systemd[1]: Started Tegu. MBK-Lab Mail Server.
Если все предыдущие шаги выполнены правильно, то вам становится доступной веб-панель администрирования сервером, в которой производятся все остальные настройки.
На этом установка сервера завершена.
Переходим к установке сервера базы данных Postgres.
Установка и настройка Postgres¶
apt install postgresql postgresql-contrib
Проверяем статус службы.
systemctl status postgresql
Сразу после установки проверяем слушает ли сервер порт 5432 и на каком адресе.
ss -lnpt | grep 5432
Должны увидеть примерно такой вывод.
LISTEN 0 244 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=26097,fd=6)) LISTEN 0 244 [::1]:5432 [::]:* users:(("postgres",pid=26097,fd=5))
Размещаем автоматический запуск Postgresql.
systemctl enable postgresql
Создание баз данных.
Необходимо создать пользователя tegu.
Переходим в postrges
su - postgres -s /bin/bash
Создаем пользователя:
createuser -d -S -E -P tegu
Создаем 3 базы данных.
tegu_queue -база данных очередей
tegu_mailboxes - база данных почтового хранилища
tegu_settings - база данных настроек почтового сервера
createdb -E UTF-8 -O tegu tegu_queue createdb -E UTF-8 -O tegu tegu_mailboxes createdb -E UTF-8 -O tegu tegu_settings
Прописываем доступы с подсетей.
nano /var/lib/pgsql/data/pg_hba.conf
Полезные команды
Смотрим какие базы данных у нас есть.
psql -U postgres -c "\l+"
Удалить базы данных.
psql DROP DATABASE tegu_mailboxes;
Команда для проверки подключения к серверу баз данных:
psql -U tegu -d tegu_settings -h 172.16.10.2 -p 5432 -W
-U (имя пользователя -d (имя базы данных) -h (хост сервера базы данных) -p (порт) -W (пароль)
Первоначальная настройка¶
Заходим в web интерфейс по своему ip адресу у меня localhost у вас будет свой адрес.
http://localhost:8888
Первое, что мы увидим, выбор типа базы данных, мы выбираем postgreSQL.
Заполняем соответствующие настройки в новой базе данных параметров.
Нажимаем сохранить параметры.
После сохранения почтовый сервер перезапустится и перед вами предстанет полноценный web интерфейс, который нам и нужно будет последовательно настроить.
Первое, что мы увидим — информационная панель, в которой нас сразу привлекает внимание отсутствие лицензии.
Лицензию можно будет установить либо потом, либо сразу, на настройки ее отсутствие никак не влияет.
Для установки лицензии необходимо открыть в панели раздел - инструменты → панель управления → прочитать лицензионное соглашение → принять его → загрузить файл лицензии.
После загрузки лицензии, в информационной панели вы увидите что статус лицензии изменился.
Основные настройки Tegu¶
В основных настройках первое что мы видим, имя сервера.
Как правило, многие здесь допускают главную ошибку: пишут имя не почтового сервера, а имя ноды на которой установлен сервер.
В моем случаем здесь будет следующая настройка: mail.tegu.online
Если DNS зоны прописаны верно, то при пинге данного ресурса мы увидим что ресурс отвечаем внешним ip адресом.
Настраиваем хранилища почты: опять выбираем в качестве хранилища Postgres.
Важно: Обратите внимание на параметр - Почтовый домен.
Здесь мы указываем интернет домен, в нашем случаем — tegu.online, но никак не mail.tegu.online
Прописываем настройки подключения к серверу базы данных, имя базы данных соответственно tegu_mailboxes, логин и пароль.
Здесь же можно установить квоту на все почтовые ящики, а также включить папку восстановления,
это новая функция которая позволит вам в будущем восстанавливать удаленные сообщения из корзины.
Настройка очереди сообщений¶
При настройке очереди сообщений в качестве обработчика выбираем PostgreSQL
Заполняем все данные, должно получиться примерно так.
Проверяем доступность сервера SQL и сохраняем параметры.
Настройка параметров БД пользователей.
Обратите внимание на почтовый домен, здесь как в хранилище почты также указываем интернет домен,
в нашем случае tegu.online ставим галку использовать источник в Глобальной адресной книге.
Должно получится так:
Прописываем настройки подключения к LDAP¶
Перед тем как что-то хаотично прописывать, лучше воспользоваться утилитой ldapsearch
Данная утилита позволит нам правильно найти и прописать все настройки.
Перейдем в консоль почтового сервера и в командной строке проверим правильность будущего подключения.
Если у вас нет утилиты ldapsearch, то установите пакет ldap-utils примерно такой командой:
apt install ldap-utils
Синопсис команды:
ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W
В моем случае для подключения к LDAP получается следующая команда:
ldapsearch -x -b "DC=tegu,DC=online" -H ldap://10.44.44.16:389
Вывод команды весьма интересен и многое говорит сам за себя.
Но мы с вами запросим информацию о конкретном пользователей uid=ikurennov :
$ ldapsearch -x -b "uid=ikurennov,ou=People,DC=tegu,DC=online" -H ldap://10.44.44.16:389
# extended LDIF # # LDAPv3 # base <uid=ikurennov,ou=People,DC=tegu,DC=online> with scope subtree # filter: (objectclass=*) # requesting: ALL # # iurennov, People, tegu.online dn: uid=ikurennov,ou=People,dc=tegu,dc=online objectClass: posixAccount objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person homeDirectory: /home/ikurennov loginShell: /bin/bash uid: ikurennov uidNumber: 10001 gidNumber: 10000 title:: 0JjQvdC20LXQvdC10YA= o:: 0JzQkdCaLdCb0LDQsQ== mail: ikurennov@tegu.online sn:: 0JrQsNC70YzQvNC10YLQvtCy givenName:: 0JjQs9C+0YDRjA== cn:: 0JrQsNC70YzQvNC10YLQvtCyINCY0LPQvtGA0Yw= jpegPhoto:: /9j/4AAQSkZJRgABAQAASABIAAD/7QByUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAD ocAVoAAxslRxwCAAACAAIcAigAFm0zTXV6VDhMVHNHQ0JLWCUwc0t4MEEcAhkAC1Bob3RvIEJvb3R Bh479yI1rrF7bn/9k= facsimileTelephoneNumber: 10000 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Как трактовать данный вывод?
• Почтовый сервер может обратиться к LDAP серверу ldap://10.44.44.16:389 с логином BindDN: cn=admin,dc=tegu,dc=online и вашим паролем;
• Определена область поиска BaseDN dc=tegu,dc=online ;
• Определено поле Attr for mailbox e-mail = mail ;
• Определено поле Attr for mailbox quota (value in MB) = facsimileTelephoneNumber.
Теперь переходим к настройке Провайдера БД пользователей в административном интерфейсе Tegu.
• Поле Provider Name - любой текст, означающий имя подключения;
• Local Domain Name - имя домена (а не сервера т.е. то, что в email-адресе следует после @);
• LDAP server connection URI - найденный и проверенный выше пусть к серверу;
• BindDN - логин;
• Password - пароль;
• BaseDN - найденный выше фильтр поиска.;
• Atr for mailbox e-mail - название поля, которое в LDAP заполнено email-адресом пользователя (важно! с доменным суффиксом);
• Atr for mailbox quota - название поля, которое в LDAP используется для определения квоты.
Это тот минимум который нам необходимо прописать для успешной интеграции с сервером каталогов.
Важно: Сейчас поле BindDN прописано в формате UPN - user@realm.com так как мы используем OpenLDAP,
такой вариант работает также и с Microsoft AD, но если вы в качестве сервера каталогов используете FreeIPA или ALD Pro,
то BindDN должен быть полным DN (uid=user,ou=org_unit,dc=domain,dc=com)
Установка и генерация сертификатов Letsencrypt¶
Центр сертификации, предоставляющий бесплатные криптографические сертификаты X.509
для шифрования передаваемых через интернет данных HTTPS и других протоколов,
используемых серверами в Интернете.
Процесс выдачи сертификатов полностью автоматизирован.
Центр сертификации Let’s Encrypt выдаёт сертификаты со сроком действия в 90 дней.
Для получения сертификата должны быть проброшены порты: 80, 443
Важно!
При генерации сертификата, или его приобретении, сертификат всегда должен быть выдан на имя почтового сервера,
а не на имя домена!
Для Debian дистрибутивов.
Проверяем обновления пакетов
apt update
Устанавливаем Letsencrypt
apt install certbot
Получаем сертификат на свой почтовый домен
certbot certonly --standalone -m ваша_почта@yandex.ru -d mail.вашдомен.рф
- ваша_почта@yandex.ru - Здесь вы указываете действующий рабочий почтовый ящик, куда будут приходить письма от Letsencrypt
Проверяем что сертификаты получены
cd /etc/letsencrypt/live/mail.вашдомен.рф/ ls
должны увидеть следующие файлы:
cert.pem chain.pem fullchain.pem privkey.pem README
Нас интересуют fullchain.pem privkey.pem
Для RED OS 7.3
Для того что бы получить и установить сертификат, нам необходимо установить пакет certbot,
но в репозитории РЕД ОС данного пакета нет, поэтому будем устанавливать его с помощью python.
Python у нас уже установлен, установим недостающий нам пакет.
dnf install python-virtualenv
Создаем каталог
mkdir -p /web/install/python/
Переходим в этот каталог
cd /web/install/python/
Далее нам необходимо создать виртуальную среду для приложения. Саму среду мы назовём python-red
python3 -m venv python-red
Далее, активируем среду приложения python-red
source python-red/bin/activate
Если всё сделано правильно, мы увидим что перешли в среду разработки python
Далее, нам необходимо обновить
pip install --upgrade pip
Теперь устанавливаем пакет certbot
pip install certbot
После установки пакета, запускаем процедуру получения ssl сертификатов
certbot certonly --standalone -m ваша_почта@yandex.ru -d mail.вашдомен.рф
Проверяем что сертификаты получены
cd /etc/letsencrypt/live/mail.вашдомен.рф/ ls
должны увидеть следующие файлы:
cert.pem chain.pem fullchain.pem privkey.pem README
Нас интересуют fullchain.pem privkey.pem
Автообновление сертификатов¶
создаем папку work в папке root она нам чуть позже пригодится
mkdir work
Создаем в папке Letsencrypt hook со следующим содержанием:
nano /etc/letsencrypt/renewal-hooks/deploy/hook01
#!/bin/sh do if [ "$domain" = mail.вашдомен.рф ] then /root/work/tegu_certs /bin/systemctl restart tegu fi done
Делаем его исполняемым
chmod +x /etc/letsencrypt/renewal-hooks/deploy/hook01
Далее создаем еще один скрипт
nano /root/work/tegu_certs
и прописываем в нем следующие строки
#!/bin/bash cat /etc/letsencrypt/live/mail.вашдомен.рф/fullchain.pem > /opt/tegu/certs/cert.pem cat /etc/letsencrypt/live/mail.вашдомен.рф/privkey.pem > /opt/tegu/certs/key.pem chgrp mail /opt/tegu/certs/* chmod 640 /opt/tegu/certs/*
Делаем скрипт исполняемым
chmod +x /root/work/tegu_certs
Меняем группу владельцев
chgrp root /etc/letsencrypt/archive/mail.вашдомен.рф/*
Запускаем скрипт
/root/work/tegu_certs
Проверяем результат отрабатывания скрипта
ls -lh /opt/tegu/certs/
В этой папке должны появится сертификаты
cert.pem key.pem
Соответственно в основных настройках почтового сервера мы указываем следующие пути к сертификатам.
/opt/tegu/certs/cert.pem /opt/tegu/certs/key.pem
Должно получиться так.
После того как сертификаты сгенерированы и прописаны на почтовом сервере, в основных настройках необходимо включить опцию "Требовать шифрования TLS/SSL для авторизации"
Перезапустим почтовый сервер:
systemctl restart tegu
Важно помнить что для успешной атоматической генерации сертификатов, порты 80 и 443 должны быть проброшены наружу.
После того как все настройки выполнены только теперь можно проверять какие порты слушает почтовый сервер.
netstat -lnp
В ответ должны увидеть:
root@tegu:~# netstat -tulpn | grep tegu tcp 0 0 127.0.0.1:8899 0.0.0.0:* LISTEN 81/tegu tcp6 0 0 :::8888 :::* LISTEN 81/tegu tcp6 0 0 :::9999 :::* LISTEN 81/tegu tcp6 0 0 :::25 :::* LISTEN 81/tegu tcp6 0 0 :::143 :::* LISTEN 81/tegu tcp6 0 0 :::465 :::* LISTEN 81/tegu tcp6 0 0 :::993 :::* LISTEN 81/tegu
Генерация DKIM¶
Переходим в раздел DKIM, нажимаем кнопку
Добавить ключь DKIM.
Финальная тонкая настройка DNS¶
После того как все настройки прописаны, кто ранее не прописал DNS зоны, идем в Web интерфейс в раздел - Информационная панель
В самом низу видим все настройки в формате BIND, которые TEGU советует вам сделать.
Отнеситесь к этому со всей внимательностью.
Управление почтовыми ящиками¶
Для создания почтового ящика в учетной доменной записи необходимо задать:
Логин; Пароль; Поле Email должно содержать email-адрес пользователя в полном формате. Пример: test@tegu.ooline
Условие для создания почтового ящика¶
Управление почтовыми ящиками пользователей осуществляется двумя способами:- Созданием учетной записи в локальной JSON File User DB. Этот способ применим лишь для очень небольших и однонодовых серверов. И этот способ является единственно доступным для редакции TEGU Free.
- Созданием учетной записи на сервере каталогов (интегрированным с почтовым сервером). Этот способ является преимущественным для большей части информационных систем.
- Логин;
- Пароль;
- Поле Email должно содержать email-адрес пользователя в полном формате. Пример: ik@mbk-lab.ru .
Остальные поля являются необязательными, но рекомендованными. К примеру квота и т.п.
Создание почтового ящика¶
Специфика работы с почтовыми ящиками во многом зависит от специфики работы сервера с учетными данными пользователей.
Ранее мы уже писали, что сервер не синхронизирует данные серверов каталогов, он обращается к серверу каталога всякий раз, когда необходимо выполнить авторизацию пользователя. При этом сервер не сохраняет полученную информацию, а лишь кеширует на время.
Кеширование необходимо, чтобы в случае DDOS-а почтовый сервер не завалил запросами сервер каталогов.
По умолчанию время кеширования составляет 10 секунд и вы можете самостоятельно изменить его с помощью параметра "Провайдеры БД пользователей/<выбранный провайдер>/Cache TTL (seconds)".
Это обстоятельство означает, что сервер не знает от существовании вашего пользователя, созданного на сервере каталогов до тех пор, пока не возникнет необходимость его авторизации.
Необходимость авторизации возникает когда:
- Сервер получил письмо в адрес этого пользователя;
- Сервер получил письмо от этого пользователя;
- Пользователь настраивает клиентское ПО или регистрируется на сайте веб-мэйла.
Если таких ситуаций не было, но сервер не знает о существовании и, как следствие, не создает почтовый ящик. Более того, этот пользователь не участвует в подсчете использованных лицензий.
Однако, при первой попытке успешно авторизации почтовый ящик создается автоматически.
Удаление почтового ящика¶
Рассмотрим обратную ситуация. Вы удалили пользователя в домене и пользовательский аккаунт больше не существует. Это означает только то, что сервер не получает запросов на авторизацию, но это не означает, что ящик должен быть удален. Он останется на почтовом сервере.
Таким образом, это означает, что удалять ставшие ненунжными ящики вы должны самостоятельно (вручную).
Для удаления ящика используйте диалог "Хранилища почты/Панель управления <соответствующего домена>/Почтовые ящики".
Данная специфика на первый взгляд может показаться странной, однако она призвана обеспечить высокую безопасность работы почтового сервера.