← Проекты

Mailcow — собственный почтовый сервер

Mailcow — собственный почтовый сервер

Открыть страницу

Что сделано

Подготовка системы

sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone Europe/Moscow
sudo hostnamectl set-hostname mail.example.ru
sudo apt install -y git curl ca-certificates ufw

Установка Docker

curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker

Каталог данных Docker я перенёс на отдельный диск (/data/docker), чтобы почта и контейнеры не занимали системный раздел.

Установка Mailcow

cd /data
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
sudo ./generate_config.sh

Скрипт спросит имя почтового сервера (например, mail.example.ru) и часовой пояс. После этого можно запускать:

sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

Через пару минут веб-интерфейс будет доступен по HTTPS. Пароль администратора по умолчанию нужно сразу сменить, а затем включить двухфакторную защиту.

Домен и почтовые ящики

В панели администратора: «E-Mail → Конфигурация → Домены → Добавить домен». Mailcow создаст ключ DKIM. Затем «Почтовые ящики → Добавить», для сотрудников удобно включать смену пароля при первом входе.

DNS-записи

mail      A      IP_СЕРВЕРА
@         MX     10 mail.example.ru.
@         TXT    "v=spf1 ip4:IP_СЕРВЕРА ~all"
dkim._domainkey  TXT  "v=DKIM1; k=rsa; p=..."   # ключ из панели Mailcow
_dmarc    TXT    "v=DMARC1; p=none; rua=mailto:postmaster@example.ru"
autoconfig       CNAME  mail.example.ru.
autodiscover     CNAME  mail.example.ru.

Обратная запись (PTR) для адреса сервера настраивается у хостера и должна указывать на mail.example.ru. Без неё письма на Gmail и другие крупные почтовые сервисы попадают в спам.

Резервное копирование

cd /data/mailcow-dockerized
sudo MAILCOW_BACKUP_LOCATION=/backup ./helper-scripts/backup_and_restore.sh backup all --delete-days 14

Команду я поставил в cron на ночное время, копии лежат на отдельном диске.

Обновление

cd /data/mailcow-dockerized
sudo ./update.sh

Перед обновлением делаю снимок виртуальной машины или свежую резервную копию.

Полезные команды

sudo docker compose ps
sudo docker compose logs --since 30m postfix-mailcow
sudo docker compose exec postfix-mailcow postqueue -p

Про доставляемость

У нового домена и нового адреса нет истории, поэтому первые письма на Gmail могут попадать в спам. Помогает: отмечать такие письма как «Не спам», отвечать на них, отправлять понемногу и подключить Google Postmaster Tools. Когда почта поработает пару недель, SPF можно ужесточить до -all, а DMARC — до quarantine.