Configurer postfix pour envoyer des e-mails avec Gmail
Le but est se servir du serveur SMTP de Gmail pour envoyer des mails depuis une adresse Gmail existente. L’avantage de cette méthode réside d’une part dans la simplicité d’envoyer des mail de notification à partir d’une simple ligne de script bash, et d’autre part dans l’assurance que le message envoyé ne finisse pas dans la boite des mails indésirable.
L’ensemble de l’installation s’éxécute en mode super utilisateur.
Installation et configuration de Postfix
Postfix est un agent de transfert de courrier (MTA), une application utilisée pour envoyer et recevoir des courriels. Elle peut être configurée de manière à ce qu’elle puisse être utilisée pour envoyer des courriels par application locale uniquement. Cela est utile dans les situations où vous devez régulièrement envoyer des notifications par courrier électronique à partir de vos applications, ou simplement en cas de trafic sortant important qu’un fournisseur de services de courrier électronique tiers n’autoriserait pas. C’est également une alternative plus légère à l’exploitation d’un serveur SMTP complet, tout en conservant les fonctionnalités requises.
Nous allons maintenant installer et configurer Postfix en tant que serveur SMTP pour l’envoi.
Installation des paquets :
apt-get update
apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules
Détail sur les paquets installés :
- 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,
- 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.

Si tout se passe correctement, on reçoit les messages suivant :

Configuration : Editer le fichier « /etc/postfix/main.cf »
- Localiser la ligne « relayhost = » et la complèter pour que la ligne corresponde à : « relayhost = [smtp.gmail.com]:587 ».
Cela sert à indiquer que nous utiliserons le SMTP de Gmail. - Pour activer l’authentification il faudra :
- indiquer où se trouve le fichier sasl_passwd (il sera créé plus tard),
- interdire le mode anonyme,
- indiquer où se trouve le certificat,
- et pour finir utiliser le TLS.à la fin du fichier.
- on ajoute les lignes suivantes à la fin du fichier :
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
- Sauvegarder le fichier et quitter l’éditeur nano.
Activer le démarrage de postfix au lancement du système :
systemctl enable postfix
Configuration de l’authentification Gmail avec mot de passe d’application
Connexion de Postfix avec le compte Gmail
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 USERNAME@gmail.com:MDP_Application
Sauvegarder le fichier « sasl_passwd » (Ctrl + o) et quitter l’éditeur nano (Ctrl + w).
On attribue maintenant les droits pour pouvoir utiliser ce fichier :
chmod 400 /etc/postfix/sasl_passwd
On exécute un postmap sur le fichier « sasl_passwd : cela permettra de créer une sorte de base de données.
postmap /etc/postfix/sasl_passwd
Création d’un certificat d’authentification pour le compte Gmail
Créer un certificat .pem (si vous n’en avez pas déjà un) par l’intermédiaire de cette commande :
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, on relance 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

Test
echo "Essai d'envoie de message. Heure d'envoi : 20h51" | mail -s "Test Postfix" nom-mail@ogmail.com