notes-techniques/notes/serveur/postfix-delete-messages-def...

60 lines
3.6 KiB
Markdown

# Automatisation de la Gestion des Messages Différés de Postfix
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`