|
День добрый Victor,
Сори предыдущее отправил не дописав.
Thursday, March 14, 2013, 6:45:55 AM, Вы пишете:
VS> Коллеги,
VS> Не встречал ли кто утилиту для удаления писем из очереди CGP,
VS> например, по IP адресу отправителя, а лучше по имени аккаунта.
VS> Надо почистить очередь от тысяч писем, отправленных трояном у клиента.
VS> Желательно, чтобы работало через CLI без остановки сервера.
VS> Заранее спасибо за совет.
Делалось очень давно. но работает.
По отправителю:
#!/usr/bin/perl -w
use CLI;
if (defined($ARGV[0]))
{
$user = $ARGV[0];
}
else
{
printf ("Wrong format\nUse delQ.pl sender_email\n");
exit;
}
my $cli = new CGP::CLI( { PeerAddr => 'hostname',
PeerPort => '106',
login => 'postmaster@hostname',
password => 'password'
} )
|| die "Can't login to CGPro: ".$CGP::ERR_STRING."\n";
my @TMP = `grep -E -r "P*<$user>" /var/CommuniGate/Queue`;
foreach my $i (@TMP)
{
my $t = '^/var/CommuniGate/Queue/\d\d/(\d+).msg:P.+<'.$user.'>$';
if($i =~ /$t/)
{
$cli->RejectQueueMessage($1);
printf ("#$1\n");
}
}
$cli->Logout;
если по получателю поменять grep на
my @TMP = `grep -E -r "R*<$user>" /var/CommuniGate/Queue`;
и regexp проверки
my $t = '^/var/CommuniGate/Queue/\d\d/(\d+).msg:R.+<'.$user.'>$';
по IP отправителя
my @TMP = `grep -r '$user' /var/CommuniGate/Queue`;
и
my $t = '^/var/CommuniGate/Queue/\d\d/(\d+).msg:S\s+\S+\s+\['.$user.'\]';
по Hello
my @TMP = `grep -r "$user)" /var/CommuniGate/Queue`;
и
my $t = '^/var/CommuniGate/Queue/\d\d/(\d+).msg:Received:\s+from.+(HELO\s+'.$user.'\s*)';
по from из заголовков
my @TMP = `grep -r "$user" /var/CommuniGate/Queue`;
и
my $t = '^/var/CommuniGate/Queue/\d\d/(\d+).msg:Received:\s+from.+\['.$user.'\]';
Ну и путь до очереди поправить на свой.
У меня разные файлы для каждого варианта.
------------------------
С наилучшими пожеланиями
Николай Варинов.
тел.+7 4912 951573
mailto:nic@sotcom.ru
|
|