Utilisez votre gestionnaire de paquetage habituel pour installer postgreSQL ou recompilez le depuis les sources. Dans cette documentation postgre est installé sous /usr/local/pgsql/ la base sous /usr/local/pgsql/data. Adaptez à votre cas.
Pensez à faire attention à ne pas mélanger les différentes sortes d'utilisateurs.
su postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -o -i /usr/local/pgsql/bin/createdb vmailLe pg_ctl démarre la base, avec l'option réseau (-o -i). Il faut maintenant que postgreSQL demande un mot de passe pour les connections réseaux. Modifiez votre pg_hba.conf de cette façon:
# IPv4-style local connections: host all all 127.0.0.1 255.255.255.255 password
Pour se connecter, vous pouvez utiliser le programme psql, avec l'utilisateur postgres.
/usr/local/pgsql/bin/psql -U postgres vmail
La table domaine contiendra
CREATE TABLE domaine (nom_domaine VARCHAR(80), unix_user INT, chemin VARCHAR(80), max_boite INT, drapeau CHAR, PRIMARY KEY (nom_domaine)); CREATE TABLE boites (nom_domaine VARCHAR(80), email VARCHAR(120), pw VARCHAR(40), nom_boite VARCHAR(40), quota INT, drapeau CHAR, PRIMARY KEY (email), FOREIGN KEY (nom_domaine) REFERENCES domaine); CREATE TABLE alias (nom_domaine VARCHAR(80), mail_alias VARCHAR(120), email VARCHAR(120), FOREIGN KEY (nom_domaine) REFERENCES domaine, FOREIGN KEY (email) REFERENCES boites); CREATE USER lecteur password 'lire'; GRANT SELECT ON domaine, boites, alias to lecteur;
Nous allons créer pour l'exemple
INSERT INTO domaine VALUES ('boum.org', 5000, 'boum.org', 255, 'O');
INSERT INTO domaine VALUES ('groumpf.org', 5000, 'groumpf.org', 255, 'O');
INSERT INTO boites VALUES ('boum.org','boum@boum.org','boum','boum',0,'O');
INSERT INTO boites VALUES ('boum.org','kevin@boum.org','$1$eUx/YV93$MMaRJxzoifG8ekkHTLIRD/','kevin',4096,'O');
INSERT INTO boites VALUES ('groumpf.org','kevin@groumpf.org','$1$eUx/YV93$MMaRJxzoifG8ekkHTLIRD/','kevin',0,'O');
INSERT INTO alias VALUES ('boum.org','all@boum.org','boum@boum.org');
INSERT INTO alias VALUES ('boum.org','all@boum.org','kevin@boum.org');
INSERT INTO alias VALUES ('groumpf.org','all@groumpf.org','kevin@groumpf.org');
Ne soyez pas surpris des champs 'pw' de la table boites. L'explication se trouve dans le chapitre concernant dovecot. D'autre part, $1$eUx/YV93$MMaRJxzoifG8ekkHTLIRD/ est le crypt du mot "secret" (voir man crypt).
Votre base SQL doit donc être nourrie, et accepter les mots de passe. Nous allons nous connecter en tant qu'utilisateur SQL "lecteur" (mot de passe: "lire").
psql -U lecteur -h 127.0.0.1 mail Mot de passe : vmail=> select * from domaine; +-------------+-----------+-------------+-----------+---------+ | nom_domaine | unix_user | chemin | max_boite | drapeau | +-------------+-----------+-------------+-----------+---------+ | boum.org | 5000 | boum.org | 255 | O | | groumpf.org | 5000 | groumpf.org | 255 | O | +-------------+-----------+-------------+-----------+---------+ (2 lignes) vmail=> select * from boites; +-------------+-------------------+------------------------------------+-----------+-------+---------+ | nom_domaine | email | pw | nom_boite | quota | drapeau | +-------------+-------------------+------------------------------------+-----------+-------+---------+ | boum.org | boum@boum.org | boum | boum | 0 | O | | boum.org | kevin@boum.org | $1$eUx/YV93$MMaRJxzoifG8ekkHTLIRD/ | kevin | 0 | O | | groumpf.org | kevin@groumpf.org | $1$eUx/YV93$MMaRJxzoifG8ekkHTLIRD/ | kevin | 0 | O | +-------------+-------------------+------------------------------------+-----------+-------+---------+ (3 lignes) vmail=> select * from alias; +-------------+-----------------+-------------------+ | nom_domaine | mail_alias | email | +-------------+-----------------+-------------------+ | boum.org | all@boum.org | boum@boum.org | | boum.org | all@boum.org | kevin@boum.org | | groumpf.org | all@groumpf.org | kevin@groumpf.org | +-------------+-----------------+-------------------+ (3 lignes)
|
Chapitre précédent |
Retour à l'index |
Chapitre suivant |