Используемые термины: Linux , SMTP , POP3 , IMAP .
В данной инструкции мы рассмотрим установку и настройку почтовой системы Carbonio бесплатной версии (Community Edition). В результате мы получим:
Все команды будут выполняться на Linux Ubuntu 20.04.
Подготовка к развертыванию Carbonio
Установка и настройка компонентов почтовой системы
Дополнительная рекомендация по настройке
Настройка входа в веб-панель управления
Получение SSL-сертификата
Настройка исходящих сообщений
Создание подписей DKIM
Проверка качества отправляемых сообщений
Параметры для настройки почтового клиента
Прежде чем начать, подготовимся к развертыванию почтовой системы.
При желании, можно ознакомиться с подробной документацией (на английском языке).
Как минимум, необходимо прочитать требования к системе . Особое внимание стоит уделить версии операционной системы. В нашем примере развертывание будет выполняться на Linux Ubuntu. На момент обновления инструкции, последняя поддерживаемая версия Ubuntu была 20.04.
Разработчик не публикует в открытом доступе ссылки на свои репозитории и актуальную документацию. Для получения необходимых сведений, нужно отправить заявку, заполнив небольшую форму на сайте :
После на указанный адрес электронной почты придет письмо с указанием по настройке репозитория и ссылкой на актуальную документацию.
Далее в данной инструкции будут использоваться сведения по развертыванию 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
Мы подготовили систему к развертыванию почтового сервера. Приступаем к его установке.
Наши действия разобьем на два этапа. В первом мы установим компоненты, во втором — развернем СУБД и настроим интеграцию базы с данными компонентами.
Выполняем команду:
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@<домен> и пароль, который задавали только что.
Мы должны увидеть стартовую страницу:
Почтовая система не будет работать полноценно без корректного сертификата — выданного на правильное доменное имя, от доверенного центра сертификации и с полной цепочкой сертификатов. В противном случае, мы можем столкнуться со следующими проблемами:
Для решения проблемы предусмотрена возможность установки сертификата с помощью веб-интерфейса. Мы получим бесплатный 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 :
Нам нужно добавить виртуальный хост. Вписываем имя, по которому пользователи будут подключаться к почтовой системе:
Справа кликаем по кнопке ADD :
И сохраняем, нажав на SAVE :
Теперь нажимаем по UPLOAD AND VERIFY CERTIFICATE :
Сверху выбираем получение сертификата от Let’s Encrypt (полная цепочка) и нажимаем GENERATE CERTIFICATE :
Мы должны получить уведомление на зеленой плашке, в котором говориться, что запущен процесс получения сертификата и статус будет получен на почту администратора системы (пользователя 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 ):
Создаем новый почтовый ящик:
Заполняем поля формы для создания нового почтового аккаунта:
* в нашем примере мы отредактировали поля:
Готово. Почтовый аккаунт создан.
Идем в почтовый веб-клиент по адресу https://<адрес почтового сервера> (в нашем примере https://mail.remontka.com ).
Кликаем по кнопке NEW:
Ниже откроется форма отправки письма. Вводим адресата и отправляем сообщение.
Проверяем получение письма. Письмо должно дойти, но оно может попасть в СПАМ.
Теперь настроим домен, чтобы улучшить качество отправки.
Для корректной отправки почты необходимо настроить 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 .
Для начала посмотрим список записей для нашего домена:
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-адрес для отправки тестового сообщения:
Создаем новое сообщение и отправляем его на тестовый адрес. Возвращаемся на сайт для проверки и кликаем по Затем проверьте оценку :
Если наше письмо не получило 10 баллов, анализируем проблемы и исправляем их.
Для настройки почтового клиента используем следующие параметры:
Настройка | IMAP | POP3 | SMTP |
---|---|---|---|
Адрес сервера | Имя сервера, на которое получен сертификат (в нашем примере mail.remontka.com) | ||
Порт | 143 | 110 | 587 |
SSL | STARTTLS | ||
Имя пользователя | Почтовый адрес, к которому выполняем подключение (вместе с @домен) | ||
Пароль | Пароль для почтового ящика |
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…