sub added_output { # # local settings - please adjust as needed # # where is greylist.conf etc. ? # my $BASE='/etc/mail/greylist'; my $GLT="$BASE.template"; my $GLN="$BASE.conf.NEW"; my $GLC="$BASE.conf"; # where are the system utilities 'awk', 'poprelayd', and 'cat' ? # my $awk='/bin/awk'; my $prd='/sbin/poprelayd'; my $cat='/bin/cat'; my $dif='/usr/bin/diff'; # # local settings - setup finished. # system(qq~$prd -p|$awk 'BEGIN{system("$cat $GLT");}{printf"addr \%s/32\\n",\$1;}'>$GLN~); my ($doit,$newf)=(0,0); if(-f $GLN) { $newf=1; if(-f $GLC) { my $result=`$dif -q $GLN $GLC > /dev/null`; my $ret=($? >> 8) & 127; $doit=1 if $ret==1; } else { $doit=1; } } if($doit) { rename($GLN,$GLC); # should probably spit out an error if it fails $doit=$newf=0; } elsif($newf) { unlink($GLN); # should probably spit out an error if it fails $newf=0; } }