15/11/2024

Services

Configurer postfix pour envoyer des e-mails avec Gmail

I. Présentation

Bonjour à tous, dans ce tutoriel, nous allons voir comment envoyer un mail avec Postfix. Cela peut être très utile notamment pour envoyer des mails de notification via des scripts bash. Pour cela, rien de trop compliqué, il y a des paquets à installer et quelques fichiers de configuration à modifier.

L'avantage de ce mécanisme est que nous allons utiliser le serveur SMTP de Gmail (Google) en envoyant des mails depuis notre vrai adresse e-mail GMAIL, ce qui nous permettra d'arriver presque à coup sûr dans la boite de réception "principale" et non dans les mails indésirables du destinataire.

Toutes les commandes ci-dessous seront exécutées à l'aide de l'utilisateur root. 

Article mis à jour le 29/03/2021

II. Installation des paquets

On commence par une mise à jour des paquets du système :

apt-get update

Nous allons maintenant installer les paquets suivants :

apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules

Les paquets : postfix c’est postfix, mailutils permet la gestion des courriels par la console, libsasl2-2 est l’implémentation de l’interface de programmation de Cyrus SASL, ca-certificates contient des fichiers PEM de certificats CA, et pour finir libsasl2-modules contient des modules pour le paquet libsasl2-2.

Lors de l’installation, il faut choisir Site Internet et ensuite laissez le hostname par défaut (ceci n’a pas d’importance, vu que nous créons simplement un relai SMTP vers Gmail).

N'oubliez pas d'activer le démarrage de postfix au lancement du système (dans le cas où votre OS Linux ne le ferait pas automatiquement comme Kali Linux...) à l'aide de la commande suivante :

systemctl enable postfix

III. Configuration

Nous allons maintenant nous occuper de la configuration. On ouvre le fichier de configuration de Postfix :

nano /etc/postfix/main.cf

On modifie la ligne :

relayhost =

Par :

relayhost = [smtp.gmail.com]:587

Cela sert à indiquer que nous utiliserons le SMTP de Gmail.  Ensuite, en dessous à la fin du fichier, on ajoute les lignes suivantes :

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

Cela sert à activer l’authentification, à indiquer où se trouve le fichier sasl_passwd que nous créerons plus tard, à interdire le mode anonyme, à indiquer où se trouve le certificat, et pour finir à utiliser le TLS. On enregistre et on quitte.

IV. Authentification avec un mot de passe d'application

Depuis quelques années maintenant, Google a introduit une nouvelle fonctionnalité : "les mots de passe d'application". Ils permettent de créer un mot de passe unique valable une fois et seulement pour une machine, sans devoir entrer votre vrai mot de passe de votre compte Gmail.

Note : Un mot de passe d'application est un code secret à 16 chiffres grâce auquel un appareil ou une application moins sécurisés peuvent accéder à votre compte Google. Les mots de passe d'application ne peuvent être utilisés qu'avec les comptes pour lesquels la validation en deux étapes est activée (2FA). 

Naviguez vers l'URL suivante : https://myaccount.google.com/security

Puis, cliquez sur "Mots de passe d'applications" :

Renseignez un label pour votre futur mot de passe, puis cliquez sur générer.

Votre mot de passe composé de 16 caractères sera alors affiché à l'écran. Gardez-le bien précieusement, car une fois que vous fermerez cette fenêtre, vous ne pourrez plus le consulter.

On va maintenant préciser l’adresse Gmail "d’où nous voulons que les mails partent". Pour cela, il faut créer le fichier suivant :

nano /etc/postfix/sasl_passwd

Dans ce fichier vide, on ajoute les lignes suivantes :

[smtp.gmail.com]:587 [email protected]:MDP_Application

Comme vous l’aurez compris, on remplace USERNAME par notre nom d’utilisateur gmail.com et PASSWORD par notre mot de passe. Au début on laisse le SMTP de Gmail. On enregistre et on quitte. On attribue maintenant les droits pour pouvoir utiliser ce fichier :

chmod 400 /etc/postfix/sasl_passwd

On exécute un postmap sur le fichier : cela permettra de créer une sorte de base de données.

postmap /etc/postfix/sasl_passwd

Créer un certificat .pem par l'intermédiaire de cette commande (si vous n'en avez pas déjà un) :

cd /etc/ssl/certs

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key-for-smtp-gmail.pem -out cert-for-smtp-gmail.pem

On redirige ensuite le certificat vers /etc/postfix/cacert.pem :

cat /etc/ssl/certs/cert-for-smtp-gmail.pem | sudo tee -a /etc/postfix/cacert.pem

Enfin, relancez postfix pour que tous nos changements soient pris en compte et affichez son "status" afin de vérifier que celui-ci est bien démarré et que postfix ne présente pas d'erreur.

/etc/init.d/postfix reload
/etc/init.d/postfix status

V. Test

Pour tester, nous pouvons exécuter la commande suivante :

echo "Test mail from postfix" | mail -s "Test Postfix" [email protected]

Remplacez [email protected] par l’adresse mail de la personne qui recevra le mail. Dans les messages envoyés, dans votre adresse gmail.com, vous devriez voir que vous avez envoyé un mail dont l’objet est "Test Postfix", le contenu du mail est "Test mail from postfix", le destinataire est [email protected]. Le destinataire doit normalement avoir reçu votre mail.

Version initiale de l'article rédigée par Bastien Champain.

author avatar
Geoffrey Sauvageot-Berland Ingénieur Cybersécurité
Ingénieur diplômé par l’état en Informatique et Cybersécurité. Généraliste, à l'origine administrateur systèmes et réseaux, j’occupe actuellement un poste d’auditeur en sécurité offensive. J’apprécie également la programmation/automatisation. Fondateur du blog : "Le Guide du SecOps", anciennement "Le Guide du SysOps"
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

43 commentaires sur “Configurer postfix pour envoyer des e-mails avec Gmail

  • Je vous remercie pour ce tuto ainsi que pour vos commentaire j’arrive enfin a envoyer des mails avec echo.

    il ne me reste plus que 2 soucis, le premier et que le mails arrive dans les spams et je ne sais pourquoi.
    le deuxieme et que je ne sais pas comment relayer les mails qui parte de mon automate et qui ce trouve sur le meme reseau.

    je suis sur un reseau ou j’ai un automate et un raspbery, mon automate ne sais pas crypter les mails, j’ai donc installer postfix sur un raspbery, mon automate et le Rpi ont une IP fixe je sais envoyer les mails vers L’IP de mon Rpi mais je ne vois pas comment faire pour les relayer et les envoyer.

    Répondre
  • Bonjour merci pour ce tuto
    une question si je remplace le SMTP de google par celui de mon infra sa marche ou j’ai une manip suplementaire a faire?

    Répondre
    • Bonjour,
      Il faut modifier également le port si cela est nécessaire, en fait ça va dépendre de la configuration de ton serveur de messagerie mais la configuration finale devrait ressembler à celle pour Gmail.
      Cordialement, Florian

      Répondre
  • Bonsoir je suis nouveau dans le domaine informatique est ce qu’une personne qui pourrait m’expliquer le fonctionnement merci

    Répondre
  • Tutoriel toujours valable en 2021.

    Je rajouterai une petite précision : Lors de l’édition du fichier nano /etc/postfix/sasl_passwd

    Générez un mot de passe d’application afin de ne pas avoir à affaiblir la sécurité de votre compte gmail (https://support.google.com/accounts/answer/6010255#zippy=%2Csi-le-param%C3%A8tre-autoriser-les-applications-moins-s%C3%A9curis%C3%A9es-est-activ%C3%A9-pour-votre-compte)

    Pour ce faire utiliser le lien suivant : https://support.google.com/accounts/answer/185833

    Je pense que cela restera valable un certains temps, car c’est un dispositif très sécurisé.

    Répondre
  • Bonjour, je suis bloqué a la commande postmap command not found. Que faire ?

    Répondre
  • Parfait ! Juste deux précisions minimes.

    Premièrement, pour avoir un fichier /etc/postfix/main.cf, le mieux est de taper, à l’étape III et si vous avez raté le truc à la post-installation de postfix :
    sudo dpkg-reconfigure postfix

    et à un moment, le programme dpkg demande « Please select the mail configuration type that best meets your needs », il faut choisir l’option « Internet Site », ce qui vous génère un main.cf tout propre où il faut juste rajouter les infos indiquées dans ce tuto après avoir copié ce fichier à l’endroit indiqué avec :
    sudo cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf

    De plus, dans les préférences Google, il faut activer l’authentification en deux étapes afin d’accéder aux mots de passe des applications

    Sinon, ça marche au poil ! Un grand merci pour cet excellent tuto.

    Répondre
  • ⢀⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
    ⠸⡇⠀⠿⡀⠀⠀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠑⢄⣠⠾⠁⣀⣄⡈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⢀⡀⠁⠀⠀⠈⠙⠛⠂⠈⣿⣿⣿⣿⣿⠿⡿⢿⣆⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀⠀⢻⣿⣿⠭⢤⣴⣦⣤⣹⠀⠀⠀⢀⢴⣶⣆
    ⠀⠀⢀⣾⣿⣿⣿⣷⣮⣽⣾⣿⣥⣴⣿⣿⡿⢂⠔⢚⡿⢿⣿⣦⣴⣾⠁⠸⣼⡿
    ⠀⢀⡞⠁⠙⠻⠿⠟⠉⠀⠛⢹⣿⣿⣿⣿⣿⣌⢤⣼⣿⣾⣿⡟⠉⠀⠀⠀⠀⠀
    ⠀⣾⣷⣶⠇⠀⠀⣤⣄⣀⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
    ⠀⠉⠈⠉⠀⠀⢦⡈⢻⣿⣿⣿⣶⣶⣶⣶⣤⣽⡹⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠉⠲⣽⡻⢿⣿⣿⣿⣿⣿⣿⣷⣜⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣷⣶⣮⣭⣽⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⣀⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
    ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠻⠿⠿⠿⠿⠛⠉

    Merci bg

    Répondre
  • Bien le bonjour,

    Depuis le 30/05/22, il n’y a plus « Mot de pass des applications ».
    Cette option merveilleuse a été désactivée… Du coup, ça ne fonctionne plus…

    J’obtiens même une erreur comme quoi le Host ou le Domain n’est pas trouvé…

    Si l’un de vous trouve la solution pour « contourner » cette restriction, je suis preneur.

    Je n’ai plus aucun mail d’alertes…

    Répondre
    • Bonjour,

      Et mince… c’est bien dommage car cette option était juste parfaite.

      Essayer de demander sur des forums spécialisés comme https://unix.stackexchange.com/, sinon essayer de fouiller dans les paramètres de Google.

      Si jamais vous trouvez la solution au problème, n’hésitez pas à répondre à ce commentaire 😉

      Répondre
      • L’option est belle est bien toujours présente, il suffit, comme indiqué dans le tuto, d’activer la double authentification google.

        Répondre
  • Bonjour,
    Je viens de tester cette procédure qui fonctionne au poil !
    Merci

    Répondre
  • Bonjour,
    merci pour ce tuto trés clair.
    Vous parlez d’envoyer des mails par le biais de scripts bash.
    Mais une fois que postfix est configuré de la sorte, j’imagine qu’on peut tout aussi bien envoyer un mail via un script php et la fonction mail()?

    Répondre
  • Bonjour,

    lorsque j’entre la commande: cat /etc/ssl/certs/cert-for-smtp-gmail.pem | sudo tee -a /etc/postfix/cacert.pem
    je reçois un message d’erreur:
    cat: /etc/ssl/certs/cert-for-smtp-gmail.pem: No such file or directory

    que faire?

    Éric

    Répondre
    • Haha! J’ai oublié une étape 😉 Ça fonctionne super bien!
      Merci pour le tuto
      Éric

      Répondre
  • Bonjour, aprés avoir suivi ton petit tuto, je n’arrive pas envoyer les mail du système rien ne sort et je n’ai aucun message d’erreur.
    Je suis sur un servuer dédié OVH sous DEBIAN 11 avec wemin d’installer.
    J’ai configurer un mot de pass d’appli sur mon compte google.
    Si t upeux me donner un petit coup de main je sui preneur.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.