Postfix avec SMTP GMail

Installation

Nous allons installer les paquets suivants :

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

mailutils est un client console pour envoyer les mails,

libsasl2-2, ca-certificates, libsasl2-modules pour les certificats SSL.

Lors de l’installation, il faut choisir “Site Internet” et ensuite laissez le hostname par défaut.

On active le démarrage de postfix au lancement du système:

systemctl enable postfix

Paramétrage

Dans l'état on ne peut rien envoyer! Donc passons au paramétrage.

Maintenant que Gmail nécessaire une double authentification MFA/2FA, il faut qu'on “bypass” ça en autorisant directement dans les paramètres de sécurité de notre compte via “mot de passe d'application” (pas d'acces depuis https://myaccount.google.com/security)

C'est très bien caché! il faut aller ici :https://myaccount.google.com/apppasswords

Une foix le code généré il faut le mettre dans:

vi /etc/postfix/sasl_passwd

il faut enlever les espaces du code affiché.

[smtp.gmail.com]:587 USERNAME@gmail.com:xxxxxxxxxxxxxxxx

Comme c'est quand meme votre code d'acces faut le sécuriser en n'autorisant que root

chmod 400 /etc/postfix/sasl_passwd

Et pour que Postfix puisse l'utiliser il faut en faire un hash

postmap /etc/postfix/sasl_passwd

Maintenant on ce qu'il faut on configure Postfix

vi /etc/postfix/main.cf

modifiez le relayhost en

relayhost = [smtp.gmail.com]:587

et ajouter à 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

Et voilà on redémarre Postfix

systemctl reload postfix

Test

Pour tester on utilise mail

echo "test"|mail -s "test" mail_destinataire

en cas de pb de récpetion consultez les logs

cat /var/mail/root

pour vider les mails non distribués

> /var/spool/mail/root

Bonus

Automatisation :

Trigger pour automatiser: https://wasteofserver.com/permanently-delete-unwanted-emails-from-gmail-out-of-sight-out-of-mind/

https://script.google.com

function emptyTrash() {
  var gmailSearchString = `in:trash`

  var threads = GmailApp.search(gmailSearchString);
  const n = threads.length;
  if (n <= 0) {
    Logger.log("No threads matching search string \"%s\"", gmailSearchString);
    return
  } else {
    Logger.log("%s threads matching action **%s**", n, gmailSearchString);
  }

  for (var i = 0; i <threads.length; i++) {
    var thread = threads[i];
    Logger.log(`\t Thread# ${i} [ID: ${thread.getId()}]: [message : ${thread.getFirstMessageSubject()}] deleted`);
    Gmail.Users.Threads.remove('me', thread.getId());
  }
}
function toTrash() {
  var gmailSearchString = `to:me`

  var threads = GmailApp.search(gmailSearchString);
  const n = threads.length;
  if (n <= 0) {
    Logger.log("No threads matching search string \"%s\"", gmailSearchString);
    return
  } else {
    Logger.log("%s threads matching action **%s**", n, gmailSearchString);
  }

  for (var i = 0; i <threads.length; i++) {
    var thread = threads[i];
    Logger.log(`\t Thread# ${i} [ID: ${thread.getId()}]: [message : ${thread.getFirstMessageSubject()}] deleted`);
    thread.moveToTrash();
  }
}
Dernière modification : le 2026/09/20