Press enter to see results or esc to cancel.

Postfix’te kuyruğa müdahale etmek

Postfix’te kuyruğa müdahale etmek

Bilindiği gibi postfix mail kuyruğundan mesaj silmek için ilk önce mesajın id numarası bulunur (postqueue -p) ardından da postsuper -d id_number (postsuper -d 6889D8780FB) diyerekten kuyruktaki mesaj silinir. Zahmetli olduğu gibi uzun bir yoldur.

Peki çok yoğun çalışan bir mail sunucunuz var ve devamlı kuyrukta inboxı olmayan epostalarda kuyruk lifetime süresince bekliyor veya yanlış yazılmış adresler.. Bu durumda tek tek id bulup silmek biraz zahmetli.

Şimdi aşağıdaki perl script ile bu işlemleri daha kolay bir hale getiriyoruz, mesela kuyrukta bekleyen “mailbox unavailable” mesajları dönmüş maillerin hepsini sileceksiniz işte bu script sayesinde kolay bir şekilde yapabiliyorsunuz.

#!/usr/bin/perl
$REGEXP = shift || die “no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!”;
@data = qx;
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);

Yukarıdaki kod parçacıklarını bir editör aracılığıyla kuyruk-sil adıyla kaydedelim ve chmox +x kuyruk-sil olarak çalıştırma hakkı verelim.

Kullanım şekli;

. herhangi bir alan adından gelen mesajları silmek

/home/murat/kuyrul-sil “murat.ws”

. herhangi bir eposta adresinden gelen mesajları silmek

/home/murat/kuyruk-sil “test@murat.ws

. içeriğe göre kuyruktaki mesajları silmek (örneğin içinde no mailbox,said: 550,This account has been disabled or discontinued kelimeleri geçen kuyruk mesajları )

kendi kullandığım kelimeler

/home/murat/kuyruksil “mailbox unavailable”
/home/murat/kuyruksil ” said: 550″
/home/murat/kuyruksil “This account has been disabled or discontinued”
/home/murat/kuyruksil “exceeded”
/home/murat/kuyruksil “no mailbox”
/home/murat/kuyruksil “501 Invalid Address”

Murat Uğur Eminoğlu