{"id":3580,"date":"2014-09-21T23:50:06","date_gmt":"2014-09-21T15:50:06","guid":{"rendered":"http:\/\/rmohan.com\/?p=3580"},"modified":"2014-09-21T23:50:06","modified_gmt":"2014-09-21T15:50:06","slug":"manage-postfix-mail-queue","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=3580","title":{"rendered":"manage Postfix mail queue"},"content":{"rendered":"<p>This post will show a simple perl tool to manage (delete) one or more message in Postfix mail queue.<\/p>\n<p>The main script to use is delete-mailq.pl<br \/>\nCreate a file called delete-mailq.pl in \/usr\/local\/bin with the the following content :<\/p>\n<div>\n<div id=\"highlighter_507083\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">&lt;<\/code><code class=\"bash plain\">\/pre<\/code><code class=\"bash plain\">&gt;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash preprocessor bold\">#!\/usr\/bin\/perl -w<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash comments\"># Postfix mailq cleanup utility<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">$REGEXP = <\/code><code class=\"bash functions\">shift<\/code> <code class=\"bash plain\">|| die <\/code><code class=\"bash string\">\"no email-adress given (regexp-style, test.*@example.com)!\"<\/code><code class=\"bash plain\">;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">@data = qx&lt;<\/code><code class=\"bash plain\">\/usr\/sbin\/postqueue<\/code> <code class=\"bash plain\">-p&gt;;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">(@data) {<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">(\/^(w+)*?s\/) {<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">$queue_id = $1;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash plain\">}<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash keyword\">if<\/code><code class=\"bash plain\">($queue_id) {<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">(\/$REGEXP<\/code><code class=\"bash plain\">\/i<\/code><code class=\"bash plain\">) {<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash plain\">$Q{$queue_id} = 1;<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash plain\">$queue_id = <\/code><code class=\"bash string\">\"\"<\/code><code class=\"bash plain\">;<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash plain\">}<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash plain\">}<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash plain\">}<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash functions\">open<\/code><code class=\"bash plain\">(POSTSUPER,<\/code><code class=\"bash string\">\"|postsuper -d -\"<\/code><code class=\"bash plain\">) || die <\/code><code class=\"bash string\">\"couldn't open postsuper\"<\/code> <code class=\"bash plain\">;<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"bash plain\">foreach (keys %Q) {<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"bash plain\">print POSTSUPER <\/code><code class=\"bash string\">\"$_n\"<\/code><code class=\"bash plain\">;<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"bash plain\">};<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"bash plain\">close(POSTSUPER);<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"bash plain\">&lt;pre&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Assign it correct ownership and permission with the following commands :<\/p>\n<div>\n<div id=\"highlighter_15120\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">&lt;<\/code><code class=\"bash plain\">\/pre<\/code><code class=\"bash plain\">&gt;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash functions\">chown<\/code> <code class=\"bash plain\">root:root <\/code><code class=\"bash plain\">\/usr\/local\/bin\/delete-mailq<\/code><code class=\"bash plain\">.pl<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash functions\">chmod<\/code> <code class=\"bash plain\">700 <\/code><code class=\"bash plain\">\/usr\/local\/bin\/delete-mailq<\/code><code class=\"bash plain\">.pl<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">&lt;pre&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>You should run the file directly passing the variables directly on comand line, or you should (and I prefer) create another file in \/usr\/local\/bin called clean-mailq.sh with the following content :<\/p>\n<div>\n<div id=\"highlighter_177012\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">&lt;<\/code><code class=\"bash plain\">\/pre<\/code><code class=\"bash plain\">&gt;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash preprocessor bold\">#!\/bin\/sh<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">[ -z $1 ]<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash keyword\">then<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash functions\">echo<\/code> <code class=\"bash string\">\"Insert the E-Mail address or a string to find it in mailqueue and delete it\"<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash functions\">read<\/code> <code class=\"bash plain\">STRING<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash keyword\">else<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">STRING=$1<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash keyword\">fi<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">\/usr\/local\/bin\/delete_mailq<\/code><code class=\"bash plain\">.pl $STRING<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">&lt;pre&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Assign it correct ownership and permission with the following commands :<\/p>\n<div>\n<div id=\"highlighter_360916\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">&lt;<\/code><code class=\"bash plain\">\/pre<\/code><code class=\"bash plain\">&gt;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash functions\">chown<\/code> <code class=\"bash plain\">root:root <\/code><code class=\"bash plain\">\/usr\/local\/bin\/clean-mailq<\/code><code class=\"bash plain\">.sh<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash functions\">chmod<\/code> <code class=\"bash plain\">700 <\/code><code class=\"bash plain\">\/usr\/local\/bin\/clean-mailq<\/code><code class=\"bash plain\">.sh<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">&lt;pre&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>At this time, you should execute \/usr\/local\/bin called clean-mailq.sh as root and pass the value to find and to delete from mail queue.<\/p>\n<p>Hope this help<\/p>\n<p>Bye<br \/>\nRiccardo<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post will show a simple perl tool to manage (delete) one or more message in Postfix mail queue.<\/p>\n<p>The main script to use is delete-mailq.pl Create a file called delete-mailq.pl in \/usr\/local\/bin with the the following content :<\/p>\n<p> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/3580"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3580"}],"version-history":[{"count":1,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/3580\/revisions"}],"predecessor-version":[{"id":3581,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/3580\/revisions\/3581"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}