全部博文(1144)
分类: LINUX
2009-12-09 11:45:28
#!/usr/local/bin/perl # chkusr concept code for serialmail # if I output 1, accept mail. my $SERIALMAIL_SUPPORT = 1; if(defined($SERIALMAIL_SUPPORT)){ ### just for this concept code my $email = shift; my ($user,$domain) = split /\@/, $email; die "bad syntax\n" unless(defined($user) && defined($domain)); ### my $homedir = '/var/qmail/autoturn'; unless(-d $homedir){ print "1"; # cant find homedir for queue; queue locally exit; } open(V, '/var/qmail/control/virtualdomains') || die "cannot open virtualdomains: $!\n"; while(){ chop; if(/^${domain}:autoturn-(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/){ my $ip = $1; $ip =~ s/\./:/g; # use colon's in the ip address instead of dots if(open(Q, "$homedir/.qmail-${ip}-default")){ my $firstline = ; if($firstline =~ /bounce-no-mailbox/){ # no ^ or $ # bouncing enabled if($user eq 'default'){ print "0"; # administrative address }else{ my ($first,$rest) = split /-/, $user; # we allow extension addresses if(-f "$homedir/.qmail-${ip}-${first}"){ print "1"; # username exists }else{ print "0"; # username doesnt exist } } }else{ print "1"; # bouncing not enabled } close Q; }else{ print "1"; # cant open .qmail-$ip-default, queue locally } last; } } close V; }