14 KiB
📧 Почтовый сервер Mailcow (Olimp)
Дата обновления: 16.04.2026
Сервер: Olimp (Proxmox VE)
Контейнер: LXC 212 (mail)
Домен: zailon.ru
Внешний IP: 188.73.191.202
Внутренний IP: 192.168.1.212
Путь к данным: /mnt/mailcow/mailcow-dockerized
📋 Содержание
- Описание и архитектура
- Требования к ресурсам
- Подготовка контейнера
- Установка Mailcow
- Запуск и первичная настройка
- Настройка DNS
- Настройка Nginx Proxy Manager
- Проброс портов на роутере
- Настройка почтовых клиентов
- Полезные команды
- Решение проблем
- Безопасность и обслуживание
1. Описание и архитектура
Mailcow — это готовый почтовый сервер на базе Docker, включающий:
| Компонент | Назначение |
|---|---|
| Postfix | Приём и отправка писем (SMTP) |
| Dovecot | Доступ к почте (IMAP/POP3) |
| SOGo | Веб-интерфейс (почта, календарь, контакты) |
| Rspamd | Антиспам-фильтр |
| ClamAV | Антивирусная проверка |
| Unbound | Локальный DNS-резолвер |
| MariaDB/Redis | Базы данных и кэш |
Архитектура развёртывания:
- Контейнер LXC 212 (Ubuntu) на хосте Proxmox VE
- Внутри LXC: Docker + Docker Compose
- Все сервисы Mailcow запускаются как Docker-контейнеры
- Данные хранятся в
/mnt/mailcow(монтируемый том с HDD)
2. Требования к ресурсам
Минимальные требования
| Ресурс | Значение |
|---|---|
| CPU | 2 ядра |
| RAM | 4 ГБ (рекомендуется 6 ГБ для стабильной работы ClamAV) |
| Disk | 40 ГБ (система + почта) |
| Swap | 2 ГБ |
Рекомендуемые настройки LXC
Выполняется на хосте Proxmox:
pct set 212 -memory 4096 -swap 2048 -cores 2
pct set 212 -features nesting=1,fuse=1
3. Подготовка контейнера
3.1 Проверка конфигурации
Выполняется на хосте Proxmox:
pct config 212
Обязательные параметры в выводе:
features: nesting=1,fuse=1unprivileged: 0(или отсутствие этой строки)lxc.cgroup2.devices.allow: a
3.2 Проверка Docker внутри контейнера
Подключись по SSH к 192.168.1.212 и проверь версии:
docker --version
docker compose version
3.3 Остановка системного Postfix
Системный Postfix в Ubuntu может занимать порт 25:
systemctl stop postfix
systemctl disable postfix
4. Установка Mailcow
4.1 Клонирование репозитория
cd /mnt/mailcow
git clone https://github.com/mailcow/mailcow-dockerized
4.2 Генерация конфигурации
cd /mnt/mailcow/mailcow-dockerized
./generate_config.sh
Ответы на вопросы скрипта:
Mail server hostname (FQDN):mail.zailon.ruTimezone:Asia/Yekaterinburg(или твоя)Branch:1(master — стабильная)IPv6:n(если не используется)
4.3 Правка docker-compose.yml для LXC
cd /mnt/mailcow/mailcow-dockerized
sed -i 's/ipv6nat:/#ipv6nat:/g' docker-compose.yml
sed -i 's/^ netfilter:/ #netfilter:/g' docker-compose.yml
5. Запуск и первичная настройка
5.1 Загрузка образов и запуск
cd /mnt/mailcow/mailcow-dockerized
docker compose pull
docker compose up -d
5.2 Проверка статуса контейнеров
cd /mnt/mailcow/mailcow-dockerized
docker compose ps
Ожидаемый результат: все контейнеры в статусе Up.
5.3 Первый вход в админку
- Открой в браузере:
https://192.168.1.212 - Пропусти предупреждение о сертификате
- Логин:
admin, Пароль:moohoo - Сразу смени пароль в настройках профиля
5.4 Добавление домена
- В админке: Configuration → Mail Setup → Domains
- Нажми Add domain
- Введи:
zailon.ru - Нажми Add domain and restart SOGo
5.5 Создание почтового ящика
- Mail Setup → Mailboxes → Add mailbox
- Заполни:
- Email:
olimp@zailon.ru - Name: Имя владельца
- Password: надёжный пароль
- Quota:
5120(5 ГБ)
- Email:
- Нажми Add mailbox
6. Настройка DNS
6.1 Получение записей из Mailcow
В админке: Configuration → Mail Setup → Domains → кнопка DNS
6.2 Пример записей для zailon.ru
$ORIGIN zailon.ru.
mail IN A 188.73.191.202
@ IN MX mail.zailon.ru. (pri=10)
@ IN TXT "v=spf1 mx a:mail.zailon.ru -all"
dkim._domainkey IN TXT "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkq..."
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:olimp@zailon.ru"
autodiscover IN CNAME mail.zailon.ru.
autoconfig IN CNAME mail.zailon.ru.
_autodiscover._tcp IN SRV 0 0 443 mail.zailon.ru.
Важно: Ключ DKIM берётся из админки Mailcow (кнопка DNS). Он уникальный для твоей установки.
6.3 Обратная запись PTR
Обратись к провайдеру с запросом установить PTR для 188.73.191.202 → mail.zailon.ru. Без этого письма могут попадать в спам.
7. Настройка Nginx Proxy Manager
7.1 Создание Proxy Host
В админке NPM (LXC 201):
| Параметр | Значение |
|---|---|
| Domain Names | mail.zailon.ru |
| Scheme | https |
| Forward Hostname/IP | 192.168.1.212 |
| Forward Port | 443 |
| SSL Certificate | Request a new SSL Certificate |
| Force SSL | ✅ ON |
| Block Common Exploits | ✅ ON |
7.2 Advanced: Custom Nginx Configuration
proxy_ssl_verify off;
proxy_ssl_server_name on;
Это необходимо, так как Mailcow использует самоподписанный сертификат внутри сети.
8. Проброс портов на роутере
| Имя | Внешний порт | Внутренний порт | Протокол | Назначение |
|---|---|---|---|---|
| mail_smtp | 25 | 25 | TCP | Приём почты от внешних серверов |
| mail_imap | 993 | 993 | TCP | Безопасный доступ к ящику (IMAP) |
| mail_smtp_ssl | 465 | 465 | TCP | Отправка почты (SMTP SSL) |
| mail_smtp_tls | 587 | 587 | TCP | Отправка почты (SMTP STARTTLS) |
IP устройства: 192.168.1.212
9. Настройка почтовых клиентов
Параметры подключения
| Параметр | Значение |
|---|---|
olimp@zailon.ru |
|
| Пароль | пароль от ящика |
Входящая почта (IMAP)
- Сервер:
mail.zailon.ru - Порт:
993 - Безопасность: SSL/TLS
Исходящая почта (SMTP)
- Сервер:
mail.zailon.ru - Порт:
465(SSL/TLS) или587(STARTTLS) - Аутентификация: Да, логин = email
Рекомендуемые клиенты
- Android: K-9 Mail (бесплатно, open source) или Aqua Mail (платно, красивый интерфейс)
- iOS: Родной клиент Почта или Spark
- Desktop: Thunderbird, Outlook
10. Полезные команды
Переход в директорию Mailcow
cd /mnt/mailcow/mailcow-dockerized
Проверка статуса сервисов
docker compose ps
Просмотр логов
# Все сервисы
docker compose logs -f
# Только postfix
docker compose logs -f postfix-mailcow
# Только последние 50 строк
docker compose logs --tail=50 postfix-mailcow
Перезапуск сервисов
# Один сервис
docker compose restart postfix-mailcow
# Все сервисы
docker compose restart
Полная перезагрузка
docker compose down
docker compose up -d
Обновление Mailcow
./update.sh
Проверка DNS
nslookup -type=MX zailon.ru
nslookup -type=TXT zailon.ru
Проверка открытых портов
ss -tlnp | grep -E ':25|:443|:993'
11. Решение проблем
Письма не приходят извне
- Проверь проброс портов на роутере (25, 993, 465)
- Проверь DNS-записи:
nslookup -type=MX zailon.ru - Проверь логи postfix:
cd /mnt/mailcow/mailcow-dockerized
docker compose logs --tail=100 postfix-mailcow | grep -E 'connect|NOQUEUE|reject'
Ошибка "Waiting for DNS..." в Postfix
Проблема с Docker-сетью в LXC. Решение:
cd /mnt/mailcow/mailcow-dockerized
docker compose down
docker network rm mailcowdockerized_mailcow-network
docker compose up -d
SOGo: "not allowed in state 1"
- Очисти куки браузера
- Или перезапусти SOGo:
cd /mnt/mailcow/mailcow-dockerized
docker compose restart sogo-mailcow
Письма попадают в спам
- Проверь наличие и корректность записей SPF, DKIM, DMARC
- Убедись, что настроена PTR-запись у провайдера
- Не отправляй массовые рассылки с нового домена
Не могу зайти по https://mail.zailon.ru
- Проверь, что в NPM настроен прокси на
192.168.1.212:443 - Убедись, что в Custom Config добавлено
proxy_ssl_verify off; - Проверь, что сертификат Let's Encrypt выпущен (статус в NPM)
ClamAV не обновляет базы (ошибка 403)
Известная проблема CDN ClamAV. Антивирус продолжит работать на локальных сигнатурах. Для обновления можно:
- Подождать 24 часа (кулдаун)
- Или отключить ClamAV в
mailcow.conf, если не критично:
SKIP_CLAMD=y
Затем: docker compose up -d
12. Безопасность и обслуживание
Регулярные задачи
| Задача | Периодичность | Команда/Действие |
|---|---|---|
| Проверка логов | Еженедельно | docker compose logs --tail=100 |
| Обновление Mailcow | По выходу версии | ./update.sh |
| Резервное копирование | Ежедневно | Настроить backup через Proxmox Backup Server |
| Проверка места на диске | Еженедельно | df -h /mnt/mailcow |
Резервное копирование
Рекомендуемый способ — через Proxmox Backup Server (PBS):
- В веб-интерфейсе Proxmox выбери контейнер 212
- Backup → Backup now
- Режим:
snapshot, хранилище:olimpbkp - Расписание: ежедневно в 03:00
Обновление системы
apt update && apt upgrade -y
Перезапуск контейнера (если обновилось ядро) выполняется на хосте Proxmox:
pct reboot 212
Мониторинг
Mailcow интегрируется с внешними системами мониторинга. Для Grafana (LXC 208):
- Добавь источник данных Prometheus:
http://192.168.1.212:9900/metrics - Импортируй дашборд Mailcow (ID: 13429)
Контакты для экстренных случаев
- Администратор: Zailon
- Сервер: Olimp (192.168.1.1)
- Контейнер почты: 212 (192.168.1.212)
- Документация:
mail.mdв репозитории конфигураций
Примечание: Все команды выполняются от имени root.