Установка и настройка Carbonio CE на Ubuntu: почтовый сервер
Carbonio Community Edition (Zextras) — полноценная почтовая система: веб-клиент, MTA (SMTP), антиспам и антивирус, IMAP/POP3, панель администрирования и файлы/задачи/чат. В этой инструкции разберём развёртывание с нуля на Ubuntu.
Проверено на Ubuntu 20.04/22.04/24.04. Подробная документация — docs.zextras.com (на английском). Перед началом обязательно изучите требования к системе.
Подготовка
Получение ссылки на репозиторий
Разработчик не публикует ссылки на репозитории открыто. Заполните форму на сайте — на почту придёт письмо с настройкой репозитория и ссылкой на документацию. Ниже — сведения на момент обновления статьи; сверяйтесь со своей ссылкой.
Установка репозитория
apt update
apt install wget
wget https://repo.zextras.io/inst_repo_ubuntu.sh
bash ./inst_repo_ubuntu.sh
rm -f inst_repo_ubuntu.sh
Брандмауэр
iptables -L
Открываем порты веб-доступа:
iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
iptables -I INPUT -p tcp --dport 6071 -j ACCEPT
80 — HTTP, 443 — HTTPS, 6071 — панель администрирования.
Ограничить панель подсетью:
iptables -I INPUT -p tcp -s 192.168.0.0/24 --dport 6071 -j ACCEPT
SMTP:
iptables -I INPUT -p tcp --match multiport --dports 25,465,587 -j ACCEPT
25 — SMTP; 587 — STARTTLS; 465 — TLS/SSL.
IMAP:
iptables -I INPUT -p tcp --match multiport --dports 143,993 -j ACCEPT
143 — IMAP/STARTTLS; 993 — IMAPS.
POP3 (при необходимости):
iptables -I INPUT -p tcp --match multiport --dports 110,995 -j ACCEPT
apt install iptables-persistent
netfilter-persistent save
Время
timedatectl set-timezone Europe/Moscow
apt install chrony
Имя сервера
hostnamectl set-hostname mail.imaxis.ru
vi /etc/hosts
192.168.1.15 mail.imaxis.ru
где 192.168.1.15 — IP сервера, mail.imaxis.ru — FQDN.
Без пакета hostname установка падает с ошибкой определения IP по имени:
apt install hostname
Установка Carbonio
СУБД
apt install postgresql-16
read -s -p "Password:" PG_PWD
sudo -iu postgres psql -c "CREATE ROLE carbonio WITH LOGIN SUPERUSER encrypted password '$PG_PWD';"
sudo -iu postgres psql -c "CREATE DATABASE carbonio OWNER carbonio;"
Владелец базы carbonio — пользователь carbonio, пароль — из переменной PG_PWD.
Компоненты
apt install service-discover-server carbonio-directory-server carbonio-proxy carbonio-webui carbonio-files-ui carbonio-mta carbonio-mailbox-db carbonio-appserver carbonio-user-management carbonio-files-ce carbonio-files-public-folder-ui carbonio-files-db carbonio-tasks-ce carbonio-tasks-db carbonio-tasks-ui carbonio-storages-ce carbonio-preview-ce carbonio-docs-connector-ce carbonio-docs-connector-db carbonio-docs-editor carbonio-prometheus carbonio-message-broker carbonio-message-dispatcher-ce carbonio-message-dispatcher-db carbonio-ws-collaboration-ce carbonio-ws-collaboration-db carbonio-ws-collaboration-ui carbonio-videoserver-ce carbonio-catalog
systemctl status carbonio-*
Если сервис не запущен — перезапустите вручную.
Первичная настройка:
carbonio-bootstrap
При ненастроенных MX-записях увидим:
DNS ERROR - none of the "MX" records for imaxis.ru
resolve to this host
Отказываемся от смены домена:
Change domain name? [Yes] no
Далее соглашаемся применить настройки — y:
Main menu
1) Common Configuration:
2) carbonio-antivirus: Enabled
3) carbonio-directory-server: Enabled
4) carbonio-mta: Enabled
5) carbonio-appserver: Enabled
6) carbonio-proxy: Enabled
s) Save config to file
x) Expand menu
q) Quit
*** CONFIGURATION COMPLETE - press 'y' to apply configuration
Select from menu, or press 'y' to apply config (? - help) y
Configuration complete - press return to exit
Настраиваем взаимодействие компонентов:
service-discover setup-wizard
Setup of first service-discover server instance
ens18 192.168.1.15/24, fe80::d8c5:3aff:fe51:6a45/64
Specify the binding address for service discovery: 192.168.1.15/24
Create the cluster credentials password (will be used for setups):
Type the credential password again:
Указываем адрес сервера и придумываем пароль кластера.
pending-setups -a
Вводим пароль кластера.
There are no pending-setups to run. Exiting!
Инициализация СУБД
export PGPASSWORD=$PG_PWD
carbonio-mailbox-db-bootstrap carbonio 127.0.0.1
carbonio-files-db-bootstrap carbonio 127.0.0.1
carbonio-docs-connector-db-bootstrap carbonio 127.0.0.1
carbonio-tasks-db-bootstrap carbonio 127.0.0.1
carbonio-message-dispatcher-db-bootstrap carbonio 127.0.0.1
unset PG_PWD PGPASSWORD
Дополнительная настройка
По умолчанию Carbonio доверяет всем отправителям локальной сети — при заражении одного ПК это приведёт к рассылке спама.
sudo -iu zextras postconf mynetworks
Разрешаем доверять только себе:
sudo -iu zextras carbonio prov ms $(hostname -f) zimbraMtaMyNetworks '127.0.0.0/8'
systemctl restart carbonio-mta.target
Вход в панель управления
При установке создаётся пользователь zextras со случайным паролем. Задаём свой.
sudo -iu zextras carbonio prov getAllDomains
Домен должен совпадать с именем сервера, например imaxis.ru.
MAIL_DOMAIN=imaxis.ru
read -s -p "Password:" ADM_PWD
sudo -iu zextras carbonio prov setPassword zextras@${MAIL_DOMAIN} ${ADM_PWD}
unset ADM_PWD
Логин — zextras@<домен>.
Открываем https://<IP-сервера>:6071 (примите предупреждение сертификата) и входим.
Сертификат SSL/TLS
Без корректного сертификата (правильное имя, доверенный CA, полная цепочка) возникают проблемы: предупреждения в браузере, ошибки STARTTLS/SSL у клиентов.
Carbonio не слушает порт 80 — включаем редирект на 443:
sudo -iu zextras carbonio prov ms $(hostname -f) zimbraReverseProxyMailMode redirect
systemctl restart carbonio-proxy.target
ss -tunlp | grep :80
Открываем https://mail.imaxis.ru:6071, входим в панель. Переходим в раздел управления доменами, выбираем домен, слева — Virtual Hosts & Certificates.
Добавляем виртуальный хост (имя подключения пользователей) → ADD → SAVE.
Нажимаем UPLOAD AND VERIFY CERTIFICATE, выбираем получение от Let’s Encrypt (полная цепочка) → GENERATE CERTIFICATE.
Статус придёт письмом администратору (zextras):
The certification result is: SUCCESS
The certificate for imaxis.ru was successfully received.
systemctl restart carbonio-proxy.target
Отправка писем
Создание ящика
Панель управления → управление доменами → Accounts → создаём аккаунт.
Заполняем:
- Surname — имя (автозаполнит
usernameиDisplay Name); - Password — пароль (дважды);
- Account Status — Active.
Проверка отправки
Открываем веб-клиент https://mail.imaxis.ru, нажимаем NEW, отправляем письмо. Письмо может попасть в спам — настраиваем DNS.
Настройка DNS
- MX — определяет почтовый сервер домена;
- A — адрес для MX-хоста (внешний IP);
- PTR — обратное разрешение IP → домен (подтверждает легитимность);
- SPF — TXT-запись со списком разрешённых отправителей;
- DKIM — подтверждение владельца через подпись;
- DMARC — политика проверки писем домена.
Настройка DKIM
Посмотреть запись
DOMAIN=imaxis.ru
sudo -iu zextras /opt/zextras/libexec/zmdkimkeyutil -q -d ${DOMAIN}
Public signature to enter into DNS:
C1EC91E2-BC8F-11EE-81D0-32265FA98525._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." ) ; ----- DKIM key ... for imaxis.ru
Имя TXT-записи — <хэш>._domainkey, значение — v=DKIM1; k=rsa; p=....
Создать новую запись
DOMAIN=imaxis.ru
sudo -iu zextras /opt/zextras/libexec/zmdkimkeyutil -a -d ${DOMAIN}
Добавляем полученную TXT-запись в DNS и через несколько минут проверяем.
Проверка рейтинга
Открываем mail-tester.com, копируем тестовый адрес, отправляем письмо, нажимаем «Затем проверьте оценку». Если не 10 баллов — анализируем замечания.
Настройка почтового клиента
| Настройка | IMAP | POP3 | SMTP |
|---|---|---|---|
| Адрес сервера | Имя из сертификата (например, mail.imaxis.ru) |
||
| Порт | 143 | 110 | 587 |
| Шифрование | STARTTLS | ||
| Имя пользователя | Полный почтовый адрес (user@domain) |
||
| Пароль | Пароль ящика |
Тонкости и подводные камни
- Репозиторий по заявке — ссылки и документация выдаются персонально; чужие команды могут не сработать.
- Пакет
hostname— без негоcarbonio-bootstrapпадает с ошибкой определения IP. - MX/A/PTR — без корректных записей письма уходят в спам; PTR часто настраивает только провайдер.
- Порт 80 для Let’s Encrypt — Carbonio по умолчанию его не слушает; включайте
zimbraReverseProxyMailMode redirect. - Пароль кластера — задаётся при
service-discover setup-wizardи нужен дляpending-setups. - PostgreSQL 16 — сверяйте версию с документацией; в новых релизах она может отличаться.
- Панель 6071 — ограничьте доступ по IP, это административный интерфейс.
mynetworks— обязательно сузьте до127.0.0.0/8, иначе сервер станет открытым релеем для локальной сети.
Шпаргалка
wget https://repo.zextras.io/inst_repo_ubuntu.sh && bash ./inst_repo_ubuntu.sh
apt install postgresql-16 hostname
sudo -iu postgres psql -c "CREATE ROLE carbonio WITH LOGIN SUPERUSER encrypted password 'PWD';"
sudo -iu postgres psql -c "CREATE DATABASE carbonio OWNER carbonio;"
apt install service-discover-server carbonio-directory-server carbonio-proxy carbonio-webui carbonio-mta carbonio-mailbox-db carbonio-appserver ...
carbonio-bootstrap
service-discover setup-wizard
pending-setups -a
carbonio-mailbox-db-bootstrap carbonio 127.0.0.1
# панель: https://<IP>:6071 (zextras@domain)
Проверено на: Ubuntu 20.04/22.04/24.04 + Carbonio CE.
Дата: Сентябрь 2026.