#!/usr/bin/perl use warnings; use strict; ############################################################################################################################################ # Skript loescht alle Systemmails die älter als 30 Tage sind durch Vergleich der Zeitstempel## # ############################################################################################ use File::stat; use Time::localtime; use Date::Parse; ########################################################################################################################################## ############################################################################################################################################# my $path ="/var/mail/"; my $mail ="/var/mail/root"; my $log ="/home/uli/logs"; my $logfile =">$log/maillog.txt"; ############################################################################################################################################ my $mail_date_string = ctime(stat($mail)->mtime); # das aktuelle Datum my $time_now = localtime; my $time_file_in_seconds = str2time($mail_date_string); my $time_now_in_seconds = str2time($time_now); my $max_age = 2592000; # 30 Tage in Sekunden ######################################################################################################################################### opendir(DIR,$path) or die "ERROR: Cannot open directory: '$path': $!\n"; my @remove = readdir(DIR); close(DIR); ######################################################################################################################################### open(LOGFILE, $logfile) or die "Cannot open LOGFILE:$logfile $!\n"; ########################################################################################################################################## print "\t ### START FUNCTION CLEAN NOW! ### \n"; &CLEAN($path); print "#\n#\n# WRITE TO LOGFILE $logfile !\n#\n#\n"; open(LOGFILE, ">$logfile") or die "Cannot open LOGFILE:$logfile $!\n"; close LOGFILE; ################################################################################################################################ ########################################################################################################################################### sub CLEAN { my $diff = -M $mail; foreach my $entry (@remove) { if($diff > $max_age) { print LOGFILE "\t mail older than 30 days found \n"; } # END if elsif(unlink $entry) { print LOGFILE "\t delete mail $entry \n"; } # END elsif else { print LOGFILE "\t no mails older than 30 days found \n"; } # END else } # END Foreach } # END sub