3 # Delete some mail messages from the queue
5 require './sendmail-lib.pl';
6 require './boxes-lib.pl';
8 @files = split(/\0/, $in{'file'});
11 # Flushing selected messages
12 @files || &error($text{'delq_enone'});
13 $access{'flushq'} || &error($text{'flushq_ecannot'});
14 &ui_print_unbuffered_header(undef, $text{'flushq_title'}, "");
16 # Split into quarantined and non-quarantined messages
17 local @mails = map { &mail_from_queue($_) } @files;
18 local @quar = grep { $_->{'quar'} } @mails;
19 local @nonquar = grep { !$_->{'quar'} } @mails;
21 foreach $ml (\@quar, \@nonquar) {
23 @files = map { $_->{'file'} } @$ml;
24 $cmd = "$config{'sendmail_path'} -v -C$config{'sendmail_cf'}";
25 if ($ml->[0]->{'quar'}) {
28 foreach $file (@files) {
32 if ($config{'mailq_order'}) {
33 $cmd .= " -O QueueSortOrder=$config{'mailq_order'}";
35 print &text('flushq_desc2', scalar(@files)),"\n";
37 &foreign_require("proc", "proc-lib.pl");
38 &foreign_call("proc", "safe_process_exec_logged", $cmd, 0, 0,
42 &webmin_log("flushq", undef, scalar(@files));
45 # Deleting selected messages
46 &error_setup($text{'delq_err'});
47 $access{'mailq'} == 2 || &error($text{'delq_ecannot'});
48 @files || &error($text{'delq_enone'});
49 &ui_print_header(undef, $text{'delq_titles'}, "");
51 if ($in{'confirm'} || !$config{'delete_confirm'}) {
54 $conf = &get_sendmailcf();
55 foreach $file (@files) {
56 print &text('delq_file', "<tt>$file</tt>")," \n";
59 foreach $mqueue (&mailq_dir($conf)) {
60 $ok++ if ($file =~ /^$mqueue\//);
63 print $text{'delq_efile'},"<br>\n";
67 if ($file =~ /\.\./) {
68 print $text{'delq_efile'},"<br>\n";
72 print $text{'delq_egone'},"<br>\n";
76 $mail = &mail_from_queue($file, "auto");
77 if (!&can_view_qfile($mail)) {
78 print $text{'delq_ecannot'},"<br>\n";
82 if (-r $mail->{'lfile'} && !$in{'locked'}) {
83 print $text{'delq_elocked'},"<br>\n";
87 unlink($mail->{'file'}, $mail->{'dfile'}, $mail->{'lfile'});
88 print $text{'delq_ok'},"<br>\n";
91 &webmin_log("delmailq", undef, undef, { 'count' => $count }) if ($count);
94 # Ask for confirmation first
96 print &ui_form_start("del_mailqs.cgi", "post");
97 print &text('delq_rusure', scalar(@files)),"<p>\n";
99 print &ui_hidden("file", $f),"\n";
101 print &ui_hidden("locked", $in{'locked'}),"\n";
102 print &ui_form_end([ [ "confirm", $text{'delq_confirm'} ] ]);
106 &ui_print_footer("list_mailq.cgi", $text{'mailq_return'});