Tutorial

Comment installer et configurer Postfix sur Ubuntu 20.04

UbuntuEmailUbuntu 20.04

Une version précédente de ce tutoriel a été rédigée par Justin Ellingwood

Introduction

Postfix est un Mail Transfer Agent (Agent de transfert de courrier électronique - MTA) open-source populaire qui peut être utilisé pour acheminer et distribuer le courrier électronique sur un système Linux. On estime qu'environ 25 % des serveurs de courrier électronique publics sur Internet fonctionnent avec Postfix.

Dans ce guide, vous allez apprendre à installer et configurer Postfix sur un serveur Ubuntu 20.04. Ensuite, vous vérifierez que Postfix est capable d'acheminer correctement le courrier électronique en installant s-nail, un Mail User Agent (Agent utilisateur de courrier électronique - MUA), également connu sous le nom de client de messagerie électronique.

Veuillez noter que l'objectif de ce tutoriel est de vous aider à rendre Postfix rapidement opérationnel avec seulement quelques fonctionnalités de courrier électronique. Vous n'aurez pas de serveur de messagerie électronique complet à la fin de ce guide, mais vous disposerez de certains des éléments fondamentaux d'une telle installation pour vous aider à démarrer.

Conditions préalables

Pour suivre ce guide, vous aurez besoin des éléments suivants :

  • Un serveur fonctionnant sous Ubuntu 20.04, utilisé comme serveur de courrier électronique Postfix. Ce serveur doit avoir un non-root user avec des privilèges sudo et un pare-feu configuré avec UFW. Vous pouvez suivre notre guide de configuration initiale du serveur Ubuntu 20.04 pour le mettre en place. 
  • Un nom de domaine pleinement qualifié pointé vers votre serveur Ubuntu 20.04. Vous pouvez trouver de l'aide sur la configuration de votre nom de domaine avec DigitalOcean en suivant notre documentation sur les domaines et les réseaux DNS. Sachez que si vous planifiez d'accéder à votre courrier électronique à partir d'un emplacement externe, vous devrez vous assurer que vous disposez également d'un enregistrement MX pointant vers votre serveur de messagerie.

Notez que ce tutoriel suppose que vous configurez un hôte qui a le FQDN de mail.example.com. Si nécessaire, veillez à changer example.com ou mail.example.com pour refléter votre propre FQDN.

Étape 1 — Installer Postfix

Postfix est inclus dans les référentiels par défaut d'Ubuntu, vous pouvez donc l'installer avec APT.

Pour commencer, mettez à jour votre cache de paquets apt :

  • sudo apt update

Ensuite, installez le package postfix avec la commande suivante. Remarquez que nous passons ici la variable environnementale DEBIAN_PRIORITY=low dans cette commande d'installation. Le processus d'installation vous demandera alors de configurer certaines options supplémentaires :

  • sudo DEBIAN_PRIORITY=low apt install postfix

Ce processus d'installation ouvrira une série d'invites interactives. Pour les besoins de ce tutoriel, utilisez les informations suivantes pour remplir vos invites :

  • General type of mail configuration?​​​​​​ : Pour cela, choisissez Internet Site, car cela correspond à nos besoins en matière d'infrastructure.
  • System mail name : c'est le domaine de base utilisé pour construire une adresse électronique valide lorsque seule la partie compte de l'adresse est indiquée. Par exemple, disons que le nom d'hôte de votre serveur est mail.example.com. Vous voudrez probablement définir le system mail name (nom de courrier du système) comme suit : example.com afin que, compte tenu du nom d'utilisateur user1, Postfix utilise l'adresse user1@example.com.
  • Root and postmaster mail recipient : Il s'agit du compte Linux qui fera suivre le courrier adressé à root@ et postmaster@. Utilisez pour cela votre compte principal. Dans le cas présent, il s'agit de sammy. 
  • Other destinations to accept mail for​​​​​​ : Ceci définit les destinations du courrier que cette instance de Postfix acceptera. Si vous avez besoin d'ajouter d'autres domaines que ce serveur sera chargé de recevoir, ajoutez-les ici. Dans le cas contraire, le domaine par défaut sera suffisante.
  • Force synchronous updates on mail queue? : Puisque vous utilisez probablement un système de fichiers journalisés, acceptez No ici.
  • Local Networks : Il s'agit de la liste des réseaux pour lesquels votre serveur de messagerie est configuré en vue de la retransmission des messages. La valeur par défaut fonctionnera pour la plupart des scénarios. Si vous choisissez de la modifier, veillez toutefois à être très restrictif en ce qui concerne la portée du réseau.
  • Mailbox size limit : Elle peut être utilisée pour limiter la taille des messages. En la mettant à 0, on désactive toute restriction de taille.
  • Local address extension character : C'est le caractère qui peut être utilisé pour séparer la partie régulière de l'adresse d'une extension (utilisé pour créer des alias dynamiques). La valeur par défaut, +, sera utilisée pour les besoins de ce tutoriel.
  • Internet protocols to use : Choisissez de restreindre ou non la version IP que Postfix prend en charge. Pour les besoins de ce tutoriel, choisissez all.

Pour être explicite, voici les paramètres utilisés dans ce guide :

  • General type of mail configuration?​​​​​​ : Internet Site
  • System mail name : example.com (pas mail.example.com) 
  • Root and postmaster mail recipient : Le nom d'utilisateur de votre compte Linux principal (sammy dans nos exemples) 
  • Other destinations to accept mail for : $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • Force synchronous updates on mail queue? : No
  • Local networks : 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Mailbox size limit : 0
  • Local address extension character : +
  • Internet protocols to use : all

Note : Si vous avez besoin de modifier ces paramètres ultérieurement, vous pourrez le faire en tapant :

  • sudo dpkg-reconfigure postfix

Les invites seront pré-remplies avec vos réponses précédentes.

Lorsque le processus d'installation est terminé, vous êtes prêt à effectuer quelques mises à jour de votre configuration Postfix.

Étape 2 - Modification de la configuration de Postfix

Vous pouvez maintenant ajuster certains paramètres que le processus d'installation du package ne vous a pas demandés. De nombreux paramètres de configuration de Postfix sont définis dans le fichier /etc/postfix/main.cf. Plutôt que de modifier directement ce fichier, vous pouvez utiliser la commande postconf de Postfix pour interroger ou définir les paramètres de configuration.

Pour commencer, définissez l'emplacement de la messagerie de votre non-root user Ubuntu. Dans ce guide, nous utiliserons le format Maildir qui sépare les messages en fichiers individuels ; ceux-ci sont ensuite déplacés entre les répertoires en fonction de l'action de l'utilisateur. L'autre option (qui n'est pas couverte par ce guide) est le format mbox, qui stocke tous les messages dans un seul fichier. 

Définissez la variable home_mailbox sur Maildir/. Plus tard, vous créerez une structure de répertoires sous ce nom dans le répertoire principal de votre utilisateur. Configurez home_mailbox en tapant :

  • sudo postconf -e 'home_mailbox= Maildir/'

Ensuite, fixez l'emplacement de virtual_alias_maps,qui met en correspondance des comptes de courrier électronique arbitraires avec des comptes du système Linux. Exécutez la commande suivante, qui associe l'emplacement du tableau à un fichier de base de données de hachage nommé /etc/postfix/virtual : 

  • sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Maintenant que vous avez défini l'emplacement du fichier de cartes virtuelles dans votre fichier main.cf vous pouvez créer le fichier lui-même et commencer à associer les comptes de courrier électronique aux comptes d'utilisateurs sur votre système Linux. Créez le fichier avec votre éditeur de texte préféré ; dans cet exemple, nous utiliserons nano : 

  • sudo nano /etc/postfix/virtual

Indiquez les adresses pour lesquelles vous souhaitez accepter le courrier électronique, suivies d'un espace et de l'utilisateur Linux auquel vous souhaitez que le courrier soit distribué.

Par exemple, si vous souhaitez accepter un courrier électronique à contact@example.com et admin@example.com et que vous aimeriez que ces courriels soient transmis à l'utilisateur Linux sammy , vous pouvez configurer votre fichier comme suit : 

/etc/postfix/virtual
contact@example.com sammy
admin@example.com sammy

Une fois que vous avez mis en correspondance toutes les adresses avec les comptes de serveur appropriés, enregistrez et fermez le fichier. Si vous avez utilisé nano, faites-le en appuyant sur CTRL+X, Y, puis sur ENTER.

Appliquez la cartographie en tapant :

  • sudo postmap /etc/postfix/virtual

Relancez le processus Postfix pour vous assurer que tous vos changements ont été appliqués :

  • sudo systemctl restart postfix

En supposant que vous ayez suivi le guide prérequis de configuration initiale du serveur, vous aurez configuré un pare-feu avec UFW. Ce pare-feu bloquera par défaut les connexions externes aux services de votre serveur, sauf si ces connexions sont explicitement autorisées. Vous devrez donc ajouter une règle de pare-feu si vous souhaitez autoriser une exception pour Postfix.

Vous pouvez autoriser les connexions au service en tapant :

  • sudo ufw allow Postfix

Avec cela, Postfix est configuré et prêt à accepter des connexions externes. Cependant, vous n'êtes pas encore prêt à le tester avec un client de messagerie. Avant de pouvoir installer un client et l'utiliser pour interagir avec le courrier livré à votre serveur, vous devrez apporter quelques modifications à la configuration de votre serveur Ubuntu.

Étape 3 - Installation du client de messagerie et initialisation de la structure Maildir

Afin d'interagir avec le courrier distribué, cette étape vous guidera à travers le processus d'installation du package snail. Ceci est une variante riche en fonctionnalités du client BSD xmail qui peut gérer correctement le format Maildir.

Toutefois, avant d'installer le client, il serait prudent de s'assurer que votre variable d'environnement MAIL est correctement définie. s-nail va rechercher cette variable pour savoir où trouver le courrier pour votre utilisateur.

Pour s'assurer que la variable MAIL est définie quelle que soit la manière dont vous accédez à votre compte - que ce soit par ssh, su, su -, ou sudo, par exemple, vous devrez définir la variable dans le fichier /etc/bash.bashrc et l'ajouter à un fichier dans /etc/profile.d afin de vérifier qu'il est configuré par défaut pour tous les utilisateurs.

Pour ajouter la variable à ces fichiers, tapez :

  • echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

Pour lire la variable dans votre session actuelle, vous devez vous procurer le fichier /etc/profile.d/mail.sh : 

  • source /etc/profile.d/mail.sh

Une fois cette opération terminée, installez le client s-nail de messagerie avec APT :

  • sudo apt install s-nail

Avant de lancer le client, il y a quelques paramètres que vous devez ajuster. Ouvrez le fichier /etc/s-nail.rc dans votre éditeur :

  • sudo nano /etc/s-nail.rc

Au bas du fichier, ajoutez les options suivantes :

/etc/s-nail.rc
. . .
set emptystart
set folder=Maildir
set record=+sent

Voici ce que font ces lignes :

  • set emptystart : permet au client de s'ouvrir même avec une boîte de réception vide
  • set folder=Maildir : définit le répertoire Maildir sur la variable interne de folder
  • set record=+sent crée un fichier mbox sent pour stocker le courrier envoyé dans n'importe quel répertoire défini comme variable de folder, dans ce cas Maildir

Enregistrez et fermez le fichier lorsque vous avez terminé. Vous êtes maintenant prêt à initialiser la structure Maildir de votre système.

Un moyen rapide de créer la structure Maildir dans votre répertoire personnel consiste à de vous envoyer un courriel avec la commande s-nail. Comme le fichier sent ne sera disponible qu'une fois le Maildir créé, vous devez désactiver l'écriture dans ce mail initial. Faites-le en passant l'option -Snorecord.

Envoyez le courriel en envoyant une chaîne de caractères à la commande s-nail. Ajustez la commande pour marquer votre utilisateur Linux comme destinataire :

  • echo 'init' | s-nail -s 'init' -Snorecord sammy

Note : Vous pouvez obtenir la réponse suivante :

Output
Can't canonicalize "/home/sammy/Maildir"

Ceci est normal et ne peut apparaître que lors de l'envoi de ce premier message.

Vous pouvez vérifier que le répertoire a été créé en recherchant votre~répertoire ~/Maildir :

  • ls -R ~/Maildir

Vous verrez que la structure de répertoires a été créée et qu'un nouveau fichier de message se trouve dans le répertoire ~/Maildir/new :

Output
/home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp:

Maintenant que la structure de répertoires a été créée, vous êtes prêt à tester le client s-nail en visualisant le message init que vous avez envoyé et en envoyant un message à une adresse électronique externe.

Étape 5 - Test du client

Pour ouvrir le client, lancez la commande s-nail :

  • s-nail

Sur votre console, vous verrez une boîte de réception rudimentaire avec le message init en attente :

Output
s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com 2020-05-19 15:40 14/392 init

Appuyez sur ENTER pour afficher le message :

Output
[-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

Vous pouvez revenir à la liste des messages en tapant h, puis sur ENTER :

  • h
Output
>R 1 sammy@example.com 2020-05-19 15:40 14/392 init

Remarquez que le message a maintenant un état R, indiquant qu'il a été lu.

Ce message n'étant pas très utile, vous pouvez le supprimer en appuyant sur d, puis sur ENTER :

  • d

Pour revenir au terminal, tapez q et ensuite ENTER : 

  • q

En guise de test final, vérifiez si s-nail est capable d'envoyer correctement des messages électroniques. Pour ce faire, vous pouvez introduire le contenu d'un fichier texte dans le processus s-nail, comme vous l'avez fait avec le message init que vous avez envoyé à l'étape précédente.

Commencez par écrire un message test dans un éditeur de texte :

  • nano ~/test_message

À l'intérieur, entrez un texte que vous souhaitez envoyer :

~/test_message
Hello,

This is a test.  Please confirm receipt!

Enregistrez et fermez le fichier après avoir écrit votre message.

Ensuite, utilisez la commande cat pour transmettre le message au processus s-nail. Vous pouvez le faire avec l'exemple suivant, qui utilise ces options :

  • -s : Ceci définit l'objet du courriel
  • -r : Une modification facultative du champ « De : » du courriel. Par défaut, l'utilisateur Linux avec lequel vous êtes connecté sera utilisé pour remplir ce champ. L'option -r vous permet de remplacer cette adresse par une adresse valide, telle que celle que vous avez définie dans le fichier /etc/postfix/virtual. À titre d'exemple, la commande suivante utilise contact@example.com

Veillez également à remplacer user@email.com par une adresse électronique valide à laquelle vous avez accès : 

  • cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com

Ensuite, naviguez jusqu'à la boîte de réception de l'adresse électronique à laquelle vous avez envoyé le message. Vous y verrez presque immédiatement votre message en attente.

Note : Si le message n'est pas dans votre boîte de réception, il a peut-être été acheminé vers votre dossier d'indésirables.

Vous pouvez consulter vos messages envoyés dans votre client s-nail. Relancez le client interactif :

  • s-nail

Depuis le client de messagerie, visualisez vos messages envoyés en tapant :

  • file +sent

Vous verrez une sortie de ce type :

Output
+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line

Vous pouvez gérer le courrier envoyé en utilisant les mêmes commandes que celles que vous utilisez pour le courrier entrant.

Conclusion

Vous avez maintenant configuré Postfix sur votre serveur Ubuntu 20.04. La gestion des serveurs de courrier électronique peut être une tâche difficile pour les nouveaux administrateurs système, mais avec cette configuration, vous devriez disposer de suffisamment de fonctionnalités de courrier électronique MTA pour vous lancer.

0 Comments

Creative Commons License