一、修改脚本
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文件夹可建批量建的用户与通过手工逐个建立的用户还是有区别的。

http://yjw1983.blog.51cto.com/265702/578091


Postfix邮件系统EXTMAIL下的批量用户添加

现在我们来看看怎么样批量添加用户。

1.在这里我参考了archerhu的添加方式!通过修改/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配额、名字):
test1@mydomain.com 123123 100 20测试用户1
test2@mydomain.com 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]; # MB
130 my $netdiskquota = $_[3]; # MB
131 my $name = $_[4];
132 my ($user,$domain) = split(/@/,$email);
133 my $uid = $c->{SYS_DEFAULT_UID};
134 my $gid = $c->{SYS_DEFAULT_GID};
135
136 my $createdate = strftime("%Y-%m-%d %H:%M:%S", localtime);
137 my $expiredate = '0000-00-00'; # default to unlimited/auto
138 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即可。

以下是一个页面帮助地址:

http://www.extmail.org/forum/viewthread.php?tid=10027&highlight=批量

内容如下

因为自己需要导入大量公司邮件用户,导出全局地址本时候希望有用户的名字,看了一下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配额、名字):
test1@mydomain.com 123123 100 20 测试用户1
test2@mydomain.com 123123 100 20 测试用户2

用户信息文件保存的时候记得保存为utf8格式(见图)

然后命令格式如下:
cd /usr/local/www/extman/tools/
perl ./userctl2.pl --mod=badd --file./addusertest.txt --setuid=1000 --setgid=1000

http://blog.sina.com.cn/s/blog_3f12afd00100u03p.html