一、修改脚本
perl脚本:/var/www/extsuite/extman/tools/userctl.pl脚本需要修改:1.注释掉139行my $name = defined $opt{name} ? $opt{name} : $user;2.修改267行$rv = adduser $info[0],$info[1],$info[2];改为$rv = adduser $info[0],$info[1],$info[2],$info[3],$info[4];3.在131行下面添加my $name = $_[4];二、使用规范新建userlist.txt文件,里面是需要批量添加的帐号密码等信息格式如下:邮箱帐号 密码 邮箱限额(MB) 网盘配额(MB) 名字hamgua@linuxtone.org linuxtone 50 100 哈密瓜三、使用方法/var/www/extsuite/extman/tools/userctl.pl --mod=badd --file=./userlist.txt --setuid=1000 --setgid=1000注:当然批量建用户还需要调用/var/www/extsuite/extman/tools/下其他的脚本这点要记住建完后会在/home/domains/下找到 linuxtone.org文件夹可建批量建的用户与通过手工逐个建立的用户还是有区别的。Postfix邮件系统EXTMAIL下的批量用户添加
现在我们来看看怎么样批量添加用户。
1.在这里我参考了的添加方式!通过修改/var/www/extsuite/extman/tools/userctl2.pl 文件
修改的方法
131行加上:my $name = $_[4];注释原139行的:#my $name = defined $opt{name} ? $opt{name} : $user;原来第268行改为:$rv = adduser $info[0],$info[1],$info[2],$info[3],$info[4];用户信息文件格式(email地址、密码、邮箱配额、netdisk配额、名字):
123123 100 20测试用户1 123123 100 20测试用户2用户信息文件保存的时候记得保存为utf8格式 ,保存一个adduser.txt文档拷贝到/var/www/extsuite/extman/tools/下这是我修改的脚本-参考一下(注意加粗行)
126 sub adduser {
127 my $email = $_[0];128 my $password = $_[1];129 my $quota = $_[2]; # MB130 my $netdiskquota = $_[3]; # MB131 my $name = $_[4];132 my ($user,$domain) = split(/@/,$email);133 my $uid = $c->{SYS_DEFAULT_UID};134 my $gid = $c->{SYS_DEFAULT_GID}; 135136 my $createdate = strftime("%Y-%m-%d %H:%M:%S", localtime);137 my $expiredate = '0000-00-00'; # default to unlimited/auto138 my $question = defined $opt{question} ? $opt{question} : "";139 my $answer = defined $opt{answer} ? $opt{answer} : "";140 #my $name = defined $opt{name} ? $opt{name} :$user;268 $rv = adduser$info[0],$info[1],$info[2],$info[3],$info[4];
然后命令格式如下:不要忘记给脚本执行权限
cd /var/www/extsuite/extman/tools/#perl ./userctl2.pl --mod=badd --file./addusertest.txt--setuid=1000 --setgid=1000
我添加了300多用户,全部添加成功!
从原来的数据库里导出一个域下的所有用户的方法:
select username,password,quota,netdiskquota,name from mailboxwhere username like "%@man.com" order by username into outfile'man.txt';
select count(*) from mailbox ;
select * from mailbox where username like "%man.com%";
DELETE FROM mailbox where username like "%man.com%";
导出的文件先要确认一下文件的字符集,VI进入后输入:setfileencoding 会显示当前字符编码,然后 :setfileencoding=utf-8 保存即可。
其次要修改man.txt文件里第二列的密码为明文密码。
最后将man.txt文件里每列之前的分隔符删除掉,换成一个空格即可。
还要记得文件里邮件空间和网盘空间是按M为单位的,所以一般都是100 10即可。
以下是一个页面帮助地址:
内容如下
因为自己需要导入大量公司邮件用户,导出全局地址本的时候希望有用户的名字,看了一下userctl.pl的使用说明,并没有读取文件内邮件用户名字,如果是导入后再一个个在后台改就太麻烦了,所以就打算小改一下脚本。
看了一下userctl.pl,发现只要多读文件内一列然后写入就行了,读不懂下边这句:my $name = defined $opt{name} ? $opt{name} : $user;似乎是如果name参数有定义就用name,无定义就用@domain.com之前的部分,那个个用户都用name参数的值,貌似很不合理吧?修改的方法131行加上:my $name = $_[4];注释原139行的:#my $name = defined $opt{name} ? $opt{name} : $user;原来第268行改为:$rv = adduser $info[0],$info[1],$info[2],$info[3],$info[4];用户信息文件格式(email地址、密码、邮箱配额、netdisk配额、名字): 123123 100 20 测试用户1 123123 100 20 测试用户2用户信息文件保存的时候记得保存为utf8格式(见图)然后命令格式如下:cd /usr/local/www/extman/tools/perl ./userctl2.pl --mod=badd --file./addusertest.txt --setuid=1000 --setgid=1000