123 lines
4.1 KiB
Text
123 lines
4.1 KiB
Text
$NetBSD: patch-aa,v 1.1.1.1 2009/09/22 17:41:07 taca Exp $
|
|
|
|
--- mailtools/scan-mail.pl.orig 2008-01-19 23:53:47.000000000 +0900
|
|
+++ mailtools/scan-mail.pl
|
|
@@ -81,11 +81,6 @@
|
|
|
|
use strict;
|
|
|
|
-# scan-mail.pl is in mailtools/scan-mail.pl, add mailtools/Anomy/bin
|
|
-# to @INC to find Anomy::
|
|
-use FindBin '$Bin';
|
|
-use lib "$Bin/../perl/lib";
|
|
-
|
|
use Socket;
|
|
use Anomy::Sanitizer ();
|
|
use Anomy::Sanitizer::FProt::Client ();
|
|
@@ -130,7 +125,7 @@ my @CONFIG_HARD = (
|
|
|
|
my %CONFIG_SOFT = (
|
|
# unknown=='check next rule'
|
|
- SCANMAIL_SCANLIST => ['file_list_1=.*','file_list_1_policy=unknown:unknown:drop:drop', 'file_list_1_scanner = 0:1:2:builtin/fpscand %FILENAME'],
|
|
+ SCANMAIL_SCANLIST => ['file_list_1=.*','file_list_1_policy=unknown:unknown:drop:unknown', 'file_list_1_scanner = 0:1:2:builtin/fpscand %FILENAME'],
|
|
SCANMAIL_BANLIST => ['file_list_2 =','file_list_2_policy=drop', 'file_list_2_scanner=0'],
|
|
SCANMAIL_STOPLIST => ['file_list_3 =','file_list_3_policy=save', 'file_list_3_scanner=0']
|
|
);
|
|
@@ -201,6 +196,7 @@ if (my $val = $conf->{SCANMAIL_LOGLEVEL}
|
|
# script, this is fugly
|
|
#
|
|
|
|
+my $datadir = "@VARDIR@";
|
|
my $debug = 0;
|
|
my $verbose = 0;
|
|
my $quarantine = 0;
|
|
@@ -210,7 +206,7 @@ my $milter_cf = '/etc/mail/sendmai
|
|
my $milter_conn = undef;
|
|
my $milter_name = 'fp-milter';
|
|
my $milter_pid = undef;
|
|
-my $fprot_milter = "$Bin/../mailtools/fp-milter";
|
|
+my $fprot_milter = "@FPROTDIR@/fp-milter";
|
|
my $postfix = 0;
|
|
my $postfix_ret = undef;
|
|
my $server = 0;
|
|
@@ -219,7 +215,8 @@ my $proxy = 0;
|
|
my $proxy_addr = '0.0.0.0:25';
|
|
my $smtp_addr = '127.0.0.1:26';
|
|
my $backup = 0;
|
|
-my $backup_location = "$Bin/../backup/";
|
|
+my $backup_location = "$datadir/backup/";
|
|
+my $pid_file = "$datadir/scan-mail.pid";
|
|
|
|
# use this for really complex configuration of
|
|
# scan-mail. /etc/f-prot.conf should take care of the simple things
|
|
@@ -239,7 +236,7 @@ if (my $val = $conf->{SCANMAIL_DROP_MALW
|
|
# The temporary dir to use for files that are scanned and tmp data
|
|
# produced elsewhere (via tmpfile) in the program
|
|
my $TMPDIR = do {
|
|
- my $tmp = '/tmp'; # default
|
|
+ my $tmp = '/var/tmp'; # default
|
|
|
|
if ($ENV{TMPDIR} and $ENV{TMPDIR} ne $tmp) {
|
|
$tmp = $ENV{TMPDIR};
|
|
@@ -441,9 +438,10 @@ if ($daemon)
|
|
defined(my $pid = fork) or die "Can't fork: $!";
|
|
exit if $pid;
|
|
setsid or die "Can't start a new session: $!";
|
|
- open PID_FILE, '>/var/run/scan-mail.pid' or die "Can't open pid file: $!";
|
|
- print PID_FILE $$;
|
|
+ open PID_FILE, ">$pid_file" or die "Can't open pid file: $!";
|
|
+ print PID_FILE "$$\n";
|
|
close PID_FILE;
|
|
+ $SIG{'TERM'} = $SIG{'HUP'} = \&clean_up;
|
|
open STDERR, '>&STDOUT' or die "Can't dup stdout: $!";
|
|
}
|
|
|
|
@@ -602,6 +600,12 @@ else
|
|
|
|
##[ Subroutines ]##############################################################
|
|
|
|
+sub clean_up
|
|
+{
|
|
+ unlink($pid_file);
|
|
+ exit(0);
|
|
+}
|
|
+
|
|
# proxy address, smtp address
|
|
sub run_smtp_proxy
|
|
{
|
|
@@ -1020,7 +1024,7 @@ sub do_scan
|
|
my $subdir = "/".$m.$d."/";
|
|
unless (-d $backup_location)
|
|
{
|
|
- unless (mkdir($backup_location,1777))
|
|
+ unless (mkdir($backup_location,1777) or $!{'EEXIST'})
|
|
{
|
|
my $err = "Unable to create backup basedir $backup_location: $!";
|
|
syslog err => $err;
|
|
@@ -1032,7 +1036,7 @@ sub do_scan
|
|
|
|
unless(-d $pathto)
|
|
{
|
|
- unless (mkdir($pathto,1777))
|
|
+ unless (mkdir($pathto,1777) or $!{'EEXIST'})
|
|
{
|
|
my $err = "Unable to create backup subdir $pathto: $!";
|
|
syslog err => $err;
|
|
@@ -1080,7 +1084,16 @@ sub do_scan
|
|
}
|
|
|
|
# Try to delete the directory. Will fail unless it's empty.
|
|
- rmdir($pathto);
|
|
+ # rmdir($pathto);
|
|
+ #
|
|
+ # But it cause some race, keep the directory and remove it by
|
|
+ # another script using find command or execute same functionality
|
|
+ # in this script.
|
|
+ #
|
|
+ # #!/bin/sh
|
|
+ # cd $backup_location
|
|
+ # find . -type d -name '[0-1]*' -mtime +7 rmdir {} \; >/dev/null 2>&1
|
|
+ #
|
|
}
|
|
else
|
|
{
|