Déployer un serveur de mail avec Ansible - Debian 8.0 Jessie
Rédigé par Marc GUILLAUME | Aucun commentaireTraduction de la page https://workaround.org/ispmail/jessie/ansible
Cas de conscience
J'ai refusé de fournir des scripts d'installation automatique depuis que j'ai entrepris le premier guide ISPmail pour Debian. Pourquoi ? Parce que mon intention est de vous aider à comprendre la complexité de la configuration de votre propre serveur de mail, les protocoles, les briques logicielles, les avertissements, les fonctions. Il existe d'innombrables documents sur Internet à copier/coller que vous pouvez suivre si vous n'avez pas l'intention d'apprendre tout ça. Malheureusement même si ces guides vous aident à monter un serveur de mail (ce qui assez souvent ne fonctionne pas) vous ne comprendrez pas comment cela fonctionne ni ne serez à même de réparer une installtion défectueuse. C'est à dessein que je vous fait faire chaque petite étape manuellement et que j'en explique la signification. Non pas pour vous torturer, mais pour vous aider et vous éduquer.
Mais je dois être honnête avec vous. Comme j'ai affaire à des serveurs de mail pratiquement tous les jours, j'ai automatisé tout ce que je décris dans ce guide. J'ai donc envie de partager cela avec vous. Promettez moi simplement que vous ne prendrez pas la voie facile. N'utilisez pas les stratégies de déploiement Ansible sans avoir fait, auparavant, les « travaux dirigés » en lisant la totalité du guide. Je vous aiderai un peu avec Ansible et Vagrant, mais soyez indulgents avec moi si je refuse d'expliquer des points qui sont déjà détaillés dans ce guide.
Ansible
Il existe différents outils pour vous aider à installer et configurer un serveur, on les appelle des « configuration management systems » (configuration et administration de systèmes). Avec leur syntaxe spécifique vous décrivez ce à quoi vous voulez que votre système ressemble et à partir de là l'outil détermine ce qu'il y a à faire et le fait. Vous pouvez les utiliser pour installer automatiquement tout un système ou juste déployer une application. Deux de ces applications très célèbres sont Puppet et Chef. Cependant les deux sont assez pénibles à différents niveaux. Des alternatives plus modernes sont fournies par Ansible et Salt. Ayant utilisé avec beaucoup de succès Ansible au cours des deux dernières années c'est naturellement l'outil que j'ai choisi pour configurer un serveur de mail façon FAI.
Vous n'avez jamais essayé Ansible ? Vous devriez le faire. Penchez-vous sur leur page d'introduction et parcourez le premier chapitre. Après cela j'attends de vous que vous connaissiez les bases des « playbooks », des « roles » et des « variables ».
Assurez-vous d'avoir installé Ansible (au moins la version 1.9). Cette version figure dans les répertoires de Debian testing ou d'Ubuntu 15.10. Sinon vous pouvez l'installer comme un paquet Debian depuis une archive PPA d'Ubuntu, ou, si vous ne voulez pas risquer d'âbimer votre poste de travail, en utilisant la commande pip install ansible
. Une fois cela fait vous pouvez cloner mon dépôt Git qui contient tout ce dont vous avez besoin. Utilisez Git pour le cloner quelque part sur le disque de votre station de travail, il n'a rien à faire sur le serveur de mail.
git clone https://git.workaround.org/chaas/ansible-ispmail-jessie.git
Vagrant
Encore un outil très utile. Il est principalement utilisé par des développeurs mais il est aussi utile aux administrateurs. Vous êtes-vous déjà dit, « Ah ! J'aimerais bien une installation rapide de Debian pour essayer un truc » ? Vagrant est la réponse. Il possède un dépôt d'images d'installation toutes prêtes que vous pouvez télécharger et utiliser dans une machine virtuelle avec VirtualBox.
La raison pour laquelle je le mentionne est qu'il vous permet de tester toutes les tâches nécessaires à la création d'un serveur de mail à la façon des FAI sur une machine virtuelle. Tout le travail expliqué dans ce guide est contenu dans le scénario et les rôles Ansible dans un format adapté aux machines. Du coup avec Ansible et Vagrant vous pouvez simuler l'installation d'un serveur de mail dans une machine virtuelle sans avoir besoin de disposer d'un serveur réel. Vous pouvez ainsi faire tous les essais que vous voulez sans crainte de casser l'installation, ou plutôt en sachant que si vous cassez votre installation vous pouvez l'effacer et en reconstruire une facilement de façon automatisée.
Pour l'installation de Vagrant et VirtualBox :
apt-get install vagrant virtualbox
Mon dépôt Git contient un fichier Vagrant qui définit ce que Vagrant est sensé faire. Il est en fait très simple :
Vagrant.configure(2) do |config| config.vm.box = "debian/jessie64" config.vm.provision "ansible" do |ansible| ansible.playbook = "ispmail.yml" ansible.sudo = true end config.vm.provider "virtualbox" do |vb| config.vm.network "private_network", ip: "10.0.0.100" end end
Quand vous démarrez Vagrant il télécharge l'image debian/jessie64
depuis le dépôt d'images et la démarre. Vous pouvez d'ores et déjà vous connecter sur une installation Jessie fonctionnelle et l'administrer avec sudo
. Il télécharge alors le fichier « ispmail.yml » et l'exécute comme un scénario Ansible. Celui-ci installe le serveur de mail. Et il établit un réseau virtuel sur votre poste de travail et rend le serveur disponibles sur l'adresse 10.0.0.100.
Assurez-vous que vous êtes dans le répertoire qui contient le fichier Vagrant, le « Vagrantfile », et créez le serveur de mail :
vagrant up
Soyez patients tant que le serveur n'a pas tout téléchargé. Télécharger l'image Jessie prend déjà pas mal de temps suivant la qualité de votre connexion à Internet. Et la première tâche, ispmail-packages
, télécharge et installe tout un tas de logiciels, donc laissez du temps à la machine. À la fin vous devriez juste voir un message en vert et jaune. Tenez-moi au courant si vous voyez apparaître un message en rouge, car cela voudrait probablement dire qu'il y a un bogue dans le scénario.
Après cela vous pouvez vous connecter sur le serveur :
vagrant ssh
Et devenir root…
sudo -i
Bien entendu tout le reste est déjà installé. Faites pointer votre navigateur sur https://10.0.0.100/ et vous verrez l'interface du webmail RoundCube. Allez à https://10.0.0.100/phpmyadmin pour gérer la base de données via PHPmyAdmin. IMAP, POP3 et SMTP fonctionnent comme attendu. Et le jeu de données d'exemple décrit dans ce guide est lui aussi déjà là.
Pour de nouveau détruire le serveur virtuel, lancez la commande…
vagrant destroy
Personnaliser l'installation
J'utilise différentes variables pour vous permettre de personnaliser votre installation. Regardez group_var/all
. Voici leur signification :
- ispmail_populate_test_data: true
- Garnir la base de données avec un jeu de test (c-à-d john@example.org)
- ispmail_mysql_mailuser_password: ChangeMe
- Le mot de passe MySQL pour l'utilisateur « mailuser »
- ispmail_mysql_root_password: ChangeMeRoot
- Mot de passe root pour MySQL
- ispmail_mysql_roundcube_password: ChangeMeRound
- Mot de passe MySQL pour l'utilisateur « roundcube »
- ispmail_dovecot_auth_mechanisms: plain login
- Mécanisme d'authentification pour Dovecot. « plain » est le mécanisme courant, « login » est nécessaire pour les anciens client de mail de Microsoft.
- ispmail_postmaster_address: postmaster@example.org
- Adresse email du responsable du serveur
- ispmail_webmail_hostname: 10.0.0.100
- Nom d'hôte à utiliser pour le serveur web. Il doit normalement correspondre au Nom Plainement Qualifié (FQN).
- ispmail_certificate_country: DE
- Les variables commençant par ispmail_certificate… sont des chaînes de caractère transmise à OpenSSL lors de la génération d'un certificat auto-signé.
- ispmail_certificate_state: Hamburg
- ispmail_certificate_location: Hamburg
- ispmail_certificate_organisation: workaround.org
- ispmail_certificate_orgunit: IT-Crowd
- ispmail_certificate_domains:
- – example.org
Vous pouvez ajouter plusieurs noms d'hôte et de de domaines ici si ils doivent utiliser votre serveur. Les entrées supplémentaires seront ajoutées en tant que « alternate names » dans le certificat. Les noms doivent exactement correspondre aux noms que les utilisateurs utilisent pour accéder au serveur de courrier. - ispmail_certificate_email: postmaster@example.org
- ispmail_certificate_days_valid: 3650
- Durée de validité du certificat exprimée en jours.
Utiliser Ansible pour installer un serveur de production
Avez-vous suffisemment joué avec votre serveur de mail virtuel Vagrant ? Voudriez-vous installer un vrai serveur avec Ansible ? C'est facile. Après une installation basique de Debian Jessie, assurez-vous que vous pouvez accéder au serveur sans identification en utilisant une clé publique SSH pour l'identification.
Éditez le group_vars/all
. Choisissez des mots de passe appropriés et sûrs (pwgen est votre ami) et saisissez les adresses mail, les domaines et les informations pour le certificat qui correspondent à vos besoins.
Dites à Ansible où se trouve votre serveur de mail en éditant le fichier hosts et changez le nom d'hôte par défaut pour le FQDN de votre serveur. Et lancez la commande...
ansible-playbook ispmail.yml
Je vous invite à ajouter un commentaire si cette page vous a aidé. Cependant, il s'agit d'un sujet pour utilisateurs confirmés.
Note du traducteur : en dehors du site officiel d'Ansible que cite Christophe, voici quelques ressources en français :
- Le site officiel indiqué par Christophe Haas (en anglais) :
http://docs.ansible.com/ansible/intro_installation.html- Un exemple d'utilisation sur linux.fr (en français) :
http://linuxfr.org/users/skhaen/journaux/deploiement-et-automatisation-avec-ansible-partie-1- Et un autre exemple d'utilisation en français sur linuxtricks.fr :
https://www.linuxtricks.fr/wiki/ansible-automatiser-la-gestion-de-serveursPour Vagrant, une petite introduction en français qui permet de voir comment il s'utilise en pratique :
http://www.dynamic-mess.com/php/introduction-a-vagrant-exemple-magento-2/