Backgroound Image

Dovecot et Postfix avec comptes virtuels

On a installé un certain nombre de choses sur le serveur, mais il nous manque quand mème un service essentiel, à savoir le mail, que ce soit à l’envoie (SMTP) ou à la reception (POP/IMAP).

Pour ce faire, et mème si on a le choix entre plus fournisseurs de serveurs SMTP et POP/IMAP (sendmail, exim, postfix, courier, solid, dovecot, etc..) mon penchant va plutôt vers un couplage Postfix/Dovecot avec un backend MySQL pour le stockage des noms de domaines virtuel ainsi que données d’authentification utilisateur.

Nous allons tout d’abord créer une base de donnée nommée vmails avec un compte utilisateur ayant les privilèges spécifiques à cette base de donnée, puis nous allons y exécuter le script sql suivant :

DROP TRIGGER IF EXISTS `vmail_users_trg_sha512_new`;
DROP TRIGGER IF EXISTS `vmail_users_trg_sha512_upd`;
DROP TABLE IF EXISTS `vmail_users`;
DROP TABLE IF EXISTS `vmail_domains`;
DROP TABLE IF EXISTS `vmail_aliases`;
CREATE TABLE `vmail_aliases` (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `email_src` text COLLATE utf8mb4_bin NOT NULL,
  `email_dst` text COLLATE utf8mb4_bin NOT NULL,
  `dtcrea` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `dtupdt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;


CREATE TABLE `vmail_domains` (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `transport` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT 'virtual:',
  `dtcrea` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `dtupdt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `vmail_domains_uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

CREATE TABLE `vmail_users` (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `domain_id` int UNSIGNED NOT NULL,
  `email` varchar(512) COLLATE utf8mb4_bin NOT NULL,
  `passwd` varchar(200) COLLATE utf8mb4_bin NOT NULL,
  `cpasswd` text COLLATE utf8mb4_bin NOT NULL,
  `quota` int UNSIGNED NOT NULL DEFAULT '1048576000',
  `dtcrea` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `dtupdt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `vmail_users_uk_email` (`email`),
  CONSTRAINT `vmail_users_ibfk_1` FOREIGN KEY (`domain_id`) REFERENCES `vmail_domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
DELIMITER $$
CREATE TRIGGER `vmail_users_trg_sha512_new` BEFORE INSERT ON `vmail_users` FOR EACH ROW SET NEW.passwd
Read the full article

PostgreSQL et PGAdmin4

PostgreSQL est disponible en version 15.3 par défaut sur Debian 12, et si vous n’avez pas besoin de fonctionnalités disponibles à partir d’une version plus récente, il est conseillé d’utiliser la version présente dans les dépôts standards.

l’installation se fait donc de façon simple, en exécutant la commande:

apt install postgresql

on passe maintenant à la définition/changement de mot de passe du compte administrateur du serveur de base de donnée. Pour on exécutera le programme psql sous l’utilisateur système postgres :

sudo -u postgres psql

ce qui nous permettra d’exécuter les commandes SQL directement sur le serveur de base de données :

ALTER USER postgres PASSWORD 'myNewSecurePassword';
\q

PgAdmin4, l’outil open source d’administration et de développement de base de données Postgresql ne possède lui pas de binaire par défaut dans les dépôts Debian.… Read the full article