3 # Display the current mail queue
5 require './sendmail-lib.pl';
6 require './boxes-lib.pl';
8 $access{'mailq'} || &error($text{'mailq_ecannot'});
9 print "Refresh: $config{'mailq_refresh'}\r\n"
10 if ($config{'mailq_refresh'});
11 &ui_print_header(undef, $text{'mailq_title'}, "");
13 $conf = &get_sendmailcf();
14 @qfiles = &list_mail_queue($conf);
16 if ($access{'qdoms'}) {
17 # Filter out blocked mails
18 @qfiles = grep { &can_view_qfile($qmails{$_} = &mail_from_queue($_)) }
22 if ($config{'mailq_sort'} == 0) {
24 @qfiles = sort { $a =~ /\/([^\/]+)$/; local $af = $1;
25 $b =~ /\/([^\/]+)$/; local $bf = $1;
26 $af cmp $bf } @qfiles;
29 # We need the actual mails for sorting
31 foreach $q (@qfiles) {
32 $qmails{$q} ||= &mail_from_queue($q);
34 if ($config{'mailq_sort'} == 1) {
35 @qfiles = sort { lc(&address_parts($qmails{$a}->{'header'}->{'from'})) cmp
36 lc(&address_parts($qmails{$b}->{'header'}->{'from'})) } @qfiles;
38 elsif ($config{'mailq_sort'} == 2) {
39 @qfiles = sort { lc(&address_parts($qmails{$a}->{'header'}->{'to'})) cmp
40 lc(&address_parts($qmails{$b}->{'header'}->{'to'})) } @qfiles;
42 elsif ($config{'mailq_sort'} == 3) {
43 @qfiles = sort { lc($qmails{$a}->{'header'}->{'subject'}) cmp
44 lc($qmails{$b}->{'header'}->{'subject'}) } @qfiles;
46 elsif ($config{'mailq_sort'} == 4) {
47 @qfiles = sort { lc($qmails{$a}->{'status'}) cmp
48 lc($qmails{$b}->{'status'}) } @qfiles;
50 elsif ($config{'mailq_sort'} == 5) {
51 @qfiles = sort { $qmails{$b}->{'size'} <=>
52 $qmails{$a}->{'size'} } @qfiles;
58 if (@qfiles > $config{'perpage'}) {
61 $s = int($in{'start'});
62 $e = $in{'start'} + $config{'perpage'} - 1;
63 $e = @qfiles-1 if ($e >= @qfiles);
65 printf "<a href='list_mailq.cgi?start=%d'>%s</a>\n",
66 $s - $config{'perpage'},
67 "<img src=/images/left.gif border=0 align=middle>";
69 print "<font size=+1>",&text('mail_pos', $s+1, $e+1,
70 scalar(@qfiles)),"</font>\n";
72 printf "<a href='list_mailq.cgi?start=%d'>%s</a>\n",
73 $s + $config{'perpage'},
74 "<img src=/images/right.gif border=0 align=middle>";
84 # Show the queued mails
85 $quarcount = &mailq_table([ @qfiles[$s .. $e] ], \%qmails);
87 # Show queue search form
88 print "<form action=mailq_search.cgi>\n";
89 print "<b>$text{'mailq_search'}</b>\n";
90 print "<select name=field>\n";
91 foreach $f ('from', 'subject', 'to', 'cc', 'date', 'status', 'body', 'headers', 'size', '',
92 '!from', '!subject', '!to', '!cc', '!date', '!status', '!body', '!headers', '!size') {
93 printf "<option value='%s'>%s\n", $f, $text{"match_$f"};
96 print "<input name=match size=20>\n";
97 print " <input type=submit value='$text{'mail_ok'}'>\n";
100 # Show flush button(s)
101 if ($access{'flushq'}) {
103 print &ui_buttons_start();
104 print &ui_buttons_row("flushq.cgi",
105 $text{'mailq_flush'},
106 $text{'mailq_flushdesc'});
108 print &ui_buttons_row("flushq.cgi",
109 $text{'mailq_flushquar'},
110 $text{'mailq_flushquardesc'},
111 &ui_hidden("quar", 1));
113 print &ui_buttons_row("list_mailq.cgi?$in",
114 $text{'mailq_refresh'},
115 $text{'mailq_refreshdesc'});
116 print &ui_buttons_end();
120 print "<b>$text{'mailq_none'}</b> <p>\n";
123 &ui_print_footer("", $text{'index_return'});