Установка Mailcow на VPS: Повний посібник з self-hosted пошти з Docker та Let's Encrypt
TL;DR
У цьому докладному посібнику ми крок за кроком налаштуємо повноцінний поштовий сервер Mailcow на вашому Virtual Private Server (VPS), використовуючи Docker та автоматично генеровані SSL-сертифікати від Let's Encrypt. Ви отримаєте повний контроль над своєю електронною поштою, забезпечуючи приватність, надійність та гнучкість, що ідеально підходить для розробників, соло-фаундерів та компаній, які прагнуть незалежності від сторонніх поштових провайдерів.
- Налаштування Mailcow на VPS дозволяє створити власний поштовий сервіс з повним контролем над даними.
- Використання Docker спрощує розгортання, ізоляцію та оновлення всіх компонентів Mailcow.
- Автоматична інтеграція Let's Encrypt забезпечує безкоштовні та актуальні SSL/TLS сертифікати для захисту трафіку.
- Посібник охоплює всі етапи: від вибору VPS та базового налаштування сервера до встановлення Mailcow, конфігурації DNS, резервного копіювання та усунення типових проблем.
- Ви отримаєте повністю функціональний поштовий сервер, що включає веб-інтерфейс, антиспам, антивірус та підтримку сучасних протоколів.
- Усі команди та налаштування актуальні на 2026 рік і призначені для негайного виконання.
Що ми налаштовуємо і навіщо
У цьому посібнику ми будемо встановлювати та налаштовувати Mailcow, комплексне рішення для створення власного поштового сервера. Mailcow — це потужний, повністю контейнеризований (на базі Docker) поштовий сервіс, який надає всі необхідні компоненти для роботи з електронною поштою: SMTP, IMAP/POP3, веб-інтерфейс (SOGo), антиспам (Rspamd), антивірус (ClamAV), календар, контакти, а також інтеграцію з Let's Encrypt для автоматичної видачі SSL/TLS сертифікатів.
Завдання полягає в тому, щоб розгорнути Mailcow на вашому власному VPS або виділеному сервері, що дасть вам повний контроль над вашою поштовою інфраструктурою. У підсумку ви отримаєте надійний та безпечний поштовий сервер, який зможе обслуговувати домени та користувачів на ваш вибір. Ви зможете створювати поштові скриньки, керувати аліасами, налаштовувати правила фільтрації спаму та бути впевненими у конфіденційності ваших даних, оскільки вони зберігатимуться на вашому власному обладнанні, а не у стороннього провайдера.
Чому self-hosted пошта на VPS, а не хмарні сервіси?
Існує безліч альтернатив self-hosted пошті, таких як Gmail, Outlook 365, ProtonMail або Yandex.Mail для домену. Вони пропонують зручність та простоту у використанні, але мають свої недоліки:
- Контроль даних: При використанні хмарних сервісів ваші дані зберігаються на серверах третіх осіб, що може викликати питання конфіденційності та безпеки. Self-hosted рішення дає вам повний контроль над тим, де і як зберігаються ваші електронні листи.
- Гнучкість та кастомізація: Хмарні сервіси пропонують обмежені можливості налаштування. Mailcow, будучи розгорнутим на вашому сервері, дозволяє тонко налаштовувати всі аспекти роботи пошти, від правил фільтрації до інтеграції з іншими системами.
- Вартість у довгостроковій перспективі: Для великих команд або безлічі поштових скриньок вартість хмарних поштових сервісів може значно зростати. Власний сервер, при правильному налаштуванні, може бути більш економічно вигідним рішенням.
- Незалежність: Ви не залежите від політики, збоїв або змін у роботі сторонніх провайдерів. Ваш поштовий сервер працюватиме так, як ви його налаштували.
Цей посібник ідеально підходить для тих, хто цінує приватність, хоче повний контроль над своєю інфраструктурою або має специфічні вимоги, які не можуть бути задоволені стандартними хмарними пропозиціями. Розробники можуть підняти пошту для своїх проєктів, стартапери — для командної комунікації, а криптоентузіасти — для забезпечення приватності.
Який VPS-конфіг потрібен для цього завдання
Для успішного та стабільного розгортання Mailcow критично важливо вибрати відповідний VPS або виділений сервер. Mailcow, хоча й оптимізований для роботи в контейнерах, є досить ресурсоємним додатком через безліч включених компонентів (база даних, веб-сервер, антиспам, антивірус тощо).
Мінімальні вимоги (для 1-5 користувачів, невеликий трафік):
- CPU: 2 ядра x86-64. Сучасні процесори з високою тактовою частотою кращі.
- RAM: 4 ГБ. Це абсолютний мінімум; при активному антиспамі та антивірусі може бути недостатньо. Частина ОЗП буде використовуватися Docker та ОС.
- Диск: 50 ГБ SSD. SSD критично важливий для продуктивності бази даних та швидкого доступу до файлів пошти. Враховуйте, що листи швидко заповнюють дисковий простір.
- Мережа: 100 Мбіт/с з необмеженим трафіком або великим обсягом (мінімум 1 ТБ/міс). Стабільна IP-адреса, бажано без історії спаму.
Рекомендований VPS-план (для 5-20 користувачів, помірний трафік):
- CPU: 4 ядра x86-64.
- RAM: 8 ГБ. Це забезпечить комфортну роботу всіх компонентів, включаючи Rspamd та ClamAV.
- Диск: 100-200 ГБ SSD. Із запасом для зростання поштових скриньок та зберігання логів.
- Мережа: 1 Гбіт/с з необмеженим трафіком.
Для таких характеристик можна розглянути VPS із зазначеними характеристиками. При виборі завжди звертайте увагу на тип диска (тільки SSD) та наявність необмеженого або великого обсягу трафіку.
Коли потрібен dedicated, а не VPS?
Виділений сервер (dedicated server) стає необхідним, якщо:
- Велика кількість користувачів: Більше 50 активних користувачів, які генерують значний трафік.
- Високий обсяг пошти: Сервер обробляє сотні тисяч листів на день.
- Вимоги до продуктивності: Потрібна максимальна продуктивність для антиспаму, антивірусу або специфічних інтеграцій.
- Суворі SLA та ізоляція: Потрібна повна фізична ізоляція для безпеки та стабільності, а також гарантовані ресурси без "шумних сусідів".
- Зберігання великого обсягу даних: Поштові скриньки з терабайтами даних.
Для таких сценаріїв доцільно розглянути відповідний dedicated, який надає повний контроль над апаратним забезпеченням та гарантує виділені ресурси.
Локація: на що впливає
Вибір локації сервера може впливати на кілька факторів:
- Затримка (latency): Чим ближче сервер до більшості ваших користувачів, тим меншою буде затримка при доступі до веб-інтерфейсу та IMAP/POP3.
- Законодавство: Закони про зберігання даних та приватність різняться в різних країнах. Вибирайте локацію, що відповідає вашим вимогам та регулюючим нормам.
- Репутація IP-адреси: Деякі IP-діапазони в певних країнах можуть мати гіршу репутацію у спам-фільтрів, що може впливати на доставку вашої пошти. Бажано вибирати провайдерів з хорошою репутацією та можливістю отримання "чистої" IP-адреси.
- DNS-резолвінг: Близькість до основних вузлів інтернету може трохи прискорити DNS-запити, але це менш критично, ніж затримка для користувачів.
Зазвичай рекомендується вибирати локацію, максимально близьку до вашої основної аудиторії або місцезнаходження вашого бізнесу.
Підготовка сервера
Перед встановленням Mailcow необхідно виконати базову підготовку сервера. Ми будемо використовувати Ubuntu 24.04 LTS як стабільну та широко використовувану операційну систему. Переконайтеся, що у вас є SSH-доступ до сервера з правами root або користувача з sudo.
1. Оновлення системи та встановлення базових утиліт
Насамперед оновимо систему та встановимо необхідні пакети.
sudo apt update # Оновлюємо список пакетів
sudo apt upgrade -y # Оновлюємо встановлені пакети
sudo apt install -y curl wget git # Встановлюємо базові утиліти: curl, wget, git
2. Створення нового користувача з sudo-правами (рекомендується)
Робота під root не рекомендується для повсякденних завдань. Створимо нового користувача та додамо його до групи sudo.
sudo adduser mailuser # Створюємо нового користувача 'mailuser'
sudo usermod -aG sudo mailuser # Додаємо користувача 'mailuser' до групи 'sudo'
Тепер вийдіть із сесії root і увійдіть як mailuser. Усі подальші команди, що вимагають привілеїв, виконуватимуться з sudo.
3. Налаштування SSH-ключів (опціонально, але вкрай рекомендується)
Для підвищення безпеки рекомендується використовувати SSH-ключі замість паролів. Якщо у вас ще немає пари ключів, згенеруйте їх на локальній машині:
ssh-keygen -t rsa -b 4096 # Генеруємо новий SSH-ключ на локальній машині
Потім скопіюйте публічний ключ на сервер:
ssh-copy-id mailuser@ВАШ_IP_СЕРВЕРА # Копіюємо публічний ключ на сервер для 'mailuser'
Після цього можна відключити автентифікацію за паролем у файлі /etc/ssh/sshd_config, встановивши PasswordAuthentication no та перезапустивши SSH-сервіс.
4. Налаштування файрволу (UFW)
Встановимо та налаштуємо UFW (Uncomplicated Firewall) для захисту сервера. За замовчуванням усі вхідні з'єднання будуть заборонені, крім тих, що ми явно дозволимо.
sudo apt install -y ufw # Встановлюємо UFW
sudo ufw default deny incoming # Забороняємо всі вхідні з'єднання за замовчуванням
sudo ufw default allow outgoing # Дозволяємо всі вихідні з'єднання за замовчуванням
sudo ufw allow ssh # Дозволяємо SSH (порт 22)
sudo ufw enable # Вмикаємо файрвол
sudo ufw status # Перевіряємо статус файрволу
На цьому етапі сервер готовий до встановлення Docker та Mailcow.
Встановлення ПЗ — покроково
Mailcow працює на Docker, тому першим кроком буде встановлення Docker Engine та Docker Compose. Ми будемо використовувати актуальні версії для 2026 року.
1. Встановлення Docker Engine
Встановимо Docker Engine, використовуючи офіційний репозиторій Docker, щоб завжди отримувати актуальні версії.
# Добавляем GPG ключ Docker
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Добавляем репозиторий Docker в APT
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Устанавливаем Docker Engine, Docker CLI и containerd
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Проверяем установку Docker
sudo docker run hello-world # Запускаем тестовый контейнер для проверки установки Docker
Додамо вашого користувача до групи docker, щоб не використовувати sudo з кожною командою Docker:
sudo usermod -aG docker $USER # Добавляем текущего пользователя в группу 'docker'
newgrp docker # Применяем изменения группы без перезахода
Тепер Docker встановлено та готово до роботи. Версія Docker Engine буде приблизно 26.x - 27.x, а Docker Compose Plugin 2.24.x - 2.27.x, що є актуальним для 2026 року.
2. Клонування репозиторію Mailcow-Dockerized
Перейдемо до директорії, де ви хочете зберігати файли Mailcow (наприклад, /opt/mailcow-dockerized), і клонуємо офіційний репозиторій Mailcow.
sudo mkdir /opt/mailcow-dockerized # Создаем директорию для Mailcow
sudo chown $USER:$USER /opt/mailcow-dockerized # Устанавливаем владельца директории на текущего пользователя
cd /opt/mailcow-dockerized # Переходим в созданную директорию
git clone https://github.com/mailcow/mailcow-dockerized . # Клонируем репозиторий Mailcow в текущую директорию
3. Генерація файлу конфігурації Mailcow
Mailcow використовує файл mailcow.conf для своїх налаштувань. Його можна згенерувати за допомогою скрипта.
./generate_config.sh # Запускаем скрипт для генерации mailcow.conf
Скрипт поставить кілька запитань:
- Hostname (FQDN): Введіть повне доменне ім'я вашого поштового сервера, наприклад,
mail.yourdomain.com. Це буде основне ім'я, за яким буде доступний ваш сервер. - Timezone: Виберіть вашу часову зону.
Після відповіді на запитання буде створено файл mailcow.conf. Відкрийте його та переконайтеся, що всі налаштування відповідають вашим потребам. Особливу увагу приділіть змінним, пов'язаним з портами та мережею, якщо у вас є специфічні вимоги.
4. Налаштування DNS-записів
Це критично важливий крок для роботи поштового сервера. Без правильних DNS-записів ваша пошта не буде доставлятися або потраплятиме в спам. Вам потрібно буде додати наступні записи до панелі керування DNS вашого домену (yourdomain.com):
- A-запис для Mailcow FQDN:
- Ім'я/Хост:
mail(або ваше FQDN, наприклад,mail.yourdomain.com) - Тип:
A - Значення:
ВАШ_IP_СЕРВЕРА
- Ім'я/Хост:
- AAAA-запис для Mailcow FQDN (якщо використовуєте IPv6):
- Ім'я/Хост:
mail - Тип:
AAAA - Значення:
ВАШ_IPV6_АДРЕС_СЕРВЕРА
- Ім'я/Хост:
- MX-запис: (вказує на ваш поштовий сервер)
- Ім'я/Хост:
@абоyourdomain.com - Тип:
MX - Пріоритет:
10(або будь-яке число, чим менше, тим вищий пріоритет) - Значення:
mail.yourdomain.com
- Ім'я/Хост:
- SPF-запис: (для запобігання підробці відправника)
- Ім'я/Хост:
@абоyourdomain.com - Тип:
TXT - Значення:
v=spf1 mx a:mail.yourdomain.com -all
- Ім'я/Хост:
- DKIM-запис: (для підпису вихідних листів; генерується Mailcow)
- Після першого запуску Mailcow згенерує DKIM-ключі. Вам потрібно буде скопіювати TXT-запис з веб-інтерфейсу Mailcow (
Configuration->Domains->Add domainабоEdit domain) та додати його до DNS. Формат буде приблизно такий:dkim._domainkey.yourdomain.com TXT v=DKIM1; k=rsa; p=ПУБЛИЧНЫЙ_КЛЮЧ
- Після першого запуску Mailcow згенерує DKIM-ключі. Вам потрібно буде скопіювати TXT-запис з веб-інтерфейсу Mailcow (
- DMARC-запис: (для визначення політики обробки листів, що не пройшли SPF/DKIM)
- Ім'я/Хост:
_dmarc - Тип:
TXT - Значення:
v=DMARC1; p=quarantine; fo=1; ruf=mailto:[email protected]; rua=mailto:[email protected](замініть[email protected]на реальну адресу)
- Ім'я/Хост:
Переконайтеся, що всі DNS-записи проіндексовані та доступні (може зайняти до кількох годин). Перевірити їх можна за допомогою dig або онлайн-інструментів, наприклад, MXToolbox.
dig A mail.yourdomain.com # Проверяем A-запись
dig MX yourdomain.com # Проверяем MX-запись
dig TXT yourdomain.com # Проверяем SPF-запись
dig TXT _dmarc.yourdomain.com # Проверяем DMARC-запись
5. Запуск Mailcow
Тепер, коли Docker встановлено, конфігурацію згенеровано та DNS налаштовано, можна запустити Mailcow.
cd /opt/mailcow-dockerized # Убедитесь, что вы находитесь в директории Mailcow
docker compose pull # Загружаем все необходимые Docker-образы (актуальные на 2026)
docker compose up -d # Запускаем все контейнеры Mailcow в фоновом режиме
Процес завантаження образів та запуску контейнерів може зайняти деякий час залежно від швидкості вашого інтернет-з'єднання та продуктивності сервера. Після запуску ви можете перевірити статус контейнерів:
docker compose ps # Проверяем статус запущенных контейнеров Mailcow
Усі контейнери повинні бути в стані running.
6. Дозвіл портів Mailcow в UFW
Mailcow використовує багато портів. Дозволимо їх у файрволі UFW.
sudo ufw allow 80/tcp # HTTP (для Let's Encrypt ACME challenge)
sudo ufw allow 443/tcp # HTTPS (для веб-интерфейса и почтовых клиентов)
sudo ufw allow 25/tcp # SMTP (для отправки/получения почты)
sudo ufw allow 465/tcp # SMTPS (SMTP over SSL/TLS)
sudo ufw allow 587/tcp # Submission (SMTP для клиентов с StartTLS)
sudo ufw allow 110/tcp # POP3
sudo ufw allow 995/tcp # POP3S (POP3 over SSL/TLS)
sudo ufw allow 143/tcp # IMAP
sudo ufw allow 993/tcp # IMAPS (IMAP over SSL/TLS)
sudo ufw allow 4190/tcp # Sieve (фильтрация почты на сервере)
sudo ufw status # Проверяем статус файрвола
Тепер ваш поштовий сервер Mailcow запущено та він доступний за вказаним FQDN.