Configurer postfix pour envoyer des e-mails avec Gmail
Sommaire
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.
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.
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?
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
Bonsoir je suis nouveau dans le domaine informatique est ce qu’une personne qui pourrait m’expliquer le fonctionnement merci
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é.
Bonjour, je suis bloqué a la commande postmap command not found. Que faire ?
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.
⢀⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠸⡇⠀⠿⡀⠀⠀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠑⢄⣠⠾⠁⣀⣄⡈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⡀⠁⠀⠀⠈⠙⠛⠂⠈⣿⣿⣿⣿⣿⠿⡿⢿⣆⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀⠀⢻⣿⣿⠭⢤⣴⣦⣤⣹⠀⠀⠀⢀⢴⣶⣆
⠀⠀⢀⣾⣿⣿⣿⣷⣮⣽⣾⣿⣥⣴⣿⣿⡿⢂⠔⢚⡿⢿⣿⣦⣴⣾⠁⠸⣼⡿
⠀⢀⡞⠁⠙⠻⠿⠟⠉⠀⠛⢹⣿⣿⣿⣿⣿⣌⢤⣼⣿⣾⣿⡟⠉⠀⠀⠀⠀⠀
⠀⣾⣷⣶⠇⠀⠀⣤⣄⣀⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
⠀⠉⠈⠉⠀⠀⢦⡈⢻⣿⣿⣿⣶⣶⣶⣶⣤⣽⡹⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠉⠲⣽⡻⢿⣿⣿⣿⣿⣿⣿⣷⣜⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣷⣶⣮⣭⣽⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⣀⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠻⠿⠿⠿⠿⠛⠉
Merci bg
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…
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 😉
L’option est belle est bien toujours présente, il suffit, comme indiqué dans le tuto, d’activer la double authentification google.
Trop cool. Merci
Bonjour,
Je viens de tester cette procédure qui fonctionne au poil !
Merci
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()?
Merci bien Geoffrey ! Top ça fait le taf, super bien expliqué !
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
Haha! J’ai oublié une étape 😉 Ça fonctionne super bien!
Merci pour le tuto
Éric
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.
Merci Geoffrey
2024 toujours d’actualité et fonctionnel c’est beau
Google mots de passe d’application : https://myaccount.google.com/apppasswords