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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Geoffrey Sauvageot-Berland

Ingénieur d'état en cybersécurité en alternance dans une entreprise spécialisée. Généraliste, avec une préférence pour Linux (Debian/Ubuntu), le scripting (Bash/Powershell), le developpement WEB ainsi qu'un fort penchant pour l'ethical hacking. Fondateur du site internet "Le guide du sysops".

geoffreysb has 11 posts and counting.See all posts by geoffreysb

29 thoughts on “Configurer postfix pour envoyer des e-mails avec Gmail

  • Merci beaucoup pour la conf de postfix.
    Pour s’en servir de relais pour l’envoi d’alertes mails dans un environnement exchange.
    Dans relayhost faut il mettre l’ip ou le fdqn ? Faut il qu’un utilisateur nagios ou centreon soit préalablement créé ?
    Encore merci pour cette astuce qui va me permettre de continuer la mise en route de ma supervision.

    Répondre
  • Bonjour,
    Je dirai le fdqn, normalement ton serveur dns devrait correctement rediriger le fdqn vers ton serveur.

    Je n’ai jamais utilisé autre chose que gmail.

    Pour la création d’un utilisateur nagios ou centreon, tu parles sur la partie nagios/centreon, ou sur la partie postfix ?

    Content que ce tuto t’aides 🙂

    Répondre
  • En fait c’est bon j’ai mis ça en route aujourd’hui, ça circule en interne. Il a fallu effectuer un réglage au niveau des hosts centos, une déclaration de la machine sur les serveurs DNS et ça c’est bien passé 😉

    Répondre
  • Merci pour le tuto.
    Est ce que c’est possible de faire une deuxième partie du tuto pour expliquer la création des alias et la config coté Nagios et d’autres serveur ?
    Merci d’avance.

    Répondre
  • Bonjour,

    Tu parles de l’installation et configuration de Nagios du début à la fin ou juste la configuration de la notification par mail dans Nagios ?

    Oui je peux faire un autre tuto, mais il sortira pas avant 2 semaines (je suis en période d’examens).

    Répondre
  • Oui je parle de la partie notification par mail.
    Bon courage pour les examens 🙂

    Répondre
  • Merci beaucoup, ça marche niquel avec nagios pour ma part !

    Répondre
  • Bonjours,
    Je voulais savoir , si c’était normale que je ne possède pas le fichier Thawte_Premium_Server_CA.pem ?
    Ceci me bloque parceque je ne sais pas ou mettre mon certif .
    A moins que se soit propre a Gmail ce fichier :/
    Merci

    Répondre
  • Bonjour vous tous. Ce tutoriel marche t-il pour le Linux centos 7? J’ai un soucis avec ma configuration car ça me fait des erreurs commande: echo « test »|mail -s « test » [email protected], j’ai ce message suivant: send-mail: cannot set X509 trust file /etc/ssl/certs/ca-certificates.crt for TLS session: Erreur de lecture de fichier.
    send-mail: could not send mail (account default from /etc/msmtprc). Pour vous éclaircir j’avais installer msmtp mais je n’y est pas pu. Donc je suis allé sur le postfix. Mais rien du tt.

    Répondre
  • Bonjour. Je venais à vous pour toute votre aide. J’ai installé postfix mais je n’arrive pas à envoyer mon mail test avec la commande echo. Or le status me dit que postfix est en marche. Voir ci-dessous:
    [[email protected] serverntop]# service postfix status
    Redirecting to /bin/systemctl status postfix.service
    postfix.service – Postfix Mail Transport Agent
    Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
    Active: active (running) since lun. 2015-11-09 08:55:07 GMT; 1h 41min ago
    Process: 9662 ExecReload=/usr/sbin/postfix reload (code=exited, status=0/SUCCESS)
    Main PID: 2625 (master)
    CGroup: /system.slice/postfix.service
    ├─2625 /usr/libexec/postfix/master -w
    ├─9674 pickup -l -t unix -u
    └─9675 qmgr -l -t unix -u

    nov. 09 09:24:01 localhost.localdomain systemd[1]: Reloaded Postfix Mail Transport Agent.
    nov. 09 10:02:09 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.
    nov. 09 10:02:18 localhost.localdomain systemd[1]: Reloading Postfix Mail Transport Agent.
    nov. 09 10:02:18 localhost.localdomain postfix/master[2625]: reload — version 2.10.1, configuration /etc/postfix
    nov. 09 10:02:18 localhost.localdomain systemd[1]: Reloaded Postfix Mail Transport Agent.
    nov. 09 10:12:29 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.
    nov. 09 10:13:35 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.
    nov. 09 10:26:11 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.
    nov. 09 10:28:00 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.
    nov. 09 10:30:04 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.
    nov. 09 10:32:22 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.

    [[email protected] serverntop]# sudo service postfix start
    Redirecting to /bin/systemctl start postfix.service

    J’ai besoin de toute votre aide. Merci d’avance!!!

    Répondre
  • Bonjour,

    J’ai actuellement installer un serveur Nagios et souhaite remonter mes alertes par notification grâce a postfix, j’ai donc suivis votre tuto mais malheureusement je ne parviens pas a envoyer de mail.

    Voici les messages d’erreurs que j’obtient lors de l’envoi d’un mail :

    Nov 19 14:32:45 SRV-Nagios postfix/smtp[4330]: connect to smtp.gmail.com[2a00:1450:400c:c05::6d]:587: Network is unreachable
    Nov 19 14:32:45 SRV-Nagios postfix/smtp[4330]: D104720C59: to=, relay=none, delay=0.01, delays=0.01/0/0/0, dsn=4.4.1, status=deferred (connect to smtp.gmail.com[2a00:1450:400c:c05::6d]:587: Network is unreachable)
    Nov 19 14:32:53 SRV-Nagios postfix/master[1173]: reload — version 2.11.3, configuration /etc/postfix
    Nov 19 14:32:54 SRV-Nagios postfix/pickup[4398]: 900D920C63: uid=0 from=
    Nov 19 14:32:54 SRV-Nagios postfix/cleanup[4421]: 900D920C63: message-id=
    Nov 19 14:32:54 SRV-Nagios postfix/qmgr[4399]: 900D920C63: from=, size=335, nrcpt=1 (queue active)
    Nov 19 14:32:54 SRV-Nagios postfix/smtp[4423]: connect to smtp.gmail.com[2a00:1450:400c:c05::6d]:587: Network is unreachable
    Nov 19 14:32:54 SRV-Nagios postfix/smtp[4423]: connect to smtp.gmail.com[74.125.133.109]:587: Connection refused
    Nov 19 14:32:54 SRV-Nagios postfix/smtp[4423]: connect to smtp.gmail.com[74.125.133.108]:587: Connection refused
    Nov 19 14:32:54 SRV-Nagios postfix/smtp[4423]: 900D920C63: to=, relay=none, delay=0.04, delays=0.02/0.01/0/0, dsn=4.4.1, status=deferred (connect to smtp.gmail.com[74.125.133.108]:587: Connection refused)

    Répondre
  • Bonjour, j’ai installé et configuré postfix normalement mais à chaque fois que je lance le test, il me renvoie « erreur de segmentation ». j’aimerais savoir s’il y a une solution pour ça.

    Répondre
  • merci pour le tuto malheureusement je bloque sur une partie

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

    cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem

    pas de fichier Thawte_premium_server pour ma part =(

    Répondre
    • Pour ceux qui bloquent sur Thawte_Premium_Server_CA.pem non trouvé, ce certificat est l’ancien root et a été retiré de ca-certificates.
      Vous pouvez utiliser le nouveau root (/etc/ssl/certs/thawte_Primary_Root_CA.pem) à la place.

      Répondre
      • Philippe merci pour la rectification, avec ce nouveau root ça passe!Merci aussi à toi Bastien, c’est une merveille, je m’oriente vers la notification de nagios à présent!

        Répondre
  • Super! Merci. Si on veut que le courriel qu’on envoi soit envoyé avec un nom de domaine en particulier à la place qu’il provienne de gmail par exemple?

    Désolé si la question est nulle…

    Répondre
  • bonjour,j’ai suit toutes ces étapes ça marche bien mais lorsque j’ai arrivé à la derniere commande de test il ya un message qui s’affiche qu’est /usr/bin/mail:permission non accordée , quelqu’un peut m’aider svp,merci d’avance

    Répondre
  • Merci, clair et efficace.
    Comment change t on le nom du sender qui apparait ? (par defaut le login de l’utilisateur …)

    Répondre
    • au cas où qqun d’autre chercherait : mail -a from: »alias  »
      et pour ajouter des CC ou autre header, on peut ajouter d’autres -a, par exemple -a CC:[email protected]

      Répondre
      • Bonsoir Damien, merci d’avoir pris le temps d’indiquer la réponse à ta question 🙂

        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.