Comment installer et configurer Postfix sur Ubuntu 16.04

introduction

Postfix est un agent de transfert de courrier (MTA) open source populaire qui peut être utilisé pour router et remettre des courriers électroniques sur un système Linux. On estime qu’environ 25% des serveurs de messagerie publics sur Internet utilisent Postfix.

Dans ce guide, nous allons vous apprendre à utiliser rapidement Postfix sur un serveur Ubuntu 16.04.

Conditions préalables

Pour suivre ce guide, vous devez avoir accès à un utilisateur non root avec les privilèges + sudo +. Vous pouvez suivre notre Ubuntu 16.04 guide de configuration du serveur pour créer l’utilisateur nécessaire.

Afin de configurer correctement Postfix, vous aurez besoin d’un nom de domaine pleinement qualifié pointé sur votre serveur Ubuntu 16.04. Pour obtenir de l’aide sur la configuration de votre nom de domaine avec DigitalOcean, consultez his guide. Si vous envisagez d’accepter du courrier, vous devez vous assurer que vous disposez également d’un enregistrement MX pointant vers votre serveur de messagerie.

Pour les besoins de ce didacticiel, nous supposerons que vous configurez un hôte dont le nom de domaine complet est + mail.example.com +.

Étape 1: Installez Postfix

Postfix est inclus dans les référentiels par défaut d’Ubuntu. L’installation est donc extrêmement simple.

Pour commencer, mettez à jour votre cache de paquet local + apt + puis installez le logiciel. Nous allons passer la variable d’environnement + DEBIAN_PRIORITY = low + dans notre commande d’installation afin de répondre à quelques invites supplémentaires:

sudo apt-get update
sudo DEBIAN_PRIORITY=low apt-get install postfix

Utilisez les informations suivantes pour remplir correctement vos invites pour votre environnement:

  • * Type général de configuration du courrier? *: Pour cela, nous choisirons * Site Internet * car cela correspond à nos besoins en infrastructure.

  • * Nom de messagerie système *: Il s’agit du domaine de base utilisé pour créer une adresse électronique valide lorsque seule la partie compte de l’adresse est indiquée. Par exemple, le nom d’hôte de notre serveur est + mail.exemple.com +, mais nous voudrons probablement définir le nom de messagerie du système sur + exemple.com + afin que, compte tenu du nom d’utilisateur + utilisateur1 +, Postfix utilisera l’adresse + utilisateur1 @ exemple.com +.

  • * Destinataire de courrier racine et postmaster *: il s’agit du compte Linux sur lequel seront envoyés les messages adressés à + ​​root @ + et + postmaster @ +. Utilisez votre compte principal pour cela. Dans notre cas, * Sammy *.

  • * Autres destinations pour accepter le courrier *: Ceci définit les destinataires que cette instance Postfix acceptera. Si vous devez ajouter d’autres domaines que ce serveur sera responsable de la réception, ajoutez-les ici, sinon, la valeur par défaut devrait fonctionner correctement.

  • * Forcer les mises à jour synchrones sur la file d’attente de courrier? *: Puisque vous utilisez probablement un système de fichiers journalisé, acceptez * Non * ici.

  • * Réseaux locaux *: Ceci est une liste des réseaux pour lesquels votre serveur de messagerie est configuré pour relayer des messages. La valeur par défaut devrait fonctionner pour la plupart des scénarios. Si vous choisissez de le modifier, veillez à être très restrictif en ce qui concerne la portée du réseau.

  • * Limite de taille de boîte aux lettres *: Ceci peut être utilisé pour limiter la taille des messages. Le réglage sur «0» désactive toute restriction de taille.

  • * Caractère d’extension d’adresse locale *: il s’agit du caractère qui peut être utilisé pour séparer la partie régulière de l’adresse d’une extension (utilisée pour créer des alias dynamiques).

  • * Protocoles Internet à utiliser *: Choisissez si vous souhaitez restreindre la version IP prise en charge par Postfix. Nous choisirons «tous» pour nos besoins.

Pour être explicite, voici les paramètres que nous allons utiliser pour ce guide:

  • * Type général de configuration du courrier? *: Site Internet

  • * Nom de messagerie système *: exemple.com (pas mail.exemple.com)

  • * Destinataire du courrier root et postmaster *: sammy

  • * Autres destinations pour accepter le courrier pour *: $ myhostname, example.com, mail.example.com, localhost.example.com, localhost

  • * Forcer les mises à jour synchrones sur la file d’attente de courrier? *: Non

  • * Réseaux locaux *: 127.0.0.0/8 [::ffff:127.0.0.0HER/104 [:: 1] / 128

  • * Limite de taille de boîte aux lettres *: 0

  • * Caractère d’extension d’adresse locale *:

  • * Protocoles Internet à utiliser *: tous

Si vous avez besoin de réajuster ces paramètres, vous pouvez le faire en tapant:

sudo dpkg-reconfigure postfix

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

Lorsque vous avez terminé, nous pouvons maintenant faire un peu plus de configuration pour configurer notre système comme nous le voudrions.

Étape 2: Modifiez la configuration de Postfix

Ensuite, nous pouvons ajuster certains paramètres pour lesquels le package ne nous a pas demandé.

Pour commencer, nous pouvons définir la boîte aux lettres. Nous utiliserons le format * Maildir *, qui sépare les messages en fichiers individuels qui sont ensuite déplacés entre les répertoires en fonction de l’action de l’utilisateur. L’autre option est le format * mbox * (que nous n’aborderons pas ici), qui stocke tous les messages dans un seul fichier.

Nous allons définir la variable + home_mailbox + sur + Maildir / +, ce qui créera une structure de répertoire sous ce nom dans le répertoire de base de l’utilisateur. La commande + postconf + peut être utilisée pour interroger ou définir les paramètres de configuration. Configurez + home_mailbox + en tapant:

sudo postconf -e 'home_mailbox= Maildir/'

Ensuite, nous pouvons définir l’emplacement de la table + virtual_alias_maps +. Cette table mappe des comptes de messagerie arbitraires sur des comptes système Linux. Nous allons créer cette table dans + / etc / postfix / virtual. De nouveau, nous pouvons utiliser la commande + postconf +:

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

Étape 3: mapper des adresses de messagerie sur des comptes Linux

Ensuite, nous pouvons configurer le fichier de cartes virtuelles. Ouvrez le fichier dans votre éditeur de texte:

sudo nano /etc/postfix/virtual

La table de cartes d’alias virtuels utilise un format très simple. Sur la gauche, vous pouvez répertorier toutes les adresses pour lesquelles vous souhaitez accepter un courrier électronique. Ensuite, séparés par des espaces, entrez l’utilisateur Linux auquel vous souhaitez que ce courrier soit remis.

Par exemple, si vous souhaitez accepter les e-mails sur + contact @ example.com + et + admin @ example.com + et que vous souhaitez que ces e-mails soient livrés à l’utilisateur Linux '+ sammy + `, vous pouvez configurer votre système. fichier comme ceci:

/ etc / postfix / virtual

contact@ sammy
admin@ sammy

Après avoir mappé toutes les adresses sur les comptes de serveur appropriés, enregistrez et fermez le fichier.

Nous pouvons appliquer le mappage en tapant:

sudo postmap /etc/postfix/virtual

Redémarrez le processus Postfix pour vous assurer que toutes nos modifications ont été appliquées:

sudo systemctl restart postfix

Étape 4: Ajustez le pare-feu

Si vous utilisez le pare-feu UFW, tel que configuré dans le guide de configuration initiale du serveur, nous devrons autoriser une exception pour Postfix.

Vous pouvez autoriser les connexions au service en tapant:

sudo ufw allow Postfix

Le composant serveur Postfix est installé et prêt. Ensuite, nous allons configurer un client capable de gérer le courrier que Postfix traitera.

Étape 5: Configuration de l’environnement pour qu’il corresponde à l’emplacement du courrier

Avant d’installer un client, nous devons nous assurer que notre variable d’environnement + MAIL + est définie correctement. Le client inspectera cette variable pour déterminer où rechercher le courrier de l’utilisateur.

Pour que la variable soit définie quel que soit le mode d’accès à votre compte (via + ssh +, + su +, + su - +, + + sudo + , etc.), nous devons définir la variable dans un quelques endroits différents. Nous allons l’ajouter à `+ ​​/ etc / bash.bashrc + et à un fichier situé dans + / etc / profile.d + pour nous assurer que chaque utilisateur l’a configuré.

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 en cours, vous pouvez utiliser le fichier + / etc / profile.d / mail.sh +:

source /etc/profile.d/mail.sh

Étape 6: Installer et configurer le client de messagerie

Pour interagir avec le courrier en cours de livraison, nous allons installer le paquetage + s-nail +. Il s’agit d’une variante du client BSD + xmail +, riche en fonctionnalités, capable de gérer correctement le format Maildir et, pour l’essentiel, compatible avec les versions antérieures. La version GNU de + mail + a quelques limitations frustrantes, telles que toujours sauvegarder les messages lus au format mbox quel que soit le format source.

Pour installer le paquet + s-nail +, tapez:

sudo apt-get install s-nail

Nous devrions ajuster quelques paramètres. Ouvrez le fichier + / etc / s-nail.rc + dans votre éditeur:

sudo nano /etc/s-nail.rc

Vers le bas du fichier, ajoutez les options suivantes:

/etc/s-nail.rc

. . .
set emptystart
set folder=Maildir
set record=+sent

Cela permettra au client de s’ouvrir même avec une boîte de réception vide. Il définira également le répertoire + Maildir sur la variable interne` + folder`, puis l’utilisera pour créer un fichier + sent + mbox, afin de stocker les courriers envoyés.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Étape 7: initialiser le Maildir et tester le client

Maintenant, nous pouvons tester le client.

Initialisation de la structure du répertoire

Le moyen le plus simple de créer la structure Maildir dans notre répertoire personnel consiste à nous envoyer un courrier électronique. Nous pouvons le faire avec la commande + mail +. Étant donné que le fichier + sent + ne sera disponible qu’une fois le Maildir créé, nous devrions désactiver l’écriture dans celui-ci pour notre courrier électronique initial. Nous pouvons le faire en passant l’option + -Snorecord +.

Envoyez le courrier électronique en transmettant une chaîne à la commande + mail +. Ajustez la commande pour marquer votre utilisateur Linux comme destinataire:

echo 'init' | mail -s 'init' -Snorecord

Vous devriez obtenir la réponse suivante:

OutputCan't canonicalize "/home//Maildir"

Ceci est normal et ne sera affiché que lors de ce premier message. Nous pouvons vérifier que le répertoire a bien été créé en recherchant notre répertoire + ~ / Maildir +:

ls -R ~/Maildir

Vous devriez voir que la structure de répertoire a été créée et qu’un nouveau fichier de message se trouve dans le répertoire + ~ / Maildir / new +:

Output/home//Maildir/:
cur  new  tmp

/home//Maildir/cur:

/home//Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com

/home//Maildir/tmp:

Il semble que notre courrier ait été livré.

Gestion du courrier avec le client

Utilisez le client pour vérifier votre courrier:

mail

Vous devriez voir votre nouveau message en attente:

Outputs-nail version v14.8.6.  Type ? for help.
"/home/sammy/Maildir": 1 message 1 new
>N  1 [email protected]     Wed Dec 31 19:00   14/369   init

Appuyez simplement sur * ENTER * pour afficher votre message:

Output[-- Message  1 -- 14 lines, 369 bytes --]:
From [email protected] Wed Dec 31 19:00:00 1969
Date: Fri, 13 May 2016 18:07:49 -0400
To: [email protected]
Subject: init
Message-Id: <[email protected]>
From: [email protected]

init

Vous pouvez revenir à votre liste de messages en tapant * h *:

h
Outputs-nail version v14.8.6.  Type ? for help.
"/home/sammy/Maildir": 1 message 1 new
>R  1 [email protected]     Wed Dec 31 19:00   14/369   init

Comme ce message n’est pas très utile, nous pouvons le supprimer avec * d *:

d

Quittez pour revenir au terminal en tapant * q *:

q

Envoi de courrier avec le client

Vous pouvez tester l’envoi de courrier en tapant un message dans un éditeur de texte:

nano ~/test_message

À l’intérieur, entrez du texte que vous souhaitez envoyer par courrier électronique:

~ / test_message

Hello,

This is a test.  Please confirm receipt!

En utilisant la commande + cat +, nous pouvons diriger le message vers le processus + mail +. Cela enverra le message par défaut à votre utilisateur Linux. Vous pouvez ajuster le champ “De” avec l’indicateur + -r + si vous souhaitez modifier cette valeur en quelque chose d’autre:

cat ~/ | mail -s '' -r  @

Les options ci-dessus sont:

  • + -s +: la ligne d’objet de l’e-mail

  • + -r +: modification facultative du champ "De:" de l’e-mail. Par défaut, l’utilisateur Linux sur lequel vous êtes connecté sera utilisé pour renseigner ce champ. L’option + -r + vous permet de remplacer ceci.

  • + user @ email.com +: Le compte auquel envoyer l’e-mail. Changez-le pour qu’il soit un compte valide auquel vous avez accès.

Vous pouvez voir vos messages envoyés dans votre client + mail +. Redémarrez le client interactif en tapant:

mail

Ensuite, affichez vos messages envoyés en tapant:

file +sent

Vous pouvez gérer le courrier envoyé à l’aide des mêmes commandes que pour le courrier entrant.

Conclusion

Vous devriez maintenant avoir configuré Postfix sur votre serveur Ubuntu 16.04. La gestion des serveurs de messagerie peut être une tâche difficile pour les administrateurs débutants, mais avec cette configuration, vous devez disposer d’une fonctionnalité de messagerie de base MTA pour vous aider à démarrer.