Перевод статьи: Selfhost Your Own Email Server with Mailcow
Автор оригинала: Abhishek Kumar
Дата публикации: 10 декабря 2024

Хостинг электронной почты — это одна из тех коварных статей расходов, которая часто застает врасплох. Вы покупаете домен, создаете несколько почтовых адресов, и все кажется отличным до тех пор, пока не приходит время продления.

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

Впрочем, в интернете существуют смешанные мнения о самостоятельном хостинге почтового сервера. Некоторые утверждают, что это не лучшая идея, ссылаясь на сложность и потенциальные проблемы с доставляемостью писем.

Другие, в основном любители вроде меня, настроили свои почтовые серверы и остались довольны результатом.

Логическая часть меня колебалась, но любопытный ребенок внутри хотел попробовать в любом случае. В конце концов, разве не лучший способ учиться — это совершать ошибки? Итак, вот как я развернул email-сервер с Mailcow, со своей долей проб и ошибок.

Почему именно Mailcow?

В ходе своего исследования я наткнулся на Mailcow — проект с открытым исходным кодом, предназначенный для упрощения хостинга электронной почты.

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

Mailcow объединяет все ключевые компоненты — Postfix, Dovecot, SOGo (веб-почта) и другие — и предоставляет чистый веб-интерфейс для управления пользователями, доменами и почтовыми ящиками.

Преимущества Mailcow:

  • Простота использования: Развертывание на Docker означает меньше возни с зависимостями

  • Современный интерфейс: Веб-панель для управления всем (прощайте, конфиги через терминал)

  • Поддержка сообщества: Масса руководств, форумов и обсуждений на Reddit, на которые можно опереться

Что понадобится для начала

Прежде чем мы погрузимся в процесс, давайте убедимся, что у вас есть все необходимое:

Аппаратное обеспечение

Вам понадобится сервер с достаточными ресурсами для ваших почтовых нужд. Для личного использования или небольшой установки должно хватить примерно 2 vCPU, 4 ГБ оперативной памяти и 60 ГБ хранилища.

Я рекомендую использовать VPS-провайдеров, таких как DigitalOcean или Linode. Новые пользователи могут получить кредит в $100 на 60 дней.

Программное обеспечение и знания

  • Чистая установка Linux (например, Ubuntu 20.04 или новее). Избегайте запуска других сервисов на том же сервере

  • Статический IP-адрес, который не находится в черных списках. Это критически важно для бесперебойной связи с другими почтовыми серверами

  • Доменное имя для ваших email-адресов

  • Базовое понимание почтовых протоколов, таких как SMTP, IMAP и POP3

  • Знакомство с DNS-записями (MX, SPF, DKIM, DMARC)

Все готово? Отлично, приступаем!

Настройка окружения

Для этого руководства я настроил виртуальный частный сервер (VPS) на Linode со следующими характеристиками: 4 ГБ оперативной памяти, 2 vCPU, 80 ГБ хранилища.

Выбор плана Linode
Выбор плана Linode

В качестве операционной системы я использовал Ubuntu 22.04 LTS. После того как VPS был готов, я приступил к следующим шагам настройки.

Страница настроек виртуальной машины Linode
Страница настроек виртуальной машины Linode

Установка Docker

Мы уже множество раз рассказывали о шагах установки Docker и Docker Compose в наших предыдущих статьях, поэтому не буду повторяться здесь.

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

Открытие необходимых портов

Почтовые серверы полагаются на определенные порты для связи. Убедитесь, что ваш файрвол разрешает следующие:

  • 25 (SMTP)

  • 80 (HTTP)

  • 443 (HTTPS)

  • 587 (SMTP с аутентификацией)

  • 993 (IMAP)

Используйте эту команду для проверки:

netstat -tulpn | grep -E '25|80|443|587|993'
Проверка открытых портов
Проверка открытых портов

Это обеспечит бесперебойную связь для отправки и получения писем.

Настройка DNS

Правильная настройка DNS критически важна для функционирования электронной почты. Ваш домен должен знать, куда направлять почтовый трафик. Вот краткое руководство:

  • A-запись: Связывает mail.yourdomain.com с IP-адресом вашего сервера

  • MX-запись: Направляет входящие письма на mail.yourdomain.com

  • SPF, DKIM и DMARC: Эти записи аутентифицируют ваши письма и снижают вероятность их попадания в спам

Если вы новичок в DNS, не волнуйтесь — в основном это копирование и вставка.

Для управления моими DNS-записями я использую Cloudflare — это мой выбор для всего, что связано с DNS. Ваша настройка может отличаться; возможно, вы используете панель DNS вашего регистратора доменов или другого провайдера.

Независимо от платформы, шаги остаются схожими, просто адаптируйте их под ваш инструмент.

A-запись

Name: mail
Type: A
Value: IP-адрес вашего сервера
Добавление A-записи в настройки DNS
Добавление A-записи в настройки DNS

CNAME-записи

autoconfig:

Name: autoconfig
Type: CNAME
Alias: mail.yourdomain.com
Добавление CNAME-записи с autoconfig в настройки DNS
Добавление CNAME-записи с autoconfig в настройки DNS

autodiscover:

Name: autodiscover
Type: CNAME
Alias: mail.yourdomain.com
Добавление CNAME-записи с autodiscover в настройки DNS
Добавление CNAME-записи с autodiscover в настройки DNS

MX-запись

Name: @
Type: MX
Priority: 10
Mail Exchange: mail.yourdomain.com
Добавление MX-записи в настройки DNS
Добавление MX-записи в настройки DNS

SPF-запись

Name: @
Type: TXT
Value: v=spf1 ip4:your_server_ip -all
Добавление TXT-записи для SPF в настройки DNS
Добавление TXT-записи для SPF в настройки DNS

DKIM-запись

Ключ мы сгенерируем позже во время настройки Mailcow.

Name: dkim._domainkey
Type: TXT
Value: v=DKIM1;k=rsa;t=s;s=email;p=...

Установка Mailcow

Теперь начинается самое интересное. Прежде всего, клонируем репозиторий Mailcow на ваш сервер:

git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
Клонирование репозитория Mailcow на сервер
Клонирование репозитория Mailcow на сервер

Генерация конфигурации

Запустите этот скрипт для создания конфигурации вашего сервера:

./generate_config.sh

Он запросит FQDN, то есть ваш домен. Используйте mail.yourdomain.com. Этот шаг также настроит SSL-сертификаты с использованием Let's Encrypt.

Запуск конфигурационного скрипта для генерации важных файлов для Mailcow
Запуск конфигурационного скрипта для генерации важных файлов для Mailcow

Запуск контейнеров

Когда вся подготовительная работа проделана, пора оживить ваш почтовый сервер. Чтобы запустить все, используйте следующую команду:

docker-compose up -d

Вот что происходит: Docker автоматически проверит наличие обновлений для контейнеров Mailcow (если необходимо), а затем загрузит и запустит все: ваш почтовый сервер, веб-интерфейс, спам-фильтры и многое другое — все одной командой.

Флаг -d означает "detached" (отсоединенный), то есть контейнеры будут работать в фоновом режиме, позволяя вам заниматься другими задачами, пока все загружается.

В зависимости от вашей системы и скорости интернета этот шаг может занять несколько минут, так что можете сходить за кофе, пока ваш сервер оживает.

Использование команды docker-compose для запуска контейнеров Mailcow
Использование команды docker-compose для запуска контейнеров Mailcow

Настройка Mailcow

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

Для этого перейдите по адресу https://mail.yourdomain.com, вам будет предложено войти, используя учетные данные по умолчанию:

  • Имя пользователя: admin

  • Пароль: moohoo

Вход в Mailcow при первоначальной настройке с учетными данными по умолчанию
Вход в Mailcow при первоначальной настройке с учетными данными по умолчанию

Добавление домена

Обеспечив свой административный доступ, давайте добавим ваш домен. Перейдите на вкладку Configuration в верхней части панели управления в разделе E-Mail.

Доступ к странице конфигурации для добавления домена
Доступ к странице конфигурации для добавления домена

Здесь вы добавите доменное имя, которое используете для электронной почты (например, yourdomain.com).

Простыми словами, этот шаг, по сути, говорит Mailcow: "Эй, это домен, который мы будем использовать для отправки и получения писем", так что убедитесь, что он правильный.

Нажатие на кнопку добавления домена
Нажатие на кнопку добавления домена

После того как вы его добавили, нажмите кнопку "Add Domain and restart SOGo", и вы готовы к следующему шагу.

После завершения нажмите кнопку добавления домена и перезапуска SOGo внизу
После завершения нажмите кнопку добавления домена и перезапуска SOGo внизу

Генерация DKIM-ключей

DKIM (DomainKeys Identified Mail) — это способ подписывать ваши письма, чтобы принимающие серверы могли проверить, что они действительно от вас и не были изменены.

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

Чтобы сгенерировать DKIM-ключи для вашего домена, перейдите в Configuration > ARC/DKIM Keys в Mailcow.

Этот раздел позволяет создать уникальный DKIM-ключ для вашего домена.

Генерация DKIM-ключа из меню конфигурации
Генерация DKIM-ключа из меню конфигурации

После генерации ключа вам нужно скопировать его и добавить как TXT-запись в настройках DNS вашего домена (обсуждалось выше).

Добавление DKIM-ключа в настройки DNS Cloudflare
Добавление DKIM-ключа в настройки DNS Cloudflare

Этот шаг может занять некоторое время для распространения, но не волнуйтесь — как только это будет сделано, ваши письма станут гораздо более защищенными.

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

С настроенным доменом и установленными DKIM-ключами вы готовы начать создавать почтовые ящики.

Здесь вы настроите индивидуальные учетные записи электронной почты для себя, своей команды или всех, кому нужен адрес электронной почты под вашим доменом.

Перейдите в Mail Setup > Mailboxes в панели управления Mailcow. Здесь вы увидите опцию "Add Mailbox".

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

Просто выберите имя пользователя, назначьте его вашему домену, создайте пароль и нажмите "Add Mailbox".

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

Вы можете добавить столько почтовых ящиков, сколько вам нужно, будь то для вас самих или для ваших коллег.

После готовности вы увидите почтовый ящик в списке с другими настройками
После готовности вы увидите почтовый ящик в списке с другими настройками

После создания почтовых ящиков вы можете протестировать их, войдя в интерфейс веб-почты. Просто перейдите в Apps > Webmail и войдите, используя только что созданную учетную запись электронной почты.

Веб-почта
Веб-почта

После этого ваша базовая настройка Mailcow готова! Теперь у вас есть полнофункциональный почтовый сервер, работающий на вашем домене, способный отправлять и получать письма.

Входящие веб-почты
Входящие веб-почты

Подводные камни и важное замечание

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

Письмо получено в веб-интерфейсе Outlook
Письмо получено в веб-интерфейсе Outlook

...и другое на мой доменный аккаунт, размещенный на ProtonMail.

Письмо получено в веб-клиенте ProtonMail
Письмо получено в веб-клиенте ProtonMail

К моему огорчению, оба письма попали прямиком в папку "Нежелательная почта/Спам"!

После некоторого поиска неисправностей я понял, что это, вероятно, потому, что я еще не настроил DMARC-запись.

Без DMARC провайдеры электронной почты часто помечают сообщения как подозрительные, даже если настройка сервера в остальном выглядит нормально.

Так что, хотя ваша настройка Mailcow может быть технически завершена на этом этапе, впереди еще важная работа.

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

Письмо получено в веб-почте Cowmail, отправленное с аккаунта Outlook
Письмо получено в веб-почте Cowmail, отправленное с аккаунта Outlook

Заключительные мысли

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

Благодаря его оптимизированному интерфейсу и предварительно настроенным Docker-контейнерам я не мог не задаться вопросом: почему больше людей не используют это? Казалось, что это идеальное решение, пока я не копнул глубже.

Запуск Mailcow — это не просто запуск нескольких контейнеров. Это совершенно другой уровень ответственности, который связан с управлением вашим IP.

От обеспечения чистоты репутации вашего IP до избежания черных списков и настройки статического IP — все это может стать ошеломляющим очень быстро. Mailcow не может решить эти проблемы за вас, и именно по этим причинам существуют управляемые сервисы.

Для большинства людей нажатие кнопки "зарегистрироваться" на надежном хостинге стоит своей цены ради спокойствия.

Но для любителей поковыряться, как я? Это именно тот вызов, который мы любим. Исследование, поломка вещей и их починка — это половина удовольствия.

Дело не только в наличии собственного почтового сервера, это знание того, как он работает в точности, и удовлетворение от его создания своими руками.

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

Удачи, и пусть ваши письма всегда попадают во входящие! ?


Ссылка на оригинальную статью: Selfhost Your Own Email Server with Mailcow на Linux Handbook

Комментарии (6)


  1. Nunter
    07.12.2025 08:16

    Ставьте MIAB , работает прекрасно, 2 года полет нормальный,

    ps провайдер gpon от МТС, белый ip, кривая PTR запись. 99% писем ходят туда-сюда без проблем.


    1. aborouhin
      07.12.2025 08:16

      В MIAB нет SoGo, т.е. почту, контакты и календарь в один клик не настроишь на смартфоне/в Outlook по протоколу Exchange. Если есть удалённые непродвинутые пользователи - это важно.

      И LDAP из коробки нет (нагуглился форк с LDAP'ом, но не знаю, насколько он живой и рабочий), что, опять же, если почта - не единственный сервис для одного и того же набора пользователей, - must have. А в mailcow после трёх лет обещаний LDAP завезли, вроде :)

      А вообще, чтобы потом лучше понимать устройство этого комбайна, полезно его не в готовом виде брать, а ставить и настаивать по отдельности Postfix, Dovecot, SoGo, веб-морду по вкусу и т.п. Больше затрат времени на старте, но потом легче разбираться, что и где пошло не так.


  1. ForestQ
    07.12.2025 08:16

    Кто-то пробовал вместо SoGo прикрутить что-то покрасивее?


    1. aborouhin
      07.12.2025 08:16

      Roundube штатно прикручивается по официальной доке. В целом не должно быть проблем прикрутить и что угодно другое. Только не вместо SoGo, а вместе, т.к. SoGo - это не только ценный мех плохонькая вебморда, но и CalDAV/CardDAV/ActiveSync.


  1. d3d11
    07.12.2025 08:16

    Так а что с DMARK?


  1. oller
    07.12.2025 08:16

    Если кто-то решит реально внедрять,

    То присмотритесь к carbonio, основанном на Zimbra. Весьма интересный и главное основанный не на докерах продукт. Кто знает минусы докера, тот поймет о чем речь.