ROCK5GmbH.mailserver
Rôle Ansible pour configurer un serveur mail
Ce rôle ansible installe un serveur mail, comme décrit dans cet article de blog par Thomas Leistner.
SSL
Les certificats et clés SSL sont attendus dans /etc/myssl/$FQDN.crt
et /etc/myssl/$FQDN.crt
sur l'hôte de mail
(où $FQDN est le nom de domaine complet de l'hôte). Cela peut être modifié en définissant la variable {{ ssl_directory }}
, {{ ssl_directory }}
ou {{ ssl_directory }}
à un autre chemin.
Si ces fichiers n'existent pas, un certificat auto-signé sera créé pour une utilisation initiale,
ce qui n'est pas recommandé pour une configuration de production. Si vous avez besoin d'un certificat signé par une CA de confiance, essayez
Let's Encrypt.
Variables
Les variables suivantes doivent être définies par vous afin d'utiliser ce rôle :
Variable | Explication |
---|---|
dbserver_root_pw | mot de passe pour l'utilisateur root de la base de données |
mailserver_sql_vmail_password | mot de passe pour l'utilisateur vmail dans la base de données |
milter_sql_spamass_password | mot de passe pour l'utilisateur spamassassin dans la base de données |
mailserver_hostname | nom d'hôte du serveur mail (ex : mail ) |
mailserver_domain | domaine du serveur mail (ex : example.com ) |
Beaucoup d'autres variables sont disponibles pour personnaliser l'installation du serveur mail, vous pouvez les trouver dans le fichier defaults/main.yml
de ce rôle et de ses dépendances.
Mots de passe
Au lieu de sauvegarder les mots de passe en texte clair dans vars/vars.yml
, envisagez d'utiliser le
vault ansible.
Pour un démarrage rapide avec le vault, vous pouvez exécuter ansible-vault create vars/vault.yml
et le remplir comme ceci :
mailserver_sql_vmail_password: foo
milter_sql_spamass_password: bar
dbserver_root_pw: baz
(Remplacez foo, bar et baz par des mots de passe sécurisés)
Maintenant, chaque fois que vous exécutez un playbook avec ce rôle, n'oubliez pas d'utiliser --ask-vault-pass
avec ansible-playbook
.
Déploiement
Avant le déploiement, vous devez définir les mots de passe pour les utilisateurs de la base de données (voir ci-dessus). De plus, ce playbook suppose une installation par défaut d'Ubuntu Server 16.04 et n'a pas été testé pour d'autres distributions.
Un exemple de playbook pourrait ressembler à ceci :
---
- hosts: all
become: yes
roles:
- ROCK5GmbH.mailserver
vars:
- vault.yml
Pour obtenir ce rôle et toutes ses dépendances, vous pouvez utiliser ansible galaxy :
ansible-galaxy install ROCK5GmbH.mailserver
Pour déployer sur un seul hôte, il suffit d'exécuter
ansible-playbook --ask-vault-pass -i $HOST, playbook.yml
où $HOST est l'adresse IP ou l'URL du serveur.
Si vous souhaitez déployer sur plusieurs hôtes, il est recommandé de travailler avec inventaires, afin de pouvoir définir des variables par hôte tout en conservant des variables communes.
Après le déploiement, le serveur mail sera presque prêt à fonctionner. Il ne reste plus qu'à ajouter des domaines et des utilisateurs à votre base de données SQL.
Commencez par utiliser doveadm pw -s SHA512-CRYPT
pour générer un hachage pour le mot de passe de l'utilisateur.
Pour ajouter l'utilisateur, connectez-vous à votre serveur puis connectez-vous à la base de données via
mysql -u root -p
et entrez le mot de passe root pour la base de données SQL. Ajoutez maintenant un domaine (ici : mysystems.tld) et un utilisateur (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);
Personnalisation supplémentaire
Cette configuration permet également des politiques TLS dans la base de données SQL, vous permettant de définir des politiques TLS spécifiques pour des domaines spécifiques. Vous pouvez ajouter une politique via
insert into tlspolicies (domain, policy, params) values ('gmx.de', 'secure', 'match=.gmx.net');
Les différentes politiques possibles sont listées et expliquées ici.
(Le match=.gmx.net
assure que postfix vérifiera le certificat pour gmx.net
, car ils n'en ont pas pour gmx.de
)
Vous voudrez peut-être également ajouter votre nouveau serveur mail à votre DNS (enregistrements A(AAA) et MX), ainsi qu'ajouter une entrée pour SPF et DKIM.
This role installs a mailserver with Postfix, Dovecot, Spamassassin, Amavis, ClamAV and a database backend.
ansible-galaxy install ROCK5GmbH.mailserver