Docs/docs/services/lxc212-mail/mailcow.md

14 KiB
Raw Blame History

📧 Почтовый сервер 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


📋 Содержание

  1. Описание и архитектура
  2. Требования к ресурсам
  3. Подготовка контейнера
  4. Установка Mailcow
  5. Запуск и первичная настройка
  6. Настройка DNS
  7. Настройка Nginx Proxy Manager
  8. Проброс портов на роутере
  9. Настройка почтовых клиентов
  10. Полезные команды
  11. Решение проблем
  12. Безопасность и обслуживание

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=1
  • unprivileged: 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

Ответы на вопросы скрипта:

  1. Mail server hostname (FQDN): mail.zailon.ru
  2. Timezone: Asia/Yekaterinburg (или твоя)
  3. Branch: 1 (master — стабильная)
  4. 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 Первый вход в админку

  1. Открой в браузере: https://192.168.1.212
  2. Пропусти предупреждение о сертификате
  3. Логин: admin, Пароль: moohoo
  4. Сразу смени пароль в настройках профиля

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

  1. В админке: ConfigurationMail SetupDomains
  2. Нажми Add domain
  3. Введи: zailon.ru
  4. Нажми Add domain and restart SOGo

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

  1. Mail SetupMailboxesAdd mailbox
  2. Заполни:
    • Email: olimp@zailon.ru
    • Name: Имя владельца
    • Password: надёжный пароль
    • Quota: 5120 (5 ГБ)
  3. Нажми Add mailbox

6. Настройка DNS

6.1 Получение записей из Mailcow

В админке: ConfigurationMail SetupDomains → кнопка 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.202mail.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. Настройка почтовых клиентов

Параметры подключения

Параметр Значение
Email 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. Решение проблем

Письма не приходят извне

  1. Проверь проброс портов на роутере (25, 993, 465)
  2. Проверь DNS-записи: nslookup -type=MX zailon.ru
  3. Проверь логи 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"

  1. Очисти куки браузера
  2. Или перезапусти SOGo:
cd /mnt/mailcow/mailcow-dockerized
docker compose restart sogo-mailcow

Письма попадают в спам

  1. Проверь наличие и корректность записей SPF, DKIM, DMARC
  2. Убедись, что настроена PTR-запись у провайдера
  3. Не отправляй массовые рассылки с нового домена

Не могу зайти по https://mail.zailon.ru

  1. Проверь, что в NPM настроен прокси на 192.168.1.212:443
  2. Убедись, что в Custom Config добавлено proxy_ssl_verify off;
  3. Проверь, что сертификат Let's Encrypt выпущен (статус в NPM)

ClamAV не обновляет базы (ошибка 403)

Известная проблема CDN ClamAV. Антивирус продолжит работать на локальных сигнатурах. Для обновления можно:

  1. Подождать 24 часа (кулдаун)
  2. Или отключить 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):

  1. В веб-интерфейсе Proxmox выбери контейнер 212
  2. BackupBackup now
  3. Режим: snapshot, хранилище: olimpbkp
  4. Расписание: ежедневно в 03:00

Обновление системы

apt update && apt upgrade -y

Перезапуск контейнера (если обновилось ядро) выполняется на хосте Proxmox:

pct reboot 212

Мониторинг

Mailcow интегрируется с внешними системами мониторинга. Для Grafana (LXC 208):

  1. Добавь источник данных Prometheus: http://192.168.1.212:9900/metrics
  2. Импортируй дашборд Mailcow (ID: 13429)

Контакты для экстренных случаев

  • Администратор: Zailon
  • Сервер: Olimp (192.168.1.1)
  • Контейнер почты: 212 (192.168.1.212)
  • Документация: mail.md в репозитории конфигураций

Примечание: Все команды выполняются от имени root.