Category: Postfix
Postfix

[Postfix] Kuyruktaki mesajlari tutmak, bekletmek (postfix hold)

Postfix'te cok fazla ayni kisiden gonderilen mail varsa ve bu sorun yasatiyorsa o kisinin gonderdigi mailleri kuyrukta tutabilirsiniz. (Bekletebilirsiniz) Daha sonra beklettiginiz mailleri tekrar kuyruga isleyebilirsiniz. # murat@salla.com 'nin kuyruk id 'lerini alip postsuper -h ile hold etmis oluyoruz. postqueue -p | awk 'BEGIN { RS = "" } { if ($7 == "murat@salla.com" ) print $1 }' | tr -d '!*' | postsuper -h # murat@murat.ws 'nin kuyruk id 'lerini alip postsuper -r ile tekrar kuyruga sokuyoruz. postqueue -p | awk 'BEGIN { RS = "" } { if ($7 == "murat@salla.com" ) print $1 }' | tr -d '!*' | postsuper -r # silmek icinse; postqueue -p | awk 'BEGIN { RS = "" } { if ($7 == "murat@salla.com" ) print $1 }' | tr -d '!*' | postsuper -d kullanilabilir.
Linux, Postfix

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
Linux, Postfix

Kuyruktaki mailleri silmek – 2

Pek saglikli bir sey degil ama su anda aklima gelen tek sey bu idi. Bu ufak kod parcaciklarini kuyrukta biriken mailman-bounce mesajlarinin hepsini silmek icin kullandim.  postqueue -p | awk '{print $1 $7}' | grep mailman | cut -c -11 > kuyruktakiler  for i in $(cat kuyruktakiler); do  /usr/sbin/postsuper -d $i; done Murat.