Поднимаем свой меил сервер на mailcow | Wiki | PWODEV
, 04.04.2022 13:50

Поднимаем свой меил сервер на mailcow


Задача поднять свой mail server на базе mailcow. Сделаем это на Centos 7. Предположим что у нас установлена свежая система Centos 7. Подключаемся к нет по SSH и делаем следующие действия:

yum update -y && yum upgrade -y && yum makecache
yum install epel-release -y
yum install nano htop mc wget git -y

Тут мы обновили обновления, и приложения которые возможно нам понадобятся. Дальше скорее всего понадобится установить локализацию. Открываем или создаем файл:

nano /etc/environment

Внутри этого файла пишем следующее:

LANG=en_US.utf-8
LC_ALL=en_US.utf-8

Docker

На этом мы закончили подготовительные работы. Переходим к установке докера и докеркомпоза:

curl -sSL https://get.docker.com/ | CHANNEL=stable sh
systemctl enable --now docker
curl -L https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Selinux

теперь надо проверить настройку selinux

rpm -qa | grep container-selinux

должно хоть что-то вывести, значит работает selinux, дальше проверяем наличие selinux в докере командой:

docker info | grep selinux

скорее всего пусто будет, ничего не выведет. Если выводит пустоту то открываем файлик:

nano /etc/docker/daemon.json

и заполняем содержимим:

{
  "selinux-enabled": true
}

Сохраняем и перезагружаем докер:

systemctl restart --now docker

Дальше проверяем команду:

su
umask

должно вывести 0022, если все ок идем дальше.

Установка Mailcow

Теперь устанавливаем Mailcow:

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

Вводим название домена: mail.***yourdomain.com в соответствии с вашим доменом. в самом начале лучше добавить mail.*****, также заполняем все что просит установщик

Теперь нужно остановить стандартный почтовик postfix и уберем его сразу из автозагрузки

systemctl stop postfix
systemctl disable postfix

Дальше делаем так чтобы у нас по умолчанию всегда был HTTPS, для этого создаем файл:

nano 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;
  }
}

теперь можно запускать докер:

docker-compose pull
docker-compose up -d

после этого наш почтовый сервер должен начать работать. Заходим по адресу куда установили сервер: mail.***yourdomain.com

Вводим начальный логин admin и пароль moohoo

Меняем пароль админу. И делаем нужные нам настройки.

Переносим главную папку

Давайте перенесем рабочую папку мейл программы. Официальная документация тут

  1. Для начала остановим докер
  2. Создадим новую рабочую папку в /home/mail_data
  3. Скопируем старую папку в подпапку в ***_data_backup
  4. Залинкуем старую папку в новую в /home/mail_data
  5. Запустим докер.

Все это одним кодом:

cd /opt/mailcow-dockerized/
docker-compose down
mkdir /home/mail_data
mv /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data_backup
ln -s /home/mail_data /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
docker-compose up -d

Готово, теперь наш меил сервер будет сохранять свои данные в /home/mail_data

Это же желательно повторить для solr, а лучше перенести весь докер в папку /home/docker вот статья

Бекап

Документация для Backup и Restore. Мы создадим папку в которой будут храниться наши бекапы:

mkdir /home/mail_backup

И теперь закинем в эту папку бекап, если нужен и можем восстановить все с бекапа:

./helper-scripts/backup_and_restore.sh restore

Теперь когда у нас все восстановилось, лучше всего сделать автоматический бекап. Для этого добавим в крон наши бекапы:

crontab -e

дописываем сюда скрипт для автоматического бекапа каждый день в 0:00, и будем хранить бекапы только последних 10 дней

0 0 * * * cd /opt/mailcow-dockerized/; MAILCOW_BACKUP_LOCATION=/home/mail_backup /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all --delete-days 10

Готово. Можем пользоваться нашим новым мейл сервером


Добавить комментарий