coaxial.mailcow
Rôle mailcow
Ce playbook va configurer un serveur de messagerie mailcow et des sauvegardes borg horaires (optionnelles, voir les Variables pour désactiver).
Les sauvegardes sont enregistrées dans /var/backup
et supprimées une fois traitées par borg.
Les 24 dernières sauvegardes horaires, 7 journalières, 4 hebdomadaires, 6 mensuelles et 1 annuelle sont conservées.
La configuration minimale pour l'hôte mailcow est un CPU de 1Ghz, 1 Go de RAM et 5 Go d'espace disque. Il est recommandé d'avoir 1,5 Go de RAM + swap si clamd est activé. Prévoyez de l'espace de stockage supplémentaire pour générer la sauvegarde horaire et pour le fichier de swap optionnel (1x la RAM).
Prérequis
- Hôte Ubuntu opérationnel (autres distributions non supportées pour l'instant)
- Docker
- Un dépôt de sauvegarde borg si les sauvegardes sont activées (cf. https://borgbackup.readthedocs.org/en/latest/quickstart.html)
- Clés SSH et phrase secrète correspondant au dépôt borg
Variables
nom | but | valeur par défaut | note |
---|---|---|---|
mailcow__hostname |
définir le MAILCOW_HOSTNAME dans mailcow.conf (cf. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
non défini | doit être défini |
mailcow__additional_san |
définir le ADDITIONAL_SAN dans mailcow.conf pour autoriser des domaines supplémentaires (cf. https://mailcow.github.io/mailcow-dockerized-docs/firststeps-ssl/#additional-domain-names) |
non défini, optionnel | valeurs séparées par des virgules : lala.example.com,yay.example.org (ne pas répéter le mailcow__hostname ) |
mailcow__skip_known_hosts |
utiliser un fichier known_hosts personnalisé pour les sauvegardes borgmatic |
false |
true ou false , permet au conteneur borgmatic de se connecter à un dépôt borg distant sans demander d'accepter la clé |
mailcow__dbpass |
définir le dbpass dans mailcow.conf (cf. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
non défini | doit être défini |
mailcow__dbroot |
définir le dbroot dans mailcow.conf (cf. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
non défini | doit être défini |
mailcow__http_port |
définir le HTTP_PORT dans mailcow.conf (cf. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
80 |
|
mailcow__http_bind |
définir le HTTP_BIND dans mailcow.conf (cf. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
0.0.0.0 |
|
mailcow__https_port |
définir le HTTPS_PORT dans mailcow.conf (cf. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
443 |
|
mailcow__https_bind |
définir le HTTPS_BIND dans mailcow.conf (cf. https://mailcow.github.io/mailcow-dockerized-docs/install/) |
0.0.0.0 |
|
mailcow__tz |
définir le TZ dans mailcow.conf |
UTC |
liste des valeurs possibles |
mailcow__skip_le |
définir le SKIP_LETS_ENCRYPT dans mailcow.conf |
n |
y ou n |
mailcow__skip_clamd |
définir le SKIP_CLAMD dans mailcow.conf |
n |
y ou n |
mailcow__ssh_key_name |
nom du fichier pour les clés ssh à utiliser avec borg (c'est-à-dire si les clés sont nommées mykey_rsa et mykey_rsa.pub , cette variable doit être définie sur mykey_rsa ) |
borg_ssh_key |
|
mailcow__borg_repo_host |
indiquer où le dépôt borg est hébergé (c'est-à-dire la partie avant : dans une URL de dépôt borg) |
non défini | doit être défini (c'est-à-dire [email protected] ) |
mailcow__borg_repo_name |
nom pour le dépôt borg, c'est-à-dire la partie après : et avant :: dans une URL de dépôt borg |
mailcow |
c'est-à-dire myrepo de [email protected]:myrepo::backupname |
mailcow__ntp_servers |
remplacer les serveurs NTP par défaut pour synchroniser l'heure sur l'hôte docker. | 0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org |
doit être une chaîne de noms d'hôtes/FQDN/IP séparés par des espaces |
mailcow__enable_swap |
utiliser un fichier swap (recommandé pour les hôtes avec moins de 3 Go de RAM) | true |
créera un fichier swap à /swapfile qui est de la même taille que la RAM sur l'hôte |
mailcow__enable_backups |
activer les sauvegardes horaires vers un dépôt borg | true |
mettre sur true ou false |
mailcow__git_version |
vérifier une version spécifique de mailcow | master |
tout commit, nom de branche ou tag du dépôt git mailcow |
Fichiers
Dans le répertoire files/
:
nom | but | note |
---|---|---|
borg_ssh_key{,.pub} |
clés ssh pour se connecter au dépôt borg distant (définir mailcow__ssh_key_name si vous n’utilisez pas le nom par défaut). |
utilisé uniquement si mailcow__enable_backups est défini sur true |
passphrase |
phrase secrète du dépôt borg distant | uniquement si mailcow__enable_backups |
known_hosts |
fichier known_hosts personnalisé pour le conteneur borgmatic afin d'éviter les erreurs de clé inconnue | cf. variable mailcow__skip_known_hosts ci-dessus. Pour obtenir une clé à jour pour votre serveur, exécutez ssh-keyscan 93.184.216.34 . Utilisé uniquement si mailcow__enable_backups est true |
Sauvegardes
Si mailcow__enable_backups
est défini, des sauvegardes seront générées toutes les heures à l'heure sur l'aide du script de sauvegarde mailcow.
Le conteneur docker-borgmatic enverra la sauvegarde au dépôt borg spécifié chaque heure à 30 minutes et nettoiera le répertoire de sauvegarde après. Pour les dépôts borg distants, rsync.net est assez bon.
Utilisation
Playbook minimal :
---
- 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 # initialiser python sur un Ubuntu/Debian nu
- coaxial.mailcow