День добрый 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)
если по получателю поменять 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.'\]';
Ну и путь до очереди поправить на свой.
У меня разные файлы для каждого варианта.
Этот архив был сгенерирован hypermail 2.1.8 : Thu 14 Mar 2013 - 13:17:12 MSK