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

3.7 KiB

Automatisation de la Gestion des Messages Différés de Postfix avec un Script PHP

L'objectif du script PHP 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