• 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