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
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
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
Automatisation :
Trigger pour automatiser: https://wasteofserver.com/permanently-delete-unwanted-emails-from-gmail-out-of-sight-out-of-mind/
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();
}
}