Postfix Mail Queue törlés, újraküldés, várólista kezelés

A Postfix egy Linux operációs rendszerre írt levéltovábbító ügynök (MTA). Számos adminisztrációs felület található hozzá, melyekkel figyelhető, menedzselhető. Ez a bejegyzés néhány hasznos mintát mutat a várólista (queue) manipulálására.

pistike@postfix:$ mailq 
#vagy
pistike@postfix:$ postqueue -p

Mindkét parancs ugyanazt csinálja, a várólistában (queue) várakozó emaileket nézhetjük meg. A queue kétféle üzenetet típust tartalmaz. Az egyik üzenet típus a sorba állított, küldésre várakozó, a második típus a halasztott (deferred) ezek valamilyen hiba miatt nem lettek elküldve, ezeket a leveleket a postfix újra fogja küldeni. Azt hogy hányszor, mennyi idő múlva, az konfigurációtól függő.

pistike@postfix:$ postqueue -f
#vagy
pistike@postfix:$ postfix flush

Az összes sorban álló levél újraküldése.

pistike@postfix:$ postsuper -d ALL deferred

A teljes várólista törlésre kerül. Ezt a parancsot körültekintően alkalmazzuk, törölhetünk vele fontos leveleket, csak óvatosan. Személy szerint én ezt nem használom.

 pistike@postfix:$ postsuper -d ALL deferred

Minden olyan üzenet törlése a queue-ból ami deferred (halasztott) állapotban van.

Az igazi megoldás a szelektív törlés lenne, de erre egyszerű, könnyen használható parancsot ilyen formában még nem találtam. Ellenben van egy egyszerű postfix-delete.pl perl szkript, amivel nagyon jól lehet kezelni a várólistákat.

#!/usr/bin/perl
 
$REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!";
 
@data = qx</usr/sbin/postqueue -p>;
for (@data) {
 if (/^(\w+)(\*|\!)?\s/) {
 $queue_id = $1;
 }
 if($queue_id) {
 if (/$REGEXP/i) {
 $Q{$queue_id} = 1;
 $queue_id = "";
 }
 }
}
 
open(POSTSUPER,"|postsuper -d -") || die "couldn't open postsuper" ;
 
foreach (keys %Q) {
 print POSTSUPER "$_\n";
};
close(POSTSUPER);

Használata egyszerű és nagyszerű. Csak néhány példa a teljesség igénye nélkül.

./postfix-delete.pl domainnev.xyz
# minden levelet töröl a queue-ból amiben a domainnev.xyz szerepel, küldő vagy
# fogadó oldalon

./postfix-delete.pl valaki@domainnev.xyz
# minden levelet töröl a queue-ból amiben szerepel a valaki&domainnev.xyz
# küldő, vagy fogadó oldalon 

./postfix-delete.pl MAILER-DAEMON
# minden levelet töröl a queue-ból ami a MAILER-DAEMON-tól érkezik
# stb...

Ennél egyszerűbb megoldást nem találtam. Ez valóban hatékony és remekül használható.

postfix logo

Forrás: cyberciti.biz