Postfix – PostfixAdmin – Créer des boîtes aux lettres virtuelles sur un serveur de messagerie Ubuntu Partie 3

Débutant – Créer des boîtes aux lettres virtuelles sur un serveur de messagerie Ubuntu

lms 15 4

Vue d'ensemble

Ce tutoriel va vous montrer comment créer des boîtes aux lettres virtuelles sur le serveur de messagerie Ubuntu avec PostfixAdmin, qui est une interface web open-source pour configurer et gérer un serveur de messagerie basé sur Postfix pour de nombreux domaines et utilisateurs.

Avec les boîtes aux lettres virtuelles, il n’est pas nécessaire de créer un compte Unix local pour chaque adresse électronique.

Si vous allez mettre en place un serveur de messagerie pour une entreprise ou une organisation, il est toujours préférable d’avoir un moyen facile de créer des boîtes aux lettres virtuelles dans une interface web, qui permet également aux utilisateurs de changer leurs mots de passe. C’est là que PostfixAdmin entre en jeu.

Ce que vous apprendrez

  • Gérer les boîtes aux lettres, les domaines virtuels et les alias
  • Domaines alias (transfert d’un domaine vers un autre avec validation du destinataire)
  • Les utilisateurs peuvent gérer leur propre boîte aux lettres (changement d’alias, de mot de passe et de message de vacances)
  • Prise en charge des quotas pour les boîtes aux lettres individuelles et le quota total d’un domaine
  • Intégration de Fetchmail : Vous pouvez récupérer les courriels de votre adresse électronique d’origine vers votre nouvelle adresse électronique.
  • Client en ligne de commande postfixadmin-cli pour ceux qui n’ont pas envie de cliquer sur une interface web
  • utilise le serveur de base de données MariaDB/MySQL
Sommaire
2
3
Tutoriels – Postfixadmin

Etiam quis blandit erat. Donec laoreet libero non metus volutpat consequat in vel metus. Sed non augue id felis pellentesque congue et vitae tellus. Donec ullamcorper libero nisl, nec blandit dolor tempus feugiat.

Débutant

04 hrs 43 min

Mise à jour le: 3/12/2024

Pré-requis

Avoir un domain

Serveur Ubuntu 20.04

Suivi du tutoriel partie 1 et 2

Créer une base de données MySQL

Conditions préalables

Si vous avez suivi des tutoriels sur les serveurs de messagerie sur d’autres sites web, je vous recommande de purger vos configurations (sudo apt purge postfix dovecot-core) et de recommencer avec ma série de tutoriels, afin de ne pas être dérouté par les différents processus d’installation.

Une fois que les conditions ci-dessus sont remplies, installons et configurons PostfixAdmin.

Etape 1: Install MariaDB/ Serveur de base de données MySQL

PostfixAdmin nécessite une base de données (MySQL/MariaDB).

Cet article utilisera la base de données MariaDB, qui est un remplaçant direct de MySQL.

Entrez la commande suivante pour installer MariaDB sur Ubuntu.

Commande :

sudo apt install mariadb-server

Une fois installé, le serveur MariaDB devrait être automatiquement démarré. Utilisez systemctl pour vérifier son état.

Commande :

systemctl status mariadb

Résultat

mariadb.service - MariaDB 10.3.22 database server

Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)

Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago

Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/

Main PID: 9161 (mysqld)

Status: "Taking your SQL requests now..."

Tasks: 31 (limit: 9451)

Memory: 64.7M

CGroup: /system.slice/mariadb.service └─9161 /usr/sbin/mysqld

S’il n’est pas en cours d’exécution, démarrez-le à l’aide de cette commande :

Commande :

sudo systemctl start mariadb

Pour permettre à MariaDB de démarrer automatiquement au démarrage, exécutez

Commande :

sudo systemctl enable mariadb

Exécutez maintenant le script de sécurité post-installation.

Commande :

sudo mysql_secure_installation

Lorsqu’il vous demande d’entrer le mot de passe Root de MariaDB, appuyez sur la touche Entrée car le mot de passe racine n’est pas encore défini. Entrez ensuite y pour définir le mot de passe Root du serveur MariaDB.

Ensuite, vous pouvez appuyer sur Entrée pour répondre à toutes les questions restantes, ce qui supprimera l’utilisateur anonyme, désactivera le login root à distance et supprimera la base de données de test.

Cette étape est une exigence de base pour la sécurité de la base de données MariaDB. (Notez que Y est en majuscule, ce qui signifie qu’il s’agit de la réponse par défaut).

Étape 2 : Télécharger PostfixAdmin sur le serveur Ubuntu

PostfixAdmin est inclus dans le dépôt par défaut d’Ubuntu. Cependant, je ne le recommande pas pour les raisons suivantes :

  • – Cela peut créer des problèmes lorsque vous mettez à niveau le système Ubuntu vers une nouvelle version, ce qui entraîne l’échec de la mise à niveau.
  • – Si vous utilisez Nginx, le paquet postfixadmin peut installer automatiquement Apache sur votre système.
  • – Si vous utilisez MySQL, ce paquet peut supprimer MySQL de votre système.
  • Le paquetage postfixadmin par défaut présente de temps à autre un problème de boucle de connexion. Vous rencontrerez aussi parfois l’erreur Invalid token ! (Échec de la vérification CSRF).

Je vais donc vous montrer comment installer la dernière version de PostfixAdmin. Allez sur la page Gitbub de PostfixAdmin pour télécharger la dernière version.

Vous pouvez utiliser l’outil wget pour la télécharger à partir de la ligne de commande. Le lien de téléchargement est toujours disponible dans le format ci-dessous. Si une nouvelle version sort, remplacez simplement 3.3.13 par le nouveau numéro de version.

Commande :

sudo apt install wgetwget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.13.tar.gz

Une fois téléchargée, extrayez l’archive dans le répertoire /var/www/ et renommez-la en postfixadmin.

Commande :

sudo mkdir -p /var/www/

sudo tar -xvzf postfixadmin-3.3.13.tar.gz -C /var/www/

sudo mv /var/www/postfixadmin-postfixadmin-3.3.13 /var/www/postfixadmin

Étape 3 : Configuration des autorisations

PostfixAdmin a besoin d’un répertoire templates_c, et le serveur web a besoin d’un accès en lecture et en écriture à ce répertoire.

Commande :

sudo mkdir -p /var/www/postfixadmin/templates_csudo

apt install acl

sudo setfacl -R -m u:www-data:rwx /var/www/postfixadmin/templates_c/

A partir de Dovecot 2.3.11, l’utilisateur du serveur web doit avoir la permission de lire le certificat TLS de Let’s Encrypt afin d’effectuer le hachage du mot de passe. Exécutez les deux commandes suivantes pour accorder les permissions.

Commande :

sudo setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Étape 4 : Créer une base de données et un utilisateur pour PostfixAdmin

Connectez-vous au shell MySQL/MariaDB en tant que root avec la commande suivante.

Commande :

sudo mysql -u root

Une fois connecté, créez une base de données pour PostfixAdmin à l’aide de la commande suivante.

Je l’ai nommée PostfixAdmin, mais vous pouvez utiliser le nom de votre choix. (N’oubliez pas le point-virgule.)

Commande :

create database postfixadmin;

Saisissez ensuite la commande ci-dessous pour créer un utilisateur de base de données pour PostfixAdmin. Remplacez postfixadmin_password par votre mot de passe préféré. Notez que le mot de passe ne doit pas contenir le caractère #, sinon vous risquez de ne pas pouvoir vous connecter ultérieurement.

Commande :

create user 'postfixadmin'@'localhost' identified by 'postfixadmin_password';

Accorde tous les privilèges de la base de données PostfixAdmin à l’utilisateur.

Commande :

grant all privileges on postfixadmin.* to 'postfixadmin'@'localhost';

Videz la table des privilèges pour que les modifications soient prises en compte, puis quittez le shell MariaDB.

Commande :

flush privileges;

exit;

Step 5: Configure PostfixAdmin

Le fichier de configuration par défaut de PostfixAdmin est config.inc.php.

Nous devons créer un fichier config.local.php et ajouter des configurations personnalisées.

Commande :

sudo nano /var/www/postfixadmin/config.local.php

Ajoutez les lignes suivantes dans le fichier, afin que PostfixAdmin puisse se connecter à la base de données MySQL/MariaDB. Remplacez postfixadmin_password par le vrai mot de passe de PostfixAdmin créé à l’étape 4.

Commande :

$CONF['configured'] = true;

$CONF['database_type'] = 'mysqli';

$CONF['database_host'] = '144.217.36.111';

$CONF['database_port'] = '3306';

$CONF['database_user'] = 'nBa19cNKE9BABB';

$CONF['database_password'] = 'sHZzcP2m5q7yv;

$CONF['database_name'] = '7DsS18q5tJ3aE';

$CONF['encrypt'] = 'dovecot:ARGON2I';

$CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5";

if(@file_exists('/usr/bin/doveadm')) { // @ to silence openbase_dir stuff;

see https://github.com/postfixadmin/postfixadmin/issues/171

$CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5"; # debian

}

Enregistrez et fermez le fichier. Notez que nous allons utiliser le schéma de mot de passe ARGON2I.

Par défaut, PostfixAdmin et Dovecot utilisent MD5-CRYPT, qui est un schéma de mot de passe faible.

Vous pouvez lister les schémas de mots de passe disponibles dans Dovecot avec la commande suivante.

Commande :

sudo doveadm pw -l

Résultat

Commande :

root@mail:/etc/postfix# doveadm pw -l

SHA1 SSHA512 BLF-CRYPT PLAIN HMAC-MD5 OTP SHA512 SHA RPA DES-CRYPT CRYPT SSHA MD5-CRYPT SKEY PLAIN-MD4 PLAIN-MD5 SCRAM-SHA-1 LANMAN SHA512-CRYPT CLEAR CLEARTEXT ARGON2I ARGON2ID SSHA256 NTLM MD5 PBKDF2 SHA256 CRAM-MD5 PLAIN-TRUNC SHA256-CRYPT SMD5 DIGEST-MD5 LDAP-MD5

Installation de Dovecot 2.3 sur Ubuntu 20.04

Si vous utilisez Ubuntu 20.4, vous avez déjà Dovecot 2.3.

Si vous utilisez Ubuntu 18.04, vous devez installer Dovecot 2.3 depuis le dépôt officiel en amont, afin de pouvoir utiliser le système de mot de passe ARGON2I.

Créer un fichier de dépôt pour Dovecot.

Commande :

sudo nano /etc/apt/sources.list.d/dovecot.list

Ajoutez la ligne suivante dans le fichier.

Commande :

deb [arch=amd64] https://repo.dovecot.org/ce-2.3-latest/ubuntu/bionic bionic main

Sauvegardez et fermez le fichier. Comme ce dépôt utilise https, nous devons installer le paquetage apt-transport-https.

Commande :

sudo apt install apt-transport-https

Ensuite, nous devons importer la clé PGP de Dovecot avec les deux commandes suivantes, afin que les paquets téléchargés depuis ce dépôt puissent être vérifiés.

Commande :

curl https://repo.dovecot.org/DOVECOT-REPO-GPG | gpg --importgpg --export ED409DA1 | sudo tee /etc/apt/trusted.gpg.d/dovecot.gpg

Maintenant, mettez à jour le dépôt et mettez à jour les paquets Dovecot existants.

Commande :

sudo apt update

sudo apt upgrade

Si vous rencontrez une question comme celle-ci au cours du processus de mise à niveau, il est toujours préférable de conserver la version locale et d’examiner ce qui doit être modifié ultérieurement.

Une fois la mise à jour terminée, vérifiez à nouveau la version de Dovecot.

Your content goes here. Edit or remove this text inline or in the module Content settings. You can also style every aspect of this content in the module Design settings and even apply custom CSS to this text in the module Advanced settings.

Commande :

dovecot --version

Résultat :

2.3.9.2 (cf2918cac)

Étape 6 : Créer un hôte virtuel Apache pour PostfixAdmin

Si vous utilisez le serveur web Apache, créez un hôte virtuel pour PostfixAdmin.

Commande :

sudo nano /etc/apache2/sites-available/postfixadmin.conf

Mettez le texte suivant dans le fichier.

Remplacez postfixadmin.example.com par votre vrai nom de domaine et n’oubliez pas de lui attribuer un enregistrement DNS A.

Commande :

ServerName postfixadmin.osnetworking.com

DocumentRoot /var/www/postfixadmin/public

ErrorLog ${APACHE_LOG_DIR}/postfixadmin_error.log

CustomLog ${APACHE_LOG_DIR}/postfixadmin_access.log combined

Options FollowSymLinks

AllowOverride All

Options FollowSymLinks

MultiViews

AllowOverride All

Order allow,deny

allow from all

Enregistrez et fermez le fichier. Activez ensuite cet hôte virtuel avec :

Commande :

sudo a2ensite postfixadmin.conf

Rechargez Apache pour que les modifications soient prises en compte.

Commande :

sudo systemctl reload apache2

Vous devriez maintenant voir l’assistant d’installation de PostfixAdmin sur le Web à l’adresse suivante :

Lien vers l'interface web de PostfixAdmin :

http://postfixadmin.osnetworking.com/setup.php

Postfixadmin setup

Étape 7 : Installation des modules PHP requis et recommandés

Exécutez la commande suivante pour installer les modules PHP requis ou recommandés par PostfixAdmin.

Commande :

Pour Ubuntu 20.04

sudo apt install php7.4-fpm php7.4-imap php7.4-mbstring php7.4-mysql php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-bz2 php7.4-intl php7.4-gmp php7.4-redis

Si vous utilisez Apache, vous devez également installer le paquetage libapache2-mod-php.

Commande :

udo apt install libapache2-mod-php

Redémarrez ensuite Apache.

Commande :

sudo systemctl restart apache2

Etape 8: Enabling HTTPS

Pour chiffrer le trafic HTTP, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let’s Encrypt.

Exécutez la commande suivante pour installer le client Let’s Encrypt (Certbot) sur le serveur Ubuntu.

Commande :

sudo apt install certbot

Si vous utilisez Apache, installez le plugin Certbot Apache.

Commande :

sudo apt install python3-certbot-apache

Exécutez ensuite cette commande pour obtenir et installer le certificat TLS.

Commande :

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email letencrypt@osnetworking.com -d postfixadmin.osnetworking.com

p
Information sur la commande:
  • nginx: Use the nginx plugin.
  • --apache: Use the Apache plugin.
  • --agree-tos: Agree to terms of service.
  • --redirect: Force HTTPS by 301 redirect.
  • --hsts: Add the Strict-Transport-Security header to every HTTP response. Forcing browser to always use TLS for the domain. Defends against SSL/TLS Stripping.
  • --staple-ocsp: Enables OCSP Stapling. A valid OCSP response is stapled to the certificate that the server offers during TLS.

Le certificat devrait maintenant être obtenu et installé automatiquement, ce qui est indiqué par le message ci-dessous.

Étape 9 : Activer les statistiques dans Dovecot

PostfixAdmin doit lire les statistiques de Dovecot. Editez le fichier de configuration de Dovecot.

Commande :

sudo nano /etc/dovecot/conf.d/10-master.conf

Ajoutez les lignes suivantes à la fin de ce fichier.

Commande :

service stats {

unix_listener stats-reader {

user = www-data

group = www-data

mode = 0660

}

unix_listener stats-writer {

user = www-data

group = www-data

mode = 0660

}

}

Enregistrez et fermez le fichier.

Ajoutez ensuite le serveur web au groupe dovecot.

Commande :

sudo gpasswd -a www-data dovecot

Redémarrer Dovecot.

Commande :

sudo systemctl restart dovecot

Accorder les permissions à l’utilisateur www-data.

Commande :

sudo setfacl -R -m u:www-data:rwx /var/run/dovecot/stats-reader /var/run/dovecot/stats-writer

Étape 10 : Terminer l'installation dans le navigateur Web

Allez sur votre navigateur postfixadmin.votredomain.com/setup.php pour lancer l’assistant d’installation en ligne.

Tout d’abord, vous devez créer un mot de passe d’installation pour PostfixAdmin.

postfixadmin setup.php

Après avoir créé le hachage du mot de passe, PostfixAdmin affichera une ligne comme ci-dessous.

Commande :

$CONF['setup_password'] = '$2y$10$58fIawuOb5y538RMBol/DOoqv2bJ7zhPRzRO.4Xq7MLeQJHmaFwF2';

Vous devez ouvrir le fichier config.local.php.

Commande :

sudo nano /var/www/postfixadmin/config.local.php

Ajoutez la ligne affichée sur la page d’installation de PostfixAdmin à la fin du fichier comme ci-dessous.

Après avoir enregistré le fichier, vous devez rafraîchir la page d’installation de PostfixAdmin et saisir à nouveau le mot de passe d’installation, puis créer le compte d’administrateur.

N’utilisez pas d’adresse Gmail, Yahoo Mail ou Microsoft pour le compte d’administrateur, sinon vous ne pourrez pas vous connecter ultérieurement.

Utilisez une adresse électronique de votre propre domaine. Vous pourrez créer l’adresse électronique plus tard dans PostfixAdmin.

postfixadmin setup.php

Si vous rencontrez l’erreur suivante lors de la création d’un compte superadministrateur.

Commande :

Password Hashing - attempted to use configured encrypt backend (dovecot:ARGON2I) triggered an error: /usr/bin/doveadm pw -r 5 failed, see error log for details

ou

ne peut pas crypter le mot de passe avec dovecotpw, voir le journal des erreurs pour plus de détails

C’est parce que l’utilisateur www-data n’a pas la permission de lire le certificat TLS de Let’s Encrypt.

Pour résoudre ce problème, exécutez la commande suivante pour accorder les autorisations.

Commande :

sudo setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Dans certains cas, il peut être nécessaire d’exécuter la commande suivante pour corriger cette erreur.

Commande :

sudo setfacl -R -m u:www-data:rwx /var/run/dovecot/stats-reader /var/run/dovecot/stats-writer

Une fois le compte superadmin créé, vous pouvez vous connecter à PostfixAdmin à l’adresse postfixadmin.osnetworking.com/login.php.

Interface PostfixAdmin

Étape 11 : Vérification des tables dans la base de données

Le processus d’installation de PostfixAdmin remplit la base de données postfixadmin avec quelques tables par défaut.

Il est utile pour nous de connaître les noms et la structure de ces tables. Connectez-vous à la console MySQL/MariaDB.

Commande :

sudo mysql -u root

Sélectionnez la base de données postfixadmin.

Commande :

USE postfixadmin;

Liste de toutes les tables de cette base de données.

Commande :

SHOW TABLES;

+————————+

| Tables_in_postfixadmin |

+—————————————+

| admin                            |

| alias                                |

| alias_domain                 |

| config                              |

| domain                           |

| domain_admins            |

| fetchmail                        |

| log                                    |

| mailbox                           |

| quota                               |

| quota2                             |

| vacation                           |

| vacation_notification     |

+——————————————+

13 rows in set (0.001 sec)

Les trois tableaux les plus importants sont les suivants

  • – domaine : contient des informations sur les domaines qui utilisent votre serveur de messagerie pour envoyer et recevoir du courrier électronique.
  • – boîte aux lettres : contient des informations sur chaque adresse électronique, y compris le mot de passe haché et l’emplacement des fichiers de courrier.
  • – alias : contient l’alias de chaque adresse électronique.

Si cela vous intéresse, vous pouvez vérifier les colonnes que contient chaque tableau.

Par exemple, la commande suivante nous montrera les colonnes du tableau domaine.

+————-+————–+——+—–+———————+——-+

| Field       | Type         | Null | Key | Default             | Extra |

+————-+————–+——+—–+———————+——-+

| domain      | varchar(255) | NO   | PRI | NULL                |       |

| description | varchar(255) | NO   |     | NULL                |       |

| aliases     | int(10)      | NO   |     | 0                   |       |

| mailboxes   | int(10)      | NO   |     | 0                   |       |

| maxquota    | bigint(20)   | NO   |     | 0                   |       |

| quota       | bigint(20)   | NO   |     | 0                   |       |

| transport   | varchar(255) | NO   |     | NULL                |       |

| backupmx    | tinyint(1)   | NO   |     | 0                   |       |

| created     | datetime     | NO   |     | 2000-01-01 00:00:00 |       |

| modified    | datetime     | NO   |     | 2000-01-01 00:00:00 |       |

| active      | tinyint(1)   | NO   |     | 1                   |      

|+————-+————–+——+—–+———————+——-+

Déconnectez-vous de la console MySQL/MariaDB.

Commande :

EXIT;

Étape 12 : Configurer Postfix pour utiliser la base de données MySQL/MariaDB

Par défaut, Postfix ne délivre des courriels qu’aux utilisateurs disposant d’un compte Unix local.

Pour qu’il délivre des courriels à des utilisateurs virtuels dont les informations sont stockées dans la base de données, nous devons configurer Postfix pour qu’il utilise des domaines de boîtes aux lettres virtuelles.

Tout d’abord, nous devons ajouter le support de la carte MySQL pour Postfix en installant le paquet postfix-mysql.

Commande :

sudo apt install postfix-mysql

Modifiez ensuite le fichier de configuration principal de Postfix.

Commande :

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin de ce fichier.

Commande :

virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf

virtual_mailbox_maps =

proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,

proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,

proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,

proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

  • virtual_mailbox_domains : pointe vers un fichier qui indiquera à Postfix comment rechercher les informations relatives au domaine dans la base de données.
  • virtual_mailbox_maps : pointe vers des fichiers qui indiqueront à Postfix comment rechercher les adresses électroniques dans la base de données.
  • virtual_alias_maps : pointe vers des fichiers qui indiqueront à Postfix comment rechercher les alias dans la base de données.

Nous voulons utiliser Dovecot pour délivrer les courriels entrants au magasin de messages des utilisateurs virtuels, donc ajoutez la ligne suivante à la fin de ce fichier.

Commande :

virtual_transport = lmtp:unix:private/dovecot-lmtp

Enregistrez et fermez le fichier.

Ensuite, nous devons créer les fichiers .cf un par un.

Créez le répertoire sql.

Commande :

sudo mkdir /etc/postfix/sql/

Créez le fichier mysql_virtual_domains_maps.cf.

Commande :

sudo nano /etc/postfix/sql/mysql_virtual_domains_maps.cf

Ajoutez le contenu suivant.

Remplacez le mot de passe par le mot de passe PostfixAdmin que vous avez défini à l’étape 2.

Commande :

user = postfixadmin

password = Azerty1234

hosts = localhost

dbname = postfixadmin

query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'

#query = SELECT domain FROM domain WHERE domain='%s'

#requête facultative à utiliser lors de l'envoi d'un relais pour le MX de secours

#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'

#expansion_limit = 100

Créer le fichier mysql_virtual_mailbox_maps.cf.

Commande :

sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf

Ajouter le contenu suivant.

Commande :

user = postfixadmin

password = Azerty1234

hosts = localhost

dbname = postfixadmin

query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

#expansion_limit = 100

Créer le fichier mysql_virtual_alias_domain_mailbox_maps.cf.

Commande :

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

Ajouter le contenu suivant.

Commande :

user = postfixadmin

password = Azerty1234

hosts = localhost

dbname = postfixadmin

query = SELECT maildir FROM mailbox,

alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@',

alias_domain.target_domain) AND mailbox.active = 1 AND

alias_domain.active='1'

Créer le fichier mysql_virtual_alias_maps.cf.

Commande :

user = postfixadmin

password = Azerty1234

hosts = localhost

dbname = postfixadmin

query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

#expansion_limit = 100

Créer le fichier mysql_virtual_alias_domain_maps.cf.

Commande :

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

Ajouter le contenu suivant.

Commande :

user = postfixadmin

password = Azerty1234

hosts = localhost

dbname = postfixadmin

query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

Créer le fichier mysql_virtual_alias_domain_catchall_maps.

Commande :

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

Ajouter le contenu suivant.

Commande :

user = postfixadmin

password = Azerty1234

hosts = localhost

dbname = postfixadmin

query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

Les mots de passe de la base de données étant stockés en texte clair, ils ne doivent être lisibles que par l’utilisateur postfix et root, ce qui est fait en exécutant les deux commandes suivantes.

Commande :

sudo chmod 0640 /etc/postfix/sql/*

sudo setfacl -R -m u:postfix:rx /etc/postfix/sql/

Ensuite, nous devons modifier la valeur du paramètre mydestination dans Postfix. Affichez la valeur actuelle :

Commande :

postconf mydestination

Exemple de sortie :

Commande :

mydestination = $myhostname, linuxbabe.com, localhost.$mydomain, localhost

Le paramètre mydestination contient une liste de noms de domaine qui recevront les courriels livrés aux comptes Unix locaux.

Dans la partie 1, nous avons ajouté le nom de domaine apex (comme osnetworking.com) à mydestination.

Puisque nous allons utiliser la boîte aux lettres virtuelle, nous devons supprimer le nom de domaine apex de la liste en lançant la commande suivante.

Commande :

sudo postconf -e "mydestination = $myhostname, localhost.$mydomain, localhost"

Ouvrons à nouveau le fichier de configuration principal de Postfix.

Commande :

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin de ce fichier.

Commande :

virtual_mailbox_base = /var/vmail

virtual_minimum_uid = 2000

virtual_uid_maps = static:2000

virtual_gid_maps = static:2000

La première ligne définit l’emplacement de base des fichiers de courrier.

Les trois autres lignes définissent l’ID de l’utilisateur et l’ID du groupe que Postfix utilisera lors de la distribution des courriers électroniques entrants dans la boîte aux lettres.

Nous utilisons l’ID utilisateur 2000 et l’ID groupe 2000.

Enregistrez et fermez le fichier.

Redémarrez Postfix pour que les modifications soient prises en compte.

Commande :

sudo systemctl restart postfix

Ensuite, nous devons créer un utilisateur nommé vmail avec l’ID 2000 et un groupe avec l’ID 2000.

Commande :

sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home

Créer l’emplacement de la base de courrier.

Commande :

sudo mkdir /var/vmail/

Faire de vmail le propriétaire.

Commande :

sudo chown vmail:vmail /var/vmail/ -R

Étape 13 : Configurer Dovecot pour utiliser la base de données MySQL/MariaDB

Nous devons également configurer le serveur IMAP Dovecot pour qu’il puisse interroger les informations sur les utilisateurs à partir de la base de données.

Tout d’abord, exécutez la commande suivante pour ajouter le support MySQL à Dovecot.

Commande :
sudo apt install dovecot-mysql

Editez ensuite le fichier 10-mail.conf.

Commande :

sudo nano /etc/dovecot/conf.d/10-mail.conf

Dans la partie 2, nous avons utilisé l’emplacement mail_location.

Les messages électroniques sont stockés dans le répertoire Maildir, situé sous le répertoire personnel de chaque utilisateur.

Commande :

mail_location = maildir:~/Maildir

Puisque nous utilisons maintenant un domaine de boîtes aux lettres virtuelles, nous devons activer mail_home pour les utilisateurs virtuels en ajoutant la ligne suivante dans le fichier, car les utilisateurs virtuels n’ont pas de répertoire personnel par défaut.

Commande :

mail_home = /var/vmail/%d/%n/

Enregistrez et fermez le fichier.

Éditez ensuite le fichier 10-auth.conf.

Commande :

sudo nano /etc/dovecot/conf.d/10-auth.conf

Dans la partie 2, nous avons utilisé la valeur suivante pour auth_username_format.

Commande :

auth_username_format = %n

Le %n supprimerait le domaine s’il était donné. Parce que dans la partie 2, nous utilisions un compte Unix local pour le nom d’utilisateur de chaque adresse électronique, nous devions utiliser %n pour supprimer le domaine, afin que les utilisateurs puissent se connecter avec l’adresse électronique complète.

Nous utilisons maintenant des domaines de boîtes aux lettres virtuelles, ce qui signifie que le nom d’utilisateur de chaque adresse e-mail comprend la partie domaine, nous devons donc modifier le format du nom d’utilisateur authentifié comme suit. %u n’enlèvera pas le domaine.

Cela permet aux utilisateurs de se connecter avec l’adresse e-mail complète.

Commande :

auth_username_format = %u

Trouvez ensuite la ligne suivante.

Commande :

#auth_default_realm =

Remplacer par

Commande :

auth_default_realm = osnetworking.com

Cela permet de s’assurer que les utilisateurs qui n’ont pas saisi la partie @osnetworking.com dans le champ du nom d’utilisateur peuvent quand même se connecter.

Dovecot ajoutera la partie @osnetworking.com si elle n’est pas donnée par les utilisateurs.

Ensuite, décommettez la ligne suivante à la fin de ce fichier, afin que Dovecot puisse interroger les informations sur les utilisateurs à partir de la base de données MySQL/MariaDB.

Commande :

!include auth-sql.conf.ext

Maintenant, vous ne voulez probablement pas que les utilisateurs Unix locaux envoient des emails sans enregistrer d’adresses email dans PostfixAdmin, alors commentez la ligne suivante en ajoutant le caractère # au début, afin que Dovecot n’interroge pas le fichier local /etc/passwd ou /etc/shadow.

Commande :

#!include auth-system.conf.ext

Il peut être utile d’ajouter les deux lignes suivantes dans ce fichier pour déboguer les problèmes de connexion.

Les erreurs de connexion sont enregistrées dans le fichier /var/log/mail.log. (Une fois que les utilisateurs peuvent se connecter sans problème, vous pouvez commenter les deux lignes suivantes).

Commande :

auth_debug = yesauth_debug_passwords = yes

Enregistrez et fermez le fichier.

Editez le fichier dovecot-sql.conf.ext.

Commande :

sudo nano /etc/dovecot/dovecot-sql.conf.ext

Voici le contenu que vous devriez avoir dans ce fichier.

Par défaut, toutes les lignes de ce fichier sont commentées, vous pouvez donc simplement les copier et les coller en bas.

Remplacez password par le mot de passe postfixadmin que vous avez défini à l’étape 2.

Commande :

vous avez défini à l'étape 2.

driver = mysql

connect = host=localhost dbname=postfixadmin

user=postifadmin

password=Azerty1234

default_pass_scheme = ARGON2I

password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1'

user_query = SELECT maildir, 2000 AS uid, 2000 AS gid FROM mailbox WHERE username = '%u' AND active='1'

iterate_query = SELECT username AS user FROM mailbox

Redémarrer Dovecot.

Commande :

sudo systemctl restart dovecot

Lorsqu’un utilisateur tente de se connecter, Dovecot utilise l’algorithme Argon2 pour générer un hachage du mot de passe à partir du mot de passe saisi par l’utilisateur, puis le compare avec le hachage du mot de passe stocké dans la base de données.

Étape 14 : Ajouter le domaine et les boîtes aux lettres dans PostfixAdmin

Connectez-vous à l’interface web de PostfixAdmin en tant qu’administrateur.

Cliquez sur l’onglet Liste des domaines et sélectionnez Nouveau domaine pour ajouter un domaine.

Vous pouvez choisir le nombre d’alias et de boîtes aux lettres autorisées pour ce domaine.

Cliquez ensuite sur l’onglet Liste virtuelle et sélectionnez Ajouter une boîte aux lettres pour ajouter une nouvelle adresse électronique pour votre domaine.

Ensuite, vous pouvez ouvrir votre client de messagerie tel que Mozilla Thunderbird et ajouter un compte de messagerie.

  • Dans la section serveur entrant, sélectionnez le protocole IMAP, entrez osnetworking.com comme nom de serveur, choisissez le port 143 et STARTTLS. Choisissez le mot de passe normal comme méthode d’authentification.
  • Dans la section sortante, sélectionnez le protocole SMTP, entrez osnetworking.com comme nom de serveur, choisissez le port 587 et STARTTLS. Choisissez le mot de passe normal comme méthode d’authentification.
Conseil 1 :

Vous pouvez également utiliser le port 993 avec un cryptage SSL/TLS pour IMAP, et le port 465 avec un cryptage SSL/TLS pour SMTP. Vous ne devez pas utiliser le port 25 comme port SMTP dans les clients de messagerie pour envoyer des courriels sortants.

Conseil 2 :

Si vous utilisez le client de messagerie Microsoft 365 Outlook, vous ne devez pas activer l'authentification sécurisée par mot de passe (SPA), qui est un protocole propriétaire de Microsoft. Votre mot de passe est déjà crypté par TLS.

Vous devriez maintenant être en mesure de vous connecter à votre propre serveur de messagerie et d’envoyer et de recevoir des courriels avec votre client de messagerie de bureau !

Notez que vous ne pouvez pas utiliser les comptes Unix locaux pour vous connecter désormais.

Vous devez vous connecter avec l’utilisateur virtuel créé à partir de l’interface web de PostfixAdmin.

Prochaine étape

J’espère que ce tutoriel vous a aidé à installer et à utiliser PostfixAdmin sur Ubuntu pour créer des boîtes aux lettres virtuelles.

Dans la partie 4, je vous montrerai comment configurer SPF et DKIM avec Postfix pour améliorer la délivrabilité des emails et dans un prochain tutoriel, je vous montrerai comment héberger plusieurs domaines avec PostfixAdmin.

Si vous souhaitez accéder à vos e-mails à partir d’un navigateur web, je vous recommande Roundcube, un client webmail open-source très populaire et riche en fonctionnalités.

Comme toujours, si vous avez trouvé cet article utile, vous pouvez partager cet article. Bonne lecture !

Accès à tous les cours

  • Partie 3  : PostfixAdmin – Créer des boîtes aux lettres virtuelles sur un serveur de messagerie Ubuntu
  • Partie 4 : Comment configurer SPF et DKIM avec Postfix sur Ubuntu Serveur
  • Partie 5 : Création d’un enregistrement DMARC pour protéger votre nom de domaine contre l’usurpation d’e-mails
  • Partie 6 – 7 conseils efficaces pour empêcher vos e-mails d’être marqués comme spam
  • Partie 7 Installez Roundcube Webmail sur Ubuntu 22.04/20.04 avec Apache/Nginx
  • Partie 8 Comment héberger plusieurs domaines de messagerie dans PostfixAdmin sur Ubuntu
  • Curabitur non bibendum ligula
  • Curabitur non bibendum ligula
Support

FAQ

FAQ

FAQ

Toutes les questions que vous posez en cas d’une erreur qui apparaît dans votre article, je vous ai mis la solution ci-dessous en forme de FAQ.

En règle générale, vous devez toujours consulter le journal de messagerie (/var/log/mail.log) de votre serveur de messagerie lorsqu’une erreur se produit. Vous trouverez ci-dessous une liste d’erreurs spécifiques et des conseils de dépannage.

En règle générale, vous devez toujours consulter le journal de messagerie (/var/log/mail.log) de votre serveur de messagerie lorsqu'une erreur se produit. Vous trouverez ci-dessous une liste d'erreurs spécifiques et des conseils de dépannage.

Si vous ne pouvez pas vous connecter à votre serveur de messagerie à partir d’un client de messagerie de bureau, examinez votre serveur de messagerie pour vérifier si les ports sont ouverts. Notez que vous devez exécuter la commande suivante à partir d’un autre ordinateur ou serveur Linux. Si vous l’exécutez sur votre serveur de messagerie, les ports sembleront toujours ouverts.

sudo nmap mail.kubapay.uk

Et vérifiez que Dovecot fonctionne.

systemctl status dovecot

Vous pouvez également consulter le journal du courrier (/var/log/mail.log), qui peut vous donner quelques indices. Si Dovecot ne démarre pas, l’erreur peut ne pas être enregistrée dans le fichier /var/log/mail.log, vous pouvez exécuter la commande suivante pour voir ce qui ne va pas.

sudo journalctl -eu dovecot

 

Si vous voyez l’erreur suivante dans le journal de courrier, il est probable que vous n’ayez pas défini un mot de passe correct dans les fichiers .cf sous le répertoire /etc/postfix/sql/.

postfix/trivial-rewrite[28494]: warning: virtual_alias_domains: proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: table lookup problempostfix/trivial-rewrite[28494]: warning: virtual_alias_domains lookup failure

Si vous voyez l’erreur suivante dans le journal de messagerie, c’est que vous avez oublié d’ajouter mail_location = maildir:~/Maildir dans le fichier /etc/dovecot/conf.d/10-mail.conf.

open(/var/mail/username@domain.com) failed: Permission denied (euid=2000(vmail) egid=2000(vmail) missing +w perm: /var/mail, we’re not in group 8(mail), dir owned by 0:8 mode=0775

Accès au relais refusé

Si vous voyez l’erreur “relay access denied” lorsque vous essayez d’envoyer des courriels à partir d’un client de messagerie, il est très probable que vous utilisiez le port 25 comme port SMTP dans votre client de messagerie. Comme je l’ai déjà dit, vous devez utiliser le port 587 ou 465 comme port SMTP dans les clients de messagerie (Mozilla Thunberbird, Microsoft Outlook, etc.) pour envoyer des courriels sortants. Le port 25 doit être utilisé pour les communications entre serveurs SMTP.

Application de messagerie iOSv

Si vous utilisez l’application iOS Mail pour vous connecter à votre serveur de messagerie et que vous rencontrez l’erreur suivante.

Vous pouvez essayer d’y remédier en imposant le cryptage SSL, tant pour le SMTP que pour l’IMAP.

Fait amusant : il semble que l’application iOS Mail ait des difficultés à supporter STARTTLS sur le port IMAP 143, mais qu’elle supporte STARTTLS sur le port de soumission 587.

Échec de la consultation temporaire

Si votre serveur de messagerie fonctionnait bien depuis un certain temps, mais que vous trouvez soudain l’erreur suivante dans le journal de la messagerie,

Aug 25 20:25:24 mx postfix/trivial-rewrite[3313]: warning: virtual_alias_domains: proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: table lookup problemAug 25 20:25:24 mx postfix/trivial-rewrite[3313]: warning: virtual_alias_domains lookup failureAug 25 20:25:24 mx postfix/submission/smtpd[3464]: NOQUEUE: reject: 451 4.3.0 <user@kubapay.uk>: Temporary lookup failure;  proto=ESMTPAug 25 20:25:24 mx postfix/submission/smtpd[3464]: Temporary lookup failure

Il est probable que votre base de données MariaDB/MySQL se soit arrêtée d’une manière ou d’une autre. Vous pouvez utiliser la commande suivante pour vérifier quand votre serveur de base de données s’est arrêté.

sudo journalctl -eu mariadb

ou

sudo journalctl -eu mysql

La cause la plus fréquente de cette situation est que votre serveur manque de mémoire. Vérifiez que votre serveur dispose de suffisamment de mémoire.

htop

or

free -m

Cette erreur peut également être causée par un trop grand nombre de connexions aux bases de données MariaDB/MySQL, de sorte qu’elles ne peuvent pas traiter plus de requêtes.

Pour y remédier, vous pouvez augmenter le nombre de connexions que MariaDB/MySQL peut gérer.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Trouvez la ligne suivante dans la section ” Mise au point”.

#max_connections = 100

Décommentez-le et remplacez la valeur par 500.

max_connections = 500

Si votre serveur dispose de beaucoup de mémoire vive, vous pouvez le remplacer par un nombre plus élevé, comme 1000.

max_connections = 1000

Enregistrez et fermez le fichier. Redémarrez ensuite MariaDB/MySQL.

sudo systemctl restart mysql

Nettoyer automatiquement les dossiers Junk et Trash

Pour supprimer les courriels du dossier Courrier indésirable pour tous les utilisateurs, vous pouvez exécuter la commande suivante

sudo doveadm expunge -A mailbox Junk all

Pour supprimer des courriels dans le dossier Corbeille, exécutez

sudo doveadm expunge -A mailbox Trash all

Je pense qu’il est préférable de nettoyer les courriels qui se trouvent dans le dossier Junk ou Trash depuis plus de 2 semaines, plutôt que de nettoyer tous les courriels.

sudo doveadm expunge -A mailbox Junk savedbefore 2w

Ajoutez ensuite une tâche cron pour automatiser le travail.

sudo crontab -e

Ajoutez la ligne suivante pour nettoyer les dossiers Junk et Trash tous les jours.

@daily doveadm expunge -A mailbox Junk savedbefore 2w;doveadm expunge -A mailbox Trash savedbefore 2w

Vous devez également autoriser l’utilisateur www-data à lire les fichiers de certificats en ajoutant la ligne suivante.

@daily setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Pour recevoir un rapport lorsqu’un travail Cron produit une erreur, vous pouvez ajouter la ligne suivante au-dessus de tous les travaux Cron.

MAILTO=”you@osnetworking.com”

Enregistrez et fermez le fichier. Vous avez terminé.

Changement du mot de passe de l'utilisateur dans PostfixAdmin

Les utilisateurs peuvent se connecter à PostfixAdmin à l’adresse https://postfixadmin.osnetworking.com/users/login.php, puis changer leur mot de passe.

Restreindre l'accès à Sendmail

Par défaut, tous les utilisateurs locaux peuvent utiliser le binaire sendmail pour envoyer des messages électroniques sortants.

Maintenant que votre serveur de messagerie utilise des boîtes aux lettres virtuelles, vous voudrez peut-être restreindre l’accès au binaire sendmail aux seuls utilisateurs locaux de confiance, afin qu’un utilisateur malveillant ne puisse pas l’utiliser pour envoyer un volume important de courriers électroniques et nuire à la réputation de votre serveur de messagerie. Modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante à la fin de ce fichier, afin que seuls les utilisateurs root, www-data et vmail puissent envoyer des courriers électroniques via sendmail.

Vous pouvez également ajouter d’autres noms d’utilisateur.

authorized_submit_users = root,www-data,vmail

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix.

sudo systemctl restart postfix

Comment faire face à une violation de données avec Alias

Si vous utilisez la même adresse électronique pour enregistrer des comptes sur tous les sites web et que les données sont divulguées à des tiers pour diverses raisons, de nombreux spammeurs achèteront la base de données d’adresses électroniques divulguées et enverront du spam.

Pour éviter que votre adresse électronique ne soit la cible de spammeurs, vous pouvez utiliser PostfixAdmin pour créer une adresse alias pour chaque site web.

Si les données sont divulguées à des tiers, vous pouvez supprimer l’alias et en créer un nouveau, afin de ne pas être spammé par ces tiers.

Comment mettre à jour PostfixAdmin

Parfois, il peut y avoir des bogues dans la version actuelle de PostfixAdmin qui peuvent être corrigés par une mise à niveau vers une nouvelle version. Il est très simple de mettre à jour PostfixAdmin.

Lorsqu’une nouvelle version de PostfixAdmin est disponible, vous devez

  • – Faites une copie du fichier /var/www/postfixadmin/config.local.php dans votre répertoire personnel.
  • – Supprimez le répertoire web PostfixAdmin (sudo rm /var/www/postfixadmin/ -r)
  • – Reprenez les étapes 2, 3, 5 et 10 de ce tutoriel. Lors de l’étape 5, copiez simplement le fichier local.php depuis votre répertoire personnel.

 À l’étape 10, le schéma de la base de données de PostfixAdmin sera automatiquement mis à jour lorsque vous visiterez la page web setup.php.

J’ai eu une fois un problème de boucle de connexion dans mon installation de PostfixAdmin et il a été résolu en mettant à jour PostfixAdmin vers la dernière version.