Grommunio
Содержание
Развёртывание
Где брать, как ставить
Для развёртывания на PVE можно прямо в хранилище PVE затащить образ по ссылке
https://download.grommunio.com/appliance/grommunio.x86_64-latest.install.iso
Ставить по этой инструкции
https://docs.grommunio.com/admin/installation/
Если ваши будущие емэйлы будут вида
user@myorg.net
То нужно ориентироваться на домены
mail.myorg.net
и
myorg.net
при инсталляции.
Порты 80 и 443 должны быть зарулены на сервер, если предполагается настройка сертификатов инсталлером через LestsEncrypt!
После инсталляции админка будет доступна на порту
8443
и туда входить нужно только по логину (не по полной почте).
Т.е. только по
admin
, а не по
admin@myorg.net
А в веб интерфейсе почты -- наоборот. Он находится по стандартному порту
443
и туда входим по
admin@myorg.net
, а не по
admin
Остальные порты важны будут при эксплуатации и при развёртывании их можно не забрасывать, о них -- ниже.
Порты
| Порт | Протокол | Сервис / Назначение в Grommunio |
|---|---|---|
| 25 | TCP | SMTP — входящая почта (передача между почтовыми серверами) |
| 80 | TCP | HTTP — веб-интерфейс (перенаправление на HTTPS / Let's Encrypt) |
| 110 | TCP | POP3 — получение почты (незашифрованный) |
| 143 | TCP | IMAP — получение почты (незашифрованный / STARTTLS) |
| 443 | TCP | HTTPS — Grommunio Web (Webmail), Outlook (EAS/MAPI over HTTP), Admin API |
| 465 | TCP | SMTPS — защищённая отправка почты клиентами (SSL/TLS) |
| 587 | TCP | SMTP Submission — отправка почты клиентами (STARTTLS) |
| 993 | TCP | IMAPS — защищённое получение почты (SSL/TLS) |
| 995 | TCP | POP3S — защищённое получение почты (SSL/TLS) |
| 5349 | TCP | STUN/TURN (coturn) — установка видеосоединений Jitsi за NAT (HTTPS/TLS) |
| 8443 | TCP | Grommunio Admin Admin Web Console — веб-панель администратора |
| 10000 | UDP | Jitsi Videobridge — медиапоток (аудио, видео, шеринг экрана) |
Записи для домена
| Назначение | Тип | Команда для проверки | Ожидаемый результат |
|---|---|---|---|
| Маршрутизация почты | MX |
dig MX myorg.net +short |
1 mail.myorg.net.
|
| IP-адрес узла | A |
dig A mail.myorg.net +short |
37.1.2.3
|
| Обратная зона (PTR) | PTR |
dig -x 37.1.2.3 +short |
mail.myorg.net.
|
| Разрешенные отправители (SPF) | TXT |
dig TXT myorg.net +short | grep spf |
"v=spf1 a mx ip4:37.1.2.3 ~all"
|
| Цифровая подпись (DKIM) | TXT |
dig TXT mailserver._domainkey.myorg.net +short |
"v=DKIM1; k=rsa; p=MIGfMA...AFwIDAQAB"
|
| Политика безопасности (DMARC) | TXT |
dig TXT _dmarc.myorg.net +short |
"v=DMARC1; p=quarantine; rua=mailto:admin@myorg.net"
|
БОльшую часть из этой информации можно также получить из формы настроек домена из админки grommunio.
Но есть нюанс с двумя записями:
1. Обратная зона (PTR) -- её невозможно настроить в админке провайдера днс зоны. Её должен настроить провайдер, выдающий интернет для почтового сервера и статический айпи адрес для него. Здесь необходимо добиться от интернет-провайдера, чтобы на его стороне была прописана эта самая обратная зона PTR. Суть в том, чтобы происходил процесс наоборот: по айпи адресу -- выдавался домен. Для почтовых серверов это важно!
2. Цифровая подпись (DKIM) -- чтобы корректно работала эта запись, сначала её необходимо настроить. Об этом подробно написано ниже!
3. Разрешенные отправители (SPF) -- здесь также должен фигурировать статический айпи адрес почтового сервера.
В примере это адрес 37.1.2.3, в реальном кейсе это должен быть везде айпи адрес конкретного сервера
Настроить подпись писем через DKIM
Действия мышкой в админке
Сначала внутри админки нужно создать домен и перейти в форму управления этим доменом.
Там нужно настроить всякие умолчания для вновь создаваемых пользователей этого домена.
С этими умолчаниями пользователи будут создаваться, если их создавать из админки.
Для настройки подписи через DKIM нужно нажать соответствующую кнопку в форме управления доменом. В открывшемся окне выполнить создание ключевой пары для подписи.
Выбрать алгоритм RSA и selector. По умолчанию selector имеет значение
dkim
, но можно установить свой. Этот селектор будет использован при настройке TXT записи для почтового домена.
Например, можно выбрать селектор
mailserver
В ответ на запрос генерации ключей придёт примерно такой шаблон для настройки TXT записи для домена:
mailserver._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs/D2gdESmBR0TqqeZ42wXCsEjGpPOB7uxp4uY0De+297hKs3XV+1CehUu5BxXxKKeJJIKRzogvzzOj76AXWMpiF5LS4oOUd3I+I+H8aCAC69QuV/TKHuB0Qqv7c8S54dw4210fHOSMMwVYlzfRGeyPfrKBcfZi4v98j7jh2on5f5btiaeppkUgUxMOPjTRepl3VzxTkID9cLrIEDc" "iA3nVMXbkj4wULMNSL3IjfuW4MRIJ6a4zZZqOECjrhBiSgAies+l0yh/+mn3LQmVcjba0RTuxa7x5xuf21AnKZvv0uZeQrROd0WrbLYGLFRO2Nk6/jUQPaPHS3ThDggbXz3RwIDAQAB" ) ;
и будет сказано что ключ лежит где-то здесь:
The private key has been generated on the server at /var/lib/grommunio-admin-api/myorg.net.mailserver.key
Этот путь до файла ключа будет нужен потом при настройке сервера по ssh.
Настройка сервера по ssh
Для доступа по ssh под root лучше сразу получить на сервер открытую часть ssh ключа и настроить конфиг ssh для быстрого подключения. Под root на сервер по паролю подключиться не получится. А через виртуальный дисплей виртуальной машины нельзя будет скопировать текст на сервер.
Поэтому самый верный вариант - зайти на сервер через виртуальный дисплей виртуальной машины, скопировать через scp открытую часть ключа с другой машины по сети, затем перейти на другую машину и подключаться по ключу с ней на сервер.
Войдя по ssh на сервер необходимо сделать ряд настроек:
Если ваш домен:
myorg.net
а селектор
mailserver
1. Создаём каталог
mkdir -p /var/lib/grommunio-antispam/dkim/myorg.net
2. Копируем тот самый файл, путь к которому нам сообщили в веб интерфейсе в предыдущем пункте в файл с названием селектора в только что созданный каталог
cp /var/lib/grommunio-admin-api/myorg.net.mailserver.key /var/lib/grommunio-antispam/dkim/myorg.net/mailserver.key
3. Создайм файл
cat << 'EOF' > /etc/grommunio-antispam/override.d/dkim_signing.conf
enabled = true;
sign_authenticated = true;
sign_local = true;
domain {
"myorg.net" {
path = "/var/lib/grommunio-antispam/dkim/myorg.net/mailserver.key";
selector = "mailserver";
}
}
use_domain = "header";
4. Устанавливаем права доступа на каталог и файл
chown -R groas:grommunio /var/lib/grommunio-antispam/dkim/ chmod 600 /var/lib/grommunio-antispam/dkim/myorg.net/mailserver.key
5. Перезапустить сервисы
systemctl restart grommunio-antispam systemctl restart postfix
Настройка TXT записи для домена
Эта настройка делается в веб панели управления доменом. В зависимости от того, где арендован домен. Например, reg.ru, beget.com и т.д...
Нюанс
Веб админка выдала на генерацию ключей что-то типа того:
mailserver._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs/D2gdESmBR0TqqeZ42wXCsEjGpPOB7uxp4uY0De+297hKs3XV+1CehUu5BxXxKKeJJIKRzogvzzOj76AXWMpiF5LS4oOUd3I+I+H8aCAC69QuV/TKHuB0Qqv7c8S54dw4210fHOSMMwVYlzfRGeyPfrKBcfZi4v98j7jh2on5f5btiaeppkUgUxMOPjTRepl3VzxTkID9cLrIEDc" "iA3nVMXbkj4wULMNSL3IjfuW4MRIJ6a4zZZqOECjrhBiSgAies+l0yh/+mn3LQmVcjba0RTuxa7x5xuf21AnKZvv0uZeQrROd0WrbLYGLFRO2Nk6/jUQPaPHS3ThDggbXz3RwIDAQAB" ) ;
Это на самом деле означает, что значение TXT записи
mailserver._domainkey
в веб админке провайдера днс должно быть таким:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs/D2gdESmBR0TqqeZ42wXCsEjGpPOB7uxp4uY0De+297hKs3XV+1CehUu5BxXxKKeJJIKRzogvzzOj76AXWMpiF5LS4oOUd3I+I+H8aCAC69QuV/TKHuB0Qqv7c8S54dw4210fHOSMMwVYlzfRGeyPfrKBcfZi4v98j7jh2on5f5btiaeppkUgUxMOPjTRepl3VzxTkID9cLrIEDciA3nVMXbkj4wULMNSL3IjfuW4MRIJ6a4zZZqOECjrhBiSgAies+l0yh/+mn3LQmVcjba0RTuxa7x5xuf21AnKZvv0uZeQrROd0WrbLYGLFRO2Nk6/jUQPaPHS3ThDggbXz3RwIDAQAB
, а на строчки оно разбивается по некоторым историческим причинам, суть которых в ограничении длины строки. Видимо, особенности протокола DNS...
Перед тем, как конфигурировать TXT запись на уровне DNS необходимо свериться: точно ли у ключа, который ранее был скопирован в файл
/var/lib/grommunio-antispam/dkim/myorg.net/mailserver.key
base64 строка соответствует значению ключа
p=
из значения для TXT записи, приведённой выше.
Получить этот ключ можно следующим образом:
openssl rsa -in /var/lib/grommunio-antispam/dkim/myorg.net/mailserver.key -pubout -outform DER 2>/dev/null | base64 -w 0
В ответ придёт что-то вроде:
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs/D2gdESmBR0TqqeZ42wXCsEjGpPOB7uxp4uY0De+297hKs3XV+1CehUu5BxXxKKeJJIKRzogvzzOj76AXWMpiF5LS4oOUd3I+I+H8aCAC69QuV/TKHuB0Qqv7c8S54dw4210fHOSMMwVYlzfRGeyPfrKBcfZi4v98j7jh2on5f5btiaeppkUgUxMOPjTRepl3VzxTkID9cLrIEDciA3nVMXbkj4wULMNSL3IjfuW4MRIJ6a4zZZqOECjrhBiSgAies+l0yh/+mn3LQmVcjba0RTuxa7x5xuf21AnKZvv0uZeQrROd0WrbLYGLFRO2Nk6/jUQPaPHS3ThDggbXz3RwIDAQAB
В теории (в теории, но на практике было и по другому. Это надо проверить ещй раз!) эти ключи должны совпадать. Т.е. ключ, который с переносами и кавычками был выдан веб интеряейсом, и ключ, который выдала команда выше -- должны быть одинаковы. Ведь файл ключа одинаковый (мы его просто скопировали для донастройки grommunio-antispam)!
Но на практике было и так что команда
openssl rsa -in...
выдавала ключ, который отличается. Если ключи будут отличаться, то в значение
p=
для DNS записи необходимо заменить на значение, полученное от команды:
openssl rsa -in...
Далее в веб-админке DNS сервера добавляем запись типа
TXT
, поддомен которой должен быть такой (полный домен имеется в виду такой: mailserver._domainkey.myorg.net)
mailserver._domainkey
, а его значением должно быть
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs/D2gdESmBR0TqqeZ42wXCsEjGpPOB7uxp4uY0De+297hKs3XV+1CehUu5BxXxKKeJJIKRzogvzzOj76AXWMpiF5LS4oOUd3I+I+H8aCAC69QuV/TKHuB0Qqv7c8S54dw4210fHOSMMwVYlzfRGeyPfrKBcfZi4v98j7jh2on5f5btiaeppkUgUxMOPjTRepl3VzxTkID9cLrIEDciA3nVMXbkj4wULMNSL3IjfuW4MRIJ6a4zZZqOECjrhBiSgAies+l0yh/+mn3LQmVcjba0RTuxa7x5xuf21AnKZvv0uZeQrROd0WrbLYGLFRO2Nk6/jUQPaPHS3ThDggbXz3RwIDAQAB
т.е. в общем виде так:
v=DKIM1; k=rsa; p=<результат, полученный от команды openssl rsa -in...>
Проверка TXT записи
После того, как TXT запись домена проделегируется проверить это можно командой:
dig TXT mailserver._domainkey.myorg.net +short
в ответ должно прийти что-то типа
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs/D2gdESmBR0TqqeZ42wXCsEjGpPOB7uxp4uY0De+297hKs3XV+1CehUu5BxXxKKeJJIKRzogvzzOj76AXWMpiF5LS4oOUd3I+I+H8aCAC69QuV/TKHuB0Qqv7c8S54dw4210fHOSMMwVYlzfRGeyPfrKBcfZi4v98j7jh2on5f5btiaeppkUgUxMOPjTRepl3VzxTkID9cLrIEDciA3nVMXbkj4wULMNSL3IjfuW4MRIJ6a4zZZqOECjrhBiSgAies+l0yh/+mn3LQmVcjba0RTuxa7x5xuf21AnKZvv0uZeQrROd0WrbLYGLFRO2Nk6/jUQPaPHS3ThDggbXz3RwIDAQAB"
здесь важно проверить что значение
p=
соответствует той самой base64 строке, которая выше была получена через
openssl rsa -in...
Проверка работы механизма подписи емэйлов
Войти в веб интерфейс почты (не в админку по https://mail.myorg.net:8443, а просто на https://mail.myorg.net) любым ящиком, который есть в домене и отправить с него письмо куда-нибудь себе на ящик (gmail, yandex и.т.д...).
У себя в аккаунте (gmail, yandex и.т.д...) ищем исходники письма (это обычно PlainText) и там должны быть такие строки:
Раз! Само наличие этой строки говорит о том, что сервер стал подписывать письма!
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=myorg.net; s=mailserver; t=1785189679; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=ckTMbuexoDGBdcu/luc2eNS+Ap0k9i9yjhltmXYdzGo=; b=BOe7sXr+EW6iTfZdDVCxA8gZ2gXBw3KcWC2PFALvbi6inSXlO/u3cZCLtEcBCJ9/accyFP Hn1W2qHSKEeY1B8Ri5SqqUoXBO7bEc5IPOr0dYyrivABFsT+Zr7XNeDUHlC6Lbt7YvaI4z vatOvc5T+qzDv/bqu685KqqK33PRQiY=
Но это ещё не всё... Необходимо проверить проверку этой подписи. Здесь как раз важно, чтобы TXT запись у домена была корректна.
Два!
Для этого также ищем среди исходинка письма следующую строку:
Authentication-Results: mx.google.com; dkim=pass header.i=@myorg.net header.s=mailserver header.b=BOe7sXr+; spf=pass (google.com: domain of admin@myorg.net designates 37.112.130.81 as permitted sender) smtp.mailfrom=admin@myorg.net; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=myorg.net
Здесь важно увидеть
dkim=pass
и
spf=pass
После этого можно проверить работу сервера через внешний сервис
https://mail-tester.com/
При корректной настройке почтового сервера этот сервис должен показать 10 из 10 возможных "попугаев".
Важно! У сервиса этого есть ограничения на кол-во проверок в сутки. Потом он просит денюжку или ждать следующего дня. Поэтому сначала проверяем текст в исходниках письма, как описано выше, и только потом - через сервис.
Пакетное создание ящиков
Особенности работы и способы починки
Ошибки входа в веб интерфейс
После нескольких итерация создания/удаления пользователя с одинаковым емэйлом веб интерфейс почтового ящика (не админский интерфейс на порту 8443, а обычный - на порту 443) показывает невменяемые ошибки прав доступа.
Как конкретно это решить без перезагрузки сервера до сих пор выяснить не удалось.
Но перезагрузка сервера - точно решает большинство таких проблем. Наверное, даже, все.
Кратко: ошибка где-то в кешах сессий или что-то в этом роде.
Перезагрузка сервера решает эту проблему. Поэтому это проблемой можно не считать
Комьюнити версия не разрешает создавать больше 5 учётных записей почты на домен
Чтобы создавать больше - нужно покупать лицензию. Или...
Открываем файл
/usr/share/grommunio-admin-api/orm/users.py
Ищем там строчки по
License user limit exceeded
Включаем скилл программиста и комментируем по вкусу. Затем перезагружаемся.
В этом разделе специально подробно не описан процесс решения этой проблемы - из-за солидарности с разработчиками продукта.