Installer un serveur dédié Debian "Dedibox" #6

Notre dernière partie consacrée à l’installation d’un serveur Debian traitait de Postfix, le serveur de mails. Nous l’avions simplement installé et patché sans aller plus avant.

Aujourd’hui, nous allons avancer en créant la base de données Mysql sur laquelle nous allons nous appuyer pour gérer nos utilisateurs et domaines et la mettre en relation avec le serveur de mails Postfix.

3/ La base de données Mysql

Sauf à ce que vous soyez totalement inconscient, ne pensez pas utiliser votre compte root pour vous connecter à votre nouvelle base. Prenez donc le temps de trouver un nom pour votre utilisateur admin et un vrai mot de passe.

Pour l’exemple, et pour faire preuve d’une originalité débordante, nous allons nommer notre base de données ‘’mail’’, notre user ‘’mail_admin’’ et nous lui assignerons comme mot de passe ‘’Gz4Ri8Vt’’[1].

Commençons. D’abord, il nous faut créer la base. Pour ce faire, nous allons utiliser notre compte ‘’root’’. Tapez :

# mysqladmin –u root –p create mail

Puis utilisons le shell Mysql :

# Mysql –u root –p

A ce stade, nous avons simplement créé la base sans qu’aucun utilisateur ne lui soit dédié. Il faut donc déclarer mail_admin et lui assigner ses privilèges :

> GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'Gz4Ri8Vt '; > GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'Gz4Ri8Vt '; > FLUSH PRIVILEGES;

Maintenant que ‘’mail’’ peut être utilisée par mail_admin dans ses fonctions SELECT, INSERT, UPDATE et DELETE, utilisons la :

> USE mail ;

Copiez/Collez les tables suivantes, qui seront utilisées par Postfix et Courier, renommées éventuellement à votre sauce :

Table domains : Contient chaque domaine que votre serveur aura à gérer (exemple : fourre-tout.com)

CREATE TABLE domains ( domain varchar(50) NOT NULL, PRIMARY KEY (domain) ) TYPE=MyISAM;

Table forwardings : C’est la table des alias. Par exemple, la source farf@fourre-tout.com est un alias de la destination val@fourre-tout.com

CREATE TABLE forwardings ( source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) ) TYPE=MyISAM;

Table users : C’est ici que sont stockés les utilisateurs gérés par le serveur. Ils sont stockés en fonction de leur adresse mail et un quota de 10Go de stockage par boîte leur est assigné par défaut.

CREATE TABLE users ( email varchar(80) NOT NULL, password varchar(20) NOT NULL, quota INT(10) DEFAULT '10485760', PRIMARY KEY (email) ) TYPE=MyISAM;

Table transport : Cette table est totalement optionnelle. Vous ne l’utiliserez que dans le cas où vous souhaiteriez rediriger le courrier d’un utilisateur vers un autre serveur.

CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) ) TYPE=MyISAM;

Et quittez le shell Mysql :

> QUIT ;

4/ Postfix/Mysql, le couple infernal :

Récapitulons. Notre serveur est installé, la base est installée et son utilisateur désigné. Pour autant, nous sommes encore loin de pouvoir envoyer un mail (et encore plus d’en recevoir un) et nous avons (encore) un préalable à régler avant de passer à la configuration proprement dite.

Postfix tourne dans une cage chroot, ce qui induit qu’il n’a aucun accès à localhost. C’est plutôt emmerdant parce que Mysql est en écoute de localhost. En conséquence, il est impératif de faire communiquer notre serveur de mail et notre moteur de base de données, notamment en obligeant le socket de Mysql à taper sur 127.0.0.1 pour qu’ils s’entendent.

Aussi, nous allons porter une légère modification au fichier de configuration de Mysql. Tapez :

# nano /etc/mysql/my.conf

Et indiquez en bind-address

[…] bind-address = 127.0.0.1 […]

puis redémarrez Mysql :

# /etc/init.d/mysql restart

NB : Faites super hyper gaffe avec vos mises à jour apt ou aptitude. En cas de remplacement de version, si vous choisissez le fichier de l’éditeur, cette altération de my.cnf sera perdue. Vous ne pourrez plus alors utiliser votre Postfix/Courier.

Si vous avez suivi à la lettre ce qui précède, ça devrait fonctionner correctement. Le gros hic est d’être certain d’avoir mysql en écoute sur 127.0.0.1 (localhost.localdomain). Nous allons nous en assurer immédiatement grâce à netstat[2] :

# netstat –tap

Si vous avez cette ligne :

Active Internet connections (servers and established) Proto         Recv-Q         Send-Q        Local Address                Foreign Address        State       PID/Program name tcp            0                 0                localhost.localdo:mysql    *:*                        LISTEN     xxxx/mysqld

C’est bon ! Sinon, vous avez merdé un truc quelque part.

NB 1 : En PID (à côté de mysqld), vous aurez un nombre, et non pas xxxx.

NB 2 : Un moyen mnémotechnique pour utiliser netstat et avoir toutes les informations utiles est de taper ‘’netstat –lapute’’. Infaillible !

Cette fois, toutes les misères sont réglées. Il ne reste plus qu’à configurer vraiment le serveur mails, et nous verrons ça dans la prochaine partie.

Notes

[1] C’est la preuve d’originalité

[2] S’il n’est pas installé, faites le (apt-get install netstat)

Giskette

Geekette coquette avec un chat et un gros défaut... mes parents : je m'appelle Gisèle

1 réponse

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*