Réseau - Web - GNU/Linux

2016 06 juin

Préparation de la base de données - 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/preparing-database

Il est maintenant temps de préparer la base MySQL qui contiendra les informations de contrôle de votre serveur de mail. Pendant l'installation vous aurez à saisir des requêtes SQL, le langage utilisé par les serveurs de bases de données relationnelles. Vous pouvez saisir ces requêtes sur l'interface en ligne de commande de mysql. Mais si vous avez moins d'expérience avec MySQL vous pourriez préférer utiliser une application web appelée « PHPMyAdmin » pour gérer vos bases de données.

Configuration de PHPMyAdmin

Installation du paquet PHPMyAdmin :

apt-get install phpmyadmin

Quand on vous demande quel serveur web vous désirez utiliser choisissez « apache2 » :

ispmail-jessie-install-packages-phpmyadmin-config-apache.png

PHPMyAdmin crée une petite base de données sur votre serveur pour stocker ses propres données. On vous demandera donc si vous désirez que le programme d'installation se charge de créer cette base de données MySQL :

ispmail-jessie-install-packages-phpmyadmin-dbconfig.png

Répondez « yes ». Pour autoriser le programme d'installation à créer la base de données on vous demande le mots de passe de l'utilisateur root de MySQL :

ispmail-jessie-install-packages-phpmyadmin-dbconfig-root.png

Le programme d'installation va également créer un autre utilisateur MySQL pour permettre à PHPMyAdmin d'accéder à sa propre base de données. Ce mot de passe n'a pas beaucoup d'importance pour vous. Appuyez juste sur Entrée pour obtenir un mot de passe créé de manière aléatoire :

ispmail-jessie-install-packages-phpmyadmin-dbconfig-adminuser.png

Le programme d'installation a préparé un fichier /etc/phpmyadmin/apache.conf qui doit être inclus dans le fichier de configuration HTTPS de votre hôte virtuel pour pouvoir y accéder avec votre navigateur. Éditez le fichier /etc/apache2/sites-available/default-ssl.conf et placez cette ligne quelque part entre les balises <VirtualHost> et </VirtualHost> mais avant toute autre ligne commençant par « Include » :

Include /etc/phpmyadmin/apache.conf

Relancez le processus apache :

service apache2 reload

Ouvrez votre navigateur et pointez sur https://YOURSERVER/phpmyadmin. Vous voyez s'afficher le formulaire d'identification de PHPMyAdmin :

ispmail-jessie-install-packages-phpmyadmin-loginform.png

Connectez vous en tant que « root » avec le mot de passe d'administrateur que vous avez utilisé jusque là pour les installations de paquets. Vous vous retrouverez alors sur l'écran principal :

Écran principal de PHPMyAdmin

Ceci vous aidera à gérer votre base de données. Vous pouvez soit entrer directement des ordres SQL soit vous débrouiller en cliquant sur les boutons de l'interface web.

La création du schéma de la base de données

…devrait être facile si vous l'effectuez avec PHPMyAdmin. Nous allons smplement fournir au serveur MySQL les commandes appropriées por créer la base de données et ses tables. Une table en terme de bases de données ressemble beaucoup à une feuille de calcul de tableur. Vous avez des lignes et des colonnes. Les colonnes sont également appellées champs. Les instructions SQL peuvent être entrées dans le shell « mysql » que vous obtenez quand vous lancez la commande mysql en tant que root (le root de MySQL et non le root d'administration du système) sur votre serveur. Ou alors vous pouvez utiliser PHPMyAdmin et cliquer sur l'entrée SQL en haut et saisir votre requête dans la zone prévue pour écrire les ordres SQL.

On commence par créer la base :

CREATE DATABASE mailserver;

Nous avons également besoin de créer un utilisateur appelé « mailuser » qui aura accès à la base de données. Créez un autre mot de passe aléatoire en utilisant pwgen -s 25 et lancez cette requête :

GRANT SELECT,INSERT,UPDATE,DELETE ON mailserver.* TO 'mailuser'@'127.0.0.1' IDENTIFIED BY 'ChangezMoi';

Remplacez bien sûr ChangezMoi par le mot de passe que vous venez de créer.

Pour ce que nous voulons faire nous avons besoin de trois tables :

virtual_domains

Cette table contient juste la liste des domaines que vous allez utiliser en tant que virtual_mailbox_domains dans Postfix.

Champ Utilité
id Un chiffre, unique, qui va identifier chaque ligne. Il est automatiquement ajouté par la base de données.
Nom Le nom du domaine pour lequel vous voulez recevoir des emails.

Cet ordre SQL permet de créer la table :

USE mailserver;
CREATE TABLE IF NOT EXISTS `virtual_domains` (
 `id` int(11) NOT NULL auto_increment,
 `name` varchar(50) NOT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

virtual_users

La table suivante contient les informations concernant les utilisateurs. Chaque compte mail occupe une ligne.

Champ Utilité
id Un chiffre, unique, qui va identifier chaque ligne. Il est automatiquement ajouté par la base de données.
domain_id Contient le nombre du champ id dans la table virtual_domains. L'ordre delete cascade sert à s'assurer que si un domaine est supprimé tous les utilisateurs de ce domaine seront également supprimés pour éviter des lignes orphelines. C'est ce qu'on appelle l'intégrité référentielle.
email Il s'agit de l'adresse mail correspondant au compte.
password Le hachage du mot de passe du compte. Il est fourni par l'algorithme de hachage. Par défaut il est chiffré avec {SHA256-CRYPT}. Mais il peut exister des utilisateurs des anciennes installation de ce guide qui utilisent {PLAIN-MD5}. Ajouter l'algorithme permet d'avoir différentes sortes de hachage suivant les lignes.

Voici la requête SQL de création de cette table :

USE mailserver;
CREATE TABLE IF NOT EXISTS `virtual_users` (
 `id` int(11) NOT NULL auto_increment,
 `domain_id` int(11) NOT NULL,
 `email` varchar(100) NOT NULL,
 `password` varchar(150) NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `email` (`email`),
 FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

virtual_aliases

La dernière table contient les alias de transfert d'une adresse mail à une autre.

Champ Utilité
id Un chiffre, unique, qui va identifier chaque ligne. Il est automatiquement ajouté par la base de données.
domain_id Contient le nombre du champ id dans la table virtual_domains. L'ordre delete cascade sert à s'assurer que si un domaine est supprimé toutes les redirections de ce domaine seront également supprimées pour éviter des lignes orphelines. C'est ce qu'on appelle l'intégrité référentielle.
source L'adresse mail à laquelle a été envoyé le mail. Dans le cas d'une adresse attrape-tout (catch-all, qui accepte n'importe quelle adresse dans ce domaine) la source est de la forme « @example.org ».
destination L'adresse mail à laquelle le mail doit être transféré.

Voici la requête SQL nécessaire pour créer cette table :

USE mailserver;
CREATE TABLE IF NOT EXISTS `virtual_aliases` (
 `id` int(11) NOT NULL auto_increment,
 `domain_id` int(11) NOT NULL,
 `source` varchar(100) NOT NULL,
 `destination` varchar(100) NOT NULL,
 PRIMARY KEY (`id`),
 FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Comme indiqué dans la section sur les types de domaines il peut y avoir plusieurs cibles pour une même adresse source. Il suffira de créer autant de ligne avec la même adresse source pour différentes adresses de transfert devant recevoir une copie du mail.

Jeu de données d'essai

Remplissons la base avec les utilisateurs du domaine example.org, un compte john@example.org et un transfert de jack@example.org vers john@example.org. Lancez ces requêtes sql :

REPLACE INTO `mailserver`.`virtual_domains` (
		`id` , 
		`name` 
) 
VALUES (
		'1', 
		'example.org' 
);
REPLACE INTO `mailserver`.`virtual_users` (
		`id` , 
		`domain_id` , 
		`password` , 
		`email` 
)
 VALUES (
		'1', 
		'1', 
		'{SHA256-CRYPT}$5$M/GWzmtjsLroRWIf$0qDt7IgXCoCQyvQZO7v.NC46rXzFVBSkZcilijlwgL7' , 
		'john@example.org'
);
REPLACE INTO `mailserver`.`virtual_aliases` (
		`id`,
		`domain_id`,
		`source`,
		`destination`
)
 VALUES (
		'1', 
		'1', 
		'jack@example.org', 
		'john@example.org'
);

Vous demandez-vous comment j'ai obtenu ce long mot de passe cryptique ?J'ai lancé la commande dovecot pw -s SHA256-CRYPT pour créer un hachage sécurisé du simple mot de passe « summersun ».

Avant d'utiliser en production votre serveur de mail à la fin du guide vous devriez supprimer ces données en utilisant cette requête SQL :

DELETE FROM `mailserver`.`virtual_domains` where name='example.org'

Écrire un commentaire

Quelle est la deuxième lettre du mot yeea ?

Fil RSS des commentaires de cet article

À propos

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

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

Mes coordonnées

Marc Guillaume
contact[at]yakati.info
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