Найти тему
Тюнинг Админа

Почтовый сервер для компании на Ubuntu 22.04 + mailcow

  • Информация о продукте
  • Задачи компании
  • Установка Ubuntu 22.04LTS
  • Настройка после установки
  • Регистрация записей в DNS
  • Проброс портов на маршрутизаторе
  • Установка mailcow
  • Настройка почтовика
  • Демонстрация административного интерфейса
  • Демонстрация пользовательского интерфейса
  • Миграция
  • Вывод

Информация о продукте

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

Mailcow – это как раз готовый почтовый сервер на основе Postfix, Dovecot и другого не менее важного программного обеспечения, удобство администрирования которого обеспечивается отличным, современным веб-интерфейсом. В качестве почтового web клиента используется SOGo.

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

Что есть в Mailcow:

  • добавление и администрирование почтовых доменов
  • создание и редактирование почтовых ящиков
  • управление ключами DKIM
  • управление через API
  • fail2ban
  • управление квотами почтовых ящиков и писем
  • управление очередями писем
  • Управление каратнином
  • Конфигурация и статистика Rspamd
  • Почтовый роутинг
  • Настройка системных оповещений
  • Логирование всех выполняемых сервисов
  • Настройка Алиасов

и многое другое

Задачи компании

Итак для компании со штатом сотрудников 40 человек, потребовался собственный почтовый сервер с низкими системными требованиями:

  • Наличие web интерфейса для управления администратору
  • Наличие удобного web интерфейса для пользователей
  • Работа на 2 ядрах и 2гб оперативной памяти
  • Наличие антивируса и антиспама

Установка Ubuntu 22.04LTS

Тестовую установку я проводил на vds хостинге firstvds.ru

Интерфейс VMnanager для управления виртуальной машиной:

-2

Я уже перезалил виртуальную машину тремя щелчками мышки.

-3
-4

Параметры тестовой виртуальной машины

-5

Всем советую эта машинка стоит всего 291руб/месяц

-6

Настройка после установки

Повышаем наши права в системе:

sudo -s

Обновите пакетный список репозитория:

apt update

Обновляем пакеты дистрибутива:

apt upgrade -y

Установим nano, mc, git, curl:

apt install -y nano mc git curl

Устанавливаем имя нашему серверу:

hostnamectl set-hostname mail.company.ru

Регистрация записей в DNS

Прежде всего напишите вашему интернет провайдеру письмо, в котором попросите прописать PTR запись о вашем почтовике у себя в DNS.

Проверить можно командой:

nslookup -type=PTR ip_адрес --- или ---

dig -x ip_адрес

Если у вас нет домена, нужно приобрести советую nethouse.ru - работаю с ним не один год, всё DNS записи очень быстро обновляются.

Итак создаём запись типа А и MX:

mail.company.ru ip_адрес

MX 10 mail.company.ru

Проброс портов на маршрутизаторе

На маршрутизаторе нужно создать правило DNAT трафик tcp порты:

SMTP_PORT=25

SMTPS_PORT=465

SUBMISSION_PORT=587

IMAP_PORT=143

IMAPS_PORT=993

POP_PORT=110

POPS_PORT=995

SIEVE_PORT=419

Эти порты для хождения почты

443 - для доступа к web интерфейсу. Получатель ip адрес почтового сервера.

Установка mailcow

Запускаем скрипт установки Docker с официального канала:

curl -sSL https://get.docker.com/ | CHANNEL=stable sh

Включаем службу Docker:

systemctl enable --now docker

Переходим в каталог:
cd /opt
Клонируем с github каталог с движком mailcow:

git clone https://github.com/mailcow/mailcow-dockerized -- размер 36МБ

Переходим в каталог:
cd mailcow-dockerized

Запускаем конфигурационный скрипт

./generate_config.sh

Отвечаем на вопросы конфигуратора:

  • Указываем FQDN: mail.company.ru
  • Выбираем Time Zona: нажимаем Enter, так как автоматом подцепится системная зона
  • Можно включить ClamAV
  • И выбираем ветвь обновлений: master

Докачиваем все связанные с Mailcow контейнеры:

docker compose pull

Запускаем все контейнеры командой:
docker compose up -d

Все готово!!!

Отправляемся по адресу: https://mail.company.ru --- Дефолтный логин: admin и Пароль: moohoo

-7
-8

Настройка почтовика

Настроим автоматический redirect запросов с http на https:

Создаем файл redirect для nginx:

nano /opt/mailcow-dockerized/data/conf/nginx/redirect.conf

server {

  root /web;

  listen 80 default_server;

  listen [::]:80 default_server;

  include /etc/nginx/conf.d/server_name.active;

  if ( $request_uri ~* "%0A|%0D" ) { return 403; }

  location ^~ /.well-known/acme-challenge/ {

    allow all;

    default_type "text/plain";

  }

  location / {

    return 301 https://$host$uri$is_args$args;

  }

}

Перезапускаем контейнер nginx:

docker compose restart nginx-mailcowdocker

Как видим Redirect работает.

В административной консоли первым делом измените пароль администратора, а лучше создайте другого как рекомендует система и добавьте администратора домена:

-9

Далее в разделе Конфигурация выбираем Настройка почты

-10

Добавляем домены и почтовые ящики

При добавлении домена обратите внимание на следующие пункты касаемые квот:

-11

из основных настроек наверное все.

Сертификат Let's Encrypt

В mailcow контейнер "acme-mailcow" попытается получить сертификат для каждого добавляемого домена. Для каждого удаляемого домена сертификат будет перемещен и будет запрошен новый сертификат.

Запомните mailcow должен быть доступен на порту 80 для работы acme-клиента. Вы также можете использовать любой внешний клиент ACME (например, certbot) для получения сертификатов, но вам нужно будет убедиться, что они скопированы в правильное место.

Для повторного перезапуска клиента acme-mailcow используйте команду:

docker compose restart acme-mailcowdocker compose logs --tail=200 -f acme-mailcow.

Чтобы принудительно продлить сертификат, необходимо:

Перейти в каталог:

cd /opt/mailcow-dockerized
создать файл с именем force_renew:

touch data/assets/ssl/force_renew
перезапустить контейнер acme-mailcow:

docker compose restart acme-mailcow

Демонстрация административного интерфейса

Настройка сервера

-12

Состояние сервера

-13

Настройка почты

-14

Есть возможность перезапускать контейнеры Mailcow и отслеживать занятость дискового пространства.

-15

Просмотр журналов логирования служб

-16

Демонстрация пользовательского интерфейса

Панель авторизации пользователей доступна по адресу: https://mail.company.ru/sogo

-17

Пользовательский Вэб интерфейс c календарем и адресной книгой в которую автоматически заносятся почтовые ящики домена.

-18

Миграция

Описываю процесс миграции со старого сервера на новый, при этом используем сценарий для создания полной резервной копии на исходном сервере и развертывании на новом, для этого используется скрипт:

/helper-scripts/backup_and_restore.shmailcow.conf

Выполняем действия по порядку:

1. Делаем бэкап исходного сервера.

2. Подготавливаем новый сервер по инструкции.

3. Останавливаем Docker:

systemctl stop docker.service
systemctl status docker.service

4. Останавливаем mailcow и Docker на старом сервере.

cd /opt/mailcow-dockerized
docker compose down
systemctl stop docker.service

5. Синхронизируем каталоги между серверами:

rsync -aHhP --numeric-ids --delete /opt/mailcow-dockerized/ root@mail2.tuning-admina.ru:/opt/mailcow-dockerized
rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ root@mail2.tuning-admina.ru:/var/lib/docker/volumes

6. На новом сервере запускаем Docker:

systemctl start docker.service

7. Подтягиваем Docker образы mailcow:

cd /opt/mailcow-dockerized
docker compose pull

8. Запускаем контейнеры mailcow:

docker compose up -d

9. При необходимости меняем настройки DNS.

Вывод

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

Нагрузка с точки зрения использования системных ресурсов в момент простоя почтовика:

-19

Кстати, если планируете отсылать письма по gmail'ам не лишним будет добавить свой домен на специальную страницу:

https://postmaster.google.com

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц