• Bez kategorii

Usuwanie poczty z kolejki

Czasem trzeba wyrzucić kilka maili z kolejki albo wykonać jakąś inną operację wymagającą złożenia kilku poleceń do kupy.

Dla starych wyjadaczy to żaden problem i pewnie zrobiliby to bardziej optymalnie, ale ja właśnie postanowiłem rozpocząć cykl pod tytułem „Jednowierszowce„, gdzie będę wrzucał jednowierszowe skrypty shellowe (i inne), które mam nadzieję będą przydatne i zrozumiałe dla szerszego grona użytkowników.

Na początek wyrzucimy z kolejki poczty kilka zwrotek, czyli maile od MAILER-DAEMON. Nie pytajcie mnie dlaczego – przykładowo. Tym razem opiszę to krok po kroku. Oto przykład jak wygląda kawałek kolejki w postfixie:


# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
571AAC45      48204 Tue Dec 21 07:52:39  MAILER-DAEMON
                (connect to example.com[221.X.X.70]:25: Connection refused)
                                         datadm@example.com
...

No to wybierzmy sobie tylko te maile, które są od MAILER-DAEMON:


# mailq|grep MAILER-DAEMON
571AAC45      48204 Tue Dec 21 07:52:39  MAILER-DAEMON
5C0671838      4528 Mon Dec 20 15:19:35  MAILER-DAEMON
806BF1FB0     12469 Mon Dec 20 00:38:55  MAILER-DAEMON
2CDC81BDE     47643 Mon Dec 20 12:05:33  MAILER-DAEMON
623E21AFE      4096 Mon Dec 20 13:16:59  MAILER-DAEMON
682491647     11799 Wed Dec 22 06:18:43  MAILER-DAEMON
...

Wszelkie działania na kolejce opierają się na Queue-ID, potrzebujemy więc tylko pierwszą kolumnę, możemy to zrobić np. tak:


# mailq|grep MAILER-DAEMON|cut -d" " -f1
571AAC45
5C0671838
806BF1FB0
2CDC81BDE
623E21AFE
682491647
...

I to wystarczy już posłać do polecenia postsuper:


# mailq|grep MAILER-DAEMON|grep ^5|cut -d" " -f1|postsuper -d -
postsuper: 571AAC45: removed
postsuper: 5C0671838: removed
postsuper: Deleted: 2 messages

Ograniczyłem powyżej zakres do tych, które zaczynają się od cyfry 5 (grep ^5), żeby pokazać Wam, że polecenia grep i cut, można zastąpić jednym poleceniem gawk (GNU awk):


# mailq|gawk '/MAILER-DAEMON/ { print $1 }'|postsuper -d -
postsuper: 806BF1FB0: removed
postsuper: 2CDC81BDE: removed
postsuper: 623E21AFE: removed
postsuper: 682491647: removed
...

Jeśli zdarzy się, że lista argumentów jest zbyt długa, to przed postsuper należy zastosować jeszcze polecenie xargs.

Może Ci się również spodoba

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.