Mailcow: готовый почтовый сервер на postfix+dovecot+SOGo на Docker контейнерах

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/)

вход в панель админстрирования mailcow

Настройка DNS записей для почтового сервера

PTR-запись

Убедитесь, что запись PTR вашего IP-адреса соответствует FQDN вашего хоста mailcow: ${MAILCOW_HOSTNAME}. Эта запись обычно устанавливается у провайдера, у которого вы арендовали IP-адрес (сервер).

Минимальная конфигурация DNS

В этом примере показан набор записей для одного домена, управляемого mailcow. Каждому домену, добавленному в mailcow, для правильной работы необходим как минимум этот набор записей:

#Name Type Value
mail 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.

генерация dkim записи для mailcow

#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
mail IN TXT «v=spf1 a mx -all»

DMARC-запись

DMARC — предназначенна для снижения количества спамовых и фишинговых электронных писем, основанная на идентификации почтовых доменов отправителя на основании правил и признаков, заданных на почтовом сервере получателя

Пример DMARS-данных в TXT-записи DNS:

Управление Docker контейнерами Mailcow

Управление контейнерами, их состояние, перезапуск и просмотр журналов, можно осуществлять с помощью пользовательского интерфейса mailcow, а также через стандартные команды docker-compose.

проверка статуса mailcow, используемое место, память, управление контейнерами

Создание почтового домена, ящика и проверка работоспособности

Теперь вам нужно добавить обслуживаемый домен через веб интерфейс mailcow. Вверху, в основных вкладках выберите “Конфигурация” -> “Настройка почты”.

настройка почтового сервера mailcow

Далее: на вкладке “Домены”. В меню справа, нажимаем на “Добавить домен”.

управление доменами в mailcow

Затем: в появившемся окне заполните основные параметры (Максимальное количество ящиков, их размер, нужно ли создавать глобальную адресную книгу и т.д.) и нажимаем на “Добавить домен и перезапустить SOGo”.

mailcow добавить и настроить новый почтовый домен

Для создания почтового ящика необходимо перейти на вкладку “Почтовые ящики” и нажать на “Добавить почтовый аккаунт”

как добавить новый ящик в mailcow

Затем в появившемся окне заполняем основные параметры (имя, размер ящика, пароль) и нажимаем на “Добавить”

добавление почтового ящика в mailcow

Теперь можно зайти в веб интерфейс почтового ящика перейдя по адресу http://${MAILCOW_HOSTNAME}/SOGo (у меня это http://192.168.140.134/SOGo/).

веб интерфейс sogo

После успешной автаризации мы увидем главное экран почтового клиента.

web интерфейс почтового клиента mailcow

Mailcow это набор контейнеров docker, который позволит вам максимально быстро развернуть простой и современный почтовый сервер с дружественными интерфейсом.

Linux
Mailcow: готовый почтовый сервер на postfix+dovecot+SOGo на Docker контейнерах