ROCK5GmbH.mailserver
Rol de Ansible para configurar un servidor de correo
Este rol de ansible instala un servidor de correo como se describe en esta publicación del blog de Thomas Leistner.
SSL
Se espera que los certificados y claves SSL estén en /etc/myssl/$FQDN.crt
y /etc/myssl/$FQDN.key
en el host de correo
(donde $FQDN es el FQDN del host). Esto se puede cambiar ajustando la variable {{ ssl_directory }}
a una ruta diferente.
Si estos archivos no existen, se creará un certificado autofirmado para uso inicial,
los cuales no son recomendados para una configuración en producción. Si necesitas un certificado firmado por una CA de confianza, prueba
Let's Encrypt.
Variables
Las siguientes variables deben ser establecidas por ti para usar este rol:
Variable | Explicación |
---|---|
dbserver_root_pw | contraseña para el usuario root de la base de datos |
mailserver_sql_vmail_password | contraseña para el usuario vmail en la base de datos |
milter_sql_spamass_password | contraseña para el usuario spamassassin en la base de datos |
mailserver_hostname | nombre del host del servidor de correo (ej. mail ) |
mailserver_domain | dominio del servidor de correo (ej. example.com ) |
Hay muchas más variables disponibles para personalizar la instalación del servidor de correo, puedes encontrarlas en el defaults/main.yml
de este rol y sus dependencias.
Contraseñas
En lugar de guardar contraseñas en texto plano en vars/vars.yml
, considera usar el
vault de ansible.
Para un inicio rápido con el vault, puedes ejecutar ansible-vault create vars/vault.yml
y llenarlo de esta manera:
mailserver_sql_vmail_password: foo
milter_sql_spamass_password: bar
dbserver_root_pw: baz
(Reemplaza foo, bar y baz con contraseñas seguras)
Ahora, cada vez que ejecutes un playbook con este rol, recuerda usar --ask-vault-pass
con ansible-playbook
.
Despliegue
Antes del despliegue, debes establecer contraseñas para los usuarios de la base de datos (ver arriba). Además, este playbook asume una instalación predeterminada de Ubuntu Server 16.04 y no ha sido probado en ninguna otra distribución.
Un ejemplo de playbook podría verse así:
---
- hosts: all
become: yes
roles:
- ROCK5GmbH.mailserver
vars:
- vault.yml
Para obtener este rol y todas sus dependencias, puedes usar ansible galaxy:
ansible-galaxy install ROCK5GmbH.mailserver
Para desplegar en un solo host, es suficiente ejecutar
ansible-playbook --ask-vault-pass -i $HOST, playbook.yml
donde $HOST es la dirección IP o URL del servidor.
Si deseas desplegar en múltiples hosts, se recomienda trabajar con inventarios, para que puedas establecer variables por host mientras mantienes variables comunes.
Después del despliegue, el servidor de correo estará casi listo para funcionar. Solo queda agregar dominios y usuarios reales a tu base de datos SQL.
Primero usa doveadm pw -s SHA512-CRYPT
para generar un hash para la contraseña del usuario.
Para agregar el usuario, inicia sesión en tu servidor y luego conéctate a la base de datos a través de
mysql -u root -p
e ingresa la contraseña root para la base de datos SQL. Ahora agrega un dominio (aquí: mysystems.tld) y un usuario (user1):
use vmail;
insert into domains (domain) values ('mysystems.tld');
insert into accounts (username, domain, password, quota, enabled, sendonly) values ('user1', 'mysystems.tld', '{SHA512-CRYPT}$kgid87hdenss', 2048, true, false);
Personalización adicional
Esta configuración también permite políticas TLS en la base de datos SQL, lo que te permite establecer políticas TLS específicas para dominios específicos. Puedes agregar una política a través de
insert into tlspolicies (domain, policy, params) values ('gmx.de', 'secure', 'match=.gmx.net');
Las diferentes políticas posibles están enumeradas y explicadas aquí.
(El match=.gmx.net
asegura que postfix verifique el certificado para gmx.net
, ya que no tienen uno para gmx.de
)
También es posible que desees agregar tu nuevo servidor de correo a tu DNS (registros A(AAA) y MX), así como añadir una entrada para SPF y DKIM.
This role installs a mailserver with Postfix, Dovecot, Spamassassin, Amavis, ClamAV and a database backend.
ansible-galaxy install ROCK5GmbH.mailserver