Sindbad~EG File Manager
| Current Path : /usr/src/ |
|
|
| Current File : //usr/src/check_mailq |
#! usrbinperl -w
# check_mailq - check to see how many messages are in the smtp queue awating
# transmittal.
#
# Initial version support sendmail's mailq command
# Support for mutiple sendmail queues (Carlos Canau)
# Support for qmail (Benjamin Schmid)
# License Information
# This program is free software; you can redistribute it andor modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA
#
############################################################################
use POSIX;
use strict;
use GetoptLong;
use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c $opt_t
$opt_M $mailq $status $state $msg $msg_q $msg_p $opt_W $opt_C $mailq @lines
%srcdomains %dstdomains);
use lib usrlocalnagioslibexec ;
use utils qw(%ERRORS &print_revision &support &usage );
sub print_help ();
sub print_usage ();
sub process_arguments ();
$ENV{'PATH'}='';
$ENV{'BASH_ENV'}='';
$ENV{'ENV'}='';
$PROGNAME = check_mailq;
$mailq = 'sendmail'; # default
$msg_q = 0 ;
$msg_p = 0 ;
$state = $ERRORS{'UNKNOWN'};
GetoptLongConfigure('bundling');
$status = process_arguments();
if ($status){
print ERROR processing argumentsn;
exit $ERRORS{UNKNOWN};
}
$SIG{'ALRM'} = sub {
print (ERROR timed out waiting for $utilsPATH_TO_MAILQ n);
exit $ERRORS{WARNING};
};
alarm($opt_t);
# switch based on MTA
if ($mailq eq sendmail) {
## open mailq
if ( defined $utilsPATH_TO_MAILQ && -x $utilsPATH_TO_MAILQ ) {
if (! open (MAILQ, $utilsPATH_TO_MAILQ ) ) {
print ERROR could not open $utilsPATH_TO_MAILQ n;
exit $ERRORS{'UNKNOWN'};
}
}elsif( defined $utilsPATH_TO_MAILQ){
unless (-x $utilsPATH_TO_MAILQ) {
print ERROR $utilsPATH_TO_MAILQ is not executable by (uid $gid($)))n;
exit $ERRORS{'UNKNOWN'};
}
} else {
print ERROR $utilsPATH_TO_MAILQ is not definedn;
exit $ERRORS{'UNKNOWN'};
}
# single queue empty
##varspoolmqueue is empty
# single queue 1
## varspoolmqueue (1 request)
##----Q-ID---- --Size-- -----Q-Time----- ------------SenderRecipient------------
##h32E30p01763 2782 Wed Apr 2 1503 silvaATkpnqwest.pt
## 8BITMIME
## silvaATeunet.pt
# multi queue empty
##varspoolmqueueq0df is empty
##varspoolmqueueq1df is empty
##varspoolmqueueq2df is empty
##varspoolmqueueq3df is empty
##varspoolmqueueq4df is empty
##varspoolmqueueq5df is empty
##varspoolmqueueq6df is empty
##varspoolmqueueq7df is empty
##varspoolmqueueq8df is empty
##varspoolmqueueq9df is empty
##varspoolmqueueqAdf is empty
##varspoolmqueueqBdf is empty
##varspoolmqueueqCdf is empty
##varspoolmqueueqDdf is empty
##varspoolmqueueqEdf is empty
##varspoolmqueueqFdf is empty
## Total Requests 0
# multi queue 1
##varspoolmqueueq0df is empty
##varspoolmqueueq1df is empty
##varspoolmqueueq2df is empty
## varspoolmqueueq3df (1 request)
##----Q-ID---- --Size-- -----Q-Time----- ------------SenderRecipient------------
##h32De2f23534 48 Wed Apr 2 1440 nocol
## nouserATEUnet.pt
## canau
##varspoolmqueueq4df is empty
##varspoolmqueueq5df is empty
##varspoolmqueueq6df is empty
##varspoolmqueueq7df is empty
##varspoolmqueueq8df is empty
##varspoolmqueueq9df is empty
##varspoolmqueueqAdf is empty
##varspoolmqueueqBdf is empty
##varspoolmqueueqCdf is empty
##varspoolmqueueqDdf is empty
##varspoolmqueueqEdf is empty
##varspoolmqueueqFdf is empty
## Total Requests 1
while (MAILQ) {
# match email addr on queue listing
if ( (.@..(w+.w+)) (.@(w+.w+)) ) {
my $domain = $1;
if (^w+) {
print $utilsPATH_TO_MAILQ = srcdomain = $domain n if $verbose ;
$srcdomains{$domain} ++;
}
next;
}
#
# ...
# sendmail considers a message with more than one destiny, say N, to the same MX
# to have N messages in queue.
# we will only consider one in this code
if (( s(replysreadserrorsfroms..(w+.w+).$ ) ( s(replysreadserrorsfroms(w+.w+).$ )
( s(timeoutswritingsmessagestos..(w+.w+). ) ( s(timeoutswritingsmessagestos(w+.w+). )
( s(hostsmapslookups(..(w+.w+)) ) ( s(hostsmapslookups((w+.w+)) )
( s(Deferreds.s..(w+.w+).) ) ( s(Deferreds.s(w+.w+).) ) ) {
print $utilsPATH_TO_MAILQ = dstdomain = $1 n if $verbose ;
$dstdomains{$1} ++;
}
if (s+(IOserror)) {
print $utilsPATH_TO_MAILQ = dstdomain = UNKNOWN n if $verbose ;
$dstdomains{'UNKNOWN'} ++;
}
# Finally look at the overall queue length
#
if (mqueue) {
print $utilsPATH_TO_MAILQ = $_ if $verbose ;
if ( ((d+) request) {
#
# single queue first line
# multi queue one for each queue. overwrite on multi queue below
$msg_q = $1 ;
}
} elsif (^s+TotalsRequestss(d+)$i) {
print $utilsPATH_TO_MAILQ = $_ n if $verbose ;
#
# multi queue last line
$msg_q = $1 ;
}
}
## close mailq
close (MAILQ);
if ( $ ) {
print CRITICAL Error code .($8). returned from $utilsPATH_TO_MAILQ,$;
exit $ERRORS{CRITICAL};
}
## shut off the alarm
alarm(0);
## now check the queue length(s)
if ($msg_q == 0) {
$msg = OK $mailq mailq is empty;
$state = $ERRORS{'OK'};
} else {
print msg_q = $msg_q warn=$opt_w crit=$opt_cn if $verbose;
# overall queue length
if ($msg_q $opt_w) {
$msg = OK $mailq mailq ($msg_q) is below threshold ($opt_w$opt_c);
$state = $ERRORS{'OK'};
}elsif ($msg_q = $opt_w && $msg_q $opt_c) {
$msg = WARNING $mailq mailq is $msg_q (threshold w = $opt_w);
$state = $ERRORS{'WARNING'};
}else {
$msg = CRITICAL $mailq mailq is $msg_q (threshold c = $opt_c);
$state = $ERRORS{'CRITICAL'};
}
# check for domain specific queue lengths if requested
if (defined $opt_W) {
# Apply threshold to queue lengths FROM domain
my @srckeys = sort { $srcdomains{$b} = $srcdomains{$a} } keys %srcdomains;
my $srcmaxkey = $srckeys[0];
print src max is $srcmaxkey with $srcdomains{$srcmaxkey} messagesn if $verbose;
if ($srcdomains{$srcmaxkey} = $opt_W && $srcdomains{$srcmaxkey} $opt_C) {
if ($state == $ERRORS{'OK'}) {
$msg = WARNING $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W);
$state = $ERRORS{'WARNING'};
} elsif (($state == $ERRORS{'WARNING'}) ($state == $ERRORS{'CRITICAL'})){
$msg .= -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W);
} else {
$msg = WARNING $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W);
$state = $ERRORS{'WARNING'};
}
} elsif ($srcdomains{$srcmaxkey} = $opt_C) {
if ($state == $ERRORS{'OK'}) {
$msg = CRITICAL $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C);
$state = $ERRORS{'CRITICAL'};
} elsif ($state == $ERRORS{'WARNING'}) {
$msg = CRITICAL $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C) -and- . $msg;
$msg =~ sWARNING ;
} elsif ($state == $ERRORS{'CRITICAL'}) {
$msg .= -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W);
} else {
$msg = CRITICAL $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W);
$state = $ERRORS{'CRITICAL'};
}
} else {
if ($srcdomains{$srcmaxkey} 0) {
$msg .= $srcdomains{$srcmaxkey} msgs. FROM $srcmaxkey is below threshold ($opt_W$opt_C);
}
}
# Apply threshold to queue lengths TO domain
my @dstkeys = sort { $dstdomains{$b} = $dstdomains{$a} } keys %dstdomains;
my $dstmaxkey = $dstkeys[0];
print dst max is $dstmaxkey with $dstdomains{$dstmaxkey} messagesn if $verbose;
if ($dstdomains{$dstmaxkey} = $opt_W && $dstdomains{$dstmaxkey} $opt_C) {
if ($state == $ERRORS{'OK'}) {
$msg = WARNING $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W);
$state = $ERRORS{'WARNING'};
} elsif (($state == $ERRORS{'WARNING'}) ($state == $ERRORS{'CRITICAL'})){
$msg .= -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W);
} else {
$msg = WARNING $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W);
$state = $ERRORS{'WARNING'};
}
} elsif ($dstdomains{$dstmaxkey} = $opt_C) {
if ($state == $ERRORS{'OK'}) {
$msg = CRITICAL $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C);
$state = $ERRORS{'CRITICAL'};
} elsif ($state == $ERRORS{'WARNING'}) {
$msg = CRITICAL $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C) -and- . $msg;
$msg =~ sWARNING ;
} elsif ($state == $ERRORS{'CRITICAL'}) {
$msg .= -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W);
} else {
$msg = CRITICAL $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W);
$state = $ERRORS{'CRITICAL'};
}
} else {
if ($dstdomains{$dstmaxkey} 0) {
$msg .= $dstdomains{$dstmaxkey} msgs. TO $dstmaxkey is below threshold ($opt_W$opt_C);
}
}
} # End of queue length thresholds
}
} # end of ($mailq eq sendmail)
elsif ( $mailq eq postfix ) {
## open mailq
if ( defined $utilsPATH_TO_MAILQ && -x $utilsPATH_TO_MAILQ ) {
if (! open (MAILQ, $utilsPATH_TO_MAILQ ) ) {
print ERROR could not open $utilsPATH_TO_MAILQ n;
exit $ERRORS{'UNKNOWN'};
}
}elsif( defined $utilsPATH_TO_MAILQ){
unless (-x $utilsPATH_TO_MAILQ) {
print ERROR $utilsPATH_TO_MAILQ is not executable by (uid $gid($)))n;
exit $ERRORS{'UNKNOWN'};
}
} else {
print ERROR $utilsPATH_TO_MAILQ is not definedn;
exit $ERRORS{'UNKNOWN'};
}
@lines = reverse MAILQ;
# close qmail-qstat
close MAILQ;
if ( $ ) {
print CRITICAL Error code .($8). returned from $utilsPATH_TO_MAILQ,$;
exit $ERRORS{CRITICAL};
}
## shut off the alarm
alarm(0);
# check queue length
if ($lines[0]=~Kbytes in (d+)) {
$msg_q = $1 ;
}elsif ($lines[0]=~Mail queue is empty) {
$msg_q = 0;
}else{
print Couldn't match $utilsPATH_TO_QMAIL_QSTAT outputn;
exit $ERRORS{'UNKNOWN'};
}
# check messages not processed
#if ($lines[1]=~^messages in queue but not yet preprocessed (d+)) {
# my $msg_p = $1;
#}else{
# print Couldn't match $utilsPATH_TO_QMAIL_QSTAT outputn;
# exit $ERRORS{'UNKNOWN'};
#}
# check queue length(s)
if ($msg_q == 0){
$msg = OK $mailq mailq reports queue is empty;
$state = $ERRORS{'OK'};
} else {
print msg_q = $msg_q warn=$opt_w crit=$opt_cn if $verbose;
# overall queue length
if ($msg_q $opt_w) {
$msg = OK $mailq mailq ($msg_q) is below threshold ($opt_w$opt_c);
$state = $ERRORS{'OK'};
}elsif ($msg_q = $opt_w && $msg_q $opt_c) {
$msg = WARNING $mailq mailq is $msg_q (threshold w = $opt_w);
$state = $ERRORS{'WARNING'};
}else {
$msg = CRITICAL $mailq mailq is $msg_q (threshold c = $opt_c);
$state = $ERRORS{'CRITICAL'};
}
# check messages not yet preprocessed (only compare is $opt_W and $opt_C
# are defined)
#if (defined $opt_W) {
# $msg .= [Preprocessed = $msg_p];
# if ($msg_p = $opt_W && $msg_p $opt_C ) {
# $state = $state == $ERRORS{CRITICAL} $ERRORS{CRITICAL} $ERRORS{WARNING} ;
# }elsif ($msg_p = $opt_C ) {
# $state = $ERRORS{CRITICAL} ;
# }
#}
}
} # end of ($mailq eq postfix)
elsif ( $mailq eq qmail ) {
# open qmail-qstat
if ( defined $utilsPATH_TO_QMAIL_QSTAT && -x $utilsPATH_TO_QMAIL_QSTAT ) {
if (! open (MAILQ, $utilsPATH_TO_QMAIL_QSTAT ) ) {
print ERROR could not open $utilsPATH_TO_QMAIL_QSTAT n;
exit $ERRORS{'UNKNOWN'};
}
}elsif( defined $utilsPATH_TO_QMAIL_QSTAT){
unless (-x $utilsPATH_TO_QMAIL_QSTAT) {
print ERROR $utilsPATH_TO_QMAIL_QSTAT is not executable by (uid $gid($)))n;
exit $ERRORS{'UNKNOWN'};
}
} else {
print ERROR $utilsPATH_TO_QMAIL_QSTAT is not definedn;
exit $ERRORS{'UNKNOWN'};
}
@lines = MAILQ;
# close qmail-qstat
close MAILQ;
if ( $ ) {
print CRITICAL Error code .($8). returned from $utilsPATH_TO_MAILQ,$;
exit $ERRORS{CRITICAL};
}
## shut off the alarm
alarm(0);
# check queue length
if ($lines[0]=~^messages in queue (d+)) {
$msg_q = $1 ;
}else{
print Couldn't match $utilsPATH_TO_QMAIL_QSTAT outputn;
exit $ERRORS{'UNKNOWN'};
}
# check messages not processed
if ($lines[1]=~^messages in queue but not yet preprocessed (d+)) {
my $msg_p = $1;
}else{
print Couldn't match $utilsPATH_TO_QMAIL_QSTAT outputn;
exit $ERRORS{'UNKNOWN'};
}
# check queue length(s)
if ($msg_q == 0){
$msg = OK qmail-qstat reports queue is empty;
$state = $ERRORS{'OK'};
} else {
print msg_q = $msg_q warn=$opt_w crit=$opt_cn if $verbose;
# overall queue length
if ($msg_q $opt_w) {
$msg = OK $mailq mailq ($msg_q) is below threshold ($opt_w$opt_c);
$state = $ERRORS{'OK'};
}elsif ($msg_q = $opt_w && $msg_q $opt_c) {
$msg = WARNING $mailq mailq is $msg_q (threshold w = $opt_w);
$state = $ERRORS{'WARNING'};
}else {
$msg = CRITICAL $mailq mailq is $msg_q (threshold c = $opt_c);
$state = $ERRORS{'CRITICAL'};
}
# check messages not yet preprocessed (only compare is $opt_W and $opt_C
# are defined)
if (defined $opt_W) {
$msg .= [Preprocessed = $msg_p];
if ($msg_p = $opt_W && $msg_p $opt_C ) {
$state = $state == $ERRORS{CRITICAL} $ERRORS{CRITICAL} $ERRORS{WARNING} ;
}elsif ($msg_p = $opt_C ) {
$state = $ERRORS{CRITICAL} ;
}
}
}
} # end of ($mailq eq qmail)
elsif ( $mailq eq exim ) {
## open mailq
if ( defined $utilsPATH_TO_MAILQ && -x $utilsPATH_TO_MAILQ ) {
if (! open (MAILQ, $utilsPATH_TO_MAILQ ) ) {
print ERROR could not open $utilsPATH_TO_MAILQ n;
exit $ERRORS{'UNKNOWN'};
}
}elsif( defined $utilsPATH_TO_MAILQ){
unless (-x $utilsPATH_TO_MAILQ) {
print ERROR $utilsPATH_TO_MAILQ is not executable by (uid $gid($)))n;
exit $ERRORS{'UNKNOWN'};
}
} else {
print ERROR $utilsPATH_TO_MAILQ is not definedn;
exit $ERRORS{'UNKNOWN'};
}
while (MAILQ) {
#22m 1.7K 19aEEr-0007hx-Dy frozen
#root@exlixams.glups.fr
if (s[wd]{6}-[wd]{6}-[wd]{2}s) { # message id 19aEEr-0007hx-Dy
$msg_q++ ;
}
}
close(MAILQ) ;
if ( $ ) {
print CRITICAL Error code .($8). returned from $utilsPATH_TO_MAILQ,$;
exit $ERRORS{CRITICAL};
}
if ($msg_q $opt_w) {
$msg = OK $mailq mailq ($msg_q) is below threshold ($opt_w$opt_c);
$state = $ERRORS{'OK'};
}elsif ($msg_q = $opt_w && $msg_q $opt_c) {
$msg = WARNING $mailq mailq is $msg_q (threshold w = $opt_w);
$state = $ERRORS{'WARNING'};
}else {
$msg = CRITICAL $mailq mailq is $msg_q (threshold c = $opt_c);
$state = $ERRORS{'CRITICAL'};
}
} # end of ($mailq eq exim)
elsif ( $mailq eq nullmailer ) {
## open mailq
if ( defined $utilsPATH_TO_MAILQ && -x $utilsPATH_TO_MAILQ ) {
if (! open (MAILQ, $utilsPATH_TO_MAILQ ) ) {
print ERROR could not open $utilsPATH_TO_MAILQ n;
exit $ERRORS{'UNKNOWN'};
}
}elsif( defined $utilsPATH_TO_MAILQ){
unless (-x $utilsPATH_TO_MAILQ) {
print ERROR $utilsPATH_TO_MAILQ is not executable by (uid $gid($)))n;
exit $ERRORS{'UNKNOWN'};
}
} else {
print ERROR $utilsPATH_TO_MAILQ is not definedn;
exit $ERRORS{'UNKNOWN'};
}
while (MAILQ) {
#2006-06-22 160000 282 bytes
if (^[1-9][0-9]-[01][0-9]-[0-3][0-9]s[0-2][0-9][0-2][0-9][0-2][0-9]s{2}[0-9]+sbytes$) {
$msg_q++ ;
}
}
close(MAILQ) ;
if ($msg_q $opt_w) {
$msg = OK $mailq mailq ($msg_q) is below threshold ($opt_w$opt_c);
$state = $ERRORS{'OK'};
}elsif ($msg_q = $opt_w && $msg_q $opt_c) {
$msg = WARNING $mailq mailq is $msg_q (threshold w = $opt_w);
$state = $ERRORS{'WARNING'};
}else {
$msg = CRITICAL $mailq mailq is $msg_q (threshold c = $opt_c);
$state = $ERRORS{'CRITICAL'};
}
} # end of ($mailq eq nullmailer)
# Perfdata support
print $msgunsent=$msg_q;$opt_w;$opt_c;0n;
exit $state;
#####################################
#### subs
sub process_arguments(){
GetOptions
(V = $opt_V, version = $opt_V,
v = $opt_v, verbose = $opt_v,
h = $opt_h, help = $opt_h,
Ms = $opt_M, mailservers = $opt_M, # mailserver (default sendmail)
w=i = $opt_w, warning=i = $opt_w, # warning if above this number
c=i = $opt_c, critical=i = $opt_c, # critical if above this number
t=i = $opt_t, timeout=i = $opt_t
);
if ($opt_V) {
print_revision($PROGNAME,'2.0.2');
exit $ERRORS{'OK'};
}
if ($opt_h) {
print_help();
exit $ERRORS{'OK'};
}
if (defined $opt_v ){
$verbose = $opt_v;
}
unless (defined $opt_t) {
$opt_t = $utilsTIMEOUT ; # default timeout
}
unless ( defined $opt_w && defined $opt_c ) {
print_usage();
exit $ERRORS{'UNKNOWN'};
}
if ( $opt_w = $opt_c) {
print Warning (-w) cannot be greater than Critical (-c)!n;
exit $ERRORS{'UNKNOWN'};
}
if (defined $opt_W && ! defined !$opt_C) {
print Need -C if using -Wn;
exit $ERRORS{'UNKNOWN'};
}elsif(defined $opt_W && defined $opt_C) {
if ($opt_W = $opt_C) {
print Warning (-W) cannot be greater than Critical (-C)!n;
exit $ERRORS{'UNKNOWN'};
}
}
if (defined $opt_M) {
if ($opt_M =~ ^(sendmailqmailpostfixeximnullmailer)$) {
$mailq = $opt_M ;
}elsif( $opt_M eq ''){
$mailq = 'sendmail';
}else{
print -M $opt_M is not supportedn;
exit $ERRORS{'UNKNOWN'};
}
}else{
if (defined $utilsPATH_TO_QMAIL_QSTAT
&& -x $utilsPATH_TO_QMAIL_QSTAT)
{
$mailq = 'qmail';
}
elsif (-d 'varlibpostfix' -d 'varlocallibpostfix'
-e 'usrsbinpostfix' -e 'usrlocalsbinpostfix')
{
$mailq = 'postfix';
}
elsif (-d 'usrlibexim4' -d 'usrlocallibexim4'
-e 'usrsbinexim' -e 'usrlocalsbinexim')
{
$mailq = 'exim';
}
elsif (-d 'usrlibnullmailer' -d 'usrlocallibnullmailer'
-e 'nullmailer-send'
-e 'nullmailer-send')
{
$mailq = 'nullmailer';
}
else {
$mailq = 'sendmail';
}
}
return $ERRORS{'OK'};
}
sub print_usage () {
print Usage $PROGNAME -w warn -c crit [-W warn] [-C crit] [-M MTA] [-t timeout] [-v verbose]n;
}
sub print_help () {
print_revision($PROGNAME,'2.0.2');
print Copyright (c) 2002 Subhendu GhoshCarlos CanauBenjamin Schmidn;
print n;
print_usage();
print n;
print Checks the number of messages in the mail queue (supports multiple sendmail queues, qmail)n;
print Feedbackpatches to support non-sendmail mailqueue welcomenn;
print -w (--warning) = Min. number of messages in queue to generate warningn;
print -c (--critical) = Min. number of messages in queue to generate critical alert ( w c )n;
print -W (--Warning) = Min. number of messages for same domain in queue to generate warningn;
print -C (--Critical) = Min. number of messages for same domain in queue to generate critical alert ( W C )n;
print -t (--timeout) = Plugin timeout in seconds (default = $utilsTIMEOUT)n;
print -M (--mailserver) = [ sendmail qmail postfix exim nullmailer ] (default = autodetect)n;
print -h (--help)n;
print -V (--version)n;
print -v (--verbose) = debugging outputn;
print nn;
print Note -w and -c are required arguments. -W and -C are optional.n;
print -W and -C are applied to domains listed on the queues - both FROM and TO. (sendmail)n;
print -W and -C are applied message not yet preproccessed. (qmail)n;
print This plugin tries to autodetect which mailserver you are running,n;
print you can override the autodetection with -M.n;
print This plugin uses the system mailq command (sendmail) or qmail-stat (qmail)n;
print to look at the queues. Mailq can usually only be accessed by root or n;
print a TrustedUser. You will have to set appropriate permissions for the plugin to work.n;
print ;
print nn;
support();
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists