Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5359608
  • 博文数量: 1144
  • 博客积分: 11974
  • 博客等级: 上将
  • 技术积分: 12312
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-13 20:06
文章存档

2017年(2)

2016年(14)

2015年(10)

2014年(28)

2013年(23)

2012年(29)

2011年(53)

2010年(86)

2009年(83)

2008年(43)

2007年(153)

2006年(575)

2005年(45)

分类: 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;
}
阅读(471) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~