# Automatisation de la Gestion des Messages Différés de Postfix avec un Script PHP L'objectif du script PHP [delete_deferred.php](_files/postfix/home/cedrix/delete_deferred.php) est de gérer automatiquement les messages de courrier électronique en attente dans la file d'attente de Postfix, spécifiquement ceux avec un statut `deferred` dans `/var/log/mail.log`. Le script identifie ces messages, les supprime de la file d'attente et garde une trace des messages dans déjà traités `/var/log/processed_ids_deferred.txt` pour éviter les traitements redondants. ## Fonctionnalités Principales 1. **Initialisation et Configuration** - Le script commence par définir les chemins vers le fichier de journal de Postfix et le fichier utilisé pour stocker les IDs des messages déjà traités. 2. **Lecture des IDs Traités** - Une fonction lit les IDs des messages déjà traités à partir d'un fichier de suivi, assurant que les messages ne sont pas traités plusieurs fois. 3. **Recherche des Messages Différés** - Utilise une expression régulière pour analyser le fichier de journal de Postfix et identifier les messages avec le statut `deferred`. 4. **Filtrage des Messages Non Traités** - Compare les IDs des messages trouvés dans le journal avec ceux déjà traités pour ne conserver que les nouveaux messages à traiter. 5. **Suppression des Messages de la File d'Attente** - Pour chaque nouveau message identifié, le script exécute la commande `postsuper -d` pour supprimer le message de la file d'attente. - Si la suppression est réussie, l'ID du message est ajouté à la liste des IDs traités. 6. **Mise à Jour du Fichier des IDs Traités** - Après avoir traité les nouveaux messages, le script met à jour le fichier de suivi avec les nouveaux IDs, garantissant qu'ils ne seront pas traités à nouveau lors de la prochaine exécution. ## Déroulement du Script 1. **Affichage de Début d'Exécution** - Le script commence par afficher un message indiquant son démarrage. 2. **Définition des Chemins des Fichiers** - Les variables `$logFile` et `$processedIdsFile` sont définies pour stocker les chemins vers les fichiers nécessaires. 3. **Fonctions de Lecture et Écriture** - Deux fonctions, `readProcessedIds` et `writeProcessedIds`, sont définies pour lire et écrire les IDs des messages traités. Le script utilise un fichier spécifique pour stocker les IDs des messages déjà traités. Ce fichier est situé à `/var/log/processed_ids_deferred.txt`. 4. **Lecture et Analyse du Journal** - Le fichier de journal de Postfix est lu, et les messages correspondant au statut `deferred` sont identifiés à l'aide d'une expression régulière. 5. **Traitement des Messages** - Les IDs des messages différés sont extraits et filtrés pour ne conserver que ceux qui n'ont pas encore été traités. - Pour chaque nouveau message, la commande `postsuper -d` est exécutée pour supprimer le message de la file d'attente. - Les IDs des messages réussis sont ajoutés à la liste des IDs traités. 6. **Mise à Jour des IDs Traités** - Le fichier des IDs traités est mis à jour avec les nouveaux IDs après le traitement. 7. **Affichage de Fin d'Exécution** - Le script affiche un message indiquant la fin de l'exécution. ## Avantages du Script - **Automatisation** : Réduit la nécessité d'intervention manuelle pour gérer les messages différés dans Postfix. - **Efficacité** : Assure que les messages sont traités de manière efficace en évitant les traitements redondants. - **Traçabilité** : Garde une trace des messages déjà traités, ce qui facilite le suivi et la gestion des opérations. ## À consulter - `postsuper`