Objectif
Dans ce chapitre nous allons installer Postfixadmin. Vous allez apprendre à quoi sert Postfixadmin, et comment on peut l’utiliser. Vous allez apprendre à l’installer. Finalement je vous donnerai un moyen de tester les ajouts que vous aurez fait via Postfixadmin. Et il me semble que ce chapitre est le bonne endroit pour introduire la mise en place d’un certificat, que nous utiliserons pour sécuriser les appels à Postfixadmin et à Phpmyadmin mais plus généralement tous ce qui vous fait réver. Et pour ce faire nous utiliserons Let’s encrypt.
Ce chapitre est aussi très dense voir plus que le précèdent mais on se rapproche un peu plus de notre objectif final. A savoir, un serveur mail fonctionnel. Je vous rappelle que le prochain chapitre sera consacré à l’ajout d’une couches lui permettant de faire de l’authentification ainsi qu’un module lui permettant de gérer une boite mail IMAP ou POP. Allez poursuivons cette aventure dès à présent.

Tous les cours ici
- Postfix: On étudie et on instal la bête
- Postfix: On étudie et on instal la bête
- Postfixadmin: ou comment simplifier votre administration
Sommaire
Postfixadmin
Postfixadmin: C'est quoi?
Postfixadmin est un logiciel de gestion de serveurs de messagerie basé sur le web. Il est spécifiquement conçu pour gérer les domaines de messagerie, les comptes utilisateurs, les alias de courrier électronique, et divers autres paramètres géré par le serveur de messagerie Postfix. Voici la liste de ces possibilité:
- Interface Web: L'un des atouts majeurs de Postfixadmin est son interface web conviviale. Cette interface permet aux administrateurs de gérer facilement les aspects variés de leur serveur de messagerie.
- Gestion de Domaines et d'Utilisateurs: Le logiciel offre la possibilité d'ajouter et de gérer des domaines de messagerie et des comptes utilisateurs. Cela inclut la gestion des quotas de messagerie, la configuration des redirections, et la mise en place de réponses automatiques.
- Compatibilité avec Postfix: Comme l'indique son nom, Postfixadmin a été développé pour être utilisé avec Postfix.
- Gestion des Alias: Une autre fonctionnalité clé de Postfixadmin est sa capacité à créer et gérer des alias de messagerie. Cela permet aux administrateurs de rediriger les emails d'une adresse à une autre, offrant ainsi une grande flexibilité dans la gestion du courrier électronique.
- Support de Bases de Données: Postfixadmin utilise des bases de données pour stocker des informations essentielles et supporte plusieurs systèmes de gestion de bases de données, dont MySQL, PostgreSQL, et SQLite.
- Nature Open Source et Configuration: Le logiciel est open source, ce qui signifie qu'il est librement disponible et peut être modifié et distribué selon les termes de sa licence. Postfixadmin est relativement simple à installer et à configurer.
En résumé, Postfixadmin est un outil utile pour les administrateurs de serveurs de messagerie qui cherchent une solution centralisée et facile à utiliser pour la gestion de multiples domaines ou utilisateurs.
Postfixadmin: Prérequis
Afin de pouvoir utiliser Postfixadmin nous allons devoir installer un paquet de chose parmi lesquels une base SQL un serveur Apach et PHP ainsi que d’autres choses que je vous expliquerai par la suite. Ne vous inquiétez pas je vous montre tout. L’objectif de cette formation n’est pas de vous expliquer ce que sont Apach et PHP si vous ne savais pas ce que c’est ça ne vous empêchera pas d’installer votre serveur. Dite vous simplement que ce sont des briques qui vont nous permettre de rendre agréable l’administration de notre serveur mail.
sudo apt-get install mysql-server postfix-mysql
La commande ci-dessus installe plusieurs choses que je vais vous décrire. La première chose installée c’est notre serveur SQL qui est ici MySQL. Puis on installe l’extension (bibliothèque) postfix-mysql qui permet à postfix de communiquer avec MySQL.
#installation de apache serveur http et de php en version 8.1
sudo apt-get install apache2 php8.1
la commande sudo apt-get install apache2 php8.1 va vous installer la version 8.1 de PHP (derniere version à ce jour) un serveur http qui va nous permettre de faire tourner phpmyadmin que l’on installe juste après avec la commande sudo apt-get install phpmyadmin et postfixadmin que l’on installera plus tard avec la commande sudo apt-get install postfixadmin.
#installation de phpmyadmin permettant d'administrer notre base mysql
sudo apt-get install phpmyadmin
Lors de l’installation de phpmyadmin vous tomberais sur cet écran qui vous propose les serveurs à reconfigurer pour que phpmyadmin puisse fonctionner avec. Etant donné que l’on vient d’installer un serveur apache on va selectionner le serveur apache en appuyant sur espace puis sur Entrée.

Phpmyadmin a besoin d’une base de données pour fonctionner et ici on vous demande si vous voulez faire la configuration de cette base tout seul ou pas. Si vous ne voulais pas vous charger de cette configuration je vous laisse appuiyer sur Entrée.



Postfixadmin: Installation
sudo apt-get install postfixadmin
à la question ci-dessous répondez yes en appuyant sur entrée. Il vous demande si une base postfixadmin existe déjà si oui alors vous pouvez mettre non mais il faudra faire vous même la configuration de cette base. En cochant oui vous laissez l’installateur postfixadmin créer une base qui va matcher avec ces besoins.

Comme pour phpmyadmin on va vous demander un mot de passe et de le configurer pensser à mettre un mot de passe solide.


Et voilà nous l’avons enfin installé, mais avant de s’en servir nous allons devoir le configurer ainsi qu’ajouter un utilisateur dans notre base MySQL qui servira à postfix pour récupérer les information qui seront ajouté via postfixadmin et finallament nous allons indiquer à postfix comment réccupérer ces informations via des requête SQL. MAIS avant tout cela nous allons devoir chiffrer les appels qui se feront sur nos sites postfixadmin et phpmyadmin car nous allons ajouter des mot de passes et créer des compte si nos communications ne sont pas chiffré une personne pourrais très bien vous voler ces informations. regardons donc comment sécuriser nos serveur grace à Let’s encrypt.
Mise en place de Let's Encrypt
Let's Encrypt c'est quoi ?
Let’s Encrypt est une autorité de certification gratuite, automatisée et ouverte, conçue pour faciliter l’adoption du chiffrement SSL/TLS par tous les sites internet. Lancé en 2016 par l’Internet Security Research Group (ISRG), il vise à rendre l’internet plus sûr pour tous en démocratisant l’accès aux certificats numériques.
L’un des principaux avantages de Let’s Encrypt est sa gratuité. Il offre sans frais les certificats nécessaires pour sécuriser les sites web avec HTTPS, éliminant ainsi une barrière financière importante pour de nombreux propriétaires de sites.
L’automatisation joue également un rôle cléf dans la mission de Let’s Encrypt. Avec des outils comme Certbot, les utilisateurs peuvent automatiser le processus d’obtention, de renouvellement et d’installation de leurs certificats. Cette facilité d’utilisation aide à assurer que les sites restent sécurisés avec peu d’effort de la part de leurs administrateurs.
Let’s Encrypt est également connu pour son engagement envers l’ouverture et la transparence. Il publie tous les certificats qu’il émet ou révoque, favorisant une plus grande confiance dans les certificats SSL/TLS et contribuant à la sécurité globale de l’internet.
Enfin, en rendant le chiffrement accessible à tous, Let’s Encrypt joue un rôle crucial dans la sécurisation d’Internet. Le passage au HTTPS, rendu plus facile par Let’s Encrypt, protège les utilisateurs contre de nombreuses formes de surveillance et d’attaque, assurant une expérience en ligne plus sûre pour tous.

sudo apt install certbot python3-certbot-apache
Cette commande va vous installer certbot qui est le paquet qui va vous permettre d’installer vos certificats. Et le paquet python3-certbot-apache est un plugin pour Certbot conçu pour automatiser l’obtention et le renouvellement des certificats SSL/TLS pour Apache, simplifiant la configuration HTTPS sur ce serveur. Pour ainsi dire vous n’aurez rizn à faire. Elle n’est pas belle la vie!!!!
Rapide explication sur le processus d’obtention d’un certificat avec Let’s encrypt. Pour obtenir un certificat, le propriétaire du domaine utilise un logiciel comme Certbot pour envoyer une demande à Let’s Encrypt. Certbot (se trouvant sur votre machine) valide la propriété du domaine en répondant à un défi posé par Let’s Encrypt, souvent en créant un fichier spécial sur le serveur web (qui vous appartient) ou en configurant un enregistrement DNS. Une fois la vérification réussie, Let’s Encrypt émet un certificat pour le domaine. Ce certificat est ensuite installé sur le serveur web du demandeur (ici apach), permettant une connexion sécurisée via HTTPS. Il faut savoir que les certificats de Let’s Encrypt sont valables 90 jours et peuvent être renouvelés automatiquement. Avec la création d’une entrée dans crontab. Crontab est un planificateur de tâches sous Unix/Linux qui permet aux utilisateurs de programmer des commandes ou des scripts pour s’exécuter automatiquement à des temps ou des intervalles spécifiés. Voici comment faire simplement ci-dessous:
sudo crontab -e
#ajouter cette entrée dans le fichier qui s'ouvre:
0 0,12 * * * certbot renew --quiet --apache
sudo certbot --apache -d votrenomdedomaine.fr

Certificate is saved at: /etc/letsencrypt/live/lasdunumeric.fr/fullchain.pem
Key is saved at: /etc/letsencrypt/live/lasdunumeric.fr/privkey.pem
L’encadré vert vous indique ou trouver vos clef privée/clef public qui nous serons utiles dans nos configuration futures notament pour sécuriser postfix.
Et voilà vos site postfixadmin et phpmyadmin son sécurisé !!! Elle n’est pas belle la vie. Nous pouvons donc passer à la configuration de nos serveurs sans craindre d’être observé.
Configurations
Voyons comment configurer Postfixadmin, nous ne verons pas comment ajouter d’email, de domaine ni d’alias dans ce cours écris mais vous pourrez le voir dans la vidéo. Juste après la configuration de postfixadmin nous ajouterons un utilisateur avec seulement un droit de lecture sur la base SQL de postfixadmin et, nous allons voir, comment mettre à jour la configuration Postfix pour utiliser cet utilisateur pour qu’il puisse intéragir avec les ajouts de Postfixadmin, et nous verons comment tester si l’interaction se passe bien.
Postfixadmin: Configurations
La configuration de postfixadmin se fait sur un site web! Et oui la classe quand même!! première étape ajouter un setup pasword qui vous permettra de créer, par la suite, un utilisateur administrateur qui va vous permettre d’ajouter des adresses mail, des noms de domaine, des alias et tous ce dont postfix à besoin. Pour faire ça rendez vous sur https://votreNomDeDomaine.fr/postfixadmin/setup.php remplacer votreNomDeDomaine.fr par votre nom de domaine. le mot de passe doit contenir au moins 2 chiffres et faire plus de 8 charactères. Garder ce mot de passe préciseuement!!! ça vous fait déjà 2 mots de passe à garder précieusement!

Une fois le mot de passe validé il faut réccupérer la hash de ce mot de passe voire capture ci-dessous. De même garder ce hash préciseuement!!! Et surtout suivez la consigne qui vous indique de le mettre dans le fichier de configuration /etc/postfixadmin/config.inc.php chercher sur la premiere page lorsque vous l’ouvrez avec nano vous devriez trouver une ligne similaire commenté.
sudo nano /etc/postfixadmin/config.inc.php
$CONF['setup_password'] = 'ici votre remplacer par votre hash';

Après avoir fait l’ajout dans le fichier faite un refrêche de cette page. Vous allez voir apparaitre 4 nouveaux champs vous permettant de créer votre compte admin. Il vous suffit de rentrer votre setup password (pas le hash) et une adresse mail qui sera l’email du compte admin de postfixadmin avec votre nom de domaine. Par exemple: postmaster@votrenomededomaine.fr. Et un mot de passe différent de votre setup password que vous répèterez deux fois.


Voilà vous pouvez enfin voir la console qui va vous permettre d’ajouter votre nom de domaine et des adresse email. Pour en voir plus sur l’utilisation de cette interphace rendez-vous sur la vidéo!!!!!

MySQL: Configurations
Rendez-vous sur https://votrenomdedomaine.fr/phpmyadmin/ penser à changer votrenomdedomaine. Nous allons devoir nous connecter avec l’utilisateur root or si vous essayez vous constaterez que ce n’est pas possible!! Or lorsque l’on a installé phpmyadmin on nous a demandé d’ajouter un mot de passe qui sert belle et bien a connecter l’utilisateur root mais pas via phpmyadmin. Mais malheuresement ce n’est pas possible de cette façon nous allons donc le supprimer et le recréer avec les bon droit suivez ce qui suit pour y parvenir:
#On se connect à la base msql avec l'utilisateur root
sudo mysql -p -u root
On va vous demander le mot de passe que vous avez rentré lors de l’installation de phpmyadmin une fois validé entrez les commandes nom commentés ci-dessous noubliez pade changer le mot de passe!!! ICI c’est azerty et ne le perdez pas!!!:
#on supprime l'utilisateur root
DROP USER root@localhost;
#on crée l'utilisateur root avec le mot de passe azerty à changer
CREATE USER root@localhost IDENTIFIED BY 'azerty';
#on lui donne des droits sur les bases de notre serveur mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit
Vous pouvez donc maintenant vous connecter avec l’utilisateur root et le mot de passe que vous aurez choisie sur votre phpmyadmin. Puis je vous laisse vous rendre dans l’onglet « Compte utilisateurs » puis je vous laisse cliquer sur « Ajouter un compte d’utilisateur« :

comme indiqué sur la capture ci-dessous.
Nom d’utilisateur: mailuser
Nom d’hôte: localhost (vous pouvez choisir local ça met directement localhost. En effet on ne souhaite pas qu’une personne exterieur à la machine puisse lire notre base)
Mot de passe ce que vous voulez. ici azerty changez le et ne le perdez pas!!!
Finalement coché SEULEMENT sur SELECT puis sur exécuté.
voilà vous venez de créer l’utilisateur qui servira à postfix pour lire les entrée de cette base. Comme les addresse mail les nom de domaine et autres.

Terminons ce cours avec la configuration de postfix. Cette configuration va consister à ajouter 3 requetes SQL dans trois fichier différent et les donner à postfix pour qu’il utilise ces requetes pour réccupérer les alias les nom de domaines et les email.
Postfix: Configurations
Nous venons d’installer avec succes Postfixadmin et nous nous rapprochant un peux plus de notre objectif d’avoir un serveur mail opérationnel. Mais pour que postfix utilise les ajouts fait via postfixadmin nous allons devoir indiquer à postfix où trouver effectivement toutes ces adresses mails, ces noms de domaines et autres. Je rappel que postfixadmin ajoute l’ensemble de ces informations dans une base MySQL et nous devons donc indiquer à postfix comment récupérer chacune de ces informations dans cette base. Alors regardons comment faire:
La commande ci-dessous vous permet de créer le fichier mysql-virtual-mailbox-domaine.cf à l’emplacement /etc/postfix/ et d’y ajouter les lignes se trouvant entre EOF et EOF. il va vous falloir changer le mot de passe par le votre celui entré pour l’utilisateur mailuser. Ces lignes vont permettre à postfix de se connecter à MySQL et d’y récupérer vos domaine via une requête SQL.
#création et édition du fichier mysql-virtual-mailbox-domains.cf
#pensez à changer le mot de passe!!!
sudo bash -c 'cat > /etc/postfix/mysql-virtual-mailbox-domains.cf' << EOF
user = mailuser
password = azerty
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT 1 FROM domain WHERE domain='%s'
EOF
la commande ci-dessous avec le paterne suivant:
postconf -e param_postfix=valeur
est une commande permetant d’ajouter ou de modifier une ligne du fichier de configuration /etc/postfix/main.cf (déjà vue au cours précèdant) où param_postfix est un paramettre utile à la configuration postfix et valeur comme son nom l’indique ça valeur.
#permets d'ajouter une nouvelle ligne dans le fichier de configuration /etc/postfix/main.cf
sudo postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
#permets de vérifier le bon fonctionnement de cet ajout
#ne fonctionne que si postfixadmin a été ajouté et que l'on y a ajouté un domaine
#dans ce cas la changez mondomaine.fr par le domaine que vous avez ajouté
sudo postmap -q mondomaine.fr mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Ici avec la commande:
sudo postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
On indique à postfix où trouver les domaines de nos adresses email. pour rappel le domaine c’est la partie qui se trouve après l’@ dans une adresse email. Dans la valeur on indique le chemin du script sql créé juste au-dessus.
La deuxieme commande permet de tester la réussite de l’ajout de cette configuration. Si le domaine example.org est présent dans vos domaines (après ajout via postfixadmin), la valeur « 1 » sera affichée, sinon rien. Remplacer donc example.org par le domaine à tester. Donc pour que ça fonctionne il faut ajouter example.org dans vos domaine via postfixadmin (voir vidéo).
Comme précèdemant la commande ci-dessous vous permet de créer le fichier mysql-virtual-mailbox-maps.cf à l’emplacement /etc/postfix/ et d’y ajouter les lignes se trouvant entre EOF et EOF. il va vous falloir changer le mot de passe par le votre celui entré pour l’utilisateur mailuser. Ces lignes vont permettre à postfix de se connecter à mysql et d’y réccupérer vos adresses mails via une requete sql.
#création et édition du fichier mysql-virtual-mailbox-maps.cf
#pensez à changer le mot de passe!!!
sudo bash -c 'cat > /etc/postfix/mysql-virtual-mailbox-maps.cf' << EOF
user = mailuser
password = azerty
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT 1 FROM mailbox WHERE domain='%s'
EOF
Avec la commande:
sudo postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
on indique où trouver les adresses mail a postfix.
La deuxieme commande permet de tester la réussite de l’ajout de cette configuration. Comme précèdemant si l’adresse test@mondomaine.fr existe le résultat est 1 (elle existe si vous l’avez ajoutez dans postfixadmin), rien sinon. Mettez donc une adresse que vous souhaitez tester. Donc pour que ça fonctionne comme c’est écrit dans cette commande il faut ajouter l’adresse email test@mondomaine.fr dans vos adresse mail via postfixadmin (voir vidéo)
#permets d'ajouter une nouvelle ligne dans le fichier de configuration /etc/postfix/main.cf
sudo postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
#permets de vérifier le bon fonctionnement de cet ajout
#ne fonctionne que si postfixadmin a été ajouté et que l'on y a ajouté une adresse mail
#dans ce cas la changez l'email test@mondomaine.fr par celui que vous avez ajouté
postmap -q test@mondomaine.fr mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
Finalement comme précèdemant la commande ci-dessous vous permet de créer le fichier mysql-virtual-alias-maps.cf à l’emplacement /etc/postfix/ et d’y ajouter les lignes se trouvant entre EOF et EOF. il va vous falloir changer le mot de passe par le votre celui entré pour l’utilisateur mailuser. Ces lignes vont permettre à postfix de se connecter à mysql et d’y réccupérer vos adresses alias via une requete sql.
Les alias permettent de créer une adresse mail qui en regroupe plusieurs. Exemple pour l’asresse team1@votredomaine.com où team1 est un aliase pour a@votredomaine.com et b@votredomaine.com. alors tout message envoyé sur team1@votredomaine.com seront reçu par a@votredomaine.com et b@votredomaine.com.
#création et édition du fichier mysql-virtual-alias-maps.cf
#pensez à changer le mot de passe!!!
sudo bash -c 'cat > /etc/postfix/mysql-virtual-alias-maps.cf' << EOF
user = mailuser
password = azerty
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s'
EOF
Ici on indique où trouver les adresses mail a postfix avec la premiere commande.
La deuxième commande permet de tester la réussite de l’ajout de cette configuration. Ici le résultat n’est plus le même. c’est l’utilisateur destination qui doit s’afficher, ce qui permet à postfix de faire la correspondance. Cette commande ne peut fonctionner que si vous avez ajouté l’alias abuse@mondomaine.fr dans votre base de données via postfixadmin.
#permets d'ajouter une nouvelle ligne dans le fichier de configuration /etc/postfix/main.cf
sudo postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf
#permets de vérifier le bon fonctionnement de cet ajout
#ne fonctionne que si postfixadmin a été ajouté et que l'on y a ajouté un alias
#dans ce cas la changez l'email abuse@mondomaine.fr par celui que vous avez ajouté
sudo postmap -q abuse@mondomaine.fr mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Etape très importante : modifier les droits de ces trois fichiers. En effet, ils contiennent en clair le mot de passe de l’utilisateur mailuser. Lancez les deux commandes qui vont restraindre les droit sur ces fichiers.
#permets de sécuriser les fichiers fraichement créés car il y a des mots de passe en clair dedans
sudo chgrp postfix /etc/postfix/mysql-*.cf
sudo chmod u=rw,g=r,o= /etc/postfix/mysql-*.cf
sudo service postfix restart
Bon ce cour touche à sa fin, pour réccapituler rappidement l’objectif de ce cours était d’installer postfixadmin or pour y arriver il nous fallé installer des paquet intermédiaire comme php, MySQL, phpmyadmin, apache. Nous nous sommes rendu compte que pour configurer serainement phpmyadmin et postfixadmin nous devions chiffrer nos echange c’est pour cette raison que nous avons installé les paquets utile à Let’s encrypt et installer un certificat ainsi que son renouvellement. Tout ça pour finalement avoir accès à l’interface d’administration postfixamin qui nous permet maintenant d’ajouter des adresses mail des noms de domaines et des alias.
Pour finir l’installation de notre serveur nous devons mettre en place un serveur qui soit capable de gere les protocole IMAP et POP3 permetant la gestion d’une boite mail et permettant donc un interfassage avec une client de messagerie comme Thunderbird. Car pour le moment vous ne pouvez pas faire beaucoup plus que ce que nous avons fait le cour précèdent à savoir envoyer un mail avec telnet. La différence ici c’est que l’on peut utiliser une adresse mail qui n’est pas issu d’un utilisateur linux comme root ou ubuntu. Donc Je vous donne rendez-vous dans ce cours qui cloturera l’installation de notre serveur j’espère que vous frémissez d’impatience :).
Notes à retenir
- Bien garder vos mots de passe phpmyadmin et postfixadmin ainsi que ceux de vos utilisateurs ajouté sur postfixadmin.
- Vous pouvez trouver votre certificat au chemin suivant: /etc/letsencrypt/live/lasdunumeric.fr/
- Postfixadmin vous permet d'administrer postfix en vous permettant d'ajouter facilement de nouveau utilisateur sur votre serveur mail ansi que des alias et des nom de domaine