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

PHP 8.2 FPM et PhpMyAdmin

On a installé jusqu’à maintenant apache2, postgresql, certbot (letsencrypt), mysql ou mariadb, mais nous n’avons pas d’outil visuel pour administrer mysql. Autant en desktop j’utilise des outils tels que DbVisualizer, autant pour mysql sur un serveur je préfère utiliser phpMyAdmin pour ne pas avoir de port MySQL ouvert à l’exterieur.

Pour ce faire, il faudrait tout d’abord avoir PHP qui tourne sur le serveur. L’une des raison qui nous ont poussé à installer ce nouveau serveur est d’ailleurs le fait que Debian 12 contient PHP en version 8.2 – nos autres serveurs étant des anciennes Ubuntu et Debian avec tout un tas de truc tournant dessus, on ne peut pas se permettre de migrer vers une version plus récente juste pour PHP et l’option d’installer les version fournies par le PPA d’ondrej ne me réjouie pas sur un serveur en Prod.… Read the full article

MySQL ou MariaDB

Après l’acquisition de MySQL par Sun Microsystems en 2008, puis le rachat de Sun par Oracle en 2010, Michael Monty Widenius le fondateur de MySQL ayant peur que Oracle décide d’enterrer le projet, a décidé de faire un fork compatible du projet nommé MariaDB (du nom de sa seconde fille Maria) et de chapeauter le projet par une société au nom de Monty Program AB.

A partir de la version 9 (codename: Stretch), debian a décider de supprimer MySQL de ses dépôts et de le remplacer totalement par MariaDB.

Personnellement, pour une utilisation standard les deux projets se valent et se substituent l’un à l’autre, et mise à part dans le cas de besoins spécifiques liés à un engin de stockage non disponible dans l’un ou l’autre, ou alors de services fournies dans les versions commerciales, il sera à vous de choisir le logiciel que vous voulez.… Read the full article