mailfiter 过滤ip

 

#--------ip filter------------
if(/^Received: from (.*) by (.*)/)
{
   FROMIP=$MATCH1
   if($FROMIP ne "")
   {
       if (lookup($FROMIP, ".blockip"))
       {
          echo "[block ip]::$FROMIP::F:$SENDER,T:$EXT@$HOST,drop letter"
          to /dev/null
          exit
       }

   }
}

 

log4perl使用-按照日期划分log文件

http://search.cpan.org/~mschilli/Log-Log4perl/

首先 安装log4perl

perl -MCPAN -e "install Log::Log4perl"

 

windows中的ActivePerl 可以用ppm来安装

下面是例子

use strict;
use warnings;
use Cwd;
my $curdir = getcwd;

use Log::Log4perl;

#按照日期来分割log文件
use POSIX qw(strftime);
my $log_file = "subject".strftime("%Y-%m-%d", localtime(time)).".log";

my $conf = qq{
    log4perl.category.Foo.Bar = INFO,Logfile
    log4perl.appender.Logfile = Log::Log4perl::Appender::File
    log4perl.appender.Logfile.filename = $curdir/$log_file
    log4perl.appender.Logfile.layout = Log::Log4perl::Layout::PatternLayout
    log4perl.appender.Logfile.layout.ConversionPattern = %d{20y-M-d H:m:s:S} %F %L - %m%n
};

#初始化 log4perl 配制文件
Log::Log4perl::init (\$conf);
my $log = Log::Log4perl::get_logger("Foo::Bar");
$log->info("信息  ");



 

 

-------------

另外 $conf 配置也可以写在文件里面:

Log::Log4perl::init("log3perl.conf");

qmail .mailfilter 过滤中文标题垃圾邮件

 

if(/^Subject:.*/)
{
    SUBJECT=$MATCH  #提取出base64编码的邮件标题
    #echo "[subject]::$SUBJECT"
} 
if ($SUBJECT ne "")
{ 
   #将标题转换为中文 
   #maildecod 请访问http://hello386.is-programmer.com/posts/25736.html
   
   NSUB=`/usr/local/sbin/maildecod $SUBJECT` 
   #echo "[NSUB]::$NSUB"
}
if (lookup($NSUB, ".badsubject"))
{
       echo "[bad_subject]::$SUBJECT::F:$SENDER,T:$EXT@$HOST,drop letter"
       to /dev/null
       exit
}

 

将qmail邮件标题从base64转换为中文

 

#!/usr/bin/perl

$sub=join(" ",@ARGV);  
    if ($sub=~ /=\?\S+\?\l(\S)\?/) {  
      if ($1 =~ /[Qq]/) {  
        $sub=decode_qp($sub);  
      }  
      elsif ($1 =~ /[Bb]/) {  
        $sub=decode_base64($sub);  
      }  
    }  
    elsif ($sub=~ /=[a-fA-F0-9][a-fA-F0-9]/) {  
      $sub=decode_qp($sub);  
    }  
    $subject.=$sub;  
    $subject=~s/\'/\\\'/g;  
    $subject=~s/\"/\\\"/g;  


print $subject; 
# for test 
#最好是将生成的subject.log copy一份,在这个基础上修改成为badsubject 主要是怕编码不对
#open(FILE,">> /tmp/subject.log");
#print FILE "$subject\n";
#close(FILE);



sub decode_qp {  
        my($string) = @_;  
        @buffer=split(/\?/,$string);  
        $string = $buffer[3] if ($buffer[3] ne "");  
        $string =~ s/=([\da-fA-F]{2})/pack("C", hex($1))/ge;  
        $string =~ /\?=(.*)/;  
        $string =~ tr/_/ /;  
        $buffer[4]=~s/^=//;  
        $buffer[0]=~s/=$//;  
        $string="$buffer[0]$string$buffer[4]";  
        return($string);  
}  
  
sub decode_base64 {  
        my($string) = @_;  
        my($string2);  
        @buffer=split(/\?/,$string);  
        $string = $buffer[3] if ($buffer[3] ne "");  
        $string =~ s/=+$//;  
        $string =~ tr|A-Za-z0-9+/| -_|;  
        while($string =~ /(.{1,60})/gs) {  
                my($string3) = chr(32+length($1)*3/4);  
                $string2 .= unpack("u",$string3 . $1 );  
        }  
        $buffer[4]=~s/^=//;  
        $buffer[0]=~s/=$//;  
        $string2="$buffer[0]$string2$buffer[4]";  
        return($string2);  
}

 

Perl命令行应用介绍[转]

作 者: Dave Cross 发 表:August 10, 2004 原 名: Perl Command-Line Options 原 文:http://www.perl.com/pub/a/2004/08/09/commandline.html 译 者: "Qiang":qiang

perl 判断文件是否存在并创建目录

use   File::Path;
if(-e $x) { #abc.txt是否存在? 
# 存在操作 
} else { 
printf "文件不存在。\n";
 my   $path='F:/01/012/013;  
  eval{mkpath($path,0,0755)};  
  if($@)  
  {  
        warn("Make   path   [$path]   failed:\n$@");  
  }   

 

Perl文件及目录操作

来源:http://www.blogjava.net/weidagang2046/articles/61995.html
 
大多数程序都不是孤立的,它们与它们的环境相互作用。很多的程序也需要通过文件操作实现数据的存贮和交换。 文件句柄(file handle)是Perl程序中为程序和外部世界提供I/O连接的名称。建议全部使用大写字母以示与变量等的区别。特别地,也可以将STDIN/STDOUT/STDERR也认为 是Perl的文件句柄,分别代表标准输入/标准输出/标准错误输出。 

perl 修改文件

 

#perl 修改文件

use Tie::File;
my $file="E:\\work\\weblizer\\webalizer.conf";

tie @array, 'Tie::File', $file, or die ('open out file failed');
$array[0] = "sssss; #修改第一行
print $array[1]  #输出第二行
#修改完毕
untie @array;

 

详细请google Tie::File  之 

 

prel 操作注册表

perl 操作注册表函数 查看全文请猛击标题 *_*

PERL,执行ORACLE存储过程.

 

$dbh->do("
BEGIN
procName;
END;
"
);

 


多谢 beckheng 和 Justin

#一下是个例子

use DBI;

$dbname="XXTDB"#数据库名称

$user="scott";    #用户名

$passwd="xxt";    #密码

$dbh="";

print "------------------------------------------\n";
print "                 by kuaidao               \n";
print "          e-mail: maxiaodou at 126.com    \n";
print "------------------------------------------\n";

print "connect the db $dbname.....\n";

#连接数据库
$dbh = DBI->connect("dbi:Oracle:$dbname",$user,$passwd) or die "can't connect todatabase ". DBI-errstr;

#开始执行存储过程  REP_MAP
$dbh->do("
BEGIN
REP_MAP;
END;
"
);

$dbh->disconnect;
print " ok  DB disconnect\n"