coaxial.mailcow
Rol de mailcow
Este playbook configurará un servidor de correo mailcow
y copias de seguridad horarias de borg (opcional, consulta Variables para desactivar).
Las copias de seguridad se guardan en /var/backup
y se eliminan una vez gestionadas por borg.
Se mantienen las últimas 24 copias horarias, 7 diarias, 4 semanales, 6 mensuales y 1 anual.
La configuración mínima para el host de mailcow es CPU de 1Ghz, 1GB de RAM, 5GB de disco. Se recomienda 1.5GB de RAM + swap si clamd está habilitado. Planea espacio de almacenamiento adicional para generar la copia horaria y para el archivo de swap opcional (1x la RAM).
Requisitos
- Host de Ubuntu en funcionamiento (otras distribuciones no son compatibles por ahora)
- Docker
- Un repositorio de copias de seguridad de borg si las copias están habilitadas (ver https://borgbackup.readthedocs.org/en/latest/quickstart.html)
- Claves SSH y frase de paso que coincidan con el repositorio de borg
Variables
nombre | propósito | valor predeterminado | nota |
---|---|---|---|
mailcow__hostname |
establecer el MAILCOW_HOSTNAME en mailcow.conf (ver https://mailcow.github.io/mailcow-dockerized-docs/install/) |
no establecido | debe ser configurado |
mailcow__additional_san |
establecer el ADDITIONAL_SAN en mailcow.conf para permitir dominios adicionales (ver https://mailcow.github.io/mailcow-dockerized-docs/firststeps-ssl/#additional-domain-names) |
indefinido, opcional | valores separados por comas: lala.example.com,yay.example.org (no repetir mailcow__hostname ) |
mailcow__skip_known_hosts |
si usar un archivo known_hosts personalizado para las copias de seguridad de borgmatic |
false |
true o false , permite que el contenedor borgmatic se conecte a un repositorio borg remoto sin solicitar aceptación de clave |
mailcow__dbpass |
establecer el dbpass en mailcow.conf (ver https://mailcow.github.io/mailcow-dockerized-docs/install/) |
no establecido | debe ser configurado |
mailcow__dbroot |
establecer el dbroot en mailcow.conf (ver https://mailcow.github.io/mailcow-dockerized-docs/install/) |
no establecido | debe ser configurado |
mailcow__http_port |
establecer el HTTP_PORT en mailcow.conf (ver https://mailcow.github.io/mailcow-dockerized-docs/install/) |
80 |
|
mailcow__http_bind |
establecer el HTTP_BIND en mailcow.conf (ver https://mailcow.github.io/mailcow-dockerized-docs/install/) |
0.0.0.0 |
|
mailcow__https_port |
establecer el HTTPS_PORT en mailcow.conf (ver https://mailcow.github.io/mailcow-dockerized-docs/install/) |
443 |
|
mailcow__https_bind |
establecer el HTTPS_BIND en mailcow.conf (ver https://mailcow.github.io/mailcow-dockerized-docs/install/) |
0.0.0.0 |
|
mailcow__tz |
establecer el TZ en mailcow.conf |
UTC |
lista de valores posibles |
mailcow__skip_le |
establecer el SKIP_LETS_ENCRYPT en mailcow.conf |
n |
y o n |
mailcow__skip_clamd |
establecer el SKIP_CLAMD en mailcow.conf |
n |
y o n |
mailcow__ssh_key_name |
nombre del archivo para las claves ssh a usar con borg (es decir, si las claves se llaman mykey_rsa y mykey_rsa.pub , esta variable debe configurarse como mykey_rsa ) |
borg_ssh_key |
|
mailcow__borg_repo_host |
indicar dónde está alojado el repositorio borg (es decir, la parte antes de : en una URL de repositorio borg) |
no establecido | debe ser configurado (es decir, user@my.borghost.tld ) |
mailcow__borg_repo_name |
nombre para el repositorio borg, es decir, la parte después de : y antes de :: en una URL de repositorio borg |
mailcow |
es decir, myrepo de user@my.borghost.tld:myrepo::backupname |
mailcow__ntp_servers |
reemplazar los servidores ntp predeterminados para sincronizar la hora en el host de docker. | 0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org |
debe ser una cadena de nombres de hosts/FQDNs/IPs separados por espacios |
mailcow__enable_swap |
usar un archivo de swap (recomendado para hosts con menos de 3GB de RAM) | true |
creará un archivo de swap en /swapfile que tiene el mismo tamaño que la cantidad de RAM en el host |
mailcow__enable_backups |
habilitar copias de seguridad horarias en un repositorio borg | true |
establecer en true o false |
mailcow__git_version |
revisar una versión específica de mailcow | master |
cualquier commit, nombre de rama o etiqueta del repositorio git de mailcow |
Archivos
En el directorio files/
:
nombre | propósito | nota |
---|---|---|
borg_ssh_key{,.pub} |
claves ssh para conectarse al repositorio borg remoto (configura el mailcow__ssh_key_name si no usas el nombre predeterminado). |
solo se usa si mailcow__enable_backups está configurado como true |
passphrase |
frase de paso del repositorio borg remoto | solo si mailcow__enable_backups |
known_hosts |
archivo known_hosts personalizado para el contenedor borgmatic para evitar errores de clave desconocida | consulta la variable mailcow__skip_known_hosts arriba. Para obtener una clave actualizada para tu servidor, ejecuta ssh-keyscan 93.184.216.34 . Solo se usa si mailcow__enable_backups es true |
Copias de seguridad
Si mailcow__enable_backups
está configurado, las copias de seguridad se generarán cada hora en el inicio de la hora utilizando el script de copia de seguridad de mailcow.
El contenedor docker-borgmatic enviará la copia de seguridad al repositorio borg especificado cada hora a los 30 minutos y limpiará el directorio de copias de seguridad después. Para repositorios borg remotos, rsync.net es bastante bueno.
Uso
Playbook mínimo:
---
- hosts: all
become: true
gather_facts: false
vars:
mailcow__borg_repo_host: user@example.com
mailcow__hostname: test
mailcow__dbpass: test
mailcow__dbroot: test
rawpython__os_family: Debian
roles:
- coaxial.raw-python # inicializa python en Ubuntu/Debian
- coaxial.mailcow
Mailcow in Docker containers + hourly backups with borg
ansible-galaxy install coaxial.mailcow