# Automatisation de la Gestion des Messages Différés de Postfix

#debian #postfix #php #bash

---

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`