Mailcow: готовый почтовый сервер на postfix+dovecot+SOGo на Docker контейнерах
Mailcow – готовый почтовый сервер на основе Postfix, Dovecot и другого программного обеспечения с открытым исходным кодом, который обеспечивает удобный современный веб-интерфейс для администрирования и использования электронной почты. В качестве почтового web клиента используется SOGo.
Mailcow это простой, универсальный комбайн с простым интерфейсом, который основан на docker контейнерах и можно использовать для быстрого развертывания полнофункционального почтового сервиса в небольших организациях. По простоте и функционалу он превосходит популярный iRedMail.
В этой статье мы рассмотрим, как настроить необходимые DNS записи для работы почты и развернуть почтовый сервер mailcow на Ubuntu 20.04.
Добавляем официальный репозиторий Docker
Mailcow основан на контейнерах, поэтому нужно сначала установить Docker. Обновите существующий перечень пакетов:
sudo apt update
Затем установите пакеты, которые позволяют apt использовать пакеты по HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Следующие команды позволяет загрузить и установить официальный ключ GPG Docker. Ключ используется для проверки пакетов, установленных из репозитория Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Теперь, когда официальный ключ GPG установлен, выполните следующие команды, чтобы добавить стабильный репозиторий Docker в Ubuntu:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Затем обновите базу данных пакетов информацией из вновь добавленного репозитория:
sudo apt update
Далее устанавливаем Docker:
sudo apt install docker-ce
Убедитесь, что Docker CE установлен правильно, запустив образ hello-world:
sudo docker run hello-world
Вы должны увидеть строки, похожие на показанные ниже:
Output: docker-compose version 1.28.6, build 5db8d86f
Установка Docker Compose
В Ubuntu Linux вы можете загрузить Docker Compose со страницы выпуска репозитория Compose на GitHub . Для загрузки последней версии 1.28.6 выполните следующие команды:
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
После загрузки сделаем файл исполняемым и создадим символическую ссылку на /usr/binary
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Проверьте, что Docker Compose работает:
docker-compose –version
Установка MailCow
Теперь, когда Docker и Docker Compose установлены, можно приступить к установке Mailcow.
Сначала установите Git:
sudo apt install git
После этого перейдите в каталог /opt и склонируйте репозиторий mailcow-dockerized:
cd /opt
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
Затем запустите скрипт чтобы загрузить зависимости Mailcow и сгенерировать конфиг файл:
sudo ./generate_config.sh
Сначала нужно указать имя почтового сервера (host name), например
mail.example.ru
:
Укажите временную зону (Europe/Moscow).
Timezone [Etc/UTC]: Europe/Moscow
Мы сгенерировали конфиг mailcow.conf на основе которого будет собираться связка из docker-контейнеров. При необходимости можно изменить порты если они у вас уже заняты, например, другими докер контейнерами, а также изменить hostname (MAILCOW_HOSTNAME=mail.example.ru)
Порты по умолчанию:
SMTP_PORT=25 SMTPS_PORT=465 SUBMISSION_PORT=587 IMAP_PORT=143 IMAPS_PORT=993 POP_PORT=110 POPS_PORT=995 SIEVE_PORT=4190 DOVEADM_PORT=127.0.0.1:19991 HTTP=80 HTTPS=443
Запускаем установку всех связанных контейнеров командой:
sudo docker-compose up -d
Установка может занять от 5 до 15 минут. В конце установки вы увидим что-то похожее…
Creating mailcowdockerized_dockerapi-mailcow_1 ... done Creating mailcowdockerized_olefy-mailcow_1 ... done Creating mailcowdockerized_memcached-mailcow_1 ... done Creating mailcowdockerized_watchdog-mailcow_1 ... done Creating mailcowdockerized_unbound-mailcow_1 ... done Creating mailcowdockerized_sogo-mailcow_1 ... done Creating mailcowdockerized_ejabberd-mailcow_1 ... done Creating mailcowdockerized_clamd-mailcow_1 ... done Creating mailcowdockerized_solr-mailcow_1 ... done Creating mailcowdockerized_redis-mailcow_1 ... done Creating mailcowdockerized_php-fpm-mailcow_1 ... done Creating mailcowdockerized_mysql-mailcow_1 ... done Creating mailcowdockerized_nginx-mailcow_1 ... done Creating mailcowdockerized_dovecot-mailcow_1 ... done Creating mailcowdockerized_postfix-mailcow_1 ... done Creating mailcowdockerized_acme-mailcow_1 ... done Creating mailcowdockerized_netfilter-mailcow_1 ... done Creating mailcowdockerized_rspamd-mailcow_1 ... done Creating mailcowdockerized_ipv6nat-mailcow_1 ... done
Теперь вы можете получить доступ к веб интерфейсу mailcow
https://${MAILCOW_HOSTNAME}
с учетными данными по умолчанию admin и паролем администратора moohoo. (У меня это http://192.168.140.134/)
Настройка DNS записей для почтового сервера
PTR-запись
Убедитесь, что запись PTR вашего IP-адреса соответствует FQDN вашего хоста mailcow: ${MAILCOW_HOSTNAME}. Эта запись обычно устанавливается у провайдера, у которого вы арендовали IP-адрес (сервер).
Минимальная конфигурация DNS
В этом примере показан набор записей для одного домена, управляемого mailcow. Каждому домену, добавленному в mailcow, для правильной работы необходим как минимум этот набор записей:
#Name | Type | Value |
IN A | 1.2.3.4 | |
autodiscover | IN CNAME | mail.example.ru. (your ${MAILCOW_HOSTNAME}) |
autoconfig | IN CNAME | mail.example.ru. (your ${MAILCOW_HOSTNAME}) |
@ | IN MX 0 | mail.example.ru. (your ${MAILCOW_HOSTNAME}) |
MX-запись вид DNS-записи, предназначенный для регистрации почтовых SMTP серверов. Именно с ее помощью почтовый агент отправителя определяет smtp сервер, на которые будет выполняться доставку письма.
DKIM-запись
Настоятельно рекомендуется создать запись DKIM TXT в пользовательском интерфейсе mailcow и установить соответствующую запись TXT в записях DNS.
#Name | Type | Value |
dkim._domainkey | IN TXT | «v=DKIM1;k=rsa;t=s;s=email;p=MIIB…» |
SPF-запись
SP позволяет владельцу домена указать в TXT-записи, соответствующей имени домена, список серверов, имеющих право отправлять email-сообщения с обратными адресами в этом домене.
Пример SPF-данных в TXT-записи DNS:
#Name | Type | Value |
IN TXT | «v=spf1 a mx -all» |
DMARC-запись
DMARC — предназначенна для снижения количества спамовых и фишинговых электронных писем, основанная на идентификации почтовых доменов отправителя на основании правил и признаков, заданных на почтовом сервере получателя
Пример DMARS-данных в TXT-записи DNS:
Управление Docker контейнерами Mailcow
Управление контейнерами, их состояние, перезапуск и просмотр журналов, можно осуществлять с помощью пользовательского интерфейса mailcow, а также через стандартные команды docker-compose.
Создание почтового домена, ящика и проверка работоспособности
Теперь вам нужно добавить обслуживаемый домен через веб интерфейс mailcow. Вверху, в основных вкладках выберите “Конфигурация” -> “Настройка почты”.
Далее: на вкладке “Домены”. В меню справа, нажимаем на “Добавить домен”.
Затем: в появившемся окне заполните основные параметры (Максимальное количество ящиков, их размер, нужно ли создавать глобальную адресную книгу и т.д.) и нажимаем на “Добавить домен и перезапустить SOGo”.
Для создания почтового ящика необходимо перейти на вкладку “Почтовые ящики” и нажать на “Добавить почтовый аккаунт”
Затем в появившемся окне заполняем основные параметры (имя, размер ящика, пароль) и нажимаем на “Добавить”
Теперь можно зайти в веб интерфейс почтового ящика перейдя по адресу http://${MAILCOW_HOSTNAME}/SOGo (у меня это http://192.168.140.134/SOGo/).
После успешной автаризации мы увидем главное экран почтового клиента.
Mailcow это набор контейнеров docker, который позволит вам максимально быстро развернуть простой и современный почтовый сервер с дружественными интерфейсом.
Linux
Mailcow: готовый почтовый сервер на postfix+dovecot+SOGo на Docker контейнерах