mailcow
Роль mailcow
Этот плейбук настроит почтовый сервер mailcow и ежечасные резервные копии с помощью borg (необязательно, см. Переменные для отключения).
Резервные копии сохраняются в /var/backup
и удаляются после обработки borg.
Хранятся последние 24 часовые, 7 ежедневных, 4 еженедельных, 6 ежемесячных и 1 годовая резервные копии.
Минимальная конфигурация для хоста mailcow — 1 ГГц ЦП, 1 ГБ ОЗУ, 5 ГБ дискового пространства. Рекомендуется 1,5 ГБ ОЗУ + swap, если включен clamd. Запланируйте дополнительное место для хранения для создания часовой резервной копии и для необязательного файла подкачки (в 1 раз больше ОЗУ).
Предварительные требования
- Запущенный хост с Ubuntu (другие дистрибутивы пока не поддерживаются)
- Docker
- Репозиторий резервных копий borg, если резервные копии включены (см. https://borgbackup.readthedocs.org/en/latest/quickstart.html)
- SSH-ключи и фраза-пароль, соответствующие репозиторию borg
Переменные
название | назначение | значение по умолчанию | заметка |
---|---|---|---|
mailcow__hostname |
установить MAILCOW_HOSTNAME в mailcow.conf (см. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
не установлено | должно быть установлено |
mailcow__additional_san |
установить ADDITIONAL_SAN в mailcow.conf для разрешения дополнительных доменов (см. https://mailcow.github.io/mailcow-dockerized-docs/firststeps-ssl/#additional-domain-names) |
не определено, необязательно | значения через запятую: lala.example.com,yay.example.org (не повторяйте mailcow__hostname ) |
mailcow__skip_known_hosts |
использовать ли пользовательский файл known_hosts для резервных копий borgmatic |
false |
true или false , позволяет контейнеру borgmatic подключаться к удаленному репозиторию borg без запроса на подтверждение ключа |
mailcow__dbpass |
установить dbpass в mailcow.conf (см. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
не установлено | должно быть установлено |
mailcow__dbroot |
установить dbroot в mailcow.conf (см. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
не установлено | должно быть установлено |
mailcow__http_port |
установить HTTP_PORT в mailcow.conf (см. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
80 |
|
mailcow__http_bind |
установить HTTP_BIND в mailcow.conf (см. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
0.0.0.0 |
|
mailcow__https_port |
установить HTTPS_PORT в mailcow.conf (см. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
443 |
|
mailcow__https_bind |
установить HTTPS_BIND в mailcow.conf (см. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
0.0.0.0 |
|
mailcow__tz |
установить TZ в mailcow.conf |
UTC |
список возможных значений |
mailcow__skip_le |
установить SKIP_LETS_ENCRYPT в mailcow.conf |
n |
y или n |
mailcow__skip_clamd |
установить SKIP_CLAMD в mailcow.conf |
n |
y или n |
mailcow__ssh_key_name |
имя файла для SSH-ключей, используемых с borg (например, если ключи называются mykey_rsa и mykey_rsa.pub , эта переменная должна быть установлена на mykey_rsa ) |
borg_ssh_key |
|
mailcow__borg_repo_host |
указать, где размещен репозиторий borg (т.е. часть до : в URL репозитория borg) |
не установлено | должно быть установлено (т.е. [email protected] ) |
mailcow__borg_repo_name |
имя репозитория borg, т.е. часть после : и перед :: в URL репозитория borg |
mailcow |
т.е. myrepo из [email protected]:myrepo::backupname |
mailcow__ntp_servers |
переопределить стандартные NTP-серверы для синхронизации времени на хосте Docker. | 0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org |
должно быть строкой с именами хостов/FQDN/IP, разделенными пробелами |
mailcow__enable_swap |
использовать файл подкачки (рекомендуется для хостов с менее чем 3 ГБ ОЗУ) | true |
создаст файл подкачки в /swapfile, равный количеству ОЗУ на хосте |
mailcow__enable_backups |
включить часовые резервные копии в репозитории borg | true |
установите на true или false |
mailcow__git_version |
проверить конкретную версию mailcow | master |
любой коммит, имя ветки или тег из репозитория git mailcow |
Файлы
В директории files/
:
название | назначение | заметка |
---|---|---|
borg_ssh_key{,.pub} |
SSH-ключи для подключения к удаленному репозиторию borg (установите mailcow__ssh_key_name , если не используете имя по умолчанию). |
используется только если mailcow__enable_backups установлено в true |
passphrase |
фраза-пароль для удаленного репозитория borg | только если mailcow__enable_backups |
known_hosts |
пользовательский файл known_hosts для контейнера borgmatic, чтобы избежать ошибок с неизвестным ключом | см. переменную mailcow__skip_known_hosts выше. Чтобы получить актуальный ключ для вашего сервера, выполните ssh-keyscan 93.184.216.34 . Используется только если mailcow__enable_backups установлено в true |
Резервные копии
Если mailcow__enable_backups
установлено, резервные копии будут создаваться каждый час в начале часа с помощью скрипта резервного копирования mailcow.
Контейнер docker-borgmatic будет отправлять резервную копию в указанный репозиторий borg каждый час в 30 минут и очищать каталог резервных копий после этого. Для удаленных репозиториев borg rsync.net подходит довольно хорошо.
Использование
Минимальный плейбук:
---
- hosts: all
become: true
gather_facts: false
vars:
mailcow__borg_repo_host: [email protected]
mailcow__hostname: test
mailcow__dbpass: test
mailcow__dbroot: test
rawpython__os_family: Debian
roles:
- coaxial.raw-python # установка python на чистый Ubuntu/Debian
- coaxial.mailcow
ansible-galaxy install coaxial/ansible-role-mailcow