Debloquer postfix + amavisd

Contenu du snippet

Débloque le daemon amavis.

Met en queue Hold le message bloqué par amavisd.
Kill les processus amavisd fantome.
Relance amavisd.

Source / Exemple :


#!/usr/bin/php -q
<?php

/*
#################################
# Written by Alexandre Pinon   ##
#################################
# Retourne la differance de temps en seconde entre le dernier mail recu
# et la date actuelle ainsi que son ID.
#

  • /
function Tri_Date() { // Retourne un tableau avec le timestampdu mail le + vieux et l'ID du mail le + vieux. $get_data = "postqueue -p | grep -v MAILER-DAEMON | grep \"*\" | awk '{print $1\" \"$3\" \"$4\" \"$5\" \"$6}'"; // commande de prod !! //$get_data = "postqueue -p | grep Oct | awk '{print $1\" \"$3\" \"$4\" \"$5\" \"$6}'"; // Commande de test !!! exec($get_data, $rep_exec); $result[0]=0; //timestamp de reference; sera stock&#65533; ici le plus grand des timestamps donc le mail le plus vieux. $result[1]=0; //id de reference; sera stocké ici l'ID du mail le plus vieux. foreach($rep_exec as $rep_line) { $data = explode(" ", $rep_line); // ID du mail + date de reception $day=$data[1]; // jour de la semaine $day_n=$data[2]; //numero du jour $month=$data[3]; //mois de l'annee $full_hour=$data[4]; //heure en h:mn:s $get_ts="date -d \"$day $day_n $month $full_hour\" +%s"; //timestamp d'un mail $y=exec($get_ts)."\n"; // recuperation du timestamp UNIX dans PHP du mail trait&#65533; dans la boucle foreach if ( $y > $x ) { $result[0]=$y; //temps en seconde $result[1]=str_replace("*","",$data[0]); //ID du mail le plus vieux sans * de fin si il y a !!! } } print("Le mail le plus vieux est $result \n"); return $result; } function Queue_Hold($id="") { $cmd="postsuper -h $id"; print ("Message ID $id HOLD in queue HOLD. \n"); exec($cmd); } function Kill_Process($process='') { $get_id="ps ax | grep $process | grep -v \"grep\" | awk '{print $1}'"; exec($get_id, $rep_exec); foreach ($rep_exec as $rep_id) { $cmd="kill -9 $rep_id"; exec($cmd); print("Process $rep_id killed. \n"); } } function Executer($cmd="") { print("Execute : $cmd \n"); exec($cmd); } // /*/////////////////// FONCTION PRINCIPALE// /*/////////////////// // print("Debut du script... \n\n"); Executer("/etc/init.d/amavisd stop"); //Arrete le daemon Amavisd Kill_Process("amavis"); // Kill les process fantomes $tab = Tri_Date(); // Recupere l'ID du mail le plus vieux Queue_Hold($tab[1]); // Met le mail en question en queue hold Executer("/etc/init.d/amavisd start"); // RElance le daemon Amavisd Executer("postqueue -f"); // Flush la Queue print("\n ... Fin du Script ! \n"); ?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.