INIT {
require Sys::Syslog;
- Sys::Syslog::openlog("lacemail","pid","mail");
+ Sys::Syslog::openlog("perlmail","pid","mail");
my @syslogging_stack;
sub syslogging_on_save
{
my $HOME="/home/lace";
my $Mail="$HOME/Mail";
my @ValidUsers=qw(root lace short kratochvil _local);
-my $IdleMax=120;
+my $IdleMax=10;
my $MaxBodySMS=0x1000; # max bytes to pass to Lingua::EN::Squeeze
my $SMSmailError='short+err@ucw.cz';
my @SMSwebRcpt=qw(420 602 431329);
my $SMScontact='<short@ucw.cz>';
our($Message,$Audit,@AuditStored,$store_ignore,$store_ignorenewmail,$store_profile,$DoBell);
-our(%audit_profile,@sms_squeezes,@alternates_host); # imported
+our(%audit_profile,@sms_squeezes,@alternates_host,@dnsbl_whitelist); # imported
my %alternates_host; # from @alternates_host
+my %dnsbl_whitelist; # from @dnsbl_whitelist
# from RedHat "procmail-3.22-5"
# /i should be only $procmailFROM_DAEMON but how it can hurt to /i all?
exit 0;
}
-# FIXME: separate 'lacemail'-transfer together with lacemail-submit away
+# FIXME: separate 'perlmail'-transfer together with perlmail-submit away
sub inetd
{
die "Excessive arguments" if @ARGV;
sub useridle
{
- return 0 if ! -e $ENV{"HOME"}."/idle";
+ return 0 if ! -e "$HOME/away";
my %valid_users=map(($_=>1),@ValidUsers);
my($idlebest,$linebest);
for my $utmp (User::Utmp::getut(),{ "ut_line"=>"psaux" }) {
push @AuditStored,$folder if $do{"did"};
return if $store_ignore || $opt_dry;
$DoBell++ if $do{"bell"};
- write_message($folder);
+ write_message($folder) or die;
smssend_tryall $store_ignorenewmail,$do{"sms"},%args if $do{"sms"};
}
local $Audit=Mail::Audit->new(
"emergency"=>"$Mail/emergency",
"data"=>[map("$_\n",split("\n",$message))],
- "log"=>"$HOME/.lacemail.log",
+ "log"=>"$HOME/.perlmail.log",
"loglevel"=>99,
);
local @AuditStored=();
do { smssend 0,$opt_smstest; return; } if $opt_smstest;
- write_message("$Mail/input");
+ write_message("$Mail/input") or die;
audit();
warn 'Corrupted $_, repaired' if defined($save_)!=defined($_) || (defined($_) && $save_ ne $_);
}
open CHILD,'|'
.'('.'(razor-check 2>&1;echo >&3 $?)'
.'|sed "s/^/razor-check: /"'
- .'|logger -t "lacemail['.$$.']" -p mail.crit'
+ .'|logger -t "perlmail['.$$.']" -p mail.crit'
.') 3>&1'
.'|exit `cat`'
or return 0;
return @r;
}
-my %dnsbl_whitelist=map(($_=>1),(
- "195.250.128.83" # smtp3.vol.cz; 83.128.250.195.blackholes.five-ten-sg.com
- ));
-
# Extended Mail::Audit::MAPS
# $domain,$full,[$timeout]
sub dnsbl
$timeout||=30; # sec
$Mail::Audit::MAPS::host=$domain;
my @hosts=map({ s/^.*://; "[$_]"; } # strip DNS part
- grep({ /^([^:@]*):/ && !$alternates_host{$1} # leave only foreign hosts
- && !$dnsbl_whitelist{$1}; } (Received_for()))
+ grep({ /^([^:@]*):/ # $1 is DNS name, $' is IP address
+ && !$alternates_host{$1} # leave only foreign hosts
+ && !$dnsbl_whitelist{$'}; } (Received_for()))
);
splice @hosts,1 if !$full && @hosts; # "&& @hosts" to prevent: WARN: splice() offset past end of array
{
}
# FIXME: Unify
-# BEGIN lacemail-sendmail
+# BEGIN perlmail-sendmail
# return: Mail::Address instance or undef()
sub parseone
{
warn "Got ".scalar(@r)." addresses while wanting just one; when parsing: $line" if 1!=@r;
return $r[0];
}
-# END lacemail-sendmail
+# END perlmail-sendmail
# FIXME: host may get multiple recipients and thus not showing "for <...>"
# FIXME: muttrc_get("from") is too strict
$text=~s/\b\Q$from\E\b/$to/gsi;
}
return if $text eq $orig;
- $Audit->put_header("X-LaceMail-header_remap-$header",$orig);
+ $Audit->put_header("X-PerlMail-header_remap-$header",$orig);
$Audit->replace_header($header,$text);
}
eval <AUDIT> or die "eval \"$filenameMyAudit\": $@";
audit_init();
%alternates_host=map((lc($_)=>1),@alternates_host);
+ %dnsbl_whitelist=map(( $_ =>1),@dnsbl_whitelist);
}
close AUDIT or warn "close \"$filenameMyAudit\": $!";