File: sendmail-largeboxes

package info (click to toggle)
logwatch 7.14-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,572 kB
  • sloc: perl: 8,290; sh: 354; makefile: 38
file content (76 lines) | stat: -rw-r--r-- 2,747 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

########################################################
# Please file all bug reports, patches, and feature
# requests under:
#      https://sourceforge.net/p/logwatch/_list/tickets
# Help requests and discusion can be filed under:
#      https://sourceforge.net/p/logwatch/discussion/
########################################################

#######################################################
## Copyright (c) 2008 Colin Smith <Colin.Smith@fantasie.org.uk>
## Covered under the included MIT/X-Consortium License:
##    http://www.opensource.org/licenses/mit-license.php
## All modifications and contributions by other persons to
## this script are assumed to have been donated to the
## Logwatch project and thus assume the above copyright
## and licensing terms.  If you want to make contributions
## under your own copyright or a different license this
## must be explicitly stated in the contribution an the
## Logwatch project reserves the right to not accept such
## contributions.  If you have made significant
## contributions to this script and want to claim
## copyright please contact logwatch-devel@lists.sourceforge.net.
#########################################################

use strict;
use POSIX;

my $SPOOLDIR = '';
my $sizethresh = defined $ENV{sendmail_largeboxes_size} ? uc $ENV{sendmail_largeboxes_size} : 40960000;
my $title = "Large Mailbox threshold: $sizethresh";
my $sizebytes = $sizethresh;
if ($sizethresh =~ /^(\d+)TB?$/i) {
  $sizebytes = $1 * 1024 ** 4;
} elsif ($sizethresh =~ /^(\d+)GB?$/i) {
  $sizebytes = $1 * 1024 ** 3;
} elsif ($sizethresh =~ /^(\d+)MB?$/i) {
  $sizebytes = $1 * 1024 ** 2;
} elsif ($sizethresh =~ /^(\d+)KB?$/i) {
  $sizebytes = $1 * 1024;
}
$title .= ($sizethresh ne $sizebytes) ? " ($sizebytes bytes)\n" : "\n";

# $hostname may be fully-qualified name
my ($OSname, $hostname, $release, $version, $machine) = POSIX::uname();
$hostname =~ s/\..*//;
exit (0) if ($ENV{'LOGWATCH_ONLY_HOSTNAME'} and ($ENV{'LOGWATCH_ONLY_HOSTNAME'} ne $hostname));

if (-e "/var/mail") {
	$SPOOLDIR = "/var/mail";
} elsif ( -e "/var/spool/mail") {
	$SPOOLDIR = "/var/spool/mail";
} else {
	print "Can't find spool directory\n";
}

if ($SPOOLDIR) {
	opendir(DIR, "$SPOOLDIR") || die "Can not opendir $SPOOLDIR: $!\n";
	my @files = grep {!/^\./} readdir(DIR);
	closedir DIR;

	for my $filename (@files) {
		my $checksize = (stat("$SPOOLDIR/$filename"))[7];
               if ($checksize >= $sizebytes) {
                       print "$title Warning: Large mailbox: $filename ($checksize)\n";
                       $title = "";  # only print at start of report
		}
	}
}

# vi: shiftwidth=3 tabstop=3 syntax=perl et
# Local Variables:
# mode: perl
# perl-indent-level: 3
# indent-tabs-mode: nil
# End: