Postfix: kako obrisati mailove iz queuea?

 Postfix pomoćni program 'postsuper' (skraćeno od "postfix superintendent") je namijenjen za rad sa Postfix queuevima, odnosno mailovima u njima. Postsuper je namijenjen sistem administratorima, a ukoliko korisnici žele dio mogućnosti postsupera (npr. ispisati mail queue), trebaju rabiti naredbu 'postqueue'.

U većini slučajeva, postsuper će se rabiti za brisanje mailova iz queuea. U tu svrhu služi opcija -d:

 # postsuper -d QUEUE_ID 

Queue ID broj možete naći preko naredbe "postqueue -p", odnosno "mailq" (koju donosi postfix radi zadržavanja kompatibilnosti sa sendmailom).

# postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
F134C1838D 28300 Sun May 13 11:36:14 MAILER-DAEMON
(connect to mail.pradella.biz[212.77.229.254]: Connection timed out)
henry@pradella.biz

3C41518383 28352 Sat May 12 11:19:15 MAILER-DAEMON
(connect to pistonheads.biz[195.225.218.139]: Connection timed out)
john@pistonheads.biz

36FCE1838E 28328 Sat May 12 20:32:34 MAILER-DAEMON
(connect to pistonheads.biz[195.225.218.139]: Connection timed out)
john@pistonheads.biz

638221838B 28335 Sat May 12 18:06:48 MAILER-DAEMON
(connect to 64.202.167.73[64.202.167.73]: Connection timed out)
richard@guitarra.biz

-- 111 Kbytes in 4 Requests.

Kako ovo zna biti nepraktično, a počesto i sporo, donosimo kratku perl skriptu delete_from_mailq.pl koja će olakšati uporabu ove naredbe. Skriptu snimite primjerice u /usr/sbin (ili neki drugi direktorij koji je u $PATH-u root korisnika).

Uporaba je iznimno laka, jer kao parametar očekuje e-mail adresu, odnosno regularni izraz u obliku "spam.*@domena.com", ".*@spammerdomain.com" itd.).

E-mail adresa može biti i potpuna, primjerice "netko.negdje@domena.net".

Skripta delete_from_mailq.pl (možete je skinuti i direktno):

#!/usr/bin/perl

$REGEXP = shift || die "no email-adress given (regexp-style, e.g.\
bl.*\@yahoo.com)!";

@data = qx</usr/sbin/postqueue -p>;
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);
Kuharice: 
Kategorije: 
Vote: 
0
No votes yet