Réseau - Web - GNU/Linux

2016 06 juin

Déployer un serveur de mail avec Ansible - Debian 8.0 Jessie

Rédigé par Marc GUILLAUME | Aucun commentaire
Article précédent Mail façon FAI - Debian 8.0 Jessie Article suivant

Traduction 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 :

  1. Le site officiel indiqué par Christophe Haas (en anglais) :
    http://docs.ansible.com/ansible/intro_installation.html
  2. Un exemple d'utilisation sur linux.fr (en français) :
    http://linuxfr.org/users/skhaen/journaux/deploiement-et-automatisation-avec-ansible-partie-1
  3. Et un autre exemple d'utilisation en français sur linuxtricks.fr :
    https://www.linuxtricks.fr/wiki/ansible-automatiser-la-gestion-de-serveurs

Pour 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/

Écrire un commentaire

Quelle est la première lettre du mot rybiee ?

Fil RSS des commentaires de cet article

À propos

Yakati.com - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.043s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.com
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml