############################
#说明:web界面添加email的Perl程序不完整版
#名称:webadmin.cgi
#系统环境:Freebsd、Mod_Perl、MySQL、Apache、Apache::DBI、PostFix 2.x、igenus for postfix 1.0
#作者:邱雄盛
#QQ:2263537
#MSN:sunboydavid#hotmail.com
#SkyPe:haoqiu
#时间:2005年5月26日
############################
#!/usr/bin/perl
use lib 'libs/';
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use Apache::DBI;
use IMail;
# Get CGI parameters
my $cgi = new CGI;
my $mail = $cgi->param('mail');
my $password = $cgi->param('password');
my $realname = $cgi->param('realname');
my ($username,$domain)=split(/\@/,$mail);
unless($domain){
print "Content-Type: text/html\n\n";
print qq~
<title>邮件系统管理</title>
<table border="0" id="table1" cellspacing="0" cellpadding="0"><form method="POST" action="">
<tr><td colspan="2"><b>添加邮件用户</b></td>
<tr><td colspan="2">
<tr><td>Email地址:</td><td><input type="text" name="mail" size="20"></td>
<tr><td>密码:</td><td><input type="text" name="password" size="20"></td>
<tr><td>真实姓名:</td><td><input type="text" name="realname" size="20"></td>
<tr><td colspan="2"><input type="submit" value="提交"></td>
</tr></form>
</table>
~;
exit;
}
# 数据分析
$mail or die "邮箱没填哦.\n\n";
$password or die "密码没填哦.\n\n";
$realname or die "真实姓名没填哦.\n\n";
# 连接数据库
my $dbh = connectDb();
# 添加用户
my $uid=125;
my $gid=125;
my $home="/var/mail";
my $size=10240000;
# 查询已有域
my $query = "SELECT COUNT(*) FROM transport WHERE domain = ?";
my $sth = $dbh->prepare_cached($query);
$sth->execute($domain) or dbError();
my $count=$sth->fetchrow_arrayref->[0];
$sth->finish;
unless ($count){
# 添加域
my $query = "INSERT INTO transport SET domain=?,transport=?";
my $sth = $dbh->prepare_cached($query);
$sth->execute($domain,'virtual:') or die"'数据库操作错误,域未添加成功.\n\n";
$sth->finish;
}
my $query = "INSERT INTO virtual_users SET email=?,password=?,uid=?,gid=?,home=?,maildir=?,regtime=NOW(),domain=?,username=?,quota=?";
my $sth = $dbh->prepare_cached($query);
$sth->execute($mail,$password,$uid,$gid,"$home/","$domain/$username/Maildir/",$domain,$realname,$size) or die"'数据库操作错误,用户未添加成功.\n\n";
$sth->finish;
# 域
if (! -e "$home/$domain") {
mkdir("$home/$domain", "0700");
`chmod 700 $home/$domain`;
}
# 用户
if (! -e "$home/$domain/$username") {
mkdir("$home/$domain/$username", "0700");
`chmod 700 $home/$domain/$username`;
}
# Maildir
if (! -e "$home/$domain/$username/Maildir") {
mkdir("$home/$domain/$username/Maildir", "0700");
`chmod 700 $home/$domain/$username/Maildir`;
}
# cur
if (! -e "$home/$domain/$username/Maildir/cur") {
mkdir("$home/$domain/$username/Maildir/cur", "0700");
`chmod 700 $home/$domain/$username/Maildir/cur`;
}
# tmp
if (! -e "$home/$domain/$username/Maildir/tmp") {
mkdir("$home/$domain/$username/Maildir/tmp", "0700");
`chmod 700 $home/$domain/$username/Maildir/tmp`;
}
# new
if (! -e "$home/$domain/$username/Maildir/new") {
mkdir("$home/$domain/$username/Maildir/new", "0700");
`chmod 700 $home/$domain/$username/Maildir/new`;
}
chown ($uid, $gid, "$home/$domain") or warn "couldn't chown $home/$domain";
# 页面跳转
print $cgi->header(-location=>"mail_admin.cgi");
#End