Установка и настройка Carbonio CE на Linux Ubuntu

Используемые термины: Linux , SMTP , POP3 , IMAP .

В данной инструкции мы рассмотрим установку и настройку почтовой системы Carbonio бесплатной версии (Community Edition). В результате мы получим:

  • Почтовый веб-клиент.
  • SMTP-сервер для отправки писем (MTA).
  • Встроенную защиту от СПАМа и вирусов.
  • Доступ к почте по протоколам IMAP/POP3.
  • Корректную отправку писем без попадания в СПАМ.
  • Веб-интерфейс для администрирования почтовой системой.
  • Защищенное соединение с использованием сертификата от Let’s Encrypt.

Все команды будут выполняться на Linux Ubuntu 20.04.

Подготовка

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

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

Как минимум, необходимо прочитать требования к системе . Особое внимание стоит уделить версии операционной системы. В нашем примере развертывание будет выполняться на Linux Ubuntu. На момент обновления инструкции, последняя поддерживаемая версия Ubuntu была 20.04.

Получение ссылки на загрузку файлов

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

Установка и настройка Carbonio CE на Linux Ubuntu

После на указанный адрес электронной почты придет письмо с указанием по настройке репозитория и ссылкой на актуальную документацию.

Далее в данной инструкции будут использоваться сведения по развертыванию Carbonio CE, полученные по моей ссылке на момент обновления руководства. Вам я рекомендую получить свою ссылку и сверить сведения, если какие-то команды не отработают.

Установка репозитория

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

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

* 80 — незащищенный http, 443 — защищенный https.

Доступ к панели управления почтовым сервером в веб-интерфейсе:

iptables -I INPUT -p tcp —dport 6071 -j ACCEPT

При желании, можно обезопасить инфраструктуру, разрешив доступ только с определенных подсетей или IP-адресов, например:

iptables -I INPUT -p tcp -s 192.168.0.0/24 —dport 6071 -j ACCEPT

* в данном примере доступ к порту 6071 будет открыт только с подсети 192.168.0.0/24 .

Открываем порты 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 — незащищенный или защищенный (STARTTLS); 993 — защищенный (TLS/SSL);

При необходимости, можно открыть порты POP3:

iptables -I INPUT -p tcp —match multiport —dports 110,995 -j ACCEPT

* 110 — незащищенный или защищенный (STARTTLS); 995 — защищенный (TLS/SSL);

Сохраняем правила:

apt install iptables-persistent

netfilter-persistent save

Идем дальше.

Настройка времени

Устанавливаем корректный часовой пояс:

timedatectl set-timezone Europe/Moscow

* в данном примере мы зададим московское время.

Теперь установим утилиту для синхронизации времени и запустим ее.

apt install chrony

Имя сервера

Для корректной работы carbonio важно, чтобы в локальном файле hosts была запись о нашем сервере, в противном случае, некоторые команды управления сервером из командной строки будут завершаться с ошибкой. И так, задаем FQDN-имя для сервера:

hostnamectl set-hostname mail.remontka.com

Теперь открываем на редактирование файл:

vi /etc/hosts

… и добавляем:

192.168.1.15 mail.remontka.com

* где 192.168.1.15 — IP-адрес нашего сервера; mail — имя сервера; remontka.com — наш домен.

Не совсем очевидная проблема, но если в системе не будет пакета hostname, при попытке запустить установку карбонио, мы будем получать ошибку определения IP-адреса по имени. Устанавливаем пакет:

apt install hostname

Мы подготовили систему к развертыванию почтового сервера. Приступаем к его установке.

Установка Carbonio

Наши действия разобьем на два этапа. В первом мы установим компоненты, во втором — развернем СУБД и настроим интеграцию базы с данными компонентами.

Установка и запуск carbonio

Выполняем команду:

apt install service-discover-server carbonio-directory-server carbonio-files-db carbonio-mailbox-db carbonio-docs-connector-db carbonio-tasks-db carbonio-proxy carbonio-webui carbonio-files-ui carbonio-tasks-ui carbonio-files-public-folder-ui carbonio-user-management carbonio-mta carbonio-appserver carbonio-storages-ce carbonio-files-ce carbonio-preview-ce carbonio-docs-connector-ce carbonio-tasks-ce carbonio-docs-editor carbonio-prometheus

Дожидаемся ее выполнения и запускаем скрипт первичной настройки carbonio:

carbonio-bootstrap

Немного ждем — в результате система предложит изменить некоторые параметры или сразу согласиться принять настройки. Вводим y и нажимаем Enter :

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

Нажимаем Enter .

Следующая команда настроит интеграцию внутренних компонентов Carbonio между собой:

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

* в моем случае будет использоваться адрес 192.168.1.15 .

Также от нас потребуется придумать и дважды ввести пароль кластера:

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!

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

Установка и подготовка СУБД

Устанавливаем PostgreSQL версии 12 (согласно моей документации, которая пришла на почту):

apt install postgresql-12

Создадим переменную PG_PWD:

read -s -p «Password:» PG_PWD

Консоль попросит ввести пароль. Его нужно придумать и ввести один раз — данный пароль будет использоваться для доступа к СУБД:

Password:

Теперь создаем роль carbonio и базу данных carbonio :

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;»

* в качестве пароля будет использоваться значение созданной ранее переменной PG_PWD . Владельцем для созданной базы carbonio будет пользователь carbonio .

Удалим ранее созданную переменную с паролем:

unset PG_PWD

Установка carbonio завершена.

Дополнительная настройка

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

По умолчанию, carbonio доверяет всем отправителям локальной сети. Посмотреть настройку можно командой:

sudo -iu zextras postconf mynetworks

На практике это приводит к отправке СПАМа, если один из компьютеров сети будет заражен подходящим вирусом. Чтобы обезопасить себя, настроим почтовую систему, чтобы она доверяла только себе:

sudo -iu zextras carbonio prov ms $(hostname -f) zimbraMtaMyNetworks ‘127.0.0.0/8’

sudo -iu zextras zmmtactl restart

Можно идти дальше.

Вход в панель управления

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

Смотрим, для какого домена была создана учетная запись:

sudo -iu zextras carbonio prov getAllDomains

Домен должен соответствовать тому, что указан в имени сервера. В моем случае:

remontka.com

Создадим переменную, значением которой будет данный домен:

MAIL_DOMAIN=remontka.com

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

read -s -p «Password:» ADM_PWD

Теперь с помощью этих переменных установим пароль для учетной записи zextras:

sudo -iu zextras carbonio prov setPassword zextras@${MAIL_DOMAIN} ${ADM_PWD}

* обратите внимание, что полный логин zextras@<домен> .

Удалим переменную с паролем:

unset ADM_PWD

Открываем браузер и вводим адрес https://<IP-адрес сервера>:6071 — должна открыться страница с ошибкой, разрешаем открытие страницы и мы увидим форму для входа в панель администрирования Carbonio.

Вводим логин zextras@<домен> и пароль, который задавали только что.

Мы должны увидеть стартовую страницу:

Стартовая страница управления сервером carbonio

Получение и настройка сертификата (SSL/TLS)

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

  • Предупреждение о небезопасном подключении в браузере.
  • Предупреждения при подключении к почте клиентом с использованием STARTTLS.
  • Ошибка при подключении клиентом с использованием SSL/TLS.
  • Невозможность подключиться к почте с помощью некоторых почтовых клиентов.

Для решения проблемы предусмотрена возможность установки сертификата с помощью веб-интерфейса. Мы получим бесплатный SSL-сертификат от удостоверяющего центра Let’s Encrypt.

Для начала нам нужно сделать дополнительную настройку. Carbonio не слушает веб-запросы на порту 80, что приведет к проблеме при проверке домена. Нам нужно включить 80 порт с редиректом на порт 443. Для этого вводим 2 команды:

sudo -iu zextras carbonio prov ms $(hostname -f) zimbraReverseProxyMailMode redirect

sudo -iu zextras zmcontrol restart

После проверяем, что наш сервер стал слушать на порту 80:

ss -tunlp | grep :80

В моем примере сервер работает по доменному имени mail.remontka.com . Заходим на него, порт 6071 — https://mail.remontka.com:6071 . Браузер выдаст предупреждение о небезопасном подключении. Игнорируем и продолжаем загрузку.

Вводим логин и пароль для входа в панель администратора. Переходим в раздел управления доменами:

Открываем настройку доменов

Справа среди доменов (их может быть несколько) выберем наш:

Кликаем по домену, для которого мы хотим установить сертификат

Слева кликаем по Virtual Hosts & Certificates :

Переходим в раздел Virtual Hosts & Certificates

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

Добавляем виртуальный хост в Carbonio

Справа кликаем по кнопке ADD :

Кликаем по кнопке добавить

И сохраняем, нажав на SAVE :

Сохраняем настройке кнопкой save

Теперь нажимаем по UPLOAD AND VERIFY CERTIFICATE :

Переходим к загрузке и проверке сертификатов

Сверху выбираем получение сертификата от Let’s Encrypt (полная цепочка) и нажимаем GENERATE CERTIFICATE :

Генерируем сертификат, получив его от Lets Encrypt

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

Открываем веб-клиент по адресу почтового сервера (в моем примере, https://mail.remontka.com ) и заходим под пользователем zextras. Дожидаемся почтового уведомления. Если сертификат получен, мы увидим письмо с, примерно, таким содержимым:

The certification result is: SUCCESS

The certificate for remontka.com was successfully received.
Please NOTE that the Certificate and Key will be available after the proxy reload.
You’ll be able to download them from the Certificate section in the admin interface.

The files will be automatically updated when the certificate renews.

Идем в консоль сервера и выполняем команду:

sudo -iu zextras zmcontrol restart

Сертификат установлен.

Настройка отправки писем

Теперь выполним настройку отправки исходящих сообщений. Последовательно, рассмотрим создание нового почтового ящика, сделаем тестовую отправку сообщения и добьемся, чтобы наши письма не попадали в СПАМ.

Создание почтового ящика

Заходим в панель управления и кликаем по ссылке управления доменами:

Переходим к управлению доменами

Кликаем по ссылке управления учетными записями ( Accounts ):

Переходим на страницу управления аккаунтами

Создаем новый почтовый ящик:

Кликаем по кнопке создания нового почтового ящика

Заполняем поля формы для создания нового почтового аккаунта:

Заполняем форму для создания нового пользователя

* в нашем примере мы отредактировали поля:

  • Surname — имя (при заполнении данного поля автоматически заполняются поля username и Display Name ).
  • Password — пароль. Нужно ввести дважды.
  • Account Status — чтобы почта работала выбираем Active .

Готово. Почтовый аккаунт создан.

Отправка почты через веб-клиент

Идем в почтовый веб-клиент по адресу https://<адрес почтового сервера> (в нашем примере https://mail.remontka.com ).

Кликаем по кнопке NEW:

Создаем новое письмо

Ниже откроется форма отправки письма. Вводим адресата и отправляем сообщение.

Проверяем получение письма. Письмо должно дойти, но оно может попасть в СПАМ.

Теперь настроим домен, чтобы улучшить качество отправки.

Настройка DNS

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

1. Запись MX.

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

Подробнее о том, что это и как ее правильно прописать в статье Что такое MX-запись .

2. Запись A.

Для нашего сервера, который определен как MX запись нужна запись А, которая указывает на его IP-адрес. В моем примере это сервер mail.remontka.com , который из сети Интернет должен разрешаться во внешний IP-адрес.

3. PTR.

Данная запись представляет из себя обратное разрешение IP-адреса в домен. С ее помощью подтверждается легитимность отправителя.

Подробнее в статье Что такое PTR-запись .

4. SPF.

Это запись TXT, которая определяет список серверов для домена, с которых разрешена отправка почты.

Подробнее — Что такое SPF .

5. DKIM.

Подтверждение владельца домена. Письмо отправляется с зашифрованным заголовком и расшифровать его можно с помощью последовательности, хранящейся в TXT-записи на DNS. Соответственно, если владелец домена разместил такую последовательность, то он и является его владельцем.

Подробнее — Что такое DKIM . Также в данной инструкции ниже мы разберем подробнее настройку DKIM на Carbonio.

6. DMARC.

Определяет для домена политику проверки писем.

Подробнее — Что такое DMARC .

Настройка DKIM

Для начала посмотрим список записей для нашего домена:

sudo -iu zextras /opt/zextras/libexec/zmdkimkeyutil -q -d remontka.com

Если мы увидим ответ на подобие этого:

No DKIM Information for domain remontka.com

… записей DKIM нет для данного домена. Создадим ее командой:

sudo -iu zextras /opt/zextras/libexec/zmdkimkeyutil -a -d remontka.com

* данная команда создаст dkim-последовательность для домена remontka.com .

На экране мы увидим что-то на подобие:

Public signature to enter into DNS:
C1EC91E2-BC8F-11EE-81D0-32265FA98525._domainkey IN TXT ( «v=DKIM1; k=rsa; »
«p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxw5UUnaK8itZJQn0tqg1tg+NGwaq/tfyghGM7HBBOszV02xwxKMXtGBWxLT2my+ltl6DP7Mw64M9NsHetNBl3tWYnqZsJyoH5AkIEinimI7RduZozsOT5xrkjh+SO3X+ZNwLgBhtqErn2slhICiXBqqjjVIpnAnJ6/AFoTm7dup2UdIkv2EXe39xJY096r5mJD/0H5I+15407E»
«LVS6cu+o6mc5h6xeV6LsYB2ctQWfyvOG9KH9+z1E7ntwm0mSZX+k8aDYjxCR4TMmt2UCca9ZsJBXbmGK++eP00XJ4UnrTIiiPsfs0vjO/Kc/1pOuIvhr0k5/pH5hnuo9n4zSREBQIDAQAB» ) ; —— DKIM key C1EC91E2-BC8F-11EE-81D0-32265FA98525 for remontka.com

В данном ответе нас интересуют записи C1EC91E2-BC8F-11EE-81D0-32265FA98525._domainkey — это имя для TXT в домене remontka.com ; «v=DKIM1; k=rsa; » «p=M…AB» — содержимое записи.

В настройках домена необходимо добавить данную TXT-запись.

Проверка рейтинга при отправке письма

Заходим на сайт https://www.mail-tester.com/ и копируем email-адрес для отправки тестового сообщения:

Копируем email для отправки тестового письма

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

Выполняем проверку тестового сообщения

Если наше письмо не получило 10 баллов, анализируем проблемы и исправляем их.

Настройка почтового клиента

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

Настройка IMAP POP3 SMTP
Адрес сервера Имя сервера, на которое получен сертификат (в нашем примере mail.remontka.com)
Порт 143 110 587
SSL STARTTLS
Имя пользователя Почтовый адрес, к которому выполняем подключение (вместе с @домен)
Пароль Пароль для почтового ящика
EnglishRussianUkrainian